From bbdad8556861c60ae1f526f63de9c5857c4ad547 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Fri, 8 May 2020 23:06:47 +0300 Subject: [PATCH 001/460] Initial implementation of image preview proxy. Media proxy tests refactoring. --- config/config.exs | 5 + lib/pleroma/helpers/mogrify_helper.ex | 25 ++++ .../web/mastodon_api/views/status_view.ex | 3 +- lib/pleroma/web/media_proxy/media_proxy.ex | 53 ++++++- .../web/media_proxy/media_proxy_controller.ex | 78 ++++++++-- lib/pleroma/web/router.ex | 2 + test/web/media_proxy/media_proxy_test.exs | 133 +++++++----------- 7 files changed, 198 insertions(+), 101 deletions(-) create mode 100644 lib/pleroma/helpers/mogrify_helper.ex diff --git a/config/config.exs b/config/config.exs index e703c1632..526901f83 100644 --- a/config/config.exs +++ b/config/config.exs @@ -388,6 +388,11 @@ ], whitelist: [] +config :pleroma, :media_preview_proxy, + enabled: false, + limit_dimensions: "400x200", + max_body_length: 25 * 1_048_576 + config :pleroma, :chat, enabled: true config :phoenix, :format_encoders, json: Jason diff --git a/lib/pleroma/helpers/mogrify_helper.ex b/lib/pleroma/helpers/mogrify_helper.ex new file mode 100644 index 000000000..67edb35c3 --- /dev/null +++ b/lib/pleroma/helpers/mogrify_helper.ex @@ -0,0 +1,25 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Helpers.MogrifyHelper do + @moduledoc """ + Handles common Mogrify operations. + """ + + @spec store_as_temporary_file(String.t(), binary()) :: {:ok, String.t()} | {:error, atom()} + @doc "Stores binary content fetched from specified URL as a temporary file." + def store_as_temporary_file(url, body) do + path = Mogrify.temporary_path_for(%{path: url}) + with :ok <- File.write(path, body), do: {:ok, path} + end + + @spec store_as_temporary_file(String.t(), String.t()) :: Mogrify.Image.t() | any() + @doc "Modifies file at specified path by resizing to specified limit dimensions." + def in_place_resize_to_limit(path, resize_dimensions) do + path + |> Mogrify.open() + |> Mogrify.resize_to_limit(resize_dimensions) + |> Mogrify.save(in_place: true) + end +end diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 24167f66f..2a206f743 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -419,6 +419,7 @@ def render("attachment.json", %{attachment: attachment}) do [attachment_url | _] = attachment["url"] media_type = attachment_url["mediaType"] || attachment_url["mimeType"] || "image" href = attachment_url["href"] |> MediaProxy.url() + href_preview = attachment_url["href"] |> MediaProxy.preview_url() type = cond do @@ -434,7 +435,7 @@ def render("attachment.json", %{attachment: attachment}) do id: to_string(attachment["id"] || hash_id), url: href, remote_url: href, - preview_url: href, + preview_url: href_preview, text_url: href, type: type, description: attachment["name"], diff --git a/lib/pleroma/web/media_proxy/media_proxy.ex b/lib/pleroma/web/media_proxy/media_proxy.ex index b2b524524..f4791c758 100644 --- a/lib/pleroma/web/media_proxy/media_proxy.ex +++ b/lib/pleroma/web/media_proxy/media_proxy.ex @@ -20,6 +20,14 @@ def url(url) do end end + def preview_url(url) do + if disabled?() or whitelisted?(url) do + url + else + encode_preview_url(url) + end + end + defp disabled?, do: !Config.get([:media_proxy, :enabled], false) defp local?(url), do: String.starts_with?(url, Pleroma.Web.base_url()) @@ -43,17 +51,29 @@ defp whitelisted?(url) do end) end - def encode_url(url) do + defp base64_sig64(url) do base64 = Base.url_encode64(url, @base64_opts) sig64 = base64 - |> signed_url + |> signed_url() |> Base.url_encode64(@base64_opts) + {base64, sig64} + end + + def encode_url(url) do + {base64, sig64} = base64_sig64(url) + build_url(sig64, base64, filename(url)) end + def encode_preview_url(url) do + {base64, sig64} = base64_sig64(url) + + build_preview_url(sig64, base64, filename(url)) + end + def decode_url(sig, url) do with {:ok, sig} <- Base.url_decode64(sig, @base64_opts), signature when signature == sig <- signed_url(url) do @@ -71,10 +91,10 @@ def filename(url_or_path) do if path = URI.parse(url_or_path).path, do: Path.basename(path) end - def build_url(sig_base64, url_base64, filename \\ nil) do + defp proxy_url(path, sig_base64, url_base64, filename) do [ Pleroma.Config.get([:media_proxy, :base_url], Web.base_url()), - "proxy", + path, sig_base64, url_base64, filename @@ -82,4 +102,29 @@ def build_url(sig_base64, url_base64, filename \\ nil) do |> Enum.filter(& &1) |> Path.join() end + + def build_url(sig_base64, url_base64, filename \\ nil) do + proxy_url("proxy", sig_base64, url_base64, filename) + end + + def build_preview_url(sig_base64, url_base64, filename \\ nil) do + proxy_url("proxy/preview", sig_base64, url_base64, filename) + end + + def filename_matches(%{"filename" => _} = _, path, url) do + filename = filename(url) + + if filename && not basename_matches?(path, filename) do + {:wrong_filename, filename} + else + :ok + end + end + + def filename_matches(_, _, _), do: :ok + + defp basename_matches?(path, filename) do + basename = Path.basename(path) + basename == filename or URI.decode(basename) == filename or URI.encode(basename) == filename + end end diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 4657a4383..fe3f61c18 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -5,19 +5,21 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do use Pleroma.Web, :controller + alias Pleroma.Config + alias Pleroma.Helpers.MogrifyHelper alias Pleroma.ReverseProxy alias Pleroma.Web.MediaProxy @default_proxy_opts [max_body_length: 25 * 1_048_576, http: [follow_redirect: true]] def remote(conn, %{"sig" => sig64, "url" => url64} = params) do - with config <- Pleroma.Config.get([:media_proxy], []), - true <- Keyword.get(config, :enabled, false), + with config <- Config.get([:media_proxy], []), + {_, true} <- {:enabled, Keyword.get(config, :enabled, false)}, {:ok, url} <- MediaProxy.decode_url(sig64, url64), - :ok <- filename_matches(params, conn.request_path, url) do + :ok <- MediaProxy.filename_matches(params, conn.request_path, url) do ReverseProxy.call(conn, url, Keyword.get(config, :proxy_opts, @default_proxy_opts)) else - false -> + {:enabled, false} -> send_resp(conn, 404, Plug.Conn.Status.reason_phrase(404)) {:error, :invalid_signature} -> @@ -28,20 +30,68 @@ def remote(conn, %{"sig" => sig64, "url" => url64} = params) do end end - def filename_matches(%{"filename" => _} = _, path, url) do - filename = MediaProxy.filename(url) - - if filename && does_not_match(path, filename) do - {:wrong_filename, filename} + def preview(conn, %{"sig" => sig64, "url" => url64} = params) do + with {_, true} <- {:enabled, Config.get([:media_preview_proxy, :enabled], false)}, + {:ok, url} <- MediaProxy.decode_url(sig64, url64), + :ok <- MediaProxy.filename_matches(params, conn.request_path, url) do + handle_preview(conn, url) else - :ok + {:enabled, false} -> + send_resp(conn, 404, Plug.Conn.Status.reason_phrase(404)) + + {:error, :invalid_signature} -> + send_resp(conn, 403, Plug.Conn.Status.reason_phrase(403)) + + {:wrong_filename, filename} -> + redirect(conn, external: MediaProxy.build_preview_url(sig64, url64, filename)) end end - def filename_matches(_, _, _), do: :ok + defp handle_preview(conn, url) do + with {:ok, %{status: status} = head_response} when status in 200..299 <- Tesla.head(url), + {_, true} <- {:acceptable_content_length, acceptable_body_length?(head_response)} do + content_type = Tesla.get_header(head_response, "content-type") + handle_preview(content_type, conn, url) + else + {_, %{status: status}} -> + send_resp(conn, :failed_dependency, "Can't fetch HTTP headers (HTTP #{status}).") - defp does_not_match(path, filename) do - basename = Path.basename(path) - basename != filename and URI.decode(basename) != filename and URI.encode(basename) != filename + {:acceptable_content_length, false} -> + send_resp(conn, :unprocessable_entity, "Source file size exceeds limit.") + end + end + + defp handle_preview("image/" <> _, %{params: params} = conn, url) do + with {:ok, %{status: status, body: body}} when status in 200..299 <- Tesla.get(url), + {:ok, path} <- MogrifyHelper.store_as_temporary_file(url, body), + resize_dimensions <- + Map.get( + params, + "limit_dimensions", + Config.get([:media_preview_proxy, :limit_dimensions]) + ), + %Mogrify.Image{} <- MogrifyHelper.in_place_resize_to_limit(path, resize_dimensions) do + send_file(conn, 200, path) + else + {_, %{status: _}} -> + send_resp(conn, :failed_dependency, "Can't fetch the image.") + + _ -> + send_resp(conn, :failed_dependency, "Can't handle image preview.") + end + end + + defp handle_preview(content_type, conn, _url) do + send_resp(conn, :unprocessable_entity, "Unsupported content type: #{content_type}.") + end + + defp acceptable_body_length?(head_response) do + max_body_length = Config.get([:media_preview_proxy, :max_body_length], nil) + content_length = Tesla.get_header(head_response, "content-length") + content_length = with {int, _} <- Integer.parse(content_length), do: int + + content_length == :error or + max_body_length in [nil, :infinity] or + content_length <= max_body_length end end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 7a171f9fb..6fb47029a 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -663,6 +663,8 @@ defmodule Pleroma.Web.Router do end scope "/proxy/", Pleroma.Web.MediaProxy do + get("/preview/:sig/:url", MediaProxyController, :preview) + get("/preview/:sig/:url/:filename", MediaProxyController, :preview) get("/:sig/:url", MediaProxyController, :remote) get("/:sig/:url/:filename", MediaProxyController, :remote) end diff --git a/test/web/media_proxy/media_proxy_test.exs b/test/web/media_proxy/media_proxy_test.exs index 69c2d5dae..cad0acd30 100644 --- a/test/web/media_proxy/media_proxy_test.exs +++ b/test/web/media_proxy/media_proxy_test.exs @@ -5,42 +5,44 @@ defmodule Pleroma.Web.MediaProxyTest do use ExUnit.Case use Pleroma.Tests.Helpers - import Pleroma.Web.MediaProxy - alias Pleroma.Web.MediaProxy.MediaProxyController - setup do: clear_config([:media_proxy, :enabled]) - setup do: clear_config(Pleroma.Upload) + alias Pleroma.Config + alias Pleroma.Web.Endpoint + alias Pleroma.Web.MediaProxy + + defp decode_result(encoded) do + [_, "proxy", sig, base64 | _] = URI.parse(encoded).path |> String.split("/") + {:ok, decoded} = MediaProxy.decode_url(sig, base64) + decoded + end describe "when enabled" do - setup do - Pleroma.Config.put([:media_proxy, :enabled], true) - :ok - end + setup do: clear_config([:media_proxy, :enabled], true) test "ignores invalid url" do - assert url(nil) == nil - assert url("") == nil + assert MediaProxy.url(nil) == nil + assert MediaProxy.url("") == nil end test "ignores relative url" do - assert url("/local") == "/local" - assert url("/") == "/" + assert MediaProxy.url("/local") == "/local" + assert MediaProxy.url("/") == "/" end test "ignores local url" do - local_url = Pleroma.Web.Endpoint.url() <> "/hello" - local_root = Pleroma.Web.Endpoint.url() - assert url(local_url) == local_url - assert url(local_root) == local_root + local_url = Endpoint.url() <> "/hello" + local_root = Endpoint.url() + assert MediaProxy.url(local_url) == local_url + assert MediaProxy.url(local_root) == local_root end test "encodes and decodes URL" do url = "https://pleroma.soykaf.com/static/logo.png" - encoded = url(url) + encoded = MediaProxy.url(url) assert String.starts_with?( encoded, - Pleroma.Config.get([:media_proxy, :base_url], Pleroma.Web.base_url()) + Config.get([:media_proxy, :base_url], Pleroma.Web.base_url()) ) assert String.ends_with?(encoded, "/logo.png") @@ -50,62 +52,59 @@ test "encodes and decodes URL" do test "encodes and decodes URL without a path" do url = "https://pleroma.soykaf.com" - encoded = url(url) + encoded = MediaProxy.url(url) assert decode_result(encoded) == url end test "encodes and decodes URL without an extension" do url = "https://pleroma.soykaf.com/path/" - encoded = url(url) + encoded = MediaProxy.url(url) assert String.ends_with?(encoded, "/path") assert decode_result(encoded) == url end test "encodes and decodes URL and ignores query params for the path" do url = "https://pleroma.soykaf.com/static/logo.png?93939393939&bunny=true" - encoded = url(url) + encoded = MediaProxy.url(url) assert String.ends_with?(encoded, "/logo.png") assert decode_result(encoded) == url end test "validates signature" do - secret_key_base = Pleroma.Config.get([Pleroma.Web.Endpoint, :secret_key_base]) + secret_key_base = Config.get([Endpoint, :secret_key_base]) + clear_config([Endpoint, :secret_key_base], secret_key_base) - on_exit(fn -> - Pleroma.Config.put([Pleroma.Web.Endpoint, :secret_key_base], secret_key_base) - end) + encoded = MediaProxy.url("https://pleroma.social") - encoded = url("https://pleroma.social") - - Pleroma.Config.put( - [Pleroma.Web.Endpoint, :secret_key_base], + Config.put( + [Endpoint, :secret_key_base], "00000000000000000000000000000000000000000000000" ) [_, "proxy", sig, base64 | _] = URI.parse(encoded).path |> String.split("/") - assert decode_url(sig, base64) == {:error, :invalid_signature} + assert MediaProxy.decode_url(sig, base64) == {:error, :invalid_signature} end - test "filename_matches preserves the encoded or decoded path" do - assert MediaProxyController.filename_matches( + test "`filename_matches/_` preserves the encoded or decoded path" do + assert MediaProxy.filename_matches( %{"filename" => "/Hello world.jpg"}, "/Hello world.jpg", "http://pleroma.social/Hello world.jpg" ) == :ok - assert MediaProxyController.filename_matches( + assert MediaProxy.filename_matches( %{"filename" => "/Hello%20world.jpg"}, "/Hello%20world.jpg", "http://pleroma.social/Hello%20world.jpg" ) == :ok - assert MediaProxyController.filename_matches( + assert MediaProxy.filename_matches( %{"filename" => "/my%2Flong%2Furl%2F2019%2F07%2FS.jpg"}, "/my%2Flong%2Furl%2F2019%2F07%2FS.jpg", "http://pleroma.social/my%2Flong%2Furl%2F2019%2F07%2FS.jpg" ) == :ok - assert MediaProxyController.filename_matches( + assert MediaProxy.filename_matches( %{"filename" => "/my%2Flong%2Furl%2F2019%2F07%2FS.jp"}, "/my%2Flong%2Furl%2F2019%2F07%2FS.jp", "http://pleroma.social/my%2Flong%2Furl%2F2019%2F07%2FS.jpg" @@ -116,7 +115,7 @@ test "encoded url are tried to match for proxy as `conn.request_path` encodes th # conn.request_path will return encoded url request_path = "/ANALYSE-DAI-_-LE-STABLECOIN-100-D%C3%89CENTRALIS%C3%89-BQ.jpg" - assert MediaProxyController.filename_matches( + assert MediaProxy.filename_matches( true, request_path, "https://mydomain.com/uploads/2019/07/ANALYSE-DAI-_-LE-STABLECOIN-100-DÉCENTRALISÉ-BQ.jpg" @@ -124,20 +123,12 @@ test "encoded url are tried to match for proxy as `conn.request_path` encodes th end test "uses the configured base_url" do - base_url = Pleroma.Config.get([:media_proxy, :base_url]) - - if base_url do - on_exit(fn -> - Pleroma.Config.put([:media_proxy, :base_url], base_url) - end) - end - - Pleroma.Config.put([:media_proxy, :base_url], "https://cache.pleroma.social") + clear_config([:media_proxy, :base_url], "https://cache.pleroma.social") url = "https://pleroma.soykaf.com/static/logo.png" - encoded = url(url) + encoded = MediaProxy.url(url) - assert String.starts_with?(encoded, Pleroma.Config.get([:media_proxy, :base_url])) + assert String.starts_with?(encoded, Config.get([:media_proxy, :base_url])) end # Some sites expect ASCII encoded characters in the URL to be preserved even if @@ -148,7 +139,7 @@ test "preserve ASCII encoding" do url = "https://pleroma.com/%20/%21/%22/%23/%24/%25/%26/%27/%28/%29/%2A/%2B/%2C/%2D/%2E/%2F/%30/%31/%32/%33/%34/%35/%36/%37/%38/%39/%3A/%3B/%3C/%3D/%3E/%3F/%40/%41/%42/%43/%44/%45/%46/%47/%48/%49/%4A/%4B/%4C/%4D/%4E/%4F/%50/%51/%52/%53/%54/%55/%56/%57/%58/%59/%5A/%5B/%5C/%5D/%5E/%5F/%60/%61/%62/%63/%64/%65/%66/%67/%68/%69/%6A/%6B/%6C/%6D/%6E/%6F/%70/%71/%72/%73/%74/%75/%76/%77/%78/%79/%7A/%7B/%7C/%7D/%7E/%7F/%80/%81/%82/%83/%84/%85/%86/%87/%88/%89/%8A/%8B/%8C/%8D/%8E/%8F/%90/%91/%92/%93/%94/%95/%96/%97/%98/%99/%9A/%9B/%9C/%9D/%9E/%9F/%C2%A0/%A1/%A2/%A3/%A4/%A5/%A6/%A7/%A8/%A9/%AA/%AB/%AC/%C2%AD/%AE/%AF/%B0/%B1/%B2/%B3/%B4/%B5/%B6/%B7/%B8/%B9/%BA/%BB/%BC/%BD/%BE/%BF/%C0/%C1/%C2/%C3/%C4/%C5/%C6/%C7/%C8/%C9/%CA/%CB/%CC/%CD/%CE/%CF/%D0/%D1/%D2/%D3/%D4/%D5/%D6/%D7/%D8/%D9/%DA/%DB/%DC/%DD/%DE/%DF/%E0/%E1/%E2/%E3/%E4/%E5/%E6/%E7/%E8/%E9/%EA/%EB/%EC/%ED/%EE/%EF/%F0/%F1/%F2/%F3/%F4/%F5/%F6/%F7/%F8/%F9/%FA/%FB/%FC/%FD/%FE/%FF" - encoded = url(url) + encoded = MediaProxy.url(url) assert decode_result(encoded) == url end @@ -159,77 +150,55 @@ test "preserve non-unicode characters per RFC3986" do url = "https://pleroma.com/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890-._~:/?#[]@!$&'()*+,;=|^`{}" - encoded = url(url) + encoded = MediaProxy.url(url) assert decode_result(encoded) == url end test "preserve unicode characters" do url = "https://ko.wikipedia.org/wiki/위키백과:대문" - encoded = url(url) + encoded = MediaProxy.url(url) assert decode_result(encoded) == url end end describe "when disabled" do - setup do - enabled = Pleroma.Config.get([:media_proxy, :enabled]) - - if enabled do - Pleroma.Config.put([:media_proxy, :enabled], false) - - on_exit(fn -> - Pleroma.Config.put([:media_proxy, :enabled], enabled) - :ok - end) - end - - :ok - end + setup do: clear_config([:media_proxy, :enabled], false) test "does not encode remote urls" do - assert url("https://google.fr") == "https://google.fr" + assert MediaProxy.url("https://google.fr") == "https://google.fr" end end - defp decode_result(encoded) do - [_, "proxy", sig, base64 | _] = URI.parse(encoded).path |> String.split("/") - {:ok, decoded} = decode_url(sig, base64) - decoded - end - describe "whitelist" do - setup do - Pleroma.Config.put([:media_proxy, :enabled], true) - :ok - end + setup do: clear_config([:media_proxy, :enabled], true) test "mediaproxy whitelist" do - Pleroma.Config.put([:media_proxy, :whitelist], ["google.com", "feld.me"]) + clear_config([:media_proxy, :whitelist], ["google.com", "feld.me"]) url = "https://feld.me/foo.png" - unencoded = url(url) + unencoded = MediaProxy.url(url) assert unencoded == url end test "does not change whitelisted urls" do - Pleroma.Config.put([:media_proxy, :whitelist], ["mycdn.akamai.com"]) - Pleroma.Config.put([:media_proxy, :base_url], "https://cache.pleroma.social") + clear_config([:media_proxy, :whitelist], ["mycdn.akamai.com"]) + clear_config([:media_proxy, :base_url], "https://cache.pleroma.social") media_url = "https://mycdn.akamai.com" url = "#{media_url}/static/logo.png" - encoded = url(url) + encoded = MediaProxy.url(url) assert String.starts_with?(encoded, media_url) end test "ensure Pleroma.Upload base_url is always whitelisted" do media_url = "https://media.pleroma.social" - Pleroma.Config.put([Pleroma.Upload, :base_url], media_url) + clear_config([Pleroma.Upload, :base_url], media_url) url = "#{media_url}/static/logo.png" - encoded = url(url) + encoded = MediaProxy.url(url) assert String.starts_with?(encoded, media_url) end From 1b23acf164ebc4fde3fe1e4fdca6e11b7caa90ef Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Mon, 11 May 2020 23:21:53 +0300 Subject: [PATCH 002/460] [#2497] Media preview proxy for images: fixes, tweaks, refactoring, tests adjustments. --- config/config.exs | 8 ++- lib/pleroma/reverse_proxy/reverse_proxy.ex | 4 ++ lib/pleroma/web/media_proxy/media_proxy.ex | 33 +++++++--- .../web/media_proxy/media_proxy_controller.ex | 62 ++++++++++------- mix.exs | 1 + mix.lock | 2 + test/web/media_proxy/media_proxy_test.exs | 66 +++++++++++++------ 7 files changed, 119 insertions(+), 57 deletions(-) diff --git a/config/config.exs b/config/config.exs index 526901f83..0f92b1ef9 100644 --- a/config/config.exs +++ b/config/config.exs @@ -381,6 +381,8 @@ proxy_opts: [ redirect_on_failure: false, max_body_length: 25 * 1_048_576, + # Note: max_read_duration defaults to Pleroma.ReverseProxy.max_read_duration_default/1 + max_read_duration: 30_000, http: [ follow_redirect: true, pool: :media @@ -388,10 +390,14 @@ ], whitelist: [] +# Note: media preview proxy depends on media proxy to be enabled config :pleroma, :media_preview_proxy, enabled: false, limit_dimensions: "400x200", - max_body_length: 25 * 1_048_576 + proxy_opts: [ + head_request_max_read_duration: 5_000, + max_read_duration: 10_000 + ] config :pleroma, :chat, enabled: true diff --git a/lib/pleroma/reverse_proxy/reverse_proxy.ex b/lib/pleroma/reverse_proxy/reverse_proxy.ex index 4bbeb493c..aeaf9bd39 100644 --- a/lib/pleroma/reverse_proxy/reverse_proxy.ex +++ b/lib/pleroma/reverse_proxy/reverse_proxy.ex @@ -16,6 +16,8 @@ defmodule Pleroma.ReverseProxy do @failed_request_ttl :timer.seconds(60) @methods ~w(GET HEAD) + def max_read_duration_default, do: @max_read_duration + @moduledoc """ A reverse proxy. @@ -370,6 +372,8 @@ defp body_size_constraint(size, limit) when is_integer(limit) and limit > 0 and defp body_size_constraint(_, _), do: :ok + defp check_read_duration(nil = _duration, max), do: check_read_duration(@max_read_duration, max) + defp check_read_duration(duration, max) when is_integer(duration) and is_integer(max) and max > 0 do if duration > max do diff --git a/lib/pleroma/web/media_proxy/media_proxy.ex b/lib/pleroma/web/media_proxy/media_proxy.ex index f4791c758..4e01c14e4 100644 --- a/lib/pleroma/web/media_proxy/media_proxy.ex +++ b/lib/pleroma/web/media_proxy/media_proxy.ex @@ -13,26 +13,32 @@ def url(url) when is_nil(url) or url == "", do: nil def url("/" <> _ = url), do: url def url(url) do - if disabled?() or local?(url) or whitelisted?(url) do + if not enabled?() or local?(url) or whitelisted?(url) do url else encode_url(url) end end + # Note: routing all URLs to preview handler (even local and whitelisted). + # Preview handler will call url/1 on decoded URLs, and applicable ones will detour media proxy. def preview_url(url) do - if disabled?() or whitelisted?(url) do - url - else + if preview_enabled?() do encode_preview_url(url) + else + url end end - defp disabled?, do: !Config.get([:media_proxy, :enabled], false) + def enabled?, do: Config.get([:media_proxy, :enabled], false) - defp local?(url), do: String.starts_with?(url, Pleroma.Web.base_url()) + # Note: media proxy must be enabled for media preview proxy in order to load all + # non-local non-whitelisted URLs through it and be sure that body size constraint is preserved. + def preview_enabled?, do: enabled?() and Config.get([:media_preview_proxy, :enabled], false) - defp whitelisted?(url) do + def local?(url), do: String.starts_with?(url, Pleroma.Web.base_url()) + + def whitelisted?(url) do %{host: domain} = URI.parse(url) mediaproxy_whitelist = Config.get([:media_proxy, :whitelist]) @@ -111,17 +117,24 @@ def build_preview_url(sig_base64, url_base64, filename \\ nil) do proxy_url("proxy/preview", sig_base64, url_base64, filename) end - def filename_matches(%{"filename" => _} = _, path, url) do + def verify_request_path_and_url( + %Plug.Conn{params: %{"filename" => _}, request_path: request_path}, + url + ) do + verify_request_path_and_url(request_path, url) + end + + def verify_request_path_and_url(request_path, url) when is_binary(request_path) do filename = filename(url) - if filename && not basename_matches?(path, filename) do + if filename && not basename_matches?(request_path, filename) do {:wrong_filename, filename} else :ok end end - def filename_matches(_, _, _), do: :ok + def verify_request_path_and_url(_, _), do: :ok defp basename_matches?(path, filename) do basename = Path.basename(path) diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index fe3f61c18..157365e08 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -10,14 +10,12 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do alias Pleroma.ReverseProxy alias Pleroma.Web.MediaProxy - @default_proxy_opts [max_body_length: 25 * 1_048_576, http: [follow_redirect: true]] - - def remote(conn, %{"sig" => sig64, "url" => url64} = params) do - with config <- Config.get([:media_proxy], []), - {_, true} <- {:enabled, Keyword.get(config, :enabled, false)}, + def remote(conn, %{"sig" => sig64, "url" => url64}) do + with {_, true} <- {:enabled, MediaProxy.enabled?()}, {:ok, url} <- MediaProxy.decode_url(sig64, url64), - :ok <- MediaProxy.filename_matches(params, conn.request_path, url) do - ReverseProxy.call(conn, url, Keyword.get(config, :proxy_opts, @default_proxy_opts)) + :ok <- MediaProxy.verify_request_path_and_url(conn, url) do + proxy_opts = Config.get([:media_proxy, :proxy_opts], []) + ReverseProxy.call(conn, url, proxy_opts) else {:enabled, false} -> send_resp(conn, 404, Plug.Conn.Status.reason_phrase(404)) @@ -30,10 +28,10 @@ def remote(conn, %{"sig" => sig64, "url" => url64} = params) do end end - def preview(conn, %{"sig" => sig64, "url" => url64} = params) do - with {_, true} <- {:enabled, Config.get([:media_preview_proxy, :enabled], false)}, + def preview(conn, %{"sig" => sig64, "url" => url64}) do + with {_, true} <- {:enabled, MediaProxy.preview_enabled?()}, {:ok, url} <- MediaProxy.decode_url(sig64, url64), - :ok <- MediaProxy.filename_matches(params, conn.request_path, url) do + :ok <- MediaProxy.verify_request_path_and_url(conn, url) do handle_preview(conn, url) else {:enabled, false} -> @@ -48,21 +46,27 @@ def preview(conn, %{"sig" => sig64, "url" => url64} = params) do end defp handle_preview(conn, url) do - with {:ok, %{status: status} = head_response} when status in 200..299 <- Tesla.head(url), - {_, true} <- {:acceptable_content_length, acceptable_body_length?(head_response)} do + with {:ok, %{status: status} = head_response} when status in 200..299 <- + Tesla.head(url, opts: [adapter: [timeout: preview_head_request_timeout()]]) do content_type = Tesla.get_header(head_response, "content-type") handle_preview(content_type, conn, url) else {_, %{status: status}} -> send_resp(conn, :failed_dependency, "Can't fetch HTTP headers (HTTP #{status}).") - {:acceptable_content_length, false} -> - send_resp(conn, :unprocessable_entity, "Source file size exceeds limit.") + {:error, :recv_response_timeout} -> + send_resp(conn, :failed_dependency, "HEAD request timeout.") + + _ -> + send_resp(conn, :failed_dependency, "Can't fetch HTTP headers.") end end - defp handle_preview("image/" <> _, %{params: params} = conn, url) do - with {:ok, %{status: status, body: body}} when status in 200..299 <- Tesla.get(url), + defp handle_preview("image/" <> _ = content_type, %{params: params} = conn, url) do + with {:ok, %{status: status, body: body}} when status in 200..299 <- + url + |> MediaProxy.url() + |> Tesla.get(opts: [adapter: [timeout: preview_timeout()]]), {:ok, path} <- MogrifyHelper.store_as_temporary_file(url, body), resize_dimensions <- Map.get( @@ -70,12 +74,19 @@ defp handle_preview("image/" <> _, %{params: params} = conn, url) do "limit_dimensions", Config.get([:media_preview_proxy, :limit_dimensions]) ), - %Mogrify.Image{} <- MogrifyHelper.in_place_resize_to_limit(path, resize_dimensions) do - send_file(conn, 200, path) + %Mogrify.Image{} <- MogrifyHelper.in_place_resize_to_limit(path, resize_dimensions), + {:ok, image_binary} <- File.read(path), + _ <- File.rm(path) do + conn + |> put_resp_header("content-type", content_type) + |> send_resp(200, image_binary) else {_, %{status: _}} -> send_resp(conn, :failed_dependency, "Can't fetch the image.") + {:error, :recv_response_timeout} -> + send_resp(conn, :failed_dependency, "Downstream timeout.") + _ -> send_resp(conn, :failed_dependency, "Can't handle image preview.") end @@ -85,13 +96,14 @@ defp handle_preview(content_type, conn, _url) do send_resp(conn, :unprocessable_entity, "Unsupported content type: #{content_type}.") end - defp acceptable_body_length?(head_response) do - max_body_length = Config.get([:media_preview_proxy, :max_body_length], nil) - content_length = Tesla.get_header(head_response, "content-length") - content_length = with {int, _} <- Integer.parse(content_length), do: int + defp preview_head_request_timeout do + Config.get([:media_preview_proxy, :proxy_opts, :head_request_max_read_duration]) || + preview_timeout() + end - content_length == :error or - max_body_length in [nil, :infinity] or - content_length <= max_body_length + defp preview_timeout do + Config.get([:media_preview_proxy, :proxy_opts, :max_read_duration]) || + Config.get([:media_proxy, :proxy_opts, :max_read_duration]) || + ReverseProxy.max_read_duration_default() end end diff --git a/mix.exs b/mix.exs index 6d65e18d4..a9c4ad2e3 100644 --- a/mix.exs +++ b/mix.exs @@ -139,6 +139,7 @@ defp deps do github: "ninenines/gun", ref: "e1a69b36b180a574c0ac314ced9613fdd52312cc", override: true}, {:jason, "~> 1.0"}, {:mogrify, "~> 0.6.1"}, + {:eimp, ">= 0.0.0"}, {:ex_aws, "~> 2.1"}, {:ex_aws_s3, "~> 2.0"}, {:sweet_xml, "~> 0.6.6"}, diff --git a/mix.lock b/mix.lock index c400202b7..ede7b0ada 100644 --- a/mix.lock +++ b/mix.lock @@ -29,6 +29,7 @@ "ecto": {:hex, :ecto, "3.4.0", "a7a83ab8359bf816ce729e5e65981ce25b9fc5adfc89c2ea3980f4fed0bfd7c1", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "5eed18252f5b5bbadec56a24112b531343507dbe046273133176b12190ce19cc"}, "ecto_enum": {:hex, :ecto_enum, "1.4.0", "d14b00e04b974afc69c251632d1e49594d899067ee2b376277efd8233027aec8", [:mix], [{:ecto, ">= 3.0.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "> 3.0.0", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:mariaex, ">= 0.0.0", [hex: :mariaex, repo: "hexpm", optional: true]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "8fb55c087181c2b15eee406519dc22578fa60dd82c088be376d0010172764ee4"}, "ecto_sql": {:hex, :ecto_sql, "3.3.4", "aa18af12eb875fbcda2f75e608b3bd534ebf020fc4f6448e4672fcdcbb081244", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.4 or ~> 3.3.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.3.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "5eccbdbf92e3c6f213007a82d5dbba4cd9bb659d1a21331f89f408e4c0efd7a8"}, + "eimp": {:hex, :eimp, "1.0.14", "fc297f0c7e2700457a95a60c7010a5f1dcb768a083b6d53f49cd94ab95a28f22", [:rebar3], [{:p1_utils, "1.0.18", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "501133f3112079b92d9e22da8b88bf4f0e13d4d67ae9c15c42c30bd25ceb83b6"}, "esshd": {:hex, :esshd, "0.1.1", "d4dd4c46698093a40a56afecce8a46e246eb35463c457c246dacba2e056f31b5", [:mix], [], "hexpm", "d73e341e3009d390aa36387dc8862860bf9f874c94d9fd92ade2926376f49981"}, "eternal": {:hex, :eternal, "1.2.1", "d5b6b2499ba876c57be2581b5b999ee9bdf861c647401066d3eeed111d096bc4", [:mix], [], "hexpm", "b14f1dc204321429479c569cfbe8fb287541184ed040956c8862cb7a677b8406"}, "ex2ms": {:hex, :ex2ms, "1.5.0", "19e27f9212be9a96093fed8cdfbef0a2b56c21237196d26760f11dfcfae58e97", [:mix], [], "hexpm"}, @@ -75,6 +76,7 @@ "nodex": {:git, "https://git.pleroma.social/pleroma/nodex", "cb6730f943cfc6aad674c92161be23a8411f15d1", [ref: "cb6730f943cfc6aad674c92161be23a8411f15d1"]}, "oban": {:hex, :oban, "1.2.0", "7cca94d341be43d220571e28f69131c4afc21095b25257397f50973d3fc59b07", [:mix], [{:ecto_sql, "~> 3.1", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.14", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ba5f8b3f7d76967b3e23cf8014f6a13e4ccb33431e4808f036709a7f822362ee"}, "open_api_spex": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/open_api_spex.git", "b862ebd78de0df95875cf46feb6e9607130dc2a8", [ref: "b862ebd78de0df95875cf46feb6e9607130dc2a8"]}, + "p1_utils": {:hex, :p1_utils, "1.0.18", "3fe224de5b2e190d730a3c5da9d6e8540c96484cf4b4692921d1e28f0c32b01c", [:rebar3], [], "hexpm", "1fc8773a71a15553b179c986b22fbeead19b28fe486c332d4929700ffeb71f88"}, "parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm", "17ef63abde837ad30680ea7f857dd9e7ced9476cdd7b0394432af4bfc241b960"}, "pbkdf2_elixir": {:hex, :pbkdf2_elixir, "0.12.4", "8dd29ed783f2e12195d7e0a4640effc0a7c37e6537da491f1db01839eee6d053", [:mix], [], "hexpm", "595d09db74cb093b1903381c9de423276a931a2480a46a1a5dc7f932a2a6375b"}, "phoenix": {:hex, :phoenix, "1.4.13", "67271ad69b51f3719354604f4a3f968f83aa61c19199343656c9caee057ff3b8", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 1.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.8.1 or ~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ab765a0feddb81fc62e2116c827b5f068df85159c162bee760745276ad7ddc1b"}, diff --git a/test/web/media_proxy/media_proxy_test.exs b/test/web/media_proxy/media_proxy_test.exs index cad0acd30..ac5d8fd32 100644 --- a/test/web/media_proxy/media_proxy_test.exs +++ b/test/web/media_proxy/media_proxy_test.exs @@ -85,38 +85,62 @@ test "validates signature" do assert MediaProxy.decode_url(sig, base64) == {:error, :invalid_signature} end - test "`filename_matches/_` preserves the encoded or decoded path" do - assert MediaProxy.filename_matches( - %{"filename" => "/Hello world.jpg"}, - "/Hello world.jpg", - "http://pleroma.social/Hello world.jpg" + def test_verify_request_path_and_url(request_path, url, expected_result) do + assert MediaProxy.verify_request_path_and_url(request_path, url) == expected_result + + assert MediaProxy.verify_request_path_and_url( + %Plug.Conn{ + params: %{"filename" => Path.basename(request_path)}, + request_path: request_path + }, + url + ) == expected_result + end + + test "if first arg of `verify_request_path_and_url/2` is a Plug.Conn without \"filename\" " <> + "parameter, `verify_request_path_and_url/2` returns :ok " do + assert MediaProxy.verify_request_path_and_url( + %Plug.Conn{params: %{}, request_path: "/some/path"}, + "https://instance.com/file.jpg" ) == :ok - assert MediaProxy.filename_matches( - %{"filename" => "/Hello%20world.jpg"}, - "/Hello%20world.jpg", - "http://pleroma.social/Hello%20world.jpg" + assert MediaProxy.verify_request_path_and_url( + %Plug.Conn{params: %{}, request_path: "/path/to/file.jpg"}, + "https://instance.com/file.jpg" ) == :ok + end - assert MediaProxy.filename_matches( - %{"filename" => "/my%2Flong%2Furl%2F2019%2F07%2FS.jpg"}, - "/my%2Flong%2Furl%2F2019%2F07%2FS.jpg", - "http://pleroma.social/my%2Flong%2Furl%2F2019%2F07%2FS.jpg" - ) == :ok + test "`verify_request_path_and_url/2` preserves the encoded or decoded path" do + test_verify_request_path_and_url( + "/Hello world.jpg", + "http://pleroma.social/Hello world.jpg", + :ok + ) - assert MediaProxy.filename_matches( - %{"filename" => "/my%2Flong%2Furl%2F2019%2F07%2FS.jp"}, - "/my%2Flong%2Furl%2F2019%2F07%2FS.jp", - "http://pleroma.social/my%2Flong%2Furl%2F2019%2F07%2FS.jpg" - ) == {:wrong_filename, "my%2Flong%2Furl%2F2019%2F07%2FS.jpg"} + test_verify_request_path_and_url( + "/Hello%20world.jpg", + "http://pleroma.social/Hello%20world.jpg", + :ok + ) + + test_verify_request_path_and_url( + "/my%2Flong%2Furl%2F2019%2F07%2FS.jpg", + "http://pleroma.social/my%2Flong%2Furl%2F2019%2F07%2FS.jpg", + :ok + ) + + test_verify_request_path_and_url( + "/my%2Flong%2Furl%2F2019%2F07%2FS", + "http://pleroma.social/my%2Flong%2Furl%2F2019%2F07%2FS.jpg", + {:wrong_filename, "my%2Flong%2Furl%2F2019%2F07%2FS.jpg"} + ) end test "encoded url are tried to match for proxy as `conn.request_path` encodes the url" do # conn.request_path will return encoded url request_path = "/ANALYSE-DAI-_-LE-STABLECOIN-100-D%C3%89CENTRALIS%C3%89-BQ.jpg" - assert MediaProxy.filename_matches( - true, + assert MediaProxy.verify_request_path_and_url( request_path, "https://mydomain.com/uploads/2019/07/ANALYSE-DAI-_-LE-STABLECOIN-100-DÉCENTRALISÉ-BQ.jpg" ) == :ok From f1f588fd5271c0b3bf09df002a83dbb57c42bae0 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Thu, 14 May 2020 20:18:31 +0300 Subject: [PATCH 003/460] [#2497] Added support for :eimp for image resizing. --- config/config.exs | 4 +- .../web/media_proxy/media_proxy_controller.ex | 64 +++++++++++++++---- mix.exs | 2 +- 3 files changed, 56 insertions(+), 14 deletions(-) diff --git a/config/config.exs b/config/config.exs index 0f92b1ef9..e9403c7c8 100644 --- a/config/config.exs +++ b/config/config.exs @@ -393,7 +393,9 @@ # Note: media preview proxy depends on media proxy to be enabled config :pleroma, :media_preview_proxy, enabled: false, - limit_dimensions: "400x200", + enable_eimp: true, + thumbnail_max_width: 400, + thumbnail_max_height: 200, proxy_opts: [ head_request_max_read_duration: 5_000, max_read_duration: 10_000 diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 157365e08..8d8d073e9 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -62,24 +62,64 @@ defp handle_preview(conn, url) do end end + defp thumbnail_max_dimensions(params) do + config = Config.get([:media_preview_proxy], []) + + thumbnail_max_width = + if w = params["thumbnail_max_width"] do + String.to_integer(w) + else + Keyword.fetch!(config, :thumbnail_max_width) + end + + thumbnail_max_height = + if h = params["thumbnail_max_height"] do + String.to_integer(h) + else + Keyword.fetch!(config, :thumbnail_max_height) + end + + {thumbnail_max_width, thumbnail_max_height} + end + + defp thumbnail_binary(url, body, params) do + {thumbnail_max_width, thumbnail_max_height} = thumbnail_max_dimensions(params) + + with true <- Config.get([:media_preview_proxy, :enable_eimp]), + {:ok, [type: image_type, width: source_width, height: source_height]} <- + :eimp.identify(body), + scale_factor <- + Enum.max([source_width / thumbnail_max_width, source_height / thumbnail_max_height]), + {:ok, thumbnail_binary} = + :eimp.convert(body, image_type, [ + {:scale, {round(source_width / scale_factor), round(source_height / scale_factor)}} + ]) do + {:ok, thumbnail_binary} + else + _ -> + mogrify_dimensions = "#{thumbnail_max_width}x#{thumbnail_max_height}" + + with {:ok, path} <- MogrifyHelper.store_as_temporary_file(url, body), + %Mogrify.Image{} <- + MogrifyHelper.in_place_resize_to_limit(path, mogrify_dimensions), + {:ok, thumbnail_binary} <- File.read(path), + _ <- File.rm(path) do + {:ok, thumbnail_binary} + else + _ -> :error + end + end + end + defp handle_preview("image/" <> _ = content_type, %{params: params} = conn, url) do - with {:ok, %{status: status, body: body}} when status in 200..299 <- + with {:ok, %{status: status, body: image_contents}} when status in 200..299 <- url |> MediaProxy.url() |> Tesla.get(opts: [adapter: [timeout: preview_timeout()]]), - {:ok, path} <- MogrifyHelper.store_as_temporary_file(url, body), - resize_dimensions <- - Map.get( - params, - "limit_dimensions", - Config.get([:media_preview_proxy, :limit_dimensions]) - ), - %Mogrify.Image{} <- MogrifyHelper.in_place_resize_to_limit(path, resize_dimensions), - {:ok, image_binary} <- File.read(path), - _ <- File.rm(path) do + {:ok, thumbnail_binary} <- thumbnail_binary(url, image_contents, params) do conn |> put_resp_header("content-type", content_type) - |> send_resp(200, image_binary) + |> send_resp(200, thumbnail_binary) else {_, %{status: _}} -> send_resp(conn, :failed_dependency, "Can't fetch the image.") diff --git a/mix.exs b/mix.exs index a9c4ad2e3..332febe48 100644 --- a/mix.exs +++ b/mix.exs @@ -139,7 +139,7 @@ defp deps do github: "ninenines/gun", ref: "e1a69b36b180a574c0ac314ced9613fdd52312cc", override: true}, {:jason, "~> 1.0"}, {:mogrify, "~> 0.6.1"}, - {:eimp, ">= 0.0.0"}, + {:eimp, "~> 1.0.14"}, {:ex_aws, "~> 2.1"}, {:ex_aws_s3, "~> 2.0"}, {:sweet_xml, "~> 0.6.6"}, From 1871a5ddb4a803ebe4fae6943a9b9c94f1f9c1a8 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Wed, 20 May 2020 20:26:43 +0300 Subject: [PATCH 004/460] [#2497] Image preview proxy: implemented ffmpeg-based resizing, removed eimp & mogrify-based resizing. --- config/config.exs | 1 - lib/pleroma/helpers/media_helper.ex | 62 +++++++++++++++++++ lib/pleroma/helpers/mogrify_helper.ex | 25 -------- .../web/media_proxy/media_proxy_controller.ex | 50 +++------------ mix.exs | 2 +- mix.lock | 2 + 6 files changed, 74 insertions(+), 68 deletions(-) create mode 100644 lib/pleroma/helpers/media_helper.ex delete mode 100644 lib/pleroma/helpers/mogrify_helper.ex diff --git a/config/config.exs b/config/config.exs index e9403c7c8..7de93511d 100644 --- a/config/config.exs +++ b/config/config.exs @@ -393,7 +393,6 @@ # Note: media preview proxy depends on media proxy to be enabled config :pleroma, :media_preview_proxy, enabled: false, - enable_eimp: true, thumbnail_max_width: 400, thumbnail_max_height: 200, proxy_opts: [ diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex new file mode 100644 index 000000000..6d1f8ab22 --- /dev/null +++ b/lib/pleroma/helpers/media_helper.ex @@ -0,0 +1,62 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Helpers.MediaHelper do + @moduledoc """ + Handles common media-related operations. + """ + + @ffmpeg_opts [{:sync, true}, {:stdout, true}] + + def ffmpeg_resize_remote(uri, max_width, max_height) do + cmd = ~s""" + curl -L "#{uri}" | + ffmpeg -i pipe:0 -vf \ + "scale='min(#{max_width},iw)':min'(#{max_height},ih)':force_original_aspect_ratio=decrease" \ + -f image2 pipe:1 | \ + cat + """ + + with {:ok, [stdout: stdout_list]} <- Exexec.run(cmd, @ffmpeg_opts) do + {:ok, Enum.join(stdout_list)} + end + end + + @doc "Returns a temporary path for an URI" + def temporary_path_for(uri) do + name = Path.basename(uri) + random = rand_uniform(999_999) + Path.join(System.tmp_dir(), "#{random}-#{name}") + end + + @doc "Stores binary content fetched from specified URL as a temporary file." + @spec store_as_temporary_file(String.t(), binary()) :: {:ok, String.t()} | {:error, atom()} + def store_as_temporary_file(url, body) do + path = temporary_path_for(url) + with :ok <- File.write(path, body), do: {:ok, path} + end + + @doc "Modifies image file at specified path by resizing to specified limit dimensions." + @spec mogrify_resize_to_limit(String.t(), String.t()) :: :ok | any() + def mogrify_resize_to_limit(path, resize_dimensions) do + with %Mogrify.Image{} <- + path + |> Mogrify.open() + |> Mogrify.resize_to_limit(resize_dimensions) + |> Mogrify.save(in_place: true) do + :ok + end + end + + defp rand_uniform(high) do + Code.ensure_loaded(:rand) + + if function_exported?(:rand, :uniform, 1) do + :rand.uniform(high) + else + # Erlang/OTP < 19 + apply(:crypto, :rand_uniform, [1, high]) + end + end +end diff --git a/lib/pleroma/helpers/mogrify_helper.ex b/lib/pleroma/helpers/mogrify_helper.ex deleted file mode 100644 index 67edb35c3..000000000 --- a/lib/pleroma/helpers/mogrify_helper.ex +++ /dev/null @@ -1,25 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Helpers.MogrifyHelper do - @moduledoc """ - Handles common Mogrify operations. - """ - - @spec store_as_temporary_file(String.t(), binary()) :: {:ok, String.t()} | {:error, atom()} - @doc "Stores binary content fetched from specified URL as a temporary file." - def store_as_temporary_file(url, body) do - path = Mogrify.temporary_path_for(%{path: url}) - with :ok <- File.write(path, body), do: {:ok, path} - end - - @spec store_as_temporary_file(String.t(), String.t()) :: Mogrify.Image.t() | any() - @doc "Modifies file at specified path by resizing to specified limit dimensions." - def in_place_resize_to_limit(path, resize_dimensions) do - path - |> Mogrify.open() - |> Mogrify.resize_to_limit(resize_dimensions) - |> Mogrify.save(in_place: true) - end -end diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 8d8d073e9..fb4b80379 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -6,7 +6,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do use Pleroma.Web, :controller alias Pleroma.Config - alias Pleroma.Helpers.MogrifyHelper + alias Pleroma.Helpers.MediaHelper alias Pleroma.ReverseProxy alias Pleroma.Web.MediaProxy @@ -82,51 +82,19 @@ defp thumbnail_max_dimensions(params) do {thumbnail_max_width, thumbnail_max_height} end - defp thumbnail_binary(url, body, params) do - {thumbnail_max_width, thumbnail_max_height} = thumbnail_max_dimensions(params) - - with true <- Config.get([:media_preview_proxy, :enable_eimp]), - {:ok, [type: image_type, width: source_width, height: source_height]} <- - :eimp.identify(body), - scale_factor <- - Enum.max([source_width / thumbnail_max_width, source_height / thumbnail_max_height]), - {:ok, thumbnail_binary} = - :eimp.convert(body, image_type, [ - {:scale, {round(source_width / scale_factor), round(source_height / scale_factor)}} - ]) do - {:ok, thumbnail_binary} - else - _ -> - mogrify_dimensions = "#{thumbnail_max_width}x#{thumbnail_max_height}" - - with {:ok, path} <- MogrifyHelper.store_as_temporary_file(url, body), - %Mogrify.Image{} <- - MogrifyHelper.in_place_resize_to_limit(path, mogrify_dimensions), - {:ok, thumbnail_binary} <- File.read(path), - _ <- File.rm(path) do - {:ok, thumbnail_binary} - else - _ -> :error - end - end - end - defp handle_preview("image/" <> _ = content_type, %{params: params} = conn, url) do - with {:ok, %{status: status, body: image_contents}} when status in 200..299 <- - url - |> MediaProxy.url() - |> Tesla.get(opts: [adapter: [timeout: preview_timeout()]]), - {:ok, thumbnail_binary} <- thumbnail_binary(url, image_contents, params) do + with {thumbnail_max_width, thumbnail_max_height} <- thumbnail_max_dimensions(params), + media_proxy_url <- MediaProxy.url(url), + {:ok, thumbnail_binary} <- + MediaHelper.ffmpeg_resize_remote( + media_proxy_url, + thumbnail_max_width, + thumbnail_max_height + ) do conn |> put_resp_header("content-type", content_type) |> send_resp(200, thumbnail_binary) else - {_, %{status: _}} -> - send_resp(conn, :failed_dependency, "Can't fetch the image.") - - {:error, :recv_response_timeout} -> - send_resp(conn, :failed_dependency, "Downstream timeout.") - _ -> send_resp(conn, :failed_dependency, "Can't handle image preview.") end diff --git a/mix.exs b/mix.exs index 9ace55eff..68de270f0 100644 --- a/mix.exs +++ b/mix.exs @@ -146,7 +146,6 @@ defp deps do github: "ninenines/gun", ref: "e1a69b36b180a574c0ac314ced9613fdd52312cc", override: true}, {:jason, "~> 1.0"}, {:mogrify, "~> 0.6.1"}, - {:eimp, "~> 1.0.14"}, {:ex_aws, "~> 2.1"}, {:ex_aws_s3, "~> 2.0"}, {:sweet_xml, "~> 0.6.6"}, @@ -198,6 +197,7 @@ defp deps do ref: "e0f16822d578866e186a0974d65ad58cddc1e2ab"}, {:mox, "~> 0.5", only: :test}, {:restarter, path: "./restarter"}, + {:exexec, "~> 0.2"}, {:open_api_spex, git: "https://git.pleroma.social/pleroma/elixir-libraries/open_api_spex.git", ref: "f296ac0924ba3cf79c7a588c4c252889df4c2edd"} diff --git a/mix.lock b/mix.lock index ebd0cbdf5..964b72127 100644 --- a/mix.lock +++ b/mix.lock @@ -32,6 +32,7 @@ "ecto_sql": {:hex, :ecto_sql, "3.3.4", "aa18af12eb875fbcda2f75e608b3bd534ebf020fc4f6448e4672fcdcbb081244", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.4 or ~> 3.3.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.3.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "5eccbdbf92e3c6f213007a82d5dbba4cd9bb659d1a21331f89f408e4c0efd7a8"}, "eimp": {:hex, :eimp, "1.0.14", "fc297f0c7e2700457a95a60c7010a5f1dcb768a083b6d53f49cd94ab95a28f22", [:rebar3], [{:p1_utils, "1.0.18", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "501133f3112079b92d9e22da8b88bf4f0e13d4d67ae9c15c42c30bd25ceb83b6"}, "elixir_make": {:hex, :elixir_make, "0.6.0", "38349f3e29aff4864352084fc736fa7fa0f2995a819a737554f7ebd28b85aaab", [:mix], [], "hexpm", "d522695b93b7f0b4c0fcb2dfe73a6b905b1c301226a5a55cb42e5b14d509e050"}, + "erlexec": {:hex, :erlexec, "1.10.9", "3cbb3476f942bfb8b68b85721c21c1835061cf6dd35f5285c2362e85b100ddc7", [:rebar3], [], "hexpm", "271e5b5f2d91cdb9887efe74d89026c199bfc69f074cade0d08dab60993fa14e"}, "esshd": {:hex, :esshd, "0.1.1", "d4dd4c46698093a40a56afecce8a46e246eb35463c457c246dacba2e056f31b5", [:mix], [], "hexpm", "d73e341e3009d390aa36387dc8862860bf9f874c94d9fd92ade2926376f49981"}, "eternal": {:hex, :eternal, "1.2.1", "d5b6b2499ba876c57be2581b5b999ee9bdf861c647401066d3eeed111d096bc4", [:mix], [], "hexpm", "b14f1dc204321429479c569cfbe8fb287541184ed040956c8862cb7a677b8406"}, "ex2ms": {:hex, :ex2ms, "1.5.0", "19e27f9212be9a96093fed8cdfbef0a2b56c21237196d26760f11dfcfae58e97", [:mix], [], "hexpm"}, @@ -42,6 +43,7 @@ "ex_machina": {:hex, :ex_machina, "2.3.0", "92a5ad0a8b10ea6314b876a99c8c9e3f25f4dde71a2a835845b136b9adaf199a", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm", "b84f6af156264530b312a8ab98ac6088f6b77ae5fe2058305c81434aa01fbaf9"}, "ex_syslogger": {:hex, :ex_syslogger, "1.5.2", "72b6aa2d47a236e999171f2e1ec18698740f40af0bd02c8c650bf5f1fd1bac79", [:mix], [{:poison, ">= 1.5.0", [hex: :poison, repo: "hexpm", optional: true]}, {:syslog, "~> 1.1.0", [hex: :syslog, repo: "hexpm", optional: false]}], "hexpm", "ab9fab4136dbc62651ec6f16fa4842f10cf02ab4433fa3d0976c01be99398399"}, "excoveralls": {:hex, :excoveralls, "0.12.2", "a513defac45c59e310ac42fcf2b8ae96f1f85746410f30b1ff2b710a4b6cd44b", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "151c476331d49b45601ffc45f43cb3a8beb396b02a34e3777fea0ad34ae57d89"}, + "exexec": {:hex, :exexec, "0.2.0", "a6ffc48cba3ac9420891b847e4dc7120692fb8c08c9e82220ebddc0bb8d96103", [:mix], [{:erlexec, "~> 1.10", [hex: :erlexec, repo: "hexpm", optional: false]}], "hexpm", "312cd1c9befba9e078e57f3541e4f4257eabda6eb9c348154fe899d6ac633299"}, "fast_html": {:hex, :fast_html, "1.0.3", "2cc0d4b68496266a1530e0c852cafeaede0bd10cfdee26fda50dc696c203162f", [:make, :mix], [], "hexpm", "ab3d782b639d3c4655fbaec0f9d032c91f8cab8dd791ac7469c2381bc7c32f85"}, "fast_sanitize": {:hex, :fast_sanitize, "0.1.7", "2a7cd8734c88a2de6de55022104f8a3b87f1fdbe8bbf131d9049764b53d50d0d", [:mix], [{:fast_html, "~> 1.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "f39fe8ea08fbac17487c30bf09b7d9f3e12472e51fb07a88ffeb8fd17da8ab67"}, "flake_id": {:hex, :flake_id, "0.1.0", "7716b086d2e405d09b647121a166498a0d93d1a623bead243e1f74216079ccb3", [:mix], [{:base62, "~> 1.2", [hex: :base62, repo: "hexpm", optional: false]}, {:ecto, ">= 2.0.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "31fc8090fde1acd267c07c36ea7365b8604055f897d3a53dd967658c691bd827"}, From 610343edb318654126d9539775ba4b9ff30c8831 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Thu, 21 May 2020 17:35:42 +0300 Subject: [PATCH 005/460] [#2497] Image preview proxy: image resize & background color fix with ffmpeg -filter_complex. --- lib/pleroma/helpers/media_helper.ex | 47 +++---------------- .../web/media_proxy/media_proxy_controller.ex | 7 ++- 2 files changed, 9 insertions(+), 45 deletions(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index 6d1f8ab22..ee6b76c41 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -9,12 +9,14 @@ defmodule Pleroma.Helpers.MediaHelper do @ffmpeg_opts [{:sync, true}, {:stdout, true}] - def ffmpeg_resize_remote(uri, max_width, max_height) do + def ffmpeg_resize_remote(uri, %{max_width: max_width, max_height: max_height}) do cmd = ~s""" curl -L "#{uri}" | - ffmpeg -i pipe:0 -vf \ - "scale='min(#{max_width},iw)':min'(#{max_height},ih)':force_original_aspect_ratio=decrease" \ - -f image2 pipe:1 | \ + ffmpeg -i pipe:0 -f lavfi -i color=c=white \ + -filter_complex "[0:v] scale='min(#{max_width},iw)':'min(#{max_height},ih)': \ + force_original_aspect_ratio=decrease [scaled]; \ + [1][scaled] scale2ref [bg][img]; [bg] setsar=1 [bg]; [bg][img] overlay=shortest=1" \ + -f image2 -vcodec mjpeg -frames:v 1 pipe:1 | \ cat """ @@ -22,41 +24,4 @@ def ffmpeg_resize_remote(uri, max_width, max_height) do {:ok, Enum.join(stdout_list)} end end - - @doc "Returns a temporary path for an URI" - def temporary_path_for(uri) do - name = Path.basename(uri) - random = rand_uniform(999_999) - Path.join(System.tmp_dir(), "#{random}-#{name}") - end - - @doc "Stores binary content fetched from specified URL as a temporary file." - @spec store_as_temporary_file(String.t(), binary()) :: {:ok, String.t()} | {:error, atom()} - def store_as_temporary_file(url, body) do - path = temporary_path_for(url) - with :ok <- File.write(path, body), do: {:ok, path} - end - - @doc "Modifies image file at specified path by resizing to specified limit dimensions." - @spec mogrify_resize_to_limit(String.t(), String.t()) :: :ok | any() - def mogrify_resize_to_limit(path, resize_dimensions) do - with %Mogrify.Image{} <- - path - |> Mogrify.open() - |> Mogrify.resize_to_limit(resize_dimensions) - |> Mogrify.save(in_place: true) do - :ok - end - end - - defp rand_uniform(high) do - Code.ensure_loaded(:rand) - - if function_exported?(:rand, :uniform, 1) do - :rand.uniform(high) - else - # Erlang/OTP < 19 - apply(:crypto, :rand_uniform, [1, high]) - end - end end diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index fb4b80379..12d4401fa 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -82,17 +82,16 @@ defp thumbnail_max_dimensions(params) do {thumbnail_max_width, thumbnail_max_height} end - defp handle_preview("image/" <> _ = content_type, %{params: params} = conn, url) do + defp handle_preview("image/" <> _ = _content_type, %{params: params} = conn, url) do with {thumbnail_max_width, thumbnail_max_height} <- thumbnail_max_dimensions(params), media_proxy_url <- MediaProxy.url(url), {:ok, thumbnail_binary} <- MediaHelper.ffmpeg_resize_remote( media_proxy_url, - thumbnail_max_width, - thumbnail_max_height + %{max_width: thumbnail_max_width, max_height: thumbnail_max_height} ) do conn - |> put_resp_header("content-type", content_type) + |> put_resp_header("content-type", "image/jpeg") |> send_resp(200, thumbnail_binary) else _ -> From 3a1e810aaaea3e44c4dfc82a014485cf886d6b88 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Thu, 21 May 2020 21:47:32 +0300 Subject: [PATCH 006/460] [#2497] Customized `exexec` launch to support root operation (currently required by Gitlab CI). --- .gitlab-ci.yml | 1 + config/config.exs | 4 +++ lib/pleroma/exec.ex | 38 +++++++++++++++++++++++++++++ lib/pleroma/helpers/media_helper.ex | 4 +-- mix.exs | 3 ++- test/exec_test.exs | 13 ++++++++++ 6 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 lib/pleroma/exec.ex create mode 100644 test/exec_test.exs diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index aad28a2d8..14300f3bf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,6 +6,7 @@ variables: &global_variables POSTGRES_PASSWORD: postgres DB_HOST: postgres MIX_ENV: test + USER: root cache: &global_cache_policy key: ${CI_COMMIT_REF_SLUG} diff --git a/config/config.exs b/config/config.exs index 838508c1b..d1440b7bf 100644 --- a/config/config.exs +++ b/config/config.exs @@ -681,6 +681,10 @@ config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: false +config :pleroma, :exexec, + root_mode: false, + options: %{} + # Import environment specific config. This must remain at the bottom # of this file so it overrides the configuration defined above. import_config "#{Mix.env()}.exs" diff --git a/lib/pleroma/exec.ex b/lib/pleroma/exec.ex new file mode 100644 index 000000000..1b088d322 --- /dev/null +++ b/lib/pleroma/exec.ex @@ -0,0 +1,38 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Exec do + @moduledoc "Pleroma wrapper around Exexec commands." + + alias Pleroma.Config + + def ensure_started(options_overrides \\ %{}) do + options = + if Config.get([:exexec, :root_mode]) || System.get_env("USER") == "root" do + # Note: running as `root` is discouraged (yet Gitlab CI does that by default) + %{root: true, user: "root", limit_users: ["root"]} + else + %{} + end + + options = + options + |> Map.merge(Config.get([:exexec, :options], %{})) + |> Map.merge(options_overrides) + + with {:error, {:already_started, pid}} <- Exexec.start(options) do + {:ok, pid} + end + end + + def run(cmd, options \\ %{}) do + ensure_started() + Exexec.run(cmd, options) + end + + def cmd(cmd, options \\ %{}) do + options = Map.merge(%{sync: true, stdout: true}, options) + run(cmd, options) + end +end diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index ee6b76c41..ecd234558 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -7,8 +7,6 @@ defmodule Pleroma.Helpers.MediaHelper do Handles common media-related operations. """ - @ffmpeg_opts [{:sync, true}, {:stdout, true}] - def ffmpeg_resize_remote(uri, %{max_width: max_width, max_height: max_height}) do cmd = ~s""" curl -L "#{uri}" | @@ -20,7 +18,7 @@ def ffmpeg_resize_remote(uri, %{max_width: max_width, max_height: max_height}) d cat """ - with {:ok, [stdout: stdout_list]} <- Exexec.run(cmd, @ffmpeg_opts) do + with {:ok, [stdout: stdout_list]} <- Pleroma.Exec.cmd(cmd) do {:ok, Enum.join(stdout_list)} end end diff --git a/mix.exs b/mix.exs index 4c9bbc0ab..3215086ca 100644 --- a/mix.exs +++ b/mix.exs @@ -197,7 +197,8 @@ defp deps do ref: "e0f16822d578866e186a0974d65ad58cddc1e2ab"}, {:mox, "~> 0.5", only: :test}, {:restarter, path: "./restarter"}, - {:exexec, "~> 0.2"}, + # Note: `runtime: true` for :exexec makes CI fail due to `root` user (see Pleroma.Exec) + {:exexec, "~> 0.2", runtime: false}, {:open_api_spex, git: "https://git.pleroma.social/pleroma/elixir-libraries/open_api_spex.git", ref: "f296ac0924ba3cf79c7a588c4c252889df4c2edd"} diff --git a/test/exec_test.exs b/test/exec_test.exs new file mode 100644 index 000000000..45d3f778f --- /dev/null +++ b/test/exec_test.exs @@ -0,0 +1,13 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.ExecTest do + alias Pleroma.Exec + + use Pleroma.DataCase + + test "it starts" do + assert {:ok, _} = Exec.ensure_started() + end +end From 0e23138b50f1fdd9ea78df31eec1b3caac905e2c Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Fri, 22 May 2020 10:35:48 +0300 Subject: [PATCH 007/460] [#2497] Specified SHELL in .gitlab-ci.yml as required for `exexec`. --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 14300f3bf..e596aa0ec 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,6 +6,7 @@ variables: &global_variables POSTGRES_PASSWORD: postgres DB_HOST: postgres MIX_ENV: test + SHELL: /bin/sh USER: root cache: &global_cache_policy From ec1452fd1cdb9cb1db9b8bad872916d3213489e2 Mon Sep 17 00:00:00 2001 From: href Date: Thu, 14 May 2020 21:36:31 +0200 Subject: [PATCH 008/460] Pleroma.MIME: use gen_magic --- .gitlab-ci.yml | 2 + CHANGELOG.md | 1 + config/config.exs | 2 + config/description.exs | 14 +++++ docs/installation/alpine_linux_en.md | 1 + docs/installation/arch_linux_en.md | 1 + docs/installation/debian_based_en.md | 1 + docs/installation/gentoo_en.md | 1 + docs/installation/otp_en.md | 5 +- lib/pleroma/application.ex | 1 + lib/pleroma/mime.ex | 84 ++++++++-------------------- mix.exs | 1 + mix.lock | 2 + 13 files changed, 52 insertions(+), 64 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index aad28a2d8..685106969 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,6 +24,8 @@ stages: before_script: - mix local.hex --force - mix local.rebar --force + - apt-get -qq update + - apt-get install -y libmagic-dev build: stage: build diff --git a/CHANGELOG.md b/CHANGELOG.md index d2629bf84..8925f31f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Changed - MFR policy to set global expiration for all local Create activities - OGP rich media parser merged with TwitterCard +- **Breaking** Requires `libmagic` (or `file`) to guess file types.
API Changes - **Breaking:** Emoji API: changed methods and renamed routes. diff --git a/config/config.exs b/config/config.exs index 6a7bb9e06..65aa8643e 100644 --- a/config/config.exs +++ b/config/config.exs @@ -678,6 +678,8 @@ timeout: 300_000 ] +config :pleroma, :gen_magic_pool, size: 2 + config :pleroma, :restrict_unauthenticated, timelines: %{local: false, federated: false}, profiles: %{local: false, remote: false}, diff --git a/config/description.exs b/config/description.exs index b21d7840c..a318afbe6 100644 --- a/config/description.exs +++ b/config/description.exs @@ -3325,5 +3325,19 @@ suggestions: [false] } ] + }, + %{ + group: :pleroma, + key: :gen_magic_pool, + type: :group, + description: "GenMagic/libmagic configuration", + children: [ + %{ + key: :size, + type: :integer, + description: "Number of gen_magic workers to start.", + suggestions: [2] + } + ] } ] diff --git a/docs/installation/alpine_linux_en.md b/docs/installation/alpine_linux_en.md index 2a9b8f6ff..1d503ff9f 100644 --- a/docs/installation/alpine_linux_en.md +++ b/docs/installation/alpine_linux_en.md @@ -13,6 +13,7 @@ It assumes that you have administrative rights, either as root or a user with [s * `erlang-parsetools` * `erlang-xmerl` * `git` +* `file-dev` * Development Tools #### Optional packages used in this guide diff --git a/docs/installation/arch_linux_en.md b/docs/installation/arch_linux_en.md index 8370986ad..428ed6bd7 100644 --- a/docs/installation/arch_linux_en.md +++ b/docs/installation/arch_linux_en.md @@ -9,6 +9,7 @@ This guide will assume that you have administrative rights, either as root or a * `elixir` * `git` * `base-devel` +* `file` #### Optional packages used in this guide diff --git a/docs/installation/debian_based_en.md b/docs/installation/debian_based_en.md index 2c20d521a..21e89d1a0 100644 --- a/docs/installation/debian_based_en.md +++ b/docs/installation/debian_based_en.md @@ -10,6 +10,7 @@ This guide will assume you are on Debian Stretch. This guide should also work wi * `elixir` (1.8+, Follow the guide to install from the Erlang Solutions repo or use [asdf](https://github.com/asdf-vm/asdf) as the pleroma user) * `erlang-dev` * `erlang-nox` +* `libmagic-dev` * `git` * `build-essential` diff --git a/docs/installation/gentoo_en.md b/docs/installation/gentoo_en.md index 1e61373cc..e936469d0 100644 --- a/docs/installation/gentoo_en.md +++ b/docs/installation/gentoo_en.md @@ -28,6 +28,7 @@ Gentoo quite pointedly does not come with a cron daemon installed, and as such i * `dev-db/postgresql` * `dev-lang/elixir` * `dev-vcs/git` +* `sys-apps/file` #### Optional ebuilds used in this guide diff --git a/docs/installation/otp_en.md b/docs/installation/otp_en.md index 86135cd20..0cad29bc8 100644 --- a/docs/installation/otp_en.md +++ b/docs/installation/otp_en.md @@ -27,15 +27,16 @@ Other than things bundled in the OTP release Pleroma depends on: * PostgreSQL (also utilizes extensions in postgresql-contrib) * nginx (could be swapped with another reverse proxy but this guide covers only it) * certbot (for Let's Encrypt certificates, could be swapped with another ACME client, but this guide covers only it) +* libmagic/file ```sh tab="Alpine" echo "http://nl.alpinelinux.org/alpine/latest-stable/community" >> /etc/apk/repositories apk update -apk add curl unzip ncurses postgresql postgresql-contrib nginx certbot +apk add curl unzip ncurses postgresql postgresql-contrib nginx certbot libmagic ``` ```sh tab="Debian/Ubuntu" -apt install curl unzip libncurses5 postgresql postgresql-contrib nginx certbot +apt install curl unzip libncurses5 postgresql postgresql-contrib nginx certbot libmagic ``` ## Setup diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 9d3d92b38..c74255629 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -80,6 +80,7 @@ def start(_type, _args) do [ Pleroma.Stats, Pleroma.JobQueueMonitor, + Pleroma.MIME, {Oban, Config.get(Oban)} ] ++ task_children(@env) ++ diff --git a/lib/pleroma/mime.ex b/lib/pleroma/mime.ex index 6ee055f50..3b406630e 100644 --- a/lib/pleroma/mime.ex +++ b/lib/pleroma/mime.ex @@ -6,8 +6,21 @@ defmodule Pleroma.MIME do @moduledoc """ Returns the mime-type of a binary and optionally a normalized file-name. """ - @default "application/octet-stream" @read_bytes 35 + @pool __MODULE__.GenMagicPool + + def child_spec(_) do + pool_size = Pleroma.Config.get!([:gen_magic_pool, :size]) + name = @pool + + %{ + id: __MODULE__, + start: {GenMagic.Pool, :start_link, [[name: name, pool_size: pool_size]]}, + type: :worker, + restart: :permanent, + shutdown: 500 + } + end @spec file_mime_type(String.t(), String.t()) :: {:ok, content_type :: String.t(), filename :: String.t()} | {:error, any()} | :error @@ -20,9 +33,10 @@ def file_mime_type(path, filename) do @spec file_mime_type(String.t()) :: {:ok, String.t()} | {:error, any()} | :error def file_mime_type(filename) do - File.open(filename, [:read], fn f -> - check_mime_type(IO.binread(f, @read_bytes)) - end) + case GenMagic.Pool.perform(@pool, filename) do + {:ok, %GenMagic.Result{mime_type: content_type}} -> {:ok, content_type} + error -> error + end end def bin_mime_type(binary, filename) do @@ -34,13 +48,14 @@ def bin_mime_type(binary, filename) do @spec bin_mime_type(binary()) :: {:ok, String.t()} | :error def bin_mime_type(<>) do - {:ok, check_mime_type(head)} + case GenMagic.Pool.perform(@pool, {:bytes, head}) do + {:ok, %GenMagic.Result{mime_type: content_type}} -> {:ok, content_type} + error -> error + end end def bin_mime_type(_), do: :error - def mime_type(<<_::binary>>), do: {:ok, @default} - defp fix_extension(filename, content_type) do parts = String.split(filename, ".") @@ -62,59 +77,4 @@ defp fix_extension(filename, content_type) do Enum.join([new_filename, String.split(content_type, "/") |> List.last()], ".") end end - - defp check_mime_type(<<0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, _::binary>>) do - "image/png" - end - - defp check_mime_type(<<0x47, 0x49, 0x46, 0x38, _, 0x61, _::binary>>) do - "image/gif" - end - - defp check_mime_type(<<0xFF, 0xD8, 0xFF, _::binary>>) do - "image/jpeg" - end - - defp check_mime_type(<<0x1A, 0x45, 0xDF, 0xA3, _::binary>>) do - "video/webm" - end - - defp check_mime_type(<<0x00, 0x00, 0x00, _, 0x66, 0x74, 0x79, 0x70, _::binary>>) do - "video/mp4" - end - - defp check_mime_type(<<0x49, 0x44, 0x33, _::binary>>) do - "audio/mpeg" - end - - defp check_mime_type(<<255, 251, _, 68, 0, 0, 0, 0, _::binary>>) do - "audio/mpeg" - end - - defp check_mime_type( - <<0x4F, 0x67, 0x67, 0x53, 0x00, 0x02, 0x00, 0x00, _::size(160), 0x80, 0x74, 0x68, 0x65, - 0x6F, 0x72, 0x61, _::binary>> - ) do - "video/ogg" - end - - defp check_mime_type(<<0x4F, 0x67, 0x67, 0x53, 0x00, 0x02, 0x00, 0x00, _::binary>>) do - "audio/ogg" - end - - defp check_mime_type(<<"RIFF", _::binary-size(4), "WAVE", _::binary>>) do - "audio/wav" - end - - defp check_mime_type(<<"RIFF", _::binary-size(4), "WEBP", _::binary>>) do - "image/webp" - end - - defp check_mime_type(<<"RIFF", _::binary-size(4), "AVI.", _::binary>>) do - "video/avi" - end - - defp check_mime_type(_) do - @default - end end diff --git a/mix.exs b/mix.exs index 03b060bc0..2d7e16e94 100644 --- a/mix.exs +++ b/mix.exs @@ -197,6 +197,7 @@ defp deps do ref: "e0f16822d578866e186a0974d65ad58cddc1e2ab"}, {:mox, "~> 0.5", only: :test}, {:restarter, path: "./restarter"}, + {:gen_magic, git: "https://github.com/hrefhref/gen_magic", branch: "develop"}, {:open_api_spex, git: "https://git.pleroma.social/pleroma/elixir-libraries/open_api_spex.git", ref: "f296ac0924ba3cf79c7a588c4c252889df4c2edd"} diff --git a/mix.lock b/mix.lock index 5383c2c6e..7b7f3c934 100644 --- a/mix.lock +++ b/mix.lock @@ -45,6 +45,7 @@ "fast_sanitize": {:hex, :fast_sanitize, "0.1.7", "2a7cd8734c88a2de6de55022104f8a3b87f1fdbe8bbf131d9049764b53d50d0d", [:mix], [{:fast_html, "~> 1.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "f39fe8ea08fbac17487c30bf09b7d9f3e12472e51fb07a88ffeb8fd17da8ab67"}, "flake_id": {:hex, :flake_id, "0.1.0", "7716b086d2e405d09b647121a166498a0d93d1a623bead243e1f74216079ccb3", [:mix], [{:base62, "~> 1.2", [hex: :base62, repo: "hexpm", optional: false]}, {:ecto, ">= 2.0.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "31fc8090fde1acd267c07c36ea7365b8604055f897d3a53dd967658c691bd827"}, "floki": {:hex, :floki, "0.25.0", "b1c9ddf5f32a3a90b43b76f3386ca054325dc2478af020e87b5111c19f2284ac", [:mix], [{:html_entities, "~> 0.5.0", [hex: :html_entities, repo: "hexpm", optional: false]}], "hexpm", "631f4e627c46d5ecd347df5a2accdaf0621c77c3693c5b75a8ad58e84c61f242"}, + "gen_magic": {:git, "https://github.com/hrefhref/gen_magic", "eafdc2ea156433ccd87d1d99eaf1be758064a1db", [branch: "develop"]}, "gen_smtp": {:hex, :gen_smtp, "0.15.0", "9f51960c17769b26833b50df0b96123605a8024738b62db747fece14eb2fbfcc", [:rebar3], [], "hexpm", "29bd14a88030980849c7ed2447b8db6d6c9278a28b11a44cafe41b791205440f"}, "gen_stage": {:hex, :gen_stage, "0.14.3", "d0c66f1c87faa301c1a85a809a3ee9097a4264b2edf7644bf5c123237ef732bf", [:mix], [], "hexpm"}, "gen_state_machine": {:hex, :gen_state_machine, "2.0.5", "9ac15ec6e66acac994cc442dcc2c6f9796cf380ec4b08267223014be1c728a95", [:mix], [], "hexpm"}, @@ -74,6 +75,7 @@ "mox": {:hex, :mox, "0.5.1", "f86bb36026aac1e6f924a4b6d024b05e9adbed5c63e8daa069bd66fb3292165b", [:mix], [], "hexpm", "052346cf322311c49a0f22789f3698eea030eec09b8c47367f0686ef2634ae14"}, "myhtmlex": {:git, "https://git.pleroma.social/pleroma/myhtmlex.git", "ad0097e2f61d4953bfef20fb6abddf23b87111e6", [ref: "ad0097e2f61d4953bfef20fb6abddf23b87111e6", submodules: true]}, "nimble_parsec": {:hex, :nimble_parsec, "0.5.3", "def21c10a9ed70ce22754fdeea0810dafd53c2db3219a0cd54cf5526377af1c6", [:mix], [], "hexpm", "589b5af56f4afca65217a1f3eb3fee7e79b09c40c742fddc1c312b3ac0b3399f"}, + "nimble_pool": {:hex, :nimble_pool, "0.1.0", "ffa9d5be27eee2b00b0c634eb649aa27f97b39186fec3c493716c2a33e784ec6", [:mix], [], "hexpm", "343a1eaa620ddcf3430a83f39f2af499fe2370390d4f785cd475b4df5acaf3f9"}, "nodex": {:git, "https://git.pleroma.social/pleroma/nodex", "cb6730f943cfc6aad674c92161be23a8411f15d1", [ref: "cb6730f943cfc6aad674c92161be23a8411f15d1"]}, "oban": {:hex, :oban, "1.2.0", "7cca94d341be43d220571e28f69131c4afc21095b25257397f50973d3fc59b07", [:mix], [{:ecto_sql, "~> 3.1", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.14", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ba5f8b3f7d76967b3e23cf8014f6a13e4ccb33431e4808f036709a7f822362ee"}, "open_api_spex": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/open_api_spex.git", "f296ac0924ba3cf79c7a588c4c252889df4c2edd", [ref: "f296ac0924ba3cf79c7a588c4c252889df4c2edd"]}, From f124f6820582d50be83ba7a1709b14ce8ee1abcc Mon Sep 17 00:00:00 2001 From: href Date: Tue, 16 Jun 2020 15:11:45 +0200 Subject: [PATCH 009/460] Switch from gen_magic to majic, use Majic.Plug, remove Pleroma.MIME --- config/config.exs | 2 +- config/description.exs | 6 +- docs/installation/alpine_linux_en.md | 2 +- docs/installation/arch_linux_en.md | 2 +- docs/installation/debian_based_en.md | 2 +- docs/installation/debian_based_jp.md | 3 +- docs/installation/gentoo_en.md | 2 +- docs/installation/otp_en.md | 4 +- lib/pleroma/application.ex | 2 +- lib/pleroma/mime.ex | 80 ------------------- lib/pleroma/upload.ex | 19 ++--- .../activity_pub/activity_pub_controller.ex | 2 + .../controllers/media_controller.ex | 1 + .../controllers/account_controller.ex | 5 ++ .../controllers/mascot_controller.ex | 10 ++- mix.exs | 2 +- mix.lock | 1 + test/upload_test.exs | 66 ++++----------- .../activity_pub_controller_test.exs | 5 +- .../activity_pub/object_validator_test.exs | 2 +- 20 files changed, 60 insertions(+), 158 deletions(-) delete mode 100644 lib/pleroma/mime.ex diff --git a/config/config.exs b/config/config.exs index 65aa8643e..f58b99faa 100644 --- a/config/config.exs +++ b/config/config.exs @@ -678,7 +678,7 @@ timeout: 300_000 ] -config :pleroma, :gen_magic_pool, size: 2 +config :pleroma, :majic_pool, size: 2 config :pleroma, :restrict_unauthenticated, timelines: %{local: false, federated: false}, diff --git a/config/description.exs b/config/description.exs index a318afbe6..2afc5e366 100644 --- a/config/description.exs +++ b/config/description.exs @@ -3328,14 +3328,14 @@ }, %{ group: :pleroma, - key: :gen_magic_pool, + key: :majic_pool, type: :group, - description: "GenMagic/libmagic configuration", + description: "Majic/libmagic configuration", children: [ %{ key: :size, type: :integer, - description: "Number of gen_magic workers to start.", + description: "Number of majic workers to start.", suggestions: [2] } ] diff --git a/docs/installation/alpine_linux_en.md b/docs/installation/alpine_linux_en.md index 1d503ff9f..d3b3e8279 100644 --- a/docs/installation/alpine_linux_en.md +++ b/docs/installation/alpine_linux_en.md @@ -40,7 +40,7 @@ sudo apk upgrade * Install some tools, which are needed later: ```shell -sudo apk add git build-base +sudo apk add git build-base file-dev ``` ### Install Elixir and Erlang diff --git a/docs/installation/arch_linux_en.md b/docs/installation/arch_linux_en.md index 428ed6bd7..36ef3e345 100644 --- a/docs/installation/arch_linux_en.md +++ b/docs/installation/arch_linux_en.md @@ -27,7 +27,7 @@ sudo pacman -Syu * Install some of the above mentioned programs: ```shell -sudo pacman -S git base-devel elixir +sudo pacman -S git base-devel elixir file ``` ### Install PostgreSQL diff --git a/docs/installation/debian_based_en.md b/docs/installation/debian_based_en.md index 21e89d1a0..9357df5d2 100644 --- a/docs/installation/debian_based_en.md +++ b/docs/installation/debian_based_en.md @@ -31,7 +31,7 @@ sudo apt full-upgrade * Install some of the above mentioned programs: ```shell -sudo apt install git build-essential postgresql postgresql-contrib +sudo apt install git build-essential postgresql postgresql-contrib libmagic-devel ``` ### Install Elixir and Erlang diff --git a/docs/installation/debian_based_jp.md b/docs/installation/debian_based_jp.md index 1e5a9be91..21cd4d2ad 100644 --- a/docs/installation/debian_based_jp.md +++ b/docs/installation/debian_based_jp.md @@ -16,6 +16,7 @@ - `erlang-nox` - `git` - `build-essential` +- `libmagic-dev` #### このガイドで利用している追加パッケージ @@ -32,7 +33,7 @@ sudo apt full-upgrade * 上記に挙げたパッケージをインストールしておきます。 ``` -sudo apt install git build-essential postgresql postgresql-contrib +sudo apt install git build-essential postgresql postgresql-contrib libmagic-dev ``` diff --git a/docs/installation/gentoo_en.md b/docs/installation/gentoo_en.md index e936469d0..d143e068f 100644 --- a/docs/installation/gentoo_en.md +++ b/docs/installation/gentoo_en.md @@ -47,7 +47,7 @@ Gentoo quite pointedly does not come with a cron daemon installed, and as such i * Emerge all required the required and suggested software in one go: ```shell - # emerge --ask dev-db/postgresql dev-lang/elixir dev-vcs/git www-servers/nginx app-crypt/certbot app-crypt/certbot-nginx + # emerge --ask dev-db/postgresql dev-lang/elixir dev-vcs/git www-servers/nginx app-crypt/certbot app-crypt/certbot-nginx sys-apps/file ``` If you would not like to install the optional packages, remove them from this line. diff --git a/docs/installation/otp_en.md b/docs/installation/otp_en.md index 0cad29bc8..e086cc1c4 100644 --- a/docs/installation/otp_en.md +++ b/docs/installation/otp_en.md @@ -32,11 +32,11 @@ Other than things bundled in the OTP release Pleroma depends on: ```sh tab="Alpine" echo "http://nl.alpinelinux.org/alpine/latest-stable/community" >> /etc/apk/repositories apk update -apk add curl unzip ncurses postgresql postgresql-contrib nginx certbot libmagic +apk add curl unzip ncurses postgresql postgresql-contrib nginx certbot file-dev ``` ```sh tab="Debian/Ubuntu" -apt install curl unzip libncurses5 postgresql postgresql-contrib nginx certbot libmagic +apt install curl unzip libncurses5 postgresql postgresql-contrib nginx certbot libmagic-dev ``` ## Setup diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index c74255629..9c74fa00e 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -80,7 +80,7 @@ def start(_type, _args) do [ Pleroma.Stats, Pleroma.JobQueueMonitor, - Pleroma.MIME, + {Majic.Pool, [name: Pleroma.MajicPool, pool_size: Config.get([:majic_pool, :size], 2)]}, {Oban, Config.get(Oban)} ] ++ task_children(@env) ++ diff --git a/lib/pleroma/mime.ex b/lib/pleroma/mime.ex deleted file mode 100644 index 3b406630e..000000000 --- a/lib/pleroma/mime.ex +++ /dev/null @@ -1,80 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.MIME do - @moduledoc """ - Returns the mime-type of a binary and optionally a normalized file-name. - """ - @read_bytes 35 - @pool __MODULE__.GenMagicPool - - def child_spec(_) do - pool_size = Pleroma.Config.get!([:gen_magic_pool, :size]) - name = @pool - - %{ - id: __MODULE__, - start: {GenMagic.Pool, :start_link, [[name: name, pool_size: pool_size]]}, - type: :worker, - restart: :permanent, - shutdown: 500 - } - end - - @spec file_mime_type(String.t(), String.t()) :: - {:ok, content_type :: String.t(), filename :: String.t()} | {:error, any()} | :error - def file_mime_type(path, filename) do - with {:ok, content_type} <- file_mime_type(path), - filename <- fix_extension(filename, content_type) do - {:ok, content_type, filename} - end - end - - @spec file_mime_type(String.t()) :: {:ok, String.t()} | {:error, any()} | :error - def file_mime_type(filename) do - case GenMagic.Pool.perform(@pool, filename) do - {:ok, %GenMagic.Result{mime_type: content_type}} -> {:ok, content_type} - error -> error - end - end - - def bin_mime_type(binary, filename) do - with {:ok, content_type} <- bin_mime_type(binary), - filename <- fix_extension(filename, content_type) do - {:ok, content_type, filename} - end - end - - @spec bin_mime_type(binary()) :: {:ok, String.t()} | :error - def bin_mime_type(<>) do - case GenMagic.Pool.perform(@pool, {:bytes, head}) do - {:ok, %GenMagic.Result{mime_type: content_type}} -> {:ok, content_type} - error -> error - end - end - - def bin_mime_type(_), do: :error - - defp fix_extension(filename, content_type) do - parts = String.split(filename, ".") - - new_filename = - if length(parts) > 1 do - Enum.drop(parts, -1) |> Enum.join(".") - else - Enum.join(parts) - end - - cond do - content_type == "application/octet-stream" -> - filename - - ext = List.first(MIME.extensions(content_type)) -> - new_filename <> "." <> ext - - true -> - Enum.join([new_filename, String.split(content_type, "/") |> List.last()], ".") - end - end -end diff --git a/lib/pleroma/upload.ex b/lib/pleroma/upload.ex index 797555bff..a0ba2f4c0 100644 --- a/lib/pleroma/upload.ex +++ b/lib/pleroma/upload.ex @@ -57,6 +57,7 @@ defmodule Pleroma.Upload do defstruct [:id, :name, :tempfile, :content_type, :path] @spec store(source, options :: [option()]) :: {:ok, Map.t()} | {:error, any()} + @doc "Store a file. If using a `Plug.Upload{}` as the source, be sure to use `Majic.Plug` to ensure its content_type and filename is correct." def store(upload, opts \\ []) do opts = get_opts(opts) @@ -123,14 +124,13 @@ defp get_opts(opts) do end defp prepare_upload(%Plug.Upload{} = file, opts) do - with :ok <- check_file_size(file.path, opts.size_limit), - {:ok, content_type, name} <- Pleroma.MIME.file_mime_type(file.path, file.filename) do + with :ok <- check_file_size(file.path, opts.size_limit) do {:ok, %__MODULE__{ id: UUID.generate(), - name: name, + name: file.filename, tempfile: file.path, - content_type: content_type + content_type: file.content_type }} end end @@ -138,16 +138,17 @@ defp prepare_upload(%Plug.Upload{} = file, opts) do defp prepare_upload(%{img: "data:image/" <> image_data}, opts) do parsed = Regex.named_captures(~r/(?jpeg|png|gif);base64,(?.*)/, image_data) data = Base.decode64!(parsed["data"], ignore: :whitespace) - hash = String.downcase(Base.encode16(:crypto.hash(:sha256, data))) + hash = Base.encode16(:crypto.hash(:sha256, data), lower: true) with :ok <- check_binary_size(data, opts.size_limit), tmp_path <- tempfile_for_image(data), - {:ok, content_type, name} <- - Pleroma.MIME.bin_mime_type(data, hash <> "." <> parsed["filetype"]) do + {:ok, %{mime_type: content_type}} <- + Majic.perform({:bytes, data}, pool: Pleroma.MajicPool), + [ext | _] <- MIME.extensions(content_type) do {:ok, %__MODULE__{ id: UUID.generate(), - name: name, + name: hash <> "." <> ext, tempfile: tmp_path, content_type: content_type }} @@ -156,7 +157,7 @@ defp prepare_upload(%{img: "data:image/" <> image_data}, opts) do # For Mix.Tasks.MigrateLocalUploads defp prepare_upload(%__MODULE__{tempfile: path} = upload, _opts) do - with {:ok, content_type} <- Pleroma.MIME.file_mime_type(path) do + with {:ok, %{mime_type: content_type}} <- Majic.perform(path, pool: Pleroma.MajicPool) do {:ok, %__MODULE__{upload | content_type: content_type}} end end diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index f0b5c6e93..e2a5fb9e9 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -45,6 +45,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do when action in [:read_inbox, :update_outbox, :whoami, :upload_media] ) + plug(Majic.Plug, [pool: Pleroma.MajicPool] when action in [:upload_media]) + plug( Pleroma.Plugs.Cache, [query_params: false, tracking_fun: &__MODULE__.track_object_fetch/2] diff --git a/lib/pleroma/web/mastodon_api/controllers/media_controller.ex b/lib/pleroma/web/mastodon_api/controllers/media_controller.ex index 513de279f..06bb718ef 100644 --- a/lib/pleroma/web/mastodon_api/controllers/media_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/media_controller.ex @@ -16,6 +16,7 @@ defmodule Pleroma.Web.MastodonAPI.MediaController do plug(OAuthScopesPlug, %{scopes: ["read:media"]} when action == :show) plug(OAuthScopesPlug, %{scopes: ["write:media"]} when action != :show) + plug(Majic.Plug, [pool: Pleroma.MajicPool] when action in [:create, :create2]) defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.MediaOperation diff --git a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex index f3554d919..97a6ae60d 100644 --- a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex @@ -56,6 +56,11 @@ defmodule Pleroma.Web.PleromaAPI.AccountController do plug(:assign_account_by_id when action in [:favourites, :subscribe, :unsubscribe]) plug(:put_view, Pleroma.Web.MastodonAPI.AccountView) + plug( + Majic.Plug, + [pool: Pleroma.MajicPool] when action in [:update_avatar, :update_background, :update_banner] + ) + defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.PleromaAccountOperation @doc "POST /api/v1/pleroma/accounts/confirmation_resend" diff --git a/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex b/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex index df6c50ca5..4ba4154dd 100644 --- a/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex @@ -12,6 +12,7 @@ defmodule Pleroma.Web.PleromaAPI.MascotController do plug(Pleroma.Web.ApiSpec.CastAndValidate) plug(OAuthScopesPlug, %{scopes: ["read:accounts"]} when action == :show) plug(OAuthScopesPlug, %{scopes: ["write:accounts"]} when action != :show) + plug(Majic.Plug, [pool: Pleroma.MajicPool] when action in [:update]) defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.PleromaMascotOperation @@ -22,14 +23,15 @@ def show(%{assigns: %{user: user}} = conn, _params) do @doc "PUT /api/v1/pleroma/mascot" def update(%{assigns: %{user: user}, body_params: %{file: file}} = conn, _) do - with {:ok, object} <- ActivityPub.upload(file, actor: User.ap_id(user)), - # Reject if not an image - %{type: "image"} = attachment <- render_attachment(object) do + with {:content_type, "image" <> _} <- {:content_type, file.content_type}, + {:ok, object} <- ActivityPub.upload(file, actor: User.ap_id(user)) do + attachment = render_attachment(object) {:ok, _user} = User.mascot_update(user, attachment) json(conn, attachment) else - %{type: _} -> render_error(conn, :unsupported_media_type, "mascots can only be images") + {:content_type, _} -> + render_error(conn, :unsupported_media_type, "mascots can only be images") end end diff --git a/mix.exs b/mix.exs index 2d7e16e94..8fcbaa34e 100644 --- a/mix.exs +++ b/mix.exs @@ -197,7 +197,7 @@ defp deps do ref: "e0f16822d578866e186a0974d65ad58cddc1e2ab"}, {:mox, "~> 0.5", only: :test}, {:restarter, path: "./restarter"}, - {:gen_magic, git: "https://github.com/hrefhref/gen_magic", branch: "develop"}, + {:majic, git: "https://github.com/hrefhref/majic", branch: "develop"}, {:open_api_spex, git: "https://git.pleroma.social/pleroma/elixir-libraries/open_api_spex.git", ref: "f296ac0924ba3cf79c7a588c4c252889df4c2edd"} diff --git a/mix.lock b/mix.lock index 7b7f3c934..8ff41ebf6 100644 --- a/mix.lock +++ b/mix.lock @@ -63,6 +63,7 @@ "jose": {:hex, :jose, "1.10.1", "16d8e460dae7203c6d1efa3f277e25b5af8b659febfc2f2eb4bacf87f128b80a", [:mix, :rebar3], [], "hexpm", "3c7ddc8a9394b92891db7c2771da94bf819834a1a4c92e30857b7d582e2f8257"}, "jumper": {:hex, :jumper, "1.0.1", "3c00542ef1a83532b72269fab9f0f0c82bf23a35e27d278bfd9ed0865cecabff", [:mix], [], "hexpm", "318c59078ac220e966d27af3646026db9b5a5e6703cb2aa3e26bcfaba65b7433"}, "libring": {:hex, :libring, "1.4.0", "41246ba2f3fbc76b3971f6bce83119dfec1eee17e977a48d8a9cfaaf58c2a8d6", [:mix], [], "hexpm"}, + "majic": {:git, "https://github.com/hrefhref/majic", "1c723300364cd014866c6c1bd5260e03965865a2", [branch: "develop"]}, "makeup": {:hex, :makeup, "1.0.0", "671df94cf5a594b739ce03b0d0316aa64312cee2574b6a44becb83cd90fb05dc", [:mix], [{:nimble_parsec, "~> 0.5.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "a10c6eb62cca416019663129699769f0c2ccf39428b3bb3c0cb38c718a0c186d"}, "makeup_elixir": {:hex, :makeup_elixir, "0.14.0", "cf8b7c66ad1cff4c14679698d532f0b5d45a3968ffbcbfd590339cb57742f1ae", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "d4b316c7222a85bbaa2fd7c6e90e37e953257ad196dc229505137c5e505e9eff"}, "meck": {:hex, :meck, "0.8.13", "ffedb39f99b0b99703b8601c6f17c7f76313ee12de6b646e671e3188401f7866", [:rebar3], [], "hexpm", "d34f013c156db51ad57cc556891b9720e6a1c1df5fe2e15af999c84d6cebeb1a"}, diff --git a/test/upload_test.exs b/test/upload_test.exs index 2abf0edec..c7ad177d9 100644 --- a/test/upload_test.exs +++ b/test/upload_test.exs @@ -11,7 +11,7 @@ defmodule Pleroma.UploadTest do alias Pleroma.Uploaders.Uploader @upload_file %Plug.Upload{ - content_type: "image/jpg", + content_type: "image/jpeg", path: Path.absname("test/fixtures/image_tmp.jpg"), filename: "image.jpg" } @@ -111,7 +111,7 @@ test "returns a media url" do File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") file = %Plug.Upload{ - content_type: "image/jpg", + content_type: "image/jpeg", path: Path.absname("test/fixtures/image_tmp.jpg"), filename: "image.jpg" } @@ -127,7 +127,7 @@ test "copies the file to the configured folder with deduping" do File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") file = %Plug.Upload{ - content_type: "image/jpg", + content_type: "image/jpeg", path: Path.absname("test/fixtures/image_tmp.jpg"), filename: "an [image.jpg" } @@ -143,7 +143,7 @@ test "copies the file to the configured folder without deduping" do File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") file = %Plug.Upload{ - content_type: "image/jpg", + content_type: "image/jpeg", path: Path.absname("test/fixtures/image_tmp.jpg"), filename: "an [image.jpg" } @@ -152,63 +152,31 @@ test "copies the file to the configured folder without deduping" do assert data["name"] == "an [image.jpg" end - test "fixes incorrect content type" do - File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") - - file = %Plug.Upload{ - content_type: "application/octet-stream", - path: Path.absname("test/fixtures/image_tmp.jpg"), - filename: "an [image.jpg" + test "fixes incorrect content type when base64 is given" do + params = %{ + img: "data:image/png;base64,#{Base.encode64(File.read!("test/fixtures/image.jpg"))}" } - {:ok, data} = Upload.store(file, filters: [Pleroma.Upload.Filter.Dedupe]) + {:ok, data} = Upload.store(params) assert hd(data["url"])["mediaType"] == "image/jpeg" end - test "adds missing extension" do + test "adds extension when base64 is given" do File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") - file = %Plug.Upload{ - content_type: "image/jpg", - path: Path.absname("test/fixtures/image_tmp.jpg"), - filename: "an [image" + params = %{ + img: "data:image/png;base64,#{Base.encode64(File.read!("test/fixtures/image.jpg"))}" } - {:ok, data} = Upload.store(file) - assert data["name"] == "an [image.jpg" - end - - test "fixes incorrect file extension" do - File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") - - file = %Plug.Upload{ - content_type: "image/jpg", - path: Path.absname("test/fixtures/image_tmp.jpg"), - filename: "an [image.blah" - } - - {:ok, data} = Upload.store(file) - assert data["name"] == "an [image.jpg" - end - - test "don't modify filename of an unknown type" do - File.cp("test/fixtures/test.txt", "test/fixtures/test_tmp.txt") - - file = %Plug.Upload{ - content_type: "text/plain", - path: Path.absname("test/fixtures/test_tmp.txt"), - filename: "test.txt" - } - - {:ok, data} = Upload.store(file) - assert data["name"] == "test.txt" + {:ok, data} = Upload.store(params) + assert String.ends_with?(data["name"], ".jpg") end test "copies the file to the configured folder with anonymizing filename" do File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") file = %Plug.Upload{ - content_type: "image/jpg", + content_type: "image/jpeg", path: Path.absname("test/fixtures/image_tmp.jpg"), filename: "an [image.jpg" } @@ -222,7 +190,7 @@ test "escapes invalid characters in url" do File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") file = %Plug.Upload{ - content_type: "image/jpg", + content_type: "image/jpeg", path: Path.absname("test/fixtures/image_tmp.jpg"), filename: "an… image.jpg" } @@ -237,7 +205,7 @@ test "escapes reserved uri characters" do File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") file = %Plug.Upload{ - content_type: "image/jpg", + content_type: "image/jpeg", path: Path.absname("test/fixtures/image_tmp.jpg"), filename: ":?#[]@!$&\\'()*+,;=.jpg" } @@ -259,7 +227,7 @@ test "returns a media url with configured base_url" do File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") file = %Plug.Upload{ - content_type: "image/jpg", + content_type: "image/jpeg", path: Path.absname("test/fixtures/image_tmp.jpg"), filename: "image.jpg" } diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index e490a5744..8c6ee68b2 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -1428,9 +1428,9 @@ test "POST /api/ap/upload_media", %{conn: conn} do desc = "Description of the image" image = %Plug.Upload{ - content_type: "image/jpg", + content_type: "bad/content-type", path: Path.absname("test/fixtures/image.jpg"), - filename: "an_image.jpg" + filename: "an_image.png" } object = @@ -1445,6 +1445,7 @@ test "POST /api/ap/upload_media", %{conn: conn} do assert [%{"href" => object_href, "mediaType" => object_mediatype}] = object["url"] assert is_binary(object_href) assert object_mediatype == "image/jpeg" + assert String.ends_with?(object_href, ".jpg") activity_request = %{ "@context" => "https://www.w3.org/ns/activitystreams", diff --git a/test/web/activity_pub/object_validator_test.exs b/test/web/activity_pub/object_validator_test.exs index 31224abe0..ee1e1bcfe 100644 --- a/test/web/activity_pub/object_validator_test.exs +++ b/test/web/activity_pub/object_validator_test.exs @@ -58,7 +58,7 @@ test "it handles our own uploads" do user = insert(:user) file = %Plug.Upload{ - content_type: "image/jpg", + content_type: "image/jpeg", path: Path.absname("test/fixtures/image.jpg"), filename: "an_image.jpg" } From 39f7fc5b8ef781c98136d1f9be50a14bff394233 Mon Sep 17 00:00:00 2001 From: href Date: Tue, 16 Jun 2020 19:00:54 +0200 Subject: [PATCH 010/460] Update majic & call plug before OpenApiSpex --- .../web/mastodon_api/controllers/media_controller.ex | 2 +- .../web/pleroma_api/controllers/account_controller.ex | 10 +++++----- .../web/pleroma_api/controllers/mascot_controller.ex | 2 +- mix.lock | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/pleroma/web/mastodon_api/controllers/media_controller.ex b/lib/pleroma/web/mastodon_api/controllers/media_controller.ex index 06bb718ef..09acea7f4 100644 --- a/lib/pleroma/web/mastodon_api/controllers/media_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/media_controller.ex @@ -11,12 +11,12 @@ defmodule Pleroma.Web.MastodonAPI.MediaController do alias Pleroma.Web.ActivityPub.ActivityPub action_fallback(Pleroma.Web.MastodonAPI.FallbackController) + plug(Majic.Plug, [pool: Pleroma.MajicPool] when action in [:create, :create2]) plug(Pleroma.Web.ApiSpec.CastAndValidate) plug(:put_view, Pleroma.Web.MastodonAPI.StatusView) plug(OAuthScopesPlug, %{scopes: ["read:media"]} when action == :show) plug(OAuthScopesPlug, %{scopes: ["write:media"]} when action != :show) - plug(Majic.Plug, [pool: Pleroma.MajicPool] when action in [:create, :create2]) defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.MediaOperation diff --git a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex index 97a6ae60d..c76cbfc48 100644 --- a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex @@ -18,6 +18,11 @@ defmodule Pleroma.Web.PleromaAPI.AccountController do require Pleroma.Constants + plug( + Majic.Plug, + [pool: Pleroma.MajicPool] when action in [:update_avatar, :update_background, :update_banner] + ) + plug( OpenApiSpex.Plug.PutApiSpec, [module: Pleroma.Web.ApiSpec] when action == :confirmation_resend @@ -56,11 +61,6 @@ defmodule Pleroma.Web.PleromaAPI.AccountController do plug(:assign_account_by_id when action in [:favourites, :subscribe, :unsubscribe]) plug(:put_view, Pleroma.Web.MastodonAPI.AccountView) - plug( - Majic.Plug, - [pool: Pleroma.MajicPool] when action in [:update_avatar, :update_background, :update_banner] - ) - defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.PleromaAccountOperation @doc "POST /api/v1/pleroma/accounts/confirmation_resend" diff --git a/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex b/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex index 4ba4154dd..7e2f6c328 100644 --- a/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex @@ -9,10 +9,10 @@ defmodule Pleroma.Web.PleromaAPI.MascotController do alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub + plug(Majic.Plug, [pool: Pleroma.MajicPool] when action in [:update]) plug(Pleroma.Web.ApiSpec.CastAndValidate) plug(OAuthScopesPlug, %{scopes: ["read:accounts"]} when action == :show) plug(OAuthScopesPlug, %{scopes: ["write:accounts"]} when action != :show) - plug(Majic.Plug, [pool: Pleroma.MajicPool] when action in [:update]) defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.PleromaMascotOperation diff --git a/mix.lock b/mix.lock index 8ff41ebf6..b69f7eb8e 100644 --- a/mix.lock +++ b/mix.lock @@ -63,7 +63,7 @@ "jose": {:hex, :jose, "1.10.1", "16d8e460dae7203c6d1efa3f277e25b5af8b659febfc2f2eb4bacf87f128b80a", [:mix, :rebar3], [], "hexpm", "3c7ddc8a9394b92891db7c2771da94bf819834a1a4c92e30857b7d582e2f8257"}, "jumper": {:hex, :jumper, "1.0.1", "3c00542ef1a83532b72269fab9f0f0c82bf23a35e27d278bfd9ed0865cecabff", [:mix], [], "hexpm", "318c59078ac220e966d27af3646026db9b5a5e6703cb2aa3e26bcfaba65b7433"}, "libring": {:hex, :libring, "1.4.0", "41246ba2f3fbc76b3971f6bce83119dfec1eee17e977a48d8a9cfaaf58c2a8d6", [:mix], [], "hexpm"}, - "majic": {:git, "https://github.com/hrefhref/majic", "1c723300364cd014866c6c1bd5260e03965865a2", [branch: "develop"]}, + "majic": {:git, "https://github.com/hrefhref/majic", "91a10cfa0c902eb889584238a3ef5aa595c21ef8", [branch: "develop"]}, "makeup": {:hex, :makeup, "1.0.0", "671df94cf5a594b739ce03b0d0316aa64312cee2574b6a44becb83cd90fb05dc", [:mix], [{:nimble_parsec, "~> 0.5.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "a10c6eb62cca416019663129699769f0c2ccf39428b3bb3c0cb38c718a0c186d"}, "makeup_elixir": {:hex, :makeup_elixir, "0.14.0", "cf8b7c66ad1cff4c14679698d532f0b5d45a3968ffbcbfd590339cb57742f1ae", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "d4b316c7222a85bbaa2fd7c6e90e37e953257ad196dc229505137c5e505e9eff"}, "meck": {:hex, :meck, "0.8.13", "ffedb39f99b0b99703b8601c6f17c7f76313ee12de6b646e671e3188401f7866", [:rebar3], [], "hexpm", "d34f013c156db51ad57cc556891b9720e6a1c1df5fe2e15af999c84d6cebeb1a"}, From 9faa63203717e71d666afb6755ff0b781b491823 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Sun, 5 Jul 2020 19:02:43 +0300 Subject: [PATCH 011/460] [#2497] Fixed merge issue. --- lib/pleroma/web/media_proxy/media_proxy_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 0f4575e2f..583c177f2 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -12,8 +12,8 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do def remote(conn, %{"sig" => sig64, "url" => url64}) do with {_, true} <- {:enabled, MediaProxy.enabled?()}, - {_, false} <- {:in_banned_urls, MediaProxy.in_banned_urls(url)}, {:ok, url} <- MediaProxy.decode_url(sig64, url64), + {_, false} <- {:in_banned_urls, MediaProxy.in_banned_urls(url)}, :ok <- MediaProxy.verify_request_path_and_url(conn, url) do proxy_opts = Config.get([:media_proxy, :proxy_opts], []) ReverseProxy.call(conn, url, proxy_opts) From b8021016ebef23903c59e5140d4efb456a84a347 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Tue, 21 Jul 2020 20:03:14 +0300 Subject: [PATCH 012/460] [#2497] Resolved merge conflicts. --- .../media_proxy_controller_test.exs | 39 ------------------- test/web/media_proxy/media_proxy_test.exs | 24 ++++-------- 2 files changed, 7 insertions(+), 56 deletions(-) diff --git a/test/web/media_proxy/media_proxy_controller_test.exs b/test/web/media_proxy/media_proxy_controller_test.exs index d4db44c63..0cda1e0b0 100644 --- a/test/web/media_proxy/media_proxy_controller_test.exs +++ b/test/web/media_proxy/media_proxy_controller_test.exs @@ -79,43 +79,4 @@ test "it returns 404 when url is in banned_urls cache", %{conn: conn, url: url} end end end - - describe "filename_matches/3" do - test "preserves the encoded or decoded path" do - assert MediaProxyController.filename_matches( - %{"filename" => "/Hello world.jpg"}, - "/Hello world.jpg", - "http://pleroma.social/Hello world.jpg" - ) == :ok - - assert MediaProxyController.filename_matches( - %{"filename" => "/Hello%20world.jpg"}, - "/Hello%20world.jpg", - "http://pleroma.social/Hello%20world.jpg" - ) == :ok - - assert MediaProxyController.filename_matches( - %{"filename" => "/my%2Flong%2Furl%2F2019%2F07%2FS.jpg"}, - "/my%2Flong%2Furl%2F2019%2F07%2FS.jpg", - "http://pleroma.social/my%2Flong%2Furl%2F2019%2F07%2FS.jpg" - ) == :ok - - assert MediaProxyController.filename_matches( - %{"filename" => "/my%2Flong%2Furl%2F2019%2F07%2FS.jp"}, - "/my%2Flong%2Furl%2F2019%2F07%2FS.jp", - "http://pleroma.social/my%2Flong%2Furl%2F2019%2F07%2FS.jpg" - ) == {:wrong_filename, "my%2Flong%2Furl%2F2019%2F07%2FS.jpg"} - end - - test "encoded url are tried to match for proxy as `conn.request_path` encodes the url" do - # conn.request_path will return encoded url - request_path = "/ANALYSE-DAI-_-LE-STABLECOIN-100-D%C3%89CENTRALIS%C3%89-BQ.jpg" - - assert MediaProxyController.filename_matches( - true, - request_path, - "https://mydomain.com/uploads/2019/07/ANALYSE-DAI-_-LE-STABLECOIN-100-DÉCENTRALISÉ-BQ.jpg" - ) == :ok - end - end end diff --git a/test/web/media_proxy/media_proxy_test.exs b/test/web/media_proxy/media_proxy_test.exs index 06990464f..0e6df826c 100644 --- a/test/web/media_proxy/media_proxy_test.exs +++ b/test/web/media_proxy/media_proxy_test.exs @@ -126,6 +126,13 @@ test "`verify_request_path_and_url/2` preserves the encoded or decoded path" do :ok ) + test_verify_request_path_and_url( + # Note: `conn.request_path` returns encoded url + "/ANALYSE-DAI-_-LE-STABLECOIN-100-D%C3%89CENTRALIS%C3%89-BQ.jpg", + "https://mydomain.com/uploads/2019/07/ANALYSE-DAI-_-LE-STABLECOIN-100-DÉCENTRALISÉ-BQ.jpg", + :ok + ) + test_verify_request_path_and_url( "/my%2Flong%2Furl%2F2019%2F07%2FS", "http://pleroma.social/my%2Flong%2Furl%2F2019%2F07%2FS.jpg", @@ -133,17 +140,6 @@ test "`verify_request_path_and_url/2` preserves the encoded or decoded path" do ) end - test "encoded url are tried to match for proxy as `conn.request_path` encodes the url" do - # conn.request_path will return encoded url - request_path = "/ANALYSE-DAI-_-LE-STABLECOIN-100-D%C3%89CENTRALIS%C3%89-BQ.jpg" - - assert MediaProxy.verify_request_path_and_url( - request_path, - "https://mydomain.com/uploads/2019/07/ANALYSE-DAI-_-LE-STABLECOIN-100-DÉCENTRALISÉ-BQ.jpg" - ) == :ok - assert MediaProxy.decode_url(sig, base64) == {:error, :invalid_signature} - end - test "uses the configured base_url" do base_url = "https://cache.pleroma.social" clear_config([:media_proxy, :base_url], base_url) @@ -193,12 +189,6 @@ test "does not encode remote urls" do end end - defp decode_result(encoded) do - [_, "proxy", sig, base64 | _] = URI.parse(encoded).path |> String.split("/") - {:ok, decoded} = MediaProxy.decode_url(sig, base64) - decoded - end - describe "whitelist" do setup do: clear_config([:media_proxy, :enabled], true) From 56ddf20208657487bf0298409cf91b11dac346ff Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Fri, 7 Aug 2020 09:43:49 +0300 Subject: [PATCH 013/460] Removed unused alias. --- test/web/media_proxy/media_proxy_controller_test.exs | 1 - 1 file changed, 1 deletion(-) diff --git a/test/web/media_proxy/media_proxy_controller_test.exs b/test/web/media_proxy/media_proxy_controller_test.exs index 0cda1e0b0..0dd2fd10c 100644 --- a/test/web/media_proxy/media_proxy_controller_test.exs +++ b/test/web/media_proxy/media_proxy_controller_test.exs @@ -8,7 +8,6 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyControllerTest do import Mock alias Pleroma.Web.MediaProxy - alias Pleroma.Web.MediaProxy.MediaProxyController alias Plug.Conn setup do From da116d81fb0028913c2a0f30ac35532fb500e8fc Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Tue, 18 Aug 2020 18:23:27 +0300 Subject: [PATCH 014/460] [#2497] Added video preview proxy. Switched from exexec to Port. --- .gitlab-ci.yml | 2 - config/config.exs | 4 -- lib/pleroma/exec.ex | 38 -------------- lib/pleroma/helpers/media_helper.ex | 19 ++++--- .../web/media_proxy/media_proxy_controller.ex | 50 +++++++++++-------- mix.exs | 2 - mix.lock | 2 - test/exec_test.exs | 13 ----- 8 files changed, 41 insertions(+), 89 deletions(-) delete mode 100644 lib/pleroma/exec.ex delete mode 100644 test/exec_test.exs diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3b6877039..9e9107ce3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,8 +6,6 @@ variables: &global_variables POSTGRES_PASSWORD: postgres DB_HOST: postgres MIX_ENV: test - SHELL: /bin/sh - USER: root cache: &global_cache_policy key: ${CI_COMMIT_REF_SLUG} diff --git a/config/config.exs b/config/config.exs index ab4508ccf..029f8ec20 100644 --- a/config/config.exs +++ b/config/config.exs @@ -761,10 +761,6 @@ config :pleroma, Pleroma.Web.Auth.Authenticator, Pleroma.Web.Auth.PleromaAuthenticator -config :pleroma, :exexec, - root_mode: false, - options: %{} - # Import environment specific config. This must remain at the bottom # of this file so it overrides the configuration defined above. import_config "#{Mix.env()}.exs" diff --git a/lib/pleroma/exec.ex b/lib/pleroma/exec.ex deleted file mode 100644 index 1b088d322..000000000 --- a/lib/pleroma/exec.ex +++ /dev/null @@ -1,38 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Exec do - @moduledoc "Pleroma wrapper around Exexec commands." - - alias Pleroma.Config - - def ensure_started(options_overrides \\ %{}) do - options = - if Config.get([:exexec, :root_mode]) || System.get_env("USER") == "root" do - # Note: running as `root` is discouraged (yet Gitlab CI does that by default) - %{root: true, user: "root", limit_users: ["root"]} - else - %{} - end - - options = - options - |> Map.merge(Config.get([:exexec, :options], %{})) - |> Map.merge(options_overrides) - - with {:error, {:already_started, pid}} <- Exexec.start(options) do - {:ok, pid} - end - end - - def run(cmd, options \\ %{}) do - ensure_started() - Exexec.run(cmd, options) - end - - def cmd(cmd, options \\ %{}) do - options = Map.merge(%{sync: true, stdout: true}, options) - run(cmd, options) - end -end diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index ecd234558..ca46698cc 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -7,19 +7,24 @@ defmodule Pleroma.Helpers.MediaHelper do Handles common media-related operations. """ - def ffmpeg_resize_remote(uri, %{max_width: max_width, max_height: max_height}) do + def ffmpeg_resize(uri_or_path, %{max_width: max_width, max_height: max_height}) do cmd = ~s""" - curl -L "#{uri}" | - ffmpeg -i pipe:0 -f lavfi -i color=c=white \ + ffmpeg -i #{uri_or_path} -f lavfi -i color=c=white \ -filter_complex "[0:v] scale='min(#{max_width},iw)':'min(#{max_height},ih)': \ force_original_aspect_ratio=decrease [scaled]; \ [1][scaled] scale2ref [bg][img]; [bg] setsar=1 [bg]; [bg][img] overlay=shortest=1" \ - -f image2 -vcodec mjpeg -frames:v 1 pipe:1 | \ - cat + -loglevel quiet -f image2 -vcodec mjpeg -frames:v 1 pipe:1 """ - with {:ok, [stdout: stdout_list]} <- Pleroma.Exec.cmd(cmd) do - {:ok, Enum.join(stdout_list)} + pid = Port.open({:spawn, cmd}, [:use_stdio, :in, :stream, :exit_status, :binary]) + + receive do + {^pid, {:data, data}} -> + send(pid, {self(), :close}) + {:ok, data} + + {^pid, {:exit_status, status}} when status > 0 -> + {:error, status} end end end diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 583c177f2..8861398dd 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -66,6 +66,35 @@ defp handle_preview(conn, url) do end end + defp handle_preview("image/" <> _ = _content_type, conn, url) do + handle_image_or_video_preview(conn, url) + end + + defp handle_preview("video/" <> _ = _content_type, conn, url) do + handle_image_or_video_preview(conn, url) + end + + defp handle_preview(content_type, conn, _url) do + send_resp(conn, :unprocessable_entity, "Unsupported content type: #{content_type}.") + end + + defp handle_image_or_video_preview(%{params: params} = conn, url) do + with {thumbnail_max_width, thumbnail_max_height} <- thumbnail_max_dimensions(params), + media_proxy_url <- MediaProxy.url(url), + {:ok, thumbnail_binary} <- + MediaHelper.ffmpeg_resize( + media_proxy_url, + %{max_width: thumbnail_max_width, max_height: thumbnail_max_height} + ) do + conn + |> put_resp_header("content-type", "image/jpeg") + |> send_resp(200, thumbnail_binary) + else + _ -> + send_resp(conn, :failed_dependency, "Can't handle preview.") + end + end + defp thumbnail_max_dimensions(params) do config = Config.get([:media_preview_proxy], []) @@ -86,27 +115,6 @@ defp thumbnail_max_dimensions(params) do {thumbnail_max_width, thumbnail_max_height} end - defp handle_preview("image/" <> _ = _content_type, %{params: params} = conn, url) do - with {thumbnail_max_width, thumbnail_max_height} <- thumbnail_max_dimensions(params), - media_proxy_url <- MediaProxy.url(url), - {:ok, thumbnail_binary} <- - MediaHelper.ffmpeg_resize_remote( - media_proxy_url, - %{max_width: thumbnail_max_width, max_height: thumbnail_max_height} - ) do - conn - |> put_resp_header("content-type", "image/jpeg") - |> send_resp(200, thumbnail_binary) - else - _ -> - send_resp(conn, :failed_dependency, "Can't handle image preview.") - end - end - - defp handle_preview(content_type, conn, _url) do - send_resp(conn, :unprocessable_entity, "Unsupported content type: #{content_type}.") - end - defp preview_head_request_timeout do Config.get([:media_preview_proxy, :proxy_opts, :head_request_max_read_duration]) || preview_timeout() diff --git a/mix.exs b/mix.exs index 33c4411c4..11fdb1670 100644 --- a/mix.exs +++ b/mix.exs @@ -186,8 +186,6 @@ defp deps do git: "https://git.pleroma.social/pleroma/elixir-libraries/elixir-captcha.git", ref: "e0f16822d578866e186a0974d65ad58cddc1e2ab"}, {:restarter, path: "./restarter"}, - # Note: `runtime: true` for :exexec makes CI fail due to `root` user (see Pleroma.Exec) - {:exexec, "~> 0.2", runtime: false}, {:open_api_spex, git: "https://git.pleroma.social/pleroma/elixir-libraries/open_api_spex.git", ref: "f296ac0924ba3cf79c7a588c4c252889df4c2edd"}, diff --git a/mix.lock b/mix.lock index f5acc89eb..553ac304a 100644 --- a/mix.lock +++ b/mix.lock @@ -33,7 +33,6 @@ "ecto_sql": {:hex, :ecto_sql, "3.4.5", "30161f81b167d561a9a2df4329c10ae05ff36eca7ccc84628f2c8b9fa1e43323", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.4.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.3.0 or ~> 0.4.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.0", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "31990c6a3579b36a3c0841d34a94c275e727de8b84f58509da5f1b2032c98ac2"}, "eimp": {:hex, :eimp, "1.0.14", "fc297f0c7e2700457a95a60c7010a5f1dcb768a083b6d53f49cd94ab95a28f22", [:rebar3], [{:p1_utils, "1.0.18", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "501133f3112079b92d9e22da8b88bf4f0e13d4d67ae9c15c42c30bd25ceb83b6"}, "elixir_make": {:hex, :elixir_make, "0.6.0", "38349f3e29aff4864352084fc736fa7fa0f2995a819a737554f7ebd28b85aaab", [:mix], [], "hexpm", "d522695b93b7f0b4c0fcb2dfe73a6b905b1c301226a5a55cb42e5b14d509e050"}, - "erlexec": {:hex, :erlexec, "1.10.9", "3cbb3476f942bfb8b68b85721c21c1835061cf6dd35f5285c2362e85b100ddc7", [:rebar3], [], "hexpm", "271e5b5f2d91cdb9887efe74d89026c199bfc69f074cade0d08dab60993fa14e"}, "esshd": {:hex, :esshd, "0.1.1", "d4dd4c46698093a40a56afecce8a46e246eb35463c457c246dacba2e056f31b5", [:mix], [], "hexpm", "d73e341e3009d390aa36387dc8862860bf9f874c94d9fd92ade2926376f49981"}, "eternal": {:hex, :eternal, "1.2.1", "d5b6b2499ba876c57be2581b5b999ee9bdf861c647401066d3eeed111d096bc4", [:mix], [], "hexpm", "b14f1dc204321429479c569cfbe8fb287541184ed040956c8862cb7a677b8406"}, "ex2ms": {:hex, :ex2ms, "1.5.0", "19e27f9212be9a96093fed8cdfbef0a2b56c21237196d26760f11dfcfae58e97", [:mix], [], "hexpm"}, @@ -44,7 +43,6 @@ "ex_machina": {:hex, :ex_machina, "2.4.0", "09a34c5d371bfb5f78399029194a8ff67aff340ebe8ba19040181af35315eabb", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm", "a20bc9ddc721b33ea913b93666c5d0bdca5cbad7a67540784ae277228832d72c"}, "ex_syslogger": {:hex, :ex_syslogger, "1.5.2", "72b6aa2d47a236e999171f2e1ec18698740f40af0bd02c8c650bf5f1fd1bac79", [:mix], [{:poison, ">= 1.5.0", [hex: :poison, repo: "hexpm", optional: true]}, {:syslog, "~> 1.1.0", [hex: :syslog, repo: "hexpm", optional: false]}], "hexpm", "ab9fab4136dbc62651ec6f16fa4842f10cf02ab4433fa3d0976c01be99398399"}, "excoveralls": {:hex, :excoveralls, "0.13.1", "b9f1697f7c9e0cfe15d1a1d737fb169c398803ffcbc57e672aa007e9fd42864c", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "b4bb550e045def1b4d531a37fb766cbbe1307f7628bf8f0414168b3f52021cce"}, - "exexec": {:hex, :exexec, "0.2.0", "a6ffc48cba3ac9420891b847e4dc7120692fb8c08c9e82220ebddc0bb8d96103", [:mix], [{:erlexec, "~> 1.10", [hex: :erlexec, repo: "hexpm", optional: false]}], "hexpm", "312cd1c9befba9e078e57f3541e4f4257eabda6eb9c348154fe899d6ac633299"}, "fast_html": {:hex, :fast_html, "2.0.1", "e126c74d287768ae78c48938da6711164517300d108a78f8a38993df8d588335", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "bdd6f8525c95ad391a4f10d9a1b3da4cea94078ec8638487aa8c24015ad9393a"}, "fast_sanitize": {:hex, :fast_sanitize, "0.2.0", "004b40d5bbecda182b6fdba762a51fffd3501e689e8eafe196e1a97eb0caf733", [:mix], [{:fast_html, "~> 2.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "11fcb37f26d272a3a2aff861872bf100be4eeacea69505908b8cdbcea5b0813a"}, "flake_id": {:hex, :flake_id, "0.1.0", "7716b086d2e405d09b647121a166498a0d93d1a623bead243e1f74216079ccb3", [:mix], [{:base62, "~> 1.2", [hex: :base62, repo: "hexpm", optional: false]}, {:ecto, ">= 2.0.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "31fc8090fde1acd267c07c36ea7365b8604055f897d3a53dd967658c691bd827"}, diff --git a/test/exec_test.exs b/test/exec_test.exs deleted file mode 100644 index 45d3f778f..000000000 --- a/test/exec_test.exs +++ /dev/null @@ -1,13 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.ExecTest do - alias Pleroma.Exec - - use Pleroma.DataCase - - test "it starts" do - assert {:ok, _} = Exec.ensure_started() - end -end From 7794d7c694110543998ee1fb278c68babda37301 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Wed, 19 Aug 2020 06:50:20 +0300 Subject: [PATCH 015/460] added Pleroma.Web.PleromaAPI.EmojiFileController --- .../pleroma_emoji_file_operation.ex | 133 ++++++++ .../pleroma_emoji_pack_operation.ex | 105 ------ .../controllers/emoji_file_controller.ex | 122 +++++++ .../controllers/emoji_pack_controller.ex | 107 +----- lib/pleroma/web/router.ex | 6 +- .../emoji_file_controller_test.exs | 318 ++++++++++++++++++ .../emoji_pack_controller_test.exs | 287 ---------------- 7 files changed, 577 insertions(+), 501 deletions(-) create mode 100644 lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex create mode 100644 lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex create mode 100644 test/web/pleroma_api/controllers/emoji_file_controller_test.exs diff --git a/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex new file mode 100644 index 000000000..b6932157a --- /dev/null +++ b/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex @@ -0,0 +1,133 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.PleromaEmojiFileOperation do + alias OpenApiSpex.Operation + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.ApiError + + import Pleroma.Web.ApiSpec.Helpers + + def open_api_operation(action) do + operation = String.to_existing_atom("#{action}_operation") + apply(__MODULE__, operation, []) + end + + def create_operation do + %Operation{ + tags: ["Emoji Packs"], + summary: "Add new file to the pack", + operationId: "PleromaAPI.EmojiPackController.add_file", + security: [%{"oAuth" => ["write"]}], + requestBody: request_body("Parameters", create_request(), required: true), + parameters: [name_param()], + responses: %{ + 200 => Operation.response("Files Object", "application/json", files_object()), + 400 => Operation.response("Bad Request", "application/json", ApiError), + 409 => Operation.response("Conflict", "application/json", ApiError) + } + } + end + + defp create_request do + %Schema{ + type: :object, + required: [:file], + properties: %{ + file: %Schema{ + description: + "File needs to be uploaded with the multipart request or link to remote file", + anyOf: [ + %Schema{type: :string, format: :binary}, + %Schema{type: :string, format: :uri} + ] + }, + shortcode: %Schema{ + type: :string, + description: + "Shortcode for new emoji, must be unique for all emoji. If not sended, shortcode will be taken from original filename." + }, + filename: %Schema{ + type: :string, + description: + "New emoji file name. If not specified will be taken from original filename." + } + } + } + end + + def update_operation do + %Operation{ + tags: ["Emoji Packs"], + summary: "Add new file to the pack", + operationId: "PleromaAPI.EmojiPackController.update_file", + security: [%{"oAuth" => ["write"]}], + requestBody: request_body("Parameters", update_request(), required: true), + parameters: [name_param()], + responses: %{ + 200 => Operation.response("Files Object", "application/json", files_object()), + 400 => Operation.response("Bad Request", "application/json", ApiError), + 409 => Operation.response("Conflict", "application/json", ApiError) + } + } + end + + defp update_request do + %Schema{ + type: :object, + required: [:shortcode, :new_shortcode, :new_filename], + properties: %{ + shortcode: %Schema{ + type: :string, + description: "Emoji file shortcode" + }, + new_shortcode: %Schema{ + type: :string, + description: "New emoji file shortcode" + }, + new_filename: %Schema{ + type: :string, + description: "New filename for emoji file" + }, + force: %Schema{ + type: :boolean, + description: "With true value to overwrite existing emoji with new shortcode", + default: false + } + } + } + end + + def delete_operation do + %Operation{ + tags: ["Emoji Packs"], + summary: "Delete emoji file from pack", + operationId: "PleromaAPI.EmojiPackController.delete_file", + security: [%{"oAuth" => ["write"]}], + parameters: [ + name_param(), + Operation.parameter(:shortcode, :query, :string, "File shortcode", + example: "cofe", + required: true + ) + ], + responses: %{ + 200 => Operation.response("Files Object", "application/json", files_object()), + 400 => Operation.response("Bad Request", "application/json", ApiError) + } + } + end + + defp name_param do + Operation.parameter(:name, :path, :string, "Pack Name", example: "cofe", required: true) + end + + defp files_object do + %Schema{ + type: :object, + additionalProperties: %Schema{type: :string}, + description: "Object with emoji names as keys and filenames as values" + } + end +end diff --git a/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex index b2b4f8713..59548af13 100644 --- a/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex +++ b/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex @@ -175,111 +175,6 @@ def update_operation do } end - def add_file_operation do - %Operation{ - tags: ["Emoji Packs"], - summary: "Add new file to the pack", - operationId: "PleromaAPI.EmojiPackController.add_file", - security: [%{"oAuth" => ["write"]}], - requestBody: request_body("Parameters", add_file_request(), required: true), - parameters: [name_param()], - responses: %{ - 200 => Operation.response("Files Object", "application/json", files_object()), - 400 => Operation.response("Bad Request", "application/json", ApiError), - 409 => Operation.response("Conflict", "application/json", ApiError) - } - } - end - - defp add_file_request do - %Schema{ - type: :object, - required: [:file], - properties: %{ - file: %Schema{ - description: - "File needs to be uploaded with the multipart request or link to remote file", - anyOf: [ - %Schema{type: :string, format: :binary}, - %Schema{type: :string, format: :uri} - ] - }, - shortcode: %Schema{ - type: :string, - description: - "Shortcode for new emoji, must be unique for all emoji. If not sended, shortcode will be taken from original filename." - }, - filename: %Schema{ - type: :string, - description: - "New emoji file name. If not specified will be taken from original filename." - } - } - } - end - - def update_file_operation do - %Operation{ - tags: ["Emoji Packs"], - summary: "Add new file to the pack", - operationId: "PleromaAPI.EmojiPackController.update_file", - security: [%{"oAuth" => ["write"]}], - requestBody: request_body("Parameters", update_file_request(), required: true), - parameters: [name_param()], - responses: %{ - 200 => Operation.response("Files Object", "application/json", files_object()), - 400 => Operation.response("Bad Request", "application/json", ApiError), - 409 => Operation.response("Conflict", "application/json", ApiError) - } - } - end - - defp update_file_request do - %Schema{ - type: :object, - required: [:shortcode, :new_shortcode, :new_filename], - properties: %{ - shortcode: %Schema{ - type: :string, - description: "Emoji file shortcode" - }, - new_shortcode: %Schema{ - type: :string, - description: "New emoji file shortcode" - }, - new_filename: %Schema{ - type: :string, - description: "New filename for emoji file" - }, - force: %Schema{ - type: :boolean, - description: "With true value to overwrite existing emoji with new shortcode", - default: false - } - } - } - end - - def delete_file_operation do - %Operation{ - tags: ["Emoji Packs"], - summary: "Delete emoji file from pack", - operationId: "PleromaAPI.EmojiPackController.delete_file", - security: [%{"oAuth" => ["write"]}], - parameters: [ - name_param(), - Operation.parameter(:shortcode, :query, :string, "File shortcode", - example: "cofe", - required: true - ) - ], - responses: %{ - 200 => Operation.response("Files Object", "application/json", files_object()), - 400 => Operation.response("Bad Request", "application/json", ApiError) - } - } - end - def import_from_filesystem_operation do %Operation{ tags: ["Emoji Packs"], diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex new file mode 100644 index 000000000..ba9f07795 --- /dev/null +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex @@ -0,0 +1,122 @@ +defmodule Pleroma.Web.PleromaAPI.EmojiFileController do + use Pleroma.Web, :controller + + alias Pleroma.Emoji.Pack + alias Pleroma.Web.ApiSpec + + plug(Pleroma.Web.ApiSpec.CastAndValidate) + + plug( + Pleroma.Plugs.OAuthScopesPlug, + %{scopes: ["write"], admin: true} + when action in [ + :create, + :update, + :delete + ] + ) + + defdelegate open_api_operation(action), to: ApiSpec.PleromaEmojiFileOperation + + def create(%{body_params: params} = conn, %{name: pack_name}) do + filename = params[:filename] || get_filename(params[:file]) + shortcode = params[:shortcode] || Path.basename(filename, Path.extname(filename)) + + with {:ok, pack} <- Pack.add_file(pack_name, shortcode, filename, params[:file]) do + json(conn, pack.files) + else + {:error, :already_exists} -> + conn + |> put_status(:conflict) + |> json(%{error: "An emoji with the \"#{shortcode}\" shortcode already exists"}) + + {:error, :not_found} -> + conn + |> put_status(:bad_request) + |> json(%{error: "pack \"#{pack_name}\" is not found"}) + + {:error, :empty_values} -> + conn + |> put_status(:bad_request) + |> json(%{error: "pack name, shortcode or filename cannot be empty"}) + + {:error, _} -> + render_error( + conn, + :internal_server_error, + "Unexpected error occurred while adding file to pack." + ) + end + end + + def update(%{body_params: %{shortcode: shortcode} = params} = conn, %{name: pack_name}) do + new_shortcode = params[:new_shortcode] + new_filename = params[:new_filename] + force = params[:force] + + with {:ok, pack} <- Pack.update_file(pack_name, shortcode, new_shortcode, new_filename, force) do + json(conn, pack.files) + else + {:error, :doesnt_exist} -> + conn + |> put_status(:bad_request) + |> json(%{error: "Emoji \"#{shortcode}\" does not exist"}) + + {:error, :already_exists} -> + conn + |> put_status(:conflict) + |> json(%{ + error: + "New shortcode \"#{new_shortcode}\" is already used. If you want to override emoji use 'force' option" + }) + + {:error, :not_found} -> + conn + |> put_status(:bad_request) + |> json(%{error: "pack \"#{pack_name}\" is not found"}) + + {:error, :empty_values} -> + conn + |> put_status(:bad_request) + |> json(%{error: "new_shortcode or new_filename cannot be empty"}) + + {:error, _} -> + render_error( + conn, + :internal_server_error, + "Unexpected error occurred while updating file in pack." + ) + end + end + + def delete(conn, %{name: pack_name, shortcode: shortcode}) do + with {:ok, pack} <- Pack.delete_file(pack_name, shortcode) do + json(conn, pack.files) + else + {:error, :doesnt_exist} -> + conn + |> put_status(:bad_request) + |> json(%{error: "Emoji \"#{shortcode}\" does not exist"}) + + {:error, :not_found} -> + conn + |> put_status(:bad_request) + |> json(%{error: "pack \"#{pack_name}\" is not found"}) + + {:error, :empty_values} -> + conn + |> put_status(:bad_request) + |> json(%{error: "pack name or shortcode cannot be empty"}) + + {:error, _} -> + render_error( + conn, + :internal_server_error, + "Unexpected error occurred while removing file from pack." + ) + end + end + + defp get_filename(%Plug.Upload{filename: filename}), do: filename + defp get_filename(url) when is_binary(url), do: Path.basename(url) +end diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex index 657f46324..e3969fee1 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex @@ -14,10 +14,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackController do :download, :create, :update, - :delete, - :add_file, - :update_file, - :delete_file + :delete ] ) @@ -184,105 +181,6 @@ def update(%{body_params: %{metadata: metadata}} = conn, %{name: name}) do end end - def add_file(%{body_params: params} = conn, %{name: name}) do - filename = params[:filename] || get_filename(params[:file]) - shortcode = params[:shortcode] || Path.basename(filename, Path.extname(filename)) - - with {:ok, pack} <- Pack.add_file(name, shortcode, filename, params[:file]) do - json(conn, pack.files) - else - {:error, :already_exists} -> - conn - |> put_status(:conflict) - |> json(%{error: "An emoji with the \"#{shortcode}\" shortcode already exists"}) - - {:error, :not_found} -> - conn - |> put_status(:bad_request) - |> json(%{error: "pack \"#{name}\" is not found"}) - - {:error, :empty_values} -> - conn - |> put_status(:bad_request) - |> json(%{error: "pack name, shortcode or filename cannot be empty"}) - - {:error, _} -> - render_error( - conn, - :internal_server_error, - "Unexpected error occurred while adding file to pack." - ) - end - end - - def update_file(%{body_params: %{shortcode: shortcode} = params} = conn, %{name: name}) do - new_shortcode = params[:new_shortcode] - new_filename = params[:new_filename] - force = params[:force] - - with {:ok, pack} <- Pack.update_file(name, shortcode, new_shortcode, new_filename, force) do - json(conn, pack.files) - else - {:error, :doesnt_exist} -> - conn - |> put_status(:bad_request) - |> json(%{error: "Emoji \"#{shortcode}\" does not exist"}) - - {:error, :already_exists} -> - conn - |> put_status(:conflict) - |> json(%{ - error: - "New shortcode \"#{new_shortcode}\" is already used. If you want to override emoji use 'force' option" - }) - - {:error, :not_found} -> - conn - |> put_status(:bad_request) - |> json(%{error: "pack \"#{name}\" is not found"}) - - {:error, :empty_values} -> - conn - |> put_status(:bad_request) - |> json(%{error: "new_shortcode or new_filename cannot be empty"}) - - {:error, _} -> - render_error( - conn, - :internal_server_error, - "Unexpected error occurred while updating file in pack." - ) - end - end - - def delete_file(conn, %{name: name, shortcode: shortcode}) do - with {:ok, pack} <- Pack.delete_file(name, shortcode) do - json(conn, pack.files) - else - {:error, :doesnt_exist} -> - conn - |> put_status(:bad_request) - |> json(%{error: "Emoji \"#{shortcode}\" does not exist"}) - - {:error, :not_found} -> - conn - |> put_status(:bad_request) - |> json(%{error: "pack \"#{name}\" is not found"}) - - {:error, :empty_values} -> - conn - |> put_status(:bad_request) - |> json(%{error: "pack name or shortcode cannot be empty"}) - - {:error, _} -> - render_error( - conn, - :internal_server_error, - "Unexpected error occurred while removing file from pack." - ) - end - end - def import_from_filesystem(conn, _params) do with {:ok, names} <- Pack.import_from_filesystem() do json(conn, names) @@ -298,7 +196,4 @@ def import_from_filesystem(conn, _params) do |> json(%{error: "Error accessing emoji pack directory"}) end end - - defp get_filename(%Plug.Upload{filename: filename}), do: filename - defp get_filename(url) when is_binary(url), do: Path.basename(url) end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index c6433cc53..8a307d591 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -229,9 +229,9 @@ defmodule Pleroma.Web.Router do patch("/:name", EmojiPackController, :update) delete("/:name", EmojiPackController, :delete) - post("/:name/files", EmojiPackController, :add_file) - patch("/:name/files", EmojiPackController, :update_file) - delete("/:name/files", EmojiPackController, :delete_file) + post("/:name/files", EmojiFileController, :create) + patch("/:name/files", EmojiFileController, :update) + delete("/:name/files", EmojiFileController, :delete) end # Pack info / downloading diff --git a/test/web/pleroma_api/controllers/emoji_file_controller_test.exs b/test/web/pleroma_api/controllers/emoji_file_controller_test.exs new file mode 100644 index 000000000..56be130be --- /dev/null +++ b/test/web/pleroma_api/controllers/emoji_file_controller_test.exs @@ -0,0 +1,318 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PleromaAPI.EmojiFileControllerTest do + use Pleroma.Web.ConnCase + + import Tesla.Mock + import Pleroma.Factory + + @emoji_path Path.join( + Pleroma.Config.get!([:instance, :static_dir]), + "emoji" + ) + setup do: clear_config([:auth, :enforce_oauth_admin_scope_usage], false) + + setup do: clear_config([:instance, :public], true) + + setup do + admin = insert(:user, is_admin: true) + token = insert(:oauth_admin_token, user: admin) + + admin_conn = + build_conn() + |> assign(:user, admin) + |> assign(:token, token) + + Pleroma.Emoji.reload() + {:ok, %{admin_conn: admin_conn}} + end + + describe "POST/PATCH/DELETE /api/pleroma/emoji/packs/:name/files" do + setup do + pack_file = "#{@emoji_path}/test_pack/pack.json" + original_content = File.read!(pack_file) + + on_exit(fn -> + File.write!(pack_file, original_content) + end) + + :ok + end + + test "create shortcode exists", %{admin_conn: admin_conn} do + assert admin_conn + |> put_req_header("content-type", "multipart/form-data") + |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank", + filename: "dir/blank.png", + file: %Plug.Upload{ + filename: "blank.png", + path: "#{@emoji_path}/test_pack/blank.png" + } + }) + |> json_response_and_validate_schema(:conflict) == %{ + "error" => "An emoji with the \"blank\" shortcode already exists" + } + end + + test "don't rewrite old emoji", %{admin_conn: admin_conn} do + on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir/") end) + + assert admin_conn + |> put_req_header("content-type", "multipart/form-data") + |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank3", + filename: "dir/blank.png", + file: %Plug.Upload{ + filename: "blank.png", + path: "#{@emoji_path}/test_pack/blank.png" + } + }) + |> json_response_and_validate_schema(200) == %{ + "blank" => "blank.png", + "blank2" => "blank2.png", + "blank3" => "dir/blank.png" + } + + assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") + + assert admin_conn + |> put_req_header("content-type", "multipart/form-data") + |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank", + new_shortcode: "blank2", + new_filename: "dir_2/blank_3.png" + }) + |> json_response_and_validate_schema(:conflict) == %{ + "error" => + "New shortcode \"blank2\" is already used. If you want to override emoji use 'force' option" + } + end + + test "rewrite old emoji with force option", %{admin_conn: admin_conn} do + on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir_2/") end) + + assert admin_conn + |> put_req_header("content-type", "multipart/form-data") + |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank3", + filename: "dir/blank.png", + file: %Plug.Upload{ + filename: "blank.png", + path: "#{@emoji_path}/test_pack/blank.png" + } + }) + |> json_response_and_validate_schema(200) == %{ + "blank" => "blank.png", + "blank2" => "blank2.png", + "blank3" => "dir/blank.png" + } + + assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") + + assert admin_conn + |> put_req_header("content-type", "multipart/form-data") + |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank3", + new_shortcode: "blank4", + new_filename: "dir_2/blank_3.png", + force: true + }) + |> json_response_and_validate_schema(200) == %{ + "blank" => "blank.png", + "blank2" => "blank2.png", + "blank4" => "dir_2/blank_3.png" + } + + assert File.exists?("#{@emoji_path}/test_pack/dir_2/blank_3.png") + end + + test "with empty filename", %{admin_conn: admin_conn} do + assert admin_conn + |> put_req_header("content-type", "multipart/form-data") + |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank2", + filename: "", + file: %Plug.Upload{ + filename: "blank.png", + path: "#{@emoji_path}/test_pack/blank.png" + } + }) + |> json_response_and_validate_schema(:bad_request) == %{ + "error" => "pack name, shortcode or filename cannot be empty" + } + end + + test "add file with not loaded pack", %{admin_conn: admin_conn} do + assert admin_conn + |> put_req_header("content-type", "multipart/form-data") + |> post("/api/pleroma/emoji/packs/not_loaded/files", %{ + shortcode: "blank3", + filename: "dir/blank.png", + file: %Plug.Upload{ + filename: "blank.png", + path: "#{@emoji_path}/test_pack/blank.png" + } + }) + |> json_response_and_validate_schema(:bad_request) == %{ + "error" => "pack \"not_loaded\" is not found" + } + end + + test "remove file with not loaded pack", %{admin_conn: admin_conn} do + assert admin_conn + |> delete("/api/pleroma/emoji/packs/not_loaded/files?shortcode=blank3") + |> json_response_and_validate_schema(:bad_request) == %{ + "error" => "pack \"not_loaded\" is not found" + } + end + + test "remove file with empty shortcode", %{admin_conn: admin_conn} do + assert admin_conn + |> delete("/api/pleroma/emoji/packs/not_loaded/files?shortcode=") + |> json_response_and_validate_schema(:bad_request) == %{ + "error" => "pack name or shortcode cannot be empty" + } + end + + test "update file with not loaded pack", %{admin_conn: admin_conn} do + assert admin_conn + |> put_req_header("content-type", "multipart/form-data") + |> patch("/api/pleroma/emoji/packs/not_loaded/files", %{ + shortcode: "blank4", + new_shortcode: "blank3", + new_filename: "dir_2/blank_3.png" + }) + |> json_response_and_validate_schema(:bad_request) == %{ + "error" => "pack \"not_loaded\" is not found" + } + end + + test "new with shortcode as file with update", %{admin_conn: admin_conn} do + assert admin_conn + |> put_req_header("content-type", "multipart/form-data") + |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank4", + filename: "dir/blank.png", + file: %Plug.Upload{ + filename: "blank.png", + path: "#{@emoji_path}/test_pack/blank.png" + } + }) + |> json_response_and_validate_schema(200) == %{ + "blank" => "blank.png", + "blank4" => "dir/blank.png", + "blank2" => "blank2.png" + } + + assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") + + assert admin_conn + |> put_req_header("content-type", "multipart/form-data") + |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank4", + new_shortcode: "blank3", + new_filename: "dir_2/blank_3.png" + }) + |> json_response_and_validate_schema(200) == %{ + "blank3" => "dir_2/blank_3.png", + "blank" => "blank.png", + "blank2" => "blank2.png" + } + + refute File.exists?("#{@emoji_path}/test_pack/dir/") + assert File.exists?("#{@emoji_path}/test_pack/dir_2/blank_3.png") + + assert admin_conn + |> delete("/api/pleroma/emoji/packs/test_pack/files?shortcode=blank3") + |> json_response_and_validate_schema(200) == %{ + "blank" => "blank.png", + "blank2" => "blank2.png" + } + + refute File.exists?("#{@emoji_path}/test_pack/dir_2/") + + on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir") end) + end + + test "new with shortcode from url", %{admin_conn: admin_conn} do + mock(fn + %{ + method: :get, + url: "https://test-blank/blank_url.png" + } -> + text(File.read!("#{@emoji_path}/test_pack/blank.png")) + end) + + assert admin_conn + |> put_req_header("content-type", "multipart/form-data") + |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank_url", + file: "https://test-blank/blank_url.png" + }) + |> json_response_and_validate_schema(200) == %{ + "blank_url" => "blank_url.png", + "blank" => "blank.png", + "blank2" => "blank2.png" + } + + assert File.exists?("#{@emoji_path}/test_pack/blank_url.png") + + on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/blank_url.png") end) + end + + test "new without shortcode", %{admin_conn: admin_conn} do + on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/shortcode.png") end) + + assert admin_conn + |> put_req_header("content-type", "multipart/form-data") + |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + file: %Plug.Upload{ + filename: "shortcode.png", + path: "#{Pleroma.Config.get([:instance, :static_dir])}/add/shortcode.png" + } + }) + |> json_response_and_validate_schema(200) == %{ + "shortcode" => "shortcode.png", + "blank" => "blank.png", + "blank2" => "blank2.png" + } + end + + test "remove non existing shortcode in pack.json", %{admin_conn: admin_conn} do + assert admin_conn + |> delete("/api/pleroma/emoji/packs/test_pack/files?shortcode=blank3") + |> json_response_and_validate_schema(:bad_request) == %{ + "error" => "Emoji \"blank3\" does not exist" + } + end + + test "update non existing emoji", %{admin_conn: admin_conn} do + assert admin_conn + |> put_req_header("content-type", "multipart/form-data") + |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank3", + new_shortcode: "blank4", + new_filename: "dir_2/blank_3.png" + }) + |> json_response_and_validate_schema(:bad_request) == %{ + "error" => "Emoji \"blank3\" does not exist" + } + end + + test "update with empty shortcode", %{admin_conn: admin_conn} do + assert %{ + "error" => "Missing field: new_shortcode." + } = + admin_conn + |> put_req_header("content-type", "multipart/form-data") + |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ + shortcode: "blank", + new_filename: "dir_2/blank_3.png" + }) + |> json_response_and_validate_schema(:bad_request) + end + end +end diff --git a/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs b/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs index e113bb15f..a34df2c18 100644 --- a/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs +++ b/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs @@ -411,293 +411,6 @@ test "when the fallback source doesn't have all the files", ctx do end end - describe "POST/PATCH/DELETE /api/pleroma/emoji/packs/:name/files" do - setup do - pack_file = "#{@emoji_path}/test_pack/pack.json" - original_content = File.read!(pack_file) - - on_exit(fn -> - File.write!(pack_file, original_content) - end) - - :ok - end - - test "create shortcode exists", %{admin_conn: admin_conn} do - assert admin_conn - |> put_req_header("content-type", "multipart/form-data") - |> post("/api/pleroma/emoji/packs/test_pack/files", %{ - shortcode: "blank", - filename: "dir/blank.png", - file: %Plug.Upload{ - filename: "blank.png", - path: "#{@emoji_path}/test_pack/blank.png" - } - }) - |> json_response_and_validate_schema(:conflict) == %{ - "error" => "An emoji with the \"blank\" shortcode already exists" - } - end - - test "don't rewrite old emoji", %{admin_conn: admin_conn} do - on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir/") end) - - assert admin_conn - |> put_req_header("content-type", "multipart/form-data") - |> post("/api/pleroma/emoji/packs/test_pack/files", %{ - shortcode: "blank3", - filename: "dir/blank.png", - file: %Plug.Upload{ - filename: "blank.png", - path: "#{@emoji_path}/test_pack/blank.png" - } - }) - |> json_response_and_validate_schema(200) == %{ - "blank" => "blank.png", - "blank2" => "blank2.png", - "blank3" => "dir/blank.png" - } - - assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") - - assert admin_conn - |> put_req_header("content-type", "multipart/form-data") - |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ - shortcode: "blank", - new_shortcode: "blank2", - new_filename: "dir_2/blank_3.png" - }) - |> json_response_and_validate_schema(:conflict) == %{ - "error" => - "New shortcode \"blank2\" is already used. If you want to override emoji use 'force' option" - } - end - - test "rewrite old emoji with force option", %{admin_conn: admin_conn} do - on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir_2/") end) - - assert admin_conn - |> put_req_header("content-type", "multipart/form-data") - |> post("/api/pleroma/emoji/packs/test_pack/files", %{ - shortcode: "blank3", - filename: "dir/blank.png", - file: %Plug.Upload{ - filename: "blank.png", - path: "#{@emoji_path}/test_pack/blank.png" - } - }) - |> json_response_and_validate_schema(200) == %{ - "blank" => "blank.png", - "blank2" => "blank2.png", - "blank3" => "dir/blank.png" - } - - assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") - - assert admin_conn - |> put_req_header("content-type", "multipart/form-data") - |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ - shortcode: "blank3", - new_shortcode: "blank4", - new_filename: "dir_2/blank_3.png", - force: true - }) - |> json_response_and_validate_schema(200) == %{ - "blank" => "blank.png", - "blank2" => "blank2.png", - "blank4" => "dir_2/blank_3.png" - } - - assert File.exists?("#{@emoji_path}/test_pack/dir_2/blank_3.png") - end - - test "with empty filename", %{admin_conn: admin_conn} do - assert admin_conn - |> put_req_header("content-type", "multipart/form-data") - |> post("/api/pleroma/emoji/packs/test_pack/files", %{ - shortcode: "blank2", - filename: "", - file: %Plug.Upload{ - filename: "blank.png", - path: "#{@emoji_path}/test_pack/blank.png" - } - }) - |> json_response_and_validate_schema(:bad_request) == %{ - "error" => "pack name, shortcode or filename cannot be empty" - } - end - - test "add file with not loaded pack", %{admin_conn: admin_conn} do - assert admin_conn - |> put_req_header("content-type", "multipart/form-data") - |> post("/api/pleroma/emoji/packs/not_loaded/files", %{ - shortcode: "blank3", - filename: "dir/blank.png", - file: %Plug.Upload{ - filename: "blank.png", - path: "#{@emoji_path}/test_pack/blank.png" - } - }) - |> json_response_and_validate_schema(:bad_request) == %{ - "error" => "pack \"not_loaded\" is not found" - } - end - - test "remove file with not loaded pack", %{admin_conn: admin_conn} do - assert admin_conn - |> delete("/api/pleroma/emoji/packs/not_loaded/files?shortcode=blank3") - |> json_response_and_validate_schema(:bad_request) == %{ - "error" => "pack \"not_loaded\" is not found" - } - end - - test "remove file with empty shortcode", %{admin_conn: admin_conn} do - assert admin_conn - |> delete("/api/pleroma/emoji/packs/not_loaded/files?shortcode=") - |> json_response_and_validate_schema(:bad_request) == %{ - "error" => "pack name or shortcode cannot be empty" - } - end - - test "update file with not loaded pack", %{admin_conn: admin_conn} do - assert admin_conn - |> put_req_header("content-type", "multipart/form-data") - |> patch("/api/pleroma/emoji/packs/not_loaded/files", %{ - shortcode: "blank4", - new_shortcode: "blank3", - new_filename: "dir_2/blank_3.png" - }) - |> json_response_and_validate_schema(:bad_request) == %{ - "error" => "pack \"not_loaded\" is not found" - } - end - - test "new with shortcode as file with update", %{admin_conn: admin_conn} do - assert admin_conn - |> put_req_header("content-type", "multipart/form-data") - |> post("/api/pleroma/emoji/packs/test_pack/files", %{ - shortcode: "blank4", - filename: "dir/blank.png", - file: %Plug.Upload{ - filename: "blank.png", - path: "#{@emoji_path}/test_pack/blank.png" - } - }) - |> json_response_and_validate_schema(200) == %{ - "blank" => "blank.png", - "blank4" => "dir/blank.png", - "blank2" => "blank2.png" - } - - assert File.exists?("#{@emoji_path}/test_pack/dir/blank.png") - - assert admin_conn - |> put_req_header("content-type", "multipart/form-data") - |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ - shortcode: "blank4", - new_shortcode: "blank3", - new_filename: "dir_2/blank_3.png" - }) - |> json_response_and_validate_schema(200) == %{ - "blank3" => "dir_2/blank_3.png", - "blank" => "blank.png", - "blank2" => "blank2.png" - } - - refute File.exists?("#{@emoji_path}/test_pack/dir/") - assert File.exists?("#{@emoji_path}/test_pack/dir_2/blank_3.png") - - assert admin_conn - |> delete("/api/pleroma/emoji/packs/test_pack/files?shortcode=blank3") - |> json_response_and_validate_schema(200) == %{ - "blank" => "blank.png", - "blank2" => "blank2.png" - } - - refute File.exists?("#{@emoji_path}/test_pack/dir_2/") - - on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/dir") end) - end - - test "new with shortcode from url", %{admin_conn: admin_conn} do - mock(fn - %{ - method: :get, - url: "https://test-blank/blank_url.png" - } -> - text(File.read!("#{@emoji_path}/test_pack/blank.png")) - end) - - assert admin_conn - |> put_req_header("content-type", "multipart/form-data") - |> post("/api/pleroma/emoji/packs/test_pack/files", %{ - shortcode: "blank_url", - file: "https://test-blank/blank_url.png" - }) - |> json_response_and_validate_schema(200) == %{ - "blank_url" => "blank_url.png", - "blank" => "blank.png", - "blank2" => "blank2.png" - } - - assert File.exists?("#{@emoji_path}/test_pack/blank_url.png") - - on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/blank_url.png") end) - end - - test "new without shortcode", %{admin_conn: admin_conn} do - on_exit(fn -> File.rm_rf!("#{@emoji_path}/test_pack/shortcode.png") end) - - assert admin_conn - |> put_req_header("content-type", "multipart/form-data") - |> post("/api/pleroma/emoji/packs/test_pack/files", %{ - file: %Plug.Upload{ - filename: "shortcode.png", - path: "#{Pleroma.Config.get([:instance, :static_dir])}/add/shortcode.png" - } - }) - |> json_response_and_validate_schema(200) == %{ - "shortcode" => "shortcode.png", - "blank" => "blank.png", - "blank2" => "blank2.png" - } - end - - test "remove non existing shortcode in pack.json", %{admin_conn: admin_conn} do - assert admin_conn - |> delete("/api/pleroma/emoji/packs/test_pack/files?shortcode=blank3") - |> json_response_and_validate_schema(:bad_request) == %{ - "error" => "Emoji \"blank3\" does not exist" - } - end - - test "update non existing emoji", %{admin_conn: admin_conn} do - assert admin_conn - |> put_req_header("content-type", "multipart/form-data") - |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ - shortcode: "blank3", - new_shortcode: "blank4", - new_filename: "dir_2/blank_3.png" - }) - |> json_response_and_validate_schema(:bad_request) == %{ - "error" => "Emoji \"blank3\" does not exist" - } - end - - test "update with empty shortcode", %{admin_conn: admin_conn} do - assert %{ - "error" => "Missing field: new_shortcode." - } = - admin_conn - |> put_req_header("content-type", "multipart/form-data") - |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ - shortcode: "blank", - new_filename: "dir_2/blank_3.png" - }) - |> json_response_and_validate_schema(:bad_request) - end - end - describe "POST/DELETE /api/pleroma/emoji/packs/:name" do test "creating and deleting a pack", %{admin_conn: admin_conn} do assert admin_conn From 4ee15e991efb5bd5bf69d84d27dbbee81443d1dc Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Wed, 19 Aug 2020 21:36:26 +0300 Subject: [PATCH 016/460] [#2497] Media preview proxy config refactoring & documentation. --- config/config.exs | 3 +- config/description.exs | 51 +++++++++++++++++++ .../web/media_proxy/media_proxy_controller.ex | 20 ++++---- 3 files changed, 63 insertions(+), 11 deletions(-) diff --git a/config/config.exs b/config/config.exs index 029f8ec20..6e6231cf8 100644 --- a/config/config.exs +++ b/config/config.exs @@ -444,8 +444,7 @@ thumbnail_max_width: 400, thumbnail_max_height: 200, proxy_opts: [ - head_request_max_read_duration: 5_000, - max_read_duration: 10_000 + head_request_max_read_duration: 5_000 ] config :pleroma, :chat, enabled: true diff --git a/config/description.exs b/config/description.exs index e27abf40f..90d8eca65 100644 --- a/config/description.exs +++ b/config/description.exs @@ -1831,6 +1831,7 @@ suggestions: [ redirect_on_failure: false, max_body_length: 25 * 1_048_576, + max_read_duration: 30_000, http: [ follow_redirect: true, pool: :media @@ -1851,6 +1852,11 @@ "Limits the content length to be approximately the " <> "specified length. It is validated with the `content-length` header and also verified when proxying." }, + %{ + key: :max_read_duration, + type: :integer, + description: "Timeout (in milliseconds) of GET request to remote URI." + }, %{ key: :http, label: "HTTP", @@ -1897,6 +1903,51 @@ } ] }, + %{ + group: :pleroma, + key: :media_preview_proxy, + type: :group, + description: "Media preview proxy", + children: [ + %{ + key: :enabled, + type: :boolean, + description: + "Enables proxying of remote media preview to the instance's proxy. Requires enabled media proxy." + }, + %{ + key: :thumbnail_max_width, + type: :integer, + description: "Max width of preview thumbnail." + }, + %{ + key: :thumbnail_max_height, + type: :integer, + description: "Max height of preview thumbnail." + }, + %{ + key: :proxy_opts, + type: :keyword, + description: "Media proxy options", + suggestions: [ + head_request_max_read_duration: 5_000 + ], + children: [ + %{ + key: :head_request_max_read_duration, + type: :integer, + description: "Timeout (in milliseconds) of HEAD request to remote URI." + } + ] + }, + %{ + key: :whitelist, + type: {:list, :string}, + description: "List of hosts with scheme to bypass the mediaproxy", + suggestions: ["http://example.com"] + } + ] + }, %{ group: :pleroma, key: Pleroma.Web.MediaProxy.Invalidation.Http, diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 8861398dd..31d18c119 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -15,8 +15,7 @@ def remote(conn, %{"sig" => sig64, "url" => url64}) do {:ok, url} <- MediaProxy.decode_url(sig64, url64), {_, false} <- {:in_banned_urls, MediaProxy.in_banned_urls(url)}, :ok <- MediaProxy.verify_request_path_and_url(conn, url) do - proxy_opts = Config.get([:media_proxy, :proxy_opts], []) - ReverseProxy.call(conn, url, proxy_opts) + ReverseProxy.call(conn, url, media_proxy_opts()) else {:enabled, false} -> send_resp(conn, 404, Plug.Conn.Status.reason_phrase(404)) @@ -116,13 +115,16 @@ defp thumbnail_max_dimensions(params) do end defp preview_head_request_timeout do - Config.get([:media_preview_proxy, :proxy_opts, :head_request_max_read_duration]) || - preview_timeout() - end - - defp preview_timeout do - Config.get([:media_preview_proxy, :proxy_opts, :max_read_duration]) || - Config.get([:media_proxy, :proxy_opts, :max_read_duration]) || + Keyword.get(media_preview_proxy_opts(), :head_request_max_read_duration) || + Keyword.get(media_proxy_opts(), :max_read_duration) || ReverseProxy.max_read_duration_default() end + + defp media_proxy_opts do + Config.get([:media_proxy, :proxy_opts], []) + end + + defp media_preview_proxy_opts do + Config.get([:media_preview_proxy, :proxy_opts], []) + end end From 02ad1cd8e97c44824b92b53ea1879a965bbd8358 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Thu, 20 Aug 2020 09:58:50 +0300 Subject: [PATCH 017/460] [#2497] Media preview proxy: added Content-Disposition header with filename to response. --- lib/pleroma/web/media_proxy/media_proxy_controller.ex | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 31d18c119..5513432f0 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -87,6 +87,7 @@ defp handle_image_or_video_preview(%{params: params} = conn, url) do ) do conn |> put_resp_header("content-type", "image/jpeg") + |> put_resp_header("content-disposition", "inline; filename=\"preview.jpg\"") |> send_resp(200, thumbnail_binary) else _ -> From aa0a5ffb4849880b5adbcc9188de01ef778381e3 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Fri, 21 Aug 2020 08:59:08 +0300 Subject: [PATCH 018/460] [#2497] Media preview proxy: added `quality` config setting, adjusted width/height defaults. --- config/config.exs | 5 +++-- config/description.exs | 5 +++++ lib/pleroma/helpers/media_helper.ex | 6 ++++-- lib/pleroma/web/media_proxy/media_proxy_controller.ex | 4 +++- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/config/config.exs b/config/config.exs index 6e6231cf8..b399ce6d7 100644 --- a/config/config.exs +++ b/config/config.exs @@ -441,8 +441,9 @@ # Note: media preview proxy depends on media proxy to be enabled config :pleroma, :media_preview_proxy, enabled: false, - thumbnail_max_width: 400, - thumbnail_max_height: 200, + thumbnail_max_width: 600, + thumbnail_max_height: 600, + quality: 2, proxy_opts: [ head_request_max_read_duration: 5_000 ] diff --git a/config/description.exs b/config/description.exs index 90d8eca65..22da60900 100644 --- a/config/description.exs +++ b/config/description.exs @@ -1925,6 +1925,11 @@ type: :integer, description: "Max height of preview thumbnail." }, + %{ + key: :quality, + type: :integer, + description: "Quality of the output. Ranges from 1 (max quality) to 31 (lowest quality)." + }, %{ key: :proxy_opts, type: :keyword, diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index ca46698cc..e11038052 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -7,13 +7,15 @@ defmodule Pleroma.Helpers.MediaHelper do Handles common media-related operations. """ - def ffmpeg_resize(uri_or_path, %{max_width: max_width, max_height: max_height}) do + def ffmpeg_resize(uri_or_path, %{max_width: max_width, max_height: max_height} = options) do + quality = options[:quality] || 1 + cmd = ~s""" ffmpeg -i #{uri_or_path} -f lavfi -i color=c=white \ -filter_complex "[0:v] scale='min(#{max_width},iw)':'min(#{max_height},ih)': \ force_original_aspect_ratio=decrease [scaled]; \ [1][scaled] scale2ref [bg][img]; [bg] setsar=1 [bg]; [bg][img] overlay=shortest=1" \ - -loglevel quiet -f image2 -vcodec mjpeg -frames:v 1 pipe:1 + -loglevel quiet -f image2 -vcodec mjpeg -frames:v 1 -q:v #{quality} pipe:1 """ pid = Port.open({:spawn, cmd}, [:use_stdio, :in, :stream, :exit_status, :binary]) diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 5513432f0..1c51aa5e3 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -78,12 +78,14 @@ defp handle_preview(content_type, conn, _url) do end defp handle_image_or_video_preview(%{params: params} = conn, url) do + quality = Config.get!([:media_preview_proxy, :quality]) + with {thumbnail_max_width, thumbnail_max_height} <- thumbnail_max_dimensions(params), media_proxy_url <- MediaProxy.url(url), {:ok, thumbnail_binary} <- MediaHelper.ffmpeg_resize( media_proxy_url, - %{max_width: thumbnail_max_width, max_height: thumbnail_max_height} + %{max_width: thumbnail_max_width, max_height: thumbnail_max_height, quality: quality} ) do conn |> put_resp_header("content-type", "image/jpeg") From 967afa064bb0dc85c054495b795a57a13cdf3b3c Mon Sep 17 00:00:00 2001 From: href Date: Fri, 21 Aug 2020 17:02:57 +0000 Subject: [PATCH 019/460] Fix truncated images --- lib/pleroma/helpers/media_helper.ex | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index e11038052..f87be8874 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -19,14 +19,24 @@ def ffmpeg_resize(uri_or_path, %{max_width: max_width, max_height: max_height} = """ pid = Port.open({:spawn, cmd}, [:use_stdio, :in, :stream, :exit_status, :binary]) + loop_recv(pid) + end + defp loop_recv(pid) do + loop_recv(pid, <<>>) + end + + defp loop_recv(pid, acc) do receive do {^pid, {:data, data}} -> - send(pid, {self(), :close}) - {:ok, data} + loop_recv(pid, acc <> data) - {^pid, {:exit_status, status}} when status > 0 -> + {^pid, {:exit_status, 0}} -> + {:ok, acc} + + {^pid, {:exit_status, status}} -> {:error, status} end end + end From 4e6eb22b4af70e611cc61f94ba3d81758036a392 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 21 Aug 2020 12:19:35 -0500 Subject: [PATCH 020/460] Try to warm the cache with the preview image if preview proxy enabled --- lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex b/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex index dfab105a3..5d8bb72aa 100644 --- a/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex @@ -27,7 +27,7 @@ def perform(:prefetch, url) do end url - |> MediaProxy.url() + |> MediaProxy.preview_url() |> HTTP.get([], adapter: opts) end From edde0d9b54b45a366ecdec01e9826f1ee8d1dc3a Mon Sep 17 00:00:00 2001 From: href Date: Fri, 21 Aug 2020 17:40:49 +0000 Subject: [PATCH 021/460] Remove newline for linter --- lib/pleroma/helpers/media_helper.ex | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index f87be8874..89dd4204b 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -38,5 +38,4 @@ defp loop_recv(pid, acc) do {:error, status} end end - end From f5845ff03395816902a637a28412f85e671575e7 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Sat, 22 Aug 2020 10:42:02 +0300 Subject: [PATCH 022/460] upload emoji zip file --- lib/pleroma/emoji/pack.ex | 112 ++++++++++++++---- lib/pleroma/utils.ex | 18 +++ .../pleroma_emoji_file_operation.ex | 6 +- .../controllers/emoji_file_controller.ex | 42 +++++-- test/fixtures/finland-emojis.zip | Bin 0 -> 460250 bytes .../emoji_file_controller_test.exs | 51 +++++++- 6 files changed, 190 insertions(+), 39 deletions(-) create mode 100644 test/fixtures/finland-emojis.zip diff --git a/lib/pleroma/emoji/pack.ex b/lib/pleroma/emoji/pack.ex index d076ae312..03aed33bb 100644 --- a/lib/pleroma/emoji/pack.ex +++ b/lib/pleroma/emoji/pack.ex @@ -17,6 +17,7 @@ defmodule Pleroma.Emoji.Pack do } alias Pleroma.Emoji + alias Pleroma.Emoji.Pack @spec create(String.t()) :: {:ok, t()} | {:error, File.posix()} | {:error, :empty_values} def create(name) do @@ -64,24 +65,93 @@ def delete(name) do end end - @spec add_file(String.t(), String.t(), Path.t(), Plug.Upload.t() | String.t()) :: - {:ok, t()} | {:error, File.posix() | atom()} - def add_file(name, shortcode, filename, file) do - with :ok <- validate_not_empty([name, shortcode, filename]), + @spec add_file(String.t(), String.t(), Path.t(), Plug.Upload.t()) :: + {:ok, t()} + | {:error, File.posix() | atom()} + def add_file(%Pack{} = pack, _, _, %Plug.Upload{content_type: "application/zip"} = file) do + with {:ok, zip_items} <- :zip.table(to_charlist(file.path)) do + emojies = + for {_, path, s, _, _, _} <- zip_items, elem(s, 2) == :regular do + filename = Path.basename(path) + shortcode = Path.basename(filename, Path.extname(filename)) + + %{ + path: path, + filename: path, + shortcode: shortcode, + exist: not is_nil(Pleroma.Emoji.get(shortcode)) + } + end + |> Enum.group_by(& &1[:exist]) + + case Map.get(emojies, false, []) do + [_ | _] = new_emojies -> + {:ok, tmp_dir} = Pleroma.Utils.tmp_dir("emoji") + + try do + {:ok, _emoji_files} = + :zip.unzip( + to_charlist(file.path), + [ + {:file_list, Enum.map(new_emojies, & &1[:path])}, + {:cwd, tmp_dir} + ] + ) + + {_, updated_pack} = + Enum.map_reduce(new_emojies, pack, fn item, emoji_pack -> + emoji_file = %Plug.Upload{ + filename: item[:filename], + path: Path.join(tmp_dir, item[:path]) + } + + {:ok, updated_pack} = + do_add_file( + emoji_pack, + item[:shortcode], + to_string(item[:filename]), + emoji_file + ) + + {item, updated_pack} + end) + + Emoji.reload() + + {:ok, updated_pack} + after + File.rm_rf(tmp_dir) + end + + _ -> + {:ok, pack} + end + end + end + + def add_file(%Pack{} = pack, shortcode, filename, file) do + with :ok <- validate_not_empty([shortcode, filename]), :ok <- validate_emoji_not_exists(shortcode), - {:ok, pack} <- load_pack(name), - :ok <- save_file(file, pack, filename), - {:ok, updated_pack} <- pack |> put_emoji(shortcode, filename) |> save_pack() do + {:ok, updated_pack} <- do_add_file(pack, shortcode, filename, file) do Emoji.reload() {:ok, updated_pack} end end - @spec delete_file(String.t(), String.t()) :: + defp do_add_file(pack, shortcode, filename, file) do + with :ok <- save_file(file, pack, filename), + {:ok, updated_pack} <- + pack + |> put_emoji(shortcode, filename) + |> save_pack() do + {:ok, updated_pack} + end + end + + @spec delete_file(t(), String.t()) :: {:ok, t()} | {:error, File.posix() | atom()} - def delete_file(name, shortcode) do - with :ok <- validate_not_empty([name, shortcode]), - {:ok, pack} <- load_pack(name), + def delete_file(%Pack{} = pack, shortcode) do + with :ok <- validate_not_empty([shortcode]), :ok <- remove_file(pack, shortcode), {:ok, updated_pack} <- pack |> delete_emoji(shortcode) |> save_pack() do Emoji.reload() @@ -89,11 +159,10 @@ def delete_file(name, shortcode) do end end - @spec update_file(String.t(), String.t(), String.t(), String.t(), boolean()) :: + @spec update_file(t(), String.t(), String.t(), String.t(), boolean()) :: {:ok, t()} | {:error, File.posix() | atom()} - def update_file(name, shortcode, new_shortcode, new_filename, force) do - with :ok <- validate_not_empty([name, shortcode, new_shortcode, new_filename]), - {:ok, pack} <- load_pack(name), + def update_file(%Pack{} = pack, shortcode, new_shortcode, new_filename, force) do + with :ok <- validate_not_empty([shortcode, new_shortcode, new_filename]), {:ok, filename} <- get_filename(pack, shortcode), :ok <- validate_emoji_not_exists(new_shortcode, force), :ok <- rename_file(pack, filename, new_filename), @@ -386,19 +455,12 @@ defp validate_not_empty(list) do end end - defp save_file(file, pack, filename) do + defp save_file(%Plug.Upload{path: upload_path}, pack, filename) do file_path = Path.join(pack.path, filename) create_subdirs(file_path) - case file do - %Plug.Upload{path: upload_path} -> - # Copy the uploaded file from the temporary directory - with {:ok, _} <- File.copy(upload_path, file_path), do: :ok - - url when is_binary(url) -> - # Download and write the file - file_contents = Tesla.get!(url).body - File.write(file_path, file_contents) + with {:ok, _} <- File.copy(upload_path, file_path) do + :ok end end diff --git a/lib/pleroma/utils.ex b/lib/pleroma/utils.ex index 21d1159be..fcb8c64c7 100644 --- a/lib/pleroma/utils.ex +++ b/lib/pleroma/utils.ex @@ -24,4 +24,22 @@ def compile_dir(dir) when is_binary(dir) do def command_available?(command) do match?({_output, 0}, System.cmd("sh", ["-c", "command -v #{command}"])) end + + @doc "creates the uniq temporary directory" + @spec tmp_dir(String.t()) :: {:ok, String.t()} | {:error, :file.posix()} + def tmp_dir(prefix \\ "") do + sub_dir = [ + prefix, + Timex.to_unix(Timex.now()), + :os.getpid(), + String.downcase(Integer.to_string(:rand.uniform(0x100000000), 36)) + ] + + tmp_dir = Path.join(System.tmp_dir!(), Enum.join(sub_dir, "-")) + + case File.mkdir(tmp_dir) do + :ok -> {:ok, tmp_dir} + error -> error + end + end end diff --git a/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex index b6932157a..7dd4ce311 100644 --- a/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex +++ b/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex @@ -24,6 +24,8 @@ def create_operation do parameters: [name_param()], responses: %{ 200 => Operation.response("Files Object", "application/json", files_object()), + 422 => Operation.response("Unprocessable Entity", "application/json", ApiError), + 404 => Operation.response("Not Found", "application/json", ApiError), 400 => Operation.response("Bad Request", "application/json", ApiError), 409 => Operation.response("Conflict", "application/json", ApiError) } @@ -67,6 +69,7 @@ def update_operation do parameters: [name_param()], responses: %{ 200 => Operation.response("Files Object", "application/json", files_object()), + 404 => Operation.response("Not Found", "application/json", ApiError), 400 => Operation.response("Bad Request", "application/json", ApiError), 409 => Operation.response("Conflict", "application/json", ApiError) } @@ -114,7 +117,8 @@ def delete_operation do ], responses: %{ 200 => Operation.response("Files Object", "application/json", files_object()), - 400 => Operation.response("Bad Request", "application/json", ApiError) + 400 => Operation.response("Bad Request", "application/json", ApiError), + 404 => Operation.response("Not Found", "application/json", ApiError) } } end diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex index ba9f07795..d10f46fde 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex @@ -22,7 +22,9 @@ def create(%{body_params: params} = conn, %{name: pack_name}) do filename = params[:filename] || get_filename(params[:file]) shortcode = params[:shortcode] || Path.basename(filename, Path.extname(filename)) - with {:ok, pack} <- Pack.add_file(pack_name, shortcode, filename, params[:file]) do + with {:ok, pack} <- Pack.load_pack(pack_name), + {:ok, file} <- get_file(params[:file]), + {:ok, pack} <- Pack.add_file(pack, shortcode, filename, file) do json(conn, pack.files) else {:error, :already_exists} -> @@ -32,12 +34,12 @@ def create(%{body_params: params} = conn, %{name: pack_name}) do {:error, :not_found} -> conn - |> put_status(:bad_request) + |> put_status(:not_found) |> json(%{error: "pack \"#{pack_name}\" is not found"}) {:error, :empty_values} -> conn - |> put_status(:bad_request) + |> put_status(:unprocessable_entity) |> json(%{error: "pack name, shortcode or filename cannot be empty"}) {:error, _} -> @@ -54,7 +56,8 @@ def update(%{body_params: %{shortcode: shortcode} = params} = conn, %{name: pack new_filename = params[:new_filename] force = params[:force] - with {:ok, pack} <- Pack.update_file(pack_name, shortcode, new_shortcode, new_filename, force) do + with {:ok, pack} <- Pack.load_pack(pack_name), + {:ok, pack} <- Pack.update_file(pack, shortcode, new_shortcode, new_filename, force) do json(conn, pack.files) else {:error, :doesnt_exist} -> @@ -72,7 +75,7 @@ def update(%{body_params: %{shortcode: shortcode} = params} = conn, %{name: pack {:error, :not_found} -> conn - |> put_status(:bad_request) + |> put_status(:not_found) |> json(%{error: "pack \"#{pack_name}\" is not found"}) {:error, :empty_values} -> @@ -90,7 +93,8 @@ def update(%{body_params: %{shortcode: shortcode} = params} = conn, %{name: pack end def delete(conn, %{name: pack_name, shortcode: shortcode}) do - with {:ok, pack} <- Pack.delete_file(pack_name, shortcode) do + with {:ok, pack} <- Pack.load_pack(pack_name), + {:ok, pack} <- Pack.delete_file(pack, shortcode) do json(conn, pack.files) else {:error, :doesnt_exist} -> @@ -100,7 +104,7 @@ def delete(conn, %{name: pack_name, shortcode: shortcode}) do {:error, :not_found} -> conn - |> put_status(:bad_request) + |> put_status(:not_found) |> json(%{error: "pack \"#{pack_name}\" is not found"}) {:error, :empty_values} -> @@ -119,4 +123,28 @@ def delete(conn, %{name: pack_name, shortcode: shortcode}) do defp get_filename(%Plug.Upload{filename: filename}), do: filename defp get_filename(url) when is_binary(url), do: Path.basename(url) + + def get_file(%Plug.Upload{} = file), do: {:ok, file} + + def get_file(url) when is_binary(url) do + with {:ok, %Tesla.Env{body: body, status: code, headers: headers}} + when code in 200..299 <- Pleroma.HTTP.get(url) do + path = Plug.Upload.random_file!("emoji") + + content_type = + case List.keyfind(headers, "content-type", 0) do + {"content-type", value} -> value + nil -> nil + end + + File.write(path, body) + + {:ok, + %Plug.Upload{ + filename: Path.basename(url), + path: path, + content_type: content_type + }} + end + end end diff --git a/test/fixtures/finland-emojis.zip b/test/fixtures/finland-emojis.zip new file mode 100644 index 0000000000000000000000000000000000000000..de7242ea11e618d74ff2fc6526f7c65611f20181 GIT binary patch literal 460250 zcmV)0K+eBVO9KQ70000005nX=N&o-=000000000000#gN05LEyFmQM;RaguFEMhTP zLqR%O^#K$BP)h>@6aWAK2mr8hsz{#wVEQzF0RRV$0RR{P5CAbSFfed zAzeem&_kDWmqqUPbD<|sBZ~o&V(K1$w%cBSn6*3$Zz_Lz9x6K5xFo*&{03KylI~e=i^Y_U0z2)D zq5pIT_uz^Fw1=5zns3|k*;Z&Ve^Y?Bwlz@^GuV4F{!OEq znrDk3E=KqNH-PQ(->0DWzh3_P^ae$M;(r;2nDOR+85W>~{QnFqqsMsDXNy#ArqAcA)iv2sbZ( zfo}7=IjiQ?z?R&VSY5^+Eo*;QC}cid;i~+Y2XUZ%6Dh~Ka;f8mxg6( zL;Q+=6O;&Toyb3$8q30A@)vtGexbf2e$`YmoEAG8j-Sd(?0+c2G9PAe;p^JW1gp%C zZqv3?87CP~sOXq)nREyISUIUz+&JWsGWb(e6tRQny0g!vb)8>#RT-@x4m5|x6rj`P zD%}OIj1a?6<4-uA?Ex&NK`R>h?ux-^#VLAot%1S3mVs@j2MOtyd7)d% zvJT(6g=kR~xh4WaSF08T-@uRNi`_~h@!wfrHtSy@NE$SW5%dp##KJKvQL)Tdvn8LC(lTQ;y z5Z~Kbx;h%UZsFH9rztwP?rbOSgtycx&iAWVw@mvT@=OW{(k3~TMSvP~MSj-cuxP~_ zM+j5g!LdyYEE3@q9hkk)nbJHL2A7^$omUutna*>}y z_tAR>Ef=2NBz-aTI!d$RZ{dPEet^DKa8`->hZ$Vkh!DaD$mvu%k#^TJtly#0D?wYn zIpUilgoFl;k^c1&kAnP#niwboI$XeoA7MY4O;G#UfseSI`~ph0987S&bInEtLL$jc z1^*T2Qt_M@Il@WlF2fQ4ueM_9wxREik6J;uI+tELIa2F(=Q9zquyV5<_013c zWj^^q!GF?30jmiE>7kL{%{=o7SRr!e6dh5NL+$IPIU1i?Wh?i{ba)AfSFhY`i2q>$ z(n&6L2?^jl_;TY=e1!-)1N_mNp3|=Dkh2m$9kxq#7X|?vJ)nV*H2Ob3@z#9OCjQ(l zF}8_rSlfi&)bomFxsTOy7T*ayn za96I`8&zg-EOZ=}FDvjbM*U6$p22bVxmo>A)0QIJED4cx_8zl4^ z5c9i`dfu-7Q_#N&lE`64MH*w#(S{J04{&0 zTKxzEKdL(AUAPtUd;KWyC3FR7=*0OgUF3Cg6j(6w@eErJ{^b4(7o7st8hY3rV`O=0 z3}hfgN5GLs&tjukV8BV%T+>-xqTsu#0IvY|kpM|&5?mgS(!(;R(ukbxbsjKpra@x> znMWT|fHO>2|BFs_&MN2uwy~r@7lQcA-#`(-BVT67ofbYkq!Y|b!mvA zIpReB2$wDO5yd(;rF`kTr5{s^QNlfG;8(8H!WPsIkT4_pd5`Of`8?2l1lpM4z9j$S z_z5knfSkDWAvQMB5Sn>kf8g#vrs^m=k*YoTR7VX5?q;e1Z#U2$NopqC&yV{34(b$J zl8|QwEe}yD)8S_ubsFNokD@)bK}pMtHvmi5M>}=YFiidz_z$U@i~{3P14V>$IxPQr zXxH!QSwGbOFmi#qZE-l~7YY{O-%;??+MMJF!+qTQo4d6HL}Fzx{qB^C>T&hL%rIi- zhpgKmu)uXz6TzaK@zRigRBEGyEr3AIk4`hsY4U z5xx8R>~0p3!Vgpr5zx5HyQkDZQxeXsN#1?6CJMWdZ3eoe1`MyHJSKM{_UNq>t2XXE zp~Q_*14<-ML#a!tBi725=Sr;!Z3aK4;?tkM=qI1+IT^a z`H{rvrGyi(z|obW^76sLqn?kf*Hjo8v)pg_}vlN2Nw22 zR$Do3*7+@0LHEImk%zc8Ut#}C6dn`I*>t4Kdgp##9a=zE1lU>OaTwx2Q}LwXy1Mnl zAwNK}?4>VO;Sz&z;iFd|y%F=FrX=*A{P%s7ra0uvcZrk*Zgq!o=!5Dp$2tRS3PBIC zk)rXf0Uj^^`aU0TMLnPYI77B@dE56p-Mhz$kYe1i0x6Zqr@c9BTh>R}t6pB48;d*Q zWPUW!?0Wb%UbZ>zSj`KCNAp2M`lXZZ68&2Hj>317xEMjq6)r!;%6TRHr<~PQt8+H@ zB)`*u`_-3H!P7ZC(Jrc#+#NXPAJ9OgG@^Hxfkzu&?;yOEsB#e4*u2ia!(t;ux+7zr z_h7$Q5dy&ID4;ntAS&)5!DW{GXMa{fUSjtWNt)ooKzw!+7XOh^m`#A0SmuGv40jSc z7tTNWXh0vri`Z!Zr8_y3hNM2|Oza624E`Skz=g_X&A`L*8HD;Eo?Qi+`H}YzSgU4T z)u)8ZZ zRO}#V%0sZqe#e&;Q2XlDf40jhr@o;k^iudQW^VVUxDpxf#NRGMaNJ#> zZ1ZLN68mFhY$QeoYs_h2Ai1b}qg$(H@v>gJd`gh{bV@kS<6Mv{r;01C$MlpHVkx2Y z*$n`w=Q-5AeSz;j)LsMrWb2)OC(OoIUb{9~y6>gmIDG|&Os6rKc$-0aig!sL%~W$b?K(1Y-$x|YIV*v3O|M33JCt~i$4_70 zJM4k)vE~U!wYn`hf&Zqdz)}PIr~@vQXy6UeBoZtrk20!*dtV~2Q=IRbgZnES{=ESm zdC0uG6sx@o&@c-BAu|2Y_#>pTKlcj~PjU;GOiXYX#H$hjLcm**lW`h6J>q&mLuvgv#%8uLLv?H3$P`Ks3|RpKuGWPU5Cl(E@J8_%4) zYt!x*tn(DGI7tdvY?d!iq|FRd(*46|l zA!M_PnQ|*9Sk|{Lcf>}Q?XI^iUTxLqxj}vui2g(QJB+{1j5~(eZm9qqww6La&sKys z0S_Z*VuLdXnKIE$TqLLO@)&EM%bM@Z6~mu#Sb-?~gfi~5Q&ryKrxziAr8?jG15d$% zz)UWn-z*&JF*2E<3-P9yH;^F!Mu*31pmWOoG@ydp`GT4j?_uK=UQg6Z!W$tqw?+x# zTBwMq3opB}2ACQ6`PYpt-N}Q&$+Q+p=(VE6(XCBbB}6F2?>(f@WC z93eeQikT~ouQDg19{*-LxR3-#uvCDahHBldE0QZK-U)^OUd8CQ;jXXO1vZjm^eEiLU7D7yg&}| ze62Y(LwdyguJXt5KUS`w;{>q7C{7jI$jZ8!jLNHL$4!Ie@GAIw**;3HY=I~FU^%;f zw|gFqc)nCrTXg&kC$U+5%KP6cB|mbs@WB%aQdI}B_T&fK0M3Aviv2GR&e z&*rW_8xUHj=u5$RsKuL34zo%q16?}JV0TTM|2UT^Qsqi*0Jt>Q#9icP0Pf}`3>Y4# z9M^JD6nk<;v$8ySC^Iy&&HAzuSc+2wRx=Tmix5_rg3TibsOa3e72UP8{yJm{1kC)J ziaSP4Jg$8M0z>nA?6jXm-wOqjBxDEtS-%V1YShoolX!&k*lAGMXh7r}(fECiRw;&_ zv!L<8l-=?8r;gIj(gS!R)9$?olw#5PCxl{2wN!N-sHut1iQ5CZP0&Xa*lLuuy%Hdt3 z+ZIHpi|E4?cYONYQJ~ylplSAnuT0j1O&2XlxvlE*Jm=Jk`UnihZ+VvSV9)^23~n(p zCjw-}xwz9sutyrNnWKR=u_Qs_Q4eh=U@zXq9W_c?O=jf874*-P2#oevm z`#Sgg{+9k@nmCs`vA9#G65#GS%a4mUHEWEyvIEWC_74TDzghU86wrK?$sQWydHX&wSo^>sE(dzZ%D4ev;w!a1kC0mZ@qtM7Lw2 zjCaRCLd(1B>5ZRf#724jKBK~xaoQkbBuB;{8Gh)Xx*c9YDjj33I~B&zWns(5$y)+Ro8 z_slnteALQKZI~^QPTj|u%+jB83(NHaCj!yqO@v+YxEPz{JY(#LaTwd@#3XK7H~n8Y zE+Q|L7qk{S==WG6%(E^sN%kC)-nVJVm&?nSOLU^Y7H^hblA%8~|J_mi`OqV(c=rLO zTfuw-c6*DupA%i*)Z+`&nazw;@;ptJQVs+6=p?ECkWklUiR4aCd5JKDB+@&6)~DO9 zD+JnqM*M!%cl1o7Qs})ry=TQhE@?=dC*6gip-7MB9o7{o~&7L9tW;!y(2-yr>kUk$K zV2^C1yR`0?_47~q(dsl0jJ(405S4bMj#2f0{Y9Cd&a9Y{^`I04{4+vdD@2q7_vR~j z?la`DTqR9%HbHdmm-nTz1h(XP6miL)02&3H&P`nuxrS)ZPF|le;Eq&&M@1C5@ryfa zQZbyZ8af5V8LJN9G>W9RJ!%{cCI6+%|8hCe^fuX{> zdE8F%#Cn6&0b<>*(WiL&R%D;{C)nev%*(HQX@m+Z(Un;eziA0~NDTN4jHKa4J(Clp zkZ+2nE8fk|5h_u8RnYt($7OI-Z+znq&SY}|;QAUhh5nf!p}f_`B1s`CPWvX^%x5%E z%vT)^x;?{dC?fg{&k|AIYeY!)O8vNz?B&|cg+sMbf3t2e^P<>ZZF902(a;$EF*ZSX zzjEVPH%yl7_GvMnpe|N9jf19lH=*8v1sw&wjeJU@66@K+JE$rLixmz#dOa8$+ z{R~!L;HIHfu^P+QoqgMfTgW=jL2@JJ;YkqkLUk%L4vJ)CPbE}OX;i37P4tz8<^FK0 z&b6T@?(%jS=3#Xhb%PH}j&v&)0Um|{6K4AyXO`bY@xI+*X2Fhpi=vW=uJEnIgrPtE z4mCuC{j<%B7Y9dy5+1j|$SYWr*b|sGi6}#LvE9URv0Pk*N7sq5Lk?3&DjCEqu^$C( z2M{{vsDe ze>m!LSN{gLQkxFUgFr6@De(ks6`OYscRDI=UdHL-WQqC_JK#|y(|dYO zVsnil4sl{18cLpqY>l9{%)N^n`a08nzSfA1?Lq{b4 zYvM#W-8qh|KbPlsO4ir7HxIoEtLkzcd&(G)6luE}cp~2cB~RywJA5{QA|mMcyu;C2 z0nmhbl&YgP&JqPYJFDrM#Iy<$Rt!t_<>&qaS1a77ohb~I=&V<{-l;D?FCNxQC`*-U31cwPK_m2pUm=O8}0yc|_#Zu+h_wA2tTnfG-x zQz)zV!FjHkVQ2dLR4t4iUrwrNmZnX<^2hOInj8cPFd9g{Ns>s;Ts>MI0I4|=H|mWGZJwdoR`0z-LS z#AwD6aUm=1DwI(c?c;Yk{<8J5Uqu)Pj}ZrpVs!9&#`j3|?h41z)=W4H&2Ha!=@&&S zY~Q%m@*{FSiQqw#aLYcFN^g9Re}BA6L$kwF&9*-c`xxJTM2vMWS0(PPJ89oT*=(B< zjml=5P6Z7fpBna5W9Vf-5zG1J_5&F7_KM84DRYtnp>-&?=c}gY*`c0e}n;VmTDDg1XFDFJ5h$V>}+An2EYCQV@ zkZG1VZmzHf5|PN3Xi^Tu#phv3gFe$i%s9o$qNGaga+N`EkzTRqmHe01V{2+>8%c~rxDorB^9w~HV3OD^}Lqz+Xx7*pN z#}%tGYTtBkkT2cn0q#7J;E0sugcQ6QMBiFJzisN%R4 z;qNJ#-~0Od4i02U18OYU+P&fV9=*RT_ytr>)AkdJxNb6zk6|CNyGQu?i}KfkrN>`B zB)algcp~^u)p8Lkx0=8Az%UC5zx!r&9Ss?MPuwM z1%IC&}gY}U9>Oh#jY9%brU7!Tvfk7nHy<7m1sBzn6~@O1BmQU=2J{vjPD z4!Tk?T2owrzyF5V_4#sOXSBij&|31crL=oCSv}?nl8`H@?hpm7@K=4>xw7sVnn&$W zdT#1WXRw=H^G-iz8;dTlM~@QL%sxlpw7_s^?~J5j_6yCnPE?{CVaE1#u&NlE)*iIZ zLqCZa4-sGqQEBJ;r-fZo;k~cVd^@9WvRsjP)I;QLgtzBZz%uw5)+P zzGVg#f1V6@F)6iObo%0evZIrJZY7r$Hh+6_{xTI|ALx6&fK~CG>udc+4iQKuqio%> zawue1Ai6>eAzg;z;W}y4DBINei<@>=9i8n@AUu^YUbi;~aZZR#rrj@r$xg<$37OFJ zl7DbyC{-2QzFz(W$7TUIH2odF&Kf6J-+uSX5KfGe&ZXnqy?n)m<#8#2{xsxuO360m zx@USwPjG(&qBE8Ro82qsD*<~fOHbxt@_f$KxzX7*0g)rcvZg?WI3=6gHVEwGYIgl> zCwMQW{(9yW;{ot8Gg{>i>q18x#@p>Ha&vxb8q+GoL1b^)p;w@^D3>!X?E+o3DZjxw z@-@rpfk(<=NF+zp++CxW4KVJa^aanRd>t!+e|I=?BK=s!@Y?8AL!*u;(Q1fFR;!UP z$p}ttjR~rbpd?S^8+!R_Oe`k@yiCjmubMEEs$W&CNi6oOI4$r5Y0xgiQhyF?*QtwIz2ocb{+~; zMf2M*PFBWnBH7;ZdgK#*Y+aHUe%VRCWIba0J(|I}L{dj93x2BZLYY?%UCx#>rgmL> zh>OguXO6RO;FSuPb9Gd9vz>e|k5LBCm%e~>^sP7-uX?Xn{+_dT=YxSE`vW$akyG}I zd84ZU*NWZ`e+1!>!s>3#M{X3`)WAjch((&yTDsg$)UE0lKN5M{Q=k#{CrKwp#$+Dw z9<~|@dVY;;awDY4=&Q1=)fJ(n@vPrsjM=&kIs@u<03h2t%jEt zjP|k=4eLF%!i20x)(r_B4G2ekiHGb_UmF1X;#KZi^n?}$vA?qzwvEk1K3?-I^SUEN zr3i+B2OY`fHAw}JRz&D_28KgUB-@{?9(KYxT6bp)51M_Gp|_=3L3FPov)6bzh}d^B z%7lPoech1{*?~Qe`<jTb46AQDK%~^~D*>rIu0wx?4TEN@=cu*3ra5 z4W_)&8{y;|BBtM105&sDgLwgf1?oxc;CDNteA&EYh1)r1VDE`o6I5WjT z)IUfW618JEj%LLGLjWZLpVqYT5rh%>^ z3gM_^p4joY(RsF#!k!5&9=!*L9KuVjlZE) zQYAH|JD0!Wo_X}4?;+CC4)Zw!ER9C3hKj-UGW|3ty9^k1NCj^UnNpP19Fji`>Izb} zAID@!u9S1-bCW19+SUQQF^xwDfE*D%S(=%z^Xj~r;i&|+@qiW2^S-_LXn!F$Y@^n7 z!t3;M!DGuVkJ6rx0ybHt~QC+KD7GvDYfOmxrl`h=wVQF|IFY;|MVl)dK*U93IG)67OGf|O7o}+^Z9AQV-WUIK=g83^ zRh&g{4yjMry>-^nDYU%Sq$NKjQxH?EL3|?4UC{b(Xu=DzBE)%>+*VaTX1136_n*mn z&IdwBJCkXwMf5Z&HQuWHa%ETp#Bo`v15_Nm!eSew24F#R1+hlQo&ilWDC@Dd&pV2P z+N}Pln;A$7_{ze1qt@MZd(NMXCrcnKM&v}d)f{G6$0E`z9P``d-^MK+ zw^R+tvh17(Uw{r+>!3!GY zv4x{$vdN(Q`}Z+HWi>O~kvCF8W7Z?#VMQDMcGYU{QV95u0 zmYECd3R>+42QQAH__IPG}4={$^{)ya&`^OLDC_7pn^hp^aWC7Q@+_u8}Il z=hb_PFq(BW??9%-d$1h*hsT+dFxxP z18s%>3-Mv&<(z8UeEjk0q>oq2NO*l5gKhIWbVp#nr{!`{O>wRenH;unsy=wpm4is9 z(R78{X@aAb(K4^n|INhvHW|wGogw-hl4_PYcQ}ubd5Mrwj$mSmVaaAizFrBuk5XN)v=h?wN`fjkR7uurdI@f-{ z^3KO|ZuP*=_vn4tx2ThrGgzya0pC#pfg3Deu+E8o$e_TU)XCj&1g?|Pm`*0E4j9~i z*KpvE9avtL#=4@5UI}x=xsubVUCMTft~LG*PQsj{vtju8tgjbFm4W#s>8%+9b%XAa zUc;ywE2T(!KM4FyUWIek1ng5j=;dwJ26X5aEMo&{YGe-OhH_0{mv>d_H%!+>;9yr^l>3f9cCvTj!Fn7fbIWI^@l+Es z`KPQp)WC)h%)SZWI?<-sZqdPEL~k+2%5Y#F1%PZ%oO&LxVAKm#o>Gw1$X&w}cAe~U z`B*jIBnj*-Pb#|cRJ&R9!GYYwjZBcH2TJ?1={$#Pr3$dVjah?T9uQ85(-l*Y(@ArO zl?`T8wk<9658fmSM#pW`g8$7YCO zI>?3tUC&F)R5m;!-%5Tk7VkBrnzc72AXj6`qC>jg|?9Wn*7;?eZ z<`fCSN@9|~q^1!>b7a@I#c~xU6X&&YDj8&nTK`2a8I6Jyw5|{>cCv}?2wYESXyq*- z;XCj!{6}>s)-UyDB{kW<<1$I*PfoA1lV%gC<(}UJT;5s_6t&-c@OxsEO5Dw~cOi1? zrAOLP>x})1h8+mWbi2v>rRE2v9P4<|1S$Fx9pG2NaY8QMQ3A8+_yCYAWY)vrXc*F8 zt8v9*NQ6VS>#$iG6rSsw&EbiS5Mqp$>@X-i^EGX(-NQCC#P6O6&hrpI;A2(sYtm!! zocZBWHH%wnr{nPiET6z^TwTGE)LbX0q36Q1o4z!{lB-k={&-}mX+O5dvT_{C6nVDF z4we3GU$#7AVmeGL^w?nD!RQ`1X2~%nWiio!?e-HDejB-Hp**CSlHySN?v1|FceUGu zMb=`1?J!rT=xH|?>8iZIhL+~FaQeN|{FBoW!INm_wOAGm|1e-giacSPLTW+Yn#~e~7Q-n_so`?SH141kcu1mTS`h!?Slw~wN+(kFQK3*}0A;}2 z8iCfm@+XUoqA!g~w|jQDl1tncb56THH&tclU7biyd-Hv-fYrILNBjgRB4D_N70F+= z%u3{vZgFs0=-+gsn|`uDa$nrH6|(zS^M|Z1n#lUUjo)B&JN|DH6Tg#>9a_fxK(>D& z0&9bFTa(b?8aZ(gbEezkeB;@I_kQsfYoCpqy_)?jNNa~roY<@XWapjnIU{pDWpp|( z!!CfaC9&*Ci~-5L{#$0IJqT{&bkO@au;Q)`i1&XPTR%VVVJ#5wh?B%UWmca9n-^C&pbz{i)Q;o*17isy~y{8 zLW#ltgcV*^mLI7I*TwS>7BRY`Vpzt>wcax$hKVP&u^+C~?W`mXBn_gA4P||m3!fw~ z?m?mFRStfy{BMW04wzcba+Z1dSpQQHT(@Huz>661A4;@vHJNXTXf3G_sads1uDoBc zi1;4Z_Tr$&Q9vf!eA@}_QqGG5_bE}pz{Mojst}r9Ke~SS^-?};dI1p+GcJ(*N1s%h z-PWA{2V*O#rghaBy@K;}aPH=zpH*_h>b0lWkfh2LobI29YqyH^ zioNE=r_(&(-fBca6iX-R2(1gZ^_Zs)P&0z_A3yTXE3u{+QdbNjR~^B9fu2r+s6hC7MyFAKo#b zu44``M~{4eQk^0Xo*O0Nn7^hs>z1ykmXk z=es3#?d9@j0%gC)@dX+F6<|*ERK0FbS}~_Ze*(K{t4qz(a6H`tu6FgQXfaY{s{5^` zXIWdBgkgF79yG#z{$;7E^bx`6IPVfIp+)9d`U)1WqQ{DkFZQVw#F)ZEB6+@TI3baGb$=4uQ*(w z#yV4ND5~Ww@C1M~Fnx7VY6kfBok!gLFzj;j(&`yl>5g=gZRE_nJtIABOUk`(yc~@8 zpBvV1DP2#VRxW#{PpCTREFoyv^C(tnn7(2xJYNZ-BC$`4BkFh(znJZ0i0jCEBiy z6_f-x@{4iyEc*1IE%?k7I=WnroyS9`mL+7eP!$aAA%F9C^gHZ!PYtIVCR>XJhw1KQ zjG~ExW>d%AwXd)tMqbnp!Mpv!b?$r)wtUg8$1z{Fc}4vnuKT}I)!R;E3dabv`~X^S zHs?q9ixKpZy0<4ujzW*ZBrjV^pbLA={g#IwXQt@O&)oe+Ba7#2NDeewTqT=Jeo(ra z7f)ugL{aj(%pg{p;E#Wpu}em$*;tGVu%m~sXT+AW@qrDw)e>NwW!Yc?ws&*pHD|;2VG1ZF{7DJ41G6V zbq?5k*~F#VB&g(-GAOW2FG(x9{02Pk$}O&F{{tP9f>>G{1UUFT%hCki*5rA=KP~w< zFdn1eN%#2vjV-;)7ru^~cOd#Y%<23ge|y!rZvLk{&~BEtY0Ef0c+enb560IToi$8? z>+u`WPCS2)7y$pm+t6oPd%rOns;A__0mV~jg#GJZRfs)Tf-AEw)4yq`RT}5cRHU^3 zIbBSz06ErtxQ#Kv5>C!y!F5zXl!dI)G12NWaE?14rO=teX`+Pt8N~#@Hf&$<`0WAp zzWMT9RH^Hpb?&bxM>@8#%})xw}MLuN%*|HB+UBtBvPRgqLK{pUgx? z@B1E>%s19nes;=BlpJRkUY~P2>UU_q%(dm*w;1y9<}K}DqlZ^+{@hG-My-=1#6!(4 zWcWe34jkEiK?~gd)7DT*W3r&i$>W5-*Lpp8o*}<01}F$k?z%oXC3-EyG!jv(l2V)Q z<+DS-zi~PWjbjpxX%IP$Z#?NlRX{wyw%wB&r>WC_tvs+Fn~F-kG<)#C>37-;Nkl;(W+f;e|Pu9ag=kcE8>6{>3XIF-~SRawTwc`7>sQ&H4-tWflqq zVz-~|c#`Kf++Pi6c$Viyc}tQb)Sq6+eIbtaUrw&SPhTeN%U2>;$!z0Z%&9 z<2Nrx!1^)B*y`1Q+5W3A+L7@QiVZ+e>-;ZQSGPXd5y=^FouH{5ciD?lQFdS**niC* z9Wo)tq5oEGE4VcFlywUjZ?&v@J}7A4m*vlYp z_v)cPbgAMm&0Dmi+=z%;e63!1y{U>(&L^(KSVzY9VO=iCYM}nra%u9;yE&9~ruspl ztuGGhr+4YSX-9 zZwG+TTLP{Kf4ksuVtD}5nhR)u8h#NDd27U~HtaX`%Ba)#s{OMKsaLr`MOJCFmFpZ% z!T168Npw+RHy5>&NWn;;?z3sm57r##rEe6I&ju}A6aEsp`;$@meJ(B(CP^PZiw80N zYcQ&JaSYZ4V*u~-0(`qOKK8;E2 z=n4h{O5tQF@lcG!gw*n-bllFO>+dbxx4kE?o(s;@i_pxgjCE@%%e#yT&yu|0qEWw7 zB-JVNKP6#0SgzQPd-+9omnmlHR-O9jT81}LKG2tcBj?lU*GnljRbAK?4jFu45anel z^lQ#f*8=f}tUaqt1cOIkf1+QI&W_b$N zuYPvC-w}NOu+prJQq`V~$Dv8GGx2`Z@o=K?_F6gW9g?(8kNVcQVPd&4br_*@ovy-wz<6M zrX8}bkh8rW|MtI%oA|2A*p|nN37K-^I_6yDiS(>_y0`2k1S&)u-1 z#NVMXa8Xqd;@dFy93)^)34_3say4domwDan#0G7Kd*+76?Jy3hv|N?q+`hmXLPaC{QGJr+wa(cffIo$&UGSdb^@GNSG?C9p+;%_ zP1qbZhq6W*E2~Ih0zr#@C&ubV2O>f{3|U;fs?=k~yUAYpmWc|l=v{H5l~Ndzo8~h)cUf?LiJZ*O-P*qy8$e&WU%%1!pB~g>|@Qw#{g;*pFT#in;Ll zR^t!p+i5an6H+XJFd;m>L~xcp&+@~IeZnv9mvrb+Mq!xJOjvyTtyG|0zVR=CSBdE2 zW@z>x(~AL_y8a6h8dwNX7${4mTwviDtpFWm_Ve>Iw%KSE8u*%KY=0BL&i$~vAKkDS zT#gnfaNSE?wptJfa2Q>p0xqzQm9i*kB%k46B=s3zHTR6a@g|VH>?fy zAR+-I?|RDlOH(7}n9vCdMrzfDEEwI=ou}ITRoSTo0hcgbz-h;lY=b;7nSA?Pc#Uhk zm%aPN5+(*7z<-;gv0<)Ev_=v_CH^GBAcocm*IDW_I4@+ogppob+J>_!T zEwiU|$z4-4c3Me3v)bNtI__aD0Q2N~P^Ajo4?(iYL^ew1Pp0oH3+ zuz&5UaQnc-0F<&L5qtg`*&8>5u3S}wVn;nb8M0sB6&Y++X_bIaZ3X1HTo|U-v{)tJ`8~j$b zW~ZD7=ReuM$m-f#+z(lAGF0$v03tZOQU+W$@@r8;f7G|MyrzU-kp;V6xx3bnvOmZi z5^fk(P;6hGZ-k5Wj#O`!jNB@X7ppIn9c`I4g;$@kQNFfWIDnO8JxAdwmvLl<``l9y z9|svfuY-LqOz-mGLU=a8_R>zGkm@Fz-9yI`qkI4mB)# z&_>?u+aLC^@`2$OykRKKsibj~b?aYrr+V2x4GiyB{>7hjDdV3E&DM=rbe45LnLBd? z+|Z?B=bK^J*a=QD^NX7y2dy4y4bQ*a+W6C9;6RfO<~cE#+U|?^`j@NX?{3Q%xcmga zvw#)IFg;pvr%_GqGa6t9G!8`0+m*ZQM(k(-DZ5m74d8& zx`P|f&c09U(AGk@TBGAyp&0!p4fD)XEO`lgqpNlE9;5_fDn<_Rf z3~LtfFW&e^S?-U|F#Z&h%4aDT>f7*^kt5F{%vkEa-=4yd5wUH^?wG2wqzi026L~`H zfkvN*%kgodxWkO=_9$90bk*@vS0!6WAjbADjr>A$zr#lH#E{Q!l_AuGHSpP(`JC@L zST_q4bp9obfTo2zeub46Zv_mk6u5R)YP4>VZSyphE!V>$YrAbYNGi2ZK>XD4Vy)HJ zw>Hvp;*e7EcO7zWTS>9ZM74(e`L(0v(7beZs~T7-H%lXbt_E*xElZhu!hvHbiX z;G?@o=67Y)HsRMqv{J3ZOSejlLTr~Wa&V!Q`t9<671atfY9bM(I0k^fa08X!?P3br0ihFyGhmS%J#ARr(h-CdG0dZaXLBgV+lj1D&#&CmDu zqp#l|yZ^i&*RJPzp65B|x*oT+5jFht8cLFPnqA2*f<+0Ag&S~rOVpowCEEm=J6>E@ zQtHKz)g9G?yUfzPR<=cMsuNGuO1w=MKI~VQzSPy0))D$J-UP_p@`d3lLCcd$W`D&b z7s-?%(S(H(FUGZVUzo|{{_!kpJwE@lF1X}k8Uwkd0n6c&4{@s?u6;%vT}zbYDFhci z<-_dsHR2G9=?_pn3vo5J_}Dz@95LvcsN7F~>p}t{AbXt#Yj21*6PMol2$eW9F)m zq%EIBo;GneX(CfM%2irUH**VI6ljx!`lfQ(=k^hNx-*Zy-G~uC6ZBnT`U$8J#3ZgP zV4q!*T2oa}N!DLDXc#%Q8&_V!T|j<=4}ZWMj=1`4pDL1ex_!#9=a$Be0;^|>13K56 zf+y@a_A`B*t1%eSMAvP230*30@}gNOu_IMx25n9x7t)7|b3nuLr+De}%teL&!}QyD z%G^Sp%l5nh8$-F$ya8j_{^{^xg}{|sdaG)Gx`ZS1l8OIRWCrDcd&NU--^0G*_3U6+t5}B{?W01_MnfoKL^i|humVf zX+xyDjaf}mJ`28?b3hASxeMvDaUBm!5rlaD(;wJntshT&C8lvkPNTKX4yP)Ij~Un* zN$GTgw4Wy(t*K}o-#)TOBFKCXrze+yW>avdW;bG&t-eFO0gU0Ha%+dzYMT4a*5~t# z?Sdj`O5J&m-?E0u&Ys5K) zogVr7czFIGHOq>U(PCk6)Z3#Ri9FFYgr{sUcI9M}cW!;yteD;^I4X9dQ|A2T_uV@X zAHHk=XQKQ3ff=FgyQ%9B=0G*7j%@n-`^?FeWXGHTcra=AOgO*o!&nz6Zkr9v)PV;) zd~=3muIz6sXe%(sIptB3`Aw04IetCi=OLrCzM#R=j*y}>I>f`}*rufPKE(m_JlA0R zVC2$D-uL&Pe=8o0JtqK3kSav;HWALsJxST}Y0JY$eod4Jst)zj0tOF!RR2hh`6IoJ z+iCd4LlMr*vNJSNfH0c+zUMCW0X9F14=>B$^tKgC@sP*R*!1gGeuifvX0FY}_ihHj zmmxR$!Osh0PxZqcpG)>GW>!NA^tjHs9H9L52E3Rl)Y)+tg_t%SdY#q+lQ|L}9V`SprgnL`zhrrWD zhY`XsVcEm)K!8S9hRwc)Qk;z{;=SiZ@T;n zcL4cwY?@D$Hv*$~-k-rK3Fs+n83o2tf1qByh+m_e^zM8O1+FyxoXO0=`coI6>ZOw% zyQZ0W#BNpS-YhbTIjdL!jBm|ie59`IK!6=%Q3XlA&Y8@;5t6GjqV?>Wp5dF>-wiS1 zR2kiwQ@z{74FTtcuS#zvrth~OiB(A5Dn(u3!yTyG*mkIwUjiR4q6?OE)wB%;V48pM z{-us2Jt3W{NLoRJ-3+M{U=2Pzvh+V#SE919!N6z{{|#r~aTqAi3li?sw;$TE%;#}` z(I4|BP!B5RG=Gp)J-Bpxv2DlJw*Q;YJq~cPX5i_BCm9sD=d-+Bv9I3PxfT%00<+uS zjJSjGGoDUwq{LSfv<9%d=Wt;O*xhQxH`|;p9`g%1Xq(YidQ^qg?wtEqkF0^&1fb_f zmQ&_GKB^x)_4qLA^Ad-~xbtfU)=@ANu`MgpNr~83p!l)>_r;t4saJD1#;6<<<7x?9sV~>U zVlo1K0qO<2Ys0-^E$7h7?^GJo8EN7|aHBe-neAihk-wp?$JeV3sSX3!%e=}mUlUHB?!d#`-ojZ#*7ego7-Ek!Ga za5vOgnIT?^U%jIr$OF%g5q|kyrkZM&q?72G9m`VE*u=!R+qt@9V=2h z*F^S1CyhlaCRy5vynXCuepd6G*@0Es-Jr<$t{Q#K%&e(gtGGTV_Wuj$iVR51fa)Kf z985p1O<~eO9@L_*7rXh9lhQu999uZD@;{V!qM3dEZt)=PZ^Ca6FMt z-y>VNdaGz*ye_F$s^LuZkwz)fQ7>*c^L~m6e|^o3=PR&Ai)r7ZPBe~A!u2PGe0JcH zQh$zDWy4Q`Bt&T^@}k|#5~a_k|CE!?<4tx zZG)W1H~Vs-Q`X`XWS9XE~eti!|t=tck^|I7!8_Dz|x z>sp76f^D~)3bP9pjg0;p^GlIUPR#}e9JE0N);co-@IjzU7rwx5Vz+L}EE6k|Egl6pyP)ns5-#kft^F;}H9o)umL$r+DIso0PG z{XrQ*ThwUt(t84Na9>^h4qKQ_s=##I+SFY_LvqL2*?2=2;kAfEuUI% zW6JP4^O&eSJ{rvXYQ(fu{qnC2%&KF44LPsy-J#s{Y=@sZ9KQr52x{%duMDJe$vN`v zs(*XiTIt!qEOWO5i%Yc_6qZ4*a1dl)ZNF!(Oe{tH2`h0M{DWC6BWpD#ob~?$W8t&;p*VnEFVLM#3ji`aG9T}9USRx1O`Z3>u zpk-29!Opw~rw*wy8P$<5(gG|xZ*Fnk{81URo5<(%r5eOfqlz>#dt85?*C$4nz21SN zdTJOYgB7pHT9m2R1at;PAF%z4xR}V;l(d{x+(pPem_sa_cTX~Nx8)pJC&uhP$J(6) zc$&-V4q$NxtfV*J*ci9G{&hj*-P=fx_J$;wxDaI~zBs}wpFtv(Qnp$K&wJjhkIh~a zfQ@F<)oVNfILP2XlY-ZGAT zl;+7nFtZegl16a% zCi6dEZ*$1!OH_o=*BIJEJrgZJ8%puAY{UWQ=!`HvC#Nl7^YR7%piW zL1p<1PwjdmS9%AVclOe9x^;{Fr^RXi-Xxizeg-#+Wk3-4X69|7tOC)(=?Mft&dkYp z@bF_DDyf9+K#p~4j?G+g-;2@mB!8=dOneusAac^B++FtFa`^8|RG^ynd?EK9nFl%g zlkohx8|a1LQ$>{au2q%F@0^M-nTwOQU|0Cip@bsFbW<6MO6qZO6`?mGoM7R1A%Q=NE6hEyy-{LC z4Zs!~f>aEAo8YVp+Zjl%l-vCckbM^o&^KV)sMD^$0ACEV=Z(>wsCqro_Cll8zgqR{ z+6mV{Emvya*_kL0oT&ak|F}c$AQr#yBjxwGhCY6vyEZiBpgEl#yf{A2+39O~{YgB^ zoXac_-hI9Nf&)cq1wRHtz2lc=#DA1Z5wA``<(t!`n_FZH?X-$ek`|J_$WznG=>AbQ zB};L1dwXW(=c~@eV-}aC4_)tWTXg2(r(5r}%pQ3;{n|>gxqhImT^GPnqBHqqzYTWO z@zwf_LiBWnDL&(o7+{sr7joRO-~e|;cfJUERrM`x*K@9*=uE)&HQ%(}o`H>OM>bW0 z#Ag=Yf}9wp?s&dKFqKa>&(ZKmu!!_Iu}`2)sWXa%woaKim}FIt=ZYP zHGfyFqVav+j$Ix)=QdP+IJE3>HJ@-3he$1--CKYyU_RwsT#Dx8_B;na{x)Vkchj#J zup_HvdzhwOB?^mt1Yj7ry@D*ZYG0Xh-F|gc+q6m*8*khEkP?@3Tgr9IENKHJ8ay{u zzO4Mdetqjp^ipT*Q!xtTdnLjf>Mc@#8b5X5T`Yd{z>~v1ZaPSJ9|OGrtF1Fs&Zt|X zlv2WC$&#m;*?uEi+AG=j%O$ZNG{Cqs=K*=b6Z321I!dXdGzplJpi`rVDPbRd`} zg9%TJUKSxQ&d%&kW>LE@w*NLpJ$?1(!6zPH{Tj3C<91yPBu_+s#?y4jTW7w&c2)otKbLg{s-2p{Q z*Z4#spB_+(!ojBf?ixA2s&$F-QSa?N@ot8nbKuI7-6!{uCHp)kM;!2(lTU4X-{4)TjL5N4B6{1$_eINe`TkI| z{iStrBRUW@tDq`<$XCd-?v%PA5S-YOf&E~ADQFgs^1Ehxp?R6XbyCBU?z><7WTG@X zvppE=MuF~>g`a<*s1D$M3Lw z3KUSO&t^Axu(svXZf4S+Y$Bd*+|dd4ChUgAv zP`_v3Z|;aipvw`*lO22gj)eJc%S&I#($6fu;zpAVN}e%kp0}mto#}b9zM-G500({~%x$Pjdtwn@ z`=(az0Skdy+kh+U*HE#5X7%@=TXTwnr14g?lQ_entK+qV(n7blA3r8M3;$sWU=QzQ zIpUKk#DGZb{S&VshPV^nsjN1wW8`O+h02M3(yAFQ)Yd|6KdfZS-%1lCgX=BgWm801 z!=K){jq}R$K`k*jcc+?tv8ba6Zbe!{^Vt^#k4cSgTdeV!d2Yu(=Q2$C z9eX7B3H^dEk|>CDO&4e`eDHikw6w8QyL@BHGjn}`hcVKcU5{PntHjmlTc%sg8DaZ| z%mMyci_cN}bc(%y?wGP8ifYw^(5B!=PLF(d`o90 zjHRvd`*&{kA|$p}M<#ssl1_W+1p0WoX2nzMd&Emyp{i?88!+v|iRRxfX^VY3b8-SK-7^**s&Nz>e`tU>a%>wQJ7DNzD<733JpTjODb;p`K333@}+yfxHLy)|4G63gi06Qv#hbUFx zHcq;(bD|~7;VFGa5Gg3#p!?XOXu3XfaJ=Rz`%h|m5?#DK<&CNt8YK!T-9;H$^GimS zW4=dE%V2%nkMYCXH}q=Td}sBbCCGm_z>wZ}*dUNUyWB-@O`o z`W~bQQRyR^5^L!D+Z=F3ecSHk@5ihJp)8@ie>R5EXWhed5%g}V)Y33nG!eOoQHva% zcba)S;l89f*!|o8%=UZmrpKABi|e=iJs6sv>$8fcxDrx zAlV`AL(_DPUc94$_d|~=u5dHm5YjtVF(-|;=S$+;cH?00SIO%`KQuVTjtY`R!SpAl zW!#u1%9$1A{P28N<0Vqv`Vr(8H3qx;;AIx65A>~#Z?)CyBUXbgezwj*rSlr~Tm$jL zzX`m#as4oYGvly5;rqM4^OulKO=+V7;>$LsyFBmBO60f``K8@fs$e0};bKJLRx(dq zmU#G1ex+tnV3CtaTDn9Gxb0N4ZBjSf>ra>DpTHFU^os2h$@b}m&q%}91s+-J?LTh7 z$TA;^z>Nu(##P^)-QnW>{OVqJWp*=+yHvPtYw)w778`0UiA&9AC^|Tpk2H*!%}CPC z`hnujF)zI&V)~nV_1UPxZvFVv*&p2v&J{A)aA)r}3KoxEpYK`BkHvyCn1_8l?nu9U z%Y~dkwz`v|8qM508RJfz5)1kAcCIzTpF!(cPEm7458*%SesDFZ&tmSICc2tQ#J#q^S7IUi!4gm1 zQJ6j~(};sa#Q}ou^^x@Vr4gyiO6BR&>;U$8s_Tqd7kn|PRa&jneRyzW<1%vh!i)5g zhNFR7Aob9>MN*c?g(gJ)Y{jXF)OTrgz*u5=qNSjT4-@zxTNt(9Q&w<-2)i2Jq`Iz+jy; zdR&=TeY|^zlFlIc_ueQC$6!P@V-$*#o>0{riRR${ue9f6Z~k9tQIqT_0Ro`>Vq?er zG`S$>N;0!T)!DGYN=frF$2!x2dtJIEhn!1$=d;!O`1&yZ{U7mJfQ>g zv2^sHn2s4ar=RTLeAaC}6n1M0*;+UGe$w%wHwt)Ij8Z-^xcpNwW#GGf3U|I8kQmb4t(u%m-H@cMlERAk#M?OBUvfWN zs`V2Q?m+oG`yqrv?=WWwFQqaA14Tm`&gr_k`Vx@T@R@+ise^3c6WMNro0bZ*-_=zxwsADCvpZo#wybglDf{PS0POaqCm*byB5q z9%PD#wN(i1u_+^KlIz@2Dxi0=_HyN zk)XUv>J>mOgXYVPpU!H0iefmKo8lQcZnO`#yUKMqxNpPc+&t_#NY|d5*E`k=vnHc+ zk_i;NTvzKH$2^qBqO_V09>2JiwZ8`hm9}-P%*O7sZd=(?lj^}OKusq(FP&h=N_Fo`DFo;x7J*GG^9_x^RsC0txm5S+ z38!i60y!5crfo~C`otY?+vebw4BXgXS7x~#xq)e4rjwdDP*G|r=o#T`$-o1cVgi%A zZc6|gx!P&KWx!F-)3*>PraUXm{8kj4Yat#4MHiQ~U|$OUh%el^c_ud&!?qds#V1mp z**p_ELO_2S^uuCejr*b!07FOtP7Jz5BPQn=Mdkw47~`j}Cd)P=E|v0NZ;oa=m`I>&hO58>1fQG@f*=iyB6eKDp%XT&)4CHQN;~VB%oSEs~o3q zr&tLXUwm7Yl$7Qv_4Qkpg9mXa+0Q;B?;L!yRN-g;M$>0aM4rfIp3gML{F|ywszk!k zDM#De3!f`&&<#Va;oUcpYgE%TZV;354YaFl^E(Ig_Ur+NnhPpb^9~1RnB5{GZ}Xa; zLK$+IdWSCYkP>qfaI;Y7qp11w)=bYv1XM11@su3xL=xg{7fdP1+<~4xX#(RN4PRq` zShj0g1)Jt~CUtJx(}k7b@eyw{M(|WSs1Ho42zk^PbKX}#(E3MM{O=(rASPltBa{}a z-Eh#ZA$}ZeSDv_|V(D*7&Fpv4=Z0%6E~WuIK;}a&&LfmIx}jQ%mH%9nz+?3_?NhkT1m- zA}+}}HpMFfcx&uiaa)feThHAC38}HqG5XJYV9~!50*0#n01?tL6_;%ZpK3}8jk*9X zQ~|5I6^>Xls%$n?3h8LFQVCzT(64*uHESsXIuF@ipiq#~vc9 zDbj~djIBBfWhWYfim|S{G=ZD^v)xt_L;6*E4|u=eEw>{jDQRPgn>1OjsK9YAkzOpk zFi=S9s@N@ay9={e->0RZB3EBOIlt%!VeCUUu2by@IRxi+*|YQJj$esPj%tcFbLU4F z(}nJ%d?rj#Q)?UWwAP%_O5x=ce&xcD@dC-(IM9Rn3ovFou)dFFR3B5(&}N< zXF&y7vUN%&^$->UR+P90G-PE;ml}IAr1!l(U5U#Q)+M~~ivVbT`{Vs*9`U?9#UUz}H;+J7HV~b{9kCJ~Okq4PI9iI_tJHMDFHQ%DJ$j zGD$T~r>>aw!q3H}PaX(ulP~LC9^(Fxyx<)(%f8dv{E15$h+=%!DrPiv4In@I11%Ukxd>pL51qVq8|SD=`3&f8U5 z-lcN9E)+BCbsS!&2@`A$u~KsU^zu-57r0V`_GxF1plsJHW(Q0Uq^aNfBu;nqUEif$ zC+?9tT5JN|xDboJPG#{7AgzsrrD}O_40vQdS13PNtloiWc~Bg8ni>AO`AjHt;MJ1o zSFSA!(wFb~R&nr`%|9(Y_IVqo35_lo+ueQ(Bz;Wyd(q-ToGEBW&>F()8Fal#U-p<6 z9AUy05#qr!$7^?f=fu{rmHv}+{#lEuY#>vo$84{bRuyDXNhtsxK*`wuDQH;3@35%0 zPo7OjBCIt?0yK&85H{#ZHKRC-xz1g^2CO+EF1{7(V&97$jI_=;+m1Inb&5;HiU+6- zP~Kq>0*Jx0*B4KuW|__Y?V=ruUT{gT$tBw^nT}%h16Rp0>;sp}?7@o#|H*DNuFvHC znLbiB+;`lH?_ImaJ>s-|4rp?0<5nkk=g@k4^x-^Z@VYGbJIG7-3r?v!CKZHW($ZGM zJD(t!PlW_%AF-c)FM?~^?&Y-~k@xd6Inpwtgjz4kxB@=jGVTkjV`Gn#4;Puhksdia zt?2^dzhuZrD3ravQ0RO`Dyc-EhWG|k^IvlZEMN3qzMDNQVUF29ZjBAcKX>+_7rmP)lfQaa4m|uVm0JuHg+m-CsK@T_G zLi`|*GQKG!>UZtT_Y#X%hhAq+PL`cXPdw#RG@77Q<`AR@CZGOC&sF^^^bN2=liC9+ ztnp$G(yZ`o(ZYu`@N}S4ucc_sBc*ptZ>ifNeiX#`}sbDy`;9>F*w2HuOnb`FsbKm1;?FDE0qBWRD*czr@K2maJ!>v0k% z#eA2f{-idZBPr&W>xv35J!1chu;RE%jQ4F1>nSJYh=EXPqhCn;d7pw_qg<*g-CyC; zNcRl&D9SD2s5K{EN<#64?qFB_Vq7IzrXbmaP_lSQUxs33#;6m0jgn4@ETdvyK@I8J z24}eRp%dP=S$xkkmN}^(lTCvGQtd}~z!==O_HDIdwt{c%gHv_A4{|+EHHpuhcxgoZ zc`Cp#=tB?ibKN^Th*o10wzz^$pfw)pl7U}g?k<3`!qBu_KP2HB_n*PRx)sVoFmF#* z{R>3w_ZdNd+Pa=KlsL0=3llgCU%FwDKADY781s@YL)lUSd~2**oIOQlYlSZJ9q!)P zBL)h=Pzis(g01s-xzs67OX3Kn2w~Ev-cObpor0XcupNjk6BxLo_7VblZwC72Oaa{b ztrj0&n#bH|#Bl5xJzlMN#&}}Y*QanXsm-tcf5^XYNx8DsV)oPZ&>%;<{D4qM(<}(f zAoxhWa%aedh3Fagx!poX@4h5B+ic+4?02?5!x+`)u?WZc@O^M`05ooLAt;-x*rVEY z9EA(@o~SX6C+-Ix8?Htlbc#w4r#7{jzGxXzSfy_a@2jW!O8I|;YWXO?2Qo9?VU!E6_m55H4tW@s{ra~ZEHmZ;a!XqVwzs(T3u_ilIVlfgZk#uWJl(Hj zlhOBDLny8n>YpWe`~!%FM%e%kgg5%Bj0I0Pf0FDV4vfZy2&MTrh7Ah7x8yTVZW=iI zV5$oEIRo?-hI-`W9%Yz}>w?2)ft+t=sUlwxY zKX^cHA2H`tHt6!;_7Y_t&fIdXAjopE z?33+$*$ZisU!Cz#>Pw#fYw>o9$gM!y7&W&bD#h``s%idiTmb_JaT@1vGJOSb)>G{d zNrqrN{_y#sr3i7WY?%Dw7oIF+<@2HFG<~O4EW|Cp6&| z0{Upd?FBoH+a$lODl-h*-AXi8Ov0EXl!$Jnw!&?o|L9DkPBY_5g^0~tV`)AF$KK>V zooM?uyx%k3+rJpRf6Z>@kn3>x_+v&5QxJ)>N-CR@$ij^@E`wOpwj8e(v#|c1=@$vj z7ijHU2P5ybD@mr7Rktj&%w%yb47G`?#RYXv*Lf?baso9e+4RG-K$&~XPLr=om{%V3{mvy zTvY}uJmzu?|MV$h@}cNU-z=|+XnRMH&vIex~WmiH8`|lI_SLrKOnJ0m^{!UF2!S-JI zA+fKz?aUYAxe@DzmGI^30UI*i3jY3qykgr|PMmKCf5NytdxCcCK6@?6L+q=c%5`uG zx`4d`UsN}II{loBX7=5m31bYJyML2O{@GLyk|@lB(T@xXUci7Hg+IPd(kX;aU~v)~ z27m8)Clu|PeYZOJS)q4z($k~Rx0+J08MBdiQ8DEEuVL`KyT+b;x3-pt79@O*9Ej`9 zlqCJ|(H0KcoYTB}GpQk;nW-bUq}JR_aj19YmxQh=G#+%3^?S-*yRumos+fLo0JDErU znfSy*wg6d~zFlY~DRHu~p28IFzeNED8P5n3*=OFkEoyo2zAQ~vCXm9nOe#x!gEI=V zzY`NfFm^!XoAEiQUiYp#v_cmPxA-{Y>*(9$D)1^058=wOtDb_qSOV}Zs4!~^*=5NA zRuimC$<8{F)~Gw}-e)f;fUT#!vQY&|k`mGuDR%I3-_O4b&GQp z3}Pr>+LU=Px3~t2FH@jrAX7PUqv?k!W6T>IxUbs(zn+FdG`ED%R}w{+X{~4KC|&5t zsVv_*+1zv=#i$(yB;HWx`VPTs>x8Wkv+>EZmpFrSslUN7l`;iV+>`Wq_i$IdcjOfwzT|6O^DiOSJ|L2jru2T_?vA*@cEJzd*8B+Wo84nYAp*xT$ZHMpg~Nb z;kXo=?tNo|iEFjmcV)_tS53%D1bCFElA~}F9R+gxI+-MJ7-ZBay7~?>NQ{k;A}X+R zp)KhS;8~}*Z`$E4`v6zB-LFtsuN2<3LD*W5f#1mRc72=OnJ(Jlr-e~;!MvGi3?x7o z9EauQeUIX?J2347ThEqFS89*{(}S{BGlEAS!67{YHoCf;A3Q|AS#JYB*)}akPmOdk zJ|6Pc%u?hR!4Ikb&q=LFf1dBIT{`Li zdNKvin1AGMtMP7i)kWQf82pQZ9c;GcqfqL(b6=z}byJ<`JmB1Bsxb^lhg&_CwQ%*j z@PLCfkVhwo7 z2`ii5N5~Y&7Hoki^X0v@N$5N5ASuAiXH9_rc)LPUt^ z+LJb}ww_!_v}}&MN`C{E9M%xa6i??eudkl%^X>x7@9`}FbR;-PwYLI9!WD0e$uDXm zt=lWl8GGL@JCDl90)7_^J#`Fb|Kp)I@c6T03YHejYPtjTT0Tou3bp%}1uG3m@fG~q zg+8LGQKW}>^hj4Ic+2poXuv{9I;}|GYX8(R6t}46QceBoGLtYhe;+EaV z3!TiO9@O`$4v0`E7p>5`LIiZVQ|5 zTlIK;ocOBo%j?zvS?u*;f%|?Q_*)UnC!wrO^AO7Rhvi3R4yJ%ExY0$%69q)X3JFXV z_b}$*O=3qO>?S4JL8{bhrIR+Mj09i_Y7Ywz)UMX$|30RqLv`OW?;DlZANe38xi!L( z=$+SaXA}aHv84*|B$sGeroVnUTdw+a7LYHr1EZnM=c9t3I@InRfUSLRBn?8jo-Cc@ zTI3_tYNT=WILWqYtJK$_ifpnDIW7vc2!U zAP;N$G?Oo^2)R^KP!q_q#uN;DGdR+ZIk<7FM| z)T}IxSgFF?&1d|M=iDLeJO)oQ8{HKDJKsxUo6QE&pB)V)b=?py_)J=UR;=!MgpEt$ zk8ts`T`%2fcfH%T^6cPjSgZZAy5`QgM@)~4U=ci)+qWYY&##M!Ua1t zPtIXppzOX@?Y+CBk8L!KiRqJan&tk%y8LH>0n8h|dKE2y$qn!rNGO@*U1mU-F@0c2XWG-F7m4vWCv8InG+aIA#d?RDr$& zD*#wFxY_S4cs@Cu=pH9&HEF_zbC%Wn4B*&5WN;n#=_e;a&uNl7+ucHG zz)xSid~26vQH-&nio)2WQgXq~(YDb7W)?rBR6}7R`)xytyLnR17_Y(ir7K#EAQ`Oz zf}oy;x}pVAry{RnUNxO96A!^MMhkqlxbGsA7^$K1?m3+60?PbyM^3%EW=8pOUkquy zZaG`IzROhoi#JQD0YTL92+c}3zv)B$rATcdb+XSLH>%|KWoO>hX6;Vjqkun2beBp& zGx<1L3O4e6O9RAHY1W%wjb;N@O8|j*-qsWkhZV!%p!KY#=(Q+PvI76zP+X%i|@xPpfQ zMC~DV2O0OFxUyUB?0sf`YyulfozZ%OigfuN2oEfRclwIc@_qHn@=s`1_aSp`Pa%dH z9rNm?tNLiBzCA$HAHPWZl{mQF+TB4zm@(N>F|=b^h0vL!j;;Vu*w=mACFH@r1vcmP zAp7iM28d%O8T}+CqLWngtmU`pc4W?O@5$BOph&Y;OpeOoMrj6-Z%7;C$t>!gqxeqgohyYA!}v+>4HSWoBB(mg!f$b>Earbb(&~vNWb-_eBmdzTD3= zXHsk^LK*ht~jiT$|^yuKmlMG2H z+&XEN(HU_Q7PT9Mj+d<=jY(^mn2hycEov<}G4zXknZue0w$Q&sCkGw&Dfs1fkSM|F zy9qj%{UWF|=cKNdn}hH9_4Q>+4aerQ6^3lpf%hHoC;OFUL>|uj&&Paj(MS9wB%2rR zDbt@G$8>ofwOr=>3e(8xE^nbA^!*OWRpD}({l#zYvTx;mOp5<*qH{O-&C*b%#y~o> z6n+_aD?e~t%%#5iYm~L3ol7`DeZuvCd%2|7&t;d?fK}qVeBn!Pg}Xvy#qM=VwReAFz@{k>&B>9Zg~bNmQMRik5REP$e zvhZqN=1M$l@UBQiuP~HAsE!f2{&xV(xg|{_uO4T!dPT)G&egguA-G%**Z%wpp{u~9 z6UncMwFnhZM}h|jO5SK{1b7AK>I~(ZaODsGWZz97Nmt73lfdBMl^R zKicJ~gsFcN7-#C0g+2OHM}}D@^))kr(CWz%DCxotN+kh3nS?$A1N_y8&Z}1>Ik#-e zKa)Rq%roIh=;BRG&1UoAsByk*YkMJMq8+~6X1*LJY<6W#)dsf)w z!U?bH+oN9}!4Zn|q+bPRKbV!OM{>p5181rK#U43{?z{wE>JY@-p#!nS)7xCfHPT4z zT{heNW@v6Ak(Sp_9TLa|ani2L%C)^sEr^;l)fq+H*v$jR&`K zlbN2I*!-*Bj$=znKhL{|=Vz(#*Q6tUHN6fHABsN%C_YCr=2{}sa_7xt$q>$ioU$?# z-h;E5Yi>T>gbiQfF!&|x_CaF@vQDi4#UO-T6~sCbh|4ga#OGEc5~ec&7QhR$D$8!5 z*?$AGhi1e_m+U|n`UV1h`0iG;?aM>1y*9zYlY;yJ<|rROo9jD_ z)HN;4KfV;Cs4vSfd(+2fXZ2Ml_?u|G?||lv-|P52Ww&sC^y1;Uu0|*PYL4Puu;Xe* zX+foFvGBZcv#Z&5;XxwC2FkliX(3L;J{B^3I{mH}fW_|kFHd{8m_CC5ggdx=vp8=d zZboX}Lc2oV^U4U|7F76Mbl$&I8RW*K05KT$IgI~q)|mbAUMJXDQPimVd!>d3Pf z$|{nsgQ<3`#Z>FpR5l8Kk-+=x|mh2tqvOAeW%n}`YyLF;6Y~ z8LjU?%?sA&!SSOzj=6JS>aqvK^E~)DHC{-!8WX#Nj(83DE>AKzIqx#AbYg+DH~1d{ zOGbPSX+JxJGvA-dR=OKC)i+<_+7OFZEY*~4jP?pQcV-<%Ig-l)_$wL>9|_VOE4>b7 zDFVzuWZnzqd|k;aL}3*&7d5FpDV_ys5;5gSJoOk6TtqFbTHyDemajuRB*wDmMq~^s z9U8&G7iu(^Zx`zS8Ts0BH%NlJObS|>aeDHdK;L{h-P{hE_}NQYT2{?W)^d#aweC94 za|wLBokpHog#P+q}5lDf+X> zeBjA|LZdL!NZQ*}7JmDAyAF2c*AeG90O2V5N#eQ`?3^K&3* zjn2a=lFP{2=CaJCvn;gie5qV@l$W&#om>#x0gv;3)tPoAwgCM|*@cmszmj)D=3V|i z4GR5hM^lv{vFsksRZ8dO?zF zC2K-k^FJ1MT{GG?fHv!N5oeXY0b^~h>kIXtl-z0mI<1KzADpO-P?xYI*8NG>GH|g^ zCJ0`zE}3_jDi6o$8p>a9I{Qwj*rinV=he&I2JW88!T?qAROcmO=#xLQrE-Qt%Sll4 zw9u}@y7s$Y4*p1;p4ERM$!WwVYJGwEs}PFz0aA<^3C7(RuB2S zOhI=)A!wTWmVFQ?H$Os}b`L7Y3k-?Iz8 zx*df;=MVmup6l)M;VPjA-j9}?)CgN+YZCHMU#I1bk}mXO4h9lD?)s9Ges|N~ckibv z5P*Q-7@j-^UQlqiJ$^=pC%=Antf=u)U4Vo;Xp#QJGG#IwPyKp@R;j&L$e2uVoDmV$ zmxPnJ`Ik0A2YoK_N%qFrzn9g}07pQ$zZ-vyI*bwYLdri6;hV-bJQT}(IB2@W@|rXK z)r6p~z2gADz(zrl*YWh!PmS++GJnELHSb+9^_=*Zf<=j8zG{zX;~NK6ECG{`_MF$$ zv!NmLLMyl4h52(9%@KK*9n8foG5-<1xtPX}Z|=_T8nqn=Nm;#$lC(Im*5huVco&&3 zj$hh#B~13hrSrn;831hqXzq{NE>bn<$Tr^oh?i*(hZM&9%^fQ|KCQ_cseZNALhb() z|8;6gf|{6-&|eN?>WUyUUEiG~m39#~U+irRzvNYS#a_jhwzyl^8kNC-6Y4vyR`XL; zc=OG8!GF>J=$m`5(G%3Bu-MU^Hf?s)6LDmhMZl{$zVKC&#Oi+T#ajDDzI3A4Bz$K+ z+xe4P_W}Ou7XN!25tHN7>RHdsE9Si)NHy{s2XA1i2gR!6*$FS)0ekGSUJ{8+(p>P? zFnPaz*LP6vPky!crIZ&smoJJ{F6=sJ&NBEJKADJyj_n)oM^*z@T0Tk2uV!1Yy>!~b z`!o=`+X@qsm;U$i^?oJ(7c^cX%4b8b85p_T%KGRerK#H2E|P^88J3Uxtq5)f|+ zwjyWqK=fl4%N}C97nwb6TV2ekuM|jpv!(tg2Nlu^WP0vP+@{&bkwdO}`iWoa}1vH8|Df7iO8xx+)n-7#sqnFSn@ z_Z@cN>8_P9za#mk#o+hl)vPO3>&Za_tQO_-XLZg}q2NoeJguL;fgJMSm3JRe1c9p? zii1s(x{s#m2b8209R02HqYnedfz8Jk0kxH3&DY85Rddo7%0okk)uxI|&XZCw=#k>J*e^A z3sDX`d{j;1_-&w%CTPt`n8 z1CRQk-SPhOu>_w0fn+4h$)7YU8+q+1gDk{ZLOTR4yPq5^3;Qs+D(qKg-+itK z^I_FZ+MoUd21`{j+)x(GALjV~i24eLsJG{BKvWQE1f;uDIu?*_q(oY}yJP8)F6pJa zySt=>r4g16cZsDtU+?#NfA2rApEEPh%sex5_RQzPCi<2vP{n!g@Xu+|HS4Oqth=4g z+Hc5oB6=br>w~xzD@I0NUuF$Iq2t7}bfvCe+sQb7U1Sh(T2JEV)enK*jx(<6{feyU zGW7pSZ{M@)EqvYncw&v;7PZcY)K|Z)LF74#R^7KYP3e1s7PlFp-rz{0t0e2lHT4!9 zRbn`~WB4SJKrco&mP8D8V-3IidZeH}q%M(Q-5t0l13m<+w}+N>XLJ zt{~9B*tDFX&2#zwJ8zC+x62==lx8)Or2k8K6=SzE87}^ivD?Ji`c=}Ov`&>v0X24M8AYF9VqWUIIAXIYa6!)&AkF_=D%d~Ufct{&~Yi+8&7zl)R8I+ejc006sv)i}2uea^bKN!p$18}^ejs~uehvy(g zy=Gl{GX30+@IL+4tEr>&xTM*8ySPay{YOtn_2}(O=<-7w`TJh~WVy*IYziTE(q|md z@9ycR=!zB}HafW(%n~(*+bS+R@%A;_VQG=n)N}T~PV6GE{-w!Xi8lQDIl!<;Z=a}o zN8G6bU9U+NcK51jewpy70%0BCH=QZXw4IQP=|?G+qPmu%SajLk3Z@{Tmzfn%>Ph~I z`2i8F{YQ|WcUzW=*rOqVL!$EY!x|gTMGT){GL!#|o09~cQc(ATA^M(Qi_Xxg2RBpPTpKMfOP8>i9L_9d5^me6E4GQ_vHI(s@5)K90!e`WV&h&Wp% z2iKM0M&s1_E}6N+Vraew8GypaYcqiDigT0{8|+F9E?CIxm=<)^Po=E=i!A+Q7YQ`g zv)NiC++tn|<~MTP9!0o2RX_Hp&m65Pnx0Ulo|H}<8(ABhjp>4@VaqI}%4%$Hi~=~U zzMAFO9L#l1oH$>Mk=?B&%r>k94j)Wu&+sj$zC`T)-LA0Q^CM?|1PY*qsg3>}+el8P z?sPV)3Y65bje1Rwe+@)low_%3IpIBdaVVSAc;;>sxGp($Z~1|08Ueqi7fC^W>w#~2 z>Nnd>9>qnQN7yUZDm*tCqq)v!U>?F8UFmH7E;4JJi1yTr`E|Q5Q+uc6E+kF!IzmB{ zp@gI=bP9j}#Ipn1>BJuOYE>1$tQB)MxZvWRL^Glw0Y!GwtP3UniOIpWGTaJscJxPj zgHlU}?Yv6IdOBt?Kg?V56droQ6!{53Ya!Yvaxk8pC- zcHBCm!fp3~j7_1ujDrG5s>Y!`#lv#!?*~3~!vQ#iG2tzSMxYG`F8-diq&e%}7I!cF zmqCWW1-{b0Uj#($_~Phn*b6%={}HO*`teq6XGJS(>8oT3h@y9}KDP$vqoK0XF?HFz zzOVb0fGWH)*@zjADj2!^QWP)5j}BEy2pgD*M5dQpQ}j5khH3Qf<8dOL4;xdrN)9&s zU8KvSC22e5!PLJQ*GRYTUNA{9Bbm{%yUR#`y*mE9=*>|EleGwcFpDTk0_UEvQ(o)G z(QitLA?yaR>|mK0=c5>4O1c3G8E~iDzE~;zE2J ze^1e;&gsII`(3Vyzs~moXnOpInP;)A0nS;OV=3>DXPN{o|A3G1n+=~F+$(VTzF>S0 zehl(Mbo-jPw$|uEUnjjGHSV$SD4a3In?b*+Yz1G@4^{y($V~qoU;pwm;iw@CZR4YW zM$tgg{H~}3;sook402}!6nbDDk3KWpo&2fxYj&@Va-EmaXCZ z5lYf*czMUD1ITZGN|9>ecoxeVM!nvf~9a3&Apa>Y6G@X()r9xC`CB2_Nn5 z?W&rch{{ON(bzrJzabBzF}KJH?F6^U+hAshpw)<~Sa<6bkYR}NI3{;h+wjNB4L`S@ z?1VTWcY#Av7B|}8KZvTYd-s9K^F3nFEYqFKP#%4EXZ*DZ?+R4ai|HOGxz>?sSOj=% zHa(2`IZ-&az3ecpC2+h9g2|8rLH>WWEdAoMl9q0z8xARe9%{vcY%|ifKZvw*ffyAs zwc+HzJKY&Dod~+td}*wtS^oq}hrXD9CsHk{cKWkI+RDB zQ7R=M0gvrA*=dvJoY_2kZL8VJ4vStLZL!k#h(EkCc~V?^B0$## zxd(wn-=3#-;%0~m{gI|4ok9rvO6YiY~5@)X7UwpA3IHrW|1M#o~Ck1SBtofQo$_{3}5 zKqz&VoQW+r=0FWKY#Qd(2_g}g{j`129G>eJK*~t8SMrJ_X!2OS9SQU#4cY`uZ&$i2 zJ>yWBq&`lCb|1oEJtT=v-uF3KYiQrE%4kW&eIB#QE9$0Yo1tX}g{u~uU^?(M*2rM) zUq7#@tBC96*u*fzU>B->Wu&t)J)vdjhT~4p!MVLFJGmGOVir)L=M>~boNd9@;b~gv zBG}v>p;dfXbf#8``pGJL ziKi%>7&4`+>^C)^Pt9^QiUO(8UqhmEndzbT^@TNp8*lHphJdJRxWLUf54StrrC&&D zB>0Xrt@`_=%{Vn$>;b8@zqNx@;JhZnxleB65sRM;Q*wFX<7HN}V9oHwm}m;?nk;J( zmAh9LIh7Lsr7j_|D0RrK4XjO;_HA@bOfLmx%vI5@+ref%#feDM!?_||%xRtK*=PNE zyqT3(uHZLb^#EWk`ab+lA};!L3&YfDYweYlbJg(($y| zWIb+|b?Opx8p}(ySr?LfP>Ww~V;S7tr^JjRIkosBV5WbCd;`y+iuaa^LO*eKM!V!a z>+X_e0eVm@{yWLgEzgQ3guI)!zx)WBq;I4!@fW8^tR9;}es!PLc9UhPSq5r!^jjlW zTSYk9(fu^ot%V59`Z&7sI|%wg)u}UX<%O^l65;5JW@1$DOzexIZEt1X`Obr*16VPB z5kgKE8M%Pevm$l%@266E0{jJk9WUo78^RFc_$)K0yiD7VO+R?zke$6%f&Q1%2O7Ya z*}gc-_O?!uKEFbts2lE6=52ge!In5*mj9fxD}=E`3@fDSM*(7D0te>@UL^3P#vrHw zDv0Vul|W&|H%B2ab-_)lv(f8leF41J>}jGsZIv`0ud(CL`B-Of^k8C$oGpx6f635) ze4l3i@!0f3pus_)tMg^JrO~r}Q?sz(?=KGDAUS@3{ujq;?^ctZWQ<<7Oo0h@^1oo} zQA90g?smxDgpKiPtN1_<22~*{Lp+^3Kbzx)_oJd|%6D4^GBQfYe-73&K#L#UAw}KM z*##e4TwlXM^uC&QNrk3IC_z&SIjn!Q4G6$-Bx0$Hw)pVgv_ZR2t;`c^m%Sz&-R(t& zx|VKpsCOpgHpz4`bTr`vzg5sXwJ10zYIZqCzw+xta8B%wZ=oaGW47d;>40iz`~@!+ zj{@USs)gEwA#BFo?UCqq6EyRaio*?=+zVfRYITE_Cd93ckar5ht)1>h&5Hl1efgCk zJ)6Em^+A~#{Z_h7j@x)kyvkZoPsgd3>cz_G{dN0FJ!ZfWO8Zb!R~CvlOriMOU!2&C za-+2|tqqj56G(rCt%uEOd*8=f8Lyq5jD^Q;Z4Q-}SBpsI+gs~sAxpXyjw1W*Gs^_x zs`pwx<=>Mu+0xG2d9=G)c5sa{u!`84pFTdJ4h|g=wLYGbOMLOd#ks*CT&~nZCJq2l zTM^ZkbwOzMK%q0$-nA>|*;AKcRYbXE?xa{!hG?R58-nLIbdMaiUC|M|X z3wYfc?^Yz1FjW4w@-9a^?8UBa+vn%6?ErKs&}SyC(_>7L(99!Wlort&n(XqqgwaBd z?-RN49P?zmcY*~Bw;_Q{fak2?l0b3%3Qdys3iFDOmXM)umH{kkQK_23MTyPV${U@EsKnF!sOcs3oZP zj2(Ns*&p=)Ty@u!1kr|M=2e^O30-Rz4Tdu<8&H>B=#it&N+!}6elKe1(}+RK5+EbH z3u6w*Do7|)*mr$Ry7%LBfpXb^VhJON;sRfdMj0za1iQUdzNUHx0wKTnEyr!ncxd~`Yoox=ct_Fb1fA)XsSZu zPI`4U#@;!jKaX3-1^M&-F~d}y*I*rgF&R9 zd>TqgA+Foa7W?fwTHPc@h4)_L3i2BAVeKj@%OF2gG$stDS6K_?aH<@I?Lg|+C!HPS zQFrfWUzP`Sl@7BXKOCAk~S0+n~x`YCso zo8BV1&EQsr_%kKI!h%EYh3$ZCkIm017i9v4G*M1cnU1D;dIHN_5ooJyllHGkTBGGU z(AFAFP__6OkfBKrD{^wU#-N2G6gZ7u@?*ijY{mco?6*pWBgGMcWC6smTfQP<7Lm z0im;uwEHYudI)TCd{1LG^XKW`@5aiGKT|8x{gB4{_ z|BeFpekpNjSo_fL!L5Hv%{*rBdF9%d9cT9M9nmoMaPt);f+nW5cYpD>K+*A~uEj1tNGwdj|+8;*E)5t3)CO-cYofekviX&iM z^T3nLq51NfBE>5&DkiJ?deM-#x?bw5kh8qEE7ngt(fF>Z|GL7al@%Yiw;U~d#yldK zdE405IQ4Cx2;W^U6u51NlGu}tl`}2aNjRS$l~HN&M@0@)J;}iQP&LKu!_=Wd*sk8% zuV>5VeXNxZdh8Y+V7~saG5vkt`4_0n_H-;83DKZu&B2G6x7F4l)>CNmkAV z-bWdqR!jf68TBu=UMH4U*v-4PCA!t|c z+EZl{qnVk?N@PO2$Q}#sKlfJI0bG2-W%Bafu052!^zgPYf*oJ(2`WFa*y7^dk?od;+#H6pCi4Zj%?T~v%IbMW~WUvUZ; zrHh{rO9>-n3;GwrjZ3PmB`q!RCMJ(*DW*vK8X}-U!kP$ZxX<@h%HkS=jvFW}u*JpA zbKE|wdGaOfOYNTjHPc5-$g$@h&(Ri&pbAwb{*snY-gN}*tZky`bXk9(GaSTiZFDb| z_#|x*o^9W3mS5WxHmP5xNciTj)L~Y{Q$TuU2M1B_YAZdSr4Uj=%l4C`p_E+#t1T5z zW|~CH5~ZaHVnJb?bIkLnee59uc=K}d-Xk`9F`kJZZTw370*ZWP z5Vi0>I10;MzH3g%5hAlEn?wW^Q75T)?f$lY;$_Nbcwzismy<-;$=e5=NKUYEvb}5!Y>py}jF!RAlP!T>4GD&wKuG=fMccD01ao44xkpm{Vb_7! zSC<52A~|v0%V>Z>2wj+Fdk=dblM(Ue*`>8Dg_X10oe$=bo zasQm29QN(N&^I`HI~kh6Jes}A1M8<`2h|YMAgXW3U5mrXpoL7i&37bH-!;^XGO>RE zCo4*8Hlst9F zbh2k73ZLk7Wf?VfZsRcSAyZg%0(8b#Bkp_BBS$bjjq zfmUR707oVpdYt6vD5`au=s&I?gq|%V=kN^Wa_JRslDfR&@6s>It0BBGo3#}7Msipe z2;y6JMUiNFHFmn7usqX=*u#?OlCnJhv_0NyobDIzp!T*}<&E;R0y)v77(HVh|AE+- zlpsaA7wjia`{@>{I$uJR(ZBi{zoxr75+D27+suNTy?%aNlg$yIZ{lP}T%rsbG4hjC}mTc2hz5mb~CLC_2>Yv^JDRWg9=F)#JD-Iv$93#U{k z<=mAwSf?qBef^PEF(+Lo_5;1ToZ{h9C^IJc;M(JTJP}hbb=xIL3zQ0I{vl9O5WU7| z^JX!ppUcpn$Ys`I^SlrVtp1+v%Fyklz2EeCf_zbPRbj<-OzeGl*oPY#t0%zqnrzG8 z_Jw!_Vv>2UqYVx0v&y3NDAXgx-JP=7#C`)2_v3WDF$i3M?cGPiT021`W2~9w91u#7jd?FSEZsAP| z3q_E2co;wTjo01R0|-fpquhxpMt4i^K99D4v{NqHnO)Q=i^i3S+gvJ%H8HmqY*+qZ zRXD?V2~ZIfzHOq1RV|+M>-J~^cu|_yKbxpd%b>4=l(xxtsbKRSvVU)D=S5h_%tKya z=1u!~`w&`}hN8l%Ug?rJnftKsoY+x&A!ik~(BpU>|NO3_fRPwqjEg{my4XnPlNvsK zr_M&i2Z-}f%pMY&InB_AyuequxPe_(In_?nAS&pyqs5WG8;9h4xVHdbDN)EF`5c}W zqzM9FNfbyx^T#^x#Ag#G%#s7Z;Gf37FYw+BygXd%An3S0?u*sO9eH;q9}k2CLcLV+ zPH?ge{p^UER19<{{b%jDIb6(%)ag~WFB+1Vva;w2J}mu|ns&l>_Je~(Tu4&MMFIe+ z@S>|McKmW67)~+W$xjkx`ytQt#{VRH zkS4Z?cNQ`$9|G)jv-Z<2%;=0SE!AyJflFxe#x={MQF-n1l>5*H=m6w>paVT8Bq0jd z6H|4C-nx^i1`bRSq^M;EKqH~_9Ojul)XZYvbFcu>gxz41zVPE^0l)i&)!Uf2CdOc8 z#lz)@x(KHoxrGV-f&rJ+UD%y>q5depO1!EM9}F<7gqwFfP@eQX2N2xW;F6XODqa+M z4XICVJU11uXmm?)9d@tfFw_X@w#&Qfp?+_%cry7a%(jpk<=<#Dwe2Y1VU+rZ>?qGb z1gzIKy1)|X#S7x{UmE4S{fuNjzB9Jri%%~6c)1w)ZsXAS{K8#X$U=Z`*?)CEu7;$v z0TzD}uoGSxru@yn`|w;~^TMe6QbJO2l7Ue59sGsW20{0=-5Qui`!_KfuuEq^Jx(OT zg3SNTk}v*%Nde8i3By}VMlbNLi+nXM&0;&Yg$r_@*G%=5|H33{TRR)<5mnEysHowS zmh2DaC^Hs3f={3sBRxxcbez_428>b7B2`=LAOJ;M6w8 zIj(n~e{jAA^{e;t7K+MW{t;^~GTL98TmJ^dvBKi>_F zRa7K1BL7i1UQ6}-%Z>m}6*1Ir;am-=DaVJ`z>sw?-ZBnOsHF+fPJ^(5iuW=SO}bCF z^@fKocHS$JiJ}G%#uY5>DTWOKN+bbES`q%Kat7l(>gmg*qqx5kL^ek#ec>kFt3)lCM8s6 z#o2Qg`oQ`r8DdwdN)o%fGdG8j%g5RB9o&!wBecMUNS#%`=pTIW?IW~m||AudPa+A*q-wd zp7b(@7ATNG7INaNA}2`TY?APq@#rG?I7hbvzhCDZ>*Bhih^hKE>|k!e$#(_fGgXw; z;P%fGZvU`@yj0bBNY)4L#EVbIl|JQvXc=F^B1Z;-m`HHW)+N*qKU|%Zc636Y3$53; zP0HJcWlm4KOBbn&WnccA$*vYlj%`>O&|^p@Nk|T!R%icy`G1lvx@P^_Mr?J=}c@@#lI2GEHQJ}1iq zty>$2iaFW+qbA^Tx7|y5()KdyWW}<%3xlwzvC}~$3j{qc7?WO~ZaIAYb#UxNvB{1b z45B~Tw!V2Frs*#K;E{Yz&x%;ARP9p(mc_YKJ##6zdnYSe#1y(U-2u#B(ag zX~bSbuQ3nPax)QVZPIxXiTqoxAp`9R5{swE)qyc>g`D8HO_!SH5af!i^{o%vdic=o z%O>#6Tp1U`%_OPmKQyA2IrH*9KwP@T{JuQ)hjhuR#4QJB}Nr2fxGgj z5K=*UDYiS=W4;|c}~ZLt{I;~!>pu%Sw+C%FfguDG}=8rv@rh&D?sbt?DP1(Tl& zDmz$|IVAV9?ZK4_B`uN$Dw);lQ%cVTohlYSJ(E#x?gAz;_5FE%dmW$7&hiVn;O}lx zu_Ue)Ss#L4^=O}s+bn921-Je{(sEt*81idsxvlQ%&}!b>8_99knL zFdln#arfD6+n7+vl){CtCSxFcvv9YmI)EJ%UhZyxK8C3;HFx_%YEj+=jVWJ56cDav zrD_*}?}@moqAvCO%W@miy>!7L$-D(6v_|3GdQw^8GLxODFP@OQ%2!_~M$@(6v(m8B z+=4CCoMZ=}7a>SG2OzO&{Y3gnZ8C!5-=a+%9BUxQw!+ldD`DA~voMTv6DA z*Sw#kv~;oIDO#pkB^PW$(6HvtRpupdjSX80?2Kde%(dU75B`+plm5e!oUQuD!Cb*_ z%dgi@UDkFj2W_Rv6%6btpR`#_>SXH;s(b5+YKeJ?lqKvkn;YGM0*O^+zR9gI;o}a{ zgp0~wmQ!M)=FD6KOzYp{Nr!O=^9F4u7`=_bpiUYsjd&4T?9!-bIXksS;vZQ3BE9qf z)Vp=_+I*6Wkw5szWx=!ReC}kh)stQ@&lD_jh zho`Y=I|JtG{7t`FP=57Lf;*equnj~&JbSD-LC)fPn#FlSE^%jgyHV+|*Qv;Xc!^(i z+1t#xRAT23|3@k2AgyO@=KYo6KLpbIeh)4vCr|@`vMyv4x41-SUDJVSPBVqVzB|6Q zWDiKDH4@M%N3IceN$^0z``N2v8G3eh>&tlrK7YBNwllov-U)sxRcyGcg zDzD_&6z8fVLN(`CSy9UW!jg+~_NRA{iDf+34#oW3Cf3&JH7L>k$8$DCle}+5FC+vy zZ5hx?RxjM$v1fbli=kFxb_pAQl57R4JfWt$2hx&3)jQP0ZtEA!#1&3#2! z?go&mF2!STRVvwiR89&0;?-*-2739Er$kWoR}NN;K0R`p)=S6))Gb|sRAhV?@6_`%kL9Q)vY%i z5GNBGH|jL?K^qW)B|gH^YKtU3@-h{bJ%E@8I~E?kNWwV=h-(9r%2c%YSQh#5V%}Az zRGl4q-Z*9HuwG1O7x?07>~~;`6bC(hsM_ek_+FhI*8QYk8tv9@3--};VG}AYYkncvlcG3o=X#%CR{Wmd=s|Wtl(5Z zZm)^Vv@zp$d)gFu#v5GzFQ&WkksLm7Cv7^V9bZm}yhU7pu^iJ8Nj@I(&Cun%Vm-7Rsxw## zvESxmf-ylYNWHT&8sUmlj8GSGNd3}}V^UHxyo5?p0kF3Y##7SKbru`iAojm+nt%SJ z#iO**NMD;~4HZmk{%lv%24A9Gb>g6Pep;QU^7GBjDAEKc=VEP;bHBUa*%6q5z*nF; zry1`?p~@SZN#V-*^Okvo;@YOk1r}lXAbMp*-qWT5db_SS&1ip*|1wv-)N2)g#h#it zyt_5FCU`2Q{uVr&+UD{`MY8rCzLWmO#(q#-gr_}D*1;1yM$ET4nPQ{|+mMfbLjgbE z*)>cv`aX(!ULI}YDT-kyeOW%EYjzN zmDTVf&F~WG68CUn#gm}zOU?Cx5m&U1xY%D?4i+6V@fjmtz58&q`vs@dai2Id^(sx@ zb5xxA<*CQ^t^2f;^U>jJ@&XX-_ ztAem2J-$PG@Ij;Gi{B6Ln!reiRAD;+EDO{YoMx8|CnEZoQzcP_?V3atUq`w|9@ZWkLYj|npMCDEZ%~3%fcmT067F* z`^}%u1!2W#5ATfvRA6(~OnXoqSKx%1_x%1Txi(PcCI3IB9tu zj(sff>bp4aoBz<`_C;!{OId=Zi`BgAMqEz2Qd6+6YOYZFK-Lv3_sK&jDyfsEZ_?Nj z`N5WW2Fm>b|3ep04n?mD7TzM-g{j&Rt!`{x!cbD99=&OXYZu)D4ZFH{h!S`JMxo}!rrlx~O z{#9ae3m-0d7EAK#h2J<8G-}mb7X(3*SmFM}m%I!%|GvEW+jFm|NDsk)sGl9+!O&rN zMuHzhotgp~SDTjg;_Q8$vxG^)Z+~U;ANJ)6moBVVZM8FIm6*w(=;v`xHr}#h=iq38d*>Qkay?2Gyz4XJ>jmJu0|K_Fu8H z@H$Cb{trQ;CFw;GbZvhE^eHw(9-eVzaFJis7XQ^DT(dt*Te5!M=<;ee@nR}^5qL}u z-sZZGizp;ebtUEH(@ub;o!1{kf>KXjcZ8p84(ITxo=lOJaoLvJpj7+X+spp$vn>!b32R{_K)GwVl;cm>Qc zr{SGS-MVBHHG9l_rR!RS_b=WnVCAvPz82bdKfM^)Ioy_M^3+RY(-cQYSDM*vxM_(4 z#F6`WJEXAbHJul7?PlpI;&f;6?3LM{P5K%=DE0R`&cYXj;}X4C_HB%LYjEj zT2;g$R)L=2b(KgSBmCVGCZ;0yhVThX_t_z(%f|>S_+Nn(Ued>46YPH*D6jf0;?FI= zrYx*TYee_E*xTnj>#gU7)MM<`vmq%F;<7$2w$MQ&Mgf#Se&&*EN_Mx;$o6KL?N8iR zEhHA!cqQC{kr}}v8UYa1h@u2dfx`?AZ}!=~T54Q@^OscG*m1;Bw8edS5h)cI3IHZa z>e3qKrV1If)%GF8P4!;WZi;t$r-yUa^aVIn38ySY`u1q{pi%Ee?Q%%G|zfhgU=`@ z>D2THr2f?|gkbl)kLv5Y4HJ<=31<9hrl|T^Ux;9my`KX3j?YhGftq?EJGrch7kf(j zzQ=LxguchGqV;{=uY`TOvqZzdY6?kx z8C5`reB>NBs2U<&(D#b!k8h2HJ{vRPM=hn!WUqEO!KREFby&aeMp+NX!hbabh1#<) z1nc>2I?r0J?~6=G*Z36;8dZ51!yL&?72A*Q`Tjt5 zm9Jm|X-+qW{u;v$GVm&YEZATc*;G_gYf=W?pp^RX#pP8X2AOb(dq<3XQxGXciM*6L zZt3;^8E#`R@PID`mRE6#QURDYqBoHx%#^=W;i`j?tC6B{8__SU0C4ri|k&`BDSzUd*_+n|vY-yM);-^V_q$gi90bB(MN7U=k=uHQ-;_Ektx=em5j^4H=*KmN8erlad#Hx zk608b?0FFT4)k^3ea1@SFX8e{89=MO)K9vDkJ&!Q9}{Uj7q2^+b@_~}T~mqxN2 z5R~&&3cJu%8ar35OpI;cL~K*JKUC^;NY8-jpz`0nmo#i9jm-dWPg3v05Rxy{jGD8* zC7jzn2#5~Q?yn+BSRJAbZxG%c7*rl5cm3h=*P9+>uWmNH?rR)%S{~lR!FPc$ehlm!Bd@ z`F4808)2!JV>L^`Z{;nwDnM(wz}xSD1SbMfw`0zSIldn!L4H+gw-GJt6`p2FICT1?EzD>%kH@_7<8S4ee0vRBs_L7;&}gGe__Uld0? zaBW^QS-rIut>;QwwfNmUzng+@5iBl<*^@sH0n@VH3C}`O7c%b(0T4!!t58bcopGww zI@c9z%0`Bs2v46rF!*|*qZ?;xAYdzlXDbNR~ zh@$lv1o>-<%IjA2HWSs>1!%hDbVO@$(ED(>S3x#n_BPurs6sY&+$!YJnw;Xb*E4ifkkX2X3ZhSSw1*a}<79Sa`2)2=Ly6Qf3 ze`T9`XO={paJ`4}d>R#g%ATFxJ9%yYsyZ2HOEvc4Bg39)Q^8}Jb5YQ1GEWM$Pj4|W z%)woinB27(aeylZ_aonz?gl`f;*#QDp8u@H(4fb~W5wlFCph7Bfw}UMN$Trvgr3!Xm=23}HXU#Jjt>R_hF3*bA?3)@mZBz@9azM@;hJy1(c>%_4Or*O^ zThmtj5tZBC=gz4av5cwUjmz~l%tk@6BL4BQnKn$|`GESHyZjwJDJQYzGu@k5>ucPH( z#~R!59K|KBJixGq6NV!BkX@T`uq`G(B^V0esFv|JPQ^M zh6}lGusV35Ny|w8`qq$}Xg>oTV@Ot5O5@Qdv9nnWr4OpEIdG|?ch*`B`TBt6T6(8P zqfZTew;rs^xS5*chx$th`8!&JZc%a5D@6yxPSE%Vtc|9)xQz(W)f_pKWkc?q1CZpn z?#@RWWcVB~l^iYI&f*f<=?@DnV%c5wIC;8{Ga8o+;d|bBC$`GRc>LY9KJw)7#TLfZ+p|)o z0Nr>x+;e{3P|Gb8r#f;~_*tb%mFAX3lzSEvp#f8W>h7XDyw5@8HYmYiF>B)Y#DT~x zgy2z$3u`MTE&}v?+Raj)xiHW+EqC)A_sRXN8)@xg2Zii*wkx333tvv9H7;rX zysHwJYLV^tDo*&!ZO-PB_Lv#_AF%07u{Rr+eJ=`Lbs8qMmCs2L>7QS_s!}^>4bv z-CEa9PPbdntA!f!fQV=%IR8Xy9^bybc__f=daL`sI|H?&I4WW2I$CpNyEf7u_&WdY zGffd9|Ht=s0z;%$jVDzRR=#Jws(RPI8d}e?=>rHbh)x$^H@42z+wKFO7SP_m)MZ$< z7aYC~q?=J886hia3UF5bTvs?gL$IYEmpwQv>W^1CCa?y5DdKE(t>4e_Gk-(yNY7?} zXSNJmJmq!lNBSM4L`|le>&*j0e?mx$!?2CLFS_*3c<;oZ&5 zX@Tc8@ERcrT^)}lQnBf(lVYW9N3WuJaSQ-(_~4*DEx$NH=p*9wNhBC!>j`14lii($ z`P^ZfvLnn9+Tvhou1wq8(`JIw;=s5u$%l?KKzhWrlL&9ou;E$pe|}tQtbg(1#dnu~ zELcfpQ8ydwDoA$JdLC=L&y!UhqF%$Q{Q`13-^41x?ds<`%$4An)y&H9Q)Eq;;A&8M zQggDY7q_mN(0^1xc%6ux^H|^_w4xhbQ z&drtpIUYf#`kh{4D$@^<=7_wtka_uw0h)dKEm4`RO+>-a-=DXra$zdnPM+tVf-hd- z2~A~oKpDiJ5F_LN{8}WwC~j}g#*|TL8x<)_XN-XIxCU{#I|d(XNV+|X>+|BU;7+a{ zUL8w@6O`p`%T$&yu}3$&%*hwly~&cn-*Y{jjt9_Miwq;~UmQkTMg!5NUW_Ots7^E;dLH(J_ zg_Z<&@Mqf+5c|XOH~b$&aVLY&@Ot{0smvV5B2p4G_JPOwEGiqum6wo{84sE)--hTA zwga}1-P@ht6NOr09Bd|?f1SY9h0TAdtQs?fds_#jjpvdJaaoWBz+xtf8*oCn+ z__4!4H}IZ=pI=sh{vQ^-FFiXrcD7q$Wun_++t&<-aB_-FYFzJ%hw4H;M|Hm&m}RAi z`(_QLj$Qg3wOnV$*l`ogj&3y2$M`k3HNdho__2?opGMkn=0{|wM!(;FMlQ(RaiykU zcm9)NvDqTX!cL!5jXM8)(cd30r@j4^ElNN{TB7o2ZZB0xN%yS=Z;_6_p(t@^JlaY! zRft|8yI7ats&!NSSZRjzXBPY=j&TS~dT!g4PJZn^Z8~tM#UTe}q#E_%5HLJsA9NdK zOO&^*>BtY0`FO+?7pSM$$=w&CI~dsCZo3Y8<}^}Y9bRsQlgDN(za@i%Di6EmiquAn zH98KCI_hNwOEjqe(Lu%?)m+6~$Ms>~3rt}K!yroHP`!3MKrXh)Izd=HC9<3m;w(xe zGJ5DE;ki7Dx;Yoi>S&l!?MbX!(4N`&Vy;r+#HvJq+|u& z$BONZHJ{@N>s`y29>vYL{{)~3)hdmX3oe!In>v%|{3HcWnX8j&pIDROY`I*retp@T zNheOci#k? zaJ&KCmzN@2VW+-+_`Mu^o&OkG9tK|YF1;hh8-fuG-3Pw(7X$I8i%-e0mzo<`~(l-A^ zPPs!x7Ho?ojzWpnfUdny=9n8H+G;oQleTBd;hmC|2ap7FA0=%~#6!S?lv{TV z(S!2n$C9|Y%(ZH(AaG;rYFeX&LJ{Zienr*ANuh+Hu;6bGA4NMJq(!>nNs!YClvS*= zDKg7T%h#ngpoMUow7L{P4)Zmbx9<#nxAR+?Htn=FGRQlL)Fsp(5X?VX;1gcUTM86~ zss*xIB zMWBCR8qNU+FIW-_tvS79TC6logzKLUEK(}tIH`m=gWDnF-2(6s!t?PcqVR0}(0$%O z@n|St50ZnoDRZq%b_H#8{(o|$m*~w&<>#QDbju(KYpw^dr#k$=C9cNXj3+4gjr3bo zW!m{o+DYWr6ZiMFe054Y-|Yoj$XffNo%DK&VE*U9A6cQu7}8y1{Uy@lY{ooJl{Mro zRX*rPH3l(`?cdhhn2`lJhOsaa|9+0rCGp%DDcb9%p+g?#&G^Ou*9g*=v^Ia!e@DzY zx6XbLQ7ChsHms)}4pbt=*r@-qu#%y;%&3H`Q3KPhw@YcBSJl&!oH0TV(1z#_`f6Ow z-}b03H$ueqoKHsDvs$~nsiiv(IH&f$7WPE(i4bg5#o-6a_fx+5w?mI5{`)3IRq<5) z`km7RB__37%$2|ii139f8g3S%Z<{YJnSnnK6{$Ki*ow09Jn3t{=Ev(@nNJu{I^O{3 z-N~D^L_4*X-O%h-8urAW-YA8P#s80uw~mXdTi=HfQA!CBkQNY-mToZU6cCXZkP?ut zfuTW=2I(H8d+1K789HTvfuVEAq5G%Lqvw3j=Y97-%&fiEUiVt}b=S4mU}_jh(w8kl z038X_Ql+|_e7JOYSI8vMiK)-#djL>yPnRR8PnxNldzRhbd&Im*j6R^e>GwOoG(((G zmZg2`U_wucE_)y2HD}4(sh2VV*<-2)X*jU;OS_&{zgNWHB5@Sg(;Oj&GRq7S1f`}! z7WYntLx=rU; ztREWiI2KNMp8r8;bwOyCHT4a{LdDB}IQd^l6BOa@^U>tGfv4vxKcD%*QN+14n!!Ix zM%+;6_J)~xoHRPwwAP~0dfjaDTyXf|=|Ao- zfQT0%B*XdxdyjkJ=cV%JCMNmM zzOUYMEB)&rVXV$G`3YfB^8ne*yZrcv9!;SN!M4n7&={5aQXn5#zwR!MvX+&pOxcsBi^$dBelsJlF4rON1_8+cMsp>>yCr^U9U3$!cY5OZ>Cu+{J34` z3h2hLZMXfQZvo1TND->?x4o_3#q%r#l6=kXAA#F+x;EkuVQ*fblh0Uh(8x#jV|^P+I)^34?r8}A9Z!iN&Zf^s+2XPD!CYrd^5?j&GCA12iVynPMT+h(HX z_BXk0;g^!0Vv)$3rRI6Mh#H6a%Nv4hkDj;4cZ-j$oJ0jRqzj!h(w;z3E}jl^5odXA zB)PR=jS(r__r01XLG|e1u#B6}>Y8tr8^!4V$RH5<-ZIMf*3pjGYrNgr0r%d_DC@K? z1Alw=j~chea?)J>C4MV>2N~k6j>gwy=dFic8BqMT+vhQEwiO5xLfUqky$g0~_x-0A zb*Jh>>+(rG8}+obI&~zjS_WT2Y^6TW0R_Ljs+5)sQM}lH>3=Fo`AL&1tLL5TuTaBY ze)Y>^a7;z&m-N+_MSy*vcV#@`RkU9(HS3i)u-SOo_`Bt2xR0ZSIf&{OqS#f{bq!ye z7k#<(S)|>*4NBbaqiZ7mVmB9wPPni{$&%27?}>iB_PL}6U-z4j*vM`mUWsH7iqd>1 z3!&-}d@Rc2na_E-HmtGD) zc`OSO-Pc9bY^1gq6I*p*d0wG&GUhwrY%ws`d=ES(C+s73JjV5^BsFNChydwBbXV+> z=PafFEhR@MvEO!RdsLgS|DxT)Y=P-lE^qF2`!TF~f}fqd;LZhTGTJ5+T!{a?{^~`G zynRXRbLgWIR#W!c^=F%$8n420pXypmQ*Q4^|GcDo4Wq7kRLHUDXRXWhj=eqLh*t~( zGUyycGO>YA^cLZJoF?`IKSo_PD{m>Hmvwp-hI0?tZ3w?bfda4JpTKd2j?D;}Rh?g4 zHOvJs340)&^aFlk1iDki-xQTZXQh^e*A7q*I=r7X_k?)y%A2^!C%QPkyxwH|i6wRO zHn^=pcIBAVc*6wAR!_9Cfz71>&QMwvrzGfo<)W{OL*=(?COe7yC&KT}xo*A_9V^^s z56uZ`ujbIa*ASmenpE(u&%IS2Z^C%nEhoTLe05RU(ESyJ=W*;V=t#U5FE59EBUZa? zqh2)%R@%;eM)?*JXbv(n3sD2AC~?%q#V66)CVPD6 zTbcrHUBl9x@WwvuD82Y8;qZw}?dGeaoa9k$nwZ#HE1ZA*UA$95__Kd=r~$f&B=Sn0 ziGAabbB|xV;G|I=J}TnVA%FEbw8YhVLP@0y;K$VeQ@65W;;5 zoaMl~?&-0$4rd+#Ug+7r#0N$3=&afM6*e2<-E;R)Y)9nsSLyg-ew9R0f_(YPIhklRl0;sl25vbndFMsJ_{g z7ZXmL(tadiytCA2keWkoO+I1;GLfP4(xjF2-g|PhBNgi;^Bg+R&BZXnzT)1BgPw3{ ziZjJ!h!u&G>Gj|;ee|z|!elnvWp!+uh(#lw$LIOFIJU9pF91LGl$aOpgPi9QREF^f zIrHzCY9Ur#g{QkShj(Qw78h&%(uEWBzbZavlqT;l#W>P;WObxJ(Q7eCgo&7Ta6ZLJ zsV}->XuXZ@6mB*X^G02A#V(&<;$I|NqFTkD1I>G4Q9Fgt8%!q0nT%&d|4qnEyL&~I zb69s30=bp)YbW{BKSXd?N=qcV02&3i;_^GVYs#(mTNf5$Geo{FeY@czKuTOa0RF67 zDC{5zcU3Cbe4;m`sS3L%6JHyGQ9AO2w3o;>eJae|MAu;dAk|PZbiNUC-*j$H*@k3vkp!~ykip-EiP=9maS04=0w(p3=@=4fUe{aU4+(6)vu)`B zM;T?5zHS~`1ON}_?Zo^aVmrInFZItM6L*+#4R{TU`*>t$fbHj(|)?V;4pyz zJ${0d$ZlRbkwemg)`7vSXd|70W~7Z;4kCj|k#kR>STe1GZ1;Rjy?ObKm;rbToL{_t zZ|(>$Es}mXYw3MYSi?62&q{v4m9Y#=WRUV-9k0ZYoq!FzN6Bn-69>YL;Ffb}91nz| z=hOa0obe1{<2=ivd+TMrD=5)BwULn@tvoQJwCWb8I|S>~8Q3gSN1b1A`t}nAcMXx(&;cdJM>t!36?`;qQ)vXt37cM1 zF9hhvO4JXRrn{Rt9p_Zd4aTfK3J_vL>?_Qxf>_GXa^YPer;pew6CMkD;VoEj!35zjdDGGM|q$gf_w36A){<_ zOIGiP5KR)&sF>t%G702`I5l$dV+QO@$kpv^i z!Nu8VjIk^crFDM`Juge>b0muGlS7&#hMrZ>QNz0Ke8bwRnR9(V`ou;~X2$GCKr2sI z`_!}6VIRuNNyEq>D{W(O&P+K>% zg~tlV#j!`->Ey5_wp(XAW3}DgKBk5Z+f?!*_e@cy5<)HQlW}IeQ6=kwK81!|FNf#f z{86zL#SV!TR+$;y%AHde^gLNKP&-G03d$8F7ppwuvt;3~N673JA%DqE=DT5gXTSn3&T*m^RW_9XZ%m3a7I_g%LNsScr9!i8u~+M6q0rz=zP zHoVHu8%ZWg+>x6ym8>3bbHbmI{F~3>h-6e}aE?I&S0FA2y{Uc7W_7GRv?_O&jh{mC zrW|?Osni1MKR@qUmGgQh7y9H0wxaGguE;@QU3h4yIb*PHQsfuKq!R$3T6yv$4dWv8rAVAf4htIu8ifRw z29J0DhgVCkcC~)y#gKT?E{(Wc?TxUZCNS}Q?=-6iE@4@cU@fB~JYbZ=uRs1k2a&{U zHh$hyYl3?LB_WYX3mq7StpMx*PD-E*8ac|`Y1y&Qp-M&fW(4EDI;COiw_)Y$ehZ>y ztZuOw(Z#QpiEPLS5gzEyvkrYlXgSzzkrB4|iqNMmJLIzVfzfc|eXwEvWqlG5V2h8= zGqye%jhu9NPK9gNd-$+?(0tC$sAuKyJM+I%e=~~#PO*Y@PuS%ykq}bwji9{_entyZ zyLoyHEG&ZUv*NXVs4KOa{b2}}c7Np?+C5=1lSBLP#=J4LUS1lCX$R|r5^?lyuI$RS zz$6?V_N0_6tB_;~Nm^glM7hf;=2wc!<;;<&elZ<;=?isbq!hs%F6-PZqqqZ5!URuk zVtd>Z4{X>c>1)+>c<~;azz)a3K0CxaGF?zQB_pUaaQbX z$VyEuhe{a>gDO4C->gNWTVg2Ry=n<8Gpk8O@5=k?bz7JReLE+%YrB>GsF7ocUg442Ah168u6-RMX8W) z%qtNvZv0_=DlxlgK5=bu&AI0L`s*T1GnRo zhBj@P>!DkWTR9)9QS-g8ZQlK8PvE%?*LX_@&1v|ls>jTeq+a(CBYZz`9eW-DjI?dS z7h`)%(sMuTGlJa)e|(#59a&!pyNjj;6rsUyk(!m5v@;pG8Tqns#>>kM8T!G6ClZL8 z-xTG)i#o^sNDJ~wCSG#()7B~OyN)2BC5iG;W|F)mvpx>@u|q%^cI=X{Ajyj5HoV=; z#0?J}#hylC=V?sjn-QOvsjw8Nh~&Kl-_W}A(31}}i@I{1OfRL;Mhr7a>5b7QODPeH z*R8j<3QqfHcX(Wu4XO=!oDXpS@R?K3QIjMz|M=xRJ+>+YIL3$oQoGJD&YoMXU!+!T zW9jj|%mFoW`1r$)OsApsk=JC?w1vT*aNlJY@}OdZ6Bs%^C7nuNN@_6ec?ZWu^5?-j z5hYN;WAU)cd|8;-37^Vy8 z_PyIO?PwtB;yC10K>*nI@Yd^z8>*NLDa$tGbIxvWd#3YI`39%W{-XO1HlNAyG3Kj< zEIs=X0?lga1hGt(x|eUjR`QoBy}X=D;+#<|O6>u8Y5mJa(FcrX8r6HWNE#VI|dcElx^#A560VM!;XxlP%N1{?u zpXZM}HFM3jWZ3C9j=I&t9b2^={X|=}=n7S}2_dD1U4@q2C!1}$w($PFaTZkE>M47_ zC@IKJUApEeid3(HL(kzTh>=>%nUHOet0*$@Iz?fviAxc}lBztaY<#X>s9Mb&MZzB= ztf%JFoyQS$q2GLBqD?R1Nj>OJJkBsM-ilLaZ9Cv(|ACf}v_#ozn7&*hn1hmlgc#0$ z)Lt=WW7yCA;wZ0deRCJ|Ofu0Hkmr$mNlpF^hyJho=usGEIb0{|Q=Zi{>283XM4IiT z`>VRC+Zt}Sys%&Mk`r9e@?C85Wqf#fH%8=&7;-LAX*l|8%7X>H`#IVp=0%yqz;p(m zG~xXGs`a1a%lef(P=BX5+dt>w=>zmF9QPy)8?T!oWE-+FV@mPex8B+1+H`9dRk%8z z-Pze6y@t(5kUaW5fapJ?{`vH;jIVJT&T+r_&R>VvqHG^Rrz(v8~MB)n!>tZ3(b~+}yd^tQA^Hm?3-IvQYi= zMgYuPvLR=6mM8jfOOV=oyev(7 zXn19^wKU0XT+Y`|J7wp^T)IAo#;(WTt>rSyB3L+gJDbetTi!_%3hpO&8d3jvwmt8jnm%`Zo0Q!TW& zo>PaxDdQXd79Z^hh2f0N=V)QL2_go+ny?=<9(|aPh(iR#sQw*<{A8Q8UTV{R6v4pn zh~VrUAL~7G)KQyKUcvMX3u>R>@pN*uP!M#@k+`Ew9dj*giik0bLwBXINJOLG4dtrK z4CQP0I|hoh@dkeRg@A);tX}|FFvtr&7p?lvX+EK_X&<_9w(N*_K}_#929MLUNzrCu zHpNwswx#ZdMta`O@Lp{qZ)v!dJPNShd-Aq1+(s$k+k||BY~Qgr$EA%1DbHSPF4w6Q z+WFN`G6RYh|M8c)$eWX8XS<;WXV_1lBOG?ZjbmiKJv<+k2Wi``cqYcJP*2+h zh{vKU;~m*|RZ}|y{y(KHZMt0qwcfC?fb^%v?>-i?32bH-7(kOm6NY!>$fLK)OZjegFf?2;pq{Mq9LAuyM%Qjh9@H z%?>kC+`m6Ra;dEuJ$LrQ1-{@&eC!=jo)KuLMz}m2wbx;{+eG*TgoKG`B6`mQW~*2? zZ9p9d5#i>kB|I}n)CKgdwjU9BAK%>i8n#?u?@t`>WoV7irHY5oUrpwlWgrNT z3{A4qlx<)jgbT7bZ!63A6IX?1Z;q ze=#zfthrsyOWl{)yDFPHJ7V$sVt7}Ps$CbyiY9vd<**VcKtI5<@%iP1@3tN(-#aKg zERMI+Hw_K%`VItf$w zUGpqTXsQcRxih@7$gyk!Je8s0Wrie{Z>qRhS@~ZPGoOukUwLoBK!tQy-*Ufhutu$1X1P+}w z16rPTNOENv5LpsBKPcc>jU)!{n0iPAuEW?6a#_|==LnSd#)PI^7OOSr>UJRtdf!1S zldi(^%FpvCN{wJ~_ikP9A@;Y~t5}_PEok#A;|)| zCf_qPGmev!nezHxst?hZ`j@aMjS8%X`h)GQ178ILD+XLt5LPd@lU(fHZ)Sdwxw^F=KYf9rLd9a-45|8i6%<>oX_qK0{BzH&pVQzHd3Lj1M@KLBvWvr%VL=y;;Fnp(z(7Jv|9H7sV;na1a z&uZ#|Fm`I*dO;q4ARXDsN^DnW+!Lmz$o`UrEw~0!k@c6J++~)bF^SsVOw?| zRWZ}g*DL9gT@nCD%#%J}{*!(OL0oWWDx=#(DP~T@{D{OkCls`t1iqnA`(zvV@{5Ba)&o&Z-ym_2OqdT z?f+6+mOAv<+u4S+wpQLv8yb$9U3P!)nYgY!obHrg1yEdsdKX%0E5ZYXcpGq;{oRfC zEES~-o@`H0Ng~sk9V2#l>Mk+_%qDz;dJJR8Nq=WYz2um>q5;LTx^+IDjumr9I5mY~ls#zN~!?OTZQUL)fn z+T)>a)R-iW)}*U~tf5JX(ye!$1~#(DN4G$x;ymO%*1qXPe*m1qn6A)p%y3wm8B;p8 z{!Tduki8n&EXbtvCc%+pqk5%P-rbB6CslUqF8gj|L^%tXW`6g@QtQ+(%tcMfVec^P zY@=Ap*U)2Sm}e%XC&745*u;Pr!t*S{?BQwKh1~Ge<3T%QL4cUVujrS#>;4IkPfdzE zde?zQF-tS0FfMV`+ak11#PO|+sI5M7oQ{eZ?y&5AgyvaRw*7mU#j)|}k$e-CS?83B zss6KUL#$`S=Nt8F$F`;#D|!rTKfj943o;n~JfG296EN(O2#a3cYq)47#XhsxG@Ww zJNrBoK~g_&BJnQz*Q&{S| zT!)vQ03eJVxE;tipO+Cey*W^%E74+_$H#v0Dcp@sNpBLjG}wG|6J47{OC28i_jp>v z^Q9?9@d}mn_iea`alq)LJEW&6I1wgAkyeY9vc_yMSF^&f@;WhD)WJUOpnaB?eU1(40q2#5veMyb~YMY`xIZ)t~oRiHDAKlZ>iWg zq_}|cW?Yh>ObT|BS!pUBwFgl@9(>|Z3IW4xG>Z%R1utxlUFLuyyqC{q(*DA+F9A3p z{XAZI)<(Tik(Tr{0!sww>Cw;gvq)eI`3|IQsjZWUhzWkHX=VUzLYe4fb;&2HYUZlH z9mZ>ZpB%N*?Kf+t9oUsG=--MJy?68|{VsrU?p%DnynFfxQ&o^UTduw4ZRUE)?r;uA z>BwUX{1RW+qY70+vZP>87V7Mi>=zfH9@~=4HK=l!i6-jPn$tDZT9Em@6TpCm#Y^tgs9i_h}j)9yP!oH=%Sv;|^WmcsF=twzl6d z+59zsn3|jQC*n1tI0wxaO1|MVIwjn9E%g)wUe)4NeNvS^IULI*YE(w)FG8k4&OW0P z5x8RSn~73nssxSM7a9%Y&E^YpB%lT!9rKEkU@Cl{~rPy4X>6@WH+FfQ7P5Q?@@liZ83 z!}}Hc^z%9J?=r3c;ACt^gISg+QV(@z?xVc!hgJS=64CqB>#m<(dHk)uOu)q-8{eC_*>!Sa^gJVbxQ}dKi_`mli8n=wFS-G@-ub7{T<$j5g7Mm3Z}zOJ zd*juooe{o3gA~K|a;nMjd-3~uc2IAt)th!@F|rv3tMN){otjsgrsWG%o4ZrWc!N(y z@Sm~m{RAJZUQ`J%NmRF)k9mW-Qq}GME@6cM|H}H2VH`_;Wb_X#zV5Xm3CEH>%Yp$Y zFwMg{YrB;uvE&{!y-QUl_aSO7-Fr6SSg0;N2SMiEAckK z@t^0LA<=e#w&f%X*GVK$(tfTr)MYcgO+wWs`iJRA?X*Yh&Ov% z)$VL_AgZqo?@r~Nj7vp}xxWobFC8l0m|J=F+%dFMB?rU}T7&CLWxI$rTTd&!=hp%7=717n;%N!(KjQacR8t$O!Gs!HYg zY``D)@yokCb9$kHeV7)iA21a`B)ZAqBjDu&Ri*>h9&8hI|7J0CZ1n~2{GNJqncMM! z`vX0NIU~JC|KSEW_7Sr(_42RO)Ktvn{>vGWea&{6B_qEW(wMCRjZnO1A-9rRyT|aC z(MjZ2;v;lVQQMLIKSS2m*)|p#7&msh@I*cC|3^l8{BFOxDFz4J?DhY)g|+9@laq-! zi@!F`_gjAA{9m5tUga6j1}-#%MKiP zNJR&j_(Ti-b}E#2XV@h5zbhP|ium5dCFyQIpCx$cbaC@6dZ)tb<$pMq$`^fRA8&1E zUC?L#$eSoiuld6)>->(|XMed}9Gw>_3E(_8c;{(ma@V2vC5rZjZDa?db@+e!==!zj z-ixGrbIx98@(#as&`*}Sv*A{C0ru+9`@JK}e|usol)?S(UY74dxEHty=!Dm|d|bC* zu(^5>PhB@Rm-U=5{zfpyfZ0EPN!T_SS@xGtJ#nR4O;}F!j}=Rbe-eoi;MqG2!yK+g zTFF%=#3TK5(`{t`yQCG1XMnJl%_MX-_CdI?TL#Kl5!^a^creebh6yFS8_)KZgSRyO z|L}86fE?<;N1;Y{{Fa}_t$Pw5sbtE7a*Yl0fB(xFdUm|Xf6VG1Uh&^m{D+2w8Ot9( z-YTd0x8=7=xU$mwDfnZk2<7n{QJRy#>Mo@4+EsG89KgwzDd3yHgRm~**D!z4I9*?> zvRP7vy$6`;DxyhDAkJ^=jg`+FrHnLx-S4*_6yc9QG@FS=TD(zBXLM}C>#7vyNe%wj z#CeAa@_-Cq7=2weMB`<2q{p%)8+NKH4PIn{T?92>@Ji$8qzVg@vZ@_>YpZ5zI^Lwk z9j+%G$+DPQVwPGBo|F8>#y=6bSzZN8UPfOm9qj!4+UTjct%d-fP9hVee>t>-MDccl zhxnAEQdNf~pajV3S{jE6?28nqPCU#}Y`|#{;*3J9HM_BO&#gB^{}Rlc+IGCld$In8DX z)*KB%PIA4te@}GbHHB%)#PPZgXQM=cbCJUXV~Z%+Nr4&2c)eMNtyuqK;A>b6UV}NG z587dolTR6%${SXEs`u%qGHec9vGNCum29Ro!V--TwQ7|dHl?6b8&S{haJ^xM9k%UE zkR6#(emTi&vZpH{Vacy;9y(=?jN+VE)4W0QQb@~`ofyfkt( z;Mx}DjOI@NWL_XQbr^Ss9+*Yt2LQwnX=+JCF|ql@2q!Ew&k7}RMjYZRv2&TtkVv75 z1AKtS;F9rA{zPk}w!_f{iEy{ zg&B)!{6}b{xkZk6%yN?@G%PF*TjfwV*2!a_IL`bq8v9ogMU$`dN2(H8BRQ^ZN}BO% zExm9q4IXYiBW^^+_J#hBfll!753qt*r+Gk$HN|k?q<|*a(s>q@66Z1;$v8arQ*141 zC=%rvTHOv7nu_^bZ2ASvse+uh!pn$jh#OP}4@0=_#S+YOrszd9vNTkG8B>MHFp=-` znKhf3iK}VBpEsy_P1cScOsRUT>CvD5r)aIL%mIj4nD?HunHBgsXMdB^-Fn+yDX|SB2 zNq2?_*Z5DaI%bA?m9({gP(f&^fWRcihpy@J7eJdT60Yi6^cdG zZIn*+T%?V*&Tvny6|rb4^L)GwD6>$oY)WY3)LLUACXh;Ii+6 z_yJuxR4HXy<(Sp04sUi7`zl*;nlB<`XYYcBT$R-up9yxTf>`=l7e#lz7gtdi1oV^4 z!NQ5TH%z88Sn~afw!_T4TFo?m3WyS|Je ztUheyvGlAG19G#x@R{M`Lfp`o&-N_)FJ39E01{Y1vxBP=19_f9wW$83UJr4qAH!LD zo60;Ec;bF@gz4aGUUK_*^Z5Pef|rq>>^Hopi0{}5nEJ%6E3z#*wjtuKwN7{pGf3zO zHL7w5WIPpA$w2o!{svF-a&9DFx`x3KKs_Hm+r4pTy09X~-qPvF!Ry;; zkHaUuwTI<UZj$U-r*?>81T$TSeEE% zj1kT^%&GFbOmDF){05!`W8AM?dFlMT$2b1@h@wXSa@HxVZm>DoplHihWL{*xv~g}+ zV%$U9_11gEs|Nl~drs8F`&3W0%1$4O)zs%N4bY@&A~E$Si5_^CGf>$fm5Hgn~TV}oQzA0Uo^p(?X++<># zu$@lZG!iyDUn=I~V7vFI_EZ@a+}qQQ?Hm%Gh^p%!x&8R#q-E@+EmEdKX}Xmg69ePv z1_p+2vmRT;Hc?&zZnI)a9s`OSq3@O7mv|4`LFvtkri?dVilV39_}ZKc)vmYBql941 z5H&qb+!8`+H-&KKer>gc$YSNkxiLEp6ZUoX2#=NVf$U8WJyog7eVv(0?J(C}N!X}x za2-%~uK|TnZ4XjyJv6cy$h&-{`!%?pcHm%r?)qXdcWArD*?OAyTIjIlL_~P*`paWi z3=Aw942+?+W{>2Q4~M{sO>AcOcsy`yoy@5(Q!<{3(O5e4)d*te<4q@VSaX?AAF8GCHx?Vd;mpzU@}9(MyP?{)3r)$z8$GH@ zYCifz()Ky%%jTsJ!5~}_Ws7tq+?D;25VXtJCzrXHqFB#`@f}`Q^%iq+k2~|e=g9NK zg6-p)ZKo2Bhb=GL?_glO!p6W5_9)UFp(H+=o2_FR7ntcEe42QuRiKVM@l>}^OhmZ< zyhv-@eqT%@?Zb|z1l5}C)(bRXJl%O;ubS#b$Qj?*00f%WjJF;D7!X@Wrx#7Tpalj3 znnTymwXOF7NQmMtdatF~)3`cWK=W|!jD5Nm>}9MnJ_DS0AX^cm3nF}4>%I$_(`He93tAw%4WPu~NXs_!+5T^JOuKjXr{!0;!)z_1@mme!$)K5H>8V~@abBhG64 zDJ$QNv{JB|&*36?R2+R#X^=2jS&f8Av3YQFcYBZfWj zgSpR6*h@xNjF%&KF#f%M%k|Io83~o*MLy zlAiBOo7b?e1?uJ;5qSt+SEqg(hbatu=Z}$um?~%q3_Yd%i~1xKO$wiyS7oQ*a{-5uVp=+I6o+okY3Vl?jQRzQ-Am^c)s8vmD(j{Shu(;2 zRan?P*M{|;AHXN%*VnwrDhlGmpFg!iOnBRW>Cd-cG$@1tbbW$C&sGihbrMQ(be3`= z^wzL8mWDykI9*S#5DSAE~3xo$15&zvk^8RDQTEj zj^_|y-sM!m{~OeHAdcP+5za$Nu)3L_5mO9@^eW9?Bn)tK5DEWQ2v=fS@wegO!Tunr zDD+KsGcqqyqmv0k^euI83MZRNaU$ya{@EH;Z?OgYnAp# zLp>yi;pGhWN}c4bUS(xv2i4tQ7}1ZUd!=II14Ybp?RlRzT@y0s`}dZ9Xvqb7oEGj& zxW=bWe1dZ{wo+tmwf3fg;k`B#3~$ZChW0V+WnY5>IQ8sJ-p>PaSy5kz=o4!N{Mkcd z3^A%LcP7{JJhx5g;>&!ltyCx4*0Q&98t?wH26EjYp-K2^UpzZHef~UMgDlWgNA~Cn zt@7n{fP#XxJfxcaDij7|P>U8!9d|x^=nCp=q$a1YseV0mXW>~ub9pX<77TkF2Q*Fi zdN;Lc`pKGA?`Es_=-P8#+kB0iLNzZ%@0)cWWa6@mhr~0QU+$qk$wDRZ2Ihq($%u>p zsilGVQNGbge)3$|pIwN8w#-7lGr+5pVVjD1@1YU7lE^)bsl*Vi%&)Ub+MFv+^i}31 ztf=b|o0jdQZ*WYhwU#EV81KttxYzj{RPx5*yvFcSz_MoM5exO>`@aG7)OB(X79@3K zWVoCwC`;g$+k*&hvXsTeVv+t`5;2ZMT=LwCTV6nLmNOQ9+cv z)WO*@dNj(r3+_fL9Efl_11gk`<=lYEd}gG%BH#kvkGy>TrU zsY92XZ95F|TkL#EnD*C$PC00eL9=x27BS|Q{=q0cyW?%UIw>bD(sJA3Yr9=w7z7miOJ`+^gOEE124XfYiF zsCPwNN5LXi06##$zuFKOOY0#Cn!OF(&(U)KH&!1wE7U{`s+{lc-PnSbdRbN{2UB4p z)K%r=WY^tej`f2c?ZX_Zc!AlnDr)ZKiD9B-FLafPHR2=N)!Fuik5GgG_$= zq{HiFAnI5Togmbv^GhSA=h>qeEW-pwQEASJVMcSt=_}@JtJy?mQO*)T8`1nR$=ZvP z&urVGsb#^{chh#Gf)w01ms22+!Y#JtMuLXCLM!v*qUF|Mw&k5ozuJNdX-Y#q;jJiMM#tVX9=ItVQ4e8+ z)v5p`Y#y6g9*CYsZE>NQcZ>ygD2?F3sfr%@0u0;HxZ;<*?W1P1pSw}_qgz8#72Q~r z;a8{C%T_EM8`{2rjh!CDkI%>f#)UAOs8-5 zs#(A3#P@2E?mAkkEwNy}*+oVXJgIV$zF3Nz zK3RQv=(_DdW&;mGGVN~P+K0&Kj~2KU_9roA$~JF&RZbX4P!FHAk)h7B(6x#T@8q~v ztZ#@+*z{Vs-b*a=*|9=n`g z*oEwnajUDVP2QdcUdLLXs{^RlU_zdMMGj?}nq`^))9ttu`D_oT$$QATg!N3~^vS9^ zXNePa;XSwooNJV_aG1!o{)_?Ac8_hb(Q+@SgJIEuJ&kN~WKgbqyd2ATZeOL%3YV9F zud%7gORN8g-w|Tw!R>vRioPh-Ynsf4JAGdVdrfk){}XXSDmT5Y`OU69+D`e<)5AA* zXmmffQXBkGF2sq2Emcns4P%UgnYXTcct#{lW-_kZSL6VIInd&2*Vm8jAM2SEGX#6Z z2g-YVKHesA7*@G~((7(yAJ-n~nGWlrTm1NXP7Mk=Z0QomkGqfCHAXA1YiU;WG$#a@ z08|a<8}%WLQcvTjmQ}i1X3fX&h-fMhlZmG*@8>goLF)u6OxFA}0 z`J1hLDbDL3z9K}wU7x7b+lw!UU#Wyvg1k4dSLbgp=cCCDJzsszjy_8JCUvo4g5Gs) zQ(7Y@J2Ud{XW1E)b(VZRg=fVZ<=o3s>=DHmR&V8X`Cgb4h0_eK`>Jh8>s@*z_Kttj z2JUkg6l6j%!rs4K?j=(D9Js3LFV1 zaL@3A9W~b^wLEH+?pN$S*OS`6>rHUff$u|~eJ~Z)IOK;shS-@9VEqQFq^>sPSbP3> zZhqA#fd9C7eDkc)84wdd$6SB3L`zDdO<1^FQ(t^k-I+4Th`PTQIA_CHXH%3Urjy}{ z2Co{S8V=`-HuTmt*X9yFV@yu9rAC0@SV5}&|CPBAfAP5`Z5h{5kly>}#T^0FAm zJsk;gg#r@mua9bD(G%%F<&JAFy>YXVBZYnm=`;Wl*9*4IV`}+ftD|PbPTxn{$bYw3 z_E1vK{TU?zlZvKg9io*d^yaOl1eugF#wqb>UYE2B_8El4sm1t5ulq{kr^F78MXd>; z=!1HSZM< z_xDDPN);q(!cUK$h?0n2BYL#xQHF>X#OU212_ZxeqKg{6w;4l%=!`y06TJ*0Mj4~N z68T@9^La1M-MMgM%6|5)GGAveqxolsh67e_eR}oavvV5Hs2>NkY!!CW+c1 zXJ5g6z$RcF3#vO1xs^bWf@E5e-S1r(0}q(zgS9ok=6GJ7^(gKXDS$O)wGuvXc+ar2 zKcA^xT6FqIIMaEPRd1&TmS-Pb8$5JIrgR6toCl;D_z@dxBh1>wsw>u3tDJW_8jo7h zcS?}rnW0oN988r@EA@USK;&wBO5I=*>x1Sv4`cwJXsJZxhbs?BFaH%P{fLPu)rxAe zBq4Tm$xnop+bbY%;V9mn<*KFgtY%pt`yFe8uk4c6TTZrZHwXqbTegbJh4lV4UiM|W z`*y$elu+8MWgo1?t@t|RDz++xd%WSEkV;XhsrOuVpoiS)ZE*gHeDLFd`6Pkk6;KZd z(=rtb!Cr4PJ{ZBJ{HX>S>xUS(J0DR<56M zMi>AA@)tV}3{Q{srcy`rKz6{FpJ%C75x2vEI%9SG%Cis5IV)Fi6Ra)Rfp}FbQ!bg9 zjYjllg)EEKm)4>pRJ35BUB}F)!6Uf!J1bN2;D((zsRaqC%A$nLL)Q}5GNxjq1=o@~ z%F=E{igx~-qvsz|o>iLC=ttMHX}LRydrOHxImx_#xj0XV>vWu)jM>pYg5TZ+Ev}Q?B3s)F*mUo5od54N=s|@Yr1yvE-xvH*G+1dh?+mfQ+!rdKr~6FU0#++zESv z*y(S%*O-EiEK|~x4kuz6*y_pcFjLK|`eob3m)K3OB7Mbu&C6+loRx7VGsACK-9Rw0 z@vlbOb)1Np5UclS4MEI)n^CXCKLN;KIPXjW6kupdZFcGsuXGvVHW;t1dmV73)7@B- zdsJ9ev23a(jotO%e3nDsDAbB>2l^DPK>ss|xp5K;H!c3;eEmrXW}VRKX`~^viKO71 zZJo1h)V{Rd9i*2ZD^uI9dm6W03wGOEkekKmRr3e?ZpCq_QKeJ^U5Kg|5U74d9wohsh4FG*lg zBKp&$+(K@5C0p?dWT>uE9V3W0=B`Fg*N~8W{?bJ9|1RMF|MH*a14HRB)mEziiTg}O zy(QHVltuujz7Oio{aQ*Ax8FY|V)E}B=#!9e{So|9|K_M z+9Xe#UvBl(3VCo1>vdGONCx-YC?fxH3ZF<-H`QVB^DtJ-bazcGhi z(F|bevQUxrsm*Sk=gkxj|4i^0)|SkwX7HQ~n)IQAHFIE_w6VUwyLI7#=scfVpnhahpJuVnTj(Mo zC1_c1c%Y~rK^WarjAUE8YV^}med}uI&eN>M%6An|iEbcEpj<(Dag)+#*%|V^rBjk3 zi0cgE#6RBa?+X1|v_mto-zl*Rvd7Jr;RXkA(h_=tf?yoih9^f}f!?=XCzP1jZIYM9 zVW{E?XX$`D&wTP^IG(Xpkv<~mTZ%41H4~}-8aof8YlW;mWHiF7o)YG#Hr>oeDQNak zE=xhp8{>0a6c5)5QtdrS+z?NJqb@m(l{Ql;%Jg&NG4fmchnrip};M(N>tta=W@=b@ssRi#_`PQLNVJ8wilbiMaQdPMrbFZhEVvs&`?`*swVr3#IG@RaAVbcP#E zL%w1jJCVz1f-gPM7P*5Dkn>3yL7|J)m!Qj zRpC&N4oo9h_l{Qu0Jdp3uJfQtrO$AJZ|uATGVHx%8w?bfDca$! z&x&n^9NCa%yeXlN z3ZdzB_aKod!9S|oGk^kt%~-uW{CJ8gtALf8qF&s5SK+`C10q*1`?NGb_pj1w?|-e1_W zXPpw$Mi-aHX?IgVLY$srq)4p*>mz?{$TO{x?y#SC2e+SRqrD>C zNFNvyQIB10e}cFan>^k2jDO)Hr~w}zTj{uVD5ouGC+F1fC-1Us{Bv9gdjUG%r8+1A zx%w+RDw047+wG2pYZcZ0=fa?2T5MhD{m6`I{;nm0NBxK!ArvX|y>dct`!)Z99b;Qy zO>l&O96-}>UDW$Tr(cJ$No=5u;<=3FB)0O(g{g_;>yytCN1G!wqYKKuIfns$%1OM1 zU-z;*IS6|#W8p#5v}I&FkU>N%P=VM)RRDp?tBLkCd(rBu#%jQXoo}&`R(BamFEBG! z58?e$BKcDa-KYJ{>Y${e@6jqqqbX1r6g%u(>N3l@t=AkUZ)J$9U1VOqwDO{>u##@} z{yd^*&PTF$3C;lD-4(=x;xl5i*Y3#w5T@3cL!Z(h-*}=xA!6xrjRr2(T~;%h zn0hOrDyNLOROx)T{c(>alzONe-WU1Z>zkQx9hDm?cx zG!6{MW9k_fS#^{;2D(q17{^AujjjS5EXu7j$PcnP*=A0MA+3Z!_HEGhzdPpF;!n92 zWMR|CKpXTP*u3@2x1(=?d<6r}E`g4zd^E?BS{tCM3XuY2>IAs+#I~9P7Hm=j8VSsc z+P7DiGa-wsmk)YPTdC(^J}*$o+&IZ|H&XI~WVp?BL2uB0t{hmTlwZeu_Kj{WD|fC3 ztpd$`;SH!MVE8KJSt7Zi?PYfJ+lJTLI&y`|gL)FgOgxKK>Q6$oEkgE{qTewnc9dCD zZ%-_mQ?dDzHSO+cbT)xm-hXiUS8j#W1c3e$A0CMR+`QugdH>9JKJ30rxS;zVN1E?< z2{HgUfZD`59?TfL)g4z&3$*>8sKbMQUOby71W=6&dq*X}Crgo;dIh)R;>_+_Ekzot`CD__h&4AKnu zw5QK_sjCb{Z5m%adAaIcrG90{WMk}32F|Nov%95YrSV0TC*i>x7eA<#zOcJdpLpOG zKZ`rr?X?Wb0Vk)n0>zQjieY6dt6ct@;OF4l^PnpEnEx=wJz+f~U} zMQD~|TecXkO%8_XG1{8L)KpfLMryEz%|_J?^sV`Nzhznc^f;=bo*z}vW~T&mkevCe z#=L*D>6bolS>#J0*`xc9u6()kc6M|B*YsG`o0f9Dc*Q$JDPMPL-EdJ6M(wOm4tt2n zKEsi{j~@cenF`u#z1Al34k{#-*B+N8R5E2)ISo5~ql*^p*>kCd-G2Faq+h?@7iD~i zf7=Mf1uBFySjJeccq7_fl8T&+Y2y(^qnjvkP-a^M|F3i)j;HlT++Gus*b6kclw->! zY8mFE11IE~7iYuoUuzL>hQ!^9!?SSwtMo%tf|Xonllv0o!?eFO zlP7Bh$JLu$SLt=Blu>&v)q$7)wRHmBO$>t>zQ*}RLCMN7M&mdmoSaS4w8znjk9bL$ zK_4HiDPrVs2@-)bIlbh&TtOEY7nQP@<()9Of(A*~x@@l5ryl@jHb!F&jyl)j`r>sY zOr)GXY!lzc=Sq&QU(g>Con(l9C9?-$gLk^`H0MaZ5GUV&QtNAK&(+GGa_1B6ac*Oq z;TY{XZMw42QrF-3Ugcl2DbtlWyR=X4fBr?1y8mmDHI8so{$s46b%jrd{~x`ufB1G@ zBDYGvi2DA2qQYOElKx*lXn$27^?w=m8vnnSLv8Nzqm6&d|9$a1;ci8S71TtH4?xkO zta6i9J`xgAMJkW=A37u?zYG3Mk5qi;VF`=;a@TP>-7XyEGvJbe^WZ(5b`U(LlGRH6 zVn_FU9Z-&I-2-_G5k}U%SN|rMGA`rAG6m;?okR_bwBoE={<@3rdgE>^1jvH_+;29O z2D<#+u7I3TwT78aQ-U(Zg>UHr&~w3|aZv~DRj+cJ_3s2FX_>C|XU3aPw0hAE&6R#6 z+Q)k(?=9+l`QpUXN(r%hSAOOD&s6-2K(A)^s%J`{gKYJ)VG!)0wd`)8V&}tb5upn% z*u#fiGMp-tO4!bm@rM622bwcDrj)UxWwUE@%@*l^2|VI)Fc7^rg*S{i6O@`{LUMziCZ$ z9#2w1CiTCWvpaS{V=JARf>;3(KXM8>uaFGBi#PdN-cto&i@2FP7-RPnCF%nGmcQs7 zbresy^*2pljL6N6dtpB4u*MbM#w$$#&(t2EA?5~+k9I^{W@~YVh-0#0an7d)6a#2k#}V!(;4w0kPkS9eLQKPd)(P>-);nb>~z`@3nX_dQPlE zD4j{+O?gvn^_A~rH~fvl1+w$(8WwJG2nUFRK9z5MASZqyTx^2o*Aorcy(J%YhRLPK zZaZq9WbX=d*NSLeR_!JMR{1|YrO>B9s7UEIj>Y%!rSgrR&-uOHKv=7eIm~bCZ^?#U z!Q!NftNYxvdw2(&c{e(r*R>T_oAWJ26?u|8*Uo5|j6u{^9_cDf#524fv4cM3sG3*p zKP01QQQdHiCHr%3e*am->e$6s>opYpkm!5^aux{w8VoR;j;=lhPgOhf2bmkpi_Od5 z9AG1gq30j2*_%p)M#m{UH__4c7Q~lxoj$P=XYZ25Mi}u1kq+3~G_hD+u!-2z0{UGF zjRwH<$r~^oFDk&ik`6zZK75NATjek=y)WVzDO2Yjy7OQmxzCR#%%UBJXdPnj!bYq% zXTwmA6O?IU()L~ZUns^V1f%}zxmZDTAENNk*_Xy=v)rQmgT)z`uC6~oQ>N23yxtGG z!L?=jWdcs;Tfq9V(axf@Bz}b-y-9rwwv2L-lX(Ge5J~Nd{dtEM&rtUPMM$iA;lTPg ziHy6G&&+C6BfT7R=SA8siN9q>9%6aX^SoOND!xe>1rEmMrCIYQ9zdlsJ2+NUPQK~$ zf%F&~$0msb&q9s23A~}l+knG_F;4UuF09p%!!>;HKR`qf=Yls{>Vp3`+(@2++<@pz zFGyz@*+E!So-rRAzh_L?lF_eyeCe+O%cx)ARvy{8Y(8s%h<;cz zOK-OoUOAkW4bxureRiZ8S&LmTy0QBe5mpL(vQo(EPTFkFjeT#I3~I{MPjQcTOU89b zmtcQ9p6#k|5UDh1EZ|u1j@YAku3$N})ko8PlW&Dp0>icXmud|b1R9SSNx`+hX`tGx zk%8W+^+mUmj|!wL|12K0PX0V5Dn%*Qj{x6dfx&~^z_z#!}Qcp&em$EIoV)^b#zlb z2qJpPHC&7K&US)IS6M*eH2_ZQr|hlb8nK}9nrE=+r;H&kSA4aiT?xU=7Z?{s$W>;TzSMz}bv z$p6kWt-wnkQ+AD2N8?rLhnI^nw}}&D0a?|b-k`mOR~O>1SG{8|YjzFmS#v>{$`2R8 zmcn~E3CKm(vbPHlLJl^~M$%0_&h4rvPYo^9HrM91mw30cpkB zausk*ZtBWimiTLbAob;bFPhs$-do8cJ#4~BQfd3XPv5I1F*wB?-#eK+kWnTFe}5QL zt-OeJ|I@5MQOxNv2AMxH366BBWk)Yrx@mlTqc#HKX#8|ba3HdDt!;YnvfkR%{X|PE zv+>6Mg4Wt^es)LBb!+B^T8|Zfd1=tfz2P)(rMoC0wlwm9`47#?SlLJQX}1Y|Ot4xx zk7c;!Ryz0E(xh7ixVy;`Um;(GUh?z}US0gQq}(QPGpiCbf@bm}eg_G@j1W6?}Q z#Sx;`1)gX})p`LjjW?v<1-EgRWkwwV@s$m2W0A4W1+u;ls<=mKbjAIB0Yx3S#tA?+ z`}G8Nqpv$b4lIrKW-hk#g|zIZ{7_YO8sf|os^+eJMk1_&e17u^eAKJvEebR%arkxF zy#2_X{pW`1!iiif za(_5a0mNIhUdEJhc(!upHTX?`eCq;%Ts>d##@S|4)f)w$UYP#_Ti7rmQ_9#L}840R)%Z3?#dFb?((55B1`= zhK%oJsn5H$_wI)Wy!@szo2r`Y$q+8V^Ra+`^?!Bp!Lg~hq1VlQyKpsz5-FqLF=UUM zmUid&F}u^VE`EZH))c-0NBSMxCW?%=BPh_<+F9xdP>m@ zQr~=1ZXfau_>EyJ64PyZv!;hH z=~2Uclh7*f^kCUWSr;7JUd;PDfL$)~Il^=DKGOS(ybx2v zL<#~>l>}8-s&4nU)%@ksE{KOo)!*}|CwLlqtA?iB;T|6t`rwq{QZngV_9V`XV^a3< zSK~{%MjZ=o?SlXbolekh%lx5u(s8r=7tXmBu`5pvP%BIzivB>alOn#wrOr)0Dk(*W zG_k*js(q$}4+4+f8Ywm*BNyByT@fFui(ZufX{xlcoA8KE0>ZW?hj*M}Y$RGoC3OFQg zu_n6*>LGU%d6h@ctI0z= zpm*(?V9kC3-R>Mmw{L|h;XcmGo%HV;>%T1uUg7*Rv<$PH?Nz7%=!D1xWKJP?!9ni?B9H&nOr)_`XWOgJ2Z$& zh@Vg-0h@P)qeLa-NJNaA<7LxCSG^~zk4Z1Rl3R=0Mcx-%X{f!QG1UU zA0+C&zM7Tjem+&&&CY@C*;PWJcP}N5$&*0i1t4Wryja%TD-NkdDR%4+ zB>P)>rtx>eQL6+M!?C&zzid(RlAZJ25%qck)koYj<~LW9{Dsib=k2&i^EGCFp%Win zTkGuurk@|l0%qJD3~bMb%VjCLE*G^Zb9ka85lNv-qmlR!`1eF~T)Op zw9j_?Yt@T4oyX#|mXsAR)N3a->SqMhvJPa{t+tIV#d@6V^`!l`Yb5d9pCW=Sycove z=xJgrB!COmXcg5#p!HX4df-cG8e%D_sGF5ptijJCr$O?vJNNulv0#d7jrWDYqHiuM z1KTUFMXJ^8JS-6)+dBPX?=T+kvQw|I z-?Po! zshI-fk~N;3#0{tM)IK4FdQI{_DGt|)h}ZtDY|q~A-Yvwaxx(LnksnwkvB_nYaJ_kb zEXL+O>Wnfe$FODPb%WVy^FKF4^-~%3-YIfG6Yt626HM#>nbFKKNt5*%Gb`Gt?LktA zOXz1{xQ5f-tJn966D`%?VwbH}h!!a`oi&vpu3%)@ICW009KYK_o>P;X1HDtCw>e!-+c}ht) z_RDf*(ttEmy}4vjtthPjgL(4rMX`kavf-a%Cw1&$Xf-&RSi6#4HW~ROA()Khv1rt~ zpM=zZY2o$WceZzZR{Q4i7sJsKx0d7riB0W-jaqr2+_g<~Wot1!DF*+WRHWg3po}&7 z&A)@E87#K6TBVw0WH9)jOpTrsYBR3+;Crl_<7>>Ld(GsdMN_Q4XbBY$sHHQa0*Iyv zgy$JZGpd}6`I}*_wMGwK@s0J_|JP(Vm@lI^Y{Q(IC#mkAhTCb8A!YfFZXajweT
*J)m_>`&?yy2p03*vC##1V$vx;k}@iIYsvf) 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�=H-}H-1 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 EYuydHI0)g&a%*+5FEN^F7tWJPCSX zK`^Ymzu#2uSD<{lXKdsK4bj04ltWa#^NEJ~r(V>Itu+}7_{=|7Vr6aOFSt9O=n$!Ba3>w(G$${P~y6SzP$hr^Snl{4$p*>@)3pQoa8mAq@_ zfuuOuhWt)D+;^{HGB9NiRzM-*x&fZA+=D`ZYsY$QJ|mUsX|C1VV?U5I5*c!%w+#Bu zkHLbHa{=7H#@geL^>*5x5S(urM+M4i4R?9S+c|PsbP}KW6n^<}A-LkkLu0k`?KzKP ze-B|``)>v4`B38bmwHV3UWmC^4vonKSanH^FSY^l>ZM^~R+-t|s>2f&K$>5_BHZbd zzspznQqoSdSNhC-GD-f~{^G)pKcv^!q2Ylwkekcc+VOaBZ;gGLHOjFbxL-{7=|#4& zh!~BS5~hT0A)BAc`A!8A8JvF}LKgpn6#DXvgSL8!vo=CWl+D2~fH!Oe;O`Xsa!nu{ z#HmtI6Cm`&A5&lSchBuNfo_rSqC3;sA#ml1tLMFg#+Gl_V|N%bR-*4i>=8Edt^mf` zbSkwK(kz-+M?D%Lw$LTgh>(=~&Vs{2{ojjaN%c*YT#AM!#L&GZm^)V~L}?q}+BEYS zzFLesz#I`&d9Zh%$^I~1fnsPLvfDgMK<46LjnP^WTp@IipQxUnP%3_cTu)hz-HU70+_&YP!!C zLMVVE^;6q^w)JZ3^$>AZ6cws%+O!uPAwN2n)bGNlqX^_y3RL_iC{y2>@3t4OzQ3<@ z$7lTf`%P%$9qIfHgt8H9_gc{LJA(M{0OAW!T>gv$f19URUWkRE6N;M@#KT^8K3J@T z%)w#*o&MgG<4)~HA%D;N`ZECi19tvZzR$UO!1;5g=e}3q(v2vkok&=nU?{zp77o

8ha5Q)(Tv#>~=|7iGOXvAt&VC}SI_mU2j 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%0AeLQk0B12@QJ4s;P>yktdLX zR3;K5*D2T3OctrHDwQTf@t*^H(BI061moF3M3dcyUR`1d554qQ?pFM0H+=nM(4OY> zmYwqFH%7fWj}|}^?4E>&Z1bU7q~L#p%1HtOp#nnz{3kI>jY<5k!v8*j1Hk-GmH$fM zKSc(5dU`uII%PEo0BQpUbs+&x_5T+D<@Y88K&?Z$Sk9N;JF_n!0C+SY0LFg-6#BFL z{{RO12JX7%HoE${2DWarb~dK}L3F-gSLYgJQ2lR2J9~Fg@Gmu^`(prr=NkY3`2Pd3 z=Jz@OTOpD3&J31K~>6$p08`~Js{KEc^T!>+*YODX3g00>DqG@Ut z0jyZRqx+kY{tsNJnE%23kADA+^&j~z(RBWoj(orK$^AuqE literal 0 HcmV?d00001 diff --git a/test/web/pleroma_api/controllers/emoji_file_controller_test.exs b/test/web/pleroma_api/controllers/emoji_file_controller_test.exs index 56be130be..827a4c374 100644 --- a/test/web/pleroma_api/controllers/emoji_file_controller_test.exs +++ b/test/web/pleroma_api/controllers/emoji_file_controller_test.exs @@ -41,6 +41,45 @@ defmodule Pleroma.Web.PleromaAPI.EmojiFileControllerTest do :ok end + test "upload zip file with emojies", %{admin_conn: admin_conn} do + on_exit(fn -> + [ + "128px/a_trusted_friend-128.png", + "auroraborealis.png", + "1000px/baby_in_a_box.png", + "1000px/bear.png", + "128px/bear-128.png" + ] + |> Enum.each(fn path -> File.rm_rf!("#{@emoji_path}/test_pack/#{path}") end) + end) + + resp = + admin_conn + |> put_req_header("content-type", "multipart/form-data") + |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + file: %Plug.Upload{ + content_type: "application/zip", + filename: "finland-emojis.zip", + path: Path.absname("test/fixtures/finland-emojis.zip") + } + }) + |> json_response_and_validate_schema(200) + + assert resp == %{ + "a_trusted_friend-128" => "128px/a_trusted_friend-128.png", + "auroraborealis" => "auroraborealis.png", + "baby_in_a_box" => "1000px/baby_in_a_box.png", + "bear" => "1000px/bear.png", + "bear-128" => "128px/bear-128.png", + "blank" => "blank.png", + "blank2" => "blank2.png" + } + + Enum.each(Map.values(resp), fn path -> + assert File.exists?("#{@emoji_path}/test_pack/#{path}") + end) + end + test "create shortcode exists", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") @@ -140,7 +179,7 @@ test "with empty filename", %{admin_conn: admin_conn} do path: "#{@emoji_path}/test_pack/blank.png" } }) - |> json_response_and_validate_schema(:bad_request) == %{ + |> json_response_and_validate_schema(422) == %{ "error" => "pack name, shortcode or filename cannot be empty" } end @@ -156,7 +195,7 @@ test "add file with not loaded pack", %{admin_conn: admin_conn} do path: "#{@emoji_path}/test_pack/blank.png" } }) - |> json_response_and_validate_schema(:bad_request) == %{ + |> json_response_and_validate_schema(:not_found) == %{ "error" => "pack \"not_loaded\" is not found" } end @@ -164,7 +203,7 @@ test "add file with not loaded pack", %{admin_conn: admin_conn} do test "remove file with not loaded pack", %{admin_conn: admin_conn} do assert admin_conn |> delete("/api/pleroma/emoji/packs/not_loaded/files?shortcode=blank3") - |> json_response_and_validate_schema(:bad_request) == %{ + |> json_response_and_validate_schema(:not_found) == %{ "error" => "pack \"not_loaded\" is not found" } end @@ -172,8 +211,8 @@ test "remove file with not loaded pack", %{admin_conn: admin_conn} do test "remove file with empty shortcode", %{admin_conn: admin_conn} do assert admin_conn |> delete("/api/pleroma/emoji/packs/not_loaded/files?shortcode=") - |> json_response_and_validate_schema(:bad_request) == %{ - "error" => "pack name or shortcode cannot be empty" + |> json_response_and_validate_schema(:not_found) == %{ + "error" => "pack \"not_loaded\" is not found" } end @@ -185,7 +224,7 @@ test "update file with not loaded pack", %{admin_conn: admin_conn} do new_shortcode: "blank3", new_filename: "dir_2/blank_3.png" }) - |> json_response_and_validate_schema(:bad_request) == %{ + |> json_response_and_validate_schema(:not_found) == %{ "error" => "pack \"not_loaded\" is not found" } end From 0922791e4d2233d527dda23e66a952e3f359a3fe Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Sat, 22 Aug 2020 10:56:26 +0300 Subject: [PATCH 023/460] updated errors on add emoji --- .../pleroma_emoji_file_operation.ex | 6 +- .../controllers/emoji_file_controller.ex | 73 +++++++------------ 2 files changed, 32 insertions(+), 47 deletions(-) diff --git a/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex index 7dd4ce311..efbfce75f 100644 --- a/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex +++ b/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex @@ -71,7 +71,8 @@ def update_operation do 200 => Operation.response("Files Object", "application/json", files_object()), 404 => Operation.response("Not Found", "application/json", ApiError), 400 => Operation.response("Bad Request", "application/json", ApiError), - 409 => Operation.response("Conflict", "application/json", ApiError) + 409 => Operation.response("Conflict", "application/json", ApiError), + 422 => Operation.response("Unprocessable Entity", "application/json", ApiError) } } end @@ -118,7 +119,8 @@ def delete_operation do responses: %{ 200 => Operation.response("Files Object", "application/json", files_object()), 400 => Operation.response("Bad Request", "application/json", ApiError), - 404 => Operation.response("Not Found", "application/json", ApiError) + 404 => Operation.response("Not Found", "application/json", ApiError), + 422 => Operation.response("Unprocessable Entity", "application/json", ApiError) } } end diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex index d10f46fde..71c53df1d 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex @@ -32,22 +32,13 @@ def create(%{body_params: params} = conn, %{name: pack_name}) do |> put_status(:conflict) |> json(%{error: "An emoji with the \"#{shortcode}\" shortcode already exists"}) - {:error, :not_found} -> - conn - |> put_status(:not_found) - |> json(%{error: "pack \"#{pack_name}\" is not found"}) - {:error, :empty_values} -> conn |> put_status(:unprocessable_entity) |> json(%{error: "pack name, shortcode or filename cannot be empty"}) - {:error, _} -> - render_error( - conn, - :internal_server_error, - "Unexpected error occurred while adding file to pack." - ) + {:error, _} = error -> + handle_error(conn, error, %{pack_name: pack_name}) end end @@ -60,11 +51,6 @@ def update(%{body_params: %{shortcode: shortcode} = params} = conn, %{name: pack {:ok, pack} <- Pack.update_file(pack, shortcode, new_shortcode, new_filename, force) do json(conn, pack.files) else - {:error, :doesnt_exist} -> - conn - |> put_status(:bad_request) - |> json(%{error: "Emoji \"#{shortcode}\" does not exist"}) - {:error, :already_exists} -> conn |> put_status(:conflict) @@ -73,22 +59,13 @@ def update(%{body_params: %{shortcode: shortcode} = params} = conn, %{name: pack "New shortcode \"#{new_shortcode}\" is already used. If you want to override emoji use 'force' option" }) - {:error, :not_found} -> - conn - |> put_status(:not_found) - |> json(%{error: "pack \"#{pack_name}\" is not found"}) - {:error, :empty_values} -> conn - |> put_status(:bad_request) + |> put_status(:unprocessable_entity) |> json(%{error: "new_shortcode or new_filename cannot be empty"}) - {:error, _} -> - render_error( - conn, - :internal_server_error, - "Unexpected error occurred while updating file in pack." - ) + {:error, _} = error -> + handle_error(conn, error, %{pack_name: pack_name, code: shortcode}) end end @@ -97,30 +74,36 @@ def delete(conn, %{name: pack_name, shortcode: shortcode}) do {:ok, pack} <- Pack.delete_file(pack, shortcode) do json(conn, pack.files) else - {:error, :doesnt_exist} -> - conn - |> put_status(:bad_request) - |> json(%{error: "Emoji \"#{shortcode}\" does not exist"}) - - {:error, :not_found} -> - conn - |> put_status(:not_found) - |> json(%{error: "pack \"#{pack_name}\" is not found"}) - {:error, :empty_values} -> conn - |> put_status(:bad_request) + |> put_status(:unprocessable_entity) |> json(%{error: "pack name or shortcode cannot be empty"}) - {:error, _} -> - render_error( - conn, - :internal_server_error, - "Unexpected error occurred while removing file from pack." - ) + {:error, _} = error -> + handle_error(conn, error, %{pack_name: pack_name, code: shortcode}) end end + defp handle_error(conn, {:error, :doesnt_exist}, %{code: emoji_code}) do + conn + |> put_status(:bad_request) + |> json(%{error: "Emoji \"#{emoji_code}\" does not exist"}) + end + + defp handle_error(conn, {:error, :not_found}, %{pack_name: pack_name}) do + conn + |> put_status(:not_found) + |> json(%{error: "pack \"#{pack_name}\" is not found"}) + end + + defp handle_error(conn, {:error, _}, _) do + render_error( + conn, + :internal_server_error, + "Unexpected error occurred while adding file to pack." + ) + end + defp get_filename(%Plug.Upload{filename: filename}), do: filename defp get_filename(url) when is_binary(url), do: Path.basename(url) From 98f8851f29f940051656caa1715820bce70f8c29 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Sat, 22 Aug 2020 15:12:11 -0500 Subject: [PATCH 024/460] Use the image thumbnail for rich metadata (OGP/Twittercards) --- lib/pleroma/web/metadata/utils.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/metadata/utils.ex b/lib/pleroma/web/metadata/utils.ex index 2f0dfb474..8a206e019 100644 --- a/lib/pleroma/web/metadata/utils.ex +++ b/lib/pleroma/web/metadata/utils.ex @@ -38,7 +38,7 @@ def scrub_html(content) when is_binary(content) do def scrub_html(content), do: content def attachment_url(url) do - MediaProxy.url(url) + MediaProxy.preview_url(url) end def user_name_string(user) do From 14ec12ac956ffa9964254cb3be390c9903103da3 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Mon, 24 Aug 2020 09:47:25 +0300 Subject: [PATCH 025/460] added tests --- lib/pleroma/emoji.ex | 3 + lib/pleroma/emoji/pack.ex | 123 +++++++++++++++++++------------------- lib/pleroma/utils.ex | 16 ++--- test/emoji/pack_test.exs | 93 ++++++++++++++++++++++++++++ test/fixtures/empty.zip | Bin 0 -> 22 bytes test/utils_test.exs | 15 +++++ 6 files changed, 182 insertions(+), 68 deletions(-) create mode 100644 test/emoji/pack_test.exs create mode 100644 test/fixtures/empty.zip create mode 100644 test/utils_test.exs diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex index f6016d73f..04936155b 100644 --- a/lib/pleroma/emoji.ex +++ b/lib/pleroma/emoji.ex @@ -56,6 +56,9 @@ def get(name) do end end + @spec exist?(String.t()) :: boolean() + def exist?(name), do: not is_nil(get(name)) + @doc "Returns all the emojos!!" @spec get_all() :: list({String.t(), String.t(), String.t()}) def get_all do diff --git a/lib/pleroma/emoji/pack.ex b/lib/pleroma/emoji/pack.ex index 03aed33bb..dd79bdfab 100644 --- a/lib/pleroma/emoji/pack.ex +++ b/lib/pleroma/emoji/pack.ex @@ -65,71 +65,73 @@ def delete(name) do end end + @spec unpack_zip_emojies(list(tuple())) :: list(map()) + defp unpack_zip_emojies(zip_files) do + Enum.reduce(zip_files, [], fn + {_, path, s, _, _, _}, acc when elem(s, 2) == :regular -> + with( + filename <- Path.basename(path), + shortcode <- Path.basename(filename, Path.extname(filename)), + false <- Emoji.exist?(shortcode) + ) do + acc ++ [%{path: path, filename: path, shortcode: shortcode}] + else + _ -> acc + end + + _, acc -> + acc + end) + end + @spec add_file(String.t(), String.t(), Path.t(), Plug.Upload.t()) :: {:ok, t()} | {:error, File.posix() | atom()} def add_file(%Pack{} = pack, _, _, %Plug.Upload{content_type: "application/zip"} = file) do - with {:ok, zip_items} <- :zip.table(to_charlist(file.path)) do - emojies = - for {_, path, s, _, _, _} <- zip_items, elem(s, 2) == :regular do - filename = Path.basename(path) - shortcode = Path.basename(filename, Path.extname(filename)) + with {:ok, zip_files} <- :zip.table(to_charlist(file.path)), + [_ | _] = emojies <- unpack_zip_emojies(zip_files), + {:ok, tmp_dir} <- Pleroma.Utils.tmp_dir("emoji") do + try do + {:ok, _emoji_files} = + :zip.unzip( + to_charlist(file.path), + [{:file_list, Enum.map(emojies, & &1[:path])}, {:cwd, tmp_dir}] + ) - %{ - path: path, - filename: path, - shortcode: shortcode, - exist: not is_nil(Pleroma.Emoji.get(shortcode)) - } - end - |> Enum.group_by(& &1[:exist]) + {_, updated_pack} = + Enum.map_reduce(emojies, pack, fn item, emoji_pack -> + emoji_file = %Plug.Upload{ + filename: item[:filename], + path: Path.join(tmp_dir, item[:path]) + } - case Map.get(emojies, false, []) do - [_ | _] = new_emojies -> - {:ok, tmp_dir} = Pleroma.Utils.tmp_dir("emoji") - - try do - {:ok, _emoji_files} = - :zip.unzip( - to_charlist(file.path), - [ - {:file_list, Enum.map(new_emojies, & &1[:path])}, - {:cwd, tmp_dir} - ] + {:ok, updated_pack} = + do_add_file( + emoji_pack, + item[:shortcode], + to_string(item[:filename]), + emoji_file ) - {_, updated_pack} = - Enum.map_reduce(new_emojies, pack, fn item, emoji_pack -> - emoji_file = %Plug.Upload{ - filename: item[:filename], - path: Path.join(tmp_dir, item[:path]) - } + {item, updated_pack} + end) - {:ok, updated_pack} = - do_add_file( - emoji_pack, - item[:shortcode], - to_string(item[:filename]), - emoji_file - ) + Emoji.reload() - {item, updated_pack} - end) - - Emoji.reload() - - {:ok, updated_pack} - after - File.rm_rf(tmp_dir) - end - - _ -> - {:ok, pack} + {:ok, updated_pack} + after + File.rm_rf(tmp_dir) end + else + {:error, _} = error -> + error + + _ -> + {:ok, pack} end end - def add_file(%Pack{} = pack, shortcode, filename, file) do + def add_file(%Pack{} = pack, shortcode, filename, %Plug.Upload{} = file) do with :ok <- validate_not_empty([shortcode, filename]), :ok <- validate_emoji_not_exists(shortcode), {:ok, updated_pack} <- do_add_file(pack, shortcode, filename, file) do @@ -139,12 +141,10 @@ def add_file(%Pack{} = pack, shortcode, filename, file) do end defp do_add_file(pack, shortcode, filename, file) do - with :ok <- save_file(file, pack, filename), - {:ok, updated_pack} <- - pack - |> put_emoji(shortcode, filename) - |> save_pack() do - {:ok, updated_pack} + with :ok <- save_file(file, pack, filename) do + pack + |> put_emoji(shortcode, filename) + |> save_pack() end end @@ -312,9 +312,10 @@ defp validate_emoji_not_exists(shortcode, force \\ false) defp validate_emoji_not_exists(_shortcode, true), do: :ok defp validate_emoji_not_exists(shortcode, _) do - case Emoji.get(shortcode) do - nil -> :ok - _ -> {:error, :already_exists} + if Emoji.exist?(shortcode) do + {:error, :already_exists} + else + :ok end end @@ -466,7 +467,7 @@ defp save_file(%Plug.Upload{path: upload_path}, pack, filename) do defp put_emoji(pack, shortcode, filename) do files = Map.put(pack.files, shortcode, filename) - %{pack | files: files} + %{pack | files: files, files_count: length(Map.keys(files))} end defp delete_emoji(pack, shortcode) do diff --git a/lib/pleroma/utils.ex b/lib/pleroma/utils.ex index fcb8c64c7..e95766223 100644 --- a/lib/pleroma/utils.ex +++ b/lib/pleroma/utils.ex @@ -28,14 +28,16 @@ def command_available?(command) do @doc "creates the uniq temporary directory" @spec tmp_dir(String.t()) :: {:ok, String.t()} | {:error, :file.posix()} def tmp_dir(prefix \\ "") do - sub_dir = [ - prefix, - Timex.to_unix(Timex.now()), - :os.getpid(), - String.downcase(Integer.to_string(:rand.uniform(0x100000000), 36)) - ] + sub_dir = + [ + prefix, + Timex.to_unix(Timex.now()), + :os.getpid(), + String.downcase(Integer.to_string(:rand.uniform(0x100000000), 36)) + ] + |> Enum.join("-") - tmp_dir = Path.join(System.tmp_dir!(), Enum.join(sub_dir, "-")) + tmp_dir = Path.join(System.tmp_dir!(), sub_dir) case File.mkdir(tmp_dir) do :ok -> {:ok, tmp_dir} diff --git a/test/emoji/pack_test.exs b/test/emoji/pack_test.exs new file mode 100644 index 000000000..3ec991f0f --- /dev/null +++ b/test/emoji/pack_test.exs @@ -0,0 +1,93 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Emoji.PackTest do + use ExUnit.Case, async: true + alias Pleroma.Emoji.Pack + + @emoji_path Path.join( + Pleroma.Config.get!([:instance, :static_dir]), + "emoji" + ) + + setup do + pack_path = Path.join(@emoji_path, "dump_pack") + File.mkdir(pack_path) + + File.write!(Path.join(pack_path, "pack.json"), """ + { + "files": { }, + "pack": { + "description": "Dump pack", "homepage": "https://pleroma.social", + "license": "Test license", "share-files": true + }} + """) + + {:ok, pack} = Pleroma.Emoji.Pack.load_pack("dump_pack") + + on_exit(fn -> + File.rm_rf!(pack_path) + end) + + {:ok, pack: pack} + end + + describe "add_file/4" do + test "add emojies from zip file", %{pack: pack} do + file = %Plug.Upload{ + content_type: "application/zip", + filename: "finland-emojis.zip", + path: Path.absname("test/fixtures/finland-emojis.zip") + } + + {:ok, updated_pack} = Pack.add_file(pack, nil, nil, file) + + assert updated_pack.files == %{ + "a_trusted_friend-128" => "128px/a_trusted_friend-128.png", + "auroraborealis" => "auroraborealis.png", + "baby_in_a_box" => "1000px/baby_in_a_box.png", + "bear" => "1000px/bear.png", + "bear-128" => "128px/bear-128.png" + } + + assert updated_pack.files_count == 5 + end + end + + test "returns error when zip file is bad", %{pack: pack} do + file = %Plug.Upload{ + content_type: "application/zip", + filename: "finland-emojis.zip", + path: Path.absname("test/instance_static/emoji/test_pack/blank.png") + } + + assert Pack.add_file(pack, nil, nil, file) == {:error, :einval} + end + + test "returns pack when zip file is empty", %{pack: pack} do + file = %Plug.Upload{ + content_type: "application/zip", + filename: "finland-emojis.zip", + path: Path.absname("test/fixtures/empty.zip") + } + + {:ok, updated_pack} = Pack.add_file(pack, nil, nil, file) + assert updated_pack == pack + end + + test "add emoji file", %{pack: pack} do + file = %Plug.Upload{ + filename: "blank.png", + path: "#{@emoji_path}/test_pack/blank.png" + } + + {:ok, updated_pack} = Pack.add_file(pack, "test_blank", "test_blank.png", file) + + assert updated_pack.files == %{ + "test_blank" => "test_blank.png" + } + + assert updated_pack.files_count == 1 + end +end diff --git a/test/fixtures/empty.zip b/test/fixtures/empty.zip new file mode 100644 index 0000000000000000000000000000000000000000..15cb0ecb3e219d1701294bfdf0fe3f5cb5d208e7 GIT binary patch literal 22 NcmWIWW@Tf*000g10H*)| literal 0 HcmV?d00001 diff --git a/test/utils_test.exs b/test/utils_test.exs new file mode 100644 index 000000000..3a730d545 --- /dev/null +++ b/test/utils_test.exs @@ -0,0 +1,15 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.UtilsTest do + use ExUnit.Case, async: true + + describe "tmp_dir/1" do + test "returns unique temporary directory" do + {:ok, path} = Pleroma.Utils.tmp_dir("emoji") + assert path =~ ~r/\/tmp\/emoji-(.*)-#{:os.getpid()}-(.*)/ + File.rm_rf(path) + end + end +end From b267b751d451508bd655142a4711776ea15484f4 Mon Sep 17 00:00:00 2001 From: Maksim Date: Tue, 25 Aug 2020 05:38:25 +0000 Subject: [PATCH 026/460] Apply 1 suggestion(s) to 1 file(s) --- lib/pleroma/emoji/pack.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/emoji/pack.ex b/lib/pleroma/emoji/pack.ex index dd79bdfab..930bbb422 100644 --- a/lib/pleroma/emoji/pack.ex +++ b/lib/pleroma/emoji/pack.ex @@ -74,7 +74,7 @@ defp unpack_zip_emojies(zip_files) do shortcode <- Path.basename(filename, Path.extname(filename)), false <- Emoji.exist?(shortcode) ) do - acc ++ [%{path: path, filename: path, shortcode: shortcode}] + [%{path: path, filename: path, shortcode: shortcode} | acc] else _ -> acc end From 899ea2da3e77ca64598e45eba986d5315b523120 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 25 Aug 2020 17:18:22 -0500 Subject: [PATCH 027/460] Switch to imagemagick, only support videos --- config/config.exs | 2 +- config/description.exs | 4 ++-- lib/pleroma/helpers/media_helper.ex | 13 ++++++------- .../web/media_proxy/media_proxy_controller.ex | 15 +++++---------- 4 files changed, 14 insertions(+), 20 deletions(-) diff --git a/config/config.exs b/config/config.exs index e1558e29e..972b96d2d 100644 --- a/config/config.exs +++ b/config/config.exs @@ -444,7 +444,7 @@ enabled: false, thumbnail_max_width: 600, thumbnail_max_height: 600, - quality: 2, + image_quality: 85, proxy_opts: [ head_request_max_read_duration: 5_000 ] diff --git a/config/description.exs b/config/description.exs index 0082cc84f..60f76be45 100644 --- a/config/description.exs +++ b/config/description.exs @@ -1975,9 +1975,9 @@ description: "Max height of preview thumbnail." }, %{ - key: :quality, + key: :image_quality, type: :integer, - description: "Quality of the output. Ranges from 1 (max quality) to 31 (lowest quality)." + description: "Quality of the output. Ranges from 0 (min quality) to 100 (max quality)." }, %{ key: :proxy_opts, diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index 89dd4204b..07e6dba5e 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -7,18 +7,17 @@ defmodule Pleroma.Helpers.MediaHelper do Handles common media-related operations. """ - def ffmpeg_resize(uri_or_path, %{max_width: max_width, max_height: max_height} = options) do - quality = options[:quality] || 1 + def image_resize(url, %{max_width: max_width, max_height: max_height} = options) do + quality = options[:quality] || 85 cmd = ~s""" - ffmpeg -i #{uri_or_path} -f lavfi -i color=c=white \ - -filter_complex "[0:v] scale='min(#{max_width},iw)':'min(#{max_height},ih)': \ - force_original_aspect_ratio=decrease [scaled]; \ - [1][scaled] scale2ref [bg][img]; [bg] setsar=1 [bg]; [bg][img] overlay=shortest=1" \ - -loglevel quiet -f image2 -vcodec mjpeg -frames:v 1 -q:v #{quality} pipe:1 + convert - -resize '#{max_width}x#{max_height}>' -quality #{quality} - """ pid = Port.open({:spawn, cmd}, [:use_stdio, :in, :stream, :exit_status, :binary]) + {:ok, env} = url |> Pleroma.Web.MediaProxy.url() |> Pleroma.HTTP.get() + image = env.body + Port.command(pid, image) loop_recv(pid) end diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 1c51aa5e3..b925973ba 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -66,25 +66,20 @@ defp handle_preview(conn, url) do end defp handle_preview("image/" <> _ = _content_type, conn, url) do - handle_image_or_video_preview(conn, url) - end - - defp handle_preview("video/" <> _ = _content_type, conn, url) do - handle_image_or_video_preview(conn, url) + handle_image_preview(conn, url) end defp handle_preview(content_type, conn, _url) do send_resp(conn, :unprocessable_entity, "Unsupported content type: #{content_type}.") end - defp handle_image_or_video_preview(%{params: params} = conn, url) do - quality = Config.get!([:media_preview_proxy, :quality]) + defp handle_image_preview(%{params: params} = conn, url) do + quality = Config.get!([:media_preview_proxy, :image_quality]) with {thumbnail_max_width, thumbnail_max_height} <- thumbnail_max_dimensions(params), - media_proxy_url <- MediaProxy.url(url), {:ok, thumbnail_binary} <- - MediaHelper.ffmpeg_resize( - media_proxy_url, + MediaHelper.image_resize( + url, %{max_width: thumbnail_max_width, max_height: thumbnail_max_height, quality: quality} ) do conn From ddbddc08fc9fe5458edc983c81a77671da34a71f Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 25 Aug 2020 17:31:55 -0500 Subject: [PATCH 028/460] Redirects for videos right now --- lib/pleroma/web/media_proxy/media_proxy_controller.ex | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index b925973ba..6abbf9e23 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -69,6 +69,12 @@ defp handle_preview("image/" <> _ = _content_type, conn, url) do handle_image_preview(conn, url) end + defp handle_preview("video/" <> _ = _content_type, conn, url) do + mediaproxy_url = url |> MediaProxy.url() + + redirect(conn, external: mediaproxy_url) + end + defp handle_preview(content_type, conn, _url) do send_resp(conn, :unprocessable_entity, "Unsupported content type: #{content_type}.") end From afa03ca8e2cffc85628beb5f9a70401d984ab216 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 25 Aug 2020 17:36:53 -0500 Subject: [PATCH 029/460] Allow both stdin and stdout --- lib/pleroma/helpers/media_helper.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index 07e6dba5e..5fe135584 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -14,7 +14,7 @@ def image_resize(url, %{max_width: max_width, max_height: max_height} = options) convert - -resize '#{max_width}x#{max_height}>' -quality #{quality} - """ - pid = Port.open({:spawn, cmd}, [:use_stdio, :in, :stream, :exit_status, :binary]) + pid = Port.open({:spawn, cmd}, [:use_stdio, :stream, :exit_status, :binary]) {:ok, env} = url |> Pleroma.Web.MediaProxy.url() |> Pleroma.HTTP.get() image = env.body Port.command(pid, image) From a136e7e9b590e3f23e472bf27c7c6a81d8d7792b Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 25 Aug 2020 18:10:27 -0500 Subject: [PATCH 030/460] Try specifying fd0, force jpg out --- lib/pleroma/helpers/media_helper.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index 5fe135584..01f42d9b0 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -11,7 +11,7 @@ def image_resize(url, %{max_width: max_width, max_height: max_height} = options) quality = options[:quality] || 85 cmd = ~s""" - convert - -resize '#{max_width}x#{max_height}>' -quality #{quality} - + convert fd:0 -resize '#{max_width}x#{max_height}>' -quality #{quality} jpg:- """ pid = Port.open({:spawn, cmd}, [:use_stdio, :stream, :exit_status, :binary]) From bc94f0c6da2405e2f1cdae89696970728b6e987f Mon Sep 17 00:00:00 2001 From: href Date: Wed, 26 Aug 2020 16:12:34 +0200 Subject: [PATCH 031/460] Use mkfifo to feed ImageMagick --- lib/pleroma/helpers/media_helper.ex | 70 ++++++++++++++++++++++++----- 1 file changed, 60 insertions(+), 10 deletions(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index 01f42d9b0..a43352ae0 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -7,18 +7,66 @@ defmodule Pleroma.Helpers.MediaHelper do Handles common media-related operations. """ - def image_resize(url, %{max_width: max_width, max_height: max_height} = options) do + @tmp_base "/tmp/pleroma-media_preview-pipe" + + def image_resize(url, options) do + with executable when is_binary(executable) <- System.find_executable("convert"), + {:ok, args} <- prepare_resize_args(options), + url = Pleroma.Web.MediaProxy.url(url), + {:ok, env} <- Pleroma.HTTP.get(url), + {:ok, fifo_path} <- mkfifo() + do + run_fifo(fifo_path, env, executable, args) + else + nil -> {:error, {:convert, :command_not_found}} + {:error, _} = error -> error + end + end + + defp prepare_resize_args(%{max_width: max_width, max_height: max_height} = options) do quality = options[:quality] || 85 + resize = Enum.join([max_width, "x", max_height, ">"]) + args = [ + "-auto-orient", # Support for EXIF rotation + "-resize", resize, + "-quality", to_string(quality) + ] + {:ok, args} + end - cmd = ~s""" - convert fd:0 -resize '#{max_width}x#{max_height}>' -quality #{quality} jpg:- - """ + defp prepare_resize_args(_), do: {:error, :missing_options} - pid = Port.open({:spawn, cmd}, [:use_stdio, :stream, :exit_status, :binary]) - {:ok, env} = url |> Pleroma.Web.MediaProxy.url() |> Pleroma.HTTP.get() - image = env.body - Port.command(pid, image) + defp run_fifo(fifo_path, env, executable, args) do + args = List.flatten([fifo_path, args, "jpg:fd:1"]) + pid = Port.open({:spawn_executable, executable}, [:use_stdio, :stream, :exit_status, :binary, args: args]) + fifo = Port.open(to_charlist(fifo_path), [:eof, :binary, :stream, :out]) + true = Port.command(fifo, env.body) + :erlang.port_close(fifo) loop_recv(pid) + after + File.rm(fifo_path) + end + + defp mkfifo() do + path = "#{@tmp_base}#{to_charlist(:erlang.phash2(self()))}" + case System.cmd("mkfifo", [path]) do + {_, 0} -> + spawn(fifo_guard(path)) + {:ok, path} + {_, err} -> + {:error, {:fifo_failed, err}} + end + end + + defp fifo_guard(path) do + pid = self() + fn() -> + ref = Process.monitor(pid) + receive do + {:DOWN, ^ref, :process, ^pid, _} -> + File.rm(path) + end + end end defp loop_recv(pid) do @@ -29,12 +77,14 @@ defp loop_recv(pid, acc) do receive do {^pid, {:data, data}} -> loop_recv(pid, acc <> data) - {^pid, {:exit_status, 0}} -> {:ok, acc} - {^pid, {:exit_status, status}} -> {:error, status} + after + 5000 -> + :erlang.port_close(pid) + {:error, :timeout} end end end From d4d1192341868d978e19777c17be85e331367264 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 26 Aug 2020 14:28:25 +0000 Subject: [PATCH 032/460] Remove auto-orient; don't use it on previews, only originals --- lib/pleroma/helpers/media_helper.ex | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index a43352ae0..db0c4b0cf 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -27,7 +27,6 @@ defp prepare_resize_args(%{max_width: max_width, max_height: max_height} = optio quality = options[:quality] || 85 resize = Enum.join([max_width, "x", max_height, ">"]) args = [ - "-auto-orient", # Support for EXIF rotation "-resize", resize, "-quality", to_string(quality) ] From 2c95533ead56217ec27e09e0ead0050e110dff22 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 26 Aug 2020 15:37:45 +0000 Subject: [PATCH 033/460] Change method of convert using stdout, make progressive jpegs --- lib/pleroma/helpers/media_helper.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index db0c4b0cf..3256802a0 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -27,6 +27,7 @@ defp prepare_resize_args(%{max_width: max_width, max_height: max_height} = optio quality = options[:quality] || 85 resize = Enum.join([max_width, "x", max_height, ">"]) args = [ + "-interlace", "Plane", "-resize", resize, "-quality", to_string(quality) ] @@ -36,7 +37,7 @@ defp prepare_resize_args(%{max_width: max_width, max_height: max_height} = optio defp prepare_resize_args(_), do: {:error, :missing_options} defp run_fifo(fifo_path, env, executable, args) do - args = List.flatten([fifo_path, args, "jpg:fd:1"]) + args = List.flatten([fifo_path, args, "jpg:-"]) pid = Port.open({:spawn_executable, executable}, [:use_stdio, :stream, :exit_status, :binary, args: args]) fifo = Port.open(to_charlist(fifo_path), [:eof, :binary, :stream, :out]) true = Port.command(fifo, env.body) From eead2276e79f29c4d0e10d23eb7524a9ee5f5045 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 26 Aug 2020 16:18:11 -0500 Subject: [PATCH 034/460] Ensure GIFs are redirected to the original or they become static. --- lib/pleroma/web/media_proxy/media_proxy_controller.ex | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 6abbf9e23..d465ce8d1 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -65,6 +65,12 @@ defp handle_preview(conn, url) do end end + defp handle_preview("image/gif" = _content_type, conn, url) do + mediaproxy_url = url |> MediaProxy.url() + + redirect(conn, external: mediaproxy_url) + end + defp handle_preview("image/" <> _ = _content_type, conn, url) do handle_image_preview(conn, url) end From 9567b96c7927be433eac4f023051adc5cbd6610c Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 26 Aug 2020 16:40:13 -0500 Subject: [PATCH 035/460] Rename to make it obvious this is for images not videos --- lib/pleroma/helpers/media_helper.ex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index 3256802a0..fe11dd460 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -11,7 +11,7 @@ defmodule Pleroma.Helpers.MediaHelper do def image_resize(url, options) do with executable when is_binary(executable) <- System.find_executable("convert"), - {:ok, args} <- prepare_resize_args(options), + {:ok, args} <- prepare_image_resize_args(options), url = Pleroma.Web.MediaProxy.url(url), {:ok, env} <- Pleroma.HTTP.get(url), {:ok, fifo_path} <- mkfifo() @@ -23,7 +23,7 @@ def image_resize(url, options) do end end - defp prepare_resize_args(%{max_width: max_width, max_height: max_height} = options) do + defp prepare_image_resize_args(%{max_width: max_width, max_height: max_height} = options) do quality = options[:quality] || 85 resize = Enum.join([max_width, "x", max_height, ">"]) args = [ @@ -34,7 +34,7 @@ defp prepare_resize_args(%{max_width: max_width, max_height: max_height} = optio {:ok, args} end - defp prepare_resize_args(_), do: {:error, :missing_options} + defp prepare_image_resize_args(_), do: {:error, :missing_options} defp run_fifo(fifo_path, env, executable, args) do args = List.flatten([fifo_path, args, "jpg:-"]) From 697bea04731614bcd2e1e10f0564863dc49a49fa Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 26 Aug 2020 17:43:25 -0500 Subject: [PATCH 036/460] Move arg for images to the list so we can reuse these fifo functions for videos --- lib/pleroma/helpers/media_helper.ex | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index fe11dd460..0299b16ae 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -29,7 +29,8 @@ defp prepare_image_resize_args(%{max_width: max_width, max_height: max_height} = args = [ "-interlace", "Plane", "-resize", resize, - "-quality", to_string(quality) + "-quality", to_string(quality), + "jpg:-" ] {:ok, args} end @@ -37,7 +38,7 @@ defp prepare_image_resize_args(%{max_width: max_width, max_height: max_height} = defp prepare_image_resize_args(_), do: {:error, :missing_options} defp run_fifo(fifo_path, env, executable, args) do - args = List.flatten([fifo_path, args, "jpg:-"]) + args = List.flatten([fifo_path, args]) pid = Port.open({:spawn_executable, executable}, [:use_stdio, :stream, :exit_status, :binary, args: args]) fifo = Port.open(to_charlist(fifo_path), [:eof, :binary, :stream, :out]) true = Port.command(fifo, env.body) From 157ecf402230c0b786f5765dd8b709d45c45974a Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 27 Aug 2020 11:46:56 -0500 Subject: [PATCH 037/460] Follow redirects. I think we should be using some global adapter options here, though. --- lib/pleroma/web/media_proxy/media_proxy_controller.ex | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index d465ce8d1..736b7db56 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -50,7 +50,9 @@ def preview(conn, %{"sig" => sig64, "url" => url64}) do defp handle_preview(conn, url) do with {:ok, %{status: status} = head_response} when status in 200..299 <- - Tesla.head(url, opts: [adapter: [timeout: preview_head_request_timeout()]]) do + Tesla.head(url, + opts: [adapter: [timeout: preview_head_request_timeout(), follow_redirect: true]] + ) do content_type = Tesla.get_header(head_response, "content-type") handle_preview(content_type, conn, url) else From ef9d12fcc500d7429bee0d6ccffe3596434aee52 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 27 Aug 2020 12:31:55 -0500 Subject: [PATCH 038/460] Attempt at supporting video thumbnails via ffmpeg --- lib/pleroma/helpers/media_helper.ex | 19 +++++++++++++++++++ .../web/media_proxy/media_proxy_controller.ex | 17 ++++++++++++++--- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index 0299b16ae..7e1af8bac 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -37,6 +37,25 @@ defp prepare_image_resize_args(%{max_width: max_width, max_height: max_height} = defp prepare_image_resize_args(_), do: {:error, :missing_options} + def video_framegrab(url) do + with executable when is_binary(executable) <- System.find_executable("ffmpeg"), + args = [ + "-i", "-", + "-vframes", "1", + "-f", "mjpeg", + "-loglevel", "error", + "-" + ], + url = Pleroma.Web.MediaProxy.url(url), + {:ok, env} <- Pleroma.HTTP.get(url), + {:ok, fifo_path} <- mkfifo() do + run_fifo(fifo_path, env, executable, args) + else + nil -> {:error, {:ffmpeg, :command_not_found}} + {:error, _} = error -> error + end + end + defp run_fifo(fifo_path, env, executable, args) do args = List.flatten([fifo_path, args]) pid = Port.open({:spawn_executable, executable}, [:use_stdio, :stream, :exit_status, :binary, args: args]) diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 736b7db56..7ac1a97e2 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -78,9 +78,7 @@ defp handle_preview("image/" <> _ = _content_type, conn, url) do end defp handle_preview("video/" <> _ = _content_type, conn, url) do - mediaproxy_url = url |> MediaProxy.url() - - redirect(conn, external: mediaproxy_url) + handle_video_preview(conn, url) end defp handle_preview(content_type, conn, _url) do @@ -106,6 +104,19 @@ defp handle_image_preview(%{params: params} = conn, url) do end end + defp handle_video_preview(conn, url) do + with {:ok, thumbnail_binary} <- + MediaHelper.video_framegrab(url) do + conn + |> put_resp_header("content-type", "image/jpeg") + |> put_resp_header("content-disposition", "inline; filename=\"preview.jpg\"") + |> send_resp(200, thumbnail_binary) + else + _ -> + send_resp(conn, :failed_dependency, "Can't handle preview.") + end + end + defp thumbnail_max_dimensions(params) do config = Config.get([:media_preview_proxy], []) From f1218a2b4e16178c8c1285157f7cd995dc950e3e Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 27 Aug 2020 12:47:29 -0500 Subject: [PATCH 039/460] ffmpeg needs input from fifo path, not stdin --- lib/pleroma/helpers/media_helper.ex | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index 7e1af8bac..7c2bfbc53 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -39,16 +39,16 @@ defp prepare_image_resize_args(_), do: {:error, :missing_options} def video_framegrab(url) do with executable when is_binary(executable) <- System.find_executable("ffmpeg"), + url = Pleroma.Web.MediaProxy.url(url), + {:ok, env} <- Pleroma.HTTP.get(url), + {:ok, fifo_path} <- mkfifo(), args = [ - "-i", "-", + "-i", fifo_path, "-vframes", "1", "-f", "mjpeg", "-loglevel", "error", "-" - ], - url = Pleroma.Web.MediaProxy.url(url), - {:ok, env} <- Pleroma.HTTP.get(url), - {:ok, fifo_path} <- mkfifo() do + ] do run_fifo(fifo_path, env, executable, args) else nil -> {:error, {:ffmpeg, :command_not_found}} @@ -57,7 +57,12 @@ def video_framegrab(url) do end defp run_fifo(fifo_path, env, executable, args) do - args = List.flatten([fifo_path, args]) + args = + if _executable = System.find_executable("convert") do + List.flatten([fifo_path, args]) + else + args + end pid = Port.open({:spawn_executable, executable}, [:use_stdio, :stream, :exit_status, :binary, args: args]) fifo = Port.open(to_charlist(fifo_path), [:eof, :binary, :stream, :out]) true = Port.command(fifo, env.body) From dd1de994d57e3d9c99bb4e4c7019c696b5153f50 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 27 Aug 2020 13:10:40 -0500 Subject: [PATCH 040/460] Try to trick ffmpeg into working with this named pipe --- lib/pleroma/helpers/media_helper.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index 7c2bfbc53..385a4df81 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -43,11 +43,12 @@ def video_framegrab(url) do {:ok, env} <- Pleroma.HTTP.get(url), {:ok, fifo_path} <- mkfifo(), args = [ + "-y", "-i", fifo_path, "-vframes", "1", "-f", "mjpeg", "-loglevel", "error", - "-" + "pipe:" ] do run_fifo(fifo_path, env, executable, args) else From 3a5231ec8fd0583d7f4bf05378d8bb81096c4f40 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 27 Aug 2020 16:33:37 -0500 Subject: [PATCH 041/460] Keep args construction within video/image scopes instead of mangling down in fifo town --- lib/pleroma/helpers/media_helper.ex | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index 385a4df81..b42612ccb 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -16,6 +16,7 @@ def image_resize(url, options) do {:ok, env} <- Pleroma.HTTP.get(url), {:ok, fifo_path} <- mkfifo() do + args = List.flatten([fifo_path, args]) run_fifo(fifo_path, env, executable, args) else nil -> {:error, {:convert, :command_not_found}} @@ -58,12 +59,6 @@ def video_framegrab(url) do end defp run_fifo(fifo_path, env, executable, args) do - args = - if _executable = System.find_executable("convert") do - List.flatten([fifo_path, args]) - else - args - end pid = Port.open({:spawn_executable, executable}, [:use_stdio, :stream, :exit_status, :binary, args: args]) fifo = Port.open(to_charlist(fifo_path), [:eof, :binary, :stream, :out]) true = Port.command(fifo, env.body) From 67c79394e81cf9f5404afad29a397acf32dece33 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 27 Aug 2020 17:15:23 -0500 Subject: [PATCH 042/460] Support static avatars and header images with Mediaproxy Preview --- lib/pleroma/web/mastodon_api/views/account_view.ex | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/web/mastodon_api/views/account_view.ex b/lib/pleroma/web/mastodon_api/views/account_view.ex index 864c0417f..eef45b35d 100644 --- a/lib/pleroma/web/mastodon_api/views/account_view.ex +++ b/lib/pleroma/web/mastodon_api/views/account_view.ex @@ -181,8 +181,10 @@ defp do_render("show.json", %{user: user} = opts) do user = User.sanitize_html(user, User.html_filter_policy(opts[:for])) display_name = user.name || user.nickname - image = User.avatar_url(user) |> MediaProxy.url() + avatar = User.avatar_url(user) |> MediaProxy.url() + avatar_static = User.avatar_url(user) |> MediaProxy.preview_url() header = User.banner_url(user) |> MediaProxy.url() + header_static = User.banner_url(user) |> MediaProxy.preview_url() following_count = if !user.hide_follows_count or !user.hide_follows or opts[:for] == user do @@ -247,10 +249,10 @@ defp do_render("show.json", %{user: user} = opts) do statuses_count: user.note_count, note: user.bio || "", url: user.uri || user.ap_id, - avatar: image, - avatar_static: image, + avatar: avatar, + avatar_static: avatar_static, header: header, - header_static: header, + header_static: header_static, emojis: emojis, fields: user.fields, bot: bot, From 5b4d483f522f470b9d2cdb7f43d98dde427a1241 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 27 Aug 2020 17:28:21 -0500 Subject: [PATCH 043/460] Add a note about the avatars and banners situation --- lib/pleroma/web/media_proxy/media_proxy_controller.ex | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 7ac1a97e2..411dc95d0 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -67,6 +67,9 @@ defp handle_preview(conn, url) do end end + # TODO: find a workaround so avatar_static and banner_static can work. + # Those only permit GIFs for animation, so we have to permit a way to + # allow those to get real static variants. defp handle_preview("image/gif" = _content_type, conn, url) do mediaproxy_url = url |> MediaProxy.url() From ce387ce7306d944c11e63f0c86719afd5c2da2d2 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Fri, 28 Aug 2020 16:15:57 +0300 Subject: [PATCH 044/460] mix.exs: bump development version after 2.1.0 release --- mix.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mix.exs b/mix.exs index d7c408972..4de0c78db 100644 --- a/mix.exs +++ b/mix.exs @@ -4,7 +4,7 @@ defmodule Pleroma.Mixfile do def project do [ app: :pleroma, - version: version("2.1.0"), + version: version("2.1.50"), elixir: "~> 1.9", elixirc_paths: elixirc_paths(Mix.env()), compilers: [:phoenix, :gettext] ++ Mix.compilers(), From 35da3be9ddf2df042153978308178c94afe25737 Mon Sep 17 00:00:00 2001 From: Shpuld Shpludson Date: Fri, 28 Aug 2020 13:50:21 +0000 Subject: [PATCH 045/460] Add mention of sudo -Hu pleroma to docs --- docs/administration/updating.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/administration/updating.md b/docs/administration/updating.md index c994f3f16..ef2c9218c 100644 --- a/docs/administration/updating.md +++ b/docs/administration/updating.md @@ -18,9 +18,10 @@ su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate" 1. Go to the working directory of Pleroma (default is `/opt/pleroma`) 2. Run `git pull`. This pulls the latest changes from upstream. -3. Run `mix deps.get`. This pulls in any new dependencies. +3. Run `mix deps.get` [^1]. This pulls in any new dependencies. 4. Stop the Pleroma service. -5. Run `mix ecto.migrate`[^1]. This task performs database migrations, if there were any. +5. Run `mix ecto.migrate` [^1] [^2]. This task performs database migrations, if there were any. 6. Start the Pleroma service. -[^1]: Prefix with `MIX_ENV=prod` to run it using the production config file. +[^1]: Depending on which install guide you followed (for example on Debian/Ubuntu), you want to run `mix` tasks as `pleroma` user by adding `sudo -Hu pleroma` before the command. +[^2]: Prefix with `MIX_ENV=prod` to run it using the production config file. From f0fefc4f5c3aa4fa62f2edee72ee864a16e7176d Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Fri, 28 Aug 2020 18:17:44 +0300 Subject: [PATCH 046/460] marks notifications as read after mute --- lib/pleroma/notification.ex | 12 +++++ lib/pleroma/web/common_api/common_api.ex | 3 +- test/web/common_api/common_api_test.exs | 65 ++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex index c1825f810..b952e81fa 100644 --- a/lib/pleroma/notification.ex +++ b/lib/pleroma/notification.ex @@ -648,4 +648,16 @@ def for_user_and_activity(user, activity) do ) |> Repo.one() end + + @spec mark_as_read(User.t(), Activity.t()) :: {integer(), nil | [term()]} + def mark_as_read(%User{id: id}, %Activity{data: %{"context" => context}}) do + from( + n in Notification, + join: a in assoc(n, :activity), + where: n.user_id == ^id, + where: n.seen == false, + where: fragment("?->>'context'", a.data) == ^context + ) + |> Repo.update_all(set: [seen: true]) + end end diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex index 5ad2b91c2..43e9e39a8 100644 --- a/lib/pleroma/web/common_api/common_api.ex +++ b/lib/pleroma/web/common_api/common_api.ex @@ -452,7 +452,8 @@ def unpin(id, user) do end def add_mute(user, activity) do - with {:ok, _} <- ThreadMute.add_mute(user.id, activity.data["context"]) do + with {:ok, _} <- ThreadMute.add_mute(user.id, activity.data["context"]), + _ <- Pleroma.Notification.mark_as_read(user, activity) do {:ok, activity} else {:error, _} -> {:error, dgettext("errors", "conversation is already muted")} diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index 4ba6232dc..800db9a20 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -9,6 +9,7 @@ defmodule Pleroma.Web.CommonAPITest do alias Pleroma.Conversation.Participation alias Pleroma.Notification alias Pleroma.Object + alias Pleroma.Repo alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Transmogrifier @@ -18,6 +19,7 @@ defmodule Pleroma.Web.CommonAPITest do import Pleroma.Factory import Mock + import Ecto.Query, only: [from: 2] require Pleroma.Constants @@ -808,6 +810,69 @@ test "should unpin when deleting a status", %{user: user, activity: activity} do [user: user, activity: activity] end + test "marks notifications as read after mute" do + author = insert(:user) + activity = insert(:note_activity, user: author) + + friend1 = insert(:user) + friend2 = insert(:user) + + {:ok, reply_activity} = + CommonAPI.post( + friend2, + %{ + status: "@#{author.nickname} @#{friend1.nickname} test reply", + in_reply_to_status_id: activity.id + } + ) + + {:ok, favorite_activity} = CommonAPI.favorite(friend2, activity.id) + {:ok, repeat_activity} = CommonAPI.repeat(activity.id, friend1) + + assert Repo.aggregate( + from(n in Notification, where: n.seen == false and n.user_id == ^friend1.id), + :count + ) == 1 + + unread_notifications = + Repo.all(from(n in Notification, where: n.seen == false, where: n.user_id == ^author.id)) + + assert Enum.any?(unread_notifications, fn n -> + n.type == "favourite" && n.activity_id == favorite_activity.id + end) + + assert Enum.any?(unread_notifications, fn n -> + n.type == "reblog" && n.activity_id == repeat_activity.id + end) + + assert Enum.any?(unread_notifications, fn n -> + n.type == "mention" && n.activity_id == reply_activity.id + end) + + {:ok, _} = CommonAPI.add_mute(author, activity) + assert CommonAPI.thread_muted?(author, activity) + + assert Repo.aggregate( + from(n in Notification, where: n.seen == false and n.user_id == ^friend1.id), + :count + ) == 1 + + read_notifications = + Repo.all(from(n in Notification, where: n.seen == true, where: n.user_id == ^author.id)) + + assert Enum.any?(read_notifications, fn n -> + n.type == "favourite" && n.activity_id == favorite_activity.id + end) + + assert Enum.any?(read_notifications, fn n -> + n.type == "reblog" && n.activity_id == repeat_activity.id + end) + + assert Enum.any?(read_notifications, fn n -> + n.type == "mention" && n.activity_id == reply_activity.id + end) + end + test "add mute", %{user: user, activity: activity} do {:ok, _} = CommonAPI.add_mute(user, activity) assert CommonAPI.thread_muted?(user, activity) From dfceb03cf47374fdeab60784476b2e266208a4bb Mon Sep 17 00:00:00 2001 From: href Date: Fri, 28 Aug 2020 21:14:28 +0200 Subject: [PATCH 047/460] Rewrite MP4/MOV binaries to be faststart In some cases, MP4/MOV files can have the data _before_ the meta-data. Thus, ffmpeg (and all similar tools) cannot really process the input if it's given over stdin/streaming/pipes. BUT I REALLY DON'T WANT TO MAKE TEMPORARY FILES so here we go, an implementation of qtfaststart in elixir. --- lib/pleroma/helpers/media_helper.ex | 59 ++++++++---- lib/pleroma/helpers/qt_fast_start.ex | 131 +++++++++++++++++++++++++++ 2 files changed, 172 insertions(+), 18 deletions(-) create mode 100644 lib/pleroma/helpers/qt_fast_start.ex diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index b42612ccb..5ac75b326 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -14,8 +14,7 @@ def image_resize(url, options) do {:ok, args} <- prepare_image_resize_args(options), url = Pleroma.Web.MediaProxy.url(url), {:ok, env} <- Pleroma.HTTP.get(url), - {:ok, fifo_path} <- mkfifo() - do + {:ok, fifo_path} <- mkfifo() do args = List.flatten([fifo_path, args]) run_fifo(fifo_path, env, executable, args) else @@ -27,12 +26,17 @@ def image_resize(url, options) do defp prepare_image_resize_args(%{max_width: max_width, max_height: max_height} = options) do quality = options[:quality] || 85 resize = Enum.join([max_width, "x", max_height, ">"]) + args = [ - "-interlace", "Plane", - "-resize", resize, - "-quality", to_string(quality), - "jpg:-" + "-interlace", + "Plane", + "-resize", + resize, + "-quality", + to_string(quality), + "jpg:-" ] + {:ok, args} end @@ -45,11 +49,15 @@ def video_framegrab(url) do {:ok, fifo_path} <- mkfifo(), args = [ "-y", - "-i", fifo_path, - "-vframes", "1", - "-f", "mjpeg", - "-loglevel", "error", - "pipe:" + "-i", + fifo_path, + "-vframes", + "1", + "-f", + "mjpeg", + "-loglevel", + "error", + "-" ] do run_fifo(fifo_path, env, executable, args) else @@ -59,9 +67,18 @@ def video_framegrab(url) do end defp run_fifo(fifo_path, env, executable, args) do - pid = Port.open({:spawn_executable, executable}, [:use_stdio, :stream, :exit_status, :binary, args: args]) + pid = + Port.open({:spawn_executable, executable}, [ + :use_stdio, + :stream, + :exit_status, + :binary, + args: args + ]) + fifo = Port.open(to_charlist(fifo_path), [:eof, :binary, :stream, :out]) - true = Port.command(fifo, env.body) + fix = Pleroma.Helpers.QtFastStart.fix(env.body) + true = Port.command(fifo, fix) :erlang.port_close(fifo) loop_recv(pid) after @@ -70,10 +87,12 @@ defp run_fifo(fifo_path, env, executable, args) do defp mkfifo() do path = "#{@tmp_base}#{to_charlist(:erlang.phash2(self()))}" + case System.cmd("mkfifo", [path]) do {_, 0} -> spawn(fifo_guard(path)) {:ok, path} + {_, err} -> {:error, {:fifo_failed, err}} end @@ -81,8 +100,10 @@ defp mkfifo() do defp fifo_guard(path) do pid = self() - fn() -> + + fn -> ref = Process.monitor(pid) + receive do {:DOWN, ^ref, :process, ^pid, _} -> File.rm(path) @@ -98,14 +119,16 @@ defp loop_recv(pid, acc) do receive do {^pid, {:data, data}} -> loop_recv(pid, acc <> data) + {^pid, {:exit_status, 0}} -> {:ok, acc} + {^pid, {:exit_status, status}} -> {:error, status} - after - 5000 -> - :erlang.port_close(pid) - {:error, :timeout} + after + 5000 -> + :erlang.port_close(pid) + {:error, :timeout} end end end diff --git a/lib/pleroma/helpers/qt_fast_start.ex b/lib/pleroma/helpers/qt_fast_start.ex new file mode 100644 index 000000000..694b583b9 --- /dev/null +++ b/lib/pleroma/helpers/qt_fast_start.ex @@ -0,0 +1,131 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Helpers.QtFastStart do + @moduledoc """ + (WIP) Converts a "slow start" (data before metadatas) mov/mp4 file to a "fast start" one (metadatas before data). + """ + + # TODO: Cleanup and optimizations + # Inspirations: https://www.ffmpeg.org/doxygen/3.4/qt-faststart_8c_source.html + # https://github.com/danielgtaylor/qtfaststart/blob/master/qtfaststart/processor.py + # ISO/IEC 14496-12:2015, ISO/IEC 15444-12:2015 + # Paracetamol + + def fix(binary = <<0x00, 0x00, 0x00, _, 0x66, 0x74, 0x79, 0x70, _::binary>>) do + index = fix(binary, binary, 0, []) + + case index do + [{"ftyp", _, _, _, _}, {"mdat", _, _, _, _} | _] -> faststart(index) + [{"ftyp", _, _, _, _}, {"free", _, _, _, _}, {"mdat", _, _, _, _} | _] -> faststart(index) + _ -> binary + end + end + + def fix(binary) do + binary + end + + defp fix(<<>>, _bin, _pos, acc) do + :lists.reverse(acc) + end + + defp fix( + <>, + bin, + pos, + acc + ) do + if fourcc == "mdat" && size == 0 do + # mdat with 0 size means "seek to the end" -- also, in that case the file is probably OK. + acc = [ + {fourcc, pos, byte_size(bin) - pos, byte_size(bin) - pos, + <>} + | acc + ] + + fix(<<>>, bin, byte_size(bin), acc) + else + full_size = size - 8 + <> = rest + + acc = [ + {fourcc, pos, pos + size, size, + <>} + | acc + ] + + fix(rest, bin, pos + size, acc) + end + end + + defp faststart(index) do + {{_ftyp, _, _, _, ftyp}, index} = List.keytake(index, "ftyp", 0) + + # Skip re-writing the free fourcc as it's kind of useless. Why stream useless bytes when you can do without? + {free_size, index} = + case List.keytake(index, "free", 0) do + {{_, _, _, size, _}, index} -> {size, index} + _ -> {0, index} + end + + {{_moov, _, _, moov_size, moov}, index} = List.keytake(index, "moov", 0) + offset = -free_size + moov_size + rest = for {_, _, _, _, data} <- index, do: data, into: <<>> + <> = moov + new_moov = fix_moov(moov_data, offset) + <> + end + + defp fix_moov(moov, offset) do + fix_moov(moov, offset, <<>>) + end + + defp fix_moov(<<>>, _, acc), do: acc + + defp fix_moov( + <>, + offset, + acc + ) do + full_size = size - 8 + <> = rest + + data = + cond do + fourcc in ["trak", "mdia", "minf", "stbl"] -> + # Theses contains sto or co64 part + <>)::binary>> + + fourcc in ["stco", "co64"] -> + # fix the damn thing + <> = data + + entry_size = + case fourcc do + "stco" -> 4 + "co64" -> 8 + end + + {_, result} = + Enum.reduce(1..count, {rest, <<>>}, fn _, + {<>, acc} -> + {rest, <>} + end) + + <> + + true -> + <> + end + + acc = <> + fix_moov(rest, offset, acc) + end +end From 24d522c3b366b54b23bebaf07371145d50820d4a Mon Sep 17 00:00:00 2001 From: href Date: Sat, 29 Aug 2020 13:05:23 +0200 Subject: [PATCH 048/460] QtFastStart: optimize ~4-6x faster ~3~4x memory usage reduction (now mostly adds what we are rewriting in the metadatas) --- lib/pleroma/helpers/qt_fast_start.ex | 109 +++++++++++++-------------- 1 file changed, 54 insertions(+), 55 deletions(-) diff --git a/lib/pleroma/helpers/qt_fast_start.ex b/lib/pleroma/helpers/qt_fast_start.ex index 694b583b9..8cba06e54 100644 --- a/lib/pleroma/helpers/qt_fast_start.ex +++ b/lib/pleroma/helpers/qt_fast_start.ex @@ -13,10 +13,11 @@ defmodule Pleroma.Helpers.QtFastStart do # ISO/IEC 14496-12:2015, ISO/IEC 15444-12:2015 # Paracetamol - def fix(binary = <<0x00, 0x00, 0x00, _, 0x66, 0x74, 0x79, 0x70, _::binary>>) do - index = fix(binary, binary, 0, []) + def fix(binary = <<0x00, 0x00, 0x00, _, 0x66, 0x74, 0x79, 0x70, _::bits>>) do + index = fix(binary, 0, nil, nil, []) case index do + :abort -> binary [{"ftyp", _, _, _, _}, {"mdat", _, _, _, _} | _] -> faststart(index) [{"ftyp", _, _, _, _}, {"free", _, _, _, _}, {"mdat", _, _, _, _} | _] -> faststart(index) _ -> binary @@ -27,37 +28,32 @@ def fix(binary) do binary end - defp fix(<<>>, _bin, _pos, acc) do - :lists.reverse(acc) + # MOOV have been seen before MDAT- abort + defp fix(<<_::bits>>, _, true, false, _) do + :abort end defp fix( - <>, - bin, + <>, pos, + got_moov, + got_mdat, acc ) do - if fourcc == "mdat" && size == 0 do - # mdat with 0 size means "seek to the end" -- also, in that case the file is probably OK. - acc = [ - {fourcc, pos, byte_size(bin) - pos, byte_size(bin) - pos, - <>} - | acc - ] + full_size = (size - 8) * 8 + <> = rest - fix(<<>>, bin, byte_size(bin), acc) - else - full_size = size - 8 - <> = rest + acc = [ + {fourcc, pos, pos + size, size, + <>} + | acc + ] - acc = [ - {fourcc, pos, pos + size, size, - <>} - | acc - ] + fix(rest, pos + size, got_moov || fourcc == "moov", got_mdat || fourcc == "mdat", acc) + end - fix(rest, bin, pos + size, acc) - end + defp fix(<<>>, _pos, _, _, acc) do + :lists.reverse(acc) end defp faststart(index) do @@ -72,60 +68,63 @@ defp faststart(index) do {{_moov, _, _, moov_size, moov}, index} = List.keytake(index, "moov", 0) offset = -free_size + moov_size - rest = for {_, _, _, _, data} <- index, do: data, into: <<>> - <> = moov - new_moov = fix_moov(moov_data, offset) - <> + rest = for {_, _, _, _, data} <- index, do: data, into: [] + <> = moov + [ftyp, moov_head, fix_moov(moov_data, offset, []), rest] end - defp fix_moov(moov, offset) do - fix_moov(moov, offset, <<>>) - end - - defp fix_moov(<<>>, _, acc), do: acc - defp fix_moov( - <>, + <>, offset, acc ) do - full_size = size - 8 - <> = rest + full_size = (size - 8) * 8 + <> = rest data = cond do fourcc in ["trak", "mdia", "minf", "stbl"] -> # Theses contains sto or co64 part - <>)::binary>> + [<>, fix_moov(data, offset, [])] fourcc in ["stco", "co64"] -> # fix the damn thing - <> = data + <> = data entry_size = case fourcc do - "stco" -> 4 - "co64" -> 8 + "stco" -> 32 + "co64" -> 64 end - {_, result} = - Enum.reduce(1..count, {rest, <<>>}, fn _, - {<>, acc} -> - {rest, <>} - end) - - <> + [ + <>, + rewrite_entries(entry_size, offset, rest, []) + ] true -> - <> + [<>, data] end - acc = <> + acc = [acc | data] fix_moov(rest, offset, acc) end + + defp fix_moov(<<>>, _, acc), do: acc + + for size <- [32, 64] do + defp rewrite_entries( + unquote(size), + offset, + <>, + acc + ) do + rewrite_entries(unquote(size), offset, rest, [ + acc | <> + ]) + end + end + + defp rewrite_entries(_, _, <<>>, acc), do: acc end From 2d2af75777ae468fb08a2b09dc5af4636106a04b Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Sun, 30 Aug 2020 09:17:24 -0500 Subject: [PATCH 049/460] Support PNG previews to preserve alpha channels --- lib/pleroma/helpers/media_helper.ex | 17 ++++++++++ .../web/media_proxy/media_proxy_controller.ex | 32 +++++++++++++++++-- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index 5ac75b326..d8a6db4e1 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -23,6 +23,23 @@ def image_resize(url, options) do end end + defp prepare_image_resize_args( + %{max_width: max_width, max_height: max_height, format: "png"} = options + ) do + quality = options[:quality] || 85 + resize = Enum.join([max_width, "x", max_height, ">"]) + + args = [ + "-resize", + resize, + "-quality", + to_string(quality), + "png:-" + ] + + {:ok, args} + end + defp prepare_image_resize_args(%{max_width: max_width, max_height: max_height} = options) do quality = options[:quality] || 85 resize = Enum.join([max_width, "x", max_height, ">"]) diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 411dc95d0..94fae6cac 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -76,8 +76,12 @@ defp handle_preview("image/gif" = _content_type, conn, url) do redirect(conn, external: mediaproxy_url) end + defp handle_preview("image/png" <> _ = _content_type, conn, url) do + handle_png_preview(conn, url) + end + defp handle_preview("image/" <> _ = _content_type, conn, url) do - handle_image_preview(conn, url) + handle_jpeg_preview(conn, url) end defp handle_preview("video/" <> _ = _content_type, conn, url) do @@ -88,7 +92,31 @@ defp handle_preview(content_type, conn, _url) do send_resp(conn, :unprocessable_entity, "Unsupported content type: #{content_type}.") end - defp handle_image_preview(%{params: params} = conn, url) do + defp handle_png_preview(%{params: params} = conn, url) do + quality = Config.get!([:media_preview_proxy, :image_quality]) + + with {thumbnail_max_width, thumbnail_max_height} <- thumbnail_max_dimensions(params), + {:ok, thumbnail_binary} <- + MediaHelper.image_resize( + url, + %{ + max_width: thumbnail_max_width, + max_height: thumbnail_max_height, + quality: quality, + format: "png" + } + ) do + conn + |> put_resp_header("content-type", "image/png") + |> put_resp_header("content-disposition", "inline; filename=\"preview.png\"") + |> send_resp(200, thumbnail_binary) + else + _ -> + send_resp(conn, :failed_dependency, "Can't handle preview.") + end + end + + defp handle_jpeg_preview(%{params: params} = conn, url) do quality = Config.get!([:media_preview_proxy, :image_quality]) with {thumbnail_max_width, thumbnail_max_height} <- thumbnail_max_dimensions(params), From 4ef210a587113313cd6887b7499832d0c0798f7f Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Sun, 30 Aug 2020 09:32:22 -0500 Subject: [PATCH 050/460] Credo --- lib/pleroma/helpers/media_helper.ex | 2 +- lib/pleroma/helpers/qt_fast_start.ex | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index d8a6db4e1..9bd815c26 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -102,7 +102,7 @@ defp run_fifo(fifo_path, env, executable, args) do File.rm(fifo_path) end - defp mkfifo() do + defp mkfifo do path = "#{@tmp_base}#{to_charlist(:erlang.phash2(self()))}" case System.cmd("mkfifo", [path]) do diff --git a/lib/pleroma/helpers/qt_fast_start.ex b/lib/pleroma/helpers/qt_fast_start.ex index 8cba06e54..bb93224b5 100644 --- a/lib/pleroma/helpers/qt_fast_start.ex +++ b/lib/pleroma/helpers/qt_fast_start.ex @@ -13,7 +13,7 @@ defmodule Pleroma.Helpers.QtFastStart do # ISO/IEC 14496-12:2015, ISO/IEC 15444-12:2015 # Paracetamol - def fix(binary = <<0x00, 0x00, 0x00, _, 0x66, 0x74, 0x79, 0x70, _::bits>>) do + def fix(<<0x00, 0x00, 0x00, _, 0x66, 0x74, 0x79, 0x70, _::bits>> = binary) do index = fix(binary, 0, nil, nil, []) case index do @@ -59,7 +59,8 @@ defp fix(<<>>, _pos, _, _, acc) do defp faststart(index) do {{_ftyp, _, _, _, ftyp}, index} = List.keytake(index, "ftyp", 0) - # Skip re-writing the free fourcc as it's kind of useless. Why stream useless bytes when you can do without? + # Skip re-writing the free fourcc as it's kind of useless. + # Why stream useless bytes when you can do without? {free_size, index} = case List.keytake(index, "free", 0) do {{_, _, _, size, _}, index} -> {size, index} From 858e9a59ed8537e42c490645633266e13474ae99 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 31 Aug 2020 09:54:16 +0300 Subject: [PATCH 051/460] mix.lock: bump fast_sanitize The update brings a better error message for when cmake isn't installed --- mix.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mix.lock b/mix.lock index 86d0a75d7..afb4b06db 100644 --- a/mix.lock +++ b/mix.lock @@ -42,8 +42,8 @@ "ex_machina": {:hex, :ex_machina, "2.4.0", "09a34c5d371bfb5f78399029194a8ff67aff340ebe8ba19040181af35315eabb", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm", "a20bc9ddc721b33ea913b93666c5d0bdca5cbad7a67540784ae277228832d72c"}, "ex_syslogger": {:hex, :ex_syslogger, "1.5.2", "72b6aa2d47a236e999171f2e1ec18698740f40af0bd02c8c650bf5f1fd1bac79", [:mix], [{:poison, ">= 1.5.0", [hex: :poison, repo: "hexpm", optional: true]}, {:syslog, "~> 1.1.0", [hex: :syslog, repo: "hexpm", optional: false]}], "hexpm", "ab9fab4136dbc62651ec6f16fa4842f10cf02ab4433fa3d0976c01be99398399"}, "excoveralls": {:hex, :excoveralls, "0.13.1", "b9f1697f7c9e0cfe15d1a1d737fb169c398803ffcbc57e672aa007e9fd42864c", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "b4bb550e045def1b4d531a37fb766cbbe1307f7628bf8f0414168b3f52021cce"}, - "fast_html": {:hex, :fast_html, "2.0.2", "1fabc408b2baa965cf6399a48796326f2721b21b397a3c667bb3bb88fb9559a4", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "f077e2c1597a6e2678e6cacc64f456a6c6024eb4240092c46d4212496dc59aba"}, - "fast_sanitize": {:hex, :fast_sanitize, "0.2.1", "3302421a988992b6cae08e68f77069e167ff116444183f3302e3c36017a50558", [:mix], [{:fast_html, "~> 2.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "bcd2c54e328128515edd1a8fb032fdea7e5581672ba161fc5962d21ecee92502"}, + "fast_html": {:hex, :fast_html, "2.0.3", "27289dea6c3a22952191a2d4e07f546c0de8a351484782c2e797dbae06a5dc8a", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "17d41fa8afe4e912ffe74e13b87ddb085382cd2b7393636d338495c9a8a7b518"}, + "fast_sanitize": {:hex, :fast_sanitize, "0.2.2", "3cbbaebaea6043865dfb5b4ecb0f1af066ad410a51470e353714b10c42007b81", [:mix], [{:fast_html, "~> 2.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "69f204db9250afa94a0d559d9110139850f57de2b081719fbafa1e9a89e94466"}, "flake_id": {:hex, :flake_id, "0.1.0", "7716b086d2e405d09b647121a166498a0d93d1a623bead243e1f74216079ccb3", [:mix], [{:base62, "~> 1.2", [hex: :base62, repo: "hexpm", optional: false]}, {:ecto, ">= 2.0.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "31fc8090fde1acd267c07c36ea7365b8604055f897d3a53dd967658c691bd827"}, "floki": {:hex, :floki, "0.27.0", "6b29a14283f1e2e8fad824bc930eaa9477c462022075df6bea8f0ad811c13599", [:mix], [{:html_entities, "~> 0.5.0", [hex: :html_entities, repo: "hexpm", optional: false]}], "hexpm", "583b8c13697c37179f1f82443bcc7ad2f76fbc0bf4c186606eebd658f7f2631b"}, "gen_smtp": {:hex, :gen_smtp, "0.15.0", "9f51960c17769b26833b50df0b96123605a8024738b62db747fece14eb2fbfcc", [:rebar3], [], "hexpm", "29bd14a88030980849c7ed2447b8db6d6c9278a28b11a44cafe41b791205440f"}, From d91c4feebeb199f7c584f0a4292ce6f9cc331798 Mon Sep 17 00:00:00 2001 From: lain Date: Mon, 31 Aug 2020 11:02:54 +0200 Subject: [PATCH 052/460] Notification: Small refactor. --- lib/pleroma/notification.ex | 4 ++-- lib/pleroma/web/common_api/common_api.ex | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex index b952e81fa..8868a910e 100644 --- a/lib/pleroma/notification.ex +++ b/lib/pleroma/notification.ex @@ -649,8 +649,8 @@ def for_user_and_activity(user, activity) do |> Repo.one() end - @spec mark_as_read(User.t(), Activity.t()) :: {integer(), nil | [term()]} - def mark_as_read(%User{id: id}, %Activity{data: %{"context" => context}}) do + @spec mark_context_as_read(User.t(), String.t()) :: {integer(), nil | [term()]} + def mark_context_as_read(%User{id: id}, context) do from( n in Notification, join: a in assoc(n, :activity), diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex index 43e9e39a8..4ab533658 100644 --- a/lib/pleroma/web/common_api/common_api.ex +++ b/lib/pleroma/web/common_api/common_api.ex @@ -453,7 +453,7 @@ def unpin(id, user) do def add_mute(user, activity) do with {:ok, _} <- ThreadMute.add_mute(user.id, activity.data["context"]), - _ <- Pleroma.Notification.mark_as_read(user, activity) do + _ <- Pleroma.Notification.mark_context_as_read(user, activity.data["context"]) do {:ok, activity} else {:error, _} -> {:error, dgettext("errors", "conversation is already muted")} From 0a839d51a7adb034d6514ea647d90546c829813d Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Mon, 31 Aug 2020 13:08:50 +0300 Subject: [PATCH 053/460] [#2497] Added Cache-Control response header for media proxy preview endpoint. --- .../web/media_proxy/media_proxy_controller.ex | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 94fae6cac..2afcd861a 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -107,8 +107,7 @@ defp handle_png_preview(%{params: params} = conn, url) do } ) do conn - |> put_resp_header("content-type", "image/png") - |> put_resp_header("content-disposition", "inline; filename=\"preview.png\"") + |> put_preview_response_headers() |> send_resp(200, thumbnail_binary) else _ -> @@ -126,8 +125,7 @@ defp handle_jpeg_preview(%{params: params} = conn, url) do %{max_width: thumbnail_max_width, max_height: thumbnail_max_height, quality: quality} ) do conn - |> put_resp_header("content-type", "image/jpeg") - |> put_resp_header("content-disposition", "inline; filename=\"preview.jpg\"") + |> put_preview_response_headers() |> send_resp(200, thumbnail_binary) else _ -> @@ -139,8 +137,7 @@ defp handle_video_preview(conn, url) do with {:ok, thumbnail_binary} <- MediaHelper.video_framegrab(url) do conn - |> put_resp_header("content-type", "image/jpeg") - |> put_resp_header("content-disposition", "inline; filename=\"preview.jpg\"") + |> put_preview_response_headers() |> send_resp(200, thumbnail_binary) else _ -> @@ -148,6 +145,13 @@ defp handle_video_preview(conn, url) do end end + defp put_preview_response_headers(conn) do + conn + |> put_resp_header("content-type", "image/jpeg") + |> put_resp_header("content-disposition", "inline; filename=\"preview.jpg\"") + |> put_resp_header("cache-control", "max-age=0, private, must-revalidate") + end + defp thumbnail_max_dimensions(params) do config = Config.get([:media_preview_proxy], []) From 0b621a834acf751332f4d202bd50d4ff3e789176 Mon Sep 17 00:00:00 2001 From: lain Date: Mon, 31 Aug 2020 16:48:17 +0200 Subject: [PATCH 054/460] Chats: Add cascading delete on both referenced users. Also remove the now-superfluous join in the chat controller, which was only used to filter out these cases. --- .../controllers/chat_controller.ex | 4 +--- .../20200831142509_chat_constraints.exs | 22 +++++++++++++++++++ test/chat_test.exs | 22 +++++++++++++++++++ 3 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 priv/repo/migrations/20200831142509_chat_constraints.exs diff --git a/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex b/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex index 1f2e953f7..e8a1746d4 100644 --- a/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex @@ -149,9 +149,7 @@ def index(%{assigns: %{user: %{id: user_id} = user}} = conn, _params) do from(c in Chat, where: c.user_id == ^user_id, where: c.recipient not in ^blocked_ap_ids, - order_by: [desc: c.updated_at], - inner_join: u in User, - on: u.ap_id == c.recipient + order_by: [desc: c.updated_at] ) |> Repo.all() diff --git a/priv/repo/migrations/20200831142509_chat_constraints.exs b/priv/repo/migrations/20200831142509_chat_constraints.exs new file mode 100644 index 000000000..868a40a45 --- /dev/null +++ b/priv/repo/migrations/20200831142509_chat_constraints.exs @@ -0,0 +1,22 @@ +defmodule Pleroma.Repo.Migrations.ChatConstraints do + use Ecto.Migration + + def change do + remove_orphans = """ + delete from chats where not exists(select id from users where ap_id = chats.recipient); + """ + + execute(remove_orphans) + + drop(constraint(:chats, "chats_user_id_fkey")) + + alter table(:chats) do + modify(:user_id, references(:users, type: :uuid, on_delete: :delete_all)) + + modify( + :recipient, + references(:users, column: :ap_id, type: :string, on_delete: :delete_all) + ) + end + end +end diff --git a/test/chat_test.exs b/test/chat_test.exs index 332f2180a..9e8a9ebf0 100644 --- a/test/chat_test.exs +++ b/test/chat_test.exs @@ -26,6 +26,28 @@ test "it creates a chat for a user and recipient" do assert chat.id end + test "deleting the user deletes the chat" do + user = insert(:user) + other_user = insert(:user) + + {:ok, chat} = Chat.bump_or_create(user.id, other_user.ap_id) + + Repo.delete(user) + + refute Chat.get_by_id(chat.id) + end + + test "deleting the recipient deletes the chat" do + user = insert(:user) + other_user = insert(:user) + + {:ok, chat} = Chat.bump_or_create(user.id, other_user.ap_id) + + Repo.delete(other_user) + + refute Chat.get_by_id(chat.id) + end + test "it returns and bumps a chat for a user and recipient if it already exists" do user = insert(:user) other_user = insert(:user) From dc3a418c270e48c6849159097f8bba57d2a2578e Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 1 Sep 2020 09:08:54 +0300 Subject: [PATCH 055/460] application.ex: disable warnings_as_errors at runtime see changed files for rationale --- lib/pleroma/application.ex | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index c0b5db9f1..005aba50a 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -39,6 +39,9 @@ def start(_type, _args) do # every time the application is restarted, so we disable module # conflicts at runtime Code.compiler_options(ignore_module_conflict: true) + # Disable warnings_as_errors at runtime, it breaks Phoenix live reload + # due to protocol consolidation warnings + Code.compiler_options(warnings_as_errors: false) Pleroma.Telemetry.Logger.attach() Config.Holder.save_default() Pleroma.HTML.compile_scrubbers() From 2ecc7d92308d624dc9edb50665d752a71f55f608 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 25 Aug 2020 00:38:10 +0200 Subject: [PATCH 056/460] transmogrifier: Remove mastodon emoji-format from emoji field --- lib/pleroma/web/activity_pub/transmogrifier.ex | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 76298c4a0..0831efadc 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -318,9 +318,6 @@ def fix_emoji(%{"tag" => tags} = object) when is_list(tags) do Map.put(mapping, name, data["icon"]["url"]) end) - # we merge mastodon and pleroma emoji into a single mapping, to allow for both wire formats - emoji = Map.merge(object["emoji"] || %{}, emoji) - Map.put(object, "emoji", emoji) end From a142da3e4f03f2bfee7af30cca59b0fdc82da73f Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 25 Aug 2020 01:16:12 +0200 Subject: [PATCH 057/460] Add new Emoji Ecto.Type and fix emoji in Question --- .../activity_pub/object_validators/emoji.ex | 34 +++++++++++++ .../object_validators/audio_validator.ex | 5 +- .../chat_message_validator.ex | 2 +- .../object_validators/event_validator.ex | 5 +- .../object_validators/note_validator.ex | 11 +++- .../object_validators/question_validator.ex | 5 +- .../chat_validation_test.exs | 1 + .../transmogrifier/question_handling_test.exs | 51 +++++++++++++++++++ 8 files changed, 105 insertions(+), 9 deletions(-) create mode 100644 lib/pleroma/ecto_type/activity_pub/object_validators/emoji.ex diff --git a/lib/pleroma/ecto_type/activity_pub/object_validators/emoji.ex b/lib/pleroma/ecto_type/activity_pub/object_validators/emoji.ex new file mode 100644 index 000000000..4aacc5c88 --- /dev/null +++ b/lib/pleroma/ecto_type/activity_pub/object_validators/emoji.ex @@ -0,0 +1,34 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.Emoji do + use Ecto.Type + + def type, do: :map + + def cast(data) when is_map(data) do + has_invalid_emoji? = + Enum.find(data, fn + {name, uri} when is_binary(name) and is_binary(uri) -> + # based on ObjectValidators.Uri.cast() + case URI.parse(uri) do + %URI{host: nil} -> true + %URI{host: ""} -> true + %URI{scheme: scheme} when scheme in ["https", "http"] -> false + _ -> true + end + + {_name, _uri} -> + true + end) + + if has_invalid_emoji?, do: :error, else: {:ok, data} + end + + def cast(_data), do: :error + + def dump(data), do: {:ok, data} + + def load(data), do: {:ok, data} +end diff --git a/lib/pleroma/web/activity_pub/object_validators/audio_validator.ex b/lib/pleroma/web/activity_pub/object_validators/audio_validator.ex index d1869f188..1a97c504a 100644 --- a/lib/pleroma/web/activity_pub/object_validators/audio_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/audio_validator.ex @@ -9,6 +9,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioValidator do alias Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes alias Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations + alias Pleroma.Web.ActivityPub.Transmogrifier import Ecto.Changeset @@ -33,8 +34,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioValidator do field(:attributedTo, ObjectValidators.ObjectID) field(:summary, :string) field(:published, ObjectValidators.DateTime) - # TODO: Write type - field(:emoji, :map, default: %{}) + field(:emoji, ObjectValidators.Emoji, default: %{}) field(:sensitive, :boolean, default: false) embeds_many(:attachment, AttachmentValidator) field(:replies_count, :integer, default: 0) @@ -83,6 +83,7 @@ defp fix(data) do data |> CommonFixes.fix_defaults() |> CommonFixes.fix_attribution() + |> Transmogrifier.fix_emoji() |> fix_url() end diff --git a/lib/pleroma/web/activity_pub/object_validators/chat_message_validator.ex b/lib/pleroma/web/activity_pub/object_validators/chat_message_validator.ex index 91b475393..6acd4a771 100644 --- a/lib/pleroma/web/activity_pub/object_validators/chat_message_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/chat_message_validator.ex @@ -22,7 +22,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ChatMessageValidator do field(:content, ObjectValidators.SafeText) field(:actor, ObjectValidators.ObjectID) field(:published, ObjectValidators.DateTime) - field(:emoji, :map, default: %{}) + field(:emoji, ObjectValidators.Emoji, default: %{}) embeds_one(:attachment, AttachmentValidator) end diff --git a/lib/pleroma/web/activity_pub/object_validators/event_validator.ex b/lib/pleroma/web/activity_pub/object_validators/event_validator.ex index 07e4821a4..0b4c99dc0 100644 --- a/lib/pleroma/web/activity_pub/object_validators/event_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/event_validator.ex @@ -9,6 +9,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.EventValidator do alias Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes alias Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations + alias Pleroma.Web.ActivityPub.Transmogrifier import Ecto.Changeset @@ -39,8 +40,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.EventValidator do field(:attributedTo, ObjectValidators.ObjectID) field(:published, ObjectValidators.DateTime) - # TODO: Write type - field(:emoji, :map, default: %{}) + field(:emoji, ObjectValidators.Emoji, default: %{}) field(:sensitive, :boolean, default: false) embeds_many(:attachment, AttachmentValidator) field(:replies_count, :integer, default: 0) @@ -74,6 +74,7 @@ defp fix(data) do data |> CommonFixes.fix_defaults() |> CommonFixes.fix_attribution() + |> Transmogrifier.fix_emoji() end def changeset(struct, data) do diff --git a/lib/pleroma/web/activity_pub/object_validators/note_validator.ex b/lib/pleroma/web/activity_pub/object_validators/note_validator.ex index 20e735619..ab4469a59 100644 --- a/lib/pleroma/web/activity_pub/object_validators/note_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/note_validator.ex @@ -6,6 +6,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidator do use Ecto.Schema alias Pleroma.EctoType.ActivityPub.ObjectValidators + alias Pleroma.Web.ActivityPub.Transmogrifier import Ecto.Changeset @@ -32,8 +33,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidator do field(:actor, ObjectValidators.ObjectID) field(:attributedTo, ObjectValidators.ObjectID) field(:published, ObjectValidators.DateTime) - # TODO: Write type - field(:emoji, :map, default: %{}) + field(:emoji, ObjectValidators.Emoji, default: %{}) field(:sensitive, :boolean, default: false) # TODO: Write type field(:attachment, {:array, :map}, default: []) @@ -53,7 +53,14 @@ def cast_and_validate(data) do |> validate_data() end + defp fix(data) do + data + |> Transmogrifier.fix_emoji() + end + def cast_data(data) do + data = fix(data) + %__MODULE__{} |> cast(data, __schema__(:fields)) end diff --git a/lib/pleroma/web/activity_pub/object_validators/question_validator.ex b/lib/pleroma/web/activity_pub/object_validators/question_validator.ex index 712047424..934d3c1ea 100644 --- a/lib/pleroma/web/activity_pub/object_validators/question_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/question_validator.ex @@ -10,6 +10,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.QuestionValidator do alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes alias Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations alias Pleroma.Web.ActivityPub.ObjectValidators.QuestionOptionsValidator + alias Pleroma.Web.ActivityPub.Transmogrifier import Ecto.Changeset @@ -35,8 +36,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.QuestionValidator do field(:attributedTo, ObjectValidators.ObjectID) field(:summary, :string) field(:published, ObjectValidators.DateTime) - # TODO: Write type - field(:emoji, :map, default: %{}) + field(:emoji, ObjectValidators.Emoji, default: %{}) field(:sensitive, :boolean, default: false) embeds_many(:attachment, AttachmentValidator) field(:replies_count, :integer, default: 0) @@ -85,6 +85,7 @@ defp fix(data) do data |> CommonFixes.fix_defaults() |> CommonFixes.fix_attribution() + |> Transmogrifier.fix_emoji() |> fix_closed() end diff --git a/test/web/activity_pub/object_validators/chat_validation_test.exs b/test/web/activity_pub/object_validators/chat_validation_test.exs index 50bf03515..16e4808e5 100644 --- a/test/web/activity_pub/object_validators/chat_validation_test.exs +++ b/test/web/activity_pub/object_validators/chat_validation_test.exs @@ -69,6 +69,7 @@ test "validates for a basic object we build", %{valid_chat_message: valid_chat_m assert {:ok, object, _meta} = ObjectValidator.validate(valid_chat_message, []) assert Map.put(valid_chat_message, "attachment", nil) == object + assert match?(%{"firefox" => _}, object["emoji"]) end test "validates for a basic object with an attachment", %{ diff --git a/test/web/activity_pub/transmogrifier/question_handling_test.exs b/test/web/activity_pub/transmogrifier/question_handling_test.exs index c82361828..74ee79543 100644 --- a/test/web/activity_pub/transmogrifier/question_handling_test.exs +++ b/test/web/activity_pub/transmogrifier/question_handling_test.exs @@ -106,6 +106,57 @@ test "Mastodon Question activity with HTML tags in plaintext" do assert Enum.sort(object.data["oneOf"]) == Enum.sort(options) end + test "Mastodon Question activity with custom emojis" do + options = [ + %{ + "type" => "Note", + "name" => ":blobcat:", + "replies" => %{"totalItems" => 0, "type" => "Collection"} + }, + %{ + "type" => "Note", + "name" => ":blobfox:", + "replies" => %{"totalItems" => 0, "type" => "Collection"} + } + ] + + tag = [ + %{ + "icon" => %{ + "type" => "Image", + "url" => "https://blob.cat/emoji/custom/blobcats/blobcat.png" + }, + "id" => "https://blob.cat/emoji/custom/blobcats/blobcat.png", + "name" => ":blobcat:", + "type" => "Emoji", + "updated" => "1970-01-01T00:00:00Z" + }, + %{ + "icon" => %{"type" => "Image", "url" => "https://blob.cat/emoji/blobfox/blobfox.png"}, + "id" => "https://blob.cat/emoji/blobfox/blobfox.png", + "name" => ":blobfox:", + "type" => "Emoji", + "updated" => "1970-01-01T00:00:00Z" + } + ] + + data = + File.read!("test/fixtures/mastodon-question-activity.json") + |> Poison.decode!() + |> Kernel.put_in(["object", "oneOf"], options) + |> Kernel.put_in(["object", "tag"], tag) + + {:ok, %Activity{local: false} = activity} = Transmogrifier.handle_incoming(data) + object = Object.normalize(activity, false) + + assert object.data["oneOf"] == options + + assert object.data["emoji"] == %{ + "blobcat" => "https://blob.cat/emoji/custom/blobcats/blobcat.png", + "blobfox" => "https://blob.cat/emoji/blobfox/blobfox.png" + } + end + test "returns an error if received a second time" do data = File.read!("test/fixtures/mastodon-question-activity.json") |> Poison.decode!() From b960cede9a3183098ac5eb330fbc4d1c14efc034 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 25 Aug 2020 02:18:33 +0200 Subject: [PATCH 058/460] common_fixes: Force inserting context and context_id --- .../web/activity_pub/object_validators/common_fixes.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex b/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex index 721749de0..720213d73 100644 --- a/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex +++ b/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex @@ -11,8 +11,8 @@ def fix_defaults(data) do Utils.create_context(data["context"] || data["conversation"]) data - |> Map.put_new("context", context) - |> Map.put_new("context_id", context_id) + |> Map.put("context", context) + |> Map.put("context_id", context_id) end def fix_attribution(data) do From d9a21e4784a83a0780b353c967520cd203f44f3f Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 25 Aug 2020 02:21:19 +0200 Subject: [PATCH 059/460] fetcher: Remove fix_object call for Question activities --- lib/pleroma/object/fetcher.ex | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex index 6fdbc8efd..d26c5adf5 100644 --- a/lib/pleroma/object/fetcher.ex +++ b/lib/pleroma/object/fetcher.ex @@ -36,8 +36,7 @@ defp maybe_reinject_internal_fields(_, new_data), do: new_data defp reinject_object(%Object{data: %{"type" => "Question"}} = object, new_data) do Logger.debug("Reinjecting object #{new_data["id"]}") - with new_data <- Transmogrifier.fix_object(new_data), - data <- maybe_reinject_internal_fields(object, new_data), + with data <- maybe_reinject_internal_fields(object, new_data), {:ok, data, _} <- ObjectValidator.validate(data, %{}), changeset <- Object.change(object, %{data: data}), changeset <- touch_changeset(changeset), From 126461942b63bbb74900f296ebcee72d2a33f3d2 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 1 Sep 2020 09:25:32 +0300 Subject: [PATCH 060/460] User table: ensure bio is always a string Gets rid of '|| ""' in multiple places and fixes #2067 --- lib/pleroma/user.ex | 4 ++-- lib/pleroma/web/activity_pub/activity_pub.ex | 2 +- lib/pleroma/web/auth/pleroma_authenticator.ex | 2 +- lib/pleroma/web/mastodon_api/views/account_view.ex | 2 +- lib/pleroma/web/metadata/opengraph.ex | 2 +- lib/pleroma/web/metadata/twitter_card.ex | 2 +- .../migrations/20200901061256_ensure_bio_is_string.exs | 7 +++++++ .../migrations/20200901061637_bio_set_not_null.exs | 10 ++++++++++ test/user_test.exs | 2 +- .../controllers/admin_api_controller_test.exs | 2 +- test/web/twitter_api/util_controller_test.exs | 2 +- 11 files changed, 27 insertions(+), 10 deletions(-) create mode 100644 priv/repo/migrations/20200901061256_ensure_bio_is_string.exs create mode 100644 priv/repo/migrations/20200901061637_bio_set_not_null.exs diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index d2ad9516f..94c96de8d 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -83,7 +83,7 @@ defmodule Pleroma.User do ] schema "users" do - field(:bio, :string) + field(:bio, :string, default: "") field(:raw_bio, :string) field(:email, :string) field(:name, :string) @@ -1587,7 +1587,7 @@ def purge_user_changeset(user) do # "Right to be forgotten" # https://gdpr.eu/right-to-be-forgotten/ change(user, %{ - bio: nil, + bio: "", raw_bio: nil, email: nil, name: nil, diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 624a508ae..333621413 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -1224,7 +1224,7 @@ defp object_to_user_data(data) do name: data["name"], follower_address: data["followers"], following_address: data["following"], - bio: data["summary"], + bio: data["summary"] || "", actor_type: actor_type, also_known_as: Map.get(data, "alsoKnownAs", []), public_key: public_key, diff --git a/lib/pleroma/web/auth/pleroma_authenticator.ex b/lib/pleroma/web/auth/pleroma_authenticator.ex index 200ca03dc..c611b3e09 100644 --- a/lib/pleroma/web/auth/pleroma_authenticator.ex +++ b/lib/pleroma/web/auth/pleroma_authenticator.ex @@ -68,7 +68,7 @@ def create_from_registration( nickname = value([registration_attrs["nickname"], Registration.nickname(registration)]) email = value([registration_attrs["email"], Registration.email(registration)]) name = value([registration_attrs["name"], Registration.name(registration)]) || nickname - bio = value([registration_attrs["bio"], Registration.description(registration)]) + bio = value([registration_attrs["bio"], Registration.description(registration)]) || "" random_password = :crypto.strong_rand_bytes(64) |> Base.encode64() diff --git a/lib/pleroma/web/mastodon_api/views/account_view.ex b/lib/pleroma/web/mastodon_api/views/account_view.ex index 864c0417f..d2a30a548 100644 --- a/lib/pleroma/web/mastodon_api/views/account_view.ex +++ b/lib/pleroma/web/mastodon_api/views/account_view.ex @@ -245,7 +245,7 @@ defp do_render("show.json", %{user: user} = opts) do followers_count: followers_count, following_count: following_count, statuses_count: user.note_count, - note: user.bio || "", + note: user.bio, url: user.uri || user.ap_id, avatar: image, avatar_static: image, diff --git a/lib/pleroma/web/metadata/opengraph.ex b/lib/pleroma/web/metadata/opengraph.ex index 68c871e71..bb1b23208 100644 --- a/lib/pleroma/web/metadata/opengraph.ex +++ b/lib/pleroma/web/metadata/opengraph.ex @@ -61,7 +61,7 @@ def build_tags(%{ @impl Provider def build_tags(%{user: user}) do - with truncated_bio = Utils.scrub_html_and_truncate(user.bio || "") do + with truncated_bio = Utils.scrub_html_and_truncate(user.bio) do [ {:meta, [ diff --git a/lib/pleroma/web/metadata/twitter_card.ex b/lib/pleroma/web/metadata/twitter_card.ex index 5d08ce422..df34b033f 100644 --- a/lib/pleroma/web/metadata/twitter_card.ex +++ b/lib/pleroma/web/metadata/twitter_card.ex @@ -40,7 +40,7 @@ def build_tags(%{activity_id: id, object: object, user: user}) do @impl Provider def build_tags(%{user: user}) do - with truncated_bio = Utils.scrub_html_and_truncate(user.bio || "") do + with truncated_bio = Utils.scrub_html_and_truncate(user.bio) do [ title_tag(user), {:meta, [property: "twitter:description", content: truncated_bio], []}, diff --git a/priv/repo/migrations/20200901061256_ensure_bio_is_string.exs b/priv/repo/migrations/20200901061256_ensure_bio_is_string.exs new file mode 100644 index 000000000..0e3bb3c81 --- /dev/null +++ b/priv/repo/migrations/20200901061256_ensure_bio_is_string.exs @@ -0,0 +1,7 @@ +defmodule Pleroma.Repo.Migrations.EnsureBioIsString do + use Ecto.Migration + + def change do + execute("update users set bio = '' where bio is null", "") + end +end diff --git a/priv/repo/migrations/20200901061637_bio_set_not_null.exs b/priv/repo/migrations/20200901061637_bio_set_not_null.exs new file mode 100644 index 000000000..e3a67d4e7 --- /dev/null +++ b/priv/repo/migrations/20200901061637_bio_set_not_null.exs @@ -0,0 +1,10 @@ +defmodule Pleroma.Repo.Migrations.BioSetNotNull do + use Ecto.Migration + + def change do + execute( + "alter table users alter column bio set not null", + "alter table users alter column bio drop not null" + ) + end +end diff --git a/test/user_test.exs b/test/user_test.exs index 3cf248659..50f72549e 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -1466,7 +1466,7 @@ test "delete/1 purges a user when they wouldn't be fully deleted" do user = User.get_by_id(user.id) assert %User{ - bio: nil, + bio: "", raw_bio: nil, email: nil, name: nil, diff --git a/test/web/admin_api/controllers/admin_api_controller_test.exs b/test/web/admin_api/controllers/admin_api_controller_test.exs index dbf478edf..3bc88c6a9 100644 --- a/test/web/admin_api/controllers/admin_api_controller_test.exs +++ b/test/web/admin_api/controllers/admin_api_controller_test.exs @@ -203,7 +203,7 @@ test "single user", %{admin: admin, conn: conn} do assert user.note_count == 0 assert user.follower_count == 0 assert user.following_count == 0 - assert user.bio == nil + assert user.bio == "" assert user.name == nil assert called(Pleroma.Web.Federator.publish(:_)) diff --git a/test/web/twitter_api/util_controller_test.exs b/test/web/twitter_api/util_controller_test.exs index 354d77b56..d164127ee 100644 --- a/test/web/twitter_api/util_controller_test.exs +++ b/test/web/twitter_api/util_controller_test.exs @@ -594,7 +594,7 @@ test "with proper permissions and valid password", %{conn: conn, user: user} do user = User.get_by_id(user.id) assert user.deactivated == true assert user.name == nil - assert user.bio == nil + assert user.bio == "" assert user.password_hash == nil end end From d8728580468ecf876e531440fa31aef6a3e33f7b Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 1 Sep 2020 12:48:39 +0200 Subject: [PATCH 061/460] Fix removing an account from a list Mastodon (Frontend) changed a different method for deletes, keeping old format as mastodon documentation is too loose --- .../web/api_spec/operations/list_operation.ex | 20 +++++++++++++------ .../controllers/list_controller.ex | 13 ++++++++++++ .../controllers/list_controller_test.exs | 20 ++++++++++++++++++- 3 files changed, 46 insertions(+), 7 deletions(-) diff --git a/lib/pleroma/web/api_spec/operations/list_operation.ex b/lib/pleroma/web/api_spec/operations/list_operation.ex index c88ed5dd0..15039052e 100644 --- a/lib/pleroma/web/api_spec/operations/list_operation.ex +++ b/lib/pleroma/web/api_spec/operations/list_operation.ex @@ -114,7 +114,7 @@ def add_to_list_operation do description: "Add accounts to the given list.", operationId: "ListController.add_to_list", parameters: [id_param()], - requestBody: add_remove_accounts_request(), + requestBody: add_remove_accounts_request(true), security: [%{"oAuth" => ["write:lists"]}], responses: %{ 200 => Operation.response("Empty object", "application/json", %Schema{type: :object}) @@ -127,8 +127,16 @@ def remove_from_list_operation do tags: ["Lists"], summary: "Remove accounts from list", operationId: "ListController.remove_from_list", - parameters: [id_param()], - requestBody: add_remove_accounts_request(), + parameters: [ + id_param(), + Operation.parameter( + :account_ids, + :query, + %Schema{type: :array, items: %Schema{type: :string}}, + "Array of account IDs" + ) + ], + requestBody: add_remove_accounts_request(false), security: [%{"oAuth" => ["write:lists"]}], responses: %{ 200 => Operation.response("Empty object", "application/json", %Schema{type: :object}) @@ -171,7 +179,7 @@ defp create_update_request do ) end - defp add_remove_accounts_request do + defp add_remove_accounts_request(required) when is_boolean(required) do request_body( "Parameters", %Schema{ @@ -180,9 +188,9 @@ defp add_remove_accounts_request do properties: %{ account_ids: %Schema{type: :array, description: "Array of account IDs", items: FlakeID} }, - required: [:account_ids] + required: required && [:account_ids] }, - required: true + required: required ) end end diff --git a/lib/pleroma/web/mastodon_api/controllers/list_controller.ex b/lib/pleroma/web/mastodon_api/controllers/list_controller.ex index acdc76fd2..4df13cb81 100644 --- a/lib/pleroma/web/mastodon_api/controllers/list_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/list_controller.ex @@ -86,6 +86,19 @@ def remove_from_list( json(conn, %{}) end + def remove_from_list( + %{assigns: %{list: list}, params: %{account_ids: account_ids}} = conn, + _ + ) do + Enum.each(account_ids, fn account_id -> + with %User{} = followed <- User.get_cached_by_id(account_id) do + Pleroma.List.unfollow(list, followed) + end + end) + + json(conn, %{}) + end + defp list_by_id_and_user(%{assigns: %{user: user}, params: %{id: id}} = conn, _) do case Pleroma.List.get(id, user) do %Pleroma.List{} = list -> assign(conn, :list, list) diff --git a/test/web/mastodon_api/controllers/list_controller_test.exs b/test/web/mastodon_api/controllers/list_controller_test.exs index 57a9ef4a4..091ec006c 100644 --- a/test/web/mastodon_api/controllers/list_controller_test.exs +++ b/test/web/mastodon_api/controllers/list_controller_test.exs @@ -67,7 +67,7 @@ test "adding users to a list" do assert following == [other_user.follower_address] end - test "removing users from a list" do + test "removing users from a list, body params" do %{user: user, conn: conn} = oauth_access(["write:lists"]) other_user = insert(:user) third_user = insert(:user) @@ -85,6 +85,24 @@ test "removing users from a list" do assert following == [third_user.follower_address] end + test "removing users from a list, query params" do + %{user: user, conn: conn} = oauth_access(["write:lists"]) + other_user = insert(:user) + third_user = insert(:user) + {:ok, list} = Pleroma.List.create("name", user) + {:ok, list} = Pleroma.List.follow(list, other_user) + {:ok, list} = Pleroma.List.follow(list, third_user) + + assert %{} == + conn + |> put_req_header("content-type", "application/json") + |> delete("/api/v1/lists/#{list.id}/accounts?account_ids[]=#{other_user.id}") + |> json_response_and_validate_schema(:ok) + + %Pleroma.List{following: following} = Pleroma.List.get(list.id, user) + assert following == [third_user.follower_address] + end + test "listing users in a list" do %{user: user, conn: conn} = oauth_access(["read:lists"]) other_user = insert(:user) From 03d06062ab8feffbf7b03ecb7ff86c4a42af79ef Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Tue, 1 Sep 2020 19:12:45 +0300 Subject: [PATCH 062/460] don't fail on url fetch --- lib/pleroma/web/rich_media/parser.ex | 44 ++++++++++--------- .../rich_media/parsers/ttl/aws_signed_url.ex | 15 +++---- test/web/rich_media/aws_signed_url_test.exs | 2 +- test/web/rich_media/parser_test.exs | 26 ++++++++--- 4 files changed, 49 insertions(+), 38 deletions(-) diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex index ca592833f..e9aa2dd03 100644 --- a/lib/pleroma/web/rich_media/parser.ex +++ b/lib/pleroma/web/rich_media/parser.ex @@ -3,6 +3,8 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.RichMedia.Parser do + require Logger + defp parsers do Pleroma.Config.get([:rich_media, :parsers]) end @@ -10,18 +12,19 @@ defp parsers do def parse(nil), do: {:error, "No URL provided"} if Pleroma.Config.get(:env) == :test do + @spec parse(String.t()) :: {:ok, map()} | {:error, any()} def parse(url), do: parse_url(url) else + @spec parse(String.t()) :: {:ok, map()} | {:error, any()} def parse(url) do - try do - Cachex.fetch!(:rich_media_cache, url, fn _ -> - {:commit, parse_url(url)} - end) - |> set_ttl_based_on_image(url) - rescue - e -> - {:error, "Cachex error: #{inspect(e)}"} - end + Cachex.fetch!(:rich_media_cache, url, fn _ -> + with {:ok, data} <- parse_url(url) do + {:commit, {:ok, data}} + else + error -> {:ignore, error} + end + end) + |> set_ttl_based_on_image(url) end end @@ -47,9 +50,11 @@ def ttl(data, url) do config :pleroma, :rich_media, ttl_setters: [MyModule] """ + @spec set_ttl_based_on_image({:ok, map()} | {:error, any()}, String.t()) :: + {:ok, map()} | {:error, any()} def set_ttl_based_on_image({:ok, data}, url) do with {:ok, nil} <- Cachex.ttl(:rich_media_cache, url), - ttl when is_number(ttl) <- get_ttl_from_image(data, url) do + {:ok, ttl} when is_number(ttl) <- get_ttl_from_image(data, url) do Cachex.expire_at(:rich_media_cache, url, ttl * 1000) {:ok, data} else @@ -58,8 +63,14 @@ def set_ttl_based_on_image({:ok, data}, url) do end end + def set_ttl_based_on_image({:error, _} = error, _) do + Logger.error("parsing error: #{inspect(error)}") + error + end + defp get_ttl_from_image(data, url) do - Pleroma.Config.get([:rich_media, :ttl_setters]) + [:rich_media, :ttl_setters] + |> Pleroma.Config.get() |> Enum.reduce({:ok, nil}, fn module, {:ok, _ttl} -> module.ttl(data, url) @@ -70,23 +81,16 @@ defp get_ttl_from_image(data, url) do end defp parse_url(url) do - try do - {:ok, %Tesla.Env{body: html}} = Pleroma.Web.RichMedia.Helpers.rich_media_get(url) - + with {:ok, %Tesla.Env{body: html}} <- Pleroma.Web.RichMedia.Helpers.rich_media_get(url), + {:ok, html} <- Floki.parse_document(html) do html - |> parse_html() |> maybe_parse() |> Map.put("url", url) |> clean_parsed_data() |> check_parsed_data() - rescue - e -> - {:error, "Parsing error: #{inspect(e)} #{inspect(__STACKTRACE__)}"} end end - defp parse_html(html), do: Floki.parse_document!(html) - defp maybe_parse(html) do Enum.reduce_while(parsers(), %{}, fn parser, acc -> case parser.parse(html, acc) do diff --git a/lib/pleroma/web/rich_media/parsers/ttl/aws_signed_url.ex b/lib/pleroma/web/rich_media/parsers/ttl/aws_signed_url.ex index 0dc1efdaf..c5aaea2d4 100644 --- a/lib/pleroma/web/rich_media/parsers/ttl/aws_signed_url.ex +++ b/lib/pleroma/web/rich_media/parsers/ttl/aws_signed_url.ex @@ -10,20 +10,15 @@ def ttl(data, _url) do |> parse_query_params() |> format_query_params() |> get_expiration_timestamp() + else + {:error, "Not aws signed url #{inspect(image)}"} end end - defp is_aws_signed_url(""), do: nil - defp is_aws_signed_url(nil), do: nil - - defp is_aws_signed_url(image) when is_binary(image) do + defp is_aws_signed_url(image) when is_binary(image) and image != "" do %URI{host: host, query: query} = URI.parse(image) - if String.contains?(host, "amazonaws.com") and String.contains?(query, "X-Amz-Expires") do - image - else - nil - end + String.contains?(host, "amazonaws.com") and String.contains?(query, "X-Amz-Expires") end defp is_aws_signed_url(_), do: nil @@ -46,6 +41,6 @@ defp get_expiration_timestamp(params) when is_map(params) do |> Map.get("X-Amz-Date") |> Timex.parse("{ISO:Basic:Z}") - Timex.to_unix(date) + String.to_integer(Map.get(params, "X-Amz-Expires")) + {:ok, Timex.to_unix(date) + String.to_integer(Map.get(params, "X-Amz-Expires"))} end end diff --git a/test/web/rich_media/aws_signed_url_test.exs b/test/web/rich_media/aws_signed_url_test.exs index b30f4400e..a21f3c935 100644 --- a/test/web/rich_media/aws_signed_url_test.exs +++ b/test/web/rich_media/aws_signed_url_test.exs @@ -21,7 +21,7 @@ test "s3 signed url is parsed correct for expiration time" do expire_time = Timex.parse!(timestamp, "{ISO:Basic:Z}") |> Timex.to_unix() |> Kernel.+(valid_till) - assert expire_time == Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl.ttl(metadata, url) + assert {:ok, expire_time} == Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl.ttl(metadata, url) end test "s3 signed url is parsed and correct ttl is set for rich media" do diff --git a/test/web/rich_media/parser_test.exs b/test/web/rich_media/parser_test.exs index 420a612c6..1e09cbf84 100644 --- a/test/web/rich_media/parser_test.exs +++ b/test/web/rich_media/parser_test.exs @@ -5,6 +5,8 @@ defmodule Pleroma.Web.RichMedia.ParserTest do use ExUnit.Case, async: true + alias Pleroma.Web.RichMedia.Parser + setup do Tesla.Mock.mock(fn %{ @@ -48,23 +50,29 @@ defmodule Pleroma.Web.RichMedia.ParserTest do %{method: :get, url: "http://example.com/empty"} -> %Tesla.Env{status: 200, body: "hello"} + + %{method: :get, url: "http://example.com/malformed"} -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/malformed-data.html")} + + %{method: :get, url: "http://example.com/error"} -> + {:error, :overload} end) :ok end test "returns error when no metadata present" do - assert {:error, _} = Pleroma.Web.RichMedia.Parser.parse("http://example.com/empty") + assert {:error, _} = Parser.parse("http://example.com/empty") end test "doesn't just add a title" do - assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/non-ogp") == + assert Parser.parse("http://example.com/non-ogp") == {:error, "Found metadata was invalid or incomplete: %{\"url\" => \"http://example.com/non-ogp\"}"} end test "parses ogp" do - assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/ogp") == + assert Parser.parse("http://example.com/ogp") == {:ok, %{ "image" => "http://ia.media-imdb.com/images/rock.jpg", @@ -77,7 +85,7 @@ test "parses ogp" do end test "falls back to when ogp:title is missing" do - assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/ogp-missing-title") == + assert Parser.parse("http://example.com/ogp-missing-title") == {:ok, %{ "image" => "http://ia.media-imdb.com/images/rock.jpg", @@ -90,7 +98,7 @@ test "falls back to <title> when ogp:title is missing" do end test "parses twitter card" do - assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/twitter-card") == + assert Parser.parse("http://example.com/twitter-card") == {:ok, %{ "card" => "summary", @@ -103,7 +111,7 @@ test "parses twitter card" do end test "parses OEmbed" do - assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/oembed") == + assert Parser.parse("http://example.com/oembed") == {:ok, %{ "author_name" => "‮‭‬bees‬", @@ -132,6 +140,10 @@ test "parses OEmbed" do end test "rejects invalid OGP data" do - assert {:error, _} = Pleroma.Web.RichMedia.Parser.parse("http://example.com/malformed") + assert {:error, _} = Parser.parse("http://example.com/malformed") + end + + test "returns error if getting page was not successful" do + assert {:error, :overload} = Parser.parse("http://example.com/error") end end From 0a9c63fb4351ed29a521697f2c584b0ae007696c Mon Sep 17 00:00:00 2001 From: Sean King <seanking2919@protonmail.com> Date: Tue, 1 Sep 2020 12:20:32 -0600 Subject: [PATCH 063/460] Fix frontend install mix task bug --- lib/mix/tasks/pleroma/frontend.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/mix/tasks/pleroma/frontend.ex b/lib/mix/tasks/pleroma/frontend.ex index 2adbf8d72..0a48be1fe 100644 --- a/lib/mix/tasks/pleroma/frontend.ex +++ b/lib/mix/tasks/pleroma/frontend.ex @@ -69,7 +69,7 @@ def run(["install", frontend | args]) do fe_label = "#{frontend} (#{ref})" - tmp_dir = Path.join(dest, "tmp") + tmp_dir = Path.join([instance_static_dir, "frontends", "tmp"]) with {_, :ok} <- {:download_or_unzip, download_or_unzip(frontend_info, tmp_dir, options[:file])}, @@ -133,6 +133,7 @@ defp download_build(frontend_info, dest) do defp install_frontend(frontend_info, source, dest) do from = frontend_info["build_dir"] || "dist" + File.rm_rf!(dest) File.mkdir_p!(dest) File.cp_r!(Path.join([source, from]), dest) :ok From 6ce28c409137972ee9b105b9d7ab4a0fd2a0d08b Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov <ivantashkinov@gmail.com> Date: Tue, 1 Sep 2020 21:21:58 +0300 Subject: [PATCH 064/460] [#2497] Fix for png media proxy preview response headers (content-type & content-disposition). --- lib/pleroma/web/media_proxy/media_proxy_controller.ex | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 2afcd861a..961c73666 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -67,7 +67,7 @@ defp handle_preview(conn, url) do end end - # TODO: find a workaround so avatar_static and banner_static can work. + # TODO: find a workaround so avatar_static and header_static can work. # Those only permit GIFs for animation, so we have to permit a way to # allow those to get real static variants. defp handle_preview("image/gif" = _content_type, conn, url) do @@ -107,7 +107,7 @@ defp handle_png_preview(%{params: params} = conn, url) do } ) do conn - |> put_preview_response_headers() + |> put_preview_response_headers("image/png", "preview.png") |> send_resp(200, thumbnail_binary) else _ -> @@ -145,10 +145,10 @@ defp handle_video_preview(conn, url) do end end - defp put_preview_response_headers(conn) do + defp put_preview_response_headers(conn, content_type \\ "image/jpeg", filename \\ "preview.jpg") do conn - |> put_resp_header("content-type", "image/jpeg") - |> put_resp_header("content-disposition", "inline; filename=\"preview.jpg\"") + |> put_resp_header("content-type", content_type) + |> put_resp_header("content-disposition", "inline; filename=\"#{filename}\"") |> put_resp_header("cache-control", "max-age=0, private, must-revalidate") end From 868057871ac041346d8367181f00f0b127b33945 Mon Sep 17 00:00:00 2001 From: Karol Kosek <krkk@krkk.ct8.pl> Date: Tue, 1 Sep 2020 19:56:32 +0200 Subject: [PATCH 065/460] search: fix 'following' query parameter The parameter included the accounts that are following you (followers) instead of those you are actually following. Co-Authored-By: Haelwenn (lanodan) Monnier <contact@hacktivis.me> --- CHANGELOG.md | 5 +++++ lib/pleroma/user/search.ex | 2 +- test/user_search_test.exs | 24 ++++++++++++------------ 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0850deed7..07bc6d77c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## unreleased-patch - ??? + +### Fixed +- Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers + ## [2.1.0] - 2020-08-28 ### Changed diff --git a/lib/pleroma/user/search.ex b/lib/pleroma/user/search.ex index d4fd31069..adbef7fb8 100644 --- a/lib/pleroma/user/search.ex +++ b/lib/pleroma/user/search.ex @@ -116,7 +116,7 @@ defp trigram_rank(query, query_string) do end defp base_query(_user, false), do: User - defp base_query(user, true), do: User.get_followers_query(user) + defp base_query(user, true), do: User.get_friends_query(user) defp filter_invisible_users(query) do from(q in query, where: q.invisible == false) diff --git a/test/user_search_test.exs b/test/user_search_test.exs index 559ba5966..01976bf58 100644 --- a/test/user_search_test.exs +++ b/test/user_search_test.exs @@ -109,22 +109,22 @@ test "finds users, boosting ranks of friends and followers" do Enum.map(User.search("doe", resolve: false, for_user: u1), & &1.id) == [] end - test "finds followers of user by partial name" do - u1 = insert(:user) - u2 = insert(:user, %{name: "Jimi"}) - follower_jimi = insert(:user, %{name: "Jimi Hendrix"}) - follower_lizz = insert(:user, %{name: "Lizz Wright"}) - friend = insert(:user, %{name: "Jimi"}) + test "finds followings of user by partial name" do + lizz = insert(:user, %{name: "Lizz"}) + jimi = insert(:user, %{name: "Jimi"}) + following_lizz = insert(:user, %{name: "Jimi Hendrix"}) + following_jimi = insert(:user, %{name: "Lizz Wright"}) + follower_lizz = insert(:user, %{name: "Jimi"}) - {:ok, follower_jimi} = User.follow(follower_jimi, u1) - {:ok, _follower_lizz} = User.follow(follower_lizz, u2) - {:ok, u1} = User.follow(u1, friend) + {:ok, lizz} = User.follow(lizz, following_lizz) + {:ok, _jimi} = User.follow(jimi, following_jimi) + {:ok, _follower_lizz} = User.follow(follower_lizz, lizz) - assert Enum.map(User.search("jimi", following: true, for_user: u1), & &1.id) == [ - follower_jimi.id + assert Enum.map(User.search("jimi", following: true, for_user: lizz), & &1.id) == [ + following_lizz.id ] - assert User.search("lizz", following: true, for_user: u1) == [] + assert User.search("lizz", following: true, for_user: lizz) == [] end test "find local and remote users for authenticated users" do From c17d83cd7330d5c874f647a5224a3a130ed88fb0 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Wed, 19 Aug 2020 10:22:59 +0300 Subject: [PATCH 066/460] improvements and fixes for http requests - fix for gun worker termination in some circumstances - pool for http clients (ex_aws, tzdata) - default pool timeouts for gun - gun retries on gun_down messages - s3 upload timeout if streaming enabled --- config/config.exs | 12 +++++--- lib/pleroma/gun/connection_pool/worker.ex | 35 ++++++++++++++++------- lib/pleroma/http/adapter_helper.ex | 16 +++++++---- lib/pleroma/http/adapter_helper/gun.ex | 18 ++++++------ lib/pleroma/http/ex_aws.ex | 2 ++ lib/pleroma/http/tzdata.ex | 4 +++ lib/pleroma/uploaders/s3.ex | 19 ++++++++---- 7 files changed, 70 insertions(+), 36 deletions(-) diff --git a/config/config.exs b/config/config.exs index 246712b9f..ea8869d48 100644 --- a/config/config.exs +++ b/config/config.exs @@ -740,19 +740,23 @@ config :pleroma, :pools, federation: [ size: 50, - max_waiting: 10 + max_waiting: 10, + timeout: 10_000 ], media: [ size: 50, - max_waiting: 10 + max_waiting: 10, + timeout: 10_000 ], upload: [ size: 25, - max_waiting: 5 + max_waiting: 5, + timeout: 15_000 ], default: [ size: 10, - max_waiting: 2 + max_waiting: 2, + timeout: 5_000 ] config :pleroma, :hackney_pools, diff --git a/lib/pleroma/gun/connection_pool/worker.ex b/lib/pleroma/gun/connection_pool/worker.ex index fec9d0efa..c36332817 100644 --- a/lib/pleroma/gun/connection_pool/worker.ex +++ b/lib/pleroma/gun/connection_pool/worker.ex @@ -83,17 +83,25 @@ def handle_call(:remove_client, {client_pid, _}, %{key: key} = state) do end) {ref, state} = pop_in(state.client_monitors[client_pid]) - Process.demonitor(ref) - - timer = - if used_by == [] do - max_idle = Pleroma.Config.get([:connections_pool, :max_idle_time], 30_000) - Process.send_after(self(), :idle_close, max_idle) + # DOWN message can receive right after `remove_client` call and cause worker to terminate + state = + if is_nil(ref) do + state else - nil + Process.demonitor(ref) + + timer = + if used_by == [] do + max_idle = Pleroma.Config.get([:connections_pool, :max_idle_time], 30_000) + Process.send_after(self(), :idle_close, max_idle) + else + nil + end + + %{state | timer: timer} end - {:reply, :ok, %{state | timer: timer}, :hibernate} + {:reply, :ok, state, :hibernate} end @impl true @@ -103,16 +111,21 @@ def handle_info(:idle_close, state) do {:stop, :normal, state} end + @impl true + def handle_info({:gun_up, _pid, _protocol}, state) do + {:noreply, state, :hibernate} + end + # Gracefully shutdown if the connection got closed without any streams left @impl true def handle_info({:gun_down, _pid, _protocol, _reason, []}, state) do {:stop, :normal, state} end - # Otherwise, shutdown with an error + # Otherwise, wait for retry @impl true - def handle_info({:gun_down, _pid, _protocol, _reason, _killed_streams} = down_message, state) do - {:stop, {:error, down_message}, state} + def handle_info({:gun_down, _pid, _protocol, _reason, _killed_streams}, state) do + {:noreply, state, :hibernate} end @impl true diff --git a/lib/pleroma/http/adapter_helper.ex b/lib/pleroma/http/adapter_helper.ex index 9ec3836b0..740e6e9ff 100644 --- a/lib/pleroma/http/adapter_helper.ex +++ b/lib/pleroma/http/adapter_helper.ex @@ -10,6 +10,7 @@ defmodule Pleroma.HTTP.AdapterHelper do @type proxy_type() :: :socks4 | :socks5 @type host() :: charlist() | :inet.ip_address() + @type pool() :: :federation | :upload | :media | :default alias Pleroma.Config alias Pleroma.HTTP.AdapterHelper @@ -44,14 +45,13 @@ def maybe_add_proxy(opts, proxy), do: Keyword.put_new(opts, :proxy, proxy) @spec options(URI.t(), keyword()) :: keyword() def options(%URI{} = uri, opts \\ []) do @defaults - |> put_timeout() |> Keyword.merge(opts) + |> put_timeout() |> adapter_helper().options(uri) end - # For Hackney, this is the time a connection can stay idle in the pool. - # For Gun, this is the timeout to receive a message from Gun. - defp put_timeout(opts) do + @spec pool_timeout(pool()) :: non_neg_integer() + def pool_timeout(pool) do {config_key, default} = if adapter() == Tesla.Adapter.Gun do {:pools, Config.get([:pools, :default, :timeout], 5_000)} @@ -59,9 +59,13 @@ defp put_timeout(opts) do {:hackney_pools, 10_000} end - timeout = Config.get([config_key, opts[:pool], :timeout], default) + Config.get([config_key, pool, :timeout], default) + end - Keyword.merge(opts, timeout: timeout) + # For Hackney, this is the time a connection can stay idle in the pool. + # For Gun, this is the timeout to receive a message from Gun. + defp put_timeout(opts) do + Keyword.put_new(opts, :timeout, pool_timeout(opts[:pool])) end def get_conn(uri, opts), do: adapter_helper().get_conn(uri, opts) diff --git a/lib/pleroma/http/adapter_helper/gun.ex b/lib/pleroma/http/adapter_helper/gun.ex index b4ff8306c..db0a298b3 100644 --- a/lib/pleroma/http/adapter_helper/gun.ex +++ b/lib/pleroma/http/adapter_helper/gun.ex @@ -5,6 +5,7 @@ defmodule Pleroma.HTTP.AdapterHelper.Gun do @behaviour Pleroma.HTTP.AdapterHelper + alias Pleroma.Config alias Pleroma.Gun.ConnectionPool alias Pleroma.HTTP.AdapterHelper @@ -14,7 +15,7 @@ defmodule Pleroma.HTTP.AdapterHelper.Gun do connect_timeout: 5_000, domain_lookup_timeout: 5_000, tls_handshake_timeout: 5_000, - retry: 0, + retry: 1, retry_timeout: 1000, await_up_timeout: 5_000 ] @@ -22,10 +23,11 @@ defmodule Pleroma.HTTP.AdapterHelper.Gun do @spec options(keyword(), URI.t()) :: keyword() def options(incoming_opts \\ [], %URI{} = uri) do proxy = - Pleroma.Config.get([:http, :proxy_url]) + [:http, :proxy_url] + |> Config.get() |> AdapterHelper.format_proxy() - config_opts = Pleroma.Config.get([:http, :adapter], []) + config_opts = Config.get([:http, :adapter], []) @defaults |> Keyword.merge(config_opts) @@ -37,8 +39,7 @@ def options(incoming_opts \\ [], %URI{} = uri) do defp add_scheme_opts(opts, %{scheme: "http"}), do: opts defp add_scheme_opts(opts, %{scheme: "https"}) do - opts - |> Keyword.put(:certificates_verification, true) + Keyword.put(opts, :certificates_verification, true) end @spec get_conn(URI.t(), keyword()) :: {:ok, keyword()} | {:error, atom()} @@ -51,11 +52,11 @@ def get_conn(uri, opts) do @prefix Pleroma.Gun.ConnectionPool def limiter_setup do - wait = Pleroma.Config.get([:connections_pool, :connection_acquisition_wait]) - retries = Pleroma.Config.get([:connections_pool, :connection_acquisition_retries]) + wait = Config.get([:connections_pool, :connection_acquisition_wait]) + retries = Config.get([:connections_pool, :connection_acquisition_retries]) :pools - |> Pleroma.Config.get([]) + |> Config.get([]) |> Enum.each(fn {name, opts} -> max_running = Keyword.get(opts, :size, 50) max_waiting = Keyword.get(opts, :max_waiting, 10) @@ -69,7 +70,6 @@ def limiter_setup do case result do :ok -> :ok {:error, :existing} -> :ok - e -> raise e end end) diff --git a/lib/pleroma/http/ex_aws.ex b/lib/pleroma/http/ex_aws.ex index e53e64077..2fe8beafc 100644 --- a/lib/pleroma/http/ex_aws.ex +++ b/lib/pleroma/http/ex_aws.ex @@ -11,6 +11,8 @@ defmodule Pleroma.HTTP.ExAws do @impl true def request(method, url, body \\ "", headers \\ [], http_opts \\ []) do + http_opts = Keyword.put(http_opts, :adapter, pool: :upload) + case HTTP.request(method, url, body, headers, http_opts) do {:ok, env} -> {:ok, %{status_code: env.status, headers: env.headers, body: env.body}} diff --git a/lib/pleroma/http/tzdata.ex b/lib/pleroma/http/tzdata.ex index 34bb253a7..7dd3352ff 100644 --- a/lib/pleroma/http/tzdata.ex +++ b/lib/pleroma/http/tzdata.ex @@ -11,6 +11,8 @@ defmodule Pleroma.HTTP.Tzdata do @impl true def get(url, headers, options) do + options = Keyword.put(options, :adapter, pool: :upload) + with {:ok, %Tesla.Env{} = env} <- HTTP.get(url, headers, options) do {:ok, {env.status, env.headers, env.body}} end @@ -18,6 +20,8 @@ def get(url, headers, options) do @impl true def head(url, headers, options) do + options = Keyword.put(options, :adapter, pool: :upload) + with {:ok, %Tesla.Env{} = env} <- HTTP.head(url, headers, options) do {:ok, {env.status, env.headers}} end diff --git a/lib/pleroma/uploaders/s3.ex b/lib/pleroma/uploaders/s3.ex index a13ff23b6..ed9794ca2 100644 --- a/lib/pleroma/uploaders/s3.ex +++ b/lib/pleroma/uploaders/s3.ex @@ -46,12 +46,19 @@ def put_file(%Pleroma.Upload{} = upload) do op = if streaming do - upload.tempfile - |> ExAws.S3.Upload.stream_file() - |> ExAws.S3.upload(bucket, s3_name, [ - {:acl, :public_read}, - {:content_type, upload.content_type} - ]) + op = + upload.tempfile + |> ExAws.S3.Upload.stream_file() + |> ExAws.S3.upload(bucket, s3_name, [ + {:acl, :public_read}, + {:content_type, upload.content_type} + ]) + + # set s3 upload timeout to respect :upload pool timeout + # timeout should be slightly larger, so s3 can retry upload on fail + timeout = Pleroma.HTTP.AdapterHelper.pool_timeout(:upload) + 1_000 + opts = Keyword.put(op.opts, :timeout, timeout) + Map.put(op, :opts, opts) else {:ok, file_data} = File.read(upload.tempfile) From 5e8adf91b46c3f23ec423d53afccbb062df4a241 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Tue, 1 Sep 2020 11:30:56 +0300 Subject: [PATCH 067/460] don't overwrite passed pool option in http clients --- lib/pleroma/http/ex_aws.ex | 2 +- lib/pleroma/http/tzdata.ex | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/http/ex_aws.ex b/lib/pleroma/http/ex_aws.ex index 2fe8beafc..c3f335c73 100644 --- a/lib/pleroma/http/ex_aws.ex +++ b/lib/pleroma/http/ex_aws.ex @@ -11,7 +11,7 @@ defmodule Pleroma.HTTP.ExAws do @impl true def request(method, url, body \\ "", headers \\ [], http_opts \\ []) do - http_opts = Keyword.put(http_opts, :adapter, pool: :upload) + http_opts = Keyword.put_new(http_opts, :adapter, pool: :upload) case HTTP.request(method, url, body, headers, http_opts) do {:ok, env} -> diff --git a/lib/pleroma/http/tzdata.ex b/lib/pleroma/http/tzdata.ex index 7dd3352ff..356799aab 100644 --- a/lib/pleroma/http/tzdata.ex +++ b/lib/pleroma/http/tzdata.ex @@ -11,7 +11,7 @@ defmodule Pleroma.HTTP.Tzdata do @impl true def get(url, headers, options) do - options = Keyword.put(options, :adapter, pool: :upload) + options = Keyword.put_new(options, :adapter, pool: :upload) with {:ok, %Tesla.Env{} = env} <- HTTP.get(url, headers, options) do {:ok, {env.status, env.headers, env.body}} @@ -20,7 +20,7 @@ def get(url, headers, options) do @impl true def head(url, headers, options) do - options = Keyword.put(options, :adapter, pool: :upload) + options = Keyword.put_new(options, :adapter, pool: :upload) with {:ok, %Tesla.Env{} = env} <- HTTP.head(url, headers, options) do {:ok, {env.status, env.headers}} From 79f65b4374908a32ebf39db176a30a01152a9141 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Wed, 2 Sep 2020 09:16:51 +0300 Subject: [PATCH 068/460] correct pool and uniform headers format --- lib/mix/tasks/pleroma/frontend.ex | 4 +++- lib/pleroma/instances/instance.ex | 4 +++- lib/pleroma/object/fetcher.ex | 6 +++--- lib/pleroma/web/rich_media/helpers.ex | 2 +- lib/pleroma/web/web_finger/web_finger.ex | 4 ++-- test/support/http_request_mock.ex | 4 ++-- 6 files changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/mix/tasks/pleroma/frontend.ex b/lib/mix/tasks/pleroma/frontend.ex index 2adbf8d72..484af6da7 100644 --- a/lib/mix/tasks/pleroma/frontend.ex +++ b/lib/mix/tasks/pleroma/frontend.ex @@ -124,7 +124,9 @@ defp download_build(frontend_info, dest) do url = String.replace(frontend_info["build_url"], "${ref}", frontend_info["ref"]) with {:ok, %{status: 200, body: zip_body}} <- - Pleroma.HTTP.get(url, [], timeout: 120_000, recv_timeout: 120_000) do + Pleroma.HTTP.get(url, [], + adapter: [pool: :media, timeout: 120_000, recv_timeout: 120_000] + ) do unzip(zip_body, dest) else e -> {:error, e} diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index a1f935232..711c42158 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -150,7 +150,9 @@ def get_or_update_favicon(%URI{host: host} = instance_uri) do defp scrape_favicon(%URI{} = instance_uri) do try do with {:ok, %Tesla.Env{body: html}} <- - Pleroma.HTTP.get(to_string(instance_uri), [{:Accept, "text/html"}]), + Pleroma.HTTP.get(to_string(instance_uri), [{"accept", "text/html"}], + adapter: [pool: :media] + ), favicon_rel <- html |> Floki.parse_document!() diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex index 6fdbc8efd..374d8704a 100644 --- a/lib/pleroma/object/fetcher.ex +++ b/lib/pleroma/object/fetcher.ex @@ -164,12 +164,12 @@ defp make_signature(id, date) do date: date }) - [{"signature", signature}] + {"signature", signature} end defp sign_fetch(headers, id, date) do if Pleroma.Config.get([:activitypub, :sign_object_fetches]) do - headers ++ make_signature(id, date) + [make_signature(id, date) | headers] else headers end @@ -177,7 +177,7 @@ defp sign_fetch(headers, id, date) do defp maybe_date_fetch(headers, date) do if Pleroma.Config.get([:activitypub, :sign_object_fetches]) do - headers ++ [{"date", date}] + [{"date", date} | headers] else headers end diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex index 6210f2c5a..2fb482b51 100644 --- a/lib/pleroma/web/rich_media/helpers.ex +++ b/lib/pleroma/web/rich_media/helpers.ex @@ -96,6 +96,6 @@ def rich_media_get(url) do @rich_media_options end - Pleroma.HTTP.get(url, headers, options) + Pleroma.HTTP.get(url, headers, adapter: options) end end diff --git a/lib/pleroma/web/web_finger/web_finger.ex b/lib/pleroma/web/web_finger/web_finger.ex index c4051e63e..6629f5356 100644 --- a/lib/pleroma/web/web_finger/web_finger.ex +++ b/lib/pleroma/web/web_finger/web_finger.ex @@ -136,12 +136,12 @@ def get_template_from_xml(body) do def find_lrdd_template(domain) do with {:ok, %{status: status, body: body}} when status in 200..299 <- - HTTP.get("http://#{domain}/.well-known/host-meta", []) do + HTTP.get("http://#{domain}/.well-known/host-meta") do get_template_from_xml(body) else _ -> with {:ok, %{body: body, status: status}} when status in 200..299 <- - HTTP.get("https://#{domain}/.well-known/host-meta", []) do + HTTP.get("https://#{domain}/.well-known/host-meta") do get_template_from_xml(body) else e -> {:error, "Can't find LRDD template: #{inspect(e)}"} diff --git a/test/support/http_request_mock.ex b/test/support/http_request_mock.ex index eeeba7880..a0ebf65d9 100644 --- a/test/support/http_request_mock.ex +++ b/test/support/http_request_mock.ex @@ -1350,11 +1350,11 @@ def get("https://relay.mastodon.host/actor", _, _, _) do {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/relay/relay.json")}} end - def get("http://localhost:4001/", _, "", Accept: "text/html") do + def get("http://localhost:4001/", _, "", [{"accept", "text/html"}]) do {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/7369654.html")}} end - def get("https://osada.macgirvin.com/", _, "", Accept: "text/html") do + def get("https://osada.macgirvin.com/", _, "", [{"accept", "text/html"}]) do {:ok, %Tesla.Env{ status: 200, From 1c57ef44983e150f3cc016290fe99f159eb79cb0 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Wed, 2 Sep 2020 10:33:43 +0300 Subject: [PATCH 069/460] default pool for tz_data client --- lib/pleroma/http/tzdata.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/http/tzdata.ex b/lib/pleroma/http/tzdata.ex index 356799aab..4539ac359 100644 --- a/lib/pleroma/http/tzdata.ex +++ b/lib/pleroma/http/tzdata.ex @@ -11,7 +11,7 @@ defmodule Pleroma.HTTP.Tzdata do @impl true def get(url, headers, options) do - options = Keyword.put_new(options, :adapter, pool: :upload) + options = Keyword.put_new(options, :adapter, pool: :default) with {:ok, %Tesla.Env{} = env} <- HTTP.get(url, headers, options) do {:ok, {env.status, env.headers, env.body}} @@ -20,7 +20,7 @@ def get(url, headers, options) do @impl true def head(url, headers, options) do - options = Keyword.put_new(options, :adapter, pool: :upload) + options = Keyword.put_new(options, :adapter, pool: :default) with {:ok, %Tesla.Env{} = env} <- HTTP.head(url, headers, options) do {:ok, {env.status, env.headers}} From 84fbf1616104c09e0f4f5442d86ca2c573ae4056 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Wed, 2 Sep 2020 10:50:51 +0300 Subject: [PATCH 070/460] timeout option moved to gun adapter helper --- lib/pleroma/http/adapter_helper.ex | 23 ++--------------------- lib/pleroma/http/adapter_helper/gun.ex | 15 +++++++++++++++ lib/pleroma/uploaders/s3.ex | 14 +++++++++----- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/lib/pleroma/http/adapter_helper.ex b/lib/pleroma/http/adapter_helper.ex index 740e6e9ff..0728cbaa2 100644 --- a/lib/pleroma/http/adapter_helper.ex +++ b/lib/pleroma/http/adapter_helper.ex @@ -10,9 +10,7 @@ defmodule Pleroma.HTTP.AdapterHelper do @type proxy_type() :: :socks4 | :socks5 @type host() :: charlist() | :inet.ip_address() - @type pool() :: :federation | :upload | :media | :default - alias Pleroma.Config alias Pleroma.HTTP.AdapterHelper require Logger @@ -46,29 +44,12 @@ def maybe_add_proxy(opts, proxy), do: Keyword.put_new(opts, :proxy, proxy) def options(%URI{} = uri, opts \\ []) do @defaults |> Keyword.merge(opts) - |> put_timeout() |> adapter_helper().options(uri) end - @spec pool_timeout(pool()) :: non_neg_integer() - def pool_timeout(pool) do - {config_key, default} = - if adapter() == Tesla.Adapter.Gun do - {:pools, Config.get([:pools, :default, :timeout], 5_000)} - else - {:hackney_pools, 10_000} - end - - Config.get([config_key, pool, :timeout], default) - end - - # For Hackney, this is the time a connection can stay idle in the pool. - # For Gun, this is the timeout to receive a message from Gun. - defp put_timeout(opts) do - Keyword.put_new(opts, :timeout, pool_timeout(opts[:pool])) - end - + @spec get_conn(URI.t(), keyword()) :: {:ok, keyword()} | {:error, atom()} def get_conn(uri, opts), do: adapter_helper().get_conn(uri, opts) + defp adapter, do: Application.get_env(:tesla, :adapter) defp adapter_helper do diff --git a/lib/pleroma/http/adapter_helper/gun.ex b/lib/pleroma/http/adapter_helper/gun.ex index db0a298b3..02e20f2d1 100644 --- a/lib/pleroma/http/adapter_helper/gun.ex +++ b/lib/pleroma/http/adapter_helper/gun.ex @@ -20,6 +20,8 @@ defmodule Pleroma.HTTP.AdapterHelper.Gun do await_up_timeout: 5_000 ] + @type pool() :: :federation | :upload | :media | :default + @spec options(keyword(), URI.t()) :: keyword() def options(incoming_opts \\ [], %URI{} = uri) do proxy = @@ -34,6 +36,7 @@ def options(incoming_opts \\ [], %URI{} = uri) do |> add_scheme_opts(uri) |> AdapterHelper.maybe_add_proxy(proxy) |> Keyword.merge(incoming_opts) + |> put_timeout() end defp add_scheme_opts(opts, %{scheme: "http"}), do: opts @@ -42,6 +45,18 @@ defp add_scheme_opts(opts, %{scheme: "https"}) do Keyword.put(opts, :certificates_verification, true) end + defp put_timeout(opts) do + # this is the timeout to receive a message from Gun + Keyword.put_new(opts, :timeout, pool_timeout(opts[:pool])) + end + + @spec pool_timeout(pool()) :: non_neg_integer() + def pool_timeout(pool) do + default = Config.get([:pools, :default, :timeout], 5_000) + + Config.get([:pools, pool, :timeout], default) + end + @spec get_conn(URI.t(), keyword()) :: {:ok, keyword()} | {:error, atom()} def get_conn(uri, opts) do case ConnectionPool.get_conn(uri, opts) do diff --git a/lib/pleroma/uploaders/s3.ex b/lib/pleroma/uploaders/s3.ex index ed9794ca2..6dbef9085 100644 --- a/lib/pleroma/uploaders/s3.ex +++ b/lib/pleroma/uploaders/s3.ex @@ -54,11 +54,15 @@ def put_file(%Pleroma.Upload{} = upload) do {:content_type, upload.content_type} ]) - # set s3 upload timeout to respect :upload pool timeout - # timeout should be slightly larger, so s3 can retry upload on fail - timeout = Pleroma.HTTP.AdapterHelper.pool_timeout(:upload) + 1_000 - opts = Keyword.put(op.opts, :timeout, timeout) - Map.put(op, :opts, opts) + if Application.get_env(:tesla, :adapter) == Tesla.Adapter.Gun do + # set s3 upload timeout to respect :upload pool timeout + # timeout should be slightly larger, so s3 can retry upload on fail + timeout = Pleroma.HTTP.AdapterHelper.Gun.pool_timeout(:upload) + 1_000 + opts = Keyword.put(op.opts, :timeout, timeout) + Map.put(op, :opts, opts) + else + op + end else {:ok, file_data} = File.read(upload.tempfile) From 46236d1d873473d95b11cd7bfdcaa284ea55a9ad Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Wed, 2 Sep 2020 12:42:25 +0300 Subject: [PATCH 071/460] html.ex: optimize external url extraction By using a :not() selector and only extracting attributes from the first match. --- lib/pleroma/html.ex | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/html.ex b/lib/pleroma/html.ex index dc1b9b840..20b02f091 100644 --- a/lib/pleroma/html.ex +++ b/lib/pleroma/html.ex @@ -109,8 +109,9 @@ def extract_first_external_url(object, content) do result = content |> Floki.parse_fragment!() - |> Floki.filter_out("a.mention,a.hashtag,a.attachment,a[rel~=\"tag\"]") - |> Floki.attribute("a", "href") + |> Floki.find("a:not(.mention,.hashtag,.attachment,[rel~=\"tag\"])") + |> Enum.take(1) + |> Floki.attribute("href") |> Enum.at(0) {:commit, {:ok, result}} From 19691389b92e617f1edad7d4e3168fe917d0a675 Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Wed, 2 Sep 2020 14:21:28 +0300 Subject: [PATCH 072/460] Rich media: Add failure tracking --- CHANGELOG.md | 3 ++ config/config.exs | 1 + config/description.exs | 7 +++ docs/configuration/cheatsheet.md | 1 + lib/pleroma/web/rich_media/parser.ex | 56 ++++++++++++--------- test/web/rich_media/aws_signed_url_test.exs | 2 +- 6 files changed, 46 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 07bc6d77c..4424c060f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## unreleased-patch - ??? +### Added +- Rich media failure tracking (along with `:failure_backoff` option) + ### Fixed - Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers diff --git a/config/config.exs b/config/config.exs index ea8869d48..ed37b93c0 100644 --- a/config/config.exs +++ b/config/config.exs @@ -412,6 +412,7 @@ Pleroma.Web.RichMedia.Parsers.TwitterCard, Pleroma.Web.RichMedia.Parsers.OEmbed ], + failure_backoff: 60_000, ttl_setters: [Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl] config :pleroma, :media_proxy, diff --git a/config/description.exs b/config/description.exs index 29a657333..5e08ba109 100644 --- a/config/description.exs +++ b/config/description.exs @@ -2385,6 +2385,13 @@ suggestions: [ Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl ] + }, + %{ + key: :failure_backoff, + type: :integer, + description: + "Amount of milliseconds after request failure, during which the request will not be retried.", + suggestions: [60_000] } ] }, diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index 2f440adf4..a9a650fab 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -361,6 +361,7 @@ config :pleroma, Pleroma.Web.MediaProxy.Invalidation.Http, * `ignore_hosts`: list of hosts which will be ignored by the metadata parser. For example `["accounts.google.com", "xss.website"]`, defaults to `[]`. * `ignore_tld`: list TLDs (top-level domains) which will ignore for parse metadata. default is ["local", "localdomain", "lan"]. * `parsers`: list of Rich Media parsers. +* `failure_backoff`: Amount of milliseconds after request failure, during which the request will not be retried. ## HTTP server diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex index e9aa2dd03..e98c743ca 100644 --- a/lib/pleroma/web/rich_media/parser.ex +++ b/lib/pleroma/web/rich_media/parser.ex @@ -17,14 +17,25 @@ def parse(url), do: parse_url(url) else @spec parse(String.t()) :: {:ok, map()} | {:error, any()} def parse(url) do - Cachex.fetch!(:rich_media_cache, url, fn _ -> - with {:ok, data} <- parse_url(url) do - {:commit, {:ok, data}} - else - error -> {:ignore, error} - end - end) - |> set_ttl_based_on_image(url) + with {:ok, data} <- get_cached_or_parse(url), + {:ok, _} <- set_ttl_based_on_image(data, url) do + {:ok, data} + else + error -> + Logger.error(fn -> "Rich media error: #{inspect(error)}" end) + end + end + + defp get_cached_or_parse(url) do + case Cachex.fetch!(:rich_media_cache, url, fn _ -> {:commit, parse_url(url)} end) do + {:ok, _data} = res -> + res + + {:error, _} = e -> + ttl = Pleroma.Config.get([:rich_media, :failure_backoff], 60_000) + Cachex.expire(:rich_media_cache, url, ttl) + e + end end end @@ -50,22 +61,21 @@ def ttl(data, url) do config :pleroma, :rich_media, ttl_setters: [MyModule] """ - @spec set_ttl_based_on_image({:ok, map()} | {:error, any()}, String.t()) :: - {:ok, map()} | {:error, any()} - def set_ttl_based_on_image({:ok, data}, url) do - with {:ok, nil} <- Cachex.ttl(:rich_media_cache, url), - {:ok, ttl} when is_number(ttl) <- get_ttl_from_image(data, url) do - Cachex.expire_at(:rich_media_cache, url, ttl * 1000) - {:ok, data} - else - _ -> - {:ok, data} - end - end + @spec set_ttl_based_on_image(map(), String.t()) :: + {:ok, Integer.t() | :noop} | {:error, :no_key} + def set_ttl_based_on_image(data, url) do + case get_ttl_from_image(data, url) do + {:ok, ttl} when is_number(ttl) -> + ttl = ttl * 1000 - def set_ttl_based_on_image({:error, _} = error, _) do - Logger.error("parsing error: #{inspect(error)}") - error + case Cachex.expire_at(:rich_media_cache, url, ttl) do + {:ok, true} -> {:ok, ttl} + {:ok, false} -> {:error, :no_key} + end + + _ -> + {:ok, :noop} + end end defp get_ttl_from_image(data, url) do diff --git a/test/web/rich_media/aws_signed_url_test.exs b/test/web/rich_media/aws_signed_url_test.exs index a21f3c935..1ceae1a31 100644 --- a/test/web/rich_media/aws_signed_url_test.exs +++ b/test/web/rich_media/aws_signed_url_test.exs @@ -55,7 +55,7 @@ test "s3 signed url is parsed and correct ttl is set for rich media" do Cachex.put(:rich_media_cache, url, metadata) - Pleroma.Web.RichMedia.Parser.set_ttl_based_on_image({:ok, metadata}, url) + Pleroma.Web.RichMedia.Parser.set_ttl_based_on_image(metadata, url) {:ok, cache_ttl} = Cachex.ttl(:rich_media_cache, url) From a11f23c130331d98db941c3edcc4d2dcf139bbc6 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Wed, 2 Sep 2020 15:45:47 +0300 Subject: [PATCH 073/460] user agent if Endpoint is not started yet --- lib/pleroma/application.ex | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 005aba50a..33b1e3872 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -22,13 +22,18 @@ def named_version, do: @name <> " " <> @version def repository, do: @repository def user_agent do - case Config.get([:http, :user_agent], :default) do - :default -> - info = "#{Pleroma.Web.base_url()} <#{Config.get([:instance, :email], "")}>" - named_version() <> "; " <> info + if Process.whereis(Pleroma.Web.Endpoint) do + case Config.get([:http, :user_agent], :default) do + :default -> + info = "#{Pleroma.Web.base_url()} <#{Config.get([:instance, :email], "")}>" + named_version() <> "; " <> info - custom -> - custom + custom -> + custom + end + else + # fallback, if endpoint is not started yet + "Pleroma Data Loader" end end From d48fc90978eee46c8fba00a80082d14fc31a0eec Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Wed, 2 Sep 2020 13:44:08 +0300 Subject: [PATCH 074/460] StatusView: Start fetching rich media cards as soon as possible --- CHANGELOG.md | 2 ++ .../web/mastodon_api/views/status_view.ex | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4424c060f..54685cfb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers +- Mastodon API: Timelines hanging for (`number of posts with links * rich media timeout`) in the worst case. + Reduced to just rich media timeout. ## [2.1.0] - 2020-08-28 diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 01b8bb6bb..3fe1967be 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -23,6 +23,17 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do import Pleroma.Web.ActivityPub.Visibility, only: [get_visibility: 1, visible_for_user?: 2] + # This is a naive way to do this, just spawning a process per activity + # to fetch the preview. However it should be fine considering + # pagination is restricted to 40 activities at a time + defp fetch_rich_media_for_activities(activities) do + Enum.each(activities, fn activity -> + spawn(fn -> + Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity) + end) + end) + end + # TODO: Add cached version. defp get_replied_to_activities([]), do: %{} @@ -80,6 +91,11 @@ def render("index.json", opts) do # To do: check AdminAPIControllerTest on the reasons behind nil activities in the list activities = Enum.filter(opts.activities, & &1) + + # Start fetching rich media before doing anything else, so that later calls to get the cards + # only block for timeout in the worst case, as opposed to + # length(activities_with_links) * timeout + fetch_rich_media_for_activities(activities) replied_to_activities = get_replied_to_activities(activities) parent_activities = From cbf7f0e02943f44a73f4418b8c6a8bada06331d8 Mon Sep 17 00:00:00 2001 From: Mark Felder <feld@FreeBSD.org> Date: Wed, 2 Sep 2020 09:09:13 -0500 Subject: [PATCH 075/460] Disallow password resets for deactivated accounts. Ensure all responses to password reset events are identical. --- CHANGELOG.md | 1 + .../controllers/auth_controller.ex | 14 ++++-------- lib/pleroma/web/twitter_api/twitter_api.ex | 13 ++--------- .../controllers/auth_controller_test.exs | 22 ++++++++++++++----- 4 files changed, 23 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54685cfb8..cdd5b94a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers - Mastodon API: Timelines hanging for (`number of posts with links * rich media timeout`) in the worst case. Reduced to just rich media timeout. +- Password resets no longer processed for deactivated accounts ## [2.1.0] - 2020-08-28 diff --git a/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex b/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex index 753b3db3e..9f09550e1 100644 --- a/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex @@ -59,17 +59,11 @@ def logout(conn, _) do def password_reset(conn, params) do nickname_or_email = params["email"] || params["nickname"] - with {:ok, _} <- TwitterAPI.password_reset(nickname_or_email) do - conn - |> put_status(:no_content) - |> json("") - else - {:error, "unknown user"} -> - send_resp(conn, :not_found, "") + TwitterAPI.password_reset(nickname_or_email) - {:error, _} -> - send_resp(conn, :bad_request, "") - end + conn + |> put_status(:no_content) + |> json("") end defp local_mastodon_root_path(conn) do diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex index 2294d9d0d..5d7948507 100644 --- a/lib/pleroma/web/twitter_api/twitter_api.ex +++ b/lib/pleroma/web/twitter_api/twitter_api.ex @@ -72,7 +72,7 @@ defp maybe_notify_admins(%User{} = account) do def password_reset(nickname_or_email) do with true <- is_binary(nickname_or_email), - %User{local: true, email: email} = user when is_binary(email) <- + %User{local: true, email: email, deactivated: false} = user when is_binary(email) <- User.get_by_nickname_or_email(nickname_or_email), {:ok, token_record} <- Pleroma.PasswordResetToken.create_token(user) do user @@ -81,17 +81,8 @@ def password_reset(nickname_or_email) do {:ok, :enqueued} else - false -> - {:error, "bad user identifier"} - - %User{local: true, email: nil} -> + _ -> {:ok, :noop} - - %User{local: false} -> - {:error, "remote user"} - - nil -> - {:error, "unknown user"} end end diff --git a/test/web/mastodon_api/controllers/auth_controller_test.exs b/test/web/mastodon_api/controllers/auth_controller_test.exs index a485f8e41..4fa95fce1 100644 --- a/test/web/mastodon_api/controllers/auth_controller_test.exs +++ b/test/web/mastodon_api/controllers/auth_controller_test.exs @@ -122,17 +122,27 @@ test "it doesn't fail when a user has no email", %{conn: conn} do {:ok, user: user} end - test "it returns 404 when user is not found", %{conn: conn, user: user} do + test "it returns 204 when user is not found", %{conn: conn, user: user} do conn = post(conn, "/auth/password?email=nonexisting_#{user.email}") - assert conn.status == 404 - assert conn.resp_body == "" + + assert conn + |> json_response(:no_content) end - test "it returns 400 when user is not local", %{conn: conn, user: user} do + test "it returns 204 when user is not local", %{conn: conn, user: user} do {:ok, user} = Repo.update(Ecto.Changeset.change(user, local: false)) conn = post(conn, "/auth/password?email=#{user.email}") - assert conn.status == 400 - assert conn.resp_body == "" + + assert conn + |> json_response(:no_content) + end + + test "it returns 204 when user is deactivated", %{conn: conn, user: user} do + {:ok, user} = Repo.update(Ecto.Changeset.change(user, deactivated: true, local: true)) + conn = post(conn, "/auth/password?email=#{user.email}") + + assert conn + |> json_response(:no_content) end end From 581f382e712dc50fa51d1ab211f13b8843dcb448 Mon Sep 17 00:00:00 2001 From: lain <lain@soykaf.club> Date: Wed, 2 Sep 2020 18:32:00 +0200 Subject: [PATCH 076/460] ListController: DRY up stuff. --- .../mastodon_api/controllers/list_controller.ex | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/lib/pleroma/web/mastodon_api/controllers/list_controller.ex b/lib/pleroma/web/mastodon_api/controllers/list_controller.ex index 4df13cb81..5daeaa780 100644 --- a/lib/pleroma/web/mastodon_api/controllers/list_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/list_controller.ex @@ -73,19 +73,6 @@ def add_to_list(%{assigns: %{list: list}, body_params: %{account_ids: account_id end # DELETE /api/v1/lists/:id/accounts - def remove_from_list( - %{assigns: %{list: list}, body_params: %{account_ids: account_ids}} = conn, - _ - ) do - Enum.each(account_ids, fn account_id -> - with %User{} = followed <- User.get_cached_by_id(account_id) do - Pleroma.List.unfollow(list, followed) - end - end) - - json(conn, %{}) - end - def remove_from_list( %{assigns: %{list: list}, params: %{account_ids: account_ids}} = conn, _ @@ -99,6 +86,10 @@ def remove_from_list( json(conn, %{}) end + def remove_from_list(%{body_params: params} = conn, _) do + remove_from_list(%{conn | params: params}, %{}) + end + defp list_by_id_and_user(%{assigns: %{user: user}, params: %{id: id}} = conn, _) do case Pleroma.List.get(id, user) do %Pleroma.List{} = list -> assign(conn, :list, list) From 5da367760748f7c4534b84dcb9286d715110472e Mon Sep 17 00:00:00 2001 From: lain <lain@soykaf.club> Date: Thu, 3 Sep 2020 11:40:17 +0200 Subject: [PATCH 077/460] Frontend mix task: Add tests. --- test/tasks/frontend_test.exs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/test/tasks/frontend_test.exs b/test/tasks/frontend_test.exs index 0ca2b9a28..022ae51be 100644 --- a/test/tasks/frontend_test.exs +++ b/test/tasks/frontend_test.exs @@ -48,11 +48,18 @@ test "it also works given a file" do } }) + folder = Path.join([@dir, "frontends", "pleroma", "fantasy"]) + previously_existing = Path.join([folder, "temp"]) + File.mkdir_p!(folder) + File.write!(previously_existing, "yey") + assert File.exists?(previously_existing) + capture_io(fn -> Frontend.run(["install", "pleroma", "--file", "test/fixtures/tesla_mock/frontend.zip"]) end) - assert File.exists?(Path.join([@dir, "frontends", "pleroma", "fantasy", "test.txt"])) + assert File.exists?(Path.join([folder, "test.txt"])) + refute File.exists?(previously_existing) end test "it downloads and unzips unknown frontends" do From 60c925380da644866836fa4a275f4d57eaaada04 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov <ivantashkinov@gmail.com> Date: Thu, 3 Sep 2020 20:13:29 +0300 Subject: [PATCH 078/460] [#2497] Added support for enforcing output format for media proxy preview, used for avatar_static & header_static (AccountView). --- lib/pleroma/helpers/uri_helper.ex | 1 + .../web/mastodon_api/views/account_view.ex | 4 ++-- lib/pleroma/web/media_proxy/media_proxy.ex | 15 +++++++++------ .../web/media_proxy/media_proxy_controller.ex | 11 ++++++++--- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/lib/pleroma/helpers/uri_helper.ex b/lib/pleroma/helpers/uri_helper.ex index 6d205a636..9c9e53447 100644 --- a/lib/pleroma/helpers/uri_helper.ex +++ b/lib/pleroma/helpers/uri_helper.ex @@ -15,6 +15,7 @@ def append_uri_params(uri, appended_params) do uri |> Map.put(:query, URI.encode_query(updated_params)) |> URI.to_string() + |> String.replace_suffix("?", "") end def maybe_add_base("/" <> uri, base), do: Path.join([base, uri]) diff --git a/lib/pleroma/web/mastodon_api/views/account_view.ex b/lib/pleroma/web/mastodon_api/views/account_view.ex index 7eb4e86fe..a811f81c2 100644 --- a/lib/pleroma/web/mastodon_api/views/account_view.ex +++ b/lib/pleroma/web/mastodon_api/views/account_view.ex @@ -182,9 +182,9 @@ defp do_render("show.json", %{user: user} = opts) do display_name = user.name || user.nickname avatar = User.avatar_url(user) |> MediaProxy.url() - avatar_static = User.avatar_url(user) |> MediaProxy.preview_url() + avatar_static = User.avatar_url(user) |> MediaProxy.preview_url(output_format: "jpeg") header = User.banner_url(user) |> MediaProxy.url() - header_static = User.banner_url(user) |> MediaProxy.preview_url() + header_static = User.banner_url(user) |> MediaProxy.preview_url(output_format: "jpeg") following_count = if !user.hide_follows_count or !user.hide_follows or opts[:for] == user do diff --git a/lib/pleroma/web/media_proxy/media_proxy.ex b/lib/pleroma/web/media_proxy/media_proxy.ex index 6695d49ce..4cbe1cf89 100644 --- a/lib/pleroma/web/media_proxy/media_proxy.ex +++ b/lib/pleroma/web/media_proxy/media_proxy.ex @@ -4,6 +4,7 @@ defmodule Pleroma.Web.MediaProxy do alias Pleroma.Config + alias Pleroma.Helpers.UriHelper alias Pleroma.Upload alias Pleroma.Web alias Pleroma.Web.MediaProxy.Invalidation @@ -58,9 +59,9 @@ def url_proxiable?(url) do # Note: routing all URLs to preview handler (even local and whitelisted). # Preview handler will call url/1 on decoded URLs, and applicable ones will detour media proxy. - def preview_url(url) do + def preview_url(url, preview_params \\ []) do if preview_enabled?() do - encode_preview_url(url) + encode_preview_url(url, preview_params) else url end @@ -116,10 +117,10 @@ def encode_url(url) do build_url(sig64, base64, filename(url)) end - def encode_preview_url(url) do + def encode_preview_url(url, preview_params \\ []) do {base64, sig64} = base64_sig64(url) - build_preview_url(sig64, base64, filename(url)) + build_preview_url(sig64, base64, filename(url), preview_params) end def decode_url(sig, url) do @@ -155,8 +156,10 @@ def build_url(sig_base64, url_base64, filename \\ nil) do proxy_url("proxy", sig_base64, url_base64, filename) end - def build_preview_url(sig_base64, url_base64, filename \\ nil) do - proxy_url("proxy/preview", sig_base64, url_base64, filename) + def build_preview_url(sig_base64, url_base64, filename \\ nil, preview_params \\ []) do + uri = proxy_url("proxy/preview", sig_base64, url_base64, filename) + + UriHelper.append_uri_params(uri, preview_params) end def verify_request_path_and_url( diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 961c73666..9dc76e928 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -67,9 +67,14 @@ defp handle_preview(conn, url) do end end - # TODO: find a workaround so avatar_static and header_static can work. - # Those only permit GIFs for animation, so we have to permit a way to - # allow those to get real static variants. + defp handle_preview( + "image/" <> _ = _content_type, + %{params: %{"output_format" => "jpeg"}} = conn, + url + ) do + handle_jpeg_preview(conn, url) + end + defp handle_preview("image/gif" = _content_type, conn, url) do mediaproxy_url = url |> MediaProxy.url() From 6141eb94ab034b5141a5c60b2814fb45b829c1ac Mon Sep 17 00:00:00 2001 From: Mark Felder <feld@FreeBSD.org> Date: Thu, 3 Sep 2020 12:40:42 -0500 Subject: [PATCH 079/460] Fetch preview requests through the MediaProxy. Separate connection options are not needed. Use a separate pool for preview requests --- config/config.exs | 10 +++++---- config/description.exs | 21 ------------------- .../web/media_proxy/media_proxy_controller.ex | 17 ++------------- 3 files changed, 8 insertions(+), 40 deletions(-) diff --git a/config/config.exs b/config/config.exs index 317ef84a9..d691753bd 100644 --- a/config/config.exs +++ b/config/config.exs @@ -445,10 +445,7 @@ enabled: false, thumbnail_max_width: 600, thumbnail_max_height: 600, - image_quality: 85, - proxy_opts: [ - head_request_max_read_duration: 5_000 - ] + image_quality: 85 config :pleroma, :chat, enabled: true @@ -761,6 +758,11 @@ max_waiting: 10, timeout: 10_000 ], + preview: [ + size: 50, + max_waiting: 10, + timeout: 10_000 + ], upload: [ size: 25, max_waiting: 5, diff --git a/config/description.exs b/config/description.exs index 868b89d29..73333d6e6 100644 --- a/config/description.exs +++ b/config/description.exs @@ -1978,27 +1978,6 @@ key: :image_quality, type: :integer, description: "Quality of the output. Ranges from 0 (min quality) to 100 (max quality)." - }, - %{ - key: :proxy_opts, - type: :keyword, - description: "Media proxy options", - suggestions: [ - head_request_max_read_duration: 5_000 - ], - children: [ - %{ - key: :head_request_max_read_duration, - type: :integer, - description: "Timeout (in milliseconds) of HEAD request to remote URI." - } - ] - }, - %{ - key: :whitelist, - type: {:list, :string}, - description: "List of hosts with scheme to bypass the mediaproxy", - suggestions: ["http://example.com"] } ] }, diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 961c73666..b1f00fa0c 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -33,8 +33,7 @@ def remote(conn, %{"sig" => sig64, "url" => url64}) do def preview(conn, %{"sig" => sig64, "url" => url64}) do with {_, true} <- {:enabled, MediaProxy.preview_enabled?()}, - {:ok, url} <- MediaProxy.decode_url(sig64, url64), - :ok <- MediaProxy.verify_request_path_and_url(conn, url) do + {:ok, url} <- MediaProxy.decode_url(sig64, url64) do handle_preview(conn, url) else {:enabled, false} -> @@ -50,9 +49,7 @@ def preview(conn, %{"sig" => sig64, "url" => url64}) do defp handle_preview(conn, url) do with {:ok, %{status: status} = head_response} when status in 200..299 <- - Tesla.head(url, - opts: [adapter: [timeout: preview_head_request_timeout(), follow_redirect: true]] - ) do + Pleroma.HTTP.request("head", MediaProxy.url(url), [], [], [adapter: [pool: :preview]]) do content_type = Tesla.get_header(head_response, "content-type") handle_preview(content_type, conn, url) else @@ -172,17 +169,7 @@ defp thumbnail_max_dimensions(params) do {thumbnail_max_width, thumbnail_max_height} end - defp preview_head_request_timeout do - Keyword.get(media_preview_proxy_opts(), :head_request_max_read_duration) || - Keyword.get(media_proxy_opts(), :max_read_duration) || - ReverseProxy.max_read_duration_default() - end - defp media_proxy_opts do Config.get([:media_proxy, :proxy_opts], []) end - - defp media_preview_proxy_opts do - Config.get([:media_preview_proxy, :proxy_opts], []) - end end From b529616e110b3d487f1f2c462791ceabe8f1baf3 Mon Sep 17 00:00:00 2001 From: Mark Felder <feld@FreeBSD.org> Date: Thu, 3 Sep 2020 15:08:12 -0500 Subject: [PATCH 080/460] Increase pool and timeout for preview so it catches slow media pool responses --- config/config.exs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/config.exs b/config/config.exs index d691753bd..b92d3ccbb 100644 --- a/config/config.exs +++ b/config/config.exs @@ -760,8 +760,8 @@ ], preview: [ size: 50, - max_waiting: 10, - timeout: 10_000 + max_waiting: 20, + timeout: 15_000 ], upload: [ size: 25, From f25b0e87f3dd73e02c954c5baab3c52becdd9c9e Mon Sep 17 00:00:00 2001 From: Mark Felder <feld@FreeBSD.org> Date: Thu, 3 Sep 2020 15:28:57 -0500 Subject: [PATCH 081/460] URL passed to helper is already MediaProxy Set :preview pool on the request --- lib/pleroma/helpers/media_helper.ex | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index 9bd815c26..cfb091f82 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -12,8 +12,7 @@ defmodule Pleroma.Helpers.MediaHelper do def image_resize(url, options) do with executable when is_binary(executable) <- System.find_executable("convert"), {:ok, args} <- prepare_image_resize_args(options), - url = Pleroma.Web.MediaProxy.url(url), - {:ok, env} <- Pleroma.HTTP.get(url), + {:ok, env} <- Pleroma.HTTP.get(url, [], [adapter: [pool: :preview]]), {:ok, fifo_path} <- mkfifo() do args = List.flatten([fifo_path, args]) run_fifo(fifo_path, env, executable, args) @@ -61,8 +60,7 @@ defp prepare_image_resize_args(_), do: {:error, :missing_options} def video_framegrab(url) do with executable when is_binary(executable) <- System.find_executable("ffmpeg"), - url = Pleroma.Web.MediaProxy.url(url), - {:ok, env} <- Pleroma.HTTP.get(url), + {:ok, env} <- Pleroma.HTTP.get(url, [], [adapter: [pool: :preview]]), {:ok, fifo_path} <- mkfifo(), args = [ "-y", From d34fe2840d969c30b393cfb73e34b6301027c776 Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Thu, 3 Sep 2020 23:15:22 +0300 Subject: [PATCH 082/460] HTTP: radically simplify pool checkin/checkout Use a custom tesla middleware instead of adapter helper function + custom redirect middleware. This will also fix "Client died before releasing the connection" messages when the request pool is overloaded. Since the checkout is now done after passing ConcurrentLimiter. This is technically less efficient, since the connection needs to be checked in/out every time the middleware is left or entered respectively. But I don't think the nanoseconds we might lose on redirects to the same host are worth the complexity. --- lib/pleroma/http/adapter_helper.ex | 4 - lib/pleroma/http/adapter_helper/gun.ex | 9 -- lib/pleroma/http/adapter_helper/hackney.ex | 3 - lib/pleroma/http/http.ex | 33 +++--- .../tesla/middleware/connection_pool.ex | 35 ++++++ .../tesla/middleware/follow_redirects.ex | 110 ------------------ 6 files changed, 48 insertions(+), 146 deletions(-) create mode 100644 lib/pleroma/tesla/middleware/connection_pool.ex delete mode 100644 lib/pleroma/tesla/middleware/follow_redirects.ex diff --git a/lib/pleroma/http/adapter_helper.ex b/lib/pleroma/http/adapter_helper.ex index 0728cbaa2..d72297323 100644 --- a/lib/pleroma/http/adapter_helper.ex +++ b/lib/pleroma/http/adapter_helper.ex @@ -19,7 +19,6 @@ defmodule Pleroma.HTTP.AdapterHelper do | {Connection.proxy_type(), Connection.host(), pos_integer()} @callback options(keyword(), URI.t()) :: keyword() - @callback get_conn(URI.t(), keyword()) :: {:ok, term()} | {:error, term()} @spec format_proxy(String.t() | tuple() | nil) :: proxy() | nil def format_proxy(nil), do: nil @@ -47,9 +46,6 @@ def options(%URI{} = uri, opts \\ []) do |> adapter_helper().options(uri) end - @spec get_conn(URI.t(), keyword()) :: {:ok, keyword()} | {:error, atom()} - def get_conn(uri, opts), do: adapter_helper().get_conn(uri, opts) - defp adapter, do: Application.get_env(:tesla, :adapter) defp adapter_helper do diff --git a/lib/pleroma/http/adapter_helper/gun.ex b/lib/pleroma/http/adapter_helper/gun.ex index 02e20f2d1..4a967d8f2 100644 --- a/lib/pleroma/http/adapter_helper/gun.ex +++ b/lib/pleroma/http/adapter_helper/gun.ex @@ -6,7 +6,6 @@ defmodule Pleroma.HTTP.AdapterHelper.Gun do @behaviour Pleroma.HTTP.AdapterHelper alias Pleroma.Config - alias Pleroma.Gun.ConnectionPool alias Pleroma.HTTP.AdapterHelper require Logger @@ -57,14 +56,6 @@ def pool_timeout(pool) do Config.get([:pools, pool, :timeout], default) end - @spec get_conn(URI.t(), keyword()) :: {:ok, keyword()} | {:error, atom()} - def get_conn(uri, opts) do - case ConnectionPool.get_conn(uri, opts) do - {:ok, conn_pid} -> {:ok, Keyword.merge(opts, conn: conn_pid, close_conn: false)} - err -> err - end - end - @prefix Pleroma.Gun.ConnectionPool def limiter_setup do wait = Config.get([:connections_pool, :connection_acquisition_wait]) diff --git a/lib/pleroma/http/adapter_helper/hackney.ex b/lib/pleroma/http/adapter_helper/hackney.ex index cd569422b..f47a671ad 100644 --- a/lib/pleroma/http/adapter_helper/hackney.ex +++ b/lib/pleroma/http/adapter_helper/hackney.ex @@ -23,7 +23,4 @@ def options(connection_opts \\ [], %URI{} = uri) do end defp add_scheme_opts(opts, _), do: opts - - @spec get_conn(URI.t(), keyword()) :: {:ok, keyword()} - def get_conn(_uri, opts), do: {:ok, opts} end diff --git a/lib/pleroma/http/http.ex b/lib/pleroma/http/http.ex index b37b3fa89..7bc73f4a0 100644 --- a/lib/pleroma/http/http.ex +++ b/lib/pleroma/http/http.ex @@ -62,28 +62,21 @@ def request(method, url, body, headers, options) when is_binary(url) do uri = URI.parse(url) adapter_opts = AdapterHelper.options(uri, options[:adapter] || []) - case AdapterHelper.get_conn(uri, adapter_opts) do - {:ok, adapter_opts} -> - options = put_in(options[:adapter], adapter_opts) - params = options[:params] || [] - request = build_request(method, headers, options, url, body, params) + options = put_in(options[:adapter], adapter_opts) + params = options[:params] || [] + request = build_request(method, headers, options, url, body, params) - adapter = Application.get_env(:tesla, :adapter) + adapter = Application.get_env(:tesla, :adapter) - client = Tesla.client(adapter_middlewares(adapter), adapter) + client = Tesla.client(adapter_middlewares(adapter), adapter) - maybe_limit( - fn -> - request(client, request) - end, - adapter, - adapter_opts - ) - - # Connection release is handled in a custom FollowRedirects middleware - err -> - err - end + maybe_limit( + fn -> + request(client, request) + end, + adapter, + adapter_opts + ) end @spec request(Client.t(), keyword()) :: {:ok, Env.t()} | {:error, any()} @@ -110,7 +103,7 @@ defp maybe_limit(fun, _, _) do end defp adapter_middlewares(Tesla.Adapter.Gun) do - [Pleroma.HTTP.Middleware.FollowRedirects] + [Tesla.Middleware.FollowRedirects, Pleroma.Tesla.Middleware.ConnectionPool] end defp adapter_middlewares(_), do: [] diff --git a/lib/pleroma/tesla/middleware/connection_pool.ex b/lib/pleroma/tesla/middleware/connection_pool.ex new file mode 100644 index 000000000..a435ab4cc --- /dev/null +++ b/lib/pleroma/tesla/middleware/connection_pool.ex @@ -0,0 +1,35 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Tesla.Middleware.ConnectionPool do + @moduledoc """ + Middleware to get/release connections from `Pleroma.Gun.ConnectionPool` + """ + + @behaviour Tesla.Middleware + + alias Pleroma.Gun.ConnectionPool + + @impl Tesla.Middleware + def call(%Tesla.Env{url: url, opts: opts} = env, next, _) do + uri = URI.parse(url) + + case ConnectionPool.get_conn(uri, opts[:adapter]) do + {:ok, conn_pid} -> + adapter_opts = Keyword.merge(opts[:adapter], conn: conn_pid, close_conn: false) + opts = Keyword.put(opts, :adapter, adapter_opts) + env = %{env | opts: opts} + res = Tesla.run(env, next) + + unless opts[:adapter][:body_as] == :chunks do + ConnectionPool.release_conn(conn_pid) + end + + res + + err -> + err + end + end +end diff --git a/lib/pleroma/tesla/middleware/follow_redirects.ex b/lib/pleroma/tesla/middleware/follow_redirects.ex deleted file mode 100644 index 5a7032215..000000000 --- a/lib/pleroma/tesla/middleware/follow_redirects.ex +++ /dev/null @@ -1,110 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2015-2020 Tymon Tobolski <https://github.com/teamon/tesla/blob/master/lib/tesla/middleware/follow_redirects.ex> -# Copyright © 2020 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.HTTP.Middleware.FollowRedirects do - @moduledoc """ - Pool-aware version of https://github.com/teamon/tesla/blob/master/lib/tesla/middleware/follow_redirects.ex - - Follow 3xx redirects - ## Options - - `:max_redirects` - limit number of redirects (default: `5`) - """ - - alias Pleroma.Gun.ConnectionPool - - @behaviour Tesla.Middleware - - @max_redirects 5 - @redirect_statuses [301, 302, 303, 307, 308] - - @impl Tesla.Middleware - def call(env, next, opts \\ []) do - max = Keyword.get(opts, :max_redirects, @max_redirects) - - redirect(env, next, max) - end - - defp redirect(env, next, left) do - opts = env.opts[:adapter] - - case Tesla.run(env, next) do - {:ok, %{status: status} = res} when status in @redirect_statuses and left > 0 -> - release_conn(opts) - - case Tesla.get_header(res, "location") do - nil -> - {:ok, res} - - location -> - location = parse_location(location, res) - - case get_conn(location, opts) do - {:ok, opts} -> - %{env | opts: Keyword.put(env.opts, :adapter, opts)} - |> new_request(res.status, location) - |> redirect(next, left - 1) - - e -> - e - end - end - - {:ok, %{status: status}} when status in @redirect_statuses -> - release_conn(opts) - {:error, {__MODULE__, :too_many_redirects}} - - {:error, _} = e -> - release_conn(opts) - e - - other -> - unless opts[:body_as] == :chunks do - release_conn(opts) - end - - other - end - end - - defp get_conn(location, opts) do - uri = URI.parse(location) - - case ConnectionPool.get_conn(uri, opts) do - {:ok, conn} -> - {:ok, Keyword.merge(opts, conn: conn)} - - e -> - e - end - end - - defp release_conn(opts) do - ConnectionPool.release_conn(opts[:conn]) - end - - # The 303 (See Other) redirect was added in HTTP/1.1 to indicate that the originally - # requested resource is not available, however a related resource (or another redirect) - # available via GET is available at the specified location. - # https://tools.ietf.org/html/rfc7231#section-6.4.4 - defp new_request(env, 303, location), do: %{env | url: location, method: :get, query: []} - - # The 307 (Temporary Redirect) status code indicates that the target - # resource resides temporarily under a different URI and the user agent - # MUST NOT change the request method (...) - # https://tools.ietf.org/html/rfc7231#section-6.4.7 - defp new_request(env, 307, location), do: %{env | url: location} - - defp new_request(env, _, location), do: %{env | url: location, query: []} - - defp parse_location("https://" <> _rest = location, _env), do: location - defp parse_location("http://" <> _rest = location, _env), do: location - - defp parse_location(location, env) do - env.url - |> URI.parse() - |> URI.merge(location) - |> URI.to_string() - end -end From bce22937dc5c7545b9f104daf4b8ef9afaa65e75 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> Date: Fri, 4 Sep 2020 09:15:58 +0200 Subject: [PATCH 083/460] mix.lock: Bump fast_html This update fixes an incorrect push to Hex that reverted the gcc-10 fix --- mix.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mix.lock b/mix.lock index afb4b06db..874ea9215 100644 --- a/mix.lock +++ b/mix.lock @@ -42,7 +42,7 @@ "ex_machina": {:hex, :ex_machina, "2.4.0", "09a34c5d371bfb5f78399029194a8ff67aff340ebe8ba19040181af35315eabb", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm", "a20bc9ddc721b33ea913b93666c5d0bdca5cbad7a67540784ae277228832d72c"}, "ex_syslogger": {:hex, :ex_syslogger, "1.5.2", "72b6aa2d47a236e999171f2e1ec18698740f40af0bd02c8c650bf5f1fd1bac79", [:mix], [{:poison, ">= 1.5.0", [hex: :poison, repo: "hexpm", optional: true]}, {:syslog, "~> 1.1.0", [hex: :syslog, repo: "hexpm", optional: false]}], "hexpm", "ab9fab4136dbc62651ec6f16fa4842f10cf02ab4433fa3d0976c01be99398399"}, "excoveralls": {:hex, :excoveralls, "0.13.1", "b9f1697f7c9e0cfe15d1a1d737fb169c398803ffcbc57e672aa007e9fd42864c", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "b4bb550e045def1b4d531a37fb766cbbe1307f7628bf8f0414168b3f52021cce"}, - "fast_html": {:hex, :fast_html, "2.0.3", "27289dea6c3a22952191a2d4e07f546c0de8a351484782c2e797dbae06a5dc8a", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "17d41fa8afe4e912ffe74e13b87ddb085382cd2b7393636d338495c9a8a7b518"}, + "fast_html": {:hex, :fast_html, "2.0.4", "4910ee49f2f6b19692e3bf30bf97f1b6b7dac489cd6b0f34cd0fe3042c56ba30", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "3bb49d541dfc02ad5e425904f53376d758c09f89e521afc7d2b174b3227761ea"}, "fast_sanitize": {:hex, :fast_sanitize, "0.2.2", "3cbbaebaea6043865dfb5b4ecb0f1af066ad410a51470e353714b10c42007b81", [:mix], [{:fast_html, "~> 2.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "69f204db9250afa94a0d559d9110139850f57de2b081719fbafa1e9a89e94466"}, "flake_id": {:hex, :flake_id, "0.1.0", "7716b086d2e405d09b647121a166498a0d93d1a623bead243e1f74216079ccb3", [:mix], [{:base62, "~> 1.2", [hex: :base62, repo: "hexpm", optional: false]}, {:ecto, ">= 2.0.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "31fc8090fde1acd267c07c36ea7365b8604055f897d3a53dd967658c691bd827"}, "floki": {:hex, :floki, "0.27.0", "6b29a14283f1e2e8fad824bc930eaa9477c462022075df6bea8f0ad811c13599", [:mix], [{:html_entities, "~> 0.5.0", [hex: :html_entities, repo: "hexpm", optional: false]}], "hexpm", "583b8c13697c37179f1f82443bcc7ad2f76fbc0bf4c186606eebd658f7f2631b"}, From 8bd2b6eb138ace3408a03c78ecc339fc35b19f10 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Fri, 4 Sep 2020 14:24:15 +0300 Subject: [PATCH 084/460] temp hackney fix --- lib/pleroma/http/adapter_helper/hackney.ex | 4 ++++ mix.exs | 5 ++++- mix.lock | 14 +++++++------- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/lib/pleroma/http/adapter_helper/hackney.ex b/lib/pleroma/http/adapter_helper/hackney.ex index f47a671ad..42e3acfec 100644 --- a/lib/pleroma/http/adapter_helper/hackney.ex +++ b/lib/pleroma/http/adapter_helper/hackney.ex @@ -22,5 +22,9 @@ def options(connection_opts \\ [], %URI{} = uri) do |> Pleroma.HTTP.AdapterHelper.maybe_add_proxy(proxy) end + defp add_scheme_opts(opts, %URI{scheme: "https"}) do + Keyword.put(opts, :ssl_options, versions: [:"tlsv1.2", :"tlsv1.1", :tlsv1]) + end + defp add_scheme_opts(opts, _), do: opts end diff --git a/mix.exs b/mix.exs index 4de0c78db..f734e4f61 100644 --- a/mix.exs +++ b/mix.exs @@ -195,7 +195,10 @@ defp deps do {:ex_machina, "~> 2.4", only: :test}, {:credo, "~> 1.4", only: [:dev, :test], runtime: false}, {:mock, "~> 0.3.5", only: :test}, - {:excoveralls, "~> 0.13.1", only: :test}, + # temporary downgrade for excoveralls, hackney and httpoison - until hackney max_connections bug will be fixed + {:excoveralls, "0.12.3", only: :test}, + {:hackney, "1.15.2"}, + {:httpoison, "1.6.2"}, {:mox, "~> 0.5", only: :test}, {:websocket_client, git: "https://github.com/jeremyong/websocket_client.git", only: :test} ] ++ oauth_deps() diff --git a/mix.lock b/mix.lock index 874ea9215..b97dd6342 100644 --- a/mix.lock +++ b/mix.lock @@ -11,7 +11,7 @@ "calendar": {:hex, :calendar, "1.0.0", "f52073a708528482ec33d0a171954ca610fe2bd28f1e871f247dc7f1565fa807", [:mix], [{:tzdata, "~> 0.5.20 or ~> 0.1.201603 or ~> 1.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "990e9581920c82912a5ee50e62ff5ef96da6b15949a2ee4734f935fdef0f0a6f"}, "captcha": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/elixir-captcha.git", "e0f16822d578866e186a0974d65ad58cddc1e2ab", [ref: "e0f16822d578866e186a0974d65ad58cddc1e2ab"]}, "castore": {:hex, :castore, "0.1.7", "1ca19eee705cde48c9e809e37fdd0730510752cc397745e550f6065a56a701e9", [:mix], [], "hexpm", "a2ae2c13d40e9c308387f1aceb14786dca019ebc2a11484fb2a9f797ea0aa0d8"}, - "certifi": {:hex, :certifi, "2.5.2", "b7cfeae9d2ed395695dd8201c57a2d019c0c43ecaf8b8bcb9320b40d6662f340", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "3b3b5f36493004ac3455966991eaf6e768ce9884693d9968055aeeeb1e575040"}, + "certifi": {:hex, :certifi, "2.5.1", "867ce347f7c7d78563450a18a6a28a8090331e77fa02380b4a21962a65d36ee5", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "805abd97539caf89ec6d4732c91e62ba9da0cda51ac462380bbd28ee697a8c42"}, "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"}, "comeonin": {:hex, :comeonin, "5.3.1", "7fe612b739c78c9c1a75186ef2d322ce4d25032d119823269d0aa1e2f1e20025", [:mix], [], "hexpm", "d6222483060c17f0977fad1b7401ef0c5863c985a64352755f366aee3799c245"}, "concurrent_limiter": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/concurrent_limiter.git", "55e92f84b4ed531bd487952a71040a9c69dc2807", [ref: "55e92f84b4ed531bd487952a71040a9c69dc2807"]}, @@ -41,7 +41,7 @@ "ex_doc": {:hex, :ex_doc, "0.22.2", "03a2a58bdd2ba0d83d004507c4ee113b9c521956938298eba16e55cc4aba4a6c", [:mix], [{:earmark_parser, "~> 1.4.0", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm", "cf60e1b3e2efe317095b6bb79651f83a2c1b3edcb4d319c421d7fcda8b3aff26"}, "ex_machina": {:hex, :ex_machina, "2.4.0", "09a34c5d371bfb5f78399029194a8ff67aff340ebe8ba19040181af35315eabb", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm", "a20bc9ddc721b33ea913b93666c5d0bdca5cbad7a67540784ae277228832d72c"}, "ex_syslogger": {:hex, :ex_syslogger, "1.5.2", "72b6aa2d47a236e999171f2e1ec18698740f40af0bd02c8c650bf5f1fd1bac79", [:mix], [{:poison, ">= 1.5.0", [hex: :poison, repo: "hexpm", optional: true]}, {:syslog, "~> 1.1.0", [hex: :syslog, repo: "hexpm", optional: false]}], "hexpm", "ab9fab4136dbc62651ec6f16fa4842f10cf02ab4433fa3d0976c01be99398399"}, - "excoveralls": {:hex, :excoveralls, "0.13.1", "b9f1697f7c9e0cfe15d1a1d737fb169c398803ffcbc57e672aa007e9fd42864c", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "b4bb550e045def1b4d531a37fb766cbbe1307f7628bf8f0414168b3f52021cce"}, + "excoveralls": {:hex, :excoveralls, "0.12.3", "2142be7cb978a3ae78385487edda6d1aff0e482ffc6123877bb7270a8ffbcfe0", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "568a3e616c264283f5dea5b020783ae40eef3f7ee2163f7a67cbd7b35bcadada"}, "fast_html": {:hex, :fast_html, "2.0.4", "4910ee49f2f6b19692e3bf30bf97f1b6b7dac489cd6b0f34cd0fe3042c56ba30", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "3bb49d541dfc02ad5e425904f53376d758c09f89e521afc7d2b174b3227761ea"}, "fast_sanitize": {:hex, :fast_sanitize, "0.2.2", "3cbbaebaea6043865dfb5b4ecb0f1af066ad410a51470e353714b10c42007b81", [:mix], [{:fast_html, "~> 2.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "69f204db9250afa94a0d559d9110139850f57de2b081719fbafa1e9a89e94466"}, "flake_id": {:hex, :flake_id, "0.1.0", "7716b086d2e405d09b647121a166498a0d93d1a623bead243e1f74216079ccb3", [:mix], [{:base62, "~> 1.2", [hex: :base62, repo: "hexpm", optional: false]}, {:ecto, ">= 2.0.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "31fc8090fde1acd267c07c36ea7365b8604055f897d3a53dd967658c691bd827"}, @@ -51,12 +51,12 @@ "gen_state_machine": {:hex, :gen_state_machine, "2.0.5", "9ac15ec6e66acac994cc442dcc2c6f9796cf380ec4b08267223014be1c728a95", [:mix], [], "hexpm"}, "gettext": {:hex, :gettext, "0.18.0", "406d6b9e0e3278162c2ae1de0a60270452c553536772167e2d701f028116f870", [:mix], [], "hexpm", "c3f850be6367ebe1a08616c2158affe4a23231c70391050bf359d5f92f66a571"}, "gun": {:git, "https://github.com/ninenines/gun.git", "921c47146b2d9567eac7e9a4d2ccc60fffd4f327", [ref: "921c47146b2d9567eac7e9a4d2ccc60fffd4f327"]}, - "hackney": {:hex, :hackney, "1.16.0", "5096ac8e823e3a441477b2d187e30dd3fff1a82991a806b2003845ce72ce2d84", [:rebar3], [{:certifi, "2.5.2", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.1", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.0", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.6", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "3bf0bebbd5d3092a3543b783bf065165fa5d3ad4b899b836810e513064134e18"}, + "hackney": {:hex, :hackney, "1.15.2", "07e33c794f8f8964ee86cebec1a8ed88db5070e52e904b8f12209773c1036085", [:rebar3], [{:certifi, "2.5.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.5", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "e0100f8ef7d1124222c11ad362c857d3df7cb5f4204054f9f0f4a728666591fc"}, "html_entities": {:hex, :html_entities, "0.5.1", "1c9715058b42c35a2ab65edc5b36d0ea66dd083767bef6e3edb57870ef556549", [:mix], [], "hexpm", "30efab070904eb897ff05cd52fa61c1025d7f8ef3a9ca250bc4e6513d16c32de"}, "html_sanitize_ex": {:hex, :html_sanitize_ex, "1.3.0", "f005ad692b717691203f940c686208aa3d8ffd9dd4bb3699240096a51fa9564e", [:mix], [{:mochiweb, "~> 2.15", [hex: :mochiweb, repo: "hexpm", optional: false]}], "hexpm"}, "http_signatures": {:hex, :http_signatures, "0.1.0", "4e4b501a936dbf4cb5222597038a89ea10781776770d2e185849fa829686b34c", [:mix], [], "hexpm", "f8a7b3731e3fd17d38fa6e343fcad7b03d6874a3b0a108c8568a71ed9c2cf824"}, - "httpoison": {:hex, :httpoison, "1.7.0", "abba7d086233c2d8574726227b6c2c4f6e53c4deae7fe5f6de531162ce9929a0", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "975cc87c845a103d3d1ea1ccfd68a2700c211a434d8428b10c323dc95dc5b980"}, - "idna": {:hex, :idna, "6.0.1", "1d038fb2e7668ce41fbf681d2c45902e52b3cb9e9c77b55334353b222c2ee50c", [:rebar3], [{:unicode_util_compat, "0.5.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "a02c8a1c4fd601215bb0b0324c8a6986749f807ce35f25449ec9e69758708122"}, + "httpoison": {:hex, :httpoison, "1.6.2", "ace7c8d3a361cebccbed19c283c349b3d26991eff73a1eaaa8abae2e3c8089b6", [:mix], [{:hackney, "~> 1.15 and >= 1.15.2", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "aa2c74bd271af34239a3948779612f87df2422c2fdcfdbcec28d9c105f0773fe"}, + "idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "4bdd305eb64e18b0273864920695cb18d7a2021f31a11b9c5fbcd9a253f936e2"}, "inet_cidr": {:hex, :inet_cidr, "1.0.4", "a05744ab7c221ca8e395c926c3919a821eb512e8f36547c062f62c4ca0cf3d6e", [:mix], [], "hexpm", "64a2d30189704ae41ca7dbdd587f5291db5d1dda1414e0774c29ffc81088c1bc"}, "jason": {:hex, :jason, "1.2.1", "12b22825e22f468c02eb3e4b9985f3d0cb8dc40b9bd704730efa11abd2708c44", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "b659b8571deedf60f79c5a608e15414085fa141344e2716fbd6988a084b5f993"}, "joken": {:hex, :joken, "2.2.0", "2daa1b12be05184aff7b5ace1d43ca1f81345962285fff3f88db74927c954d3a", [:mix], [{:jose, "~> 1.9", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "b4f92e30388206f869dd25d1af628a1d99d7586e5cf0672f64d4df84c4d2f5e9"}, @@ -105,7 +105,7 @@ "recon": {:hex, :recon, "2.5.1", "430ffa60685ac1efdfb1fe4c97b8767c92d0d92e6e7c3e8621559ba77598678a", [:mix, :rebar3], [], "hexpm", "5721c6b6d50122d8f68cccac712caa1231f97894bab779eff5ff0f886cb44648"}, "remote_ip": {:git, "https://git.pleroma.social/pleroma/remote_ip.git", "b647d0deecaa3acb140854fe4bda5b7e1dc6d1c8", [ref: "b647d0deecaa3acb140854fe4bda5b7e1dc6d1c8"]}, "sleeplocks": {:hex, :sleeplocks, "1.1.1", "3d462a0639a6ef36cc75d6038b7393ae537ab394641beb59830a1b8271faeed3", [:rebar3], [], "hexpm", "84ee37aeff4d0d92b290fff986d6a95ac5eedf9b383fadfd1d88e9b84a1c02e1"}, - "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.6", "cf344f5692c82d2cd7554f5ec8fd961548d4fd09e7d22f5b62482e5aeaebd4b0", [:make, :mix, :rebar3], [], "hexpm", "bdb0d2471f453c88ff3908e7686f86f9be327d065cc1ec16fa4540197ea04680"}, + "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.5", "6eaf7ad16cb568bb01753dbbd7a95ff8b91c7979482b95f38443fe2c8852a79b", [:make, :mix, :rebar3], [], "hexpm", "13104d7897e38ed7f044c4de953a6c28597d1c952075eb2e328bc6d6f2bfc496"}, "sweet_xml": {:hex, :sweet_xml, "0.6.6", "fc3e91ec5dd7c787b6195757fbcf0abc670cee1e4172687b45183032221b66b8", [:mix], [], "hexpm", "2e1ec458f892ffa81f9f8386e3f35a1af6db7a7a37748a64478f13163a1f3573"}, "swoosh": {:hex, :swoosh, "1.0.0", "c547cfc83f30e12d5d1fdcb623d7de2c2e29a5becfc68bf8f42ba4d23d2c2756", [:mix], [{:cowboy, "~> 1.0.1 or ~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}], "hexpm", "b3b08e463f876cb6167f7168e9ad99a069a724e124bcee61847e0e1ed13f4a0d"}, "syslog": {:hex, :syslog, "1.1.0", "6419a232bea84f07b56dc575225007ffe34d9fdc91abe6f1b2f254fd71d8efc2", [:rebar3], [], "hexpm", "4c6a41373c7e20587be33ef841d3de6f3beba08519809329ecc4d27b15b659e1"}, @@ -115,7 +115,7 @@ "trailing_format_plug": {:hex, :trailing_format_plug, "0.0.7", "64b877f912cf7273bed03379936df39894149e35137ac9509117e59866e10e45", [:mix], [{:plug, "> 0.12.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "bd4fde4c15f3e993a999e019d64347489b91b7a9096af68b2bdadd192afa693f"}, "tzdata": {:hex, :tzdata, "1.0.3", "73470ad29dde46e350c60a66e6b360d3b99d2d18b74c4c349dbebbc27a09a3eb", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "a6e1ee7003c4d04ecbd21dd3ec690d4c6662db5d3bbdd7262d53cdf5e7c746c1"}, "ueberauth": {:hex, :ueberauth, "0.6.3", "d42ace28b870e8072cf30e32e385579c57b9cc96ec74fa1f30f30da9c14f3cc0", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "afc293d8a1140d6591b53e3eaf415ca92842cb1d32fad3c450c6f045f7f91b60"}, - "unicode_util_compat": {:hex, :unicode_util_compat, "0.5.0", "8516502659002cec19e244ebd90d312183064be95025a319a6c7e89f4bccd65b", [:rebar3], [], "hexpm", "d48d002e15f5cc105a696cf2f1bbb3fc72b4b770a184d8420c8db20da2674b38"}, + "unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm", "1d1848c40487cdb0b30e8ed975e34e025860c02e419cb615d255849f3427439d"}, "unsafe": {:hex, :unsafe, "1.0.1", "a27e1874f72ee49312e0a9ec2e0b27924214a05e3ddac90e91727bc76f8613d8", [:mix], [], "hexpm", "6c7729a2d214806450d29766abc2afaa7a2cbecf415be64f36a6691afebb50e5"}, "web_push_encryption": {:hex, :web_push_encryption, "0.3.0", "598b5135e696fd1404dc8d0d7c0fa2c027244a4e5d5e5a98ba267f14fdeaabc8", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:jose, "~> 1.8", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "f10bdd1afe527ede694749fb77a2f22f146a51b054c7fa541c9fd920fba7c875"}, "websocket_client": {:git, "https://github.com/jeremyong/websocket_client.git", "9a6f65d05ebf2725d62fb19262b21f1805a59fbf", []}, From 473458b0fbecb05121b235f525aefcef34f0409e Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Fri, 4 Sep 2020 14:45:30 +0300 Subject: [PATCH 085/460] fix for ReverseProxy --- lib/pleroma/reverse_proxy/client/hackney.ex | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/pleroma/reverse_proxy/client/hackney.ex b/lib/pleroma/reverse_proxy/client/hackney.ex index e84118a90..ad988fac3 100644 --- a/lib/pleroma/reverse_proxy/client/hackney.ex +++ b/lib/pleroma/reverse_proxy/client/hackney.ex @@ -7,6 +7,7 @@ defmodule Pleroma.ReverseProxy.Client.Hackney do @impl true def request(method, url, headers, body, opts \\ []) do + opts = Keyword.put(opts, :ssl_options, versions: [:"tlsv1.2", :"tlsv1.1", :tlsv1]) :hackney.request(method, url, headers, body, opts) end From 173b04df48abf1b40aa0aa4ba5de50c370687f56 Mon Sep 17 00:00:00 2001 From: Farhan Khan <farhan@farhan.codes> Date: Fri, 4 Sep 2020 18:03:58 +0000 Subject: [PATCH 086/460] Added cmake --- docs/installation/freebsd_en.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation/freebsd_en.md b/docs/installation/freebsd_en.md index 130d68766..ca2575d9b 100644 --- a/docs/installation/freebsd_en.md +++ b/docs/installation/freebsd_en.md @@ -7,7 +7,7 @@ This document was written for FreeBSD 12.1, but should be work on future release This assumes the target system has `pkg(8)`. ``` -# pkg install elixir postgresql12-server postgresql12-client postgresql12-contrib git-lite sudo nginx gmake acme.sh +# pkg install elixir postgresql12-server postgresql12-client postgresql12-contrib git-lite sudo nginx gmake acme.sh cmake ``` Copy the rc.d scripts to the right directory: From 10da13c71343623a5e52beebdc6abc1f400bc40d Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Fri, 4 Sep 2020 22:10:40 +0300 Subject: [PATCH 087/460] ConnectionPool middleware: Fix connection leak on ReverseProxy redirects Requires a patched Tesla due to upstream not saving opts between redirects, patch submitted at https://github.com/teamon/tesla/pull/414 --- .../tesla/middleware/connection_pool.ex | 27 +++++++++++++------ mix.exs | 4 ++- mix.lock | 2 +- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/lib/pleroma/tesla/middleware/connection_pool.ex b/lib/pleroma/tesla/middleware/connection_pool.ex index a435ab4cc..5909e98d6 100644 --- a/lib/pleroma/tesla/middleware/connection_pool.ex +++ b/lib/pleroma/tesla/middleware/connection_pool.ex @@ -15,21 +15,32 @@ defmodule Pleroma.Tesla.Middleware.ConnectionPool do def call(%Tesla.Env{url: url, opts: opts} = env, next, _) do uri = URI.parse(url) + # Avoid leaking connections when the middleware is called twice + # with body_as: :chunks. We assume only the middleware can set + # opts[:adapter][:conn] + if opts[:adapter][:conn] do + ConnectionPool.release_conn(opts[:adapter][:conn]) + end + case ConnectionPool.get_conn(uri, opts[:adapter]) do {:ok, conn_pid} -> adapter_opts = Keyword.merge(opts[:adapter], conn: conn_pid, close_conn: false) opts = Keyword.put(opts, :adapter, adapter_opts) env = %{env | opts: opts} - res = Tesla.run(env, next) - unless opts[:adapter][:body_as] == :chunks do - ConnectionPool.release_conn(conn_pid) + case Tesla.run(env, next) do + {:ok, env} -> + unless opts[:adapter][:body_as] == :chunks do + ConnectionPool.release_conn(conn_pid) + {:ok, pop_in(env[:opts][:adapter][:conn])} + else + {:ok, env} + end + + err -> + ConnectionPool.release_conn(conn_pid) + err end - - res - - err -> - err end end end diff --git a/mix.exs b/mix.exs index 4de0c78db..c324960c5 100644 --- a/mix.exs +++ b/mix.exs @@ -134,7 +134,9 @@ defp deps do {:cachex, "~> 3.2"}, {:poison, "~> 3.0", override: true}, {:tesla, - github: "teamon/tesla", ref: "af3707078b10793f6a534938e56b963aff82fe3c", override: true}, + git: "https://git.pleroma.social/pleroma/elixir-libraries/tesla.git", + ref: "3a2789d8535f7b520ebbadc4494227e5ba0e5365", + override: true}, {:castore, "~> 0.1"}, {:cowlib, "~> 2.9", override: true}, {:gun, diff --git a/mix.lock b/mix.lock index 874ea9215..deb07eb68 100644 --- a/mix.lock +++ b/mix.lock @@ -110,7 +110,7 @@ "swoosh": {:hex, :swoosh, "1.0.0", "c547cfc83f30e12d5d1fdcb623d7de2c2e29a5becfc68bf8f42ba4d23d2c2756", [:mix], [{:cowboy, "~> 1.0.1 or ~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}], "hexpm", "b3b08e463f876cb6167f7168e9ad99a069a724e124bcee61847e0e1ed13f4a0d"}, "syslog": {:hex, :syslog, "1.1.0", "6419a232bea84f07b56dc575225007ffe34d9fdc91abe6f1b2f254fd71d8efc2", [:rebar3], [], "hexpm", "4c6a41373c7e20587be33ef841d3de6f3beba08519809329ecc4d27b15b659e1"}, "telemetry": {:hex, :telemetry, "0.4.2", "2808c992455e08d6177322f14d3bdb6b625fbcfd233a73505870d8738a2f4599", [:rebar3], [], "hexpm", "2d1419bd9dda6a206d7b5852179511722e2b18812310d304620c7bd92a13fcef"}, - "tesla": {:git, "https://github.com/teamon/tesla.git", "af3707078b10793f6a534938e56b963aff82fe3c", [ref: "af3707078b10793f6a534938e56b963aff82fe3c"]}, + "tesla": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/tesla.git", "3a2789d8535f7b520ebbadc4494227e5ba0e5365", [ref: "3a2789d8535f7b520ebbadc4494227e5ba0e5365"]}, "timex": {:hex, :timex, "3.6.2", "845cdeb6119e2fef10751c0b247b6c59d86d78554c83f78db612e3290f819bc2", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 0.1.8 or ~> 0.5 or ~> 1.0.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "26030b46199d02a590be61c2394b37ea25a3664c02fafbeca0b24c972025d47a"}, "trailing_format_plug": {:hex, :trailing_format_plug, "0.0.7", "64b877f912cf7273bed03379936df39894149e35137ac9509117e59866e10e45", [:mix], [{:plug, "> 0.12.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "bd4fde4c15f3e993a999e019d64347489b91b7a9096af68b2bdadd192afa693f"}, "tzdata": {:hex, :tzdata, "1.0.3", "73470ad29dde46e350c60a66e6b360d3b99d2d18b74c4c349dbebbc27a09a3eb", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "a6e1ee7003c4d04ecbd21dd3ec690d4c6662db5d3bbdd7262d53cdf5e7c746c1"}, From 9fd0e5e0dd5e4c2b1748ef604e780bb31e4ada89 Mon Sep 17 00:00:00 2001 From: James Alseth <james@jalseth.me> Date: Fri, 4 Sep 2020 19:19:56 -0700 Subject: [PATCH 088/460] Use TLS when adding Alpine community repository in Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index aa50e27ec..c210cf79c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -31,7 +31,7 @@ LABEL maintainer="ops@pleroma.social" \ ARG HOME=/opt/pleroma ARG DATA=/var/lib/pleroma -RUN echo "http://nl.alpinelinux.org/alpine/latest-stable/community" >> /etc/apk/repositories &&\ +RUN echo "https://nl.alpinelinux.org/alpine/latest-stable/community" >> /etc/apk/repositories &&\ apk update &&\ apk add exiftool imagemagick ncurses postgresql-client &&\ adduser --system --shell /bin/false --home ${HOME} pleroma &&\ From 0d91f65284f99bded89c0400e976e0ffa5bc202f Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> Date: Fri, 4 Sep 2020 07:52:22 +0200 Subject: [PATCH 089/460] Prevent AccountView and instance.get_or_update_favicon fails --- lib/pleroma/instances/instance.ex | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index 711c42158..ef5d17de4 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -145,6 +145,8 @@ def get_or_update_favicon(%URI{host: host} = instance_uri) do favicon end + rescue + _ -> nil end defp scrape_favicon(%URI{} = instance_uri) do @@ -159,7 +161,8 @@ defp scrape_favicon(%URI{} = instance_uri) do |> Floki.attribute("link[rel=icon]", "href") |> List.first(), favicon <- URI.merge(instance_uri, favicon_rel) |> to_string(), - true <- is_binary(favicon) do + true <- is_binary(favicon), + true <- String.length(favicon) <= 255 do favicon else _ -> nil From de7e2ae0b5c296d0896f5d3738cba0fcddfe54f1 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Sat, 5 Sep 2020 11:15:27 +0300 Subject: [PATCH 090/460] use override flag for hackney dependency --- mix.exs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mix.exs b/mix.exs index f734e4f61..fc1a83d91 100644 --- a/mix.exs +++ b/mix.exs @@ -195,10 +195,9 @@ defp deps do {:ex_machina, "~> 2.4", only: :test}, {:credo, "~> 1.4", only: [:dev, :test], runtime: false}, {:mock, "~> 0.3.5", only: :test}, - # temporary downgrade for excoveralls, hackney and httpoison - until hackney max_connections bug will be fixed + # temporary downgrade for excoveralls, hackney until hackney max_connections bug will be fixed {:excoveralls, "0.12.3", only: :test}, - {:hackney, "1.15.2"}, - {:httpoison, "1.6.2"}, + {:hackney, "1.15.2", override: true}, {:mox, "~> 0.5", only: :test}, {:websocket_client, git: "https://github.com/jeremyong/websocket_client.git", only: :test} ] ++ oauth_deps() From c3b02341bf4ab610e9425d6811dca057e9f811a4 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov <ivantashkinov@gmail.com> Date: Sat, 5 Sep 2020 16:16:35 +0300 Subject: [PATCH 091/460] [#2497] Made media preview proxy fall back to media proxy instead of to source url. Adjusted tests. Refactoring. --- lib/pleroma/helpers/media_helper.ex | 6 ++- lib/pleroma/web/media_proxy/media_proxy.ex | 4 +- .../web/media_proxy/media_proxy_controller.ex | 50 ++++++++++--------- .../mastodon_api/views/account_view_test.exs | 33 ++++++------ 4 files changed, 51 insertions(+), 42 deletions(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index cfb091f82..bb93d4915 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -7,12 +7,14 @@ defmodule Pleroma.Helpers.MediaHelper do Handles common media-related operations. """ + alias Pleroma.HTTP + @tmp_base "/tmp/pleroma-media_preview-pipe" def image_resize(url, options) do with executable when is_binary(executable) <- System.find_executable("convert"), {:ok, args} <- prepare_image_resize_args(options), - {:ok, env} <- Pleroma.HTTP.get(url, [], [adapter: [pool: :preview]]), + {:ok, env} <- HTTP.get(url, [], adapter: [pool: :preview]), {:ok, fifo_path} <- mkfifo() do args = List.flatten([fifo_path, args]) run_fifo(fifo_path, env, executable, args) @@ -60,7 +62,7 @@ defp prepare_image_resize_args(_), do: {:error, :missing_options} def video_framegrab(url) do with executable when is_binary(executable) <- System.find_executable("ffmpeg"), - {:ok, env} <- Pleroma.HTTP.get(url, [], [adapter: [pool: :preview]]), + {:ok, env} <- HTTP.get(url, [], adapter: [pool: :preview]), {:ok, fifo_path} <- mkfifo(), args = [ "-y", diff --git a/lib/pleroma/web/media_proxy/media_proxy.ex b/lib/pleroma/web/media_proxy/media_proxy.ex index 4cbe1cf89..80017cde1 100644 --- a/lib/pleroma/web/media_proxy/media_proxy.ex +++ b/lib/pleroma/web/media_proxy/media_proxy.ex @@ -57,13 +57,11 @@ def url_proxiable?(url) do end end - # Note: routing all URLs to preview handler (even local and whitelisted). - # Preview handler will call url/1 on decoded URLs, and applicable ones will detour media proxy. def preview_url(url, preview_params \\ []) do if preview_enabled?() do encode_preview_url(url, preview_params) else - url + url(url) end end diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 33daa1e05..469fbae59 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -48,10 +48,12 @@ def preview(conn, %{"sig" => sig64, "url" => url64}) do end defp handle_preview(conn, url) do + media_proxy_url = MediaProxy.url(url) + with {:ok, %{status: status} = head_response} when status in 200..299 <- - Pleroma.HTTP.request("head", MediaProxy.url(url), [], [], [adapter: [pool: :preview]]) do + Pleroma.HTTP.request("head", media_proxy_url, [], [], adapter: [pool: :preview]) do content_type = Tesla.get_header(head_response, "content-type") - handle_preview(content_type, conn, url) + handle_preview(content_type, conn, media_proxy_url) else {_, %{status: status}} -> send_resp(conn, :failed_dependency, "Can't fetch HTTP headers (HTTP #{status}).") @@ -67,40 +69,38 @@ defp handle_preview(conn, url) do defp handle_preview( "image/" <> _ = _content_type, %{params: %{"output_format" => "jpeg"}} = conn, - url + media_proxy_url ) do - handle_jpeg_preview(conn, url) + handle_jpeg_preview(conn, media_proxy_url) end - defp handle_preview("image/gif" = _content_type, conn, url) do - mediaproxy_url = url |> MediaProxy.url() - - redirect(conn, external: mediaproxy_url) + defp handle_preview("image/gif" = _content_type, conn, media_proxy_url) do + redirect(conn, external: media_proxy_url) end - defp handle_preview("image/png" <> _ = _content_type, conn, url) do - handle_png_preview(conn, url) + defp handle_preview("image/png" <> _ = _content_type, conn, media_proxy_url) do + handle_png_preview(conn, media_proxy_url) end - defp handle_preview("image/" <> _ = _content_type, conn, url) do - handle_jpeg_preview(conn, url) + defp handle_preview("image/" <> _ = _content_type, conn, media_proxy_url) do + handle_jpeg_preview(conn, media_proxy_url) end - defp handle_preview("video/" <> _ = _content_type, conn, url) do - handle_video_preview(conn, url) + defp handle_preview("video/" <> _ = _content_type, conn, media_proxy_url) do + handle_video_preview(conn, media_proxy_url) end - defp handle_preview(content_type, conn, _url) do + defp handle_preview(content_type, conn, _media_proxy_url) do send_resp(conn, :unprocessable_entity, "Unsupported content type: #{content_type}.") end - defp handle_png_preview(%{params: params} = conn, url) do + defp handle_png_preview(%{params: params} = conn, media_proxy_url) do quality = Config.get!([:media_preview_proxy, :image_quality]) with {thumbnail_max_width, thumbnail_max_height} <- thumbnail_max_dimensions(params), {:ok, thumbnail_binary} <- MediaHelper.image_resize( - url, + media_proxy_url, %{ max_width: thumbnail_max_width, max_height: thumbnail_max_height, @@ -109,7 +109,7 @@ defp handle_png_preview(%{params: params} = conn, url) do } ) do conn - |> put_preview_response_headers("image/png", "preview.png") + |> put_preview_response_headers(["image/png", "preview.png"]) |> send_resp(200, thumbnail_binary) else _ -> @@ -117,13 +117,13 @@ defp handle_png_preview(%{params: params} = conn, url) do end end - defp handle_jpeg_preview(%{params: params} = conn, url) do + defp handle_jpeg_preview(%{params: params} = conn, media_proxy_url) do quality = Config.get!([:media_preview_proxy, :image_quality]) with {thumbnail_max_width, thumbnail_max_height} <- thumbnail_max_dimensions(params), {:ok, thumbnail_binary} <- MediaHelper.image_resize( - url, + media_proxy_url, %{max_width: thumbnail_max_width, max_height: thumbnail_max_height, quality: quality} ) do conn @@ -135,9 +135,9 @@ defp handle_jpeg_preview(%{params: params} = conn, url) do end end - defp handle_video_preview(conn, url) do + defp handle_video_preview(conn, media_proxy_url) do with {:ok, thumbnail_binary} <- - MediaHelper.video_framegrab(url) do + MediaHelper.video_framegrab(media_proxy_url) do conn |> put_preview_response_headers() |> send_resp(200, thumbnail_binary) @@ -147,10 +147,14 @@ defp handle_video_preview(conn, url) do end end - defp put_preview_response_headers(conn, content_type \\ "image/jpeg", filename \\ "preview.jpg") do + defp put_preview_response_headers( + conn, + [content_type, filename] = _content_info \\ ["image/jpeg", "preview.jpg"] + ) do conn |> put_resp_header("content-type", content_type) |> put_resp_header("content-disposition", "inline; filename=\"#{filename}\"") + # TODO: enable caching |> put_resp_header("cache-control", "max-age=0, private, must-revalidate") end diff --git a/test/web/mastodon_api/views/account_view_test.exs b/test/web/mastodon_api/views/account_view_test.exs index 8f37efa3c..2f56d9c8f 100644 --- a/test/web/mastodon_api/views/account_view_test.exs +++ b/test/web/mastodon_api/views/account_view_test.exs @@ -541,8 +541,9 @@ test "shows non-zero when historical unapproved requests are present" do end end - test "uses mediaproxy urls when it's enabled" do + test "uses mediaproxy urls when it's enabled (regardless of media preview proxy state)" do clear_config([:media_proxy, :enabled], true) + clear_config([:media_preview_proxy, :enabled]) user = insert(:user, @@ -551,20 +552,24 @@ test "uses mediaproxy urls when it's enabled" do emoji: %{"joker_smile" => "https://evil.website/society.png"} ) - AccountView.render("show.json", %{user: user, skip_visibility_check: true}) - |> Enum.all?(fn - {key, url} when key in [:avatar, :avatar_static, :header, :header_static] -> - String.starts_with?(url, Pleroma.Web.base_url()) + with media_preview_enabled <- [false, true] do + Config.put([:media_preview_proxy, :enabled], media_preview_enabled) - {:emojis, emojis} -> - Enum.all?(emojis, fn %{url: url, static_url: static_url} -> - String.starts_with?(url, Pleroma.Web.base_url()) && - String.starts_with?(static_url, Pleroma.Web.base_url()) - end) + AccountView.render("show.json", %{user: user, skip_visibility_check: true}) + |> Enum.all?(fn + {key, url} when key in [:avatar, :avatar_static, :header, :header_static] -> + String.starts_with?(url, Pleroma.Web.base_url()) - _ -> - true - end) - |> assert() + {:emojis, emojis} -> + Enum.all?(emojis, fn %{url: url, static_url: static_url} -> + String.starts_with?(url, Pleroma.Web.base_url()) && + String.starts_with?(static_url, Pleroma.Web.base_url()) + end) + + _ -> + true + end) + |> assert() + end end end From f170d471307ba0082b98351190b3d6b808bdfe1a Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov <ivantashkinov@gmail.com> Date: Sat, 5 Sep 2020 20:19:09 +0300 Subject: [PATCH 092/460] [#2497] Adjusted media proxy preview invalidation. Allowed client-side caching for media preview. Adjusted prewarmer to fetch only proxiable URIs. Removed :preview pool in favor of existing :media one. Misc. refactoring. --- config/config.exs | 5 ---- lib/pleroma/helpers/media_helper.ex | 4 +-- lib/pleroma/reverse_proxy/reverse_proxy.ex | 1 + .../mrf/media_proxy_warming_policy.ex | 27 +++++++++++-------- lib/pleroma/web/media_proxy/invalidation.ex | 4 ++- lib/pleroma/web/media_proxy/media_proxy.ex | 20 +++++++------- .../web/media_proxy/media_proxy_controller.ex | 5 ++-- 7 files changed, 34 insertions(+), 32 deletions(-) diff --git a/config/config.exs b/config/config.exs index b92d3ccbb..e5b7e18df 100644 --- a/config/config.exs +++ b/config/config.exs @@ -754,11 +754,6 @@ timeout: 10_000 ], media: [ - size: 50, - max_waiting: 10, - timeout: 10_000 - ], - preview: [ size: 50, max_waiting: 20, timeout: 15_000 diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index bb93d4915..a1205e10d 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -14,7 +14,7 @@ defmodule Pleroma.Helpers.MediaHelper do def image_resize(url, options) do with executable when is_binary(executable) <- System.find_executable("convert"), {:ok, args} <- prepare_image_resize_args(options), - {:ok, env} <- HTTP.get(url, [], adapter: [pool: :preview]), + {:ok, env} <- HTTP.get(url, [], adapter: [pool: :media]), {:ok, fifo_path} <- mkfifo() do args = List.flatten([fifo_path, args]) run_fifo(fifo_path, env, executable, args) @@ -62,7 +62,7 @@ defp prepare_image_resize_args(_), do: {:error, :missing_options} def video_framegrab(url) do with executable when is_binary(executable) <- System.find_executable("ffmpeg"), - {:ok, env} <- HTTP.get(url, [], adapter: [pool: :preview]), + {:ok, env} <- HTTP.get(url, [], adapter: [pool: :media]), {:ok, fifo_path} <- mkfifo(), args = [ "-y", diff --git a/lib/pleroma/reverse_proxy/reverse_proxy.ex b/lib/pleroma/reverse_proxy/reverse_proxy.ex index 35637e934..8ae1157df 100644 --- a/lib/pleroma/reverse_proxy/reverse_proxy.ex +++ b/lib/pleroma/reverse_proxy/reverse_proxy.ex @@ -18,6 +18,7 @@ defmodule Pleroma.ReverseProxy do @methods ~w(GET HEAD) def max_read_duration_default, do: @max_read_duration + def default_cache_control_header, do: @default_cache_control_header @moduledoc """ A reverse proxy. diff --git a/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex b/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex index 5d8bb72aa..1050b74ba 100644 --- a/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex @@ -12,23 +12,28 @@ defmodule Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy do require Logger - @options [ + @adapter_options [ pool: :media ] def perform(:prefetch, url) do - Logger.debug("Prefetching #{inspect(url)}") + # Fetching only proxiable resources + if MediaProxy.enabled?() and MediaProxy.url_proxiable?(url) do + # If preview proxy is enabled, it'll also hit media proxy (so we're caching both requests) + prefetch_url = MediaProxy.preview_url(url) - opts = - if Application.get_env(:tesla, :adapter) == Tesla.Adapter.Hackney do - Keyword.put(@options, :recv_timeout, 10_000) - else - @options - end + Logger.debug("Prefetching #{inspect(url)} as #{inspect(prefetch_url)}") - url - |> MediaProxy.preview_url() - |> HTTP.get([], adapter: opts) + HTTP.get(prefetch_url, [], adapter: adapter_options()) + end + end + + defp adapter_options do + if Application.get_env(:tesla, :adapter) == Tesla.Adapter.Hackney do + Keyword.put(@adapter_options, :recv_timeout, 10_000) + else + @adapter_options + end end def perform(:preload, %{"object" => %{"attachment" => attachments}} = _message) do diff --git a/lib/pleroma/web/media_proxy/invalidation.ex b/lib/pleroma/web/media_proxy/invalidation.ex index 5808861e6..4f4340478 100644 --- a/lib/pleroma/web/media_proxy/invalidation.ex +++ b/lib/pleroma/web/media_proxy/invalidation.ex @@ -33,6 +33,8 @@ defp do_purge(urls) do def prepare_urls(urls) do urls |> List.wrap() - |> Enum.map(&MediaProxy.url/1) + |> Enum.map(fn url -> [MediaProxy.url(url), MediaProxy.preview_url(url)] end) + |> List.flatten() + |> Enum.uniq() end end diff --git a/lib/pleroma/web/media_proxy/media_proxy.ex b/lib/pleroma/web/media_proxy/media_proxy.ex index 80017cde1..ba553998b 100644 --- a/lib/pleroma/web/media_proxy/media_proxy.ex +++ b/lib/pleroma/web/media_proxy/media_proxy.ex @@ -41,20 +41,16 @@ def url(url) when is_nil(url) or url == "", do: nil def url("/" <> _ = url), do: url def url(url) do - if not enabled?() or not url_proxiable?(url) do - url - else + if enabled?() and url_proxiable?(url) do encode_url(url) + else + url end end @spec url_proxiable?(String.t()) :: boolean() def url_proxiable?(url) do - if local?(url) or whitelisted?(url) do - false - else - true - end + not local?(url) and not whitelisted?(url) end def preview_url(url, preview_params \\ []) do @@ -69,7 +65,7 @@ def enabled?, do: Config.get([:media_proxy, :enabled], false) # Note: media proxy must be enabled for media preview proxy in order to load all # non-local non-whitelisted URLs through it and be sure that body size constraint is preserved. - def preview_enabled?, do: enabled?() and Config.get([:media_preview_proxy, :enabled], false) + def preview_enabled?, do: enabled?() and !!Config.get([:media_preview_proxy, :enabled]) def local?(url), do: String.starts_with?(url, Pleroma.Web.base_url()) @@ -138,9 +134,13 @@ def filename(url_or_path) do if path = URI.parse(url_or_path).path, do: Path.basename(path) end + def base_url do + Config.get([:media_proxy, :base_url], Web.base_url()) + end + defp proxy_url(path, sig_base64, url_base64, filename) do [ - Config.get([:media_proxy, :base_url], Web.base_url()), + base_url(), path, sig_base64, url_base64, diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 469fbae59..89f4a23bd 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -51,7 +51,7 @@ defp handle_preview(conn, url) do media_proxy_url = MediaProxy.url(url) with {:ok, %{status: status} = head_response} when status in 200..299 <- - Pleroma.HTTP.request("head", media_proxy_url, [], [], adapter: [pool: :preview]) do + Pleroma.HTTP.request("head", media_proxy_url, [], [], adapter: [pool: :media]) do content_type = Tesla.get_header(head_response, "content-type") handle_preview(content_type, conn, media_proxy_url) else @@ -154,8 +154,7 @@ defp put_preview_response_headers( conn |> put_resp_header("content-type", content_type) |> put_resp_header("content-disposition", "inline; filename=\"#{filename}\"") - # TODO: enable caching - |> put_resp_header("cache-control", "max-age=0, private, must-revalidate") + |> put_resp_header("cache-control", ReverseProxy.default_cache_control_header()) end defp thumbnail_max_dimensions(params) do From 88a6ee4a5989036de5c1e82c6111291887597d98 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov <ivantashkinov@gmail.com> Date: Sat, 5 Sep 2020 20:23:18 +0300 Subject: [PATCH 093/460] [#2497] Func defs grouping fix. --- .../mrf/media_proxy_warming_policy.ex | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex b/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex index 1050b74ba..6c63fe15c 100644 --- a/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex @@ -16,6 +16,14 @@ defmodule Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy do pool: :media ] + defp adapter_options do + if Application.get_env(:tesla, :adapter) == Tesla.Adapter.Hackney do + Keyword.put(@adapter_options, :recv_timeout, 10_000) + else + @adapter_options + end + end + def perform(:prefetch, url) do # Fetching only proxiable resources if MediaProxy.enabled?() and MediaProxy.url_proxiable?(url) do @@ -28,14 +36,6 @@ def perform(:prefetch, url) do end end - defp adapter_options do - if Application.get_env(:tesla, :adapter) == Tesla.Adapter.Hackney do - Keyword.put(@adapter_options, :recv_timeout, 10_000) - else - @adapter_options - end - end - def perform(:preload, %{"object" => %{"attachment" => attachments}} = _message) do Enum.each(attachments, fn %{"url" => url} when is_list(url) -> From e198ba492e5cb1b6ff81775db08298bfcdf1454a Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Sat, 5 Sep 2020 12:37:27 +0300 Subject: [PATCH 094/460] Rich Media: Do not cache URLs for preview statuses Closes #1987 --- CHANGELOG.md | 1 + lib/pleroma/html.ex | 32 +++++++++------- lib/pleroma/web/rich_media/helpers.ex | 2 +- test/html_test.exs | 14 +++---- .../controllers/status_controller_test.exs | 38 ++++++++++++++++++- 5 files changed, 65 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cdd5b94a8..4662045ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers - Mastodon API: Timelines hanging for (`number of posts with links * rich media timeout`) in the worst case. Reduced to just rich media timeout. +- Mastodon API: Cards being wrong for preview statuses due to cache key collision - Password resets no longer processed for deactivated accounts ## [2.1.0] - 2020-08-28 diff --git a/lib/pleroma/html.ex b/lib/pleroma/html.ex index 20b02f091..43e9145be 100644 --- a/lib/pleroma/html.ex +++ b/lib/pleroma/html.ex @@ -100,21 +100,27 @@ defp generate_scrubber_signature(scrubbers) do end) end - def extract_first_external_url(_, nil), do: {:error, "No content"} + def extract_first_external_url_from_object(%{data: %{"content" => content}} = object) + when is_binary(content) do + unless object.data["fake"] do + key = "URL|#{object.id}" - def extract_first_external_url(object, content) do - key = "URL|#{object.id}" + Cachex.fetch!(:scrubber_cache, key, fn _key -> + {:commit, {:ok, extract_first_external_url(content)}} + end) + else + {:ok, extract_first_external_url(content)} + end + end - Cachex.fetch!(:scrubber_cache, key, fn _key -> - result = - content - |> Floki.parse_fragment!() - |> Floki.find("a:not(.mention,.hashtag,.attachment,[rel~=\"tag\"])") - |> Enum.take(1) - |> Floki.attribute("href") - |> Enum.at(0) + def extract_first_external_url_from_object(_), do: {:error, :no_content} - {:commit, {:ok, result}} - end) + def extract_first_external_url(content) do + content + |> Floki.parse_fragment!() + |> Floki.find("a:not(.mention,.hashtag,.attachment,[rel~=\"tag\"])") + |> Enum.take(1) + |> Floki.attribute("href") + |> Enum.at(0) end end diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex index 2fb482b51..752ca9f81 100644 --- a/lib/pleroma/web/rich_media/helpers.ex +++ b/lib/pleroma/web/rich_media/helpers.ex @@ -58,7 +58,7 @@ def fetch_data_for_object(object) do with true <- Config.get([:rich_media, :enabled]), false <- object.data["sensitive"] || false, {:ok, page_url} <- - HTML.extract_first_external_url(object, object.data["content"]), + HTML.extract_first_external_url_from_object(object), :ok <- validate_page_url(page_url), {:ok, rich_media} <- Parser.parse(page_url) do %{page_url: page_url, rich_media: rich_media} diff --git a/test/html_test.exs b/test/html_test.exs index f8907c8b4..7d3756884 100644 --- a/test/html_test.exs +++ b/test/html_test.exs @@ -165,7 +165,7 @@ test "filters invalid microformats markup" do end end - describe "extract_first_external_url" do + describe "extract_first_external_url_from_object" do test "extracts the url" do user = insert(:user) @@ -176,7 +176,7 @@ test "extracts the url" do }) object = Object.normalize(activity) - {:ok, url} = HTML.extract_first_external_url(object, object.data["content"]) + {:ok, url} = HTML.extract_first_external_url_from_object(object) assert url == "https://github.com/komeiji-satori/Dress" end @@ -191,7 +191,7 @@ test "skips mentions" do }) object = Object.normalize(activity) - {:ok, url} = HTML.extract_first_external_url(object, object.data["content"]) + {:ok, url} = HTML.extract_first_external_url_from_object(object) assert url == "https://github.com/syuilo/misskey/blob/develop/docs/setup.en.md" @@ -207,7 +207,7 @@ test "skips hashtags" do }) object = Object.normalize(activity) - {:ok, url} = HTML.extract_first_external_url(object, object.data["content"]) + {:ok, url} = HTML.extract_first_external_url_from_object(object) assert url == "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=72255140" end @@ -223,7 +223,7 @@ test "skips microformats hashtags" do }) object = Object.normalize(activity) - {:ok, url} = HTML.extract_first_external_url(object, object.data["content"]) + {:ok, url} = HTML.extract_first_external_url_from_object(object) assert url == "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=72255140" end @@ -235,7 +235,7 @@ test "does not crash when there is an HTML entity in a link" do object = Object.normalize(activity) - assert {:ok, nil} = HTML.extract_first_external_url(object, object.data["content"]) + assert {:ok, nil} = HTML.extract_first_external_url_from_object(object) end test "skips attachment links" do @@ -249,7 +249,7 @@ test "skips attachment links" do object = Object.normalize(activity) - assert {:ok, nil} = HTML.extract_first_external_url(object, object.data["content"]) + assert {:ok, nil} = HTML.extract_first_external_url_from_object(object) end end end diff --git a/test/web/mastodon_api/controllers/status_controller_test.exs b/test/web/mastodon_api/controllers/status_controller_test.exs index 5955d8334..f221884e7 100644 --- a/test/web/mastodon_api/controllers/status_controller_test.exs +++ b/test/web/mastodon_api/controllers/status_controller_test.exs @@ -296,9 +296,45 @@ test "posting a fake status", %{conn: conn} do assert real_status == fake_status end + test "fake statuses' preview card is not cached", %{conn: conn} do + clear_config([:rich_media, :enabled], true) + + Tesla.Mock.mock(fn + %{ + method: :get, + url: "https://example.com/twitter-card" + } -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/twitter_card.html")} + + env -> + apply(HttpRequestMock, :request, [env]) + end) + + conn1 = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/statuses", %{ + "status" => "https://example.com/ogp", + "preview" => true + }) + + conn2 = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/statuses", %{ + "status" => "https://example.com/twitter-card", + "preview" => true + }) + + assert %{"card" => %{"title" => "The Rock"}} = json_response_and_validate_schema(conn1, 200) + + assert %{"card" => %{"title" => "Small Island Developing States Photo Submission"}} = + json_response_and_validate_schema(conn2, 200) + end + test "posting a status with OGP link preview", %{conn: conn} do Tesla.Mock.mock(fn env -> apply(HttpRequestMock, :request, [env]) end) - Config.put([:rich_media, :enabled], true) + clear_config([:rich_media, :enabled], true) conn = conn From 5298de3be6683022fa53cc011dd567e8b2a706b9 Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Sat, 5 Sep 2020 21:17:03 +0300 Subject: [PATCH 095/460] ConnectionPool middleware: fix a crash due to unimplemented behaviour Structs don't implement Access behaviour, so this crashed. Tests didn't catch it and I didn't test that part of the codepath. Very sorry --- lib/pleroma/tesla/middleware/connection_pool.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/tesla/middleware/connection_pool.ex b/lib/pleroma/tesla/middleware/connection_pool.ex index 5909e98d6..049db6eb3 100644 --- a/lib/pleroma/tesla/middleware/connection_pool.ex +++ b/lib/pleroma/tesla/middleware/connection_pool.ex @@ -32,7 +32,7 @@ def call(%Tesla.Env{url: url, opts: opts} = env, next, _) do {:ok, env} -> unless opts[:adapter][:body_as] == :chunks do ConnectionPool.release_conn(conn_pid) - {:ok, pop_in(env[:opts][:adapter][:conn])} + {:ok, pop_in(env.opts[:adapter][:conn])} else {:ok, env} end From 9d6aca5bee6f90f3c0af5a5353f052108c9def62 Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Sat, 5 Sep 2020 21:27:06 +0300 Subject: [PATCH 096/460] ConnectionPool: fix the previous hotfix I rushed the hotfix and forgot how `pop_in` actually works, I want to die. We need some integration tests for the HTTP client --- lib/pleroma/tesla/middleware/connection_pool.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/tesla/middleware/connection_pool.ex b/lib/pleroma/tesla/middleware/connection_pool.ex index 049db6eb3..2c5a2b53b 100644 --- a/lib/pleroma/tesla/middleware/connection_pool.ex +++ b/lib/pleroma/tesla/middleware/connection_pool.ex @@ -32,7 +32,8 @@ def call(%Tesla.Env{url: url, opts: opts} = env, next, _) do {:ok, env} -> unless opts[:adapter][:body_as] == :chunks do ConnectionPool.release_conn(conn_pid) - {:ok, pop_in(env.opts[:adapter][:conn])} + {_, res} = pop_in(env.opts[:adapter][:conn]) + {:ok, res} else {:ok, env} end From 129a2f48df95ddd85fceee741a9991a6e092ed3d Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Sat, 5 Sep 2020 21:36:17 +0300 Subject: [PATCH 097/460] ConnectionPool middleware: handle connection opening errors --- lib/pleroma/tesla/middleware/connection_pool.ex | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/pleroma/tesla/middleware/connection_pool.ex b/lib/pleroma/tesla/middleware/connection_pool.ex index 2c5a2b53b..056e736ce 100644 --- a/lib/pleroma/tesla/middleware/connection_pool.ex +++ b/lib/pleroma/tesla/middleware/connection_pool.ex @@ -42,6 +42,9 @@ def call(%Tesla.Env{url: url, opts: opts} = env, next, _) do ConnectionPool.release_conn(conn_pid) err end + + err -> + err end end end From 170599c390e7c82bdff0d4180d04b2f0f3906f35 Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Sat, 5 Sep 2020 22:00:51 +0300 Subject: [PATCH 098/460] RichMedia: do not log webpages missing metadata as errors Also fixes the return value of Parser.parse on errors, previously was just `:ok` due to the logger call in the end --- lib/pleroma/web/rich_media/parser.ex | 11 ++++++++--- test/web/rich_media/parser_test.exs | 4 +--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex index e98c743ca..5727fda18 100644 --- a/lib/pleroma/web/rich_media/parser.ex +++ b/lib/pleroma/web/rich_media/parser.ex @@ -21,8 +21,13 @@ def parse(url) do {:ok, _} <- set_ttl_based_on_image(data, url) do {:ok, data} else + {:error, {:invalid_metadata, data}} = e -> + Logger.debug(fn -> "Incomplete or invalid metadata for #{url}: #{inspect(data)}" end) + e + error -> - Logger.error(fn -> "Rich media error: #{inspect(error)}" end) + Logger.error(fn -> "Rich media error for #{url}: #{inspect(error)}" end) + error end end @@ -90,7 +95,7 @@ defp get_ttl_from_image(data, url) do end) end - defp parse_url(url) do + def parse_url(url) do with {:ok, %Tesla.Env{body: html}} <- Pleroma.Web.RichMedia.Helpers.rich_media_get(url), {:ok, html} <- Floki.parse_document(html) do html @@ -116,7 +121,7 @@ defp check_parsed_data(%{"title" => title} = data) end defp check_parsed_data(data) do - {:error, "Found metadata was invalid or incomplete: #{inspect(data)}"} + {:error, {:invalid_metadata, data}} end defp clean_parsed_data(data) do diff --git a/test/web/rich_media/parser_test.exs b/test/web/rich_media/parser_test.exs index 1e09cbf84..21ae35f8b 100644 --- a/test/web/rich_media/parser_test.exs +++ b/test/web/rich_media/parser_test.exs @@ -66,9 +66,7 @@ test "returns error when no metadata present" do end test "doesn't just add a title" do - assert Parser.parse("http://example.com/non-ogp") == - {:error, - "Found metadata was invalid or incomplete: %{\"url\" => \"http://example.com/non-ogp\"}"} + assert {:error, {:invalid_metadata, _}} = Parser.parse("http://example.com/non-ogp") end test "parses ogp" do From 0b4fa769f4332e50cdc5f643bada18f2e50430de Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Sun, 6 Sep 2020 11:38:38 +0300 Subject: [PATCH 099/460] Add a copy of CC-BY-4.0 to the repo We mentined it in COPYING, but didn't actually have a copy in the repo. --- CC-BY-4.0 | 395 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 395 insertions(+) create mode 100644 CC-BY-4.0 diff --git a/CC-BY-4.0 b/CC-BY-4.0 new file mode 100644 index 000000000..4ea99c213 --- /dev/null +++ b/CC-BY-4.0 @@ -0,0 +1,395 @@ +Attribution 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution 4.0 International Public License ("Public License"). To the +extent this Public License may be interpreted as a contract, You are +granted the Licensed Rights in consideration of Your acceptance of +these terms and conditions, and the Licensor grants You such rights in +consideration of benefits the Licensor receives from making the +Licensed Material available under these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + d. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + g. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's + License You apply must not prevent recipients of the Adapted + Material from complying with this Public License. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. From 759f8bc3ae49580319a4ecb12770e8581826c6d9 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov <ivantashkinov@gmail.com> Date: Sun, 6 Sep 2020 15:30:11 +0300 Subject: [PATCH 100/460] [#2497] Fixed MediaProxyWarmingPolicyTest. --- test/web/activity_pub/mrf/mediaproxy_warming_policy_test.exs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/web/activity_pub/mrf/mediaproxy_warming_policy_test.exs b/test/web/activity_pub/mrf/mediaproxy_warming_policy_test.exs index 313d59a66..1710c4d2a 100644 --- a/test/web/activity_pub/mrf/mediaproxy_warming_policy_test.exs +++ b/test/web/activity_pub/mrf/mediaproxy_warming_policy_test.exs @@ -22,6 +22,8 @@ defmodule Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicyTest do } } + setup do: clear_config([:media_proxy, :enabled], true) + test "it prefetches media proxy URIs" do with_mock HTTP, get: fn _, _, _ -> {:ok, []} end do MediaProxyWarmingPolicy.filter(@message) From 5ae56aafb2edc737f7e9fb36e00377815f028ce6 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov <parallel588@gmail.com> Date: Sun, 6 Sep 2020 21:42:51 +0300 Subject: [PATCH 101/460] added import mutes --- docs/API/pleroma_api.md | 17 ++ lib/pleroma/user.ex | 51 ----- lib/pleroma/user/import.ex | 91 ++++++++ .../controllers/user_import_controller.ex | 57 +++++ lib/pleroma/web/router.ex | 7 +- .../controllers/util_controller.ex | 35 --- lib/pleroma/workers/background_worker.ex | 11 +- test/user/import_test.exs | 78 +++++++ test/user_test.exs | 34 --- .../user_import_controller_test.exs | 205 ++++++++++++++++++ test/web/twitter_api/util_controller_test.exs | 164 -------------- 11 files changed, 461 insertions(+), 289 deletions(-) create mode 100644 lib/pleroma/user/import.ex create mode 100644 lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex create mode 100644 test/user/import_test.exs create mode 100644 test/web/pleroma_api/controllers/user_import_controller_test.exs diff --git a/docs/API/pleroma_api.md b/docs/API/pleroma_api.md index 4e97d26c0..22f3ad7d6 100644 --- a/docs/API/pleroma_api.md +++ b/docs/API/pleroma_api.md @@ -44,6 +44,23 @@ Request parameters can be passed via [query strings](https://en.wikipedia.org/wi * Response: HTTP 200 on success, 500 on error * Note: Users that can't be followed are silently skipped. +## `/api/pleroma/blocks_import` +### Imports your blocks. +* Method: `POST` +* Authentication: required +* Params: + * `list`: STRING or FILE containing a whitespace-separated list of accounts to follow +* Response: HTTP 200 on success, 500 on error + +## `/api/pleroma/mutes_import` +### Imports your mutes. +* Method: `POST` +* Authentication: required +* Params: + * `list`: STRING or FILE containing a whitespace-separated list of accounts to follow +* Response: HTTP 200 on success, 500 on error + + ## `/api/pleroma/captcha` ### Get a new captcha * Method: `GET` diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 94c96de8d..be2ef0d1b 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1686,42 +1686,6 @@ def perform(:delete, %User{} = user) do def perform(:deactivate_async, user, status), do: deactivate(user, status) - @spec perform(atom(), User.t(), list()) :: list() | {:error, any()} - def perform(:blocks_import, %User{} = blocker, blocked_identifiers) - when is_list(blocked_identifiers) do - Enum.map( - blocked_identifiers, - fn blocked_identifier -> - with {:ok, %User{} = blocked} <- get_or_fetch(blocked_identifier), - {:ok, _block} <- CommonAPI.block(blocker, blocked) do - blocked - else - err -> - Logger.debug("blocks_import failed for #{blocked_identifier} with: #{inspect(err)}") - err - end - end - ) - end - - def perform(:follow_import, %User{} = follower, followed_identifiers) - when is_list(followed_identifiers) do - Enum.map( - followed_identifiers, - fn followed_identifier -> - with {:ok, %User{} = followed} <- get_or_fetch(followed_identifier), - {:ok, follower} <- maybe_direct_follow(follower, followed), - {:ok, _, _, _} <- CommonAPI.follow(follower, followed) do - followed - else - err -> - Logger.debug("follow_import failed for #{followed_identifier} with: #{inspect(err)}") - err - end - end - ) - end - @spec external_users_query() :: Ecto.Query.t() def external_users_query do User.Query.build(%{ @@ -1750,21 +1714,6 @@ def external_users(opts \\ []) do Repo.all(query) end - def blocks_import(%User{} = blocker, blocked_identifiers) when is_list(blocked_identifiers) do - BackgroundWorker.enqueue("blocks_import", %{ - "blocker_id" => blocker.id, - "blocked_identifiers" => blocked_identifiers - }) - end - - def follow_import(%User{} = follower, followed_identifiers) - when is_list(followed_identifiers) do - BackgroundWorker.enqueue("follow_import", %{ - "follower_id" => follower.id, - "followed_identifiers" => followed_identifiers - }) - end - def delete_notifications_from_user_activities(%User{ap_id: ap_id}) do Notification |> join(:inner, [n], activity in assoc(n, :activity)) diff --git a/lib/pleroma/user/import.ex b/lib/pleroma/user/import.ex new file mode 100644 index 000000000..de27bdc4c --- /dev/null +++ b/lib/pleroma/user/import.ex @@ -0,0 +1,91 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.User.Import do + use Ecto.Schema + + alias Pleroma.User + alias Pleroma.Web.CommonAPI + alias Pleroma.Workers.BackgroundWorker + + require Logger + + @spec perform(atom(), User.t(), list()) :: :ok | list() | {:error, any()} + def perform(:mutes_import, %User{} = user, [_ | _] = identifiers) do + Enum.map( + identifiers, + fn identifier -> + with {:ok, %User{} = muted_user} <- User.get_or_fetch(identifier), + {:ok, _} <- User.mute(user, muted_user) do + muted_user + else + error -> handle_error(:mutes_import, identifier, error) + end + end + ) + end + + def perform(:blocks_import, %User{} = blocker, [_ | _] = identifiers) do + Enum.map( + identifiers, + fn identifier -> + with {:ok, %User{} = blocked} <- User.get_or_fetch(identifier), + {:ok, _block} <- CommonAPI.block(blocker, blocked) do + blocked + else + error -> handle_error(:blocks_import, identifier, error) + end + end + ) + end + + def perform(:follow_import, %User{} = follower, [_ | _] = identifiers) do + Enum.map( + identifiers, + fn identifier -> + with {:ok, %User{} = followed} <- User.get_or_fetch(identifier), + {:ok, follower} <- User.maybe_direct_follow(follower, followed), + {:ok, _, _, _} <- CommonAPI.follow(follower, followed) do + followed + else + error -> handle_error(:follow_import, identifier, error) + end + end + ) + end + + def perform(_, _, _), do: :ok + + defp handle_error(op, user_id, error) do + Logger.debug("#{op} failed for #{user_id} with: #{inspect(error)}") + error + end + + def blocks_import(%User{} = blocker, [_ | _] = identifiers) do + BackgroundWorker.enqueue( + "blocks_import", + %{ + "blocker_id" => blocker.id, + "blocked_identifiers" => identifiers + } + ) + end + + def follow_import(%User{} = follower, [_ | _] = identifiers) do + BackgroundWorker.enqueue( + "follow_import", + %{ + "follower_id" => follower.id, + "followed_identifiers" => identifiers + } + ) + end + + def mutes_import(%User{} = user, [_ | _] = identifiers) do + BackgroundWorker.enqueue( + "mutes_import", + %{"user_id" => user.id, "identifiers" => identifiers} + ) + end +end diff --git a/lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex b/lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex new file mode 100644 index 000000000..df6a0f131 --- /dev/null +++ b/lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex @@ -0,0 +1,57 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PleromaAPI.UserImportController do + use Pleroma.Web, :controller + + require Logger + + alias Pleroma.Plugs.OAuthScopesPlug + alias Pleroma.User + + plug(OAuthScopesPlug, %{scopes: ["follow", "write:follows"]} when action == :follow) + plug(OAuthScopesPlug, %{scopes: ["follow", "write:blocks"]} when action == :blocks) + plug(OAuthScopesPlug, %{scopes: ["follow", "write:mutes"]} when action == :mutes) + + def follow(conn, %{"list" => %Plug.Upload{path: path}}) do + follow(conn, %{"list" => File.read!(path)}) + end + + def follow(%{assigns: %{user: follower}} = conn, %{"list" => list}) do + identifiers = + list + |> String.split("\n") + |> Enum.map(&(&1 |> String.split(",") |> List.first())) + |> List.delete("Account address") + |> Enum.map(&(&1 |> String.trim() |> String.trim_leading("@"))) + |> Enum.reject(&(&1 == "")) + + User.Import.follow_import(follower, identifiers) + json(conn, "job started") + end + + def blocks(conn, %{"list" => %Plug.Upload{path: path}}) do + blocks(conn, %{"list" => File.read!(path)}) + end + + def blocks(%{assigns: %{user: blocker}} = conn, %{"list" => list}) do + User.Import.blocks_import(blocker, prepare_user_identifiers(list)) + json(conn, "job started") + end + + def mutes(conn, %{"list" => %Plug.Upload{path: path}}) do + mutes(conn, %{"list" => File.read!(path)}) + end + + def mutes(%{assigns: %{user: user}} = conn, %{"list" => list}) do + User.Import.mutes_import(user, prepare_user_identifiers(list)) + json(conn, "job started") + end + + defp prepare_user_identifiers(list) do + list + |> String.split() + |> Enum.map(&String.trim_leading(&1, "@")) + end +end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index c6433cc53..f69b1545f 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -260,14 +260,15 @@ defmodule Pleroma.Web.Router do post("/delete_account", UtilController, :delete_account) put("/notification_settings", UtilController, :update_notificaton_settings) post("/disable_account", UtilController, :disable_account) - - post("/blocks_import", UtilController, :blocks_import) - post("/follow_import", UtilController, :follow_import) end scope "/api/pleroma", Pleroma.Web.PleromaAPI do pipe_through(:authenticated_api) + post("/mutes_import", UserImportController, :mutes) + post("/blocks_import", UserImportController, :blocks) + post("/follow_import", UserImportController, :follow) + get("/accounts/mfa", TwoFactorAuthenticationController, :settings) get("/accounts/mfa/backup_codes", TwoFactorAuthenticationController, :backup_codes) get("/accounts/mfa/setup/:method", TwoFactorAuthenticationController, :setup) diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex index f02c4075c..70b0fbd54 100644 --- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex @@ -18,14 +18,6 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do plug(Pleroma.Web.FederatingPlug when action == :remote_subscribe) - plug( - OAuthScopesPlug, - %{scopes: ["follow", "write:follows"]} - when action == :follow_import - ) - - plug(OAuthScopesPlug, %{scopes: ["follow", "write:blocks"]} when action == :blocks_import) - plug( OAuthScopesPlug, %{scopes: ["write:accounts"]} @@ -104,33 +96,6 @@ def update_notificaton_settings(%{assigns: %{user: user}} = conn, params) do end end - def follow_import(conn, %{"list" => %Plug.Upload{} = listfile}) do - follow_import(conn, %{"list" => File.read!(listfile.path)}) - end - - def follow_import(%{assigns: %{user: follower}} = conn, %{"list" => list}) do - followed_identifiers = - list - |> String.split("\n") - |> Enum.map(&(&1 |> String.split(",") |> List.first())) - |> List.delete("Account address") - |> Enum.map(&(&1 |> String.trim() |> String.trim_leading("@"))) - |> Enum.reject(&(&1 == "")) - - User.follow_import(follower, followed_identifiers) - json(conn, "job started") - end - - def blocks_import(conn, %{"list" => %Plug.Upload{} = listfile}) do - blocks_import(conn, %{"list" => File.read!(listfile.path)}) - end - - def blocks_import(%{assigns: %{user: blocker}} = conn, %{"list" => list}) do - blocked_identifiers = list |> String.split() |> Enum.map(&String.trim_leading(&1, "@")) - User.blocks_import(blocker, blocked_identifiers) - json(conn, "job started") - end - def change_password(%{assigns: %{user: user}} = conn, params) do case CommonAPI.Utils.confirm_current_password(user, params["password"]) do {:ok, user} -> diff --git a/lib/pleroma/workers/background_worker.ex b/lib/pleroma/workers/background_worker.ex index cec5a7462..f9c767ee0 100644 --- a/lib/pleroma/workers/background_worker.ex +++ b/lib/pleroma/workers/background_worker.ex @@ -34,7 +34,7 @@ def perform(%Job{ } }) do blocker = User.get_cached_by_id(blocker_id) - {:ok, User.perform(:blocks_import, blocker, blocked_identifiers)} + {:ok, User.Import.perform(:blocks_import, blocker, blocked_identifiers)} end def perform(%Job{ @@ -45,7 +45,14 @@ def perform(%Job{ } }) do follower = User.get_cached_by_id(follower_id) - {:ok, User.perform(:follow_import, follower, followed_identifiers)} + {:ok, User.Import.perform(:follow_import, follower, followed_identifiers)} + end + + def perform(%Job{ + args: %{"op" => "mutes_import", "user_id" => user_id, "identifiers" => identifiers} + }) do + user = User.get_cached_by_id(user_id) + {:ok, User.Import.perform(:mutes_import, user, identifiers)} end def perform(%Job{args: %{"op" => "media_proxy_preload", "message" => message}}) do diff --git a/test/user/import_test.exs b/test/user/import_test.exs new file mode 100644 index 000000000..476b22678 --- /dev/null +++ b/test/user/import_test.exs @@ -0,0 +1,78 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.User.ImportTest do + + alias Pleroma.Repo + alias Pleroma.Tests.ObanHelpers + alias Pleroma.User + + use Pleroma.DataCase + use Oban.Testing, repo: Pleroma.Repo + + import Pleroma.Factory + + setup_all do + Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) + :ok + end + + describe "follow_import" do + test "it imports user followings from list" do + [user1, user2, user3] = insert_list(3, :user) + + identifiers = [ + user2.ap_id, + user3.nickname + ] + + {:ok, job} = User.Import.follow_import(user1, identifiers) + + assert {:ok, result} = ObanHelpers.perform(job) + assert is_list(result) + assert result == [user2, user3] + assert User.following?(user1, user2) + assert User.following?(user1, user3) + end + end + + + describe "blocks_import" do + test "it imports user blocks from list" do + [user1, user2, user3] = insert_list(3, :user) + + identifiers = [ + user2.ap_id, + user3.nickname + ] + + {:ok, job} = User.Import.blocks_import(user1, identifiers) + + assert {:ok, result} = ObanHelpers.perform(job) + assert is_list(result) + assert result == [user2, user3] + assert User.blocks?(user1, user2) + assert User.blocks?(user1, user3) + end + end + + describe "mutes_import" do + test "it imports user mutes from list" do + [user1, user2, user3] = insert_list(3, :user) + + identifiers = [ + user2.ap_id, + user3.nickname + ] + + {:ok, job} = User.Import.mutes_import(user1, identifiers) + + assert {:ok, result} = ObanHelpers.perform(job) + assert is_list(result) + assert result == [user2, user3] + assert User.mutes?(user1, user2) + assert User.mutes?(user1, user3) + end + end +end diff --git a/test/user_test.exs b/test/user_test.exs index 50f72549e..13ac633b8 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -932,23 +932,6 @@ test "it sets the follower_count property" do end end - describe "follow_import" do - test "it imports user followings from list" do - [user1, user2, user3] = insert_list(3, :user) - - identifiers = [ - user2.ap_id, - user3.nickname - ] - - {:ok, job} = User.follow_import(user1, identifiers) - - assert {:ok, result} = ObanHelpers.perform(job) - assert is_list(result) - assert result == [user2, user3] - end - end - describe "mutes" do test "it mutes people" do user = insert(:user) @@ -1155,23 +1138,6 @@ test "follows take precedence over domain blocks" do end end - describe "blocks_import" do - test "it imports user blocks from list" do - [user1, user2, user3] = insert_list(3, :user) - - identifiers = [ - user2.ap_id, - user3.nickname - ] - - {:ok, job} = User.blocks_import(user1, identifiers) - - assert {:ok, result} = ObanHelpers.perform(job) - assert is_list(result) - assert result == [user2, user3] - end - end - describe "get_recipients_from_activity" do test "works for announces" do actor = insert(:user) diff --git a/test/web/pleroma_api/controllers/user_import_controller_test.exs b/test/web/pleroma_api/controllers/user_import_controller_test.exs new file mode 100644 index 000000000..d1a8a46fc --- /dev/null +++ b/test/web/pleroma_api/controllers/user_import_controller_test.exs @@ -0,0 +1,205 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PleromaAPI.UserImportControllerTest do + use Pleroma.Web.ConnCase + use Oban.Testing, repo: Pleroma.Repo + + alias Pleroma.Config + alias Pleroma.Tests.ObanHelpers + + import Pleroma.Factory + import Mock + + setup do + Tesla.Mock.mock(fn env -> apply(HttpRequestMock, :request, [env]) end) + :ok + end + + describe "POST /api/pleroma/follow_import" do + setup do: oauth_access(["follow"]) + + test "it returns HTTP 200", %{conn: conn} do + user2 = insert(:user) + + assert "job started" == conn + |> post("/api/pleroma/follow_import", %{"list" => "#{user2.ap_id}"}) + |> json_response(:ok) + end + + test "it imports follow lists from file", %{conn: conn} do + user2 = insert(:user) + + with_mocks([ + {File, [], + read!: fn "follow_list.txt" -> + "Account address,Show boosts\n#{user2.ap_id},true" + end} + ]) do + assert "job started" == conn + |> post("/api/pleroma/follow_import", %{"list" => %Plug.Upload{path: "follow_list.txt"}}) + |> json_response(:ok) + + assert [{:ok, job_result}] = ObanHelpers.perform_all() + assert job_result == [user2] + end + end + + test "it imports new-style mastodon follow lists", %{conn: conn} do + user2 = insert(:user) + + response = conn + |> post("/api/pleroma/follow_import", %{ + "list" => "Account address,Show boosts\n#{user2.ap_id},true"} + ) + |> json_response(:ok) + + assert response == "job started" + end + + test "requires 'follow' or 'write:follows' permissions" do + token1 = insert(:oauth_token, scopes: ["read", "write"]) + token2 = insert(:oauth_token, scopes: ["follow"]) + token3 = insert(:oauth_token, scopes: ["something"]) + another_user = insert(:user) + + for token <- [token1, token2, token3] do + conn = + build_conn() + |> put_req_header("authorization", "Bearer #{token.token}") + |> post("/api/pleroma/follow_import", %{"list" => "#{another_user.ap_id}"}) + + if token == token3 do + assert %{"error" => "Insufficient permissions: follow | write:follows."} == + json_response(conn, 403) + else + assert json_response(conn, 200) + end + end + end + + test "it imports follows with different nickname variations", %{conn: conn} do + users = [user2, user3, user4, user5, user6] = insert_list(5, :user) + + identifiers = + [ + user2.ap_id, + user3.nickname, + " ", + "@" <> user4.nickname, + user5.nickname <> "@localhost", + "@" <> user6.nickname <> "@localhost" + ] + |> Enum.join("\n") + + assert "job started" == conn + |> post("/api/pleroma/follow_import", %{"list" => identifiers}) + |> json_response(:ok) + + assert [{:ok, job_result}] = ObanHelpers.perform_all() + assert job_result == users + end + end + + describe "POST /api/pleroma/blocks_import" do + # Note: "follow" or "write:blocks" permission is required + setup do: oauth_access(["write:blocks"]) + + test "it returns HTTP 200", %{conn: conn} do + user2 = insert(:user) + + assert "job started" == conn + |> post("/api/pleroma/blocks_import", %{"list" => "#{user2.ap_id}"}) + |> json_response(:ok) + end + + test "it imports blocks users from file", %{conn: conn} do + users = [user2, user3] = insert_list(2, :user) + + with_mocks([ + {File, [], read!: fn "blocks_list.txt" -> "#{user2.ap_id} #{user3.ap_id}" end} + ]) do + + assert "job started" == conn + |> post("/api/pleroma/blocks_import", %{"list" => %Plug.Upload{path: "blocks_list.txt"}}) + |> json_response(:ok) + + assert [{:ok, job_result}] = ObanHelpers.perform_all() + assert job_result == users + end + end + + test "it imports blocks with different nickname variations", %{conn: conn} do + users = [user2, user3, user4, user5, user6] = insert_list(5, :user) + + identifiers = + [ + user2.ap_id, + user3.nickname, + "@" <> user4.nickname, + user5.nickname <> "@localhost", + "@" <> user6.nickname <> "@localhost" + ] + |> Enum.join(" ") + + assert "job started" == conn + |> post("/api/pleroma/blocks_import", %{"list" => identifiers}) + |> json_response(:ok) + + assert [{:ok, job_result}] = ObanHelpers.perform_all() + assert job_result == users + end + end + + describe "POST /api/pleroma/mutes_import" do + # Note: "follow" or "write:mutes" permission is required + setup do: oauth_access(["write:mutes"]) + + test "it returns HTTP 200", %{user: user, conn: conn} do + user2 = insert(:user) + + assert "job started" == conn + |> post("/api/pleroma/mutes_import", %{"list" => "#{user2.ap_id}"}) + |> json_response(:ok) + + assert [{:ok, job_result}] = ObanHelpers.perform_all() + assert job_result == [user2] + assert Pleroma.User.mutes?(user, user2) + end + + + test "it imports mutes users from file", %{user: user, conn: conn} do + users = [user2, user3] = insert_list(2, :user) + + with_mocks([ + {File, [], read!: fn "mutes_list.txt" -> "#{user2.ap_id} #{user3.ap_id}" end} + ]) do + assert "job started" == conn + |> post("/api/pleroma/mutes_import", %{"list" => %Plug.Upload{path: "mutes_list.txt"}}) + |> json_response(:ok) + + assert [{:ok, job_result}] = ObanHelpers.perform_all() + assert job_result == users + assert Enum.all?(users, &Pleroma.User.mutes?(user, &1)) + end + end + + test "it imports mutes with different nickname variations", %{user: user, conn: conn} do + users = [user2, user3, user4, user5, user6] = insert_list(5, :user) + + identifiers = [ + user2.ap_id, user3.nickname, "@" <> user4.nickname, + user5.nickname <> "@localhost", "@" <> user6.nickname <> "@localhost" + ] + |> Enum.join(" ") + + assert "job started" == conn + |> post("/api/pleroma/mutes_import", %{"list" => identifiers}) + |> json_response(:ok) + assert [{:ok, job_result}] = ObanHelpers.perform_all() + assert job_result == users + assert Enum.all?(users, &Pleroma.User.mutes?(user, &1)) + end + end +end diff --git a/test/web/twitter_api/util_controller_test.exs b/test/web/twitter_api/util_controller_test.exs index d164127ee..60f2fb052 100644 --- a/test/web/twitter_api/util_controller_test.exs +++ b/test/web/twitter_api/util_controller_test.exs @@ -21,170 +21,6 @@ defmodule Pleroma.Web.TwitterAPI.UtilControllerTest do setup do: clear_config([:instance]) setup do: clear_config([:frontend_configurations, :pleroma_fe]) - describe "POST /api/pleroma/follow_import" do - setup do: oauth_access(["follow"]) - - test "it returns HTTP 200", %{conn: conn} do - user2 = insert(:user) - - response = - conn - |> post("/api/pleroma/follow_import", %{"list" => "#{user2.ap_id}"}) - |> json_response(:ok) - - assert response == "job started" - end - - test "it imports follow lists from file", %{user: user1, conn: conn} do - user2 = insert(:user) - - with_mocks([ - {File, [], - read!: fn "follow_list.txt" -> - "Account address,Show boosts\n#{user2.ap_id},true" - end} - ]) do - response = - conn - |> post("/api/pleroma/follow_import", %{"list" => %Plug.Upload{path: "follow_list.txt"}}) - |> json_response(:ok) - - assert response == "job started" - - assert ObanHelpers.member?( - %{ - "op" => "follow_import", - "follower_id" => user1.id, - "followed_identifiers" => [user2.ap_id] - }, - all_enqueued(worker: Pleroma.Workers.BackgroundWorker) - ) - end - end - - test "it imports new-style mastodon follow lists", %{conn: conn} do - user2 = insert(:user) - - response = - conn - |> post("/api/pleroma/follow_import", %{ - "list" => "Account address,Show boosts\n#{user2.ap_id},true" - }) - |> json_response(:ok) - - assert response == "job started" - end - - test "requires 'follow' or 'write:follows' permissions" do - token1 = insert(:oauth_token, scopes: ["read", "write"]) - token2 = insert(:oauth_token, scopes: ["follow"]) - token3 = insert(:oauth_token, scopes: ["something"]) - another_user = insert(:user) - - for token <- [token1, token2, token3] do - conn = - build_conn() - |> put_req_header("authorization", "Bearer #{token.token}") - |> post("/api/pleroma/follow_import", %{"list" => "#{another_user.ap_id}"}) - - if token == token3 do - assert %{"error" => "Insufficient permissions: follow | write:follows."} == - json_response(conn, 403) - else - assert json_response(conn, 200) - end - end - end - - test "it imports follows with different nickname variations", %{conn: conn} do - [user2, user3, user4, user5, user6] = insert_list(5, :user) - - identifiers = - [ - user2.ap_id, - user3.nickname, - " ", - "@" <> user4.nickname, - user5.nickname <> "@localhost", - "@" <> user6.nickname <> "@localhost" - ] - |> Enum.join("\n") - - response = - conn - |> post("/api/pleroma/follow_import", %{"list" => identifiers}) - |> json_response(:ok) - - assert response == "job started" - assert [{:ok, job_result}] = ObanHelpers.perform_all() - assert job_result == [user2, user3, user4, user5, user6] - end - end - - describe "POST /api/pleroma/blocks_import" do - # Note: "follow" or "write:blocks" permission is required - setup do: oauth_access(["write:blocks"]) - - test "it returns HTTP 200", %{conn: conn} do - user2 = insert(:user) - - response = - conn - |> post("/api/pleroma/blocks_import", %{"list" => "#{user2.ap_id}"}) - |> json_response(:ok) - - assert response == "job started" - end - - test "it imports blocks users from file", %{user: user1, conn: conn} do - user2 = insert(:user) - user3 = insert(:user) - - with_mocks([ - {File, [], read!: fn "blocks_list.txt" -> "#{user2.ap_id} #{user3.ap_id}" end} - ]) do - response = - conn - |> post("/api/pleroma/blocks_import", %{"list" => %Plug.Upload{path: "blocks_list.txt"}}) - |> json_response(:ok) - - assert response == "job started" - - assert ObanHelpers.member?( - %{ - "op" => "blocks_import", - "blocker_id" => user1.id, - "blocked_identifiers" => [user2.ap_id, user3.ap_id] - }, - all_enqueued(worker: Pleroma.Workers.BackgroundWorker) - ) - end - end - - test "it imports blocks with different nickname variations", %{conn: conn} do - [user2, user3, user4, user5, user6] = insert_list(5, :user) - - identifiers = - [ - user2.ap_id, - user3.nickname, - "@" <> user4.nickname, - user5.nickname <> "@localhost", - "@" <> user6.nickname <> "@localhost" - ] - |> Enum.join(" ") - - response = - conn - |> post("/api/pleroma/blocks_import", %{"list" => identifiers}) - |> json_response(:ok) - - assert response == "job started" - assert [{:ok, job_result}] = ObanHelpers.perform_all() - assert job_result == [user2, user3, user4, user5, user6] - end - end - describe "PUT /api/pleroma/notification_settings" do setup do: oauth_access(["write:accounts"]) From 917d325972e3aeb367583c61aaa109d62fcba837 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov <parallel588@gmail.com> Date: Mon, 7 Sep 2020 07:17:30 +0300 Subject: [PATCH 102/460] added api spec --- docs/API/pleroma_api.md | 4 +- .../operations/user_import_operation.ex | 80 +++++++++++++ .../controllers/user_import_controller.ex | 22 ++-- test/user/import_test.exs | 2 - .../user_import_controller_test.exs | 108 +++++++++++------- 5 files changed, 164 insertions(+), 52 deletions(-) create mode 100644 lib/pleroma/web/api_spec/operations/user_import_operation.ex diff --git a/docs/API/pleroma_api.md b/docs/API/pleroma_api.md index 22f3ad7d6..567ad5732 100644 --- a/docs/API/pleroma_api.md +++ b/docs/API/pleroma_api.md @@ -49,7 +49,7 @@ Request parameters can be passed via [query strings](https://en.wikipedia.org/wi * Method: `POST` * Authentication: required * Params: - * `list`: STRING or FILE containing a whitespace-separated list of accounts to follow + * `list`: STRING or FILE containing a whitespace-separated list of accounts to block * Response: HTTP 200 on success, 500 on error ## `/api/pleroma/mutes_import` @@ -57,7 +57,7 @@ Request parameters can be passed via [query strings](https://en.wikipedia.org/wi * Method: `POST` * Authentication: required * Params: - * `list`: STRING or FILE containing a whitespace-separated list of accounts to follow + * `list`: STRING or FILE containing a whitespace-separated list of accounts to mute * Response: HTTP 200 on success, 500 on error diff --git a/lib/pleroma/web/api_spec/operations/user_import_operation.ex b/lib/pleroma/web/api_spec/operations/user_import_operation.ex new file mode 100644 index 000000000..a50314fb7 --- /dev/null +++ b/lib/pleroma/web/api_spec/operations/user_import_operation.ex @@ -0,0 +1,80 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.UserImportOperation do + alias OpenApiSpex.Operation + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.ApiError + + import Pleroma.Web.ApiSpec.Helpers + + @spec open_api_operation(atom) :: Operation.t() + def open_api_operation(action) do + operation = String.to_existing_atom("#{action}_operation") + apply(__MODULE__, operation, []) + end + + def follow_operation do + %Operation{ + tags: ["follow_import"], + summary: "Imports your follows.", + operationId: "UserImportController.follow", + requestBody: request_body("Parameters", import_request(), required: true), + responses: %{ + 200 => ok_response(), + 500 => Operation.response("Error", "application/json", ApiError) + }, + security: [%{"oAuth" => ["write:follow"]}] + } + end + + def blocks_operation do + %Operation{ + tags: ["blocks_import"], + summary: "Imports your blocks.", + operationId: "UserImportController.blocks", + requestBody: request_body("Parameters", import_request(), required: true), + responses: %{ + 200 => ok_response(), + 500 => Operation.response("Error", "application/json", ApiError) + }, + security: [%{"oAuth" => ["write:blocks"]}] + } + end + + def mutes_operation do + %Operation{ + tags: ["mutes_import"], + summary: "Imports your mutes.", + operationId: "UserImportController.mutes", + requestBody: request_body("Parameters", import_request(), required: true), + responses: %{ + 200 => ok_response(), + 500 => Operation.response("Error", "application/json", ApiError) + }, + security: [%{"oAuth" => ["write:mutes"]}] + } + end + + defp import_request do + %Schema{ + type: :object, + required: [:list], + properties: %{ + list: %Schema{ + description: + "STRING or FILE containing a whitespace-separated list of accounts to import.", + anyOf: [ + %Schema{type: :string, format: :binary}, + %Schema{type: :string} + ] + } + } + } + end + + defp ok_response do + Operation.response("Ok", "application/json", %Schema{type: :string, example: "ok"}) + end +end diff --git a/lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex b/lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex index df6a0f131..f10c45750 100644 --- a/lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex @@ -9,16 +9,20 @@ defmodule Pleroma.Web.PleromaAPI.UserImportController do alias Pleroma.Plugs.OAuthScopesPlug alias Pleroma.User + alias Pleroma.Web.ApiSpec plug(OAuthScopesPlug, %{scopes: ["follow", "write:follows"]} when action == :follow) plug(OAuthScopesPlug, %{scopes: ["follow", "write:blocks"]} when action == :blocks) plug(OAuthScopesPlug, %{scopes: ["follow", "write:mutes"]} when action == :mutes) - def follow(conn, %{"list" => %Plug.Upload{path: path}}) do - follow(conn, %{"list" => File.read!(path)}) + plug(OpenApiSpex.Plug.CastAndValidate) + defdelegate open_api_operation(action), to: ApiSpec.UserImportOperation + + def follow(%{body_params: %{list: %Plug.Upload{path: path}}} = conn, _) do + follow(%Plug.Conn{conn | body_params: %{list: File.read!(path)}}, %{}) end - def follow(%{assigns: %{user: follower}} = conn, %{"list" => list}) do + def follow(%{assigns: %{user: follower}, body_params: %{list: list}} = conn, _) do identifiers = list |> String.split("\n") @@ -31,20 +35,20 @@ def follow(%{assigns: %{user: follower}} = conn, %{"list" => list}) do json(conn, "job started") end - def blocks(conn, %{"list" => %Plug.Upload{path: path}}) do - blocks(conn, %{"list" => File.read!(path)}) + def blocks(%{body_params: %{list: %Plug.Upload{path: path}}} = conn, _) do + blocks(%Plug.Conn{conn | body_params: %{list: File.read!(path)}}, %{}) end - def blocks(%{assigns: %{user: blocker}} = conn, %{"list" => list}) do + def blocks(%{assigns: %{user: blocker}, body_params: %{list: list}} = conn, _) do User.Import.blocks_import(blocker, prepare_user_identifiers(list)) json(conn, "job started") end - def mutes(conn, %{"list" => %Plug.Upload{path: path}}) do - mutes(conn, %{"list" => File.read!(path)}) + def mutes(%{body_params: %{list: %Plug.Upload{path: path}}} = conn, _) do + mutes(%Plug.Conn{conn | body_params: %{list: File.read!(path)}}, %{}) end - def mutes(%{assigns: %{user: user}} = conn, %{"list" => list}) do + def mutes(%{assigns: %{user: user}, body_params: %{list: list}} = conn, _) do User.Import.mutes_import(user, prepare_user_identifiers(list)) json(conn, "job started") end diff --git a/test/user/import_test.exs b/test/user/import_test.exs index 476b22678..e404deeb5 100644 --- a/test/user/import_test.exs +++ b/test/user/import_test.exs @@ -3,7 +3,6 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.User.ImportTest do - alias Pleroma.Repo alias Pleroma.Tests.ObanHelpers alias Pleroma.User @@ -37,7 +36,6 @@ test "it imports user followings from list" do end end - describe "blocks_import" do test "it imports user blocks from list" do [user1, user2, user3] = insert_list(3, :user) diff --git a/test/web/pleroma_api/controllers/user_import_controller_test.exs b/test/web/pleroma_api/controllers/user_import_controller_test.exs index d1a8a46fc..433c97e81 100644 --- a/test/web/pleroma_api/controllers/user_import_controller_test.exs +++ b/test/web/pleroma_api/controllers/user_import_controller_test.exs @@ -23,9 +23,11 @@ defmodule Pleroma.Web.PleromaAPI.UserImportControllerTest do test "it returns HTTP 200", %{conn: conn} do user2 = insert(:user) - assert "job started" == conn - |> post("/api/pleroma/follow_import", %{"list" => "#{user2.ap_id}"}) - |> json_response(:ok) + assert "job started" == + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/follow_import", %{"list" => "#{user2.ap_id}"}) + |> json_response_and_validate_schema(200) end test "it imports follow lists from file", %{conn: conn} do @@ -37,9 +39,13 @@ test "it imports follow lists from file", %{conn: conn} do "Account address,Show boosts\n#{user2.ap_id},true" end} ]) do - assert "job started" == conn - |> post("/api/pleroma/follow_import", %{"list" => %Plug.Upload{path: "follow_list.txt"}}) - |> json_response(:ok) + assert "job started" == + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/follow_import", %{ + "list" => %Plug.Upload{path: "follow_list.txt"} + }) + |> json_response_and_validate_schema(200) assert [{:ok, job_result}] = ObanHelpers.perform_all() assert job_result == [user2] @@ -49,11 +55,13 @@ test "it imports follow lists from file", %{conn: conn} do test "it imports new-style mastodon follow lists", %{conn: conn} do user2 = insert(:user) - response = conn - |> post("/api/pleroma/follow_import", %{ - "list" => "Account address,Show boosts\n#{user2.ap_id},true"} - ) - |> json_response(:ok) + response = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/follow_import", %{ + "list" => "Account address,Show boosts\n#{user2.ap_id},true" + }) + |> json_response_and_validate_schema(200) assert response == "job started" end @@ -68,6 +76,7 @@ test "requires 'follow' or 'write:follows' permissions" do conn = build_conn() |> put_req_header("authorization", "Bearer #{token.token}") + |> put_req_header("content-type", "application/json") |> post("/api/pleroma/follow_import", %{"list" => "#{another_user.ap_id}"}) if token == token3 do @@ -93,9 +102,11 @@ test "it imports follows with different nickname variations", %{conn: conn} do ] |> Enum.join("\n") - assert "job started" == conn - |> post("/api/pleroma/follow_import", %{"list" => identifiers}) - |> json_response(:ok) + assert "job started" == + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/follow_import", %{"list" => identifiers}) + |> json_response_and_validate_schema(200) assert [{:ok, job_result}] = ObanHelpers.perform_all() assert job_result == users @@ -109,9 +120,11 @@ test "it imports follows with different nickname variations", %{conn: conn} do test "it returns HTTP 200", %{conn: conn} do user2 = insert(:user) - assert "job started" == conn - |> post("/api/pleroma/blocks_import", %{"list" => "#{user2.ap_id}"}) - |> json_response(:ok) + assert "job started" == + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/blocks_import", %{"list" => "#{user2.ap_id}"}) + |> json_response_and_validate_schema(200) end test "it imports blocks users from file", %{conn: conn} do @@ -120,10 +133,13 @@ test "it imports blocks users from file", %{conn: conn} do with_mocks([ {File, [], read!: fn "blocks_list.txt" -> "#{user2.ap_id} #{user3.ap_id}" end} ]) do - - assert "job started" == conn - |> post("/api/pleroma/blocks_import", %{"list" => %Plug.Upload{path: "blocks_list.txt"}}) - |> json_response(:ok) + assert "job started" == + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/blocks_import", %{ + "list" => %Plug.Upload{path: "blocks_list.txt"} + }) + |> json_response_and_validate_schema(200) assert [{:ok, job_result}] = ObanHelpers.perform_all() assert job_result == users @@ -143,9 +159,11 @@ test "it imports blocks with different nickname variations", %{conn: conn} do ] |> Enum.join(" ") - assert "job started" == conn - |> post("/api/pleroma/blocks_import", %{"list" => identifiers}) - |> json_response(:ok) + assert "job started" == + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/blocks_import", %{"list" => identifiers}) + |> json_response_and_validate_schema(200) assert [{:ok, job_result}] = ObanHelpers.perform_all() assert job_result == users @@ -159,25 +177,30 @@ test "it imports blocks with different nickname variations", %{conn: conn} do test "it returns HTTP 200", %{user: user, conn: conn} do user2 = insert(:user) - assert "job started" == conn - |> post("/api/pleroma/mutes_import", %{"list" => "#{user2.ap_id}"}) - |> json_response(:ok) + assert "job started" == + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/mutes_import", %{"list" => "#{user2.ap_id}"}) + |> json_response_and_validate_schema(200) assert [{:ok, job_result}] = ObanHelpers.perform_all() assert job_result == [user2] assert Pleroma.User.mutes?(user, user2) end - test "it imports mutes users from file", %{user: user, conn: conn} do users = [user2, user3] = insert_list(2, :user) with_mocks([ {File, [], read!: fn "mutes_list.txt" -> "#{user2.ap_id} #{user3.ap_id}" end} ]) do - assert "job started" == conn - |> post("/api/pleroma/mutes_import", %{"list" => %Plug.Upload{path: "mutes_list.txt"}}) - |> json_response(:ok) + assert "job started" == + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/mutes_import", %{ + "list" => %Plug.Upload{path: "mutes_list.txt"} + }) + |> json_response_and_validate_schema(200) assert [{:ok, job_result}] = ObanHelpers.perform_all() assert job_result == users @@ -188,15 +211,22 @@ test "it imports mutes users from file", %{user: user, conn: conn} do test "it imports mutes with different nickname variations", %{user: user, conn: conn} do users = [user2, user3, user4, user5, user6] = insert_list(5, :user) - identifiers = [ - user2.ap_id, user3.nickname, "@" <> user4.nickname, - user5.nickname <> "@localhost", "@" <> user6.nickname <> "@localhost" - ] - |> Enum.join(" ") + identifiers = + [ + user2.ap_id, + user3.nickname, + "@" <> user4.nickname, + user5.nickname <> "@localhost", + "@" <> user6.nickname <> "@localhost" + ] + |> Enum.join(" ") + + assert "job started" == + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/mutes_import", %{"list" => identifiers}) + |> json_response_and_validate_schema(200) - assert "job started" == conn - |> post("/api/pleroma/mutes_import", %{"list" => identifiers}) - |> json_response(:ok) assert [{:ok, job_result}] = ObanHelpers.perform_all() assert job_result == users assert Enum.all?(users, &Pleroma.User.mutes?(user, &1)) From 08aef7dd4e054c5ed02e359b61fe57daad97fbde Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> Date: Sat, 5 Sep 2020 06:38:07 +0200 Subject: [PATCH 103/460] instance: Log catch favicon errors as warnings --- lib/pleroma/instances/instance.ex | 16 ++++++++++---- test/web/instances/instance_test.exs | 33 ++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index ef5d17de4..8bf53c090 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -14,6 +14,8 @@ defmodule Pleroma.Instances.Instance do import Ecto.Query import Ecto.Changeset + require Logger + schema "instances" do field(:host, :string) field(:unreachable_since, :naive_datetime_usec) @@ -146,7 +148,9 @@ def get_or_update_favicon(%URI{host: host} = instance_uri) do favicon end rescue - _ -> nil + e -> + Logger.warn("Instance.get_or_update_favicon(\"#{host}\") error: #{inspect(e)}") + nil end defp scrape_favicon(%URI{} = instance_uri) do @@ -161,14 +165,18 @@ defp scrape_favicon(%URI{} = instance_uri) do |> Floki.attribute("link[rel=icon]", "href") |> List.first(), favicon <- URI.merge(instance_uri, favicon_rel) |> to_string(), - true <- is_binary(favicon), - true <- String.length(favicon) <= 255 do + true <- is_binary(favicon) do favicon else _ -> nil end rescue - _ -> nil + e -> + Logger.warn( + "Instance.scrape_favicon(\"#{to_string(instance_uri)}\") error: #{inspect(e)}" + ) + + nil end end end diff --git a/test/web/instances/instance_test.exs b/test/web/instances/instance_test.exs index e463200ca..dc6ace843 100644 --- a/test/web/instances/instance_test.exs +++ b/test/web/instances/instance_test.exs @@ -8,6 +8,7 @@ defmodule Pleroma.Instances.InstanceTest do use Pleroma.DataCase + import ExUnit.CaptureLog import Pleroma.Factory setup_all do: clear_config([:instance, :federation_reachability_timeout_days], 1) @@ -97,4 +98,36 @@ test "does NOT modify `unreachable_since` value of existing record in case it's assert initial_value == instance.unreachable_since end end + + test "Scrapes favicon URLs" do + Tesla.Mock.mock(fn %{url: "https://favicon.example.org/"} -> + %Tesla.Env{ + status: 200, + body: ~s[<html><head><link rel="icon" href="/favicon.png"></head></html>] + } + end) + + assert "https://favicon.example.org/favicon.png" == + Instance.get_or_update_favicon(URI.parse("https://favicon.example.org/")) + end + + test "Returns nil on too long favicon URLs" do + long_favicon_url = + "https://Lorem.ipsum.dolor.sit.amet/consecteturadipiscingelit/Praesentpharetrapurusutaliquamtempus/Mauriseulaoreetarcu/atfacilisisorci/Nullamporttitor/nequesedfeugiatmollis/dolormagnaefficiturlorem/nonpretiumsapienorcieurisus/Nullamveleratsem/Maecenassedaccumsanexnam/favicon.png" + + Tesla.Mock.mock(fn %{url: "https://long-favicon.example.org/"} -> + %Tesla.Env{ + status: 200, + body: ~s[<html><head><link rel="icon" href="] <> long_favicon_url <> ~s["></head></html>] + } + end) + + assert capture_log(fn -> + assert nil == + Instance.get_or_update_favicon( + URI.parse("https://long-favicon.example.org/") + ) + end) =~ + "Instance.get_or_update_favicon(\"long-favicon.example.org\") error: %Postgrex.Error{" + end end From 1984ff310341766adfc224342c9d29272f80e9cb Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Mon, 7 Sep 2020 15:16:04 +0300 Subject: [PATCH 104/460] Add a changelog entry for hackney downgrade --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cdd5b94a8..25645c185 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Rich media failure tracking (along with `:failure_backoff` option) ### Fixed +- Possible OOM errors with the default HTTP adapter - Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers - Mastodon API: Timelines hanging for (`number of posts with links * rich media timeout`) in the worst case. Reduced to just rich media timeout. From 8628e1b216339eaf0c294aa8f01911a9399d912d Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Mon, 7 Sep 2020 15:21:20 +0300 Subject: [PATCH 105/460] switch back to upstream tesla The patch we required got merged upstream: https://github.com/teamon/tesla/commit/9f7261ca49f9f901ceb73b60219ad6f8a9f6aa30 --- mix.exs | 4 ++-- mix.lock | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mix.exs b/mix.exs index c324960c5..8f69a15f2 100644 --- a/mix.exs +++ b/mix.exs @@ -134,8 +134,8 @@ defp deps do {:cachex, "~> 3.2"}, {:poison, "~> 3.0", override: true}, {:tesla, - git: "https://git.pleroma.social/pleroma/elixir-libraries/tesla.git", - ref: "3a2789d8535f7b520ebbadc4494227e5ba0e5365", + git: "https://github.com/teamon/tesla/", + ref: "9f7261ca49f9f901ceb73b60219ad6f8a9f6aa30", override: true}, {:castore, "~> 0.1"}, {:cowlib, "~> 2.9", override: true}, diff --git a/mix.lock b/mix.lock index deb07eb68..058428e66 100644 --- a/mix.lock +++ b/mix.lock @@ -110,7 +110,7 @@ "swoosh": {:hex, :swoosh, "1.0.0", "c547cfc83f30e12d5d1fdcb623d7de2c2e29a5becfc68bf8f42ba4d23d2c2756", [:mix], [{:cowboy, "~> 1.0.1 or ~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}], "hexpm", "b3b08e463f876cb6167f7168e9ad99a069a724e124bcee61847e0e1ed13f4a0d"}, "syslog": {:hex, :syslog, "1.1.0", "6419a232bea84f07b56dc575225007ffe34d9fdc91abe6f1b2f254fd71d8efc2", [:rebar3], [], "hexpm", "4c6a41373c7e20587be33ef841d3de6f3beba08519809329ecc4d27b15b659e1"}, "telemetry": {:hex, :telemetry, "0.4.2", "2808c992455e08d6177322f14d3bdb6b625fbcfd233a73505870d8738a2f4599", [:rebar3], [], "hexpm", "2d1419bd9dda6a206d7b5852179511722e2b18812310d304620c7bd92a13fcef"}, - "tesla": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/tesla.git", "3a2789d8535f7b520ebbadc4494227e5ba0e5365", [ref: "3a2789d8535f7b520ebbadc4494227e5ba0e5365"]}, + "tesla": {:git, "https://github.com/teamon/tesla/", "9f7261ca49f9f901ceb73b60219ad6f8a9f6aa30", [ref: "9f7261ca49f9f901ceb73b60219ad6f8a9f6aa30"]}, "timex": {:hex, :timex, "3.6.2", "845cdeb6119e2fef10751c0b247b6c59d86d78554c83f78db612e3290f819bc2", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 0.1.8 or ~> 0.5 or ~> 1.0.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "26030b46199d02a590be61c2394b37ea25a3664c02fafbeca0b24c972025d47a"}, "trailing_format_plug": {:hex, :trailing_format_plug, "0.0.7", "64b877f912cf7273bed03379936df39894149e35137ac9509117e59866e10e45", [:mix], [{:plug, "> 0.12.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "bd4fde4c15f3e993a999e019d64347489b91b7a9096af68b2bdadd192afa693f"}, "tzdata": {:hex, :tzdata, "1.0.3", "73470ad29dde46e350c60a66e6b360d3b99d2d18b74c4c349dbebbc27a09a3eb", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "a6e1ee7003c4d04ecbd21dd3ec690d4c6662db5d3bbdd7262d53cdf5e7c746c1"}, From ee67c98e550310813cfdb9242e5fab2e566e1e2a Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Sun, 6 Sep 2020 12:13:26 +0300 Subject: [PATCH 106/460] removing Stats worker from Oban cron jobs --- CHANGELOG.md | 8 ++ config/config.exs | 3 +- config/description.exs | 1 - lib/mix/pleroma.ex | 1 + lib/pleroma/application.ex | 1 + lib/pleroma/config/oban.ex | 30 ++++++++ lib/pleroma/stats.ex | 76 ++++++++++++++----- lib/pleroma/workers/cron/stats_worker.ex | 17 ----- ...ove_cron_stats_worker_from_oban_config.exs | 19 +++++ test/stats_test.exs | 21 ++--- 10 files changed, 127 insertions(+), 50 deletions(-) create mode 100644 lib/pleroma/config/oban.ex delete mode 100644 lib/pleroma/workers/cron/stats_worker.ex create mode 100644 priv/repo/migrations/20200906072147_remove_cron_stats_worker_from_oban_config.exs diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e6353a4e..78aae6f07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,9 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## unreleased-patch - ??? ### Added + - Rich media failure tracking (along with `:failure_backoff` option) ### Fixed + - Possible OOM errors with the default HTTP adapter - Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers - Mastodon API: Timelines hanging for (`number of posts with links * rich media timeout`) in the worst case. @@ -16,6 +18,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mastodon API: Cards being wrong for preview statuses due to cache key collision - Password resets no longer processed for deactivated accounts +## Unreleased + +### Removed + +- **Breaking:** Removed `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab`. + ## [2.1.0] - 2020-08-28 ### Changed diff --git a/config/config.exs b/config/config.exs index ed37b93c0..d631c3962 100644 --- a/config/config.exs +++ b/config/config.exs @@ -546,7 +546,6 @@ plugins: [Oban.Plugins.Pruner], crontab: [ {"0 0 * * *", Pleroma.Workers.Cron.ClearOauthTokenWorker}, - {"0 * * * *", Pleroma.Workers.Cron.StatsWorker}, {"* * * * *", Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker}, {"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker}, {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker} @@ -672,7 +671,7 @@ # With no frontend configuration, the bundled files from the `static` directory will # be used. # -# config :pleroma, :frontends, +# config :pleroma, :frontends, # primary: %{"name" => "pleroma-fe", "ref" => "develop"}, # admin: %{"name" => "admin-fe", "ref" => "stable"}, # available: %{...} diff --git a/config/description.exs b/config/description.exs index 5e08ba109..18c133f02 100644 --- a/config/description.exs +++ b/config/description.exs @@ -2291,7 +2291,6 @@ description: "Settings for cron background jobs", suggestions: [ {"0 0 * * *", Pleroma.Workers.Cron.ClearOauthTokenWorker}, - {"0 * * * *", Pleroma.Workers.Cron.StatsWorker}, {"* * * * *", Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker}, {"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker}, {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker} diff --git a/lib/mix/pleroma.ex b/lib/mix/pleroma.ex index fe9b0d16c..49ba2aae4 100644 --- a/lib/mix/pleroma.ex +++ b/lib/mix/pleroma.ex @@ -18,6 +18,7 @@ defmodule Mix.Pleroma do @doc "Common functions to be reused in mix tasks" def start_pleroma do Pleroma.Config.Holder.save_default() + Pleroma.Config.Oban.warn() Application.put_env(:phoenix, :serve_endpoints, false, persistent: true) if Pleroma.Config.get(:env) != :test do diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 33b1e3872..c39e24919 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -50,6 +50,7 @@ def start(_type, _args) do Pleroma.Telemetry.Logger.attach() Config.Holder.save_default() Pleroma.HTML.compile_scrubbers() + Pleroma.Config.Oban.warn() Config.DeprecationWarnings.warn() Pleroma.Plugs.HTTPSecurityPlug.warn_if_disabled() Pleroma.ApplicationRequirements.verify!() diff --git a/lib/pleroma/config/oban.ex b/lib/pleroma/config/oban.ex new file mode 100644 index 000000000..c2d56ebab --- /dev/null +++ b/lib/pleroma/config/oban.ex @@ -0,0 +1,30 @@ +defmodule Pleroma.Config.Oban do + require Logger + + def warn do + oban_config = Pleroma.Config.get(Oban) + + crontab = + [Pleroma.Workers.Cron.StatsWorker] + |> Enum.reduce(oban_config[:crontab], fn removed_worker, acc -> + with acc when is_list(acc) <- acc, + setting when is_tuple(setting) <- + Enum.find(acc, fn {_, worker} -> worker == removed_worker end) do + """ + !!!OBAN CONFIG WARNING!!! + You are using old workers in Oban crontab settings, which were removed. + Please, remove setting from crontab in your config file (prod.secret.exs): #{ + inspect(setting) + } + """ + |> Logger.warn() + + List.delete(acc, setting) + else + _ -> acc + end + end) + + Pleroma.Config.put(Oban, Keyword.put(oban_config, :crontab, crontab)) + end +end diff --git a/lib/pleroma/stats.ex b/lib/pleroma/stats.ex index 9a03f01db..e7f8d272c 100644 --- a/lib/pleroma/stats.ex +++ b/lib/pleroma/stats.ex @@ -3,12 +3,15 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Stats do + use GenServer + import Ecto.Query + alias Pleroma.CounterCache alias Pleroma.Repo alias Pleroma.User - use GenServer + @interval :timer.seconds(60) def start_link(_) do GenServer.start_link( @@ -18,6 +21,11 @@ def start_link(_) do ) end + @impl true + def init(_args) do + {:ok, nil, {:continue, :calculate_stats}} + end + @doc "Performs update stats" def force_update do GenServer.call(__MODULE__, :force_update) @@ -29,7 +37,11 @@ def do_collect do end @doc "Returns stats data" - @spec get_stats() :: %{domain_count: integer(), status_count: integer(), user_count: integer()} + @spec get_stats() :: %{ + domain_count: non_neg_integer(), + status_count: non_neg_integer(), + user_count: non_neg_integer() + } def get_stats do %{stats: stats} = GenServer.call(__MODULE__, :get_state) @@ -44,25 +56,14 @@ def get_peers do peers end - def init(_args) do - {:ok, calculate_stat_data()} - end - - def handle_call(:force_update, _from, _state) do - new_stats = calculate_stat_data() - {:reply, new_stats, new_stats} - end - - def handle_call(:get_state, _from, state) do - {:reply, state, state} - end - - def handle_cast(:run_update, _state) do - new_stats = calculate_stat_data() - - {:noreply, new_stats} - end - + @spec calculate_stat_data() :: %{ + peers: list(), + stats: %{ + domain_count: non_neg_integer(), + status_count: non_neg_integer(), + user_count: non_neg_integer() + } + } def calculate_stat_data do peers = from( @@ -97,6 +98,7 @@ def calculate_stat_data do } end + @spec get_status_visibility_count(String.t() | nil) :: map() def get_status_visibility_count(instance \\ nil) do if is_nil(instance) do CounterCache.get_sum() @@ -104,4 +106,36 @@ def get_status_visibility_count(instance \\ nil) do CounterCache.get_by_instance(instance) end end + + @impl true + def handle_continue(:calculate_stats, _) do + stats = calculate_stat_data() + Process.send_after(self(), :run_update, @interval) + {:noreply, stats} + end + + @impl true + def handle_call(:force_update, _from, _state) do + new_stats = calculate_stat_data() + {:reply, new_stats, new_stats} + end + + @impl true + def handle_call(:get_state, _from, state) do + {:reply, state, state} + end + + @impl true + def handle_cast(:run_update, _state) do + new_stats = calculate_stat_data() + + {:noreply, new_stats} + end + + @impl true + def handle_info(:run_update, _) do + new_stats = calculate_stat_data() + Process.send_after(self(), :run_update, @interval) + {:noreply, new_stats} + end end diff --git a/lib/pleroma/workers/cron/stats_worker.ex b/lib/pleroma/workers/cron/stats_worker.ex deleted file mode 100644 index 6a79540bc..000000000 --- a/lib/pleroma/workers/cron/stats_worker.ex +++ /dev/null @@ -1,17 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Workers.Cron.StatsWorker do - @moduledoc """ - The worker to update peers statistics. - """ - - use Oban.Worker, queue: "background" - - @impl Oban.Worker - def perform(_job) do - Pleroma.Stats.do_collect() - :ok - end -end diff --git a/priv/repo/migrations/20200906072147_remove_cron_stats_worker_from_oban_config.exs b/priv/repo/migrations/20200906072147_remove_cron_stats_worker_from_oban_config.exs new file mode 100644 index 000000000..022f21dc7 --- /dev/null +++ b/priv/repo/migrations/20200906072147_remove_cron_stats_worker_from_oban_config.exs @@ -0,0 +1,19 @@ +defmodule Pleroma.Repo.Migrations.RemoveCronStatsWorkerFromObanConfig do + use Ecto.Migration + + def change do + with %Pleroma.ConfigDB{} = config <- + Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: Oban}), + crontab when is_list(crontab) <- config.value[:crontab], + index when is_integer(index) <- + Enum.find_index(crontab, fn {_, worker} -> + worker == Pleroma.Workers.Cron.StatsWorker + end) do + updated_value = Keyword.put(config.value, :crontab, List.delete_at(crontab, index)) + + config + |> Ecto.Changeset.change(value: updated_value) + |> Pleroma.Repo.update() + end + end +end diff --git a/test/stats_test.exs b/test/stats_test.exs index f09d8d31a..74bf785b0 100644 --- a/test/stats_test.exs +++ b/test/stats_test.exs @@ -4,7 +4,10 @@ defmodule Pleroma.StatsTest do use Pleroma.DataCase + import Pleroma.Factory + + alias Pleroma.Stats alias Pleroma.Web.CommonAPI describe "user count" do @@ -13,7 +16,7 @@ test "it ignores internal users" do _internal = insert(:user, local: true, nickname: nil) _internal = Pleroma.Web.ActivityPub.Relay.get_actor() - assert match?(%{stats: %{user_count: 1}}, Pleroma.Stats.calculate_stat_data()) + assert match?(%{stats: %{user_count: 1}}, Stats.calculate_stat_data()) end end @@ -47,23 +50,23 @@ test "on new status" do end) assert %{"direct" => 3, "private" => 4, "public" => 1, "unlisted" => 2} = - Pleroma.Stats.get_status_visibility_count() + Stats.get_status_visibility_count() end test "on status delete" do user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{visibility: "public", status: "hey"}) - assert %{"public" => 1} = Pleroma.Stats.get_status_visibility_count() + assert %{"public" => 1} = Stats.get_status_visibility_count() CommonAPI.delete(activity.id, user) - assert %{"public" => 0} = Pleroma.Stats.get_status_visibility_count() + assert %{"public" => 0} = Stats.get_status_visibility_count() end test "on status visibility update" do user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{visibility: "public", status: "hey"}) - assert %{"public" => 1, "private" => 0} = Pleroma.Stats.get_status_visibility_count() + assert %{"public" => 1, "private" => 0} = Stats.get_status_visibility_count() {:ok, _} = CommonAPI.update_activity_scope(activity.id, %{visibility: "private"}) - assert %{"public" => 0, "private" => 1} = Pleroma.Stats.get_status_visibility_count() + assert %{"public" => 0, "private" => 1} = Stats.get_status_visibility_count() end test "doesn't count unrelated activities" do @@ -75,7 +78,7 @@ test "doesn't count unrelated activities" do CommonAPI.repeat(activity.id, other_user) assert %{"direct" => 0, "private" => 0, "public" => 1, "unlisted" => 0} = - Pleroma.Stats.get_status_visibility_count() + Stats.get_status_visibility_count() end end @@ -110,10 +113,10 @@ test "single instance" do end) assert %{"direct" => 10, "private" => 0, "public" => 1, "unlisted" => 5} = - Pleroma.Stats.get_status_visibility_count(local_instance) + Stats.get_status_visibility_count(local_instance) assert %{"direct" => 0, "private" => 20, "public" => 0, "unlisted" => 0} = - Pleroma.Stats.get_status_visibility_count(instance2) + Stats.get_status_visibility_count(instance2) end end end From 8c6485c470c1a7cd6ec4b63867d94e9724c4502b Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Mon, 7 Sep 2020 19:22:56 +0300 Subject: [PATCH 107/460] CHANGELOG.md: move Unreleased section ahead of unreleased-patch --- CHANGELOG.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 78aae6f07..46f1e859b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## Unreleased + +### Removed + +- **Breaking:** Removed `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab`. + + ## unreleased-patch - ??? ### Added @@ -18,11 +25,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mastodon API: Cards being wrong for preview statuses due to cache key collision - Password resets no longer processed for deactivated accounts -## Unreleased - -### Removed - -- **Breaking:** Removed `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab`. ## [2.1.0] - 2020-08-28 From a83916fdacac7b11ca478ef9a61b32dd269c8fd2 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Fri, 4 Sep 2020 19:05:08 +0300 Subject: [PATCH 108/460] adapter options unification not needed options deletion --- config/config.exs | 10 +++++----- config/description.exs | 8 +++++++- docs/configuration/cheatsheet.md | 4 ++-- lib/mix/tasks/pleroma/frontend.ex | 4 +--- lib/pleroma/gun/conn.ex | 8 ++++---- lib/pleroma/http/adapter_helper.ex | 2 +- lib/pleroma/http/adapter_helper/gun.ex | 14 ++++++-------- lib/pleroma/http/adapter_helper/hackney.ex | 14 ++++++++++---- .../mrf/media_proxy_warming_policy.ex | 12 +++--------- lib/pleroma/web/rel_me.ex | 15 +++------------ lib/pleroma/web/rich_media/helpers.ex | 19 +++++-------------- 11 files changed, 47 insertions(+), 63 deletions(-) diff --git a/config/config.exs b/config/config.exs index d631c3962..2426fbd52 100644 --- a/config/config.exs +++ b/config/config.exs @@ -735,28 +735,28 @@ max_connections: 250, max_idle_time: 30_000, retry: 0, - await_up_timeout: 5_000 + connect_timeout: 5_000 config :pleroma, :pools, federation: [ size: 50, max_waiting: 10, - timeout: 10_000 + recv_timeout: 10_000 ], media: [ size: 50, max_waiting: 10, - timeout: 10_000 + recv_timeout: 10_000 ], upload: [ size: 25, max_waiting: 5, - timeout: 15_000 + recv_timeout: 15_000 ], default: [ size: 10, max_waiting: 2, - timeout: 5_000 + recv_timeout: 5_000 ] config :pleroma, :hackney_pools, diff --git a/config/description.exs b/config/description.exs index 18c133f02..eac97ad64 100644 --- a/config/description.exs +++ b/config/description.exs @@ -3377,7 +3377,7 @@ suggestions: [250] }, %{ - key: :await_up_timeout, + key: :connect_timeout, type: :integer, description: "Timeout while `gun` will wait until connection is up. Default: 5000ms.", suggestions: [5000] @@ -3415,6 +3415,12 @@ description: "Maximum number of requests waiting for other requests to finish. After this number is reached, the pool will start returning errrors when a new request is made", suggestions: [10] + }, + %{ + key: :recv_timeout, + type: :integer, + description: "Timeout for the pool while gun will wait for response", + suggestions: [10_000] } ] } diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index a9a650fab..7f0725b48 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -498,7 +498,7 @@ Settings for HTTP connection pool. * `:connection_acquisition_wait` - Timeout to acquire a connection from pool.The total max time is this value multiplied by the number of retries. * `connection_acquisition_retries` - Number of attempts to acquire the connection from the pool if it is overloaded. Each attempt is timed `:connection_acquisition_wait` apart. * `:max_connections` - Maximum number of connections in the pool. -* `:await_up_timeout` - Timeout to connect to the host. +* `:connect_timeout` - Timeout to connect to the host. * `:reclaim_multiplier` - Multiplied by `:max_connections` this will be the maximum number of idle connections that will be reclaimed in case the pool is overloaded. ### :pools @@ -517,7 +517,7 @@ There are four pools used: For each pool, the options are: * `:size` - limit to how much requests can be concurrently executed. -* `:timeout` - timeout while `gun` will wait for response +* `:recv_timeout` - timeout while `gun` will wait for response * `:max_waiting` - limit to how much requests can be waiting for others to finish, after this is reached, subsequent requests will be dropped. ## Captcha diff --git a/lib/mix/tasks/pleroma/frontend.ex b/lib/mix/tasks/pleroma/frontend.ex index 1957b1d84..73df67439 100644 --- a/lib/mix/tasks/pleroma/frontend.ex +++ b/lib/mix/tasks/pleroma/frontend.ex @@ -124,9 +124,7 @@ defp download_build(frontend_info, dest) do url = String.replace(frontend_info["build_url"], "${ref}", frontend_info["ref"]) with {:ok, %{status: 200, body: zip_body}} <- - Pleroma.HTTP.get(url, [], - adapter: [pool: :media, timeout: 120_000, recv_timeout: 120_000] - ) do + Pleroma.HTTP.get(url, [], adapter: [pool: :media, recv_timeout: 120_000]) do unzip(zip_body, dest) else e -> {:error, e} diff --git a/lib/pleroma/gun/conn.ex b/lib/pleroma/gun/conn.ex index a3f75a4bb..75b1ffc0a 100644 --- a/lib/pleroma/gun/conn.ex +++ b/lib/pleroma/gun/conn.ex @@ -13,7 +13,7 @@ def open(%URI{} = uri, opts) do opts = opts |> Enum.into(%{}) - |> Map.put_new(:await_up_timeout, pool_opts[:await_up_timeout] || 5_000) + |> Map.put_new(:connect_timeout, pool_opts[:connect_timeout] || 5_000) |> Map.put_new(:supervise, false) |> maybe_add_tls_opts(uri) @@ -50,7 +50,7 @@ defp do_open(uri, %{proxy: {proxy_host, proxy_port}} = opts) do with open_opts <- Map.delete(opts, :tls_opts), {:ok, conn} <- Gun.open(proxy_host, proxy_port, open_opts), - {:ok, _} <- Gun.await_up(conn, opts[:await_up_timeout]), + {:ok, _} <- Gun.await_up(conn, opts[:connect_timeout]), stream <- Gun.connect(conn, connect_opts), {:response, :fin, 200, _} <- Gun.await(conn, stream) do {:ok, conn} @@ -88,7 +88,7 @@ defp do_open(uri, %{proxy: {proxy_type, proxy_host, proxy_port}} = opts) do |> Map.put(:socks_opts, socks_opts) with {:ok, conn} <- Gun.open(proxy_host, proxy_port, opts), - {:ok, _} <- Gun.await_up(conn, opts[:await_up_timeout]) do + {:ok, _} <- Gun.await_up(conn, opts[:connect_timeout]) do {:ok, conn} else error -> @@ -106,7 +106,7 @@ defp do_open(%URI{host: host, port: port} = uri, opts) do host = Pleroma.HTTP.AdapterHelper.parse_host(host) with {:ok, conn} <- Gun.open(host, port, opts), - {:ok, _} <- Gun.await_up(conn, opts[:await_up_timeout]) do + {:ok, _} <- Gun.await_up(conn, opts[:connect_timeout]) do {:ok, conn} else error -> diff --git a/lib/pleroma/http/adapter_helper.ex b/lib/pleroma/http/adapter_helper.ex index d72297323..08b51578a 100644 --- a/lib/pleroma/http/adapter_helper.ex +++ b/lib/pleroma/http/adapter_helper.ex @@ -6,7 +6,7 @@ defmodule Pleroma.HTTP.AdapterHelper do @moduledoc """ Configure Tesla.Client with default and customized adapter options. """ - @defaults [pool: :federation] + @defaults [pool: :federation, connect_timeout: 5_000, recv_timeout: 5_000] @type proxy_type() :: :socks4 | :socks5 @type host() :: charlist() | :inet.ip_address() diff --git a/lib/pleroma/http/adapter_helper/gun.ex b/lib/pleroma/http/adapter_helper/gun.ex index 4a967d8f2..1dbb71362 100644 --- a/lib/pleroma/http/adapter_helper/gun.ex +++ b/lib/pleroma/http/adapter_helper/gun.ex @@ -11,12 +11,8 @@ defmodule Pleroma.HTTP.AdapterHelper.Gun do require Logger @defaults [ - connect_timeout: 5_000, - domain_lookup_timeout: 5_000, - tls_handshake_timeout: 5_000, retry: 1, - retry_timeout: 1000, - await_up_timeout: 5_000 + retry_timeout: 1_000 ] @type pool() :: :federation | :upload | :media | :default @@ -45,15 +41,17 @@ defp add_scheme_opts(opts, %{scheme: "https"}) do end defp put_timeout(opts) do + {recv_timeout, opts} = Keyword.pop(opts, :recv_timeout, pool_timeout(opts[:pool])) # this is the timeout to receive a message from Gun - Keyword.put_new(opts, :timeout, pool_timeout(opts[:pool])) + # `:timeout` key is used in Tesla + Keyword.put(opts, :timeout, recv_timeout) end @spec pool_timeout(pool()) :: non_neg_integer() def pool_timeout(pool) do - default = Config.get([:pools, :default, :timeout], 5_000) + default = Config.get([:pools, :default, :recv_timeout], 5_000) - Config.get([:pools, pool, :timeout], default) + Config.get([:pools, pool, :recv_timeout], default) end @prefix Pleroma.Gun.ConnectionPool diff --git a/lib/pleroma/http/adapter_helper/hackney.ex b/lib/pleroma/http/adapter_helper/hackney.ex index 42e3acfec..ef84553c1 100644 --- a/lib/pleroma/http/adapter_helper/hackney.ex +++ b/lib/pleroma/http/adapter_helper/hackney.ex @@ -2,11 +2,8 @@ defmodule Pleroma.HTTP.AdapterHelper.Hackney do @behaviour Pleroma.HTTP.AdapterHelper @defaults [ - connect_timeout: 10_000, - recv_timeout: 20_000, follow_redirect: true, - force_redirect: true, - pool: :federation + force_redirect: true ] @spec options(keyword(), URI.t()) :: keyword() @@ -19,6 +16,7 @@ def options(connection_opts \\ [], %URI{} = uri) do |> Keyword.merge(config_opts) |> Keyword.merge(connection_opts) |> add_scheme_opts(uri) + |> maybe_add_with_body() |> Pleroma.HTTP.AdapterHelper.maybe_add_proxy(proxy) end @@ -27,4 +25,12 @@ defp add_scheme_opts(opts, %URI{scheme: "https"}) do end defp add_scheme_opts(opts, _), do: opts + + defp maybe_add_with_body(opts) do + if opts[:max_body] do + Keyword.put(opts, :with_body, true) + else + opts + end + end end diff --git a/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex b/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex index dfab105a3..a203405a0 100644 --- a/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex @@ -13,22 +13,16 @@ defmodule Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy do require Logger @options [ - pool: :media + pool: :media, + recv_timeout: 10_000 ] def perform(:prefetch, url) do Logger.debug("Prefetching #{inspect(url)}") - opts = - if Application.get_env(:tesla, :adapter) == Tesla.Adapter.Hackney do - Keyword.put(@options, :recv_timeout, 10_000) - else - @options - end - url |> MediaProxy.url() - |> HTTP.get([], adapter: opts) + |> HTTP.get([], adapter: @options) end def perform(:preload, %{"object" => %{"attachment" => attachments}} = _message) do diff --git a/lib/pleroma/web/rel_me.ex b/lib/pleroma/web/rel_me.ex index 8e2b51508..32bce3c1b 100644 --- a/lib/pleroma/web/rel_me.ex +++ b/lib/pleroma/web/rel_me.ex @@ -5,7 +5,8 @@ defmodule Pleroma.Web.RelMe do @options [ pool: :media, - max_body: 2_000_000 + max_body: 2_000_000, + recv_timeout: 2_000 ] if Pleroma.Config.get(:env) == :test do @@ -23,18 +24,8 @@ def parse(url) when is_binary(url) do def parse(_), do: {:error, "No URL provided"} defp parse_url(url) do - opts = - if Application.get_env(:tesla, :adapter) == Tesla.Adapter.Hackney do - Keyword.merge(@options, - recv_timeout: 2_000, - with_body: true - ) - else - @options - end - with {:ok, %Tesla.Env{body: html, status: status}} when status in 200..299 <- - Pleroma.HTTP.get(url, [], adapter: opts), + Pleroma.HTTP.get(url, [], adapter: @options), {:ok, html_tree} <- Floki.parse_document(html), data <- Floki.attribute(html_tree, "link[rel~=me]", "href") ++ diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex index 752ca9f81..084a66466 100644 --- a/lib/pleroma/web/rich_media/helpers.ex +++ b/lib/pleroma/web/rich_media/helpers.ex @@ -9,14 +9,15 @@ defmodule Pleroma.Web.RichMedia.Helpers do alias Pleroma.Object alias Pleroma.Web.RichMedia.Parser - @rich_media_options [ + @options [ pool: :media, - max_body: 2_000_000 + max_body: 2_000_000, + recv_timeout: 2_000 ] @spec validate_page_url(URI.t() | binary()) :: :ok | :error defp validate_page_url(page_url) when is_binary(page_url) do - validate_tld = Pleroma.Config.get([Pleroma.Formatter, :validate_tld]) + validate_tld = Config.get([Pleroma.Formatter, :validate_tld]) page_url |> Linkify.Parser.url?(validate_tld: validate_tld) @@ -86,16 +87,6 @@ def perform(:fetch, %Activity{} = activity) do def rich_media_get(url) do headers = [{"user-agent", Pleroma.Application.user_agent() <> "; Bot"}] - options = - if Application.get_env(:tesla, :adapter) == Tesla.Adapter.Hackney do - Keyword.merge(@rich_media_options, - recv_timeout: 2_000, - with_body: true - ) - else - @rich_media_options - end - - Pleroma.HTTP.get(url, headers, adapter: options) + Pleroma.HTTP.get(url, headers, adapter: @options) end end From 8a3d43044a06488545490a89e29c8349d914f164 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Sat, 5 Sep 2020 12:41:01 +0300 Subject: [PATCH 109/460] migrations for renaming gun timeout options --- ...e_await_up_timeout_in_connections_pool.exs | 13 +++++++++++++ ...20200905091427_rename_timeout_in_pools.exs | 19 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 priv/repo/migrations/20200905082737_rename_await_up_timeout_in_connections_pool.exs create mode 100644 priv/repo/migrations/20200905091427_rename_timeout_in_pools.exs diff --git a/priv/repo/migrations/20200905082737_rename_await_up_timeout_in_connections_pool.exs b/priv/repo/migrations/20200905082737_rename_await_up_timeout_in_connections_pool.exs new file mode 100644 index 000000000..22c40663c --- /dev/null +++ b/priv/repo/migrations/20200905082737_rename_await_up_timeout_in_connections_pool.exs @@ -0,0 +1,13 @@ +defmodule Pleroma.Repo.Migrations.RenameAwaitUpTimeoutInConnectionsPool do + use Ecto.Migration + + def change do + with %Pleroma.ConfigDB{} = config <- + Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: :connections_pool}), + {timeout, value} when is_integer(timeout) <- Keyword.pop(config.value, :await_up_timeout) do + config + |> Ecto.Changeset.change(value: Keyword.put(value, :connect_timeout, timeout)) + |> Pleroma.Repo.update() + end + end +end diff --git a/priv/repo/migrations/20200905091427_rename_timeout_in_pools.exs b/priv/repo/migrations/20200905091427_rename_timeout_in_pools.exs new file mode 100644 index 000000000..bb2f50ecc --- /dev/null +++ b/priv/repo/migrations/20200905091427_rename_timeout_in_pools.exs @@ -0,0 +1,19 @@ +defmodule Pleroma.Repo.Migrations.RenameTimeoutInPools do + use Ecto.Migration + + def change do + with %Pleroma.ConfigDB{} = config <- + Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: :pools}) do + updated_value = + Enum.map(config.value, fn {pool, pool_value} -> + with {timeout, value} when is_integer(timeout) <- Keyword.pop(pool_value, :timeout) do + {pool, Keyword.put(value, :recv_timeout, timeout)} + end + end) + + config + |> Ecto.Changeset.change(value: updated_value) + |> Pleroma.Repo.update() + end + end +end From 696bf09433aa7f33cf580c71cb7f1f3367d4c124 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Mon, 7 Sep 2020 16:57:42 +0300 Subject: [PATCH 110/460] passing adapter options directly without adapter key --- config/test.exs | 2 +- lib/mix/tasks/pleroma/benchmark.ex | 11 ++--- lib/mix/tasks/pleroma/frontend.ex | 2 +- lib/pleroma/http/ex_aws.ex | 2 +- lib/pleroma/http/http.ex | 2 +- lib/pleroma/http/tzdata.ex | 4 +- .../mrf/media_proxy_warming_policy.ex | 2 +- lib/pleroma/web/rel_me.ex | 2 +- lib/pleroma/web/rich_media/helpers.ex | 2 +- test/web/instances/instance_test.exs | 2 + .../mastodon_api/views/account_view_test.exs | 40 ++++++++++--------- 11 files changed, 36 insertions(+), 35 deletions(-) diff --git a/config/test.exs b/config/test.exs index f0358e384..e9c2273e8 100644 --- a/config/test.exs +++ b/config/test.exs @@ -114,7 +114,7 @@ config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: true -config :pleroma, :instances_favicons, enabled: true +config :pleroma, :instances_favicons, enabled: false config :pleroma, Pleroma.Uploaders.S3, bucket: nil, diff --git a/lib/mix/tasks/pleroma/benchmark.ex b/lib/mix/tasks/pleroma/benchmark.ex index dd2b9c8f2..a607d5d4f 100644 --- a/lib/mix/tasks/pleroma/benchmark.ex +++ b/lib/mix/tasks/pleroma/benchmark.ex @@ -91,20 +91,17 @@ def run(["adapters"]) do "Without conn and without pool" => fn -> {:ok, %Tesla.Env{}} = Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500", [], - adapter: [pool: :no_pool, receive_conn: false] + pool: :no_pool, + receive_conn: false ) end, "Without conn and with pool" => fn -> {:ok, %Tesla.Env{}} = - Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500", [], - adapter: [receive_conn: false] - ) + Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500", [], receive_conn: false) end, "With reused conn and without pool" => fn -> {:ok, %Tesla.Env{}} = - Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500", [], - adapter: [pool: :no_pool] - ) + Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500", [], pool: :no_pool) end, "With reused conn and with pool" => fn -> {:ok, %Tesla.Env{}} = Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500") diff --git a/lib/mix/tasks/pleroma/frontend.ex b/lib/mix/tasks/pleroma/frontend.ex index 73df67439..cbce81ab9 100644 --- a/lib/mix/tasks/pleroma/frontend.ex +++ b/lib/mix/tasks/pleroma/frontend.ex @@ -124,7 +124,7 @@ defp download_build(frontend_info, dest) do url = String.replace(frontend_info["build_url"], "${ref}", frontend_info["ref"]) with {:ok, %{status: 200, body: zip_body}} <- - Pleroma.HTTP.get(url, [], adapter: [pool: :media, recv_timeout: 120_000]) do + Pleroma.HTTP.get(url, [], pool: :media, recv_timeout: 120_000) do unzip(zip_body, dest) else e -> {:error, e} diff --git a/lib/pleroma/http/ex_aws.ex b/lib/pleroma/http/ex_aws.ex index c3f335c73..5cac3532f 100644 --- a/lib/pleroma/http/ex_aws.ex +++ b/lib/pleroma/http/ex_aws.ex @@ -11,7 +11,7 @@ defmodule Pleroma.HTTP.ExAws do @impl true def request(method, url, body \\ "", headers \\ [], http_opts \\ []) do - http_opts = Keyword.put_new(http_opts, :adapter, pool: :upload) + http_opts = Keyword.put_new(http_opts, :pool, :upload) case HTTP.request(method, url, body, headers, http_opts) do {:ok, env} -> diff --git a/lib/pleroma/http/http.ex b/lib/pleroma/http/http.ex index 7bc73f4a0..052597191 100644 --- a/lib/pleroma/http/http.ex +++ b/lib/pleroma/http/http.ex @@ -60,7 +60,7 @@ def post(url, body, headers \\ [], options \\ []), {:ok, Env.t()} | {:error, any()} def request(method, url, body, headers, options) when is_binary(url) do uri = URI.parse(url) - adapter_opts = AdapterHelper.options(uri, options[:adapter] || []) + adapter_opts = AdapterHelper.options(uri, options || []) options = put_in(options[:adapter], adapter_opts) params = options[:params] || [] diff --git a/lib/pleroma/http/tzdata.ex b/lib/pleroma/http/tzdata.ex index 4539ac359..09cfdadf7 100644 --- a/lib/pleroma/http/tzdata.ex +++ b/lib/pleroma/http/tzdata.ex @@ -11,7 +11,7 @@ defmodule Pleroma.HTTP.Tzdata do @impl true def get(url, headers, options) do - options = Keyword.put_new(options, :adapter, pool: :default) + options = Keyword.put_new(options, :pool, :default) with {:ok, %Tesla.Env{} = env} <- HTTP.get(url, headers, options) do {:ok, {env.status, env.headers, env.body}} @@ -20,7 +20,7 @@ def get(url, headers, options) do @impl true def head(url, headers, options) do - options = Keyword.put_new(options, :adapter, pool: :default) + options = Keyword.put_new(options, :pool, :default) with {:ok, %Tesla.Env{} = env} <- HTTP.head(url, headers, options) do {:ok, {env.status, env.headers}} diff --git a/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex b/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex index a203405a0..98d595469 100644 --- a/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex @@ -22,7 +22,7 @@ def perform(:prefetch, url) do url |> MediaProxy.url() - |> HTTP.get([], adapter: @options) + |> HTTP.get([], @options) end def perform(:preload, %{"object" => %{"attachment" => attachments}} = _message) do diff --git a/lib/pleroma/web/rel_me.ex b/lib/pleroma/web/rel_me.ex index 32bce3c1b..28f75b18d 100644 --- a/lib/pleroma/web/rel_me.ex +++ b/lib/pleroma/web/rel_me.ex @@ -25,7 +25,7 @@ def parse(_), do: {:error, "No URL provided"} defp parse_url(url) do with {:ok, %Tesla.Env{body: html, status: status}} when status in 200..299 <- - Pleroma.HTTP.get(url, [], adapter: @options), + Pleroma.HTTP.get(url, [], @options), {:ok, html_tree} <- Floki.parse_document(html), data <- Floki.attribute(html_tree, "link[rel~=me]", "href") ++ diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex index 084a66466..bd7f03cbe 100644 --- a/lib/pleroma/web/rich_media/helpers.ex +++ b/lib/pleroma/web/rich_media/helpers.ex @@ -87,6 +87,6 @@ def perform(:fetch, %Activity{} = activity) do def rich_media_get(url) do headers = [{"user-agent", Pleroma.Application.user_agent() <> "; Bot"}] - Pleroma.HTTP.get(url, headers, adapter: @options) + Pleroma.HTTP.get(url, headers, @options) end end diff --git a/test/web/instances/instance_test.exs b/test/web/instances/instance_test.exs index dc6ace843..5d4efcebe 100644 --- a/test/web/instances/instance_test.exs +++ b/test/web/instances/instance_test.exs @@ -112,6 +112,8 @@ test "Scrapes favicon URLs" do end test "Returns nil on too long favicon URLs" do + clear_config([:instances_favicons, :enabled], true) + long_favicon_url = "https://Lorem.ipsum.dolor.sit.amet/consecteturadipiscingelit/Praesentpharetrapurusutaliquamtempus/Mauriseulaoreetarcu/atfacilisisorci/Nullamporttitor/nequesedfeugiatmollis/dolormagnaefficiturlorem/nonpretiumsapienorcieurisus/Nullamveleratsem/Maecenassedaccumsanexnam/favicon.png" diff --git a/test/web/mastodon_api/views/account_view_test.exs b/test/web/mastodon_api/views/account_view_test.exs index 8f37efa3c..68a5d0091 100644 --- a/test/web/mastodon_api/views/account_view_test.exs +++ b/test/web/mastodon_api/views/account_view_test.exs @@ -5,7 +5,6 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do use Pleroma.DataCase - alias Pleroma.Config alias Pleroma.User alias Pleroma.UserRelationship alias Pleroma.Web.CommonAPI @@ -19,8 +18,6 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do :ok end - setup do: clear_config([:instances_favicons, :enabled]) - test "Represent a user account" do background_image = %{ "url" => [%{"href" => "https://example.com/images/asuka_hospital.png"}] @@ -78,8 +75,7 @@ test "Represent a user account" do pleroma: %{ ap_id: user.ap_id, background_image: "https://example.com/images/asuka_hospital.png", - favicon: - "https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-16x16.png", + favicon: nil, confirmation_pending: false, tags: [], is_admin: false, @@ -98,22 +94,29 @@ test "Represent a user account" do assert expected == AccountView.render("show.json", %{user: user, skip_visibility_check: true}) end - test "Favicon is nil when :instances_favicons is disabled" do - user = insert(:user) + describe "favicon" do + setup do + [user: insert(:user)] + end - Config.put([:instances_favicons, :enabled], true) + test "is parsed when :instance_favicons is enabled", %{user: user} do + clear_config([:instances_favicons, :enabled], true) - assert %{ - pleroma: %{ - favicon: - "https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-16x16.png" - } - } = AccountView.render("show.json", %{user: user, skip_visibility_check: true}) + assert %{ + pleroma: %{ + favicon: + "https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-16x16.png" + } + } = AccountView.render("show.json", %{user: user, skip_visibility_check: true}) + end - Config.put([:instances_favicons, :enabled], false) + test "is nil when :instances_favicons is disabled", %{user: user} do + assert %{pleroma: %{favicon: nil}} = + AccountView.render("show.json", %{user: user, skip_visibility_check: true}) + end + end - assert %{pleroma: %{favicon: nil}} = - AccountView.render("show.json", %{user: user, skip_visibility_check: true}) + test "Favicon when :instance_favicons is enabled" do end test "Represent the user account for the account owner" do @@ -173,8 +176,7 @@ test "Represent a Service(bot) account" do pleroma: %{ ap_id: user.ap_id, background_image: nil, - favicon: - "https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-16x16.png", + favicon: nil, confirmation_pending: false, tags: [], is_admin: false, From 18d21aed00dcbdaabd7db25b8b7d0c88141ec98a Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Mon, 7 Sep 2020 19:04:16 +0300 Subject: [PATCH 111/460] deprecation warnings --- lib/pleroma/config/deprecation_warnings.ex | 43 ++++++++++++++++ test/config/deprecation_warnings_test.exs | 59 +++++++++++++++++++--- 2 files changed, 96 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/config/deprecation_warnings.ex b/lib/pleroma/config/deprecation_warnings.ex index 0f52eb210..2bfe4ddba 100644 --- a/lib/pleroma/config/deprecation_warnings.ex +++ b/lib/pleroma/config/deprecation_warnings.ex @@ -56,6 +56,7 @@ def warn do check_old_mrf_config() check_media_proxy_whitelist_config() check_welcome_message_config() + check_gun_pool_options() end def check_welcome_message_config do @@ -115,4 +116,46 @@ def check_media_proxy_whitelist_config do """) end end + + def check_gun_pool_options do + pool_config = Config.get(:connections_pool) + + if timeout = pool_config[:await_up_timeout] do + Logger.warn(""" + !!!DEPRECATION WARNING!!! + Your config is using old setting name `await_up_timeout` instead of `connect_timeout`. Setting should work for now, but you are advised to change format to scheme with port to prevent possible issues later. + """) + + Config.put(:connections_pool, Keyword.put_new(pool_config, :connect_timeout, timeout)) + end + + pools_configs = Config.get(:pools) + + warning_preface = """ + !!!DEPRECATION WARNING!!! + Your config is using old setting name `timeout` instead of `recv_timeout` in pool settings. Setting should work for now, but you are advised to change format to scheme with port to prevent possible issues later. + """ + + updated_config = + Enum.reduce(pools_configs, [], fn {pool_name, config}, acc -> + if timeout = config[:timeout] do + Keyword.put(acc, pool_name, Keyword.put_new(config, :recv_timeout, timeout)) + else + acc + end + end) + + if updated_config != [] do + pool_warnings = + updated_config + |> Keyword.keys() + |> Enum.map(fn pool_name -> + "\n* `:timeout` options in #{pool_name} pool is now `:recv_timeout`" + end) + + Logger.warn(Enum.join([warning_preface | pool_warnings])) + + Config.put(:pools, updated_config) + end + end end diff --git a/test/config/deprecation_warnings_test.exs b/test/config/deprecation_warnings_test.exs index 555661a71..e22052404 100644 --- a/test/config/deprecation_warnings_test.exs +++ b/test/config/deprecation_warnings_test.exs @@ -4,12 +4,15 @@ defmodule Pleroma.Config.DeprecationWarningsTest do import ExUnit.CaptureLog + alias Pleroma.Config + alias Pleroma.Config.DeprecationWarnings + test "check_old_mrf_config/0" do clear_config([:instance, :rewrite_policy], Pleroma.Web.ActivityPub.MRF.NoOpPolicy) clear_config([:instance, :mrf_transparency], true) clear_config([:instance, :mrf_transparency_exclusions], []) - assert capture_log(fn -> Pleroma.Config.DeprecationWarnings.check_old_mrf_config() end) =~ + assert capture_log(fn -> DeprecationWarnings.check_old_mrf_config() end) =~ """ !!!DEPRECATION WARNING!!! Your config is using old namespaces for MRF configuration. They should work for now, but you are advised to change to new namespaces to prevent possible issues later: @@ -44,22 +47,66 @@ test "move_namespace_and_warn/2" do ] assert capture_log(fn -> - Pleroma.Config.DeprecationWarnings.move_namespace_and_warn( + DeprecationWarnings.move_namespace_and_warn( config_map, "Warning preface" ) end) =~ "Warning preface\n error :key\n error :key2\n error :key3" - assert Pleroma.Config.get(new_group1) == 1 - assert Pleroma.Config.get(new_group2) == 2 - assert Pleroma.Config.get(new_group3) == 3 + assert Config.get(new_group1) == 1 + assert Config.get(new_group2) == 2 + assert Config.get(new_group3) == 3 end test "check_media_proxy_whitelist_config/0" do clear_config([:media_proxy, :whitelist], ["https://example.com", "example2.com"]) assert capture_log(fn -> - Pleroma.Config.DeprecationWarnings.check_media_proxy_whitelist_config() + DeprecationWarnings.check_media_proxy_whitelist_config() end) =~ "Your config is using old format (only domain) for MediaProxy whitelist option" end + + describe "check_gun_pool_options/0" do + test "await_up_timeout" do + config = Config.get(:connections_pool) + clear_config(:connections_pool, Keyword.put(config, :await_up_timeout, 5_000)) + + assert capture_log(fn -> + DeprecationWarnings.check_gun_pool_options() + end) =~ + "Your config is using old setting name `await_up_timeout` instead of `connect_timeout`" + end + + test "pool timeout" do + old_config = [ + federation: [ + size: 50, + max_waiting: 10, + timeout: 10_000 + ], + media: [ + size: 50, + max_waiting: 10, + timeout: 10_000 + ], + upload: [ + size: 25, + max_waiting: 5, + timeout: 15_000 + ], + default: [ + size: 10, + max_waiting: 2, + timeout: 5_000 + ] + ] + + clear_config(:pools, old_config) + + assert capture_log(fn -> + DeprecationWarnings.check_gun_pool_options() + end) =~ + "Your config is using old setting name `timeout` instead of `recv_timeout` in pool settings" + end + end end From 7ad1732ed2444d4d7bb1a89e66d46e5d52536e0f Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Mon, 7 Sep 2020 19:55:14 +0300 Subject: [PATCH 112/460] changelog entry --- CHANGELOG.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46f1e859b..f303e22a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,11 +5,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## Unreleased +### Changed + +- Settings renaming: `:await_up_timeout` in `:connections_pool` namespace to `connect_timeout`, `timeout` in `pools` namespace to `recv_timeout`. + ### Removed - **Breaking:** Removed `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab`. - ## unreleased-patch - ??? ### Added @@ -25,7 +28,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mastodon API: Cards being wrong for preview statuses due to cache key collision - Password resets no longer processed for deactivated accounts - ## [2.1.0] - 2020-08-28 ### Changed From 699224a900d54b6d32e0bd3f2abd9eccc523df11 Mon Sep 17 00:00:00 2001 From: Alibek Omarov <a1ba.omarov@gmail.com> Date: Mon, 7 Sep 2020 22:14:40 +0200 Subject: [PATCH 113/460] ForceBotUnlistedPolicy: initial add, tiny clean up from my previous version --- .../mrf/force_bot_unlisted_policy.ex | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex diff --git a/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex b/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex new file mode 100644 index 000000000..31fd90586 --- /dev/null +++ b/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex @@ -0,0 +1,61 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy do + alias Pleroma.User + @behaviour Pleroma.Web.ActivityPub.MRF + @moduledoc "Remove bot posts from federated timeline" + + require Pleroma.Constants + + defp check_by_actor_type(user) do + if user.actor_type in ["Application", "Service"], do: 1.0, else: 0.0 + end + + defp check_by_nickname(user) do + if Regex.match?(~r/bot@|ebooks@/i, user.nickname), do: 1.0, else: 0.0 + end + + defp botness_score(user), do: check_by_actor_type(user) + check_by_nickname(user) + + @impl true + def filter( + %{ + "type" => "Create", + "to" => to, + "cc" => cc, + "actor" => actor, + "object" => object + } = message + ) do + user = User.get_cached_by_ap_id(actor) + isbot = 0.8 < botness_score(user) + + if isbot and Enum.member?(to, Pleroma.Constants.as_public()) do + to = List.delete(to, Pleroma.Constants.as_public()) ++ [user.follower_address] + cc = List.delete(cc, user.follower_address) ++ [Pleroma.Constants.as_public()] + + object = + object + |> Map.put("to", to) + |> Map.put("cc", cc) + + message = + message + |> Map.put("to", to) + |> Map.put("cc", cc) + |> Map.put("object", object) + + {:ok, message} + else + {:ok, message} + end + end + + @impl true + def filter(message), do: {:ok, message} + + @impl true + def describe, do: {:ok, %{}} +end From 57cf0cc3b3029cb0ff017c53e2602ad945b8d9b3 Mon Sep 17 00:00:00 2001 From: Alibek Omarov <a1ba.omarov@gmail.com> Date: Mon, 7 Sep 2020 22:50:37 +0200 Subject: [PATCH 114/460] ForceBotUnlistedPolicy: add test --- .../mrf/force_bot_unlisted_policy_test.ex | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex diff --git a/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex b/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex new file mode 100644 index 000000000..84e2a9024 --- /dev/null +++ b/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex @@ -0,0 +1,58 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicyTest do + use Pleroma.DataCase + import Pleroma.Factory + + import Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy + + defp generate_messages(actor) do + {%{ + "actor" => actor.ap_id, + "type" => "Create", + "object" => %{}, + "to" => [@public, "f"], + "cc" => [actor.follower_address, "d"] + }, %{ + "actor" => actor.ap_id, + "type" => "Create", + "object" => %{"to" => ["f", actor.follower_address], "cc" => ["d", @public]}, + "to" => ["f", actor.follower_address], + "cc" => ["d", @public] + }} + end + + test "removes from the federated timeline by nickname heuristics 1" do + actor = insert(:user, %{nickname: "annoying_ebooks@example.com"}) + + {message, except_message} = generate_messages(actor) + + assert ForceBotUnlistedPolicy.filter(message) == {:ok, except_message} + end + + test "removes from the federated timeline by nickname heuristics 2" do + actor = insert(:user, %{nickname: "cirnonewsnetworkbot@meow.cat"}) + + {message, except_message} = generate_messages(actor) + + assert ForceBotUnlistedPolicy.filter(message) == {:ok, except_message} + end + + test "removes from the federated timeline by actor type Application" do + actor = insert(:user, %{actor_type: "Application"}) + + {message, except_message} = generate_messages(actor) + + assert ForceBotUnlistedPolicy.filter(message) == {:ok, except_message} + end + + test "removes from the federated timeline by actor type Service" do + actor = insert(:user, %{actor_type: "Service"}) + + {message, except_message} = generate_messages(actor) + + assert ForceBotUnlistedPolicy.filter(message) == {:ok, except_message} + end +end From 8b695c3eeb6ee7a91fc5a8a4293fb3cb53212818 Mon Sep 17 00:00:00 2001 From: Alibek Omarov <a1ba.omarov@gmail.com> Date: Mon, 7 Sep 2020 22:53:45 +0200 Subject: [PATCH 115/460] ForceBotUnlistedPolicy: format --- .../mrf/force_bot_unlisted_policy.ex | 16 ++++++------ .../mrf/force_bot_unlisted_policy_test.ex | 25 ++++++++++--------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex b/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex index 31fd90586..7290f444b 100644 --- a/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex @@ -21,14 +21,14 @@ defp botness_score(user), do: check_by_actor_type(user) + check_by_nickname(user @impl true def filter( - %{ - "type" => "Create", - "to" => to, - "cc" => cc, - "actor" => actor, - "object" => object - } = message - ) do + %{ + "type" => "Create", + "to" => to, + "cc" => cc, + "actor" => actor, + "object" => object + } = message + ) do user = User.get_cached_by_ap_id(actor) isbot = 0.8 < botness_score(user) diff --git a/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex b/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex index 84e2a9024..6f001c233 100644 --- a/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex +++ b/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex @@ -10,18 +10,19 @@ defmodule Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicyTest do defp generate_messages(actor) do {%{ - "actor" => actor.ap_id, - "type" => "Create", - "object" => %{}, - "to" => [@public, "f"], - "cc" => [actor.follower_address, "d"] - }, %{ - "actor" => actor.ap_id, - "type" => "Create", - "object" => %{"to" => ["f", actor.follower_address], "cc" => ["d", @public]}, - "to" => ["f", actor.follower_address], - "cc" => ["d", @public] - }} + "actor" => actor.ap_id, + "type" => "Create", + "object" => %{}, + "to" => [@public, "f"], + "cc" => [actor.follower_address, "d"] + }, + %{ + "actor" => actor.ap_id, + "type" => "Create", + "object" => %{"to" => ["f", actor.follower_address], "cc" => ["d", @public]}, + "to" => ["f", actor.follower_address], + "cc" => ["d", @public] + }} end test "removes from the federated timeline by nickname heuristics 1" do From d2fd1d348122d8b0c3f4b0262cfc980afed83448 Mon Sep 17 00:00:00 2001 From: Alibek Omarov <a1ba.omarov@gmail.com> Date: Mon, 7 Sep 2020 23:04:07 +0200 Subject: [PATCH 116/460] ForceBotUnlistedPolicy: fix test extension --- ...unlisted_policy_test.ex => force_bot_unlisted_policy_test.exs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/web/activity_pub/mrf/{force_bot_unlisted_policy_test.ex => force_bot_unlisted_policy_test.exs} (100%) diff --git a/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex b/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs similarity index 100% rename from test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex rename to test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs From 0a25c92cfafce6af9ff9a40ac278dafac69e0c08 Mon Sep 17 00:00:00 2001 From: Alibek Omarov <a1ba.omarov@gmail.com> Date: Mon, 7 Sep 2020 23:18:36 +0200 Subject: [PATCH 117/460] ForceBotUnlistedPolicy: try to fix test --- test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs b/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs index 6f001c233..85ca95b0a 100644 --- a/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs +++ b/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs @@ -6,7 +6,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicyTest do use Pleroma.DataCase import Pleroma.Factory - import Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy + alias Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy defp generate_messages(actor) do {%{ From d074e54013cb38d308693891e0353c0dccc54b85 Mon Sep 17 00:00:00 2001 From: Alibek Omarov <a1ba.omarov@gmail.com> Date: Mon, 7 Sep 2020 23:28:29 +0200 Subject: [PATCH 118/460] ForceBotUnlistedPolicy: try to fix test 2 --- test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs | 1 + 1 file changed, 1 insertion(+) diff --git a/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs b/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs index 85ca95b0a..86dd9ddae 100644 --- a/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs +++ b/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs @@ -7,6 +7,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicyTest do import Pleroma.Factory alias Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy + @public "https://www.w3.org/ns/activitystreams#Public" defp generate_messages(actor) do {%{ From 95688c90ad9cd6438a764b4ea6e0f2e3b594b5c8 Mon Sep 17 00:00:00 2001 From: Alibek Omarov <a1ba.omarov@gmail.com> Date: Tue, 8 Sep 2020 01:13:49 +0200 Subject: [PATCH 119/460] ForceBotUnlistedPolicy: simplify code --- .../activity_pub/mrf/force_bot_unlisted_policy.ex | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex b/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex index 7290f444b..ea9c3d3f5 100644 --- a/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex @@ -9,15 +9,10 @@ defmodule Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy do require Pleroma.Constants - defp check_by_actor_type(user) do - if user.actor_type in ["Application", "Service"], do: 1.0, else: 0.0 - end + defp check_by_actor_type(user), do: user.actor_type in ["Application", "Service"] + defp check_by_nickname(user), do: Regex.match?(~r/bot@|ebooks@/i, user.nickname) - defp check_by_nickname(user) do - if Regex.match?(~r/bot@|ebooks@/i, user.nickname), do: 1.0, else: 0.0 - end - - defp botness_score(user), do: check_by_actor_type(user) + check_by_nickname(user) + defp check_if_bot(user), do: check_by_actor_type(user) or check_by_nickname(user) @impl true def filter( @@ -30,7 +25,7 @@ def filter( } = message ) do user = User.get_cached_by_ap_id(actor) - isbot = 0.8 < botness_score(user) + isbot = check_if_bot(user) if isbot and Enum.member?(to, Pleroma.Constants.as_public()) do to = List.delete(to, Pleroma.Constants.as_public()) ++ [user.follower_address] From d8a48f838697ce6f1d37f5504c1e51b316aed037 Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Tue, 8 Sep 2020 12:23:08 +0300 Subject: [PATCH 120/460] CHANGELOG.md: Split settings renaming to 2 separate entries --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f303e22a7..e6180a6da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Changed -- Settings renaming: `:await_up_timeout` in `:connections_pool` namespace to `connect_timeout`, `timeout` in `pools` namespace to `recv_timeout`. +- Renamed `:await_up_timeout` in `:connections_pool` namespace to `:connect_timeout`, old name is deprecated. +- Renamed `:timeout` in `pools` namespace to `:recv_timeout`, old name is deprecated. ### Removed From fa347b9c2f416cd2c402e3e6eebb561dfc0ee8a8 Mon Sep 17 00:00:00 2001 From: Mark Felder <feld@FreeBSD.org> Date: Wed, 26 Aug 2020 13:32:03 -0500 Subject: [PATCH 121/460] Fix uploading webp image files when Exiftool Upload Filter is enabled --- CHANGELOG.md | 1 + lib/pleroma/upload/filter/exiftool.ex | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46f1e859b..cfe0651c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -138,6 +138,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Fix whole_word always returning false on filter get requests - Migrations not working on OTP releases if the database was connected over ssl - Fix relay following +- Fixed uploading webp images when the Exiftool Upload Filter is enabled ## [2.0.7] - 2020-06-13 diff --git a/lib/pleroma/upload/filter/exiftool.ex b/lib/pleroma/upload/filter/exiftool.ex index ea8798fe3..a91bd5e24 100644 --- a/lib/pleroma/upload/filter/exiftool.ex +++ b/lib/pleroma/upload/filter/exiftool.ex @@ -10,9 +10,20 @@ defmodule Pleroma.Upload.Filter.Exiftool do @behaviour Pleroma.Upload.Filter @spec filter(Pleroma.Upload.t()) :: :ok | {:error, String.t()} - def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _}) do + def filter(%Pleroma.Upload{name: file, tempfile: path, content_type: "image" <> _}) do + # webp is not compatible with exiftool at this time + if Regex.match?(~r/\.(webp)$/i, file) do + :ok + else + strip_exif(path) + end + end + + def filter(_), do: :ok + + defp strip_exif(path) do try do - case System.cmd("exiftool", ["-overwrite_original", "-gps:all=", file], parallelism: true) do + case System.cmd("exiftool", ["-overwrite_original", "-gps:all=", path], parallelism: true) do {_response, 0} -> :ok {error, 1} -> {:error, error} end @@ -21,6 +32,4 @@ def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _}) do {:error, "exiftool command not found"} end end - - def filter(_), do: :ok end From 2165a249744a1ad4386a9d237871abe88e298942 Mon Sep 17 00:00:00 2001 From: Mark Felder <feld@FreeBSD.org> Date: Fri, 4 Sep 2020 17:40:59 -0500 Subject: [PATCH 122/460] Improve upload filter return values so we can identify when filters make no changes to the input --- lib/pleroma/upload/filter.ex | 13 ++++++++++--- lib/pleroma/upload/filter/anonymize_filename.ex | 4 +++- lib/pleroma/upload/filter/dedupe.ex | 4 ++-- lib/pleroma/upload/filter/exiftool.ex | 8 ++++---- lib/pleroma/upload/filter/mogrifun.ex | 6 +++--- lib/pleroma/upload/filter/mogrify.ex | 6 +++--- test/upload/filter/anonymize_filename_test.exs | 6 +++--- test/upload/filter/dedupe_test.exs | 1 + test/upload/filter/exiftool_test.exs | 2 +- test/upload/filter/mogrifun_test.exs | 2 +- test/upload/filter/mogrify_test.exs | 2 +- 11 files changed, 32 insertions(+), 22 deletions(-) diff --git a/lib/pleroma/upload/filter.ex b/lib/pleroma/upload/filter.ex index dbdadc97f..661135634 100644 --- a/lib/pleroma/upload/filter.ex +++ b/lib/pleroma/upload/filter.ex @@ -15,7 +15,11 @@ defmodule Pleroma.Upload.Filter do require Logger - @callback filter(Pleroma.Upload.t()) :: :ok | {:ok, Pleroma.Upload.t()} | {:error, any()} + @callback filter(Pleroma.Upload.t()) :: + {:ok, :filtered} + | {:ok, :noop} + | {:ok, :filtered, Pleroma.Upload.t()} + | {:error, any()} @spec filter([module()], Pleroma.Upload.t()) :: {:ok, Pleroma.Upload.t()} | {:error, any()} @@ -25,10 +29,13 @@ def filter([], upload) do def filter([filter | rest], upload) do case filter.filter(upload) do - :ok -> + {:ok, :filtered} -> filter(rest, upload) - {:ok, upload} -> + {:ok, :filtered, upload} -> + filter(rest, upload) + + {:ok, :noop} -> filter(rest, upload) error -> diff --git a/lib/pleroma/upload/filter/anonymize_filename.ex b/lib/pleroma/upload/filter/anonymize_filename.ex index 07ead8203..fc456e4f4 100644 --- a/lib/pleroma/upload/filter/anonymize_filename.ex +++ b/lib/pleroma/upload/filter/anonymize_filename.ex @@ -16,9 +16,11 @@ defmodule Pleroma.Upload.Filter.AnonymizeFilename do def filter(%Upload{name: name} = upload) do extension = List.last(String.split(name, ".")) name = predefined_name(extension) || random(extension) - {:ok, %Upload{upload | name: name}} + {:ok, :filtered, %Upload{upload | name: name}} end + def filter(_), do: {:ok, :noop} + @spec predefined_name(String.t()) :: String.t() | nil defp predefined_name(extension) do with name when not is_nil(name) <- Config.get([__MODULE__, :text]), diff --git a/lib/pleroma/upload/filter/dedupe.ex b/lib/pleroma/upload/filter/dedupe.ex index 41218a918..86cbc8996 100644 --- a/lib/pleroma/upload/filter/dedupe.ex +++ b/lib/pleroma/upload/filter/dedupe.ex @@ -17,8 +17,8 @@ def filter(%Upload{name: name, tempfile: tempfile} = upload) do |> Base.encode16(case: :lower) filename = shasum <> "." <> extension - {:ok, %Upload{upload | id: shasum, path: filename}} + {:ok, :filtered, %Upload{upload | id: shasum, path: filename}} end - def filter(_), do: :ok + def filter(_), do: {:ok, :noop} end diff --git a/lib/pleroma/upload/filter/exiftool.ex b/lib/pleroma/upload/filter/exiftool.ex index a91bd5e24..94d12c01b 100644 --- a/lib/pleroma/upload/filter/exiftool.ex +++ b/lib/pleroma/upload/filter/exiftool.ex @@ -9,22 +9,22 @@ defmodule Pleroma.Upload.Filter.Exiftool do """ @behaviour Pleroma.Upload.Filter - @spec filter(Pleroma.Upload.t()) :: :ok | {:error, String.t()} + @spec filter(Pleroma.Upload.t()) :: {:ok, any()} | {:error, String.t()} def filter(%Pleroma.Upload{name: file, tempfile: path, content_type: "image" <> _}) do # webp is not compatible with exiftool at this time if Regex.match?(~r/\.(webp)$/i, file) do - :ok + {:ok, :noop} else strip_exif(path) end end - def filter(_), do: :ok + def filter(_), do: {:ok, :noop} defp strip_exif(path) do try do case System.cmd("exiftool", ["-overwrite_original", "-gps:all=", path], parallelism: true) do - {_response, 0} -> :ok + {_response, 0} -> {:ok, :filtered} {error, 1} -> {:error, error} end rescue diff --git a/lib/pleroma/upload/filter/mogrifun.ex b/lib/pleroma/upload/filter/mogrifun.ex index c8fa7b190..363e5cf0f 100644 --- a/lib/pleroma/upload/filter/mogrifun.ex +++ b/lib/pleroma/upload/filter/mogrifun.ex @@ -38,16 +38,16 @@ defmodule Pleroma.Upload.Filter.Mogrifun do [{"fill", "yellow"}, {"tint", "40"}] ] - @spec filter(Pleroma.Upload.t()) :: :ok | {:error, String.t()} + @spec filter(Pleroma.Upload.t()) :: {:ok, atom()} | {:error, String.t()} def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _}) do try do Filter.Mogrify.do_filter(file, [Enum.random(@filters)]) - :ok + {:ok, :filtered} rescue _e in ErlangError -> {:error, "mogrify command not found"} end end - def filter(_), do: :ok + def filter(_), do: {:ok, :noop} end diff --git a/lib/pleroma/upload/filter/mogrify.ex b/lib/pleroma/upload/filter/mogrify.ex index 7a45add5a..71968fd9c 100644 --- a/lib/pleroma/upload/filter/mogrify.ex +++ b/lib/pleroma/upload/filter/mogrify.ex @@ -8,18 +8,18 @@ defmodule Pleroma.Upload.Filter.Mogrify do @type conversion :: action :: String.t() | {action :: String.t(), opts :: String.t()} @type conversions :: conversion() | [conversion()] - @spec filter(Pleroma.Upload.t()) :: :ok | {:error, String.t()} + @spec filter(Pleroma.Upload.t()) :: {:ok, :atom} | {:error, String.t()} def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _}) do try do do_filter(file, Pleroma.Config.get!([__MODULE__, :args])) - :ok + {:ok, :filtered} rescue _e in ErlangError -> {:error, "mogrify command not found"} end end - def filter(_), do: :ok + def filter(_), do: {:ok, :noop} def do_filter(file, filters) do file diff --git a/test/upload/filter/anonymize_filename_test.exs b/test/upload/filter/anonymize_filename_test.exs index adff70f57..19b915cc8 100644 --- a/test/upload/filter/anonymize_filename_test.exs +++ b/test/upload/filter/anonymize_filename_test.exs @@ -24,18 +24,18 @@ defmodule Pleroma.Upload.Filter.AnonymizeFilenameTest do test "it replaces filename on pre-defined text", %{upload_file: upload_file} do Config.put([Upload.Filter.AnonymizeFilename, :text], "custom-file.png") - {:ok, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) + {:ok, :filtered, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) assert name == "custom-file.png" end test "it replaces filename on pre-defined text expression", %{upload_file: upload_file} do Config.put([Upload.Filter.AnonymizeFilename, :text], "custom-file.{extension}") - {:ok, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) + {:ok, :filtered, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) assert name == "custom-file.jpg" end test "it replaces filename on random text", %{upload_file: upload_file} do - {:ok, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) + {:ok, :filtered, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) assert <<_::bytes-size(14)>> <> ".jpg" = name refute name == "an… image.jpg" end diff --git a/test/upload/filter/dedupe_test.exs b/test/upload/filter/dedupe_test.exs index 966c353f7..75c7198e1 100644 --- a/test/upload/filter/dedupe_test.exs +++ b/test/upload/filter/dedupe_test.exs @@ -25,6 +25,7 @@ test "adds shasum" do assert { :ok, + :filtered, %Pleroma.Upload{id: @shasum, path: @shasum <> ".jpg"} } = Dedupe.filter(upload) end diff --git a/test/upload/filter/exiftool_test.exs b/test/upload/filter/exiftool_test.exs index 8ed7d650b..094253a25 100644 --- a/test/upload/filter/exiftool_test.exs +++ b/test/upload/filter/exiftool_test.exs @@ -21,7 +21,7 @@ test "apply exiftool filter" do tempfile: Path.absname("test/fixtures/DSCN0010_tmp.jpg") } - assert Filter.Exiftool.filter(upload) == :ok + assert Filter.Exiftool.filter(upload) == {:ok, :filtered} {exif_original, 0} = System.cmd("exiftool", ["test/fixtures/DSCN0010.jpg"]) {exif_filtered, 0} = System.cmd("exiftool", ["test/fixtures/DSCN0010_tmp.jpg"]) diff --git a/test/upload/filter/mogrifun_test.exs b/test/upload/filter/mogrifun_test.exs index 2426a8496..dc1e9e78f 100644 --- a/test/upload/filter/mogrifun_test.exs +++ b/test/upload/filter/mogrifun_test.exs @@ -36,7 +36,7 @@ test "apply mogrify filter" do save: fn _f, _o -> :ok end ]} ]) do - assert Filter.Mogrifun.filter(upload) == :ok + assert Filter.Mogrifun.filter(upload) == {:ok, :filtered} end Task.await(task) diff --git a/test/upload/filter/mogrify_test.exs b/test/upload/filter/mogrify_test.exs index 62ca30487..bf64b96b3 100644 --- a/test/upload/filter/mogrify_test.exs +++ b/test/upload/filter/mogrify_test.exs @@ -33,7 +33,7 @@ test "apply mogrify filter" do custom: fn _m, _a -> :ok end, custom: fn m, a, o -> send(task.pid, {:apply_filter, {m, a, o}}) end, save: fn _f, _o -> :ok end do - assert Filter.Mogrify.filter(upload) == :ok + assert Filter.Mogrify.filter(upload) == {:ok, :filtered} end Task.await(task) From 3a98960c2684229435c5d04e4f3e0611098ceea2 Mon Sep 17 00:00:00 2001 From: Mark Felder <feld@FreeBSD.org> Date: Fri, 4 Sep 2020 17:50:16 -0500 Subject: [PATCH 123/460] Verify webp files are not processed with exiftool --- test/upload/filter/exiftool_test.exs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test/upload/filter/exiftool_test.exs b/test/upload/filter/exiftool_test.exs index 094253a25..fe24036d9 100644 --- a/test/upload/filter/exiftool_test.exs +++ b/test/upload/filter/exiftool_test.exs @@ -30,4 +30,15 @@ test "apply exiftool filter" do assert String.match?(exif_original, ~r/GPS/) refute String.match?(exif_filtered, ~r/GPS/) end + + test "verify webp files are skipped" do + upload = %Pleroma.Upload{ + name: "sample.webp", + content_type: "image/webp", + path: Path.absname("/dev/null"), + tempfile: Path.absname("/dev/null") + } + + assert Filter.Exiftool.filter(upload) == {:ok, :noop} + end end From 216c84a8f4d82649110ffaa2bc9d02b879805c5f Mon Sep 17 00:00:00 2001 From: Mark Felder <feld@FreeBSD.org> Date: Fri, 4 Sep 2020 17:56:05 -0500 Subject: [PATCH 124/460] Bypass the filter based on content-type as well in case a webp image is uploaded with the wrong file extension. --- lib/pleroma/upload/filter/exiftool.ex | 5 ++++- test/upload/filter/exiftool_test.exs | 10 +++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/upload/filter/exiftool.ex b/lib/pleroma/upload/filter/exiftool.ex index 94d12c01b..b07a671ac 100644 --- a/lib/pleroma/upload/filter/exiftool.ex +++ b/lib/pleroma/upload/filter/exiftool.ex @@ -10,8 +10,11 @@ defmodule Pleroma.Upload.Filter.Exiftool do @behaviour Pleroma.Upload.Filter @spec filter(Pleroma.Upload.t()) :: {:ok, any()} | {:error, String.t()} + + # webp is not compatible with exiftool at this time + def filter(%Pleroma.Upload{content_type: "image/webp"}), do: {:ok, :noop} + def filter(%Pleroma.Upload{name: file, tempfile: path, content_type: "image" <> _}) do - # webp is not compatible with exiftool at this time if Regex.match?(~r/\.(webp)$/i, file) do {:ok, :noop} else diff --git a/test/upload/filter/exiftool_test.exs b/test/upload/filter/exiftool_test.exs index fe24036d9..84a3f8b30 100644 --- a/test/upload/filter/exiftool_test.exs +++ b/test/upload/filter/exiftool_test.exs @@ -34,11 +34,15 @@ test "apply exiftool filter" do test "verify webp files are skipped" do upload = %Pleroma.Upload{ name: "sample.webp", - content_type: "image/webp", - path: Path.absname("/dev/null"), - tempfile: Path.absname("/dev/null") + content_type: "image/webp" + } + + bad_type = %Pleroma.Upload{ + name: "sample.webp", + content_type: "image/jpeg" } assert Filter.Exiftool.filter(upload) == {:ok, :noop} + assert Filter.Exiftool.filter(bad_type) == {:ok, :noop} end end From 4ea07f74e9416da8f97a12cfdc24da82e1c00d91 Mon Sep 17 00:00:00 2001 From: Mark Felder <feld@FreeBSD.org> Date: Fri, 4 Sep 2020 22:18:01 -0500 Subject: [PATCH 125/460] Revert/simplify. We only need to check the content-type. There's no chance a webp file will get mismatched as another image type. --- lib/pleroma/upload/filter/exiftool.ex | 16 ++++------------ test/upload/filter/exiftool_test.exs | 6 ------ 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/lib/pleroma/upload/filter/exiftool.ex b/lib/pleroma/upload/filter/exiftool.ex index b07a671ac..1fd0cfdaa 100644 --- a/lib/pleroma/upload/filter/exiftool.ex +++ b/lib/pleroma/upload/filter/exiftool.ex @@ -14,19 +14,9 @@ defmodule Pleroma.Upload.Filter.Exiftool do # webp is not compatible with exiftool at this time def filter(%Pleroma.Upload{content_type: "image/webp"}), do: {:ok, :noop} - def filter(%Pleroma.Upload{name: file, tempfile: path, content_type: "image" <> _}) do - if Regex.match?(~r/\.(webp)$/i, file) do - {:ok, :noop} - else - strip_exif(path) - end - end - - def filter(_), do: {:ok, :noop} - - defp strip_exif(path) do + def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _}) do try do - case System.cmd("exiftool", ["-overwrite_original", "-gps:all=", path], parallelism: true) do + case System.cmd("exiftool", ["-overwrite_original", "-gps:all=", file], parallelism: true) do {_response, 0} -> {:ok, :filtered} {error, 1} -> {:error, error} end @@ -35,4 +25,6 @@ defp strip_exif(path) do {:error, "exiftool command not found"} end end + + def filter(_), do: {:ok, :noop} end diff --git a/test/upload/filter/exiftool_test.exs b/test/upload/filter/exiftool_test.exs index 84a3f8b30..d4cd4ba11 100644 --- a/test/upload/filter/exiftool_test.exs +++ b/test/upload/filter/exiftool_test.exs @@ -37,12 +37,6 @@ test "verify webp files are skipped" do content_type: "image/webp" } - bad_type = %Pleroma.Upload{ - name: "sample.webp", - content_type: "image/jpeg" - } - assert Filter.Exiftool.filter(upload) == {:ok, :noop} - assert Filter.Exiftool.filter(bad_type) == {:ok, :noop} end end From 0f27211dd0b9177abf0eb8b10665c6351f07756a Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Tue, 8 Sep 2020 12:28:38 +0300 Subject: [PATCH 126/460] CHANGELOG.md: move the exiftool webp entry to a proper section Also clarify how it was fixed --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cfe0651c8..527df8438 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Possible OOM errors with the default HTTP adapter +- Fixed uploading webp images when the Exiftool Upload Filter is enabled by skipping them - Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers - Mastodon API: Timelines hanging for (`number of posts with links * rich media timeout`) in the worst case. Reduced to just rich media timeout. @@ -138,7 +139,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Fix whole_word always returning false on filter get requests - Migrations not working on OTP releases if the database was connected over ssl - Fix relay following -- Fixed uploading webp images when the Exiftool Upload Filter is enabled ## [2.0.7] - 2020-06-13 From 7215563641e2a5096293128519d6a454aabc46f2 Mon Sep 17 00:00:00 2001 From: Alibek Omarov <a1ba.omarov@gmail.com> Date: Tue, 8 Sep 2020 11:32:46 +0000 Subject: [PATCH 127/460] description.exs: add ForceBotUnlistedPolicy --- config/description.exs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/config/description.exs b/config/description.exs index 18c133f02..2191e8d6d 100644 --- a/config/description.exs +++ b/config/description.exs @@ -1669,6 +1669,15 @@ } ] }, + %{ + group: :pleroma, + key: :mrf_force_bot_unlisted, + tab: :mrf, + related_policy: "Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy", + label: "MRF Force Bot Unlisted Policy", + type: :boolean, + description: "Makes bot posts to disappear from public timelines" + }, %{ group: :pleroma, key: :mrf_subchain, From efff2caccccae76dd749df67322c61a70957268b Mon Sep 17 00:00:00 2001 From: Alibek Omarov <a1ba.omarov@gmail.com> Date: Tue, 8 Sep 2020 11:34:04 +0000 Subject: [PATCH 128/460] docs: cheatsheet: add ForceBotUnlistedPolicy --- docs/configuration/cheatsheet.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index a9a650fab..2ca4d7351 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -115,6 +115,7 @@ To add configuration to your config file, you can copy it from the base config. * `Pleroma.Web.ActivityPub.MRF.VocabularyPolicy`: Restricts activities to a configured set of vocabulary. (See [`:mrf_vocabulary`](#mrf_vocabulary)). * `Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy`: Rejects or delists posts based on their age when received. (See [`:mrf_object_age`](#mrf_object_age)). * `Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy`: Sets a default expiration on all posts made by users of the local instance. Requires `Pleroma.ActivityExpiration` to be enabled for processing the scheduled delections. + * `Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy`: Makes all bot posts to disappear from public timelines. * `transparency`: Make the content of your Message Rewrite Facility settings public (via nodeinfo). * `transparency_exclusions`: Exclude specific instance names from MRF transparency. The use of the exclusions feature will be disclosed in nodeinfo as a boolean value. From 5d814f739cd2bb55822e0cfdb9ad2526d10482bb Mon Sep 17 00:00:00 2001 From: Alibek Omarov <a1ba.omarov@gmail.com> Date: Tue, 8 Sep 2020 11:35:34 +0000 Subject: [PATCH 129/460] changelog: add ForceBotUnlistedPolicy --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46f1e859b..1b1ea02ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## Unreleased +### Added + +- MRF policy to rewrite bot posts scope from public to unlisted + ### Removed - **Breaking:** Removed `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab`. From bb0d7b7aaad4f441a14c94c56081ec30c96ea799 Mon Sep 17 00:00:00 2001 From: Mark Felder <feld@FreeBSD.org> Date: Tue, 8 Sep 2020 09:31:47 -0500 Subject: [PATCH 130/460] Revert "description.exs: add ForceBotUnlistedPolicy" This reverts commit 7215563641e2a5096293128519d6a454aabc46f2. --- config/description.exs | 9 --------- 1 file changed, 9 deletions(-) diff --git a/config/description.exs b/config/description.exs index d9f9b6b84..eac97ad64 100644 --- a/config/description.exs +++ b/config/description.exs @@ -1669,15 +1669,6 @@ } ] }, - %{ - group: :pleroma, - key: :mrf_force_bot_unlisted, - tab: :mrf, - related_policy: "Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy", - label: "MRF Force Bot Unlisted Policy", - type: :boolean, - description: "Makes bot posts to disappear from public timelines" - }, %{ group: :pleroma, key: :mrf_subchain, From 788dececff5d1cea48cf37e59d9a46b48e0db6ed Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> Date: Tue, 8 Sep 2020 16:08:01 +0200 Subject: [PATCH 131/460] test: remove extraneous :instances_favicons config bits --- config/test.exs | 2 -- test/web/instances/instance_test.exs | 2 -- 2 files changed, 4 deletions(-) diff --git a/config/test.exs b/config/test.exs index e9c2273e8..0ee6f1b7f 100644 --- a/config/test.exs +++ b/config/test.exs @@ -114,8 +114,6 @@ config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: true -config :pleroma, :instances_favicons, enabled: false - config :pleroma, Pleroma.Uploaders.S3, bucket: nil, streaming_enabled: true, diff --git a/test/web/instances/instance_test.exs b/test/web/instances/instance_test.exs index 5d4efcebe..dc6ace843 100644 --- a/test/web/instances/instance_test.exs +++ b/test/web/instances/instance_test.exs @@ -112,8 +112,6 @@ test "Scrapes favicon URLs" do end test "Returns nil on too long favicon URLs" do - clear_config([:instances_favicons, :enabled], true) - long_favicon_url = "https://Lorem.ipsum.dolor.sit.amet/consecteturadipiscingelit/Praesentpharetrapurusutaliquamtempus/Mauriseulaoreetarcu/atfacilisisorci/Nullamporttitor/nequesedfeugiatmollis/dolormagnaefficiturlorem/nonpretiumsapienorcieurisus/Nullamveleratsem/Maecenassedaccumsanexnam/favicon.png" From f6723dc9bd4f05319835158be9937dda4400feb9 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> Date: Tue, 8 Sep 2020 15:47:20 +0200 Subject: [PATCH 132/460] account_view_test: Remove empty test --- test/web/mastodon_api/views/account_view_test.exs | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/web/mastodon_api/views/account_view_test.exs b/test/web/mastodon_api/views/account_view_test.exs index 68a5d0091..9f22f9dcf 100644 --- a/test/web/mastodon_api/views/account_view_test.exs +++ b/test/web/mastodon_api/views/account_view_test.exs @@ -116,9 +116,6 @@ test "is nil when :instances_favicons is disabled", %{user: user} do end end - test "Favicon when :instance_favicons is enabled" do - end - test "Represent the user account for the account owner" do user = insert(:user) From fd7e9bdd25ad05eb6fca109be3b0fe5fa01a71bb Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Tue, 8 Sep 2020 17:12:38 +0300 Subject: [PATCH 133/460] don't run async tests, which use Mock --- test/plugs/admin_secret_authentication_plug_test.exs | 2 +- test/plugs/oauth_scopes_plug_test.exs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/plugs/admin_secret_authentication_plug_test.exs b/test/plugs/admin_secret_authentication_plug_test.exs index 89df03c4b..14094eda8 100644 --- a/test/plugs/admin_secret_authentication_plug_test.exs +++ b/test/plugs/admin_secret_authentication_plug_test.exs @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Plugs.AdminSecretAuthenticationPlugTest do - use Pleroma.Web.ConnCase, async: true + use Pleroma.Web.ConnCase import Mock import Pleroma.Factory diff --git a/test/plugs/oauth_scopes_plug_test.exs b/test/plugs/oauth_scopes_plug_test.exs index 884de7b4d..334316043 100644 --- a/test/plugs/oauth_scopes_plug_test.exs +++ b/test/plugs/oauth_scopes_plug_test.exs @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Plugs.OAuthScopesPlugTest do - use Pleroma.Web.ConnCase, async: true + use Pleroma.Web.ConnCase alias Pleroma.Plugs.OAuthScopesPlug alias Pleroma.Repo From 87d2805791e1dd6746009e8c1445719e8cbfd31d Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Tue, 8 Sep 2020 17:29:28 +0300 Subject: [PATCH 134/460] combo fixes --- lib/pleroma/stats.ex | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/pleroma/stats.ex b/lib/pleroma/stats.ex index e7f8d272c..e5c9c668b 100644 --- a/lib/pleroma/stats.ex +++ b/lib/pleroma/stats.ex @@ -23,6 +23,7 @@ def start_link(_) do @impl true def init(_args) do + if Pleroma.Config.get(:env) == :test, do: :ok = Ecto.Adapters.SQL.Sandbox.checkout(Repo) {:ok, nil, {:continue, :calculate_stats}} end From ee0e05f9301e149c769f36bfd0fc8527ec7b6326 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> Date: Tue, 8 Sep 2020 10:43:57 +0200 Subject: [PATCH 135/460] Drop unused "inReplyToAtomUri" in objects --- lib/pleroma/web/activity_pub/transmogrifier.ex | 4 +--- test/web/activity_pub/transmogrifier_test.exs | 14 ++++---------- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 0831efadc..af4384213 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -168,7 +168,6 @@ def fix_in_reply_to(object, options \\ []) def fix_in_reply_to(%{"inReplyTo" => in_reply_to} = object, options) when not is_nil(in_reply_to) do in_reply_to_id = prepare_in_reply_to(in_reply_to) - object = Map.put(object, "inReplyToAtomUri", in_reply_to_id) depth = (options[:depth] || 0) + 1 if Federator.allowed_thread_distance?(depth) do @@ -176,9 +175,8 @@ def fix_in_reply_to(%{"inReplyTo" => in_reply_to} = object, options) %Activity{} <- Activity.get_create_by_object_ap_id(replied_object.data["id"]) do object |> Map.put("inReplyTo", replied_object.data["id"]) - |> Map.put("inReplyToAtomUri", object["inReplyToAtomUri"] || in_reply_to_id) |> Map.put("context", replied_object.data["context"] || object["conversation"]) - |> Map.drop(["conversation"]) + |> Map.drop(["conversation", "inReplyToAtomUri"]) else e -> Logger.warn("Couldn't fetch #{inspect(in_reply_to_id)}, error: #{inspect(e)}") diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 3fa41b0c7..6e096e9ec 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -116,7 +116,8 @@ test "it fetches reply-to activities if we don't have them" do "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" ) - assert returned_object.data["inReplyToAtomUri"] == "https://shitposter.club/notice/2827873" + assert returned_object.data["inReplyTo"] == + "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" end test "it does not fetch reply-to activities beyond max replies depth limit" do @@ -140,8 +141,7 @@ test "it does not fetch reply-to activities beyond max replies depth limit" do "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" ) - assert returned_object.data["inReplyToAtomUri"] == - "https://shitposter.club/notice/2827873" + assert returned_object.data["inReplyTo"] == "https://shitposter.club/notice/2827873" end end @@ -1072,7 +1072,7 @@ test "returns not modified object when hasn't containts inReplyTo field", %{data assert Transmogrifier.fix_in_reply_to(data) == data end - test "returns object with inReplyToAtomUri when denied incoming reply", %{data: data} do + test "returns object with inReplyTo when denied incoming reply", %{data: data} do Pleroma.Config.put([:instance, :federation_incoming_replies_max_depth], 0) object_with_reply = @@ -1080,26 +1080,22 @@ test "returns object with inReplyToAtomUri when denied incoming reply", %{data: modified_object = Transmogrifier.fix_in_reply_to(object_with_reply) assert modified_object["inReplyTo"] == "https://shitposter.club/notice/2827873" - assert modified_object["inReplyToAtomUri"] == "https://shitposter.club/notice/2827873" object_with_reply = Map.put(data["object"], "inReplyTo", %{"id" => "https://shitposter.club/notice/2827873"}) modified_object = Transmogrifier.fix_in_reply_to(object_with_reply) assert modified_object["inReplyTo"] == %{"id" => "https://shitposter.club/notice/2827873"} - assert modified_object["inReplyToAtomUri"] == "https://shitposter.club/notice/2827873" object_with_reply = Map.put(data["object"], "inReplyTo", ["https://shitposter.club/notice/2827873"]) modified_object = Transmogrifier.fix_in_reply_to(object_with_reply) assert modified_object["inReplyTo"] == ["https://shitposter.club/notice/2827873"] - assert modified_object["inReplyToAtomUri"] == "https://shitposter.club/notice/2827873" object_with_reply = Map.put(data["object"], "inReplyTo", []) modified_object = Transmogrifier.fix_in_reply_to(object_with_reply) assert modified_object["inReplyTo"] == [] - assert modified_object["inReplyToAtomUri"] == "" end @tag capture_log: true @@ -1117,8 +1113,6 @@ test "returns modified object when allowed incoming reply", %{data: data} do assert modified_object["inReplyTo"] == "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" - assert modified_object["inReplyToAtomUri"] == "https://shitposter.club/notice/2827873" - assert modified_object["context"] == "tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26" end From 921f926e96fd07131d4b79f5a29caed17ae2cc56 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> Date: Tue, 8 Sep 2020 09:13:11 +0200 Subject: [PATCH 136/460] Remove OStatus in testsuite --- lib/pleroma/object/containment.ex | 7 - test/fixtures/23211.atom | 508 ------------- test/fixtures/cw_retweet.xml | 68 -- test/fixtures/delete.xml | 39 - test/fixtures/dm.xml | 27 - test/fixtures/favorite.xml | 65 -- test/fixtures/favorite_with_local_note.xml | 64 -- test/fixtures/follow.xml | 68 -- test/fixtures/incoming_note_activity.xml | 42 - .../incoming_note_activity_answer.xml | 42 - test/fixtures/incoming_reply_mastodon.xml | 29 - .../incoming_websub_gnusocial_attachments.xml | 59 -- test/fixtures/lambadalambda.atom | 479 ------------ test/fixtures/mastodon-note-cw.xml | 39 - test/fixtures/mastodon-note-unlisted.xml | 38 - test/fixtures/mastodon-problematic.xml | 72 -- test/fixtures/mastodon_conversation.xml | 30 - test/fixtures/nil_mention_entry.xml | 52 -- test/fixtures/ostatus_incoming_post.xml | 57 -- test/fixtures/ostatus_incoming_post_tag.xml | 59 -- test/fixtures/ostatus_incoming_reply.xml | 60 -- test/fixtures/share-gs-local.xml | 99 --- test/fixtures/share-gs.xml | 99 --- test/fixtures/share.xml | 54 -- test/fixtures/tesla_mock/7369654.atom | 44 -- test/fixtures/tesla_mock/atarifrosch_feed.xml | 473 ------------ test/fixtures/tesla_mock/emelie.atom | 306 -------- ....php_api_statuses_user_timeline_1.atom.xml | 460 ----------- .../https___mamot.fr_users_Skruyb.atom | 342 --------- ...__mastodon.social_users_lambadalambda.atom | 464 ----------- .../https___pawoo.net_users_pekorino.atom | 231 ------ ...leroma.soykaf.com_users_lain_feed.atom.xml | 1 - ...er.club_api_statuses_show_2827873.atom.xml | 54 -- ...club_api_statuses_user_timeline_1.atom.xml | 454 ----------- ...ttps___shitposter.club_notice_2827873.json | 1 - ..._api_statuses_user_timeline_23211.atom.xml | 591 -------------- ..._api_statuses_user_timeline_29191.atom.xml | 719 ------------------ test/fixtures/tesla_mock/sakamoto.atom | 1 - .../tesla_mock/sakamoto_eal_feed.atom | 1 - .../tesla_mock/shp@pleroma.soykaf.com.feed | 1 - test/fixtures/tesla_mock/spc_5381.atom | 438 ----------- test/fixtures/unfollow.xml | 68 -- test/support/http_request_mock.ex | 174 ----- test/web/activity_pub/transmogrifier_test.exs | 16 +- .../controllers/search_controller_test.exs | 12 +- 45 files changed, 15 insertions(+), 6992 deletions(-) delete mode 100644 test/fixtures/23211.atom delete mode 100644 test/fixtures/cw_retweet.xml delete mode 100644 test/fixtures/delete.xml delete mode 100644 test/fixtures/dm.xml delete mode 100644 test/fixtures/favorite.xml delete mode 100644 test/fixtures/favorite_with_local_note.xml delete mode 100644 test/fixtures/follow.xml delete mode 100644 test/fixtures/incoming_note_activity.xml delete mode 100644 test/fixtures/incoming_note_activity_answer.xml delete mode 100644 test/fixtures/incoming_reply_mastodon.xml delete mode 100644 test/fixtures/incoming_websub_gnusocial_attachments.xml delete mode 100644 test/fixtures/lambadalambda.atom delete mode 100644 test/fixtures/mastodon-note-cw.xml delete mode 100644 test/fixtures/mastodon-note-unlisted.xml delete mode 100644 test/fixtures/mastodon-problematic.xml delete mode 100644 test/fixtures/mastodon_conversation.xml delete mode 100644 test/fixtures/nil_mention_entry.xml delete mode 100644 test/fixtures/ostatus_incoming_post.xml delete mode 100644 test/fixtures/ostatus_incoming_post_tag.xml delete mode 100644 test/fixtures/ostatus_incoming_reply.xml delete mode 100644 test/fixtures/share-gs-local.xml delete mode 100644 test/fixtures/share-gs.xml delete mode 100644 test/fixtures/share.xml delete mode 100644 test/fixtures/tesla_mock/7369654.atom delete mode 100644 test/fixtures/tesla_mock/atarifrosch_feed.xml delete mode 100644 test/fixtures/tesla_mock/emelie.atom delete mode 100644 test/fixtures/tesla_mock/http__gs.example.org_index.php_api_statuses_user_timeline_1.atom.xml delete mode 100644 test/fixtures/tesla_mock/https___mamot.fr_users_Skruyb.atom delete mode 100644 test/fixtures/tesla_mock/https___mastodon.social_users_lambadalambda.atom delete mode 100644 test/fixtures/tesla_mock/https___pawoo.net_users_pekorino.atom delete mode 100644 test/fixtures/tesla_mock/https___pleroma.soykaf.com_users_lain_feed.atom.xml delete mode 100644 test/fixtures/tesla_mock/https___shitposter.club_api_statuses_show_2827873.atom.xml delete mode 100644 test/fixtures/tesla_mock/https___shitposter.club_api_statuses_user_timeline_1.atom.xml delete mode 100644 test/fixtures/tesla_mock/https___shitposter.club_notice_2827873.json delete mode 100644 test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_23211.atom.xml delete mode 100644 test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_29191.atom.xml delete mode 100644 test/fixtures/tesla_mock/sakamoto.atom delete mode 100644 test/fixtures/tesla_mock/sakamoto_eal_feed.atom delete mode 100644 test/fixtures/tesla_mock/shp@pleroma.soykaf.com.feed delete mode 100644 test/fixtures/tesla_mock/spc_5381.atom delete mode 100644 test/fixtures/unfollow.xml diff --git a/lib/pleroma/object/containment.ex b/lib/pleroma/object/containment.ex index bc88e8a0c..29cb3d672 100644 --- a/lib/pleroma/object/containment.ex +++ b/lib/pleroma/object/containment.ex @@ -44,13 +44,6 @@ def get_object(_) do nil end - # TODO: We explicitly allow 'tag' URIs through, due to references to legacy OStatus - # objects being present in the test suite environment. Once these objects are - # removed, please also remove this. - if Mix.env() == :test do - defp compare_uris(_, %URI{scheme: "tag"}), do: :ok - end - defp compare_uris(%URI{host: host} = _id_uri, %URI{host: host} = _other_uri), do: :ok defp compare_uris(_id_uri, _other_uri), do: :error diff --git a/test/fixtures/23211.atom b/test/fixtures/23211.atom deleted file mode 100644 index d5d111baa..000000000 --- a/test/fixtures/23211.atom +++ /dev/null @@ -1,508 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:media="http://purl.org/syndication/atommedia" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:statusnet="http://status.net/schema/api/1/"> - <generator uri="https://gnu.io/social" version="1.0.2-dev">GNU social</generator> - <id>https://social.heldscal.la/api/statuses/user_timeline/23211.atom</id> - <title>lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-05-02T14:59:30+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda -

Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2015260:2017-05-02T14:45:47+00:00 - Favorite - lambadalambda favorited something by godemperorofdune: <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> It's because your instance decided to be trap! lol.</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T14:45:47+00:00 - 2017-05-02T14:45:47+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:pawoo.net,2017-05-02:objectId=7397439:objectType=Status - New comment by godemperorofdune - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> It's because your instance decided to be trap! lol.</p> - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=136e244b26cdf1e9 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-05-02:noticeId=2015221:objectType=note - New note by lambadalambda - Some script thinks I'm a mastodon server.<br /> <br /> [info] GET /api/v1/timelines/public<br /> [debug] Processing with Fallback.RedirectController.redirector/2<br /> Parameters: %{&quot;limit&quot; =&gt; &quot;40&quot;, &quot;path&quot; =&gt; [&quot;api&quot;, &quot;v1&quot;, &quot;timelines&quot;, &quot;public&quot;]}<br /> Pipelines: [] - - - http://activitystrea.ms/schema/1.0/post - 2017-05-02T14:40:50+00:00 - 2017-05-02T14:40:50+00:00 - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=136e244b26cdf1e9 - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-05-02:noticeId=2014759:objectType=comment - New comment by lambadalambda - @<a href="https://mstdn.io/users/mattskala" class="h-card u-url p-nickname mention" title="Matthew Skala">mattskala</a> You and @<a href="https://mastodon.social/users/kevinmarks" class="h-card u-url p-nickname mention" title="Kevin Marks">kevinmarks</a> are not wrong, but my comment was a suggestion to users and admins: Don't use big instances, don't run big instances. Also, it's a secondary advice to devs: Don't add features that encourage big instances. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-02T14:11:54+00:00 - 2017-05-02T14:11:54+00:00 - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d - - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-05-02:noticeId=2014684:objectType=comment - New comment by lambadalambda - @<a href="https://mastodon.social/users/Ronkjeffries" class="h-card u-url p-nickname mention" title="Ron K Jeffries social">ronkjeffries</a> @<a href="https://xoxo.zone/users/KevinMarks" class="h-card u-url p-nickname mention" title="Kevin Marks ">kevinmarks</a> Usually people who run their own private instance just look at the timelines of other servers, follow a seed population and then go from there. This is of course hard on Mastodon, because it doesn't have a publicly visible timeline. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-02T14:07:00+00:00 - 2017-05-02T14:07:00+00:00 - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d - - - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2014584:2017-05-02T14:05:32+00:00 - Favorite - lambadalambda favorited something by mattskala: <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> It's reasonable to expect that instance sizes will obey a power-law distribution because that's what such things in nature nearly always do. If so, there'll necessarily be a few instances much larger than the others; even if most are small, the network both socially and technically has to be able to deal with the existence of the few large ones.</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T14:05:32+00:00 - 2017-05-02T14:05:32+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:mstdn.io,2017-05-02:objectId=1316931:objectType=Status - New comment by mattskala - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> It's reasonable to expect that instance sizes will obey a power-law distribution because that's what such things in nature nearly always do. If so, there'll necessarily be a few instances much larger than the others; even if most are small, the network both socially and technically has to be able to deal with the existence of the few large ones.</p> - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2013568:2017-05-02T14:05:29+00:00 - Favorite - lambadalambda favorited something by kevinmarks: <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> except instance populations will be power law distributed, and the problems for the tummlers are worse at scale</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T14:05:29+00:00 - 2017-05-02T14:05:29+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:xoxo.zone,2017-05-02:objectId=89478:objectType=Status - New comment by kevinmarks - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> except instance populations will be power law distributed, and the problems for the tummlers are worse at scale</p> - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2014060:2017-05-02T13:34:32+00:00 - Favorite - lambadalambda favorited something by gcarregues: <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> Oh purée ! Ma vie en images !</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T13:34:32+00:00 - 2017-05-02T13:34:32+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:mastodon.etalab.gouv.fr,2017-05-02:objectId=55287:objectType=Status - New comment by gcarregues - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> Oh purée ! Ma vie en images !</p> - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:note:2013573:2017-05-02T13:03:33+00:00 - Favorite - lambadalambda favorited something by phildobangnz: also @<a href="https://sealion.club/user/579" class="h-card mention" title="Sim Bot">sim</a> reminder you are awesome; don't even trip- u kewler than Tutankhamen's cucumber, fam. Okay, good night. - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T13:03:33+00:00 - 2017-05-02T13:03:33+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:sealion.club,2017-05-02:noticeId=3060818:objectType=note - New note by phildobangnz - also @<a href="https://sealion.club/user/579" class="h-card mention" title="Sim Bot">sim</a> reminder you are awesome; don't even trip- u kewler than Tutankhamen's cucumber, fam. Okay, good night. - - - - - - - https://sealion.club/conversation/1633267 - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-05-02:noticeId=2013586:objectType=comment - New comment by lambadalambda - @<a href="https://xoxo.zone/users/KevinMarks" class="h-card u-url p-nickname mention" title="Kevin Marks ">kevinmarks</a> People can stay in their giant unmoderatable instances with meaningless public and federated timelines and experience constant federation drama if they want. I'll stay here with my 5 friends. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-02T12:54:59+00:00 - 2017-05-02T12:54:59+00:00 - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d - - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:note:2013486:2017-05-02T12:46:48+00:00 - Favorite - lambadalambda favorited something by fortune: There once was a dentist named Stone<br /> Who saw all his patients alone.<br /> In a fit of depravity<br /> He filled the wrong cavity,<br /> And my, how his practice has grown! - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T12:46:48+00:00 - 2017-05-02T12:46:48+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:gs.kawa-kun.com,2017-05-02:noticeId=1655658:objectType=note - New note by fortune - There once was a dentist named Stone<br /> Who saw all his patients alone.<br /> In a fit of depravity<br /> He filled the wrong cavity,<br /> And my, how his practice has grown! - - - - - - - https://gs.kawa-kun.com/conversation/714072 - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:note:2013365:2017-05-02T12:37:55+00:00 - Favorite - lambadalambda favorited something by xj9: <p>&gt; rollerblading to work</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T12:37:55+00:00 - 2017-05-02T12:37:55+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:sunshinegardens.org,2017-05-02:objectId=61020:objectType=Status - New note by xj9 - <p>&gt; rollerblading to work</p> - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=5a0e98612f634218 - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2013259:2017-05-02T12:29:03+00:00 - Favorite - lambadalambda favorited something by cereal: @<a href="https://gs.smuglo.li/user/28250" class="h-card mention" title="Bricky">thatbrickster</a> @<a href="https://social.heldscal.la/user/23211" class="h-card mention" title="Constance Variable">lambadalambda</a> But why? - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T12:29:03+00:00 - 2017-05-02T12:29:03+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:sealion.club,2017-05-02:noticeId=3059985:objectType=comment - New comment by cereal - @<a href="https://gs.smuglo.li/user/28250" class="h-card mention" title="Bricky">thatbrickster</a> @<a href="https://social.heldscal.la/user/23211" class="h-card mention" title="Constance Variable">lambadalambda</a> But why? - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2013227:2017-05-02T12:24:27+00:00 - Favorite - lambadalambda favorited something by thatbrickster: @<a href="https://social.heldscal.la/user/23211" class="h-card u-url p-nickname mention" title="Constance Variable">lambadalambda</a> install gentoo - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T12:24:27+00:00 - 2017-05-02T12:24:27+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:gs.smuglo.li,2017-05-02:noticeId=2144296:objectType=comment - New comment by thatbrickster - @<a href="https://social.heldscal.la/user/23211" class="h-card u-url p-nickname mention" title="Constance Variable">lambadalambda</a> install gentoo - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2013213:2017-05-02T12:22:53+00:00 - Favorite - lambadalambda favorited something by dwmatiz: @<a href="https://social.heldscal.la/user/23211" class="h-card mention">lambadalambda</a> *unzips dick* - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T12:22:53+00:00 - 2017-05-02T12:22:53+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:sealion.club,2017-05-02:noticeId=3059800:objectType=comment - New comment by dwmatiz - @<a href="https://social.heldscal.la/user/23211" class="h-card mention">lambadalambda</a> *unzips dick* - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2013199:2017-05-02T12:22:03+00:00 - Favorite - lambadalambda favorited something by shpuld: @<a href="https://social.heldscal.la/user/23211" class="h-card mention" title="Constance Variable">lambadalambda</a> get #<span class="tag"><a href="https://shitposter.club/tag/cofe" rel="tag">cofe</a></span> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T12:22:03+00:00 - 2017-05-02T12:22:03+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-02:noticeId=2783524:objectType=comment - New comment by shpuld - @<a href="https://social.heldscal.la/user/23211" class="h-card mention" title="Constance Variable">lambadalambda</a> get #<span class="tag"><a href="https://shitposter.club/tag/cofe" rel="tag">cofe</a></span> - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-05-02:noticeId=2013185:objectType=note - New note by lambadalambda - What now? <a href="https://social.heldscal.la/file/e4822d95de677757ff50d49672a4046c83218b76c04a0ad5e5f1f0a9a9eb1a74.gif" title="https://social.heldscal.la/file/e4822d95de677757ff50d49672a4046c83218b76c04a0ad5e5f1f0a9a9eb1a74.gif" rel="nofollow external noreferrer" class="attachment" id="attachment-422572">https://social.heldscal.la/attachment/422572</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-05-02T12:21:04+00:00 - 2017-05-02T12:21:04+00:00 - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc - - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:note:2012929:2017-05-02T12:01:25+00:00 - Favorite - lambadalambda favorited something by drkmttr: <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> I checked out No Agenda because I saw you mention it several time. Sadly, I wasn't impressed. I'm all about varying perspectives but Adam and John basically just sound like resentful curmudgeons. It seems like their shtick is basically playing devil's advocate to everything to arouse some discontent. Just my two cents. 😉</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T12:01:25+00:00 - 2017-05-02T12:01:25+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:mstdn.io,2017-05-02:objectId=1310093:objectType=Status - New note by drkmttr - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> I checked out No Agenda because I saw you mention it several time. Sadly, I wasn't impressed. I'm all about varying perspectives but Adam and John basically just sound like resentful curmudgeons. It seems like their shtick is basically playing devil's advocate to everything to arouse some discontent. Just my two cents. 😉</p> - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2f329b4eb20e83e2 - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2012336:2017-05-02T11:06:42+00:00 - Favorite - lambadalambda favorited something by clacke: @<a href="https://mastodon.org.uk/users/dick_turpin" class="h-card u-url p-nickname mention" title="dick_turpin">dickturpin</a> @<a href="http://quitter.se/user/113503" class="h-card u-url p-nickname mention" title="Luke">luke</a> Oh no, I miss being irritated by you, it helps me understand myself and others. Also it builds character. :-)<br /> <br /> So if this is not federation because you can't follow all of online mankind, what should we call it? Proto-federated? Pre-federated?<br /> <br /> The term has been used decades ago for just one Microsoft Active Directory domain cross-certifying the root of another, by mutual agreement. I don't see how it's any less relevant to opportunistic federation between open servers on an open internet.<br /> <br /> I'm not saying we should be satisfied, I'm just saying that "federate" is a useful word and to build a big system we need to start with a small one. And focus on the things we *can* change, like helping the OStatus network grow and making the tools more useful.<br /> <br /> Saying that the network's ideals have failed because other networks aren't joining is doing neither of that. - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T11:06:42+00:00 - 2017-05-02T11:06:42+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-05-02:noticeId=2012336:objectType=comment - New comment by clacke - @<a href="https://mastodon.org.uk/users/dick_turpin" class="h-card u-url p-nickname mention" title="dick_turpin">dickturpin</a> @<a href="http://quitter.se/user/113503" class="h-card u-url p-nickname mention" title="Luke">luke</a> Oh no, I miss being irritated by you, it helps me understand myself and others. Also it builds character. :-)<br /> <br /> So if this is not federation because you can't follow all of online mankind, what should we call it? Proto-federated? Pre-federated?<br /> <br /> The term has been used decades ago for just one Microsoft Active Directory domain cross-certifying the root of another, by mutual agreement. I don't see how it's any less relevant to opportunistic federation between open servers on an open internet.<br /> <br /> I'm not saying we should be satisfied, I'm just saying that &quot;federate&quot; is a useful word and to build a big system we need to start with a small one. And focus on the things we *can* change, like helping the OStatus network grow and making the tools more useful.<br /> <br /> Saying that the network's ideals have failed because other networks aren't joining is doing neither of that. - - - - - - - https://s.wefamlee.be/conversation/16478 - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2011332:2017-05-02T10:37:40+00:00 - Favorite - lambadalambda favorited something by moonman: @<a href="https://social.heldscal.la/user/23211" class="h-card mention" title="Constance Variable">lambadalambda</a> <a href="https://www.youtube.com/watch?v=mKLizztikRk" title="https://www.youtube.com/watch?v=mKLizztikRk" class="attachment" rel="nofollow">https://www.youtube.com/watch?v=mKLizztikRk</a> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T10:37:40+00:00 - 2017-05-02T10:37:40+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-02:noticeId=2781833:objectType=comment - New comment by moonman - @<a href="https://social.heldscal.la/user/23211" class="h-card mention" title="Constance Variable">lambadalambda</a> <a href="https://www.youtube.com/watch?v=mKLizztikRk" title="https://www.youtube.com/watch?v=mKLizztikRk" class="attachment" rel="nofollow">https://www.youtube.com/watch?v=mKLizztikRk</a> - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=11d8b8c27d9513ec - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-05-02:noticeId=2012145:objectType=comment - New comment by lambadalambda - @<a href="https://sealion.club/user/186" class="h-card u-url p-nickname mention" title="I'M CEREAL U GUISE">cereal</a> ? No, you don't even need the identity servers for federation. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-02T10:37:33+00:00 - 2017-05-02T10:37:33+00:00 - - - - https://sealion.club/conversation/1629037 - - - - - - - diff --git a/test/fixtures/cw_retweet.xml b/test/fixtures/cw_retweet.xml deleted file mode 100644 index c99a569d7..000000000 --- a/test/fixtures/cw_retweet.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - https://mastodon.social/users/lambadalambda.atom - Critical Value - - 2017-04-16T21:47:25Z - https://files.mastodon.social/accounts/avatars/000/000/264/original/1429214160519.gif - - https://mastodon.social/users/lambadalambda - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/lambadalambda - lambadalambda - lambadalambda@mastodon.social - - - - lambadalambda - Critical Value - public - - - - - - - tag:mastodon.social,2017-05-11:objectId=5647963:objectType=Status - 2017-05-11T10:23:15Z - 2017-05-11T10:23:15Z - lambadalambda shared a status by Skruyb@mamot.fr - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:mamot.fr,2017-05-10:objectId=1294943:objectType=Status - 2017-05-10T17:31:44Z - 2017-05-10T17:31:45Z - New status by Skruyb@mamot.fr - - https://mamot.fr/users/Skruyb - http://activitystrea.ms/schema/1.0/person - https://mamot.fr/users/Skruyb - Skruyb - Skruyb@mamot.fr - <p>Fr and En.<br>Posts will disappear on a regular basis.</p> - - - - Skruyb - The 7th Son - Fr and En.Posts will disappear on a regular basis. - public - - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - Hey. - <p><span class="h-card"><a href="https://mastodon.social/@lambadalambda">@<span>lambadalambda</span></a></span></p><p>Hey!!!</p> - - - public - - - - <p><span class="h-card"><a href="https://mastodon.social/@lambadalambda">@<span>lambadalambda</span></a></span></p><p>Hey!!!</p> - - public - - - - diff --git a/test/fixtures/delete.xml b/test/fixtures/delete.xml deleted file mode 100644 index 731e1c204..000000000 --- a/test/fixtures/delete.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - https://mastodon.sdf.org/users/snowdusk.atom - snowdusk - Amateur live performance DJ/radio DJ on SDF's underground Internet radio http://aNONradio.net (LIVE Sat Sun Mon Tue 23:00-24:00 UTC) - http://snowdusk.sdf.org - 2017-06-17T04:14:34Z - https://mastodon.sdf.org/system/accounts/avatars/000/000/002/original/405a7652d5f60449.jpg?1497672873 - - https://mastodon.sdf.org/users/snowdusk - http://activitystrea.ms/schema/1.0/person - https://mastodon.sdf.org/users/snowdusk - snowdusk - snowdusk@mastodon.sdf.org - <p>Amateur live performance DJ/radio DJ on SDF&apos;s underground Internet radio <a href="http://anonradio.net/" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="">anonradio.net/</span><span class="invisible"></span></a> (LIVE Sat Sun Mon Tue 23:00-24:00 UTC) - <a href="http://snowdusk.sdf.org/" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="">snowdusk.sdf.org/</span><span class="invisible"></span></a></p> - - - - snowdusk - snowdusk - Amateur live performance DJ/radio DJ on SDF's underground Internet radio http://aNONradio.net (LIVE Sat Sun Mon Tue 23:00-24:00 UTC) - http://snowdusk.sdf.org - public - - - - - - - - tag:mastodon.sdf.org,2017-06-10:objectId=310513:objectType=Status - 2017-06-10T22:02:31Z - 2017-06-10T22:02:31Z - snowdusk deleted status - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/delete - Deleted status - - - - diff --git a/test/fixtures/dm.xml b/test/fixtures/dm.xml deleted file mode 100644 index d0b8aa811..000000000 --- a/test/fixtures/dm.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - tag:mastodon.social,2017-06-30:objectId=11260427:objectType=Status - 2017-06-30T13:27:47Z - 2017-06-30T13:27:47Z - New status by lambadalambda - - https://mastodon.social/users/lambadalambda - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/lambadalambda - lambadalambda - lambadalambda@mastodon.social - - - lambadalambda - Critical Value - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> Hey.</p> - - direct - - - - diff --git a/test/fixtures/favorite.xml b/test/fixtures/favorite.xml deleted file mode 100644 index c32b4a403..000000000 --- a/test/fixtures/favorite.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-05-05T09:12:53+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061643:2017-05-05T09:12:50+00:00 - Favorite - lambadalambda favorited something by moonman: @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> @<a href="https://gs.smuglo.li/user/2326" class="h-card mention" title="Dolus_McHonest">dolus</a> childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T09:12:50+00:00 - 2017-05-05T09:12:50+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment - New comment by moonman - @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> @<a href="https://gs.smuglo.li/user/2326" class="h-card mention" title="Dolus_McHonest">dolus</a> childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4 - - - - - - diff --git a/test/fixtures/favorite_with_local_note.xml b/test/fixtures/favorite_with_local_note.xml deleted file mode 100644 index 3c955607d..000000000 --- a/test/fixtures/favorite_with_local_note.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-05-05T09:12:53+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061643:2017-05-05T09:12:50+00:00 - Favorite - lambadalambda favorited something by moonman: @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> @<a href="https://gs.smuglo.li/user/2326" class="h-card mention" title="Dolus_McHonest">dolus</a> childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T09:12:50+00:00 - 2017-05-05T09:12:50+00:00 - - http://activitystrea.ms/schema/1.0/comment - localid - New comment by moonman - @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> @<a href="https://gs.smuglo.li/user/2326" class="h-card mention" title="Dolus_McHonest">dolus</a> childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4 - - - - - - diff --git a/test/fixtures/follow.xml b/test/fixtures/follow.xml deleted file mode 100644 index d4e89954b..000000000 --- a/test/fixtures/follow.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-05-07T09:54:49+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - tag:social.heldscal.la,2017-05-07:subscription:23211:person:44803:2017-05-07T09:54:48+00:00 - Constance Variable (lambadalambda@social.heldscal.la)'s status on Sunday, 07-May-2017 09:54:49 UTC - <a href="https://social.heldscal.la/lambadalambda">Constance Variable</a> started following <a href="https://pawoo.net/@pekorino">mono</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-05-07T09:54:49+00:00 - 2017-05-07T09:54:49+00:00 - - http://activitystrea.ms/schema/1.0/person - https://pawoo.net/users/pekorino - mono - http://shitposter.club/mono 孤独のグルメ - - - - - pekorino - mono - http://shitposter.club/mono 孤独のグルメ - - - tag:social.heldscal.la,2017-05-07:objectType=thread:nonce=6e80caf94e03029f - - - - - - diff --git a/test/fixtures/incoming_note_activity.xml b/test/fixtures/incoming_note_activity.xml deleted file mode 100644 index 21eda2d30..000000000 --- a/test/fixtures/incoming_note_activity.xml +++ /dev/null @@ -1,42 +0,0 @@ - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-23:noticeId=29:objectType=note - New note by lambda - @<a href="http://pleroma.example.org:4000/users/lain3" class="h-card mention">lain3</a> - - - - - http://activitystrea.ms/schema/1.0/post - 2017-04-23T14:51:03+00:00 - 2017-04-23T14:51:03+00:00 - - http://activitystrea.ms/schema/1.0/person - http://gs.example.org:4040/index.php/user/1 - lambda - - - - - lambda - lambda - - - - - tag:gs.example.org:4040,2017-04-23:objectType=thread:nonce=f09e22f58abd5c7b - - - - http://gs.example.org:4040/index.php/api/statuses/user_timeline/1.atom - lambda - - - - http://gs.example.org:4040/theme/neo-gnu/default-avatar-profile.png - 2017-04-23T14:51:03+00:00 - - - - - diff --git a/test/fixtures/incoming_note_activity_answer.xml b/test/fixtures/incoming_note_activity_answer.xml deleted file mode 100644 index b1244faa6..000000000 --- a/test/fixtures/incoming_note_activity_answer.xml +++ /dev/null @@ -1,42 +0,0 @@ - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=55:objectType=note - New note by lambda - hey. - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T18:16:13+00:00 - 2017-04-25T18:16:13+00:00 - - http://activitystrea.ms/schema/1.0/person - http://gs.example.org:4040/index.php/user/1 - lambda - - - - - lambda - lambda - - - - - - - http://pleroma.example.org:4000/contexts/8f6f45d4-8e4d-4e1a-a2de-09f27367d2d0 - - - - http://gs.example.org:4040/index.php/api/statuses/user_timeline/1.atom - lambda - - - - http://gs.example.org:4040/theme/neo-gnu/default-avatar-profile.png - 2017-04-25T18:16:13+00:00 - - - - - diff --git a/test/fixtures/incoming_reply_mastodon.xml b/test/fixtures/incoming_reply_mastodon.xml deleted file mode 100644 index 8ee1186cc..000000000 --- a/test/fixtures/incoming_reply_mastodon.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - tag:mastodon.social,2017-05-02:objectId=4901603:objectType=Status - 2017-05-02T18:33:06Z - 2017-05-02T18:33:06Z - New status by lambadalambda - - https://mastodon.social/users/lambadalambda - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/lambadalambda - lambadalambda - lambadalambda@mastodon.social - - - - lambadalambda - Critical Value - public - - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> hey</p> - - - public - - - - diff --git a/test/fixtures/incoming_websub_gnusocial_attachments.xml b/test/fixtures/incoming_websub_gnusocial_attachments.xml deleted file mode 100644 index 9d331ef32..000000000 --- a/test/fixtures/incoming_websub_gnusocial_attachments.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-05-02T20:29:35+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-05-02:noticeId=2020923:objectType=note - New note by lambadalambda - Okay gonna stream some cool games!! <a href="https://social.heldscal.la/file/7ed5ee508e6376a6e3dd581e17e7ed0b7b638147c7e86784bf83abc2641ee3d4.gif" title="https://social.heldscal.la/file/7ed5ee508e6376a6e3dd581e17e7ed0b7b638147c7e86784bf83abc2641ee3d4.gif" rel="nofollow external noreferrer" class="attachment" id="attachment-423842">https://social.heldscal.la/attachment/423842</a> <a href="https://social.heldscal.la/file/4c209099cadfc5afd3e27a334aa0db96b3a7510dde1603305d68a2707e59a11f.png" title="https://social.heldscal.la/file/4c209099cadfc5afd3e27a334aa0db96b3a7510dde1603305d68a2707e59a11f.png" rel="nofollow external noreferrer" class="attachment" id="attachment-423843">https://social.heldscal.la/attachment/423843</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-05-02T20:29:35+00:00 - 2017-05-02T20:29:35+00:00 - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=26c7afdcbcf4ebd4 - - - - - - - - diff --git a/test/fixtures/lambadalambda.atom b/test/fixtures/lambadalambda.atom deleted file mode 100644 index 964a416f7..000000000 --- a/test/fixtures/lambadalambda.atom +++ /dev/null @@ -1,479 +0,0 @@ - - - https://mastodon.social/users/lambadalambda.atom - Critical Value - - 2017-04-16T21:47:25Z - https://files.mastodon.social/accounts/avatars/000/000/264/original/1429214160519.gif?1492379244 - - https://mastodon.social/users/lambadalambda - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/lambadalambda - lambadalambda - lambadalambda@mastodon.social - a cool dude. - - - - lambadalambda - Critical Value - public - - - - - - - - tag:mastodon.social,2017-04-07:objectId=1874242:objectType=Status - 2017-04-07T11:02:56Z - 2017-04-07T11:02:56Z - lambadalambda shared a status by 0xroy@social.wxcafe.net - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:social.wxcafe.net,2017-04-07:objectId=72554:objectType=Status - 2017-04-07T11:01:59Z - 2017-04-07T11:02:00Z - New status by 0xroy@social.wxcafe.net - - https://social.wxcafe.net/users/0xroy - http://activitystrea.ms/schema/1.0/person - https://social.wxcafe.net/users/0xroy - 0xroy - 0xroy@social.wxcafe.net - ta caution weeb | discussions privées : <a href="https://💌.0xroy.me" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">💌.0xroy.me</span><span class="invisible"></span></a> - - - - 0xroy - 「R O Y 🍵 B O S」 - ta caution weeb | discussions privées : <a href="https://%F0%9F%92%8C.0xroy.me" rel="nofollow noopener"><span class="invisible">https://</span><span class="">💌.0xroy.me</span><span class="invisible"></span></a> - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>someone pls eli5 matrix (protocol) and riot</p> - - public - - - <p>someone pls eli5 matrix (protocol) and riot</p> - - public - - - - - tag:mastodon.social,2017-04-06:objectId=1768247:objectType=Status - 2017-04-06T11:10:19Z - 2017-04-06T11:10:19Z - lambadalambda shared a status by areyoutoo@mastodon.xyz - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:mastodon.xyz,2017-04-05:objectId=133327:objectType=Status - 2017-04-05T17:36:41Z - 2017-04-05T18:12:14Z - New status by areyoutoo@mastodon.xyz - - https://mastodon.xyz/users/areyoutoo - http://activitystrea.ms/schema/1.0/person - https://mastodon.xyz/users/areyoutoo - areyoutoo - areyoutoo@mastodon.xyz - devops | retired gamedev | always boost puppy pics - - - - areyoutoo - Raw Butter - devops | retired gamedev | always boost puppy pics - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>Some UX thoughts for <a href="https://mastodon.xyz/tags/mastodev" class="mention hashtag">#<span>mastodev</span></a>:</p><p>- Would be nice if I could work on multiple draft toots? Clicking to reply to someone seems to erase any draft I had been working on.</p><p>- Kinda risky to click on the Federated Timeline if it loads new toots and scrolls 10ms before I click on something.</p><p>I probably don't know enough web frontend to help, but it might be fun to try.</p> - - - public - - - <p>Some UX thoughts for <a href="https://mastodon.xyz/tags/mastodev" class="mention hashtag">#<span>mastodev</span></a>:</p><p>- Would be nice if I could work on multiple draft toots? Clicking to reply to someone seems to erase any draft I had been working on.</p><p>- Kinda risky to click on the Federated Timeline if it loads new toots and scrolls 10ms before I click on something.</p><p>I probably don't know enough web frontend to help, but it might be fun to try.</p> - - public - - - - - tag:mastodon.social,2017-04-06:objectId=1764509:objectType=Status - 2017-04-06T10:15:38Z - 2017-04-06T10:15:38Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - This is a test for cw federation - <p>This is a test for cw federation body text.</p> - - public - - - - - tag:mastodon.social,2017-04-05:objectId=1645208:objectType=Status - 2017-04-05T07:14:53Z - 2017-04-05T07:14:53Z - lambadalambda shared a status by lambadalambda@social.heldscal.la - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:social.heldscal.la,2017-04-05:noticeId=1502088:objectType=note - 2017-04-05T06:12:09Z - 2017-04-05T07:12:47Z - New status by lambadalambda@social.heldscal.la - - https://social.heldscal.la/user/23211 - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - lambadalambda@social.heldscal.la - Call me Deacon Blues. - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - Federation 101: <a href="https://www.youtube.com/watch?v=t1lYU5CA40o" rel="nofollow external noreferrer" class="attachment thumbnail">https://www.youtube.com/watch?v=t1lYU5CA40o</a> - - public - - - Federation 101: <a href="https://www.youtube.com/watch?v=t1lYU5CA40o" rel="nofollow external noreferrer" class="attachment thumbnail">https://www.youtube.com/watch?v=t1lYU5CA40o</a> - - public - - - - - tag:mastodon.social,2017-04-05:objectId=1641750:objectType=Status - 2017-04-05T05:44:48Z - 2017-04-05T05:44:48Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> just a test.</p> - - - public - - - - - tag:mastodon.social,2017-04-04:objectId=1540149:objectType=Status - 2017-04-04T06:31:09Z - 2017-04-04T06:31:09Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>Looks like you still can&apos;t delete your account here (PRIVACY!), but I won&apos;t be posting here anymore, my main account is <span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span></p> - - - public - - - - - tag:mastodon.social,2017-04-04:objectId=1539608:objectType=Status - 2017-04-04T06:18:16Z - 2017-04-04T06:18:16Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@ghostbar" class="u-url mention">@<span>ghostbar</span></a></span> Remember to rewrite it in Rust once you&apos;re done.</p> - - - public - - - - - - tag:mastodon.social,2017-04-03:objectId=1504813:objectType=Status - 2017-04-03T18:01:20Z - 2017-04-03T18:01:20Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.xyz/@Azurolu" class="u-url mention">@<span>Azurolu</span></a></span> You mean gs.smuglo.li?</p> - - - public - - - - - - tag:mastodon.social,2017-04-03:objectId=1504805:objectType=Status - 2017-04-03T18:01:05Z - 2017-04-03T18:01:05Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>There&apos;s nothing wrong with having several alt accounts all across the fediverse. Try out another mastodon instance (<a href="https://icosahedron.website" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">icosahedron.website</span><span class="invisible"></span></a>) or a GNU Social instance (like <a href="https://shitposter.club" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">shitposter.club</span><span class="invisible"></span></a> or <a href="https://freezepeach.xyz" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">freezepeach.xyz</span><span class="invisible"></span></a>), or friendica. They are all on the same network, so you can still follow all your friends!</p> - - public - - - - - tag:mastodon.social,2017-04-03:objectId=1503965:objectType=Status - 2017-04-03T17:31:30Z - 2017-04-03T17:31:30Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@20Hz" class="u-url mention">@<span>20Hz</span></a></span> you could also try out a GS instance, which are on the same network :)</p> - - - public - - - - - - tag:mastodon.social,2017-04-03:objectId=1503955:objectType=Status - 2017-04-03T17:31:08Z - 2017-04-03T17:31:08Z - lambadalambda shared a status by shpuld@shitposter.club - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:shitposter.club,2017-04-03:noticeId=2251717:objectType=note - 2017-04-03T17:06:43Z - 2017-04-03T17:12:06Z - New status by shpuld@shitposter.club - - https://shitposter.club/user/5381 - http://activitystrea.ms/schema/1.0/person - https://shitposter.club/user/5381 - shpuld - shpuld@shitposter.club - - - - - shpuld - shp - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - reposting the classic <a href="https://shitposter.club/file/89c5fe483526caf3a46cfc5cdd4ae68061054350e767397731af658d54786e31.jpg" class="attachment" rel="nofollow external">https://shitposter.club/attachment/219846</a> - - - public - - - reposting the classic <a href="https://shitposter.club/file/89c5fe483526caf3a46cfc5cdd4ae68061054350e767397731af658d54786e31.jpg" class="attachment" rel="nofollow external">https://shitposter.club/attachment/219846</a> - - public - - - - - tag:mastodon.social,2017-04-03:objectId=1503929:objectType=Status - 2017-04-03T17:30:43Z - 2017-04-03T17:30:43Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@ghostbar" class="u-url mention">@<span>ghostbar</span></a></span> Normally you shouldn&apos;t be running tens of thousands of users on one instance... That&apos;s one of the reasons for federation.</p> - - - public - - - - - - tag:mastodon.social,2017-04-03:objectId=1477255:objectType=Status - 2017-04-03T08:24:39Z - 2017-04-03T08:24:39Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@dot_tiff" class="u-url mention">@<span>dot_tiff</span></a></span> it&apos;s the vaporwave mode.</p> - - - public - - - - - - tag:mastodon.social,2017-04-03:objectId=1476210:objectType=Status - 2017-04-03T07:45:42Z - 2017-04-03T07:45:42Z - lambadalambda shared a status by lambadalambda@social.heldscal.la - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:social.heldscal.la,2017-04-03:noticeId=1475727:objectType=note - 2017-04-03T07:44:43Z - 2017-04-03T07:44:48Z - New status by lambadalambda@social.heldscal.la - - https://social.heldscal.la/user/23211 - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - lambadalambda@social.heldscal.la - Call me Deacon Blues. - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - Here's a song by the original anti-idol, Togawa Jun: <a href="https://www.youtube.com/watch?v=kNI_NK2YY-s" rel="nofollow external noreferrer" class="attachment">https://www.youtube.com/watch?v=kNI_NK2YY-s</a> - - public - - - Here's a song by the original anti-idol, Togawa Jun: <a href="https://www.youtube.com/watch?v=kNI_NK2YY-s" rel="nofollow external noreferrer" class="attachment">https://www.youtube.com/watch?v=kNI_NK2YY-s</a> - - public - - - - - tag:mastodon.social,2017-04-03:objectId=1476047:objectType=Status - 2017-04-03T07:39:14Z - 2017-04-03T07:39:14Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@amrrr" class="u-url mention">@<span>amrrr</span></a></span> tumblr/10, but pretty good!</p> - - - public - - - - - - tag:mastodon.social,2017-04-03:objectId=1475949:objectType=Status - 2017-04-03T07:35:45Z - 2017-04-03T07:35:45Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@Shookaite" class="u-url mention">@<span>Shookaite</span></a></span> Oh, you mean like userstyles?</p> - - - public - - - - - - tag:mastodon.social,2017-04-03:objectId=1475581:objectType=Status - 2017-04-03T07:20:03Z - 2017-04-03T07:20:03Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@Shookaite" class="u-url mention">@<span>Shookaite</span></a></span> Would be nice if someone helped port Pleroma to Mastodon, that has a theme switcher (click on the cog in the upper right): <a href="https://pleroma.heldscal.la/main/all" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">pleroma.heldscal.la/main/all</span><span class="invisible"></span></a></p> - - - public - - - - - - tag:mastodon.social,2017-04-02:objectId=1457325:objectType=Status - 2017-04-02T21:57:43Z - 2017-04-02T21:57:43Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@rhosyn" class="u-url mention">@<span>rhosyn</span></a></span> <span class="h-card"><a href="https://mastodon.social/@Meaningness" class="u-url mention">@<span>Meaningness</span></a></span> you could take a look at those listed at social.guhnoo.org</p> - - - - public - - - - - - tag:mastodon.social,2017-04-02:objectId=1447926:objectType=Status - 2017-04-02T18:31:52Z - 2017-04-02T18:31:52Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>My main account is <span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> , btw.</p> - - - public - - - - - tag:mastodon.social,2017-04-02:objectId=1447878:objectType=Status - 2017-04-02T18:30:37Z - 2017-04-02T18:30:37Z - lambadalambda shared a status by Firstaide@awoo.space - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:awoo.space,2017-04-02:objectId=135324:objectType=Status - 2017-04-02T18:29:32Z - 2017-04-02T18:29:32Z - New status by Firstaide@awoo.space - - https://awoo.space/users/Firstaide - http://activitystrea.ms/schema/1.0/person - https://awoo.space/users/Firstaide - Firstaide - Firstaide@awoo.space - A smol awoo account, for a smol autistic 💙 -They/them please! -NB/white/ace - - - - Firstaide - Miff🚑✨ - A smol awoo account, for a smol autistic 💙 -They/them please! -NB/white/ace - public - - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><a href="https://mastodon.social/users/lambadalambda" class="h-card u-url p-nickname mention">@<span>lambadalambda</span></a> yeah, I think that's p much the big issue here? <br>When I first heard of Masto, I thought it was just like twitter at first, I had no idea federation was even a thing?, and I actually joined p early on? :-o </p><p>idk I think more stuff needs to be done about federation promotion, but honestly its gotta come from the get go when people get here to make an account I feel :-o</p> - - - public - - - - <p><a href="https://mastodon.social/users/lambadalambda" class="h-card u-url p-nickname mention">@<span>lambadalambda</span></a> yeah, I think that's p much the big issue here? <br>When I first heard of Masto, I thought it was just like twitter at first, I had no idea federation was even a thing?, and I actually joined p early on? :-o </p><p>idk I think more stuff needs to be done about federation promotion, but honestly its gotta come from the get go when people get here to make an account I feel :-o</p> - - public - - - - diff --git a/test/fixtures/mastodon-note-cw.xml b/test/fixtures/mastodon-note-cw.xml deleted file mode 100644 index 02f49dd61..000000000 --- a/test/fixtures/mastodon-note-cw.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - https://mastodon.social/users/lambadalambda.atom - Critical Value - - 2017-04-16T21:47:25Z - https://files.mastodon.social/accounts/avatars/000/000/264/original/1429214160519.gif - - https://mastodon.social/users/lambadalambda - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/lambadalambda - lambadalambda - lambadalambda@mastodon.social - - - - lambadalambda - Critical Value - public - - - - - - - tag:mastodon.social,2017-05-10:objectId=5551985:objectType=Status - 2017-05-10T12:21:36Z - 2017-05-10T12:21:36Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - technologic - <p>test</p> - - public - - - - diff --git a/test/fixtures/mastodon-note-unlisted.xml b/test/fixtures/mastodon-note-unlisted.xml deleted file mode 100644 index d21017b80..000000000 --- a/test/fixtures/mastodon-note-unlisted.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - https://mastodon.social/users/lambadalambda.atom - Critical Value - - 2017-04-16T21:47:25Z - https://files.mastodon.social/accounts/avatars/000/000/264/original/1429214160519.gif - - https://mastodon.social/users/lambadalambda - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/lambadalambda - lambadalambda - lambadalambda@mastodon.social - - - - lambadalambda - Critical Value - public - - - - - - - tag:mastodon.social,2017-05-10:objectId=5551985:objectType=Status - 2017-05-10T12:21:36Z - 2017-05-10T12:21:36Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - technologic - <p>test</p> - unlisted - - - - diff --git a/test/fixtures/mastodon-problematic.xml b/test/fixtures/mastodon-problematic.xml deleted file mode 100644 index a39e72759..000000000 --- a/test/fixtures/mastodon-problematic.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - https://icosahedron.website/users/shel.atom - shel🍖‼️ - Gay jackal dog, poet, future librarian. - -http://datapup.info -avatar: @puppytube@twitter.com - 2017-05-02T23:26:01Z - https://icosahedron.website/system/accounts/avatars/000/001/207/original/b1e07b09ae1cc787.png?1493767561 - - https://icosahedron.website/users/shel - http://activitystrea.ms/schema/1.0/person - https://icosahedron.website/users/shel - shel - shel@icosahedron.website - <p>Gay jackal dog, poet, future librarian. </p><p><a href="http://datapup.info/" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="">datapup.info/</span><span class="invisible"></span></a><br />avatar: @puppytube@twitter.com</p> - - - - shel - shel🍖‼️ - Gay jackal dog, poet, future librarian. - -http://datapup.info -avatar: @puppytube@twitter.com - public - - - - - - - tag:icosahedron.website,2017-05-10:objectId=1414013:objectType=Status - 2017-05-10T17:16:24Z - 2017-05-10T17:16:24Z - shel shared a status by instance_names@cybre.space - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:cybre.space,2017-05-10:objectId=946671:objectType=Status - 2017-05-10T17:15:51Z - 2017-05-10T17:15:52Z - New status by instance_names@cybre.space - - https://cybre.space/users/instance_names - http://activitystrea.ms/schema/1.0/person - https://cybre.space/users/instance_names - instance_names - instance_names@cybre.space - <p>name ideas for your new mastodon instance. made by <span class="h-card"><a href="https://witches.town/@lycaon">@<span>lycaon</span></a></span> source available at <a href="https://github.com/LycaonIsAWolf/instance_names"><span class="invisible">https://</span><span class="ellipsis">github.com/LycaonIsAWolf/insta</span><span class="invisible">nce_names</span></a></p> - - - - instance_names - instance names - name ideas for your new mastodon instance. made by @lycaon source available at https://github.com/LycaonIsAWolf/instance_names - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>dildo.codes</p> - unlisted - - - <p>dildo.codes</p> - - public - - - - diff --git a/test/fixtures/mastodon_conversation.xml b/test/fixtures/mastodon_conversation.xml deleted file mode 100644 index 8faab2304..000000000 --- a/test/fixtures/mastodon_conversation.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - tag:mastodon.social,2017-08-28:objectId=16402826:objectType=Status - 2017-08-28T17:58:55Z - 2017-08-28T17:58:55Z - New status by lambadalambda - - https://mastodon.social/users/lambadalambda - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/lambadalambda - lambadalambda - lambadalambda@mastodon.social - - - - lambadalambda - Critical Value - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>test. <a href="https://mastodon.social/media/XCp0OHGPON9kWZwhjaI" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">mastodon.social/media/XCp0OHGP</span><span class="invisible">ON9kWZwhjaI</span></a></p> - - - public - - - - diff --git a/test/fixtures/nil_mention_entry.xml b/test/fixtures/nil_mention_entry.xml deleted file mode 100644 index e13024cb3..000000000 --- a/test/fixtures/nil_mention_entry.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - GNU social - https://social.stopwatchingus-heidelberg.de/api/statuses/user_timeline/18330.atom - atarifrosch timeline - Updates from atarifrosch on social.stopwatchingus-heidelberg.de! - https://social.stopwatchingus-heidelberg.de/avatar/18330-96-20150628163706.png - 2017-08-24T11:36:49+02:00 - - http://activitystrea.ms/schema/1.0/person - https://social.stopwatchingus-heidelberg.de/user/18330 - atarifrosch - Nerd, Pirat, Debian user, CAcert assurer, Geocacher, Freifunker. Autismus/Depression, agender. GnuPG Key-ID: 0xBCF81ADE - - - - - - atarifrosch - Atari-Frosch - Nerd, Pirat, Debian user, CAcert assurer, Geocacher, Freifunker. Autismus/Depression, agender. GnuPG Key-ID: 0xBCF81ADE - - Düsseldorf, NRW, Germany - - - homepage - https://www.atari-frosch.de/ - true - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-22:noticeId=978072:objectType=note - New note by atarifrosch - 2017-08-22 Bundesverfassungsgericht: Erfolgreiche Verfassungsbeschwerde gegen die Versagung vorläufiger Leistungen für Kosten der Unterkunft und Heizung – <a href="https://www.bundesverfassungsgericht.de/SharedDocs/Pressemitteilungen/DE/2017/bvg17-072.html" title="https://www.bundesverfassungsgericht.de/SharedDocs/Pressemitteilungen/DE/2017/bvg17-072.html" class="attachment" id="attachment-450768" rel="nofollow external">https://www.bundesverfassungsgericht.de/SharedDocs/Pressemitteilungen/DE/2017/bvg17-072.html</a> !<a href="http://quitter.se/group/2184/id" class="h-card group" title="HartzIV (hartziv)">hartziv</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-08-22T12:00:21+00:00 - 2017-08-22T12:00:21+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-22:noticeId=978072:objectType=thread:crc32=28a35f44 - - - - - - - - diff --git a/test/fixtures/ostatus_incoming_post.xml b/test/fixtures/ostatus_incoming_post.xml deleted file mode 100644 index 7967e1b32..000000000 --- a/test/fixtures/ostatus_incoming_post.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-04-29T18:25:38+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-04-29:noticeId=1967725:objectType=note - New note by lambadalambda - Will it blend? - - - http://activitystrea.ms/schema/1.0/post - 2017-04-29T18:25:38+00:00 - 2017-04-29T18:25:38+00:00 - - tag:social.heldscal.la,2017-04-29:objectType=thread:nonce=3f3a9dd83acc4e35 - - - - - - diff --git a/test/fixtures/ostatus_incoming_post_tag.xml b/test/fixtures/ostatus_incoming_post_tag.xml deleted file mode 100644 index 0f99c4126..000000000 --- a/test/fixtures/ostatus_incoming_post_tag.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-04-29T18:25:38+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-04-29:noticeId=1967725:objectType=note - New note by lambadalambda - Will it blend? - - - - - http://activitystrea.ms/schema/1.0/post - 2017-04-29T18:25:38+00:00 - 2017-04-29T18:25:38+00:00 - - tag:social.heldscal.la,2017-04-29:objectType=thread:nonce=3f3a9dd83acc4e35 - - - - - - diff --git a/test/fixtures/ostatus_incoming_reply.xml b/test/fixtures/ostatus_incoming_reply.xml deleted file mode 100644 index 83a427a68..000000000 --- a/test/fixtures/ostatus_incoming_reply.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-04-30T09:30:32+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-04-30:noticeId=1978790:objectType=comment - New comment by lambadalambda - @<a href="https://gs.archae.me/user/4687" class="h-card u-url p-nickname mention" title="shpbot">shpbot</a> why not indeed. - - - http://activitystrea.ms/schema/1.0/post - 2017-04-30T09:30:32+00:00 - 2017-04-30T09:30:32+00:00 - - - - https://gs.archae.me/conversation/327120 - - - - - - - diff --git a/test/fixtures/share-gs-local.xml b/test/fixtures/share-gs-local.xml deleted file mode 100644 index 9d52eab7b..000000000 --- a/test/fixtures/share-gs-local.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-05-03T08:05:41+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - tag:social.heldscal.la,2017-05-03:noticeId=2028428:objectType=note - lambadalambda repeated a notice by lain - RT @<a href="https://pleroma.soykaf.com/users/lain" class="h-card u-url p-nickname mention" title="Lain Iwakura">lain</a> Added returning the entries as xml... let's see if the mastodon hammering stops now. - - http://activitystrea.ms/schema/1.0/share - 2017-05-03T08:05:41+00:00 - 2017-05-03T08:05:41+00:00 - - http://activitystrea.ms/schema/1.0/activity - LOCAL_ID - - Added returning the entries as xml... let's see if the mastodon hammering stops now. - - http://activitystrea.ms/schema/1.0/post - 2017-05-03T08:04:44+00:00 - 2017-05-03T08:04:44+00:00 - - http://activitystrea.ms/schema/1.0/person - LOCAL_USER - lain - Test account - - - - - - lain - Lain Iwakura - Test account - - - - http://activitystrea.ms/schema/1.0/note - https://pleroma.soykaf.com/objects/4c1bda26-902e-4525-9fcd-b9fd44925193 - New note by lain - Added returning the entries as xml... let's see if the mastodon hammering stops now. - - - - - https://pleroma.soykaf.com/contexts/ede39a2b-7cf3-4fa4-8ccd-cb97431bcc22 - - - https://pleroma.soykaf.com/users/lain/feed.atom - Lain Iwakura - - - https://social.heldscal.la/avatar/43188-96-20170429172422.jpeg - 2017-05-03T08:04:44+00:00 - - - - https://pleroma.soykaf.com/contexts/ede39a2b-7cf3-4fa4-8ccd-cb97431bcc22 - - - - - - diff --git a/test/fixtures/share-gs.xml b/test/fixtures/share-gs.xml deleted file mode 100644 index ab5e488bd..000000000 --- a/test/fixtures/share-gs.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-05-03T08:05:41+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - tag:social.heldscal.la,2017-05-03:noticeId=2028428:objectType=note - lambadalambda repeated a notice by lain - RT @<a href="https://pleroma.soykaf.com/users/lain" class="h-card u-url p-nickname mention" title="Lain Iwakura">lain</a> Added returning the entries as xml... let's see if the mastodon hammering stops now. - - http://activitystrea.ms/schema/1.0/share - 2017-05-03T08:05:41+00:00 - 2017-05-03T08:05:41+00:00 - - http://activitystrea.ms/schema/1.0/activity - https://pleroma.soykaf.com/objects/4c1bda26-902e-4525-9fcd-b9fd44925193 - - Added returning the entries as xml... let's see if the mastodon hammering stops now. - - http://activitystrea.ms/schema/1.0/post - 2017-05-03T08:04:44+00:00 - 2017-05-03T08:04:44+00:00 - - http://activitystrea.ms/schema/1.0/person - https://pleroma.soykaf.com/users/lain - lain - Test account - - - - - - lain - Lain Iwakura - Test account - - - - http://activitystrea.ms/schema/1.0/note - https://pleroma.soykaf.com/objects/4c1bda26-902e-4525-9fcd-b9fd44925193 - New note by lain - Added returning the entries as xml... let's see if the mastodon hammering stops now. - - - - - https://pleroma.soykaf.com/contexts/ede39a2b-7cf3-4fa4-8ccd-cb97431bcc22 - - - https://pleroma.soykaf.com/users/lain/feed.atom - Lain Iwakura - - - https://social.heldscal.la/avatar/43188-96-20170429172422.jpeg - 2017-05-03T08:04:44+00:00 - - - - https://pleroma.soykaf.com/contexts/ede39a2b-7cf3-4fa4-8ccd-cb97431bcc22 - - - - - - diff --git a/test/fixtures/share.xml b/test/fixtures/share.xml deleted file mode 100644 index e07b88680..000000000 --- a/test/fixtures/share.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - tag:mastodon.social,2017-05-03:objectId=4934452:objectType=Status - 2017-05-03T08:21:09Z - 2017-05-03T08:21:09Z - lambadalambda shared a status by lain@pleroma.soykaf.com - - https://mastodon.social/users/lambadalambda - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/lambadalambda - lambadalambda - lambadalambda@mastodon.social - - - - lambadalambda - Critical Value - public - - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - https://pleroma.soykaf.com/objects/4c1bda26-902e-4525-9fcd-b9fd44925193 - 2017-05-03T08:04:44Z - 2017-05-03T08:05:52Z - New status by lain@pleroma.soykaf.com - - https://pleroma.soykaf.com/users/lain - http://activitystrea.ms/schema/1.0/person - https://pleroma.soykaf.com/users/lain - lain - lain@pleroma.soykaf.com - Test account - - - - lain - Lain Iwakura - Test account - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - Added returning the entries as xml... let's see if the mastodon hammering stops now. - - public - - - Added returning the entries as xml... let's see if the mastodon hammering stops now. - - public - - - diff --git a/test/fixtures/tesla_mock/7369654.atom b/test/fixtures/tesla_mock/7369654.atom deleted file mode 100644 index 74fd9ce6b..000000000 --- a/test/fixtures/tesla_mock/7369654.atom +++ /dev/null @@ -1,44 +0,0 @@ - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-22:noticeId=7369654:objectType=comment - New comment by shpuld - @<a href="https://testing.pleroma.lol/users/lain" class="h-card mention" title="Rael Electric Razor">lain</a> me far right - - - http://activitystrea.ms/schema/1.0/post - 2018-02-22T09:20:12+00:00 - 2018-02-22T09:20:12+00:00 - - http://activitystrea.ms/schema/1.0/person - https://shitposter.club/user/5381 - shpuld - - - - - - shpuld - shp - - - - - - - tag:shitposter.club,2018-02-22:objectType=thread:nonce=e5a7c72d60a9c0e4 - - - - https://shitposter.club/api/statuses/user_timeline/5381.atom - shp - - - - https://shitposter.club/avatar/5381-96-20171230093854.png - 2018-02-23T13:30:15+00:00 - - - - - diff --git a/test/fixtures/tesla_mock/atarifrosch_feed.xml b/test/fixtures/tesla_mock/atarifrosch_feed.xml deleted file mode 100644 index e00df782e..000000000 --- a/test/fixtures/tesla_mock/atarifrosch_feed.xml +++ /dev/null @@ -1,473 +0,0 @@ - - - GNU social - https://social.stopwatchingus-heidelberg.de/api/statuses/user_timeline/18330.atom - atarifrosch-Zeitleiste - Aktualisierungen von atarifrosch auf social.stopwatchingus-heidelberg.de! - https://social.stopwatchingus-heidelberg.de/avatar/18330-96-20150628163706.png - 2017-08-24T12:06:55+02:00 - - http://activitystrea.ms/schema/1.0/person - https://social.stopwatchingus-heidelberg.de/user/18330 - atarifrosch - Nerd, Pirat, Debian user, CAcert assurer, Geocacher, Freifunker. Autismus/Depression, agender. GnuPG Key-ID: 0xBCF81ADE - - - - - - atarifrosch - Atari-Frosch - Nerd, Pirat, Debian user, CAcert assurer, Geocacher, Freifunker. Autismus/Depression, agender. GnuPG Key-ID: 0xBCF81ADE - - Düsseldorf, NRW, Germany - - - homepage - https://www.atari-frosch.de/ - true - - - - - - - - - - - - - - tag:social.stopwatchingus-heidelberg.de,2017-08-24:noticeId=978735:objectType=note - atarifrosch repeated a notice by hoergen - RT @<a href="https://social.hoergen.org/hoergen" class="h-card mention" title="hoergen">hoergen</a> Das falsche Bild der Tagesschau &quot;Auffallend &quot;erfolgreich&quot; - Andrea Nahles und Manuela Schwesig&quot; #<span class="tag"><a href="https://social.stopwatchingus-heidelberg.de/tag/geringverdiener" rel="tag">Geringverdiener</a></span> #<span class="tag"><a href="https://social.stopwatchingus-heidelberg.de/tag/mindestlohn" rel="tag">Mindestlohn</a></span> #<span class="tag"><a href="https://social.stopwatchingus-heidelberg.de/tag/mannxismus" rel="tag">mannxismus</a></span> #<span class="tag"><a href="https://social.stopwatchingus-heidelberg.de/tag/erwerbsminderungsrente" rel="tag">Erwerbsminderungsrente</a></span> #<span class="tag"><a href="https://social.stopwatchingus-heidelberg.de/tag/arbeitnehmerflexibilisierung" rel="tag">ArbeitnehmerFlexibilisierung</a></span> #<span class="tag"><a href="https://social.stopwatchingus-heidelberg.de/tag/altersarmut" rel="tag">AltersArmut</a></span> ..... <a href="http://www.tagesschau.de/inland/btw17/bilanz-schwesig-nahles-101.html" title="http://www.tagesschau.de/inland/btw17/bilanz-schwesig-nahles-101.html" class="attachment" id="attachment-450858" rel="nofollow external">http://www.tagesschau.de/inland/btw17/bilanz-schwesig-nahles-101.html</a> - https://social.stopwatchingus-heidelberg.de/notice/978735 - http://activitystrea.ms/schema/1.0/share - 2017-08-24T09:18:25+00:00 - 2017-08-24T09:18:25+00:00 - - http://activitystrea.ms/schema/1.0/activity - tag:social.hoergen.org,2017-08-24:noticeId=222320:objectType=note - - Das falsche Bild der Tagesschau <br /> &quot;Auffallend &quot;erfolgreich&quot; - Andrea Nahles und Manuela Schwesig&quot; #<span class="tag"><a href="https://social.hoergen.org/tag/geringverdiener" rel="tag">Geringverdiener</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/mindestlohn" rel="tag">Mindestlohn</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/mannxismus" rel="tag">mannxismus</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/erwerbsminderungsrente" rel="tag">Erwerbsminderungsrente</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/arbeitnehmerflexibilisierung" rel="tag">ArbeitnehmerFlexibilisierung</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/altersarmut" rel="tag">AltersArmut</a></span> ..... <br /> <br /> <a href="http://www.tagesschau.de/inland/btw17/bilanz-schwesig-nahles-101.html" title="http://www.tagesschau.de/inland/btw17/bilanz-schwesig-nahles-101.html" rel="nofollow external noreferrer" class="attachment">http://www.tagesschau.de/inland/btw17/bilanz-schwesig-nahles-101.html</a> - https://social.hoergen.org/notice/222320 - http://activitystrea.ms/schema/1.0/post - 2017-08-24T07:36:31+00:00 - 2017-08-24T07:36:31+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.hoergen.org/user/2 - hoergen - aka Andi Memyself #humanist #nerd Menschen liebhabender Misanthrop und auch sonst sehr vielseitig interessiert. - - - - - - hoergen - hoergen - aka Andi Memyself #humanist #nerd Menschen liebhabender Misanthrop und auch sonst sehr vielseitig interessiert. - - Berlin - - - homepage - https://hyperblog.de/hoergen/ - true - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.hoergen.org,2017-08-24:noticeId=222320:objectType=note - New note by hoergen - Das falsche Bild der Tagesschau <br /> &quot;Auffallend &quot;erfolgreich&quot; - Andrea Nahles und Manuela Schwesig&quot; #<span class="tag"><a href="https://social.hoergen.org/tag/geringverdiener" rel="tag">Geringverdiener</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/mindestlohn" rel="tag">Mindestlohn</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/mannxismus" rel="tag">mannxismus</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/erwerbsminderungsrente" rel="tag">Erwerbsminderungsrente</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/arbeitnehmerflexibilisierung" rel="tag">ArbeitnehmerFlexibilisierung</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/altersarmut" rel="tag">AltersArmut</a></span> ..... <br /> <br /> <a href="http://www.tagesschau.de/inland/btw17/bilanz-schwesig-nahles-101.html" title="http://www.tagesschau.de/inland/btw17/bilanz-schwesig-nahles-101.html" rel="nofollow external noreferrer" class="attachment">http://www.tagesschau.de/inland/btw17/bilanz-schwesig-nahles-101.html</a> - - - - - https://social.hoergen.org/conversation/98616 - - - - - - - - - https://social.hoergen.org/api/statuses/user_timeline/2.atom - hoergen - - - https://social.stopwatchingus-heidelberg.de/avatar/54316-original-20170824072526.jpeg - 2017-08-24T09:48:30+00:00 - - - - https://social.hoergen.org/conversation/98616 - - - - - - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.stopwatchingus-heidelberg.de,2017-08-24:noticeId=978734:objectType=comment - New comment by atarifrosch - Jo, die Anzahl der Hartz-IV-Sanktionen nennt sie genausowenig wie die Anzahl der Menschen, die von den Repressionsbehörden in Obdachlosigkeit und Suizid getrieben wurden. Das würde die Erfolgszahlen dann doch ein wenig trüben, nech? - - - http://activitystrea.ms/schema/1.0/post - 2017-08-24T09:18:13+00:00 - 2017-08-24T09:18:13+00:00 - - - - https://social.hoergen.org/conversation/98616 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-24:noticeId=978732:objectType=note - New note by atarifrosch - Moin-quak. - - - http://activitystrea.ms/schema/1.0/post - 2017-08-24T09:09:39+00:00 - 2017-08-24T09:09:39+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-24:noticeId=978732:objectType=thread:crc32=2f92b7b6 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-23:noticeId=978594:objectType=note - New note by atarifrosch - n8-quak! - - - http://activitystrea.ms/schema/1.0/post - 2017-08-23T21:39:54+00:00 - 2017-08-23T21:39:54+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-23:noticeId=978594:objectType=thread:crc32=9bdb0ac9 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-23:noticeId=978503:objectType=note - New note by atarifrosch - 2017-08-16 Michal Špaček: Post a boarding pass on Facebook, get your account stolen – Post a boarding pass on Facebook, get your account stolen (gilt übrinx nicht nur für Facebook) - - - http://activitystrea.ms/schema/1.0/post - 2017-08-23T15:14:29+00:00 - 2017-08-23T15:14:29+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-23:noticeId=978503:objectType=thread:crc32=3de05c3a - - - - - - - tag:social.stopwatchingus-heidelberg.de,2017-08-23:fave:18330:activity:978458:2017-08-23T15:18:19+02:00 - Favorite - atarifrosch favorited something by einebiene: Haha, große Überraschung. <a href="http://www.sueddeutsche.de/wirtschaft/abgasaffaere-software-updates-fuer-dieselautos-helfen-kaum-1.3637636" title="http://www.sueddeutsche.de/wirtschaft/abgasaffaere-software-updates-fuer-dieselautos-helfen-kaum-1.3637636" rel="nofollow noreferrer" class="attachment">https://quitter.is/url/1122672</a><br /> Was ich an all diesen Artikeln schade finde, ist, daß immer nur auf den Umstieg von Auto zu anderem Auto gesprochen wird. Öffis werden nicht erwähnt, Carsharing nicht, radeln nicht, und in der Stadt wäre ne Vespa auch deutlich besser als ein SUV. - http://activitystrea.ms/schema/1.0/favorite - 2017-08-23T13:18:19+00:00 - 2017-08-23T13:18:19+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:quitter.is,2017-08-23:noticeId=4032910:objectType=note - New note by einebiene - Haha, große Überraschung. <a href="http://www.sueddeutsche.de/wirtschaft/abgasaffaere-software-updates-fuer-dieselautos-helfen-kaum-1.3637636" title="http://www.sueddeutsche.de/wirtschaft/abgasaffaere-software-updates-fuer-dieselautos-helfen-kaum-1.3637636" rel="nofollow noreferrer" class="attachment">https://quitter.is/url/1122672</a><br /> Was ich an all diesen Artikeln schade finde, ist, daß immer nur auf den Umstieg von Auto zu anderem Auto gesprochen wird. Öffis werden nicht erwähnt, Carsharing nicht, radeln nicht, und in der Stadt wäre ne Vespa auch deutlich besser als ein SUV. - - - - - - - https://quitter.is/conversation/2535246 - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-23:noticeId=978402:objectType=note - New note by atarifrosch - moin-quak - - - http://activitystrea.ms/schema/1.0/post - 2017-08-23T10:57:26+00:00 - 2017-08-23T10:57:26+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-23:noticeId=978402:objectType=thread:crc32=7050c397 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-22:noticeId=978164:objectType=note - New note by atarifrosch - n8-quak - - - http://activitystrea.ms/schema/1.0/post - 2017-08-22T19:54:30+00:00 - 2017-08-22T19:54:30+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-22:noticeId=978164:objectType=thread:crc32=b0a209c7 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-22:noticeId=978072:objectType=note - New note by atarifrosch - 2017-08-22 Bundesverfassungsgericht: Erfolgreiche Verfassungsbeschwerde gegen die Versagung vorläufiger Leistungen für Kosten der Unterkunft und Heizung – <a href="https://www.bundesverfassungsgericht.de/SharedDocs/Pressemitteilungen/DE/2017/bvg17-072.html" title="https://www.bundesverfassungsgericht.de/SharedDocs/Pressemitteilungen/DE/2017/bvg17-072.html" class="attachment" id="attachment-450768" rel="nofollow external">https://www.bundesverfassungsgericht.de/SharedDocs/Pressemitteilungen/DE/2017/bvg17-072.html</a> !<a href="http://quitter.se/group/2184/id" class="h-card group" title="HartzIV (hartziv)">hartziv</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-08-22T12:00:21+00:00 - 2017-08-22T12:00:21+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-22:noticeId=978072:objectType=thread:crc32=28a35f44 - - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-22:noticeId=978042:objectType=note - New note by atarifrosch - moin-quak! - - - http://activitystrea.ms/schema/1.0/post - 2017-08-22T07:55:27+00:00 - 2017-08-22T07:55:27+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-22:noticeId=978042:objectType=thread:crc32=f070a9f7 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-21:noticeId=977914:objectType=note - New note by atarifrosch - So, morgen geht's weiter. n8-quak! - - - http://activitystrea.ms/schema/1.0/post - 2017-08-21T22:09:53+00:00 - 2017-08-21T22:09:53+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-21:noticeId=977914:objectType=thread:crc32=c0a9f7fa - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-21:noticeId=977710:objectType=note - New note by atarifrosch - moin-quak. - - - http://activitystrea.ms/schema/1.0/post - 2017-08-21T08:58:26+00:00 - 2017-08-21T08:58:26+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-21:noticeId=977710:objectType=thread:crc32=60cfb466 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-20:noticeId=977526:objectType=note - New note by atarifrosch - Meine Augen meinen, für heute sei es genug. Nun denn. n8-quak. - - - http://activitystrea.ms/schema/1.0/post - 2017-08-20T19:58:16+00:00 - 2017-08-20T19:58:16+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-20:noticeId=977526:objectType=thread:crc32=ce79634 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-20:noticeId=977369:objectType=note - New note by atarifrosch - [Blog] Im Netz aufgefischt #<span class="tag"><a href="https://social.stopwatchingus-heidelberg.de/tag/330" rel="tag">330</a></span> – <a href="https://blog.atari-frosch.de/2017/08/20/im-netz-aufgefischt-330/" title="https://blog.atari-frosch.de/2017/08/20/im-netz-aufgefischt-330/" class="attachment" id="attachment-450668" rel="nofollow external">https://blog.atari-frosch.de/2017/08/20/im-netz-aufgefischt-330/</a> (was ich diese Woche so gelesen habe) - - - http://activitystrea.ms/schema/1.0/post - 2017-08-20T09:14:07+00:00 - 2017-08-20T09:14:07+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-20:noticeId=977369:objectType=thread:crc32=2f800b86 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-19:noticeId=977268:objectType=note - New note by atarifrosch - Fast ständig husten müssen ist echt anstrengend … naja, n8-quak. - - - http://activitystrea.ms/schema/1.0/post - 2017-08-19T21:59:20+00:00 - 2017-08-19T21:59:20+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-19:noticeId=977268:objectType=thread:crc32=deda767a - - - - - - - tag:social.stopwatchingus-heidelberg.de,2017-08-19:fave:18330:activity:977146:2017-08-19T21:39:26+02:00 - Favorite - atarifrosch favorited something by einebienezwo: Ich mach gerade Kompetenztraining.<br /> Ich trainiere die Kompetenz, eine halb aufgegessene Gummibärchentüte nicht ganz aufzuessen. - http://activitystrea.ms/schema/1.0/favorite - 2017-08-19T19:39:26+00:00 - 2017-08-19T19:39:26+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:gnusocial.de,2017-08-19:noticeId=11011264:objectType=note - New note by einebienezwo - Ich mach gerade Kompetenztraining.<br /> Ich trainiere die Kompetenz, eine halb aufgegessene Gummibärchentüte nicht ganz aufzuessen. - - - - - - - https://gnusocial.de/conversation/9363945 - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.stopwatchingus-heidelberg.de,2017-08-19:noticeId=977242:objectType=comment - New comment by atarifrosch - Wir hatten hier schon Ordnungsdienst auf'm Radweg. Fotografisch dokumentiert (nicht von mir, Bekannter hatte es gesehen). Da hatte grad 'ne Pizzeria neu eröffnet … - - - http://activitystrea.ms/schema/1.0/post - 2017-08-19T19:38:53+00:00 - 2017-08-19T19:38:53+00:00 - - - - https://gnusocial.de/conversation/9363813 - - - - - - - - tag:social.stopwatchingus-heidelberg.de,2017-08-19:fave:18330:activity:977180:2017-08-19T21:37:36+02:00 - Favorite - atarifrosch favorited something by jcaktiv: BTW Hallo zusammen &lt;3, wo ich schon mal wieder hier bin - http://activitystrea.ms/schema/1.0/favorite - 2017-08-19T19:37:36+00:00 - 2017-08-19T19:37:36+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:quitter.se,2017-08-19:noticeId=17372467:objectType=note - New note by jcaktiv - BTW Hallo zusammen &lt;3, wo ich schon mal wieder hier bin - - - - - - - tag:quitter.se,2017-08-19:objectType=thread:nonce=46c1c433d88aaa9f - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.stopwatchingus-heidelberg.de,2017-08-19:noticeId=976985:objectType=comment - New comment by atarifrosch - Jo, oder einfach mal nachfragen, so als Realitätsabgleich. - - - http://activitystrea.ms/schema/1.0/post - 2017-08-19T10:34:50+00:00 - 2017-08-19T10:34:50+00:00 - - - - https://gnusocial.de/conversation/9362516 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-19:noticeId=976983:objectType=note - New note by atarifrosch - Schöne Alternative zu mit Werbung überladenen kommerziellen Anbietern: <a href="http://ifconfig.at/" title="http://ifconfig.at/" class="attachment" id="attachment-450636" rel="nofollow external">http://ifconfig.at/</a> – eigene IP, Hostname etc. abfragen, mit curl dann auch in Textform zur lokalen Weiterverarbeitung in Scripten etc. Leider (noch?) kein https. - - - http://activitystrea.ms/schema/1.0/post - 2017-08-19T10:33:04+00:00 - 2017-08-19T10:33:04+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-19:noticeId=976983:objectType=thread:crc32=4a3593c0 - - - - - - diff --git a/test/fixtures/tesla_mock/emelie.atom b/test/fixtures/tesla_mock/emelie.atom deleted file mode 100644 index ddaa1c6ca..000000000 --- a/test/fixtures/tesla_mock/emelie.atom +++ /dev/null @@ -1,306 +0,0 @@ - - - https://mastodon.social/users/emelie.atom - emelie 🎨 - 23 / #Sweden / #Artist / #Equestrian / #GameDev - -If I ain't spending time with my pets, I'm probably drawing. 🐴 🐱 🐰 - 2019-02-04T20:22:19Z - https://files.mastodon.social/accounts/avatars/000/015/657/original/e7163f98280da1a4.png - - https://mastodon.social/users/emelie - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/emelie - emelie - emelie@mastodon.social - <p>23 / <a href="https://mastodon.social/tags/sweden" class="mention hashtag" rel="tag">#<span>Sweden</span></a> / <a href="https://mastodon.social/tags/artist" class="mention hashtag" rel="tag">#<span>Artist</span></a> / <a href="https://mastodon.social/tags/equestrian" class="mention hashtag" rel="tag">#<span>Equestrian</span></a> / <a href="https://mastodon.social/tags/gamedev" class="mention hashtag" rel="tag">#<span>GameDev</span></a></p><p>If I ain&apos;t spending time with my pets, I&apos;m probably drawing. 🐴 🐱 🐰</p> - - - - emelie - emelie 🎨 - 23 / #Sweden / #Artist / #Equestrian / #GameDev - -If I ain't spending time with my pets, I'm probably drawing. 🐴 🐱 🐰 - public - - - - - - - https://mastodon.social/users/emelie/statuses/101850331907006641 - 2019-04-01T09:58:50Z - 2019-04-01T09:58:50Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>Me: I&apos;m going to make this vital change to my world building in the morning, no way I&apos;ll forget this, it&apos;s too big of a deal<br />Also me: forgets</p> - - public - - - - - - https://mastodon.social/users/emelie/statuses/101849626603073336 - 2019-04-01T06:59:28Z - 2019-04-01T06:59:28Z - New status by emelie - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - - <p><span class="h-card"><a href="https://mastodon.social/@Fergant" class="u-url mention">@<span>Fergant</span></a></span> Dom är i stort sett religiös skrift vid det här laget 👏👏</p><p>har dock bara läst svenska översättningen, kanske är dags att jag läser dom på engelska</p> - - - public - - - - - - - https://mastodon.social/users/emelie/statuses/101849580030237068 - 2019-04-01T06:47:37Z - 2019-04-01T06:47:37Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>What&apos;s you people&apos;s favourite fantasy books? Give me some hot tips 🌞</p> - - public - - - - - - https://mastodon.social/users/emelie/statuses/101849550599949363 - 2019-04-01T06:40:08Z - 2019-04-01T06:40:08Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>Stick them legs out 💃 <a href="https://mastodon.social/tags/mastocats" class="mention hashtag" rel="tag">#<span>mastocats</span></a></p> - - - - public - - - - - - https://mastodon.social/users/emelie/statuses/101849191533152720 - 2019-04-01T05:08:49Z - 2019-04-01T05:08:49Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>long 🐱 <a href="https://mastodon.social/tags/mastocats" class="mention hashtag" rel="tag">#<span>mastocats</span></a></p> - - - - public - - - - - - https://mastodon.social/users/emelie/statuses/101849165031453009 - 2019-04-01T05:02:05Z - 2019-04-01T05:02:05Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>You gotta take whatever bellyrubbing opportunity you can get before she changes her mind 🦁 <a href="https://mastodon.social/tags/mastocats" class="mention hashtag" rel="tag">#<span>mastocats</span></a></p> - - - - public - - - - - - https://mastodon.social/users/emelie/statuses/101846512530748693 - 2019-03-31T17:47:31Z - 2019-03-31T17:47:31Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>Hello look at this boy having a decent haircut for once <a href="https://mastodon.social/tags/mastohorses" class="mention hashtag" rel="tag">#<span>mastohorses</span></a> <a href="https://mastodon.social/tags/equestrian" class="mention hashtag" rel="tag">#<span>equestrian</span></a></p> - - - - - public - - - - - - https://mastodon.social/users/emelie/statuses/101846181093805500 - 2019-03-31T16:23:14Z - 2019-03-31T16:23:14Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>Sorry did I disturb the who-is-the-longest-cat competition ? <a href="https://mastodon.social/tags/mastocats" class="mention hashtag" rel="tag">#<span>mastocats</span></a></p> - - - - public - - - - - - https://mastodon.social/users/emelie/statuses/101845897513133849 - 2019-03-31T15:11:07Z - 2019-03-31T15:11:07Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - more earthsea ramblings - <p>I&apos;m re-watching Tales from Earthsea for the first time since I read the books, and that Therru doesn&apos;t squash Cob like a spider, as Orm Embar did is a wasted opportunity tbh</p> - - public - - - - - - https://mastodon.social/users/emelie/statuses/101841219051533307 - 2019-03-30T19:21:19Z - 2019-03-30T19:21:19Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>I gave my cats some mackerel and they ate it all in 0.3 seconds, and now they won&apos;t stop meowing for more, and I&apos;m tired plz shut up</p> - - public - - - - - - https://mastodon.social/users/emelie/statuses/101839949762341381 - 2019-03-30T13:58:31Z - 2019-03-30T13:58:31Z - New status by emelie - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - - <p>yet I&apos;m confused about this american dude with a gun, like the heck r ya doin in mah ghibli</p> - - public - - - - - - - https://mastodon.social/users/emelie/statuses/101839928677863590 - 2019-03-30T13:53:09Z - 2019-03-30T13:53:09Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>2 hours into Ni no Kuni 2 and I&apos;ve already sold my soul to this game</p> - - public - - - - - - https://mastodon.social/users/emelie/statuses/101836329521599438 - 2019-03-29T22:37:51Z - 2019-03-29T22:37:51Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>Pippi Longstocking the original one-punch /man</p> - - public - - - - - - https://mastodon.social/users/emelie/statuses/101835905282948341 - 2019-03-29T20:49:57Z - 2019-03-29T20:49:57Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>I&apos;ve had so much wine I thought I had a 3rd brother</p> - - public - - - - - - https://mastodon.social/users/emelie/statuses/101835878059204660 - 2019-03-29T20:43:02Z - 2019-03-29T20:43:02Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>ååååhhh booi</p> - - public - - - - - - https://mastodon.social/users/emelie/statuses/101835848050598939 - 2019-03-29T20:35:24Z - 2019-03-29T20:35:24Z - New status by emelie - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - - <p><span class="h-card"><a href="https://thraeryn.net/@thraeryn" class="u-url mention">@<span>thraeryn</span></a></span> if I spent 1 hour and a half watching this monstrosity, I need to</p> - - - public - - - - - - - https://mastodon.social/users/emelie/statuses/101835823138262290 - 2019-03-29T20:29:04Z - 2019-03-29T20:29:04Z - New status by emelie - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - - medical, fluids mention - <p><span class="h-card"><a href="https://icosahedron.website/@Trev" class="u-url mention">@<span>Trev</span></a></span> *hugs* ✨</p> - - - public - - - - - - diff --git a/test/fixtures/tesla_mock/http__gs.example.org_index.php_api_statuses_user_timeline_1.atom.xml b/test/fixtures/tesla_mock/http__gs.example.org_index.php_api_statuses_user_timeline_1.atom.xml deleted file mode 100644 index 490467708..000000000 --- a/test/fixtures/tesla_mock/http__gs.example.org_index.php_api_statuses_user_timeline_1.atom.xml +++ /dev/null @@ -1,460 +0,0 @@ - - - GNU social - http://gs.example.org/index.php/api/statuses/user_timeline/1.atom - lambda timeline - Updates from lambda on gs.example.org! - http://gs.example.org/theme/neo-gnu/default-avatar-profile.png - 2017-05-05T12:09:57+00:00 - - http://activitystrea.ms/schema/1.0/person - http://gs.example.org:4040/index.php/user/1 - lambda - - - - - lambda - lambda - - - - - - - - - - - - - tag:gs.example.org,2017-05-04:noticeId=84:objectType=note - lambda repeated a notice by lambda2 - RT @<a href="http://gs.example.org/index.php/user/7" class="h-card mention">lambda2</a> Hello! - - http://activitystrea.ms/schema/1.0/share - 2017-05-04T16:38:50+00:00 - 2017-05-04T16:38:50+00:00 - - http://activitystrea.ms/schema/1.0/activity - tag:gs.example.org,2017-05-01:noticeId=67:objectType=note - - Hello! - - http://activitystrea.ms/schema/1.0/post - 2017-05-01T08:41:04+00:00 - 2017-05-01T08:41:04+00:00 - - http://activitystrea.ms/schema/1.0/person - http://gs.example.org/index.php/user/7 - lambda2 - - - - - - lambda2 - lambda2 - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org,2017-05-01:noticeId=67:objectType=note - New note by lambda2 - Hello! - - - - - tag:gs.example.org,2017-05-01:objectType=thread:nonce=cffa792cb95fe417 - - - http://gs.example.org/index.php/api/statuses/user_timeline/7.atom - lambda2 - - - - http://gs.example.org/avatar/7-96-20170501084054.png - 2017-05-01T16:33:10+00:00 - - - - - - tag:gs.example.org,2017-05-01:objectType=thread:nonce=cffa792cb95fe417 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org,2017-04-30:noticeId=63:objectType=note - New note by lambda - what now? - - - http://activitystrea.ms/schema/1.0/post - 2017-04-30T10:09:57+00:00 - 2017-04-30T10:09:57+00:00 - - - - tag:gs.example.org,2017-04-30:objectType=thread:nonce=1bbb60991ae9874b - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org,2017-04-30:noticeId=61:objectType=note - New note by lambda - @<a href="http://pleroma.example.org:4000/users/lain5" class="h-card mention">lain5</a> Hello! - - - http://activitystrea.ms/schema/1.0/post - 2017-04-30T10:07:26+00:00 - 2017-04-30T10:07:26+00:00 - - tag:gs.example.org,2017-04-30:objectType=thread:nonce=1bbb60991ae9874b - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org,2017-04-29:noticeId=59:objectType=note - New note by lambda - ey - - - http://activitystrea.ms/schema/1.0/post - 2017-04-29T17:04:59+00:00 - 2017-04-29T17:04:59+00:00 - - tag:gs.example.org,2017-04-29:objectType=thread:nonce=4cc42c2c61a0f4bd - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org,2017-04-29:noticeId=58:objectType=note - New note by lambda - Another one. - - - http://activitystrea.ms/schema/1.0/post - 2017-04-29T17:02:47+00:00 - 2017-04-29T17:02:47+00:00 - - tag:gs.example.org,2017-04-29:objectType=thread:nonce=53e9b8f1d6d38d13 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org,2017-04-29:noticeId=57:objectType=note - New note by lambda - Let's see if this comes over. - - - http://activitystrea.ms/schema/1.0/post - 2017-04-29T17:01:39+00:00 - 2017-04-29T17:01:39+00:00 - - tag:gs.example.org,2017-04-29:objectType=thread:nonce=238a7bd3ffc7c9cc - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org,2017-04-29:noticeId=56:objectType=note - New note by lambda - @<a href="http://pleroma.example.org:4000/users/lain5" class="h-card mention">lain5</a> Hey! - - - http://activitystrea.ms/schema/1.0/post - 2017-04-29T16:38:13+00:00 - 2017-04-29T16:38:13+00:00 - - tag:gs.example.org,2017-04-29:objectType=thread:nonce=2629d3a398171b0f - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=55:objectType=note - New note by lambda - hey. - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T18:16:13+00:00 - 2017-04-25T18:16:13+00:00 - - - - http://pleroma.example.org:4000/contexts/8f6f45d4-8e4d-4e1a-a2de-09f27367d2d0 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=53:objectType=note - New note by lambda - and this? - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T18:14:34+00:00 - 2017-04-25T18:14:34+00:00 - - - - http://pleroma.example.org:4000/contexts/24779b0e-91ad-487e-81bd-6cf5bb437b09 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=52:objectType=note - New note by lambda - yeah it does :) - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T18:13:31+00:00 - 2017-04-25T18:13:31+00:00 - - - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=e0dc24b1a93ab6b3 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=50:objectType=note - New note by lambda - @<a href="http://pleroma.example.org:4000/users/lain5" class="h-card mention">lain5</a> Let's try with one that originates here! - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T18:10:28+00:00 - 2017-04-25T18:10:28+00:00 - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=e0dc24b1a93ab6b3 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=48:objectType=note - New note by lambda - works? - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T18:08:44+00:00 - 2017-04-25T18:08:44+00:00 - - - - http://pleroma.example.org:4000/contexts/24779b0e-91ad-487e-81bd-6cf5bb437b09 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=46:objectType=note - New note by lambda - Let's send you an answer. - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T18:05:31+00:00 - 2017-04-25T18:05:31+00:00 - - - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=73c7bcf6658f7ce3 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=44:objectType=note - New note by lambda - Hey. - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T18:01:09+00:00 - 2017-04-25T18:01:09+00:00 - - - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=6e7c8fc2823380b4 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=43:objectType=note - New note by lambda - What's coming to you? - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T17:58:41+00:00 - 2017-04-25T17:58:41+00:00 - - - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=6e7c8fc2823380b4 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=42:objectType=note - New note by lambda - Now this is podracing. - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T17:57:40+00:00 - 2017-04-25T17:57:40+00:00 - - - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=6e7c8fc2823380b4 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=39:objectType=note - New note by lambda - Sure looks like it! - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T17:48:27+00:00 - 2017-04-25T17:48:27+00:00 - - - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=4c6114a75bb4cea5 - - - - - - - - tag:gs.example.org:4040,2017-04-25:subscription:1:person:6:2017-04-25T17:47:47+00:00 - lambda (lambda)'s status on Tuesday, 25-Apr-2017 17:47:47 UTC - <a href="http://gs.example.org:4040/index.php/lambda">lambda</a> started following <a href="http://pleroma.example.org:4000/users/lain5">l</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-04-25T17:47:47+00:00 - 2017-04-25T17:47:47+00:00 - - http://activitystrea.ms/schema/1.0/person - http://pleroma.example.org:4000/users/lain5 - l - lambadalambda - - - - - - lain5 - l - lambadalambda - - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=119acad17515314c - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=36:objectType=note - New note by lambda - @<a href="http://pleroma.example.org:4000/users/lain5" class="h-card mention">lain5</a> Hey, how are you? - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T17:46:22+00:00 - 2017-04-25T17:46:22+00:00 - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=9c5ec19a18191372 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=35:objectType=note - New note by lambda - @lain5@pleroma.example.org does this not work? - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T17:42:31+00:00 - 2017-04-25T17:42:31+00:00 - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=fc841d7f52caa363 - - - - - - diff --git a/test/fixtures/tesla_mock/https___mamot.fr_users_Skruyb.atom b/test/fixtures/tesla_mock/https___mamot.fr_users_Skruyb.atom deleted file mode 100644 index b5f3d923b..000000000 --- a/test/fixtures/tesla_mock/https___mamot.fr_users_Skruyb.atom +++ /dev/null @@ -1,342 +0,0 @@ - - - https://mamot.fr/users/Skruyb.atom - The 7th Son - Fr and En. -Posts will disappear on a regular basis. - 2017-04-28T13:54:23Z - https://mamot.fr/system/accounts/avatars/000/026/213/original/d95dbcfc76f77f4c.jpg?1493230984 - - https://mamot.fr/users/Skruyb - http://activitystrea.ms/schema/1.0/person - https://mamot.fr/users/Skruyb - Skruyb - Skruyb@mamot.fr - <p>Fr and En.<br />Posts will disappear on a regular basis.</p> - - - - Skruyb - The 7th Son - Fr and En. -Posts will disappear on a regular basis. - public - - - - - - - - tag:mamot.fr,2017-05-10:objectId=1299665:objectType=Status - 2017-05-10T20:06:59Z - 2017-05-10T20:06:59Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pouets.ovh/@noName" class="u-url mention">@<span>noName</span></a></span></p><p>Pour comparer faut avoir tester... Ô wait!!! 😁</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1299185:objectType=Status - 2017-05-10T19:52:14Z - 2017-05-10T19:52:14Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://witches.town/@Dhveszak" class="u-url mention">@<span>Dhveszak</span></a></span></p><p>Toi!! Tu vises le ministère de la propagande avoue!!!!!!!</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1299019:objectType=Status - 2017-05-10T19:47:19Z - 2017-05-10T19:47:19Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>Facebook s&apos;attaque aux sites internet &quot;trompeurs&quot;</p><p><a href="http://u.afp.com/4W4z" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="">u.afp.com/4W4z</span><span class="invisible"></span></a></p><p>J&apos;attends de voir que Facebook s&apos;attaque à lui même... rien qu&apos;à lire leurs conditions générales d&apos;utilisation, le respect de la vie privée...</p><p>Charité bien ordonnée... Parfois l&apos;égoïsme aurait du bon.</p> - - public - - - - - tag:mamot.fr,2017-05-10:objectId=1298889:objectType=Status - 2017-05-10T19:43:18Z - 2017-05-10T19:43:18Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://octodon.social/@Balise" class="u-url mention">@<span>Balise</span></a></span></p><p>Fait comme moi, annonce que tu fais dans le flou artistique et que seuls des esprits éclairés pourront en percevoir la beauté et apprécier. Globalement après ça, tout le monde trouve les photos cool :-p</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1298728:objectType=Status - 2017-05-10T19:38:39Z - 2017-05-10T19:38:39Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@applecandy" class="u-url mention">@<span>applecandy</span></a></span></p><p>Lucky you!!!</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1298431:objectType=Status - 2017-05-10T19:26:32Z - 2017-05-10T19:26:32Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>Est-ce que je suis le seul qui lorsqu&apos;il commence à compter les arbres sur le bord de la route n&apos;arrive pas à s&apos;arrêter de compter?</p> - - public - - - - - tag:mamot.fr,2017-05-10:objectId=1298224:objectType=Status - 2017-05-10T19:18:17Z - 2017-05-10T19:18:17Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>Ca y est j&apos;ai une nouvelle passion. Mettre les bouchons qui trainent par terre dans le bons sens avec mon pied 🙌</p> - - public - - - - - tag:mamot.fr,2017-05-10:objectId=1297450:objectType=Status - 2017-05-10T18:53:37Z - 2017-05-10T18:53:37Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>Ok. On est capable d&apos;envoyer des mecs dans l&apos;espace, avoir des voitures autonomes, des trucs intelligents de partout mais pas tous les bâtiments accessibles aux personnes à mobilité réduite, les émissions sur le services publics avec une personne faisant la traduction pour les sourds et malentendants de manière systématique...</p><p>J&apos;ai du louper un truc dans l&apos;ordre des priorités Oo</p> - - public - - - - - tag:mamot.fr,2017-05-10:objectId=1297292:objectType=Status - 2017-05-10T18:48:17Z - 2017-05-10T18:48:17Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>J&apos;ai comme envie de faire un truc mais je ne sais pas quoi mais pourtant c&apos;est comme si je ressentais l&apos;idée dans ma tête mais c&apos;est pas clair...</p><p>Fuck!!! J&apos;vais aller draguer Josiane à la compta ça va me changer les idées!!!</p> - - public - - - - - tag:mamot.fr,2017-05-10:objectId=1296598:objectType=Status - 2017-05-10T18:25:11Z - 2017-05-10T18:25:11Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mamot.fr/@Smeablog" class="u-url mention">@<span>Smeablog</span></a></span></p><p>Pas faux MDR!!!!</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1296571:objectType=Status - 2017-05-10T18:24:13Z - 2017-05-10T18:24:13Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mamot.fr/@Smeablog" class="u-url mention">@<span>Smeablog</span></a></span></p><p>Ca ne change pas la finalité malheureusement, ça ne m&apos;ouvre pas ce à quoi je veux accéder 😭</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1296475:objectType=Status - 2017-05-10T18:20:50Z - 2017-05-10T18:20:50Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>Arrrgghhhhhhh!!!!</p><p>Quand t&apos;es sur le point de cliquer sur un lien dans le fil public global et que BOOM ça se met à jour... J&apos;ose même pas imaginer combien j&apos;ai ouvert de pages web sans le vouloir!!!</p> - - public - - - - - tag:mamot.fr,2017-05-10:objectId=1296426:objectType=Status - 2017-05-10T18:19:17Z - 2017-05-10T18:19:17Z - Skruyb shared a status by Isaluini@mastodon.social - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:mastodon.social,2017-05-10:objectId=5587049:objectType=Status - 2017-05-10T18:18:59Z - 2017-05-10T18:19:00Z - New status by Isaluini@mastodon.social - - https://mastodon.social/users/Isaluini - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/Isaluini - Isaluini - Isaluini@mastodon.social - <p>Adicciones: Escribir, diseñar, cine, café, humor negro, música y dibujar. | Jedi. Bueno, no. Algún día (?) | Gratitude.</p> - - - - Isaluini - Isa - Adicciones: Escribir, diseñar, cine, café, humor negro, música y dibujar. | Jedi. Bueno, no. Algún día (?) | Gratitude. - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>♫ <br><a href="https://www.youtube.com/watch?v=pT68FS3YbQ4"><span class="invisible">https://www.</span><span class="ellipsis">youtube.com/watch?v=pT68FS3YbQ</span><span class="invisible">4</span></a></p> - - public - - - <p>♫ <br><a href="https://www.youtube.com/watch?v=pT68FS3YbQ4"><span class="invisible">https://www.</span><span class="ellipsis">youtube.com/watch?v=pT68FS3YbQ</span><span class="invisible">4</span></a></p> - - public - - - - - tag:mamot.fr,2017-05-10:objectId=1295893:objectType=Status - 2017-05-10T18:01:51Z - 2017-05-10T18:01:51Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mamot.fr/@Chat2Gouttieres" class="u-url mention">@<span>Chat2Gouttieres</span></a></span></p><p>Ah bah après faut savoir mettre à profit ce savoir ^^</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1295815:objectType=Status - 2017-05-10T18:00:02Z - 2017-05-10T18:00:02Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mamot.fr/@Chat2Gouttieres" class="u-url mention">@<span>Chat2Gouttieres</span></a></span></p><p>Exactement. On a les jeux mais pas le pain encore.</p><p>Finalement on a rien inventé :-p</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1295778:objectType=Status - 2017-05-10T17:58:52Z - 2017-05-10T17:58:52Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mamot.fr/@Chat2Gouttieres" class="u-url mention">@<span>Chat2Gouttieres</span></a></span></p><p>C&apos;est ça visiblement dans notre société dite moderne... &quot;Créer l&apos;illusion que&quot; Oo.</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1294943:objectType=Status - 2017-05-10T17:31:44Z - 2017-05-10T17:31:44Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - Hey. - <p><span class="h-card"><a href="https://mastodon.social/@lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span></p><p>Hey!!!</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1294914:objectType=Status - 2017-05-10T17:30:40Z - 2017-05-10T17:30:40Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mamot.fr/@EloClemTiti" class="u-url mention">@<span>EloClemTiti</span></a></span></p><p>J&apos;ai souvent cette impression en effet 😂</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1294148:objectType=Status - 2017-05-10T17:02:01Z - 2017-05-10T17:02:01Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>Les gars, les boss veulent voir de l&apos;avancement!! Une idée?</p><p>On fait comme d&apos;habitude. On divise nos tâches en 25.000 tâches unitaires, on fout du vert au maximum et on crée l&apos;illusion que ça a bien avancé!</p><p>Deal!!</p><p>Bob, tu choisis quel vert on utilise<br />Alice, t&apos;es en charge de la typo<br />Moi, je m&apos;occupe qu&apos;on prend bien le dernier template ppt fournit par la comm interne.</p><p>Des winners qu&apos;on est!!!! Des WI-NNERS!!!</p> - - public - - - - - tag:mamot.fr,2017-05-10:objectId=1293995:objectType=Status - 2017-05-10T16:57:53Z - 2017-05-10T16:57:53Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@SauceHair" class="u-url mention">@<span>SauceHair</span></a></span></p><p>Cool!!</p><p>Bon courage.</p> - - - public - - - - - diff --git a/test/fixtures/tesla_mock/https___mastodon.social_users_lambadalambda.atom b/test/fixtures/tesla_mock/https___mastodon.social_users_lambadalambda.atom deleted file mode 100644 index 4d732b109..000000000 --- a/test/fixtures/tesla_mock/https___mastodon.social_users_lambadalambda.atom +++ /dev/null @@ -1,464 +0,0 @@ - - - https://mastodon.social/users/lambadalambda.atom - Critical Value - - 2017-04-16T21:47:25Z - https://files.mastodon.social/accounts/avatars/000/000/264/original/1429214160519.gif - - https://mastodon.social/users/lambadalambda - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/lambadalambda - lambadalambda - lambadalambda@mastodon.social - - - - lambadalambda - Critical Value - public - - - - - - - - tag:mastodon.social,2017-05-04:objectId=4991300:objectType=Status - 2017-05-04T14:10:30Z - 2017-05-04T14:10:30Z - Delete - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/delete - - - - - tag:mastodon.social,2017-05-04:objectId=4980289:objectType=Status - 2017-05-04T07:43:23Z - 2017-05-04T07:43:23Z - Delete - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/delete - - - - - tag:mastodon.social,2017-05-03:objectId=4952899:objectType=Status - 2017-05-03T17:26:43Z - 2017-05-03T17:26:43Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> OK!!</p> - - - public - - - - - - tag:mastodon.social,2017-05-03:objectId=4952810:objectType=Status - 2017-05-03T17:24:34Z - 2017-05-03T17:24:34Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> yeah :)</p> - - - public - - - - - - tag:mastodon.social,2017-05-03:objectId=4950388:objectType=Status - 2017-05-03T16:22:00Z - 2017-05-03T16:22:00Z - lambadalambda shared a status by lambadalambda@social.heldscal.la - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:social.heldscal.la,2017-05-03:noticeId=2030733:objectType=note - 2017-05-03T12:29:20Z - 2017-05-03T12:29:31Z - New status by lambadalambda@social.heldscal.la - - https://social.heldscal.la/user/23211 - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - lambadalambda@social.heldscal.la - Call me Deacon Blues. - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - Time for work. <a href="https://social.heldscal.la/file/953c117a1e7e4c763755d2ac29cf1aae08e025599f4a4cc11ddff4082c07f969.jpg">https://social.heldscal.la/attachment/120552</a> - - - public - - - Time for work. <a href="https://social.heldscal.la/file/953c117a1e7e4c763755d2ac29cf1aae08e025599f4a4cc11ddff4082c07f969.jpg">https://social.heldscal.la/attachment/120552</a> - - public - - - - - tag:mastodon.social,2017-05-03:objectId=4934452:objectType=Status - 2017-05-03T08:21:09Z - 2017-05-03T08:21:09Z - lambadalambda shared a status by lain@pleroma.soykaf.com - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - https://pleroma.soykaf.com/objects/4c1bda26-902e-4525-9fcd-b9fd44925193 - 2017-05-03T08:04:44Z - 2017-05-03T08:05:52Z - New status by lain@pleroma.soykaf.com - - https://pleroma.soykaf.com/users/lain - http://activitystrea.ms/schema/1.0/person - https://pleroma.soykaf.com/users/lain - lain - lain@pleroma.soykaf.com - Test account - - - - lain - Lain Iwakura - Test account - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - Added returning the entries as xml... let's see if the mastodon hammering stops now. - - public - - - Added returning the entries as xml... let's see if the mastodon hammering stops now. - - public - - - - - tag:mastodon.social,2017-05-02:objectId=4905499:objectType=Status - 2017-05-02T19:34:21Z - 2017-05-02T19:34:21Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> yay!</p> - - - public - - - - - - tag:mastodon.social,2017-05-02:objectId=4905442:objectType=Status - 2017-05-02T19:33:33Z - 2017-05-02T19:33:33Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> so?</p> - - - public - - - - - - tag:mastodon.social,2017-05-02:objectId=4901603:objectType=Status - 2017-05-02T18:33:06Z - 2017-05-02T18:33:06Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> hey</p> - - - public - - - - - - tag:mastodon.social,2017-05-01:objectId=4836720:objectType=Status - 2017-05-01T18:52:16Z - 2017-05-01T18:52:16Z - lambadalambda shared a status by lain@pleroma.soykaf.com - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - https://pleroma.soykaf.com/objects/7b41bb51-9aba-436a-82d9-dd3f5aca98c9 - 2017-05-01T18:50:54Z - 2017-05-01T18:50:57Z - New status by lain@pleroma.soykaf.com - - https://pleroma.soykaf.com/users/lain - http://activitystrea.ms/schema/1.0/person - https://pleroma.soykaf.com/users/lain - lain - lain@pleroma.soykaf.com - Test account - - - - lain - Lain Iwakura - Test account - public - - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <a href="https://mastodon.social/users/lambadalambda">@lambadalambda@mastodon.social</a> you're an all-star. - - - public - - - - <a href="https://mastodon.social/users/lambadalambda">@lambadalambda@mastodon.social</a> you're an all-star. - - public - - - - - tag:mastodon.social,2017-05-01:objectId=4836142:objectType=Status - 2017-05-01T18:38:47Z - 2017-05-01T18:38:47Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> Hey now!</p> - - - public - - - - - - tag:mastodon.social,2017-05-01:objectId=4836055:objectType=Status - 2017-05-01T18:37:04Z - 2017-05-01T18:37:04Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> hello</p> - - - public - - - - - - tag:mastodon.social,2017-05-01:objectId=4834850:objectType=Status - 2017-05-01T18:10:43Z - 2017-05-01T18:10:43Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> Hey!</p> - - - public - - - - - tag:mastodon.social,2017-04-29:objectId=4694455:objectType=Status - 2017-04-29T18:39:12Z - 2017-04-29T18:39:12Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>@lain@pleroma.soykaf.com What&apos;s up?</p> - - public - - - - - tag:mastodon.social,2017-04-29:objectId=4694384:objectType=Status - 2017-04-29T18:37:32Z - 2017-04-29T18:37:32Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://social.heldscal.la/lain" class="u-url mention">@<span>lain</span></a></span> Hey.</p> - - - public - - - - - tag:mastodon.social,2017-04-07:objectId=1874242:objectType=Status - 2017-04-07T11:02:56Z - 2017-04-07T11:02:56Z - lambadalambda shared a status by 0xroy@social.wxcafe.net - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:social.wxcafe.net,2017-04-07:objectId=72554:objectType=Status - 2017-04-07T11:01:59Z - 2017-04-07T11:02:00Z - New status by 0xroy@social.wxcafe.net - - https://social.wxcafe.net/users/0xroy - http://activitystrea.ms/schema/1.0/person - https://social.wxcafe.net/users/0xroy - 0xroy - 0xroy@social.wxcafe.net - ta caution weeb | discussions privées : <a href="https://%F0%9F%92%8C.0xroy.me"><span class="invisible">https://</span><span class="">💌.0xroy.me</span><span class="invisible"></span></a> - - - - 0xroy - 「R O Y 🍵 B O S」 - ta caution weeb | discussions privées : https://💌.0xroy.me - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>someone pls eli5 matrix (protocol) and riot</p> - - public - - - <p>someone pls eli5 matrix (protocol) and riot</p> - - public - - - - - tag:mastodon.social,2017-04-06:objectId=1768247:objectType=Status - 2017-04-06T11:10:19Z - 2017-04-06T11:10:19Z - lambadalambda shared a status by areyoutoo@mastodon.xyz - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:mastodon.xyz,2017-04-05:objectId=133327:objectType=Status - 2017-04-05T17:36:41Z - 2017-04-05T18:12:14Z - New status by areyoutoo@mastodon.xyz - - https://mastodon.xyz/users/areyoutoo - http://activitystrea.ms/schema/1.0/person - https://mastodon.xyz/users/areyoutoo - areyoutoo - areyoutoo@mastodon.xyz - devops | retired gamedev | always boost puppy pics - - - - areyoutoo - Raw Butter - devops | retired gamedev | always boost puppy pics - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>Some UX thoughts for <a href="https://mastodon.xyz/tags/mastodev">#<span>mastodev</span></a>:</p><p>- Would be nice if I could work on multiple draft toots? Clicking to reply to someone seems to erase any draft I had been working on.</p><p>- Kinda risky to click on the Federated Timeline if it loads new toots and scrolls 10ms before I click on something.</p><p>I probably don't know enough web frontend to help, but it might be fun to try.</p> - - - public - - - <p>Some UX thoughts for <a href="https://mastodon.xyz/tags/mastodev">#<span>mastodev</span></a>:</p><p>- Would be nice if I could work on multiple draft toots? Clicking to reply to someone seems to erase any draft I had been working on.</p><p>- Kinda risky to click on the Federated Timeline if it loads new toots and scrolls 10ms before I click on something.</p><p>I probably don't know enough web frontend to help, but it might be fun to try.</p> - - public - - - - - tag:mastodon.social,2017-04-06:objectId=1764509:objectType=Status - 2017-04-06T10:15:38Z - 2017-04-06T10:15:38Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - This is a test for cw federation - <p>This is a test for cw federation body text.</p> - - public - - - - - tag:mastodon.social,2017-04-05:objectId=1645208:objectType=Status - 2017-04-05T07:14:53Z - 2017-04-05T07:14:53Z - lambadalambda shared a status by lambadalambda@social.heldscal.la - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:social.heldscal.la,2017-04-05:noticeId=1502088:objectType=note - 2017-04-05T06:12:09Z - 2017-04-05T07:12:47Z - New status by lambadalambda@social.heldscal.la - - https://social.heldscal.la/user/23211 - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - lambadalambda@social.heldscal.la - Call me Deacon Blues. - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - Federation 101: <a href="https://www.youtube.com/watch?v=t1lYU5CA40o">https://www.youtube.com/watch?v=t1lYU5CA40o</a> - - public - - - Federation 101: <a href="https://www.youtube.com/watch?v=t1lYU5CA40o">https://www.youtube.com/watch?v=t1lYU5CA40o</a> - - public - - - - - tag:mastodon.social,2017-04-05:objectId=1641750:objectType=Status - 2017-04-05T05:44:48Z - 2017-04-05T05:44:48Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> just a test.</p> - - - public - - - - diff --git a/test/fixtures/tesla_mock/https___pawoo.net_users_pekorino.atom b/test/fixtures/tesla_mock/https___pawoo.net_users_pekorino.atom deleted file mode 100644 index 17d1956e8..000000000 --- a/test/fixtures/tesla_mock/https___pawoo.net_users_pekorino.atom +++ /dev/null @@ -1,231 +0,0 @@ - - - https://pawoo.net/users/pekorino.atom - モノエ - シアトル・米国 - -GNUsocial 英語版 -http://shitposter.club/mono - - - 2017-05-07T09:28:20Z - https://img.pawoo.net/accounts/avatars/000/128/378/original/e1fce04a36a1ad90.jpg - - https://pawoo.net/users/pekorino - http://activitystrea.ms/schema/1.0/person - https://pawoo.net/users/pekorino - pekorino - pekorino@pawoo.net - <p>シアトル・米国</p><p>GNUsocial 英語版<br /><a href="http://shitposter.club/mono" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="">shitposter.club/mono</span><span class="invisible"></span></a> </p> - - - - pekorino - モノエ - シアトル・米国 - -GNUsocial 英語版 -http://shitposter.club/mono - - - public - - - - - - - tag:pawoo.net,2017-05-07:objectId=9319211:objectType=Status - 2017-05-07T09:56:35Z - 2017-05-07T09:56:35Z - New status by pekorino - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://shitposter.club/moonman" class="u-url mention">@<span>moonman</span></a></span> <span class="h-card"><a href="https://shitposter.club/rw" class="u-url mention">@<span>rw</span></a></span> <span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> <span class="h-card"><a href="https://shitposter.club/mono" class="u-url mention">@<span>mono</span></a></span> </p><p>i have to wait for someone to respond to this before i can follow because i dont think this software has a direct follow by url option</p> - - - - - - public - - - - - - tag:pawoo.net,2017-05-07:objectId=9318595:objectType=Status - 2017-05-07T09:54:39Z - 2017-05-07T09:54:39Z - New status by pekorino - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://shitposter.club/mono" class="u-url mention">@<span>mono</span></a></span> <span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> <span class="h-card"><a href="https://shitposter.club/rw" class="u-url mention">@<span>rw</span></a></span> <span class="h-card"><a href="https://shitposter.club/moonman" class="u-url mention">@<span>moonman</span></a></span> <br />please respond</p> - - - - - - public - - - - - - tag:pawoo.net,2017-05-07:objectId=9313978:objectType=Status - 2017-05-07T09:39:17Z - 2017-05-07T09:39:17Z - New status by pekorino - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://shitposter.club/moonman" class="u-url mention">@<span>moonman</span></a></span> <br />mastodon is so slow. browser crashed twice trying to set avatar</p> - - - public - - - - - tag:pawoo.net,2017-05-07:objectId=9312691:objectType=Status - 2017-05-07T09:34:38Z - 2017-05-07T09:34:38Z - New status by pekorino - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://shitposter.club/hardbass2k8" class="u-url mention">@<span>hardbass2k8</span></a></span> <a href="https://pawoo.net/media/mZJjLpbPU72GFEz2Svk" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">pawoo.net/media/mZJjLpbPU72GFE</span><span class="invisible">z2Svk</span></a></p> - - - - public - - - - - - tag:pawoo.net,2017-05-07:objectId=9312379:objectType=Status - 2017-05-07T09:33:29Z - 2017-05-07T09:33:29Z - New status by pekorino - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://shitposter.club/hardbass2k8" class="u-url mention">@<span>hardbass2k8</span></a></span> <a href="https://pawoo.net/media/nt5JHBEHyTN2bqzdcGU" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">pawoo.net/media/nt5JHBEHyTN2bq</span><span class="invisible">zdcGU</span></a></p> - - - - public - - - - - - tag:pawoo.net,2017-05-07:objectId=9311765:objectType=Status - 2017-05-07T09:31:26Z - 2017-05-07T09:31:26Z - New status by pekorino - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p><a href="https://pawoo.net/media/C4RV6ubsEtvS04DX6qs" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">pawoo.net/media/C4RV6ubsEtvS04</span><span class="invisible">DX6qs</span></a></p> - - - public - - - - - tag:pawoo.net,2017-05-07:objectId=9311610:objectType=Status - 2017-05-07T09:30:59Z - 2017-05-07T09:30:59Z - New status by pekorino - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p><a href="https://pawoo.net/media/MBmkeEdrjs8pAtCHN6s" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">pawoo.net/media/MBmkeEdrjs8pAt</span><span class="invisible">CHN6s</span></a></p> - - - public - - - - - tag:pawoo.net,2017-05-07:objectId=9307782:objectType=Status - 2017-05-07T09:16:47Z - 2017-05-07T09:16:47Z - New status by pekorino - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://shitposter.club/mono" class="u-url mention">@<span>mono</span></a></span></p><p>test</p> - - - public - - - - - tag:pawoo.net,2017-05-07:objectId=9307444:objectType=Status - 2017-05-07T09:15:42Z - 2017-05-07T09:15:42Z - New status by pekorino - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://shitposter.club/hardbass2k8" class="u-url mention">@<span>hardbass2k8</span></a></span> テスト</p> - - - public - - - - - - tag:pawoo.net,2017-05-07:objectId=9307239:objectType=Status - 2017-05-07T09:14:58Z - 2017-05-07T09:14:58Z - New status by pekorino - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>ててててててテスト</p> - - public - - - - - tag:pawoo.net,2017-04-20:objectId=2212164:objectType=Status - 2017-04-20T06:19:18Z - 2017-04-20T06:19:18Z - New status by pekorino - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://shitposter.club/mono" class="u-url mention">@<span>mono</span></a></span> <a href="https://pawoo.net/media/iMbjMBVPfZJX3lUC2Sc" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">pawoo.net/media/iMbjMBVPfZJX3l</span><span class="invisible">UC2Sc</span></a></p> - - - - public - - - - - - tag:pawoo.net,2017-04-20:objectId=2206216:objectType=Status - 2017-04-20T05:57:59Z - 2017-04-20T05:57:59Z - New status by pekorino - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>テスト</p> - - public - - - - - tag:pawoo.net,2017-04-20:objectId=2204702:objectType=Status - 2017-04-20T05:52:09Z - 2017-04-20T05:52:09Z - New status by pekorino - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>HELLOWORLD</p> - - public - - - - diff --git a/test/fixtures/tesla_mock/https___pleroma.soykaf.com_users_lain_feed.atom.xml b/test/fixtures/tesla_mock/https___pleroma.soykaf.com_users_lain_feed.atom.xml deleted file mode 100644 index a2a2629a6..000000000 --- a/test/fixtures/tesla_mock/https___pleroma.soykaf.com_users_lain_feed.atom.xml +++ /dev/null @@ -1 +0,0 @@ -https://pleroma.soykaf.com/users/lain/feed.atomlain's timeline2017-05-05T08:38:03.385598https://pleroma.soykaf.com/users/lainhttp://activitystrea.ms/schema/1.0/personhttps://pleroma.soykaf.com/users/lainlainLain IwakuraTest accountlainhttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/sharehttps://pleroma.soykaf.com/activities/579e4224-b2ab-4ffa-8bbe-f7197a0a38d1lain repeated a noticeRT In just seven days, I can make you a man!<br> -- The Rocky Horror Picture Show2017-05-05T08:38:03.3855902017-05-05T08:38:03.385598https://pleroma.soykaf.com/contexts/e8673466-9642-4c9e-8781-f0f69d6b15aehttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/53dd40f4-3069-45a1-863b-94a9b317093dNew note by fortuneIn just seven days, I can make you a man!<br> -- The Rocky Horror Picture Show2017-05-05T02:10:02.9308022017-05-05T08:38:03.423539https://pleroma.soykaf.com/contexts/e8673466-9642-4c9e-8781-f0f69d6b15aehttps://pleroma.soykaf.com/users/fortunehttp://activitystrea.ms/schema/1.0/personhttps://pleroma.soykaf.com/users/fortunefortunefortuneThe trusty unix fortune filefortunehttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/2bc86888-a256-4771-bb53-903f375804f9New note by lainRTs federating into pleroma now.2017-05-04T18:18:50.2764702017-05-04T18:18:50.276476https://pleroma.soykaf.com/contexts/b7ae9350-f317-48aa-8058-2668091bb280http://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/902b1f50-f295-4189-8c15-9c880919e121New favorite by lainlain favorited something2017-05-04T08:03:01.3088902017-05-04T08:03:01.308927http://activitystrea.ms/schema/1.0/notetag:gs.smuglo.li,2017-05-03:noticeId=2164642:objectType=commenthttps://pleroma.soykaf.com/contexts/9419f742-aaba-4eb5-89a2-8b599e8bf43chttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/4e396e66-b063-454c-92c6-583506a9a2deNew note by lainClassic.<br><a href='https://pleroma.soykaf.com/media/adc36781-9765-4d9a-b57c-99b7a99108b2/mikodaemonstop.jpg'>https://pleroma.soykaf.com/media/adc36781-9765-4d9a-b57c-99b7a99108b2/mikodaemonstop.jpg</a>2017-05-04T07:59:45.1806192017-05-04T07:59:45.180628https://pleroma.soykaf.com/contexts/6afd9659-41e6-406d-ae97-43b880722861http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/85d183e9-c935-4655-a1e6-8d69a4108235New note by lainん?<br><a href='https://pleroma.soykaf.com/media/ab144c6d-a38c-4d35-a60b-9a998becc094/n.gif'>https://pleroma.soykaf.com/media/ab144c6d-a38c-4d35-a60b-9a998becc094/n.gif</a>2017-05-04T07:58:08.8107162017-05-04T07:58:08.810726https://pleroma.soykaf.com/contexts/2e1aa616-86ce-4b50-9c81-63045a972156http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/7c5c45bb-e4d9-4f72-b4c6-0314afbd3553New note by lainyeah.2017-05-04T07:55:17.3352902017-05-04T07:55:17.335299https://pleroma.soykaf.com/contexts/702c06cf-56ff-4a2f-bf5a-150bc00bb168http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/f33f5f54-1c1d-4462-b9ed-229bb635dfd8New note by lainyeah.2017-05-04T07:49:24.9314842017-05-04T07:49:24.931492https://pleroma.soykaf.com/contexts/c4932e7a-00cb-431a-b4ec-7404cb9daf65http://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/0709bc79-7ac5-4983-b6d0-2205bf5ceba3New favorite by lainlain favorited something2017-05-03T20:08:11.2945792017-05-03T20:08:11.294587http://activitystrea.ms/schema/1.0/notetag:pawoo.net,2017-05-03:objectId=7967690:objectType=Statushttps://pleroma.soykaf.com/contexts/07a4b34d-6255-4bb2-8c73-c295a09ac952http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/72c0288e-62d8-43d9-b3d8-1a9d78be8375New note by lain<a href='https://pawoo.net/users/God_Emperor_of_Dune'>@God_Emperor_of_Dune@pawoo.net</a> no man, just some fun domination play among buddies, nothing homo about it.2017-05-03T20:01:00.9983142017-05-03T20:01:00.998322https://pleroma.soykaf.com/contexts/07a4b34d-6255-4bb2-8c73-c295a09ac952http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/d846409e-cf2a-4b68-a149-d5de34a91b0dNew note by lain<a href='https://social.heldscal.la/user/24974'>@dtluna@social.heldscal.la</a> btfo.<br><a href='https://pleroma.soykaf.com/media/fbe42e87-5574-4544-89ba-29ddf46227fa/pnc__picked_media_1889ce61-4961-4fea-8a14-04fe6783ebf6.jpg'>https://pleroma.soykaf.com/media/fbe42e87-5574-4544-89ba-29ddf46227fa/pnc__picked_media_1889ce61-4961-4fea-8a14-04fe6783ebf6.jpg</a>2017-05-03T20:00:15.8609952017-05-03T20:00:15.861002https://pleroma.soykaf.com/contexts/0e88f35e-1a38-4181-bef9-5cbb0d943c63http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/9075265f-f3b2-40e8-809f-10714f05a1fdNew note by lain#nohomo <br><a href='https://pleroma.soykaf.com/media/5cc5ad91-d637-4c45-a691-5ea778dc1bb3/pnc__picked_media_f62dc9ae-ea23-4fe6-bf85-cb75a129ab34.jpg'>https://pleroma.soykaf.com/media/5cc5ad91-d637-4c45-a691-5ea778dc1bb3/pnc__picked_media_f62dc9ae-ea23-4fe6-bf85-cb75a129ab34.jpg</a>2017-05-03T19:50:38.5891062017-05-03T19:50:38.589113https://pleroma.soykaf.com/contexts/07a4b34d-6255-4bb2-8c73-c295a09ac952http://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/7924e992-0a95-40d9-8d17-7278c6c634c9New favorite by lainlain favorited something2017-05-03T18:32:59.2733752017-05-03T18:32:59.273382http://activitystrea.ms/schema/1.0/notetag:gs.smuglo.li,2017-05-03:noticeId=2164774:objectType=commenthttps://pleroma.soykaf.com/contexts/9419f742-aaba-4eb5-89a2-8b599e8bf43chttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/569571ba-f54c-41b0-bde4-0fede54599f0New note by lain<a href='https://gs.smuglo.li/user/2'>@nepfag@gs.smuglo.li</a>@gs.smuglo.li I'll do proper subfolders soon, for now it's one per attachment + thumbs etc.2017-05-03T18:27:01.4499492017-05-03T18:27:01.449956https://pleroma.soykaf.com/contexts/9419f742-aaba-4eb5-89a2-8b599e8bf43chttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/sharehttps://pleroma.soykaf.com/activities/b6cc5d7c-0785-4785-a689-f1b05dc9b24dlain repeated a noticeRT <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> Hey now!</p>2017-05-03T18:13:48.8910612017-05-03T18:13:48.891069https://pleroma.soykaf.com/contexts/ec6fdd27-0ec1-4672-8408-5a8e5a9c094bhttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posttag:mastodon.social,2017-05-01:objectId=4836142:objectType=StatusNew note by lambadalambda@mastodon.social<p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> Hey now!</p>2017-05-01T18:38:49.3653912017-05-03T18:13:48.934745https://pleroma.soykaf.com/contexts/ec6fdd27-0ec1-4672-8408-5a8e5a9c094bhttps://mastodon.social/users/lambadalambdahttp://activitystrea.ms/schema/1.0/personhttps://mastodon.social/users/lambadalambdalambadalambda@mastodon.socialCritical Valuenillambadalambda@mastodon.socialhttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/sharehttps://pleroma.soykaf.com/activities/3c09eb31-4ba8-4ff5-b4fa-8f6f74d58bf0lain repeated a noticeRT Haha, salmons from mastodon didn't work because it's not implementing conversation id...2017-05-03T18:13:15.1480412017-05-03T18:13:15.148049tag:social.heldscal.la,2017-05-01:objectType=thread:nonce=86cda6c734401d80http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posttag:social.heldscal.la,2017-05-01:noticeId=2000425:objectType=noteNew note by lambadalambda@social.heldscal.laHaha, salmons from mastodon didn't work because it's not implementing conversation id...2017-05-01T18:39:36.2163772017-05-03T18:13:15.171143tag:social.heldscal.la,2017-05-01:objectType=thread:nonce=86cda6c734401d80https://social.heldscal.la/user/23211http://activitystrea.ms/schema/1.0/personhttps://social.heldscal.la/user/23211lambadalambda@social.heldscal.laConstance Variablenillambadalambda@social.heldscal.lahttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/b8fc83d5-d7c0-4b5f-8976-0317b51935eaNew note by lain.<br><a href='https://pleroma.soykaf.com/media/563008a7-9a60-47ac-a263-22835729adf6/1492530528735.png'>https://pleroma.soykaf.com/media/563008a7-9a60-47ac-a263-22835729adf6/1492530528735.png</a>2017-05-03T18:12:50.7452412017-05-03T18:12:50.745249https://pleroma.soykaf.com/contexts/9419f742-aaba-4eb5-89a2-8b599e8bf43chttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/sharehttps://pleroma.soykaf.com/activities/ac93ecef-cde0-48e8-ae4b-19e3b94dbe30lain repeated a noticeRT Awright, which one of you hid my PENIS ENVY?2017-05-03T18:08:49.2310012017-05-03T18:08:49.235354https://pleroma.soykaf.com/contexts/a9132cf8-6afa-4dd8-8b29-7b6fcab623b8http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/04e15c66-4936-4930-a134-32841f088bcfNew note by fortuneAwright, which one of you hid my PENIS ENVY?2017-05-01T19:40:03.1699962017-05-03T18:08:49.285347https://pleroma.soykaf.com/contexts/a9132cf8-6afa-4dd8-8b29-7b6fcab623b8https://pleroma.soykaf.com/users/fortunehttp://activitystrea.ms/schema/1.0/personhttps://pleroma.soykaf.com/users/fortunefortunefortuneThe trusty unix fortune filefortunehttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/sharehttps://pleroma.soykaf.com/activities/54b10fa9-d602-4a0f-b659-e6d3f7bc8c4clain repeated a noticeRT He is a man capable of turning any colour into grey.<br> -- John LeCarre2017-05-03T17:44:47.5789842017-05-03T17:44:47.578996https://pleroma.soykaf.com/contexts/8aebc8e5-5352-4047-8b74-4098a5830ccahttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/70ded299-184d-49cd-af17-23c0950536aaNew note by fortuneHe is a man capable of turning any colour into grey.<br> -- John LeCarre2017-05-02T08:40:03.4194652017-05-03T17:44:47.646192https://pleroma.soykaf.com/contexts/8aebc8e5-5352-4047-8b74-4098a5830ccahttps://pleroma.soykaf.com/users/fortunehttp://activitystrea.ms/schema/1.0/personhttps://pleroma.soykaf.com/users/fortunefortunefortuneThe trusty unix fortune filefortunehttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/sharehttps://pleroma.soykaf.com/activities/eff9fe49-8fc9-48e6-a1a0-921aa25c8118lain repeated a noticeRT The real trouble with women is that they have *all* the pussy.2017-05-03T17:30:22.5960372017-05-03T17:30:22.596048https://pleroma.soykaf.com/contexts/8c88c9df-4e40-4f54-b15f-c21848d1a8e2http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/0b9b008d-49eb-48a9-a18d-172ce7d01ea2New note by fortuneThe real trouble with women is that they have *all* the pussy.2017-05-02T12:10:03.6030862017-05-03T17:30:22.683141https://pleroma.soykaf.com/contexts/8c88c9df-4e40-4f54-b15f-c21848d1a8e2https://pleroma.soykaf.com/users/fortunehttp://activitystrea.ms/schema/1.0/personhttps://pleroma.soykaf.com/users/fortunefortunefortuneThe trusty unix fortune filefortunehttp://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/5d90bb26-ce23-4a5b-8dbd-651011780007New favorite by lainlain favorited something2017-05-03T17:28:20.9679262017-05-03T17:28:20.967935http://activitystrea.ms/schema/1.0/notetag:mastodon.social,2017-05-03:objectId=4952899:objectType=Statushttps://pleroma.soykaf.com/contexts/42701ab4-964a-441a-a372-f51bd183e441 \ No newline at end of file diff --git a/test/fixtures/tesla_mock/https___shitposter.club_api_statuses_show_2827873.atom.xml b/test/fixtures/tesla_mock/https___shitposter.club_api_statuses_show_2827873.atom.xml deleted file mode 100644 index 26fdebb49..000000000 --- a/test/fixtures/tesla_mock/https___shitposter.club_api_statuses_show_2827873.atom.xml +++ /dev/null @@ -1,54 +0,0 @@ - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment - New comment by moonman - @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> @<a href="https://gs.smuglo.li/user/2326" class="h-card mention" title="Dolus_McHonest">dolus</a> childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T08:51:48+00:00 - 2017-05-05T08:51:48+00:00 - - http://activitystrea.ms/schema/1.0/person - https://shitposter.club/user/1 - moonman - EMAIL:shitposterclub@gmail.com XMPP: moon@talk.shitposter.club Matrix Ed25519 fingerprint: 2HuDUTEz3iFN5N3xl6PYp9xZW/EWhgbbt78SrFy4w8o - - - - - - moonman - Generic Enemy - EMAIL:shitposterclub@gmail.com XMPP: moon@talk.shitposter.club Matrix Ed25519 fingerprint: 2HuDUTEz3iFN5N3xl6PYp9xZW/EWhgbbt78SrFy4w8o - - The Moon - - - homepage - https://shitposter.club/moonman - true - - - - - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26 - - - - - https://shitposter.club/api/statuses/user_timeline/1.atom - Generic Enemy - - - - https://shitposter.club/avatar/1-96-20170503024316.jpeg - 2017-05-05T11:43:58+00:00 - - - - - diff --git a/test/fixtures/tesla_mock/https___shitposter.club_api_statuses_user_timeline_1.atom.xml b/test/fixtures/tesla_mock/https___shitposter.club_api_statuses_user_timeline_1.atom.xml deleted file mode 100644 index 31df7c2a6..000000000 --- a/test/fixtures/tesla_mock/https___shitposter.club_api_statuses_user_timeline_1.atom.xml +++ /dev/null @@ -1,454 +0,0 @@ - - - GNU social - https://shitposter.club/api/statuses/user_timeline/1.atom - moonman timeline - Updates from moonman on Shitposter Club! - https://shitposter.club/avatar/1-96-20170503024316.jpeg - 2017-05-05T13:24:09+00:00 - - http://activitystrea.ms/schema/1.0/person - https://shitposter.club/user/1 - moonman - EMAIL:shitposterclub@gmail.com XMPP: moon@talk.shitposter.club Matrix Ed25519 fingerprint: 2HuDUTEz3iFN5N3xl6PYp9xZW/EWhgbbt78SrFy4w8o - - - - - - moonman - Generic Enemy - EMAIL:shitposterclub@gmail.com XMPP: moon@talk.shitposter.club Matrix Ed25519 fingerprint: 2HuDUTEz3iFN5N3xl6PYp9xZW/EWhgbbt78SrFy4w8o - - The Moon - - - homepage - https://shitposter.club/moonman - true - - - - - - - - - - - - - - tag:shitposter.club,2017-05-05:subscription:1:person:23190:2017-05-05T11:43:58+00:00 - Generic Enemy (moonman)'s status on Friday, 05-May-2017 11:43:58 UTC - <a href="https://shitposter.club/moonman">Generic Enemy</a> started following <a href="https://noagendasocial.com/@Ma5on">Mason</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-05-05T11:43:58+00:00 - 2017-05-05T11:43:58+00:00 - - http://activitystrea.ms/schema/1.0/person - https://noagendasocial.com/users/Ma5on - Mason - - - - - - ma5on - Mason - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=abffa9c14a054d3b - - - - - - - tag:shitposter.club,2017-05-05:subscription:1:person:14357:2017-05-05T10:29:03+00:00 - Generic Enemy (moonman)'s status on Friday, 05-May-2017 10:29:03 UTC - <a href="https://shitposter.club/moonman">Generic Enemy</a> started following <a href="https://mastodon.cloud/@ohyran">Jens Reuterberg</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-05-05T10:29:03+00:00 - 2017-05-05T10:29:03+00:00 - - http://activitystrea.ms/schema/1.0/person - https://mastodon.cloud/users/ohyran - Jens Reuterberg - RPG-nerd, illustrator, Open Source enthusiast, KDE dude, designer and gay lefty. Might be a cliché - but we will soon find out! - - - - - - ohyran - Jens Reuterberg - RPG-nerd, illustrator, Open Source enthusiast, KDE dude, designer and gay lefty. Might be a cliché - but we will soon find out! - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=937151d4825a85bf - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2828637:objectType=note - New note by moonman - basicall i would just rather have ppl say &quot;i like x and y&quot; than &quot;i'm a nerd&quot; the term can be retired. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:24:54+00:00 - 2017-05-05T10:24:54+00:00 - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=65992b0b9b5e6931 - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2828579:objectType=comment - New comment by moonman - @<a href="https://gs.smuglo.li/user/35497" class="h-card mention" title="Bokuro Bokusawa">boco</a> to be honest i've turned right around and been cruel to other people, i said i'd never do it but it happens again eventually. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:20:33+00:00 - 2017-05-05T10:20:33+00:00 - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=c997fc73d7f8a8f0 - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2828554:objectType=comment - New comment by moonman - @<a href="https://mastodon.cloud/users/ohyran" class="h-card mention" title="Jens Reuterberg">ohyran</a> i won't ever get over bullying but i agree otherwise. i don't go to comic shops too often these days but i got dragged to one last year and the sheer diversity of people enjoying comics now compared to years ago was striking and it pleased me. and i noticed a couple years ago because of youtube i find things i truly enjoy watching, like in-depth videos about electronic parts, didn't exist 20 years ago. it's pretty great. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:18:10+00:00 - 2017-05-05T10:18:10+00:00 - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767 - - - - - - - - tag:shitposter.club,2017-05-05:fave:1:comment:2828502:2017-05-05T10:12:52+00:00 - Favorite - moonman favorited something by ohyran: <p><span class="h-card"><a href="https://shitposter.club/moonman" class="u-url mention">@<span>moonman</span></a></span> fair enough - that distinction makes it clearer...</p><p>On the other hand - those of us who did "pay the price" of being nerdy little kids in the 80's and 90's should strive to get past it anyway (mental health wise not "just get over it") and see the "nerd culture" thing as a blessing of sorts. We are in the optimal spot to do it. (not saying that that is something easy btw just that NOW is the best of time to start talking about it)</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T10:12:52+00:00 - 2017-05-05T10:12:52+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:mastodon.cloud,2017-05-05:objectId=6334570:objectType=Status - New comment by ohyran - <p><span class="h-card"><a href="https://shitposter.club/moonman" class="u-url mention">@<span>moonman</span></a></span> fair enough - that distinction makes it clearer...</p><p>On the other hand - those of us who did "pay the price" of being nerdy little kids in the 80's and 90's should strive to get past it anyway (mental health wise not "just get over it") and see the "nerd culture" thing as a blessing of sorts. We are in the optimal spot to do it. (not saying that that is something easy btw just that NOW is the best of time to start talking about it)</p> - - - - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2828496:objectType=note - New note by moonman - things are better now, a lot less kids in america get beaten up and called a fag. still too many. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:11:31+00:00 - 2017-05-05T10:11:31+00:00 - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=c997fc73d7f8a8f0 - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2828457:objectType=comment - New comment by moonman - @<a href="https://shitposter.club/user/21787" class="h-card mention" title="Yukari">cutscenes</a> @<a href="https://gs.smuglo.li/user/28250" class="h-card mention" title="Bricky">thatbrickster</a> @<a href="https://gs.smuglo.li/user/35497" class="h-card mention" title="Bokuro Bokusawa">boco</a> i never understood this because nerds had pocket protectors, which was a draftsman engineer thing and therefore smart, while geeks were people in carnivals who bit heads off small animals. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:07:57+00:00 - 2017-05-05T10:07:57+00:00 - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767 - - - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2828435:objectType=comment - New comment by moonman - @<a href="https://mastodon.cloud/users/ohyran" class="h-card mention" title="Jens Reuterberg">ohyran</a> since i didn't specify i'm talking about people subjected to physical and psychological abuse and not people that are just mad that more people like comic books now. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:05:07+00:00 - 2017-05-05T10:05:07+00:00 - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2828326:objectType=note - New note by moonman - if you were a &quot;nerd&quot; before, like, 2001 you have permanent excuse to hate this kind of shit.   <a href="https://shitposter.club/file/b79fa5644be0d6f22679136e67b7bf45c9c4a74a55c32dd2d0cf15de4ddd5be5.gif" title="https://shitposter.club/file/b79fa5644be0d6f22679136e67b7bf45c9c4a74a55c32dd2d0cf15de4ddd5be5.gif" class="attachment" id="attachment-662105" rel="nofollow external">https://shitposter.club/attachment/662105</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T09:47:42+00:00 - 2017-05-05T09:47:42+00:00 - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2828250:objectType=note - New note by moonman - <a href="https://shitposter.club/file/1283e2d4dd8f96b8eeb5d9a16b318e210868aa11386cf0d593891e4c75c9126e.gif" title="https://shitposter.club/file/1283e2d4dd8f96b8eeb5d9a16b318e210868aa11386cf0d593891e4c75c9126e.gif" class="attachment" id="attachment-662098" rel="nofollow external">https://shitposter.club/attachment/662098</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T09:39:06+00:00 - 2017-05-05T09:39:06+00:00 - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=ea8ffae90546f0ab - - - - - - - - tag:shitposter.club,2017-05-05:fave:1:comment:2828161:2017-05-05T09:28:19+00:00 - Favorite - moonman favorited something by kro: @<a href="https://shitposter.club/user/1" class="h-card u-url p-nickname mention" title="Generic Enemy">moonman</a> Till Brooklyn? - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T09:28:19+00:00 - 2017-05-05T09:28:19+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:gs.smuglo.li,2017-05-05:noticeId=2188587:objectType=comment - New comment by kro - @<a href="https://shitposter.club/user/1" class="h-card u-url p-nickname mention" title="Generic Enemy">moonman</a> Till Brooklyn? - - - - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=d7aa6b5b057ca555 - - - - - - - tag:shitposter.club,2017-05-05:fave:1:comment:2828125:2017-05-05T09:24:56+00:00 - Favorite - moonman favorited something by hardbass2k8: this has obviously interesting implications in various places, for example:<br /> the nationalism of the nazis might not have been real, who would have thought?<br /> socialism is usually promoted to implementation by real douchebags!<br /> your local social justice people might want diversity but they don't want you, m/19, white, why?<br /> amateur soccer club, they want to be the best in the amateur league but actually they just get drunk after training and are 50% overweight.<br /> This is because humans are not capable of telepathy, so if you join a group it doesn't magically align every little bit of your being with the declared group goals.<br /> <br /> Even though you see unmanned group beliefs flying around from time to time, generally groups are created from a bunch of people. they are not a container for people, they are the people inside them.<br /> <br /> so if you see a group that appears to be cool don't think of it as cool because its goals are cool but because its members are cool. if they aren't, tough cookies. don't be the retard and end up on the camp watchtower. - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T09:24:56+00:00 - 2017-05-05T09:24:56+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2828125:objectType=comment - New comment by hardbass2k8 - this has obviously interesting implications in various places, for example:<br /> the nationalism of the nazis might not have been real, who would have thought?<br /> socialism is usually promoted to implementation by real douchebags!<br /> your local social justice people might want diversity but they don't want you, m/19, white, why?<br /> amateur soccer club, they want to be the best in the amateur league but actually they just get drunk after training and are 50% overweight.<br /> This is because humans are not capable of telepathy, so if you join a group it doesn't magically align every little bit of your being with the declared group goals.<br /> <br /> Even though you see unmanned group beliefs flying around from time to time, generally groups are created from a bunch of people. they are not a container for people, they are the people inside them.<br /> <br /> so if you see a group that appears to be cool don't think of it as cool because its goals are cool but because its members are cool. if they aren't, tough cookies. don't be the retard and end up on the camp watchtower. - - - - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=51b227fe92f6babf - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2828128:objectType=note - New note by moonman - In a valid remake of They live, signs would say REBEL, and DON'T GET MARRIED AND HAVE KIDS - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T09:24:23+00:00 - 2017-05-05T09:24:23+00:00 - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=b74397fa766b82c9 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2828104:objectType=note - New note by moonman - <a href="https://shitposter.club/file/4d34178bde99599f31a28928e1666fbd58448d8a22e94ed82222496e4a45cb07.gif" title="https://shitposter.club/file/4d34178bde99599f31a28928e1666fbd58448d8a22e94ed82222496e4a45cb07.gif" class="attachment" id="attachment-662049" rel="nofollow external">https://shitposter.club/attachment/662049</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T09:21:01+00:00 - 2017-05-05T09:21:01+00:00 - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=d7aa6b5b057ca555 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2828102:objectType=note - New note by moonman - when ppl find out i haven't always been serious  <a href="https://shitposter.club/file/5859fa95875342cc65dba0d852f726db158ce28198c326d5f13d9de7c0d2c449.gif" title="https://shitposter.club/file/5859fa95875342cc65dba0d852f726db158ce28198c326d5f13d9de7c0d2c449.gif" class="attachment" id="attachment-662053" rel="nofollow external">https://shitposter.club/attachment/662053</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T09:20:45+00:00 - 2017-05-05T09:20:45+00:00 - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=0a025ac5a570b4ec - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2828086:objectType=comment - New comment by moonman - @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> @<a href="https://gs.smuglo.li/user/2326" class="h-card mention" title="Dolus_McHonest">dolus</a> @<a href="https://gs.smuglo.li/user/35497" class="h-card mention" title="Bokuro Bokusawa">boco</a> you are being too serious lol - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T09:17:19+00:00 - 2017-05-05T09:17:19+00:00 - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26 - - - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2828085:objectType=note - New note by moonman - shitposter dot club  <a href="https://shitposter.club/file/9b084c7210b16abbf4d28594b924a07ef4a2a06f89d901a4c42fb1e243291263.gif" title="https://shitposter.club/file/9b084c7210b16abbf4d28594b924a07ef4a2a06f89d901a4c42fb1e243291263.gif" class="attachment" id="attachment-662047" rel="nofollow external">https://shitposter.club/attachment/662047</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T09:16:50+00:00 - 2017-05-05T09:16:50+00:00 - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=d1ae088a1b91e5e5 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2828061:objectType=note - New note by moonman - even when i lie i tell the truth, is that so hard to understand? - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T09:15:07+00:00 - 2017-05-05T09:15:07+00:00 - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=a516e4b8506b8ef5 - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2828052:objectType=comment - New comment by moonman - @<a href="https://shitposter.club/user/9591" class="h-card mention" title="warum hei&#xDF;en deutschl&#xE4;nder deutschl&#xE4;nder">hardbass2k8</a> history, anthropology. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T09:14:22+00:00 - 2017-05-05T09:14:22+00:00 - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=fe4d7f35b13403ba - - - - - - - diff --git a/test/fixtures/tesla_mock/https___shitposter.club_notice_2827873.json b/test/fixtures/tesla_mock/https___shitposter.club_notice_2827873.json deleted file mode 100644 index 4b7b4df44..000000000 --- a/test/fixtures/tesla_mock/https___shitposter.club_notice_2827873.json +++ /dev/null @@ -1 +0,0 @@ -{"@context":["https://www.w3.org/ns/activitystreams","https://shitposter.club/schemas/litepub-0.1.jsonld",{"@language":"und"}],"actor":"https://shitposter.club/users/moonman","attachment":[],"attributedTo":"https://shitposter.club/users/moonman","cc":["https://shitposter.club/users/moonman/followers"],"content":"@
neimzr4luzerz @dolus childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English","context":"tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26","conversation":"tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26","id":"tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment","inReplyTo":"tag:shitposter.club,2017-05-05:noticeId=2827849:objectType=comment","inReplyToStatusId":2827849,"published":"2017-05-05T08:51:48Z","sensitive":false,"summary":null,"tag":[],"to":["https://www.w3.org/ns/activitystreams#Public"],"type":"Note"} \ No newline at end of file diff --git a/test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_23211.atom.xml b/test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_23211.atom.xml deleted file mode 100644 index 6cba5c28f..000000000 --- a/test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_23211.atom.xml +++ /dev/null @@ -1,591 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-05-05T12:01:21+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2063249:2017-05-05T11:40:21+00:00 - Favorite - lambadalambda favorited something by tatiana: <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> they will start complaining about this, but won't come up with any solutions)</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T11:40:21+00:00 - 2017-05-05T11:40:21+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:social.weho.st,2017-05-05:objectId=172033:objectType=Status - New comment by tatiana - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> they will start complaining about this, but won't come up with any solutions)</p> - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2063041:2017-05-05T11:27:28+00:00 - Favorite - lambadalambda favorited something by kat: @<a href="https://social.heldscal.la/lambadalambda" class="h-card mention" title="Constance Variable">lambadalambda</a> if the admin reading mine would delete a few it would be really useful in prioritising.  - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T11:27:28+00:00 - 2017-05-05T11:27:28+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:quitter.se,2017-05-05:noticeId=11807959:objectType=comment - New comment by kat - @<a href="https://social.heldscal.la/lambadalambda" class="h-card mention" title="Constance Variable">lambadalambda</a> if the admin reading mine would delete a few it would be really useful in prioritising.  - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - - - - tag:social.heldscal.la,2017-05-05:noticeId=2062924:objectType=note - lambadalambda repeated a notice by nielsk - RT @nielsk @<a href="https://social.heldscal.la/user/23211" class="h-card u-url p-nickname mention" title="Constance Variable">lambadalambda</a> but there are soooo many, where should I start to read? - - http://activitystrea.ms/schema/1.0/share - 2017-05-05T11:09:37+00:00 - 2017-05-05T11:09:37+00:00 - - http://activitystrea.ms/schema/1.0/activity - tag:mastodon.social,2017-05-05:objectId=5024471:objectType=Status - - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> but there are soooo many, where should I start to read?</p> - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T11:05:18+00:00 - 2017-05-05T11:05:18+00:00 - - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/nielsk - nielsk - Sysadmin by day and ehm… sysadmin by night. Besides that old video games, Japan, economics and some other stuff - - - - - - nielsk - nielsk - Sysadmin by day and ehm… sysadmin by night. Besides that old video games, Japan, economics and some other stuff - - - - http://activitystrea.ms/schema/1.0/comment - tag:mastodon.social,2017-05-05:objectId=5024471:objectType=Status - New comment by nielsk - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> but there are soooo many, where should I start to read?</p> - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - https://mastodon.social/users/nielsk.atom - nielsk - - - https://social.heldscal.la/avatar/29849-96-20170428120041.jpeg - 2017-05-05T11:06:32+00:00 - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2062875:2017-05-05T11:09:27+00:00 - Favorite - lambadalambda favorited something by nielsk: <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> but there are soooo many, where should I start to read?</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T11:09:27+00:00 - 2017-05-05T11:09:27+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:mastodon.social,2017-05-05:objectId=5024471:objectType=Status - New comment by nielsk - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> but there are soooo many, where should I start to read?</p> - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2062863:2017-05-05T11:09:11+00:00 - Favorite - lambadalambda favorited something by kasil: <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> surely, google is not that evil !</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T11:09:11+00:00 - 2017-05-05T11:09:11+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:loutre.info,2017-05-05:objectId=23331:objectType=Status - New comment by kasil - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> surely, google is not that evil !</p> - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-05-05:noticeId=2062767:objectType=comment - New comment by lambadalambda - @<a href="https://sealion.club/user/4" class="h-card u-url p-nickname mention" title="dewoo &#x274E;">dwmatiz</a> dunno, probably. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:55:17+00:00 - 2017-05-05T10:55:17+00:00 - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-05-05:noticeId=2062705:objectType=comment - New comment by lambadalambda - @<a href="https://gs.smuglo.li/user/28250" class="h-card u-url p-nickname mention" title="Bricky">thatbrickster</a> I do it, too. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:48:12+00:00 - 2017-05-05T10:48:12+00:00 - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-05-05:noticeId=2062620:objectType=comment - New comment by lambadalambda - @<a href="https://social.tchncs.de/users/israuor" class="h-card u-url p-nickname mention" title="Israuor &#x2642;">israuor</a> @<a href="https://mastodon.gougere.fr/users/bortzmeyer" class="h-card u-url p-nickname mention" title="S. Bortzmeyer &#x2705;">bortzmeyer</a> so, 99%. 100% for 'normal' people. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:38:52+00:00 - 2017-05-05T10:38:52+00:00 - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-05-05:noticeId=2062583:objectType=note - New note by lambadalambda - I wonder what'll happen when people realize the admin at their mail hoster can read all their e-mails. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:35:45+00:00 - 2017-05-05T10:35:45+00:00 - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - - - - tag:social.heldscal.la,2017-05-05:subscription:23211:person:35708:2017-05-05T09:34:46+00:00 - Constance Variable (lambadalambda@social.heldscal.la)'s status on Friday, 05-May-2017 09:34:46 UTC - <a href="https://social.heldscal.la/lambadalambda">Constance Variable</a> started following <a href="https://mastodon.social/@milouse">milouse</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-05-05T09:34:46+00:00 - 2017-05-05T09:34:46+00:00 - - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/milouse - milouse - #Scout leader #sgdf, interested in #openweb, #semanticweb, #privacy, #foss and #socialeconomy. 0xA714ECAC8C9CEE3D - - - - - - milouse - milouse - #Scout leader #sgdf, interested in #openweb, #semanticweb, #privacy, #foss and #socialeconomy. 0xA714ECAC8C9CEE3D - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=26ca19a355bb6135 - - - - - - - tag:social.heldscal.la,2017-05-05:noticeId=2061871:objectType=note - lambadalambda repeated a notice by safebot - RT @<a href="https://gs.smuglo.li/user/25857" class="h-card u-url p-nickname mention" title="safebot">safebot</a> #<span class="tag"><a href="https://social.heldscal.la/tag/cheers" rel="tag">cheers</a></span> <a href="https://gs.smuglo.li/attachment/456444" title="https://gs.smuglo.li/attachment/456444" rel="nofollow external noreferrer" class="attachment" id="attachment-432334">https://gs.smuglo.li/attachment/456444</a> - - http://activitystrea.ms/schema/1.0/share - 2017-05-05T09:16:17+00:00 - 2017-05-05T09:16:17+00:00 - - http://activitystrea.ms/schema/1.0/activity - tag:gs.smuglo.li,2017-05-05:noticeId=2188073:objectType=note - - #<span class="tag"><a href="https://gs.smuglo.li/tag/cheers" rel="tag">cheers</a></span> <a href="https://gs.smuglo.li/file/5099e73c83da778cd032a721e96880f99a868b712be2975d08238547a5ba06c7.jpg" title="https://gs.smuglo.li/file/5099e73c83da778cd032a721e96880f99a868b712be2975d08238547a5ba06c7.jpg" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/456444</a> - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T08:36:53+00:00 - 2017-05-05T08:36:53+00:00 - - http://activitystrea.ms/schema/1.0/person - https://gs.smuglo.li/user/25857 - safebot - - - - - - safebot - safebot - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.smuglo.li,2017-05-05:noticeId=2188073:objectType=note - New note by safebot - #<span class="tag"><a href="https://gs.smuglo.li/tag/cheers" rel="tag">cheers</a></span> <a href="https://gs.smuglo.li/file/5099e73c83da778cd032a721e96880f99a868b712be2975d08238547a5ba06c7.jpg" title="https://gs.smuglo.li/file/5099e73c83da778cd032a721e96880f99a868b712be2975d08238547a5ba06c7.jpg" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/456444</a> - - - - - https://gs.smuglo.li/conversation/1009429 - - - - https://gs.smuglo.li/api/statuses/user_timeline/25857.atom - safebot - - - https://social.heldscal.la/avatar/25719-original-20161215233234.jpeg - 2017-05-05T12:00:57+00:00 - - - - https://gs.smuglo.li/conversation/1009429 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061643:2017-05-05T09:12:50+00:00 - Favorite - lambadalambda favorited something by moonman: @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> @<a href="https://gs.smuglo.li/user/2326" class="h-card mention" title="Dolus_McHonest">dolus</a> childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T09:12:50+00:00 - 2017-05-05T09:12:50+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment - New comment by moonman - @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> @<a href="https://gs.smuglo.li/user/2326" class="h-card mention" title="Dolus_McHonest">dolus</a> childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061696:2017-05-05T09:06:10+00:00 - Favorite - lambadalambda favorited something by moonman: @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> <br /> <span class="greentext">&gt; (((common era)))</span> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T09:06:10+00:00 - 2017-05-05T09:06:10+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2827918:objectType=comment - New comment by moonman - @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> <br /> <span class="greentext">&gt; (((common era)))</span> - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:note:2061673:2017-05-05T08:58:28+00:00 - Favorite - lambadalambda favorited something by moonman: discussion is one thing but any argument I've heard over and over again for the last three decades is going to go unanswered. - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T08:58:28+00:00 - 2017-05-05T08:58:28+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2827895:objectType=note - New note by moonman - discussion is one thing but any argument I've heard over and over again for the last three decades is going to go unanswered. - - - - - - - https://shitposter.club/conversation/1390494 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061280:2017-05-05T08:47:38+00:00 - Favorite - lambadalambda favorited something by moonman: @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> sex is for procreation and as an expression of intimacy between commited couples, it is a sacramental act - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T08:47:38+00:00 - 2017-05-05T08:47:38+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2827561:objectType=comment - New comment by moonman - @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> sex is for procreation and as an expression of intimacy between commited couples, it is a sacramental act - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:note:2061535:2017-05-05T08:40:55+00:00 - Favorite - lambadalambda favorited something by fortune: What did Mickey Mouse get for Christmas?<br /> <br /> A Dan Quayle watch.<br /> <br /> -- heard from a Mike Dukakis field worker - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T08:40:55+00:00 - 2017-05-05T08:40:55+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-05-05:noticeId=2061535:objectType=note - New note by fortune - What did Mickey Mouse get for Christmas?<br /> <br /> A Dan Quayle watch.<br /> <br /> -- heard from a Mike Dukakis field worker - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=5185e5c145ee4762 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061421:2017-05-05T08:36:27+00:00 - Favorite - lambadalambda favorited something by moonman: @<a href="https://maly.io/users/sonya" class="h-card mention" title="Sonya Mann ✅">sonya</a> banned from 4chan. you better watch ou. i'm trouble, y'hear? - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T08:36:27+00:00 - 2017-05-05T08:36:27+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2827689:objectType=comment - New comment by moonman - @<a href="https://maly.io/users/sonya" class="h-card mention" title="Sonya Mann ✅">sonya</a> banned from 4chan. you better watch ou. i'm trouble, y'hear? - - - - - - - https://shitposter.club/conversation/1389345 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061351:2017-05-05T08:28:03+00:00 - Favorite - lambadalambda favorited something by moonman: @<a href="https://social.heldscal.la/user/29138" class="h-card mention" title="Claes Wallin (韋嘉誠)">clacke</a> is that the sequel to Time Crisis - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T08:28:03+00:00 - 2017-05-05T08:28:03+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2827630:objectType=comment - New comment by moonman - @<a href="https://social.heldscal.la/user/29138" class="h-card mention" title="Claes Wallin (韋嘉誠)">clacke</a> is that the sequel to Time Crisis - - - - - - - https://shitposter.club/conversation/1385528 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061339:2017-05-05T08:21:05+00:00 - Favorite - lambadalambda favorited something by hardbass2k8: @<a href="https://social.heldscal.la/user/23211" class="h-card mention" title="Constance Variable">lambadalambda</a> pretty sure it's money laundering - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T08:21:05+00:00 - 2017-05-05T08:21:05+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2827617:objectType=comment - New comment by hardbass2k8 - @<a href="https://social.heldscal.la/user/23211" class="h-card mention" title="Constance Variable">lambadalambda</a> pretty sure it's money laundering - - - - - - - https://shitposter.club/conversation/1387523 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-05-05:noticeId=2061303:objectType=note - New note by lambadalambda - It's got tattoos, it's got a pierced hood<br /> It's got generation X<br /> It's got lesbians, and vitriol<br /> And sadomasochistic latex sex<br /> It's got Mighty Morphin' power brokers<br /> And Tanya Harding nude<br /> Macrobiotic lacto-vegan non-confrontational free range food<br /> It's got the handshake, peace talk, non-aggression pact<br /> A multicultural integration of segregated historical facts<br /> <br /> #<span class="tag"><a href="https://social.heldscal.la/tag/nsfw" rel="tag">nsfw</a></span> <a href="https://social.heldscal.la/file/61c13b99c92f40ec4865e7a3830da340b187e3de70d94b8da38fd2138bbede3a.jpg" title="https://social.heldscal.la/file/61c13b99c92f40ec4865e7a3830da340b187e3de70d94b8da38fd2138bbede3a.jpg" rel="nofollow external noreferrer" class="attachment" id="attachment-432199">https://social.heldscal.la/attachment/432199</a> <a href="https://social.heldscal.la/file/a88bba1a324da68ee2cfdbcd1c4cde60bd9553298244d6f81731270b71aa80df.jpg" title="https://social.heldscal.la/file/a88bba1a324da68ee2cfdbcd1c4cde60bd9553298244d6f81731270b71aa80df.jpg" rel="nofollow external noreferrer" class="attachment" id="attachment-432200">https://social.heldscal.la/attachment/432200</a> <a href="https://social.heldscal.la/file/887329a303250e73dc2eea06b1f0512fcac4b9d1b534068f03c45f00d5b21c39.jpg" title="https://social.heldscal.la/file/887329a303250e73dc2eea06b1f0512fcac4b9d1b534068f03c45f00d5b21c39.jpg" rel="nofollow external noreferrer" class="attachment" id="attachment-432201">https://social.heldscal.la/attachment/432201</a> <a href="https://social.heldscal.la/file/6d7a1ec15c1368c4c68810434d24da528606fcbccdd1da97b25affafeeb6ffda.jpg" title="https://social.heldscal.la/file/6d7a1ec15c1368c4c68810434d24da528606fcbccdd1da97b25affafeeb6ffda.jpg" rel="nofollow external noreferrer" class="attachment" id="attachment-432202">https://social.heldscal.la/attachment/432202</a> <a href="https://social.heldscal.la/file/2f55f2bb028eb9be744cc82b35a6b86b496d8c3924c700aff55a872ff11df54c.jpg" title="https://social.heldscal.la/file/2f55f2bb028eb9be744cc82b35a6b86b496d8c3924c700aff55a872ff11df54c.jpg" rel="nofollow external noreferrer" class="attachment" id="attachment-432203">https://social.heldscal.la/attachment/432203</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T08:17:08+00:00 - 2017-05-05T08:17:08+00:00 - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=bb6f4343036970e8 - - - - - - - - - - - - diff --git a/test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_29191.atom.xml b/test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_29191.atom.xml deleted file mode 100644 index f70fbc695..000000000 --- a/test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_29191.atom.xml +++ /dev/null @@ -1,719 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/29191.atom - shp timeline - Updates from shp on social.heldscal.la! - https://social.heldscal.la/avatar/29191-96-20170421154949.jpeg - 2017-05-05T11:57:06+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/29191 - shp - cofe - - - - - - shp - shp - cofe - - cofe - - - - - - - - - - - - - - tag:social.heldscal.la,2017-04-29:noticeId=1967657:objectType=note - shp repeated a notice by lain - RT @<a href="https://social.heldscal.la/user/37181" class="h-card u-url p-nickname mention" title="Lain Iwakura">lain</a> @<a href="https://social.heldscal.la/user/29191" class="h-card u-url p-nickname mention" title="shp">shp</a> @<a href="https://social.heldscal.la/user/23211" class="h-card u-url p-nickname mention">lambadalambda</a> cofe. - - http://activitystrea.ms/schema/1.0/share - 2017-04-29T18:19:34+00:00 - 2017-04-29T18:19:34+00:00 - - http://activitystrea.ms/schema/1.0/activity - https://pleroma.soykaf.com/activities/43d12c05-db3f-4f3d-bee1-d676f264490c - - <a href="https://pleroma.soykaf.com/users/shp">@shp</a> <a href="https://social.heldscal.la/user/23211">@lambadalambda@social.heldscal.la</a> cofe. - - http://activitystrea.ms/schema/1.0/post - 2017-04-29T18:14:36+00:00 - 2017-04-29T18:14:36+00:00 - - http://activitystrea.ms/schema/1.0/person - https://pleroma.soykaf.com/users/lain - lain - Test account - - - - - - lain - Lain Iwakura - Test account - - - - http://activitystrea.ms/schema/1.0/note - https://pleroma.soykaf.com/activities/43d12c05-db3f-4f3d-bee1-d676f264490c - New note by lain - <a href="https://pleroma.soykaf.com/users/shp">@shp</a> <a href="https://social.heldscal.la/user/23211">@lambadalambda@social.heldscal.la</a> cofe. - - - - - tag:social.heldscal.la,2017-04-29:objectType=thread:nonce=e0b75431888efdab - - - https://pleroma.soykaf.com/users/lain/feed.atom - Lain Iwakura - - - https://social.heldscal.la/avatar/43188-96-20170429172422.jpeg - 2017-05-05T08:38:03+00:00 - - - - tag:social.heldscal.la,2017-04-29:objectType=thread:nonce=e0b75431888efdab - - - - - - - tag:social.heldscal.la,2017-04-27:subscription:29191:person:29558:2017-04-27T17:26:37+00:00 - shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:26:37 UTC - <a href="https://social.heldscal.la/shp">shp</a> started following <a href="https://gs.smuglo.li/kfist">KFist</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-04-27T17:26:37+00:00 - 2017-04-27T17:26:37+00:00 - - http://activitystrea.ms/schema/1.0/person - https://gs.smuglo.li/user/28051 - KFist - I stream thanks to @nepfag. I also drink, shitpost, and fly planes. I visited Japan and it changed my life. Do you love your station? - - - - - - kfist - KFist - I stream thanks to @nepfag. I also drink, shitpost, and fly planes. I visited Japan and it changed my life. Do you love your station? - - homepage - http://smuglo.li:8000/stream.m3u - true - - - - tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=f766240d13ed9c2e - - - - - - - tag:social.heldscal.la,2017-04-27:noticeId=1933030:objectType=note - shp repeated a notice by shpbot - RT @<a href="https://gs.archae.me/user/4687" class="h-card u-url p-nickname mention" title="shpbot">shpbot</a> &gt;QuakeC - - http://activitystrea.ms/schema/1.0/share - 2017-04-27T17:21:10+00:00 - 2017-04-27T17:21:10+00:00 - - http://activitystrea.ms/schema/1.0/activity - tag:gs.archae.me,2017-04-27:noticeId=760881:objectType=note - - <span class='greentext'>&gt;QuakeC</span> - - http://activitystrea.ms/schema/1.0/post - 2017-04-27T17:15:13+00:00 - 2017-04-27T17:15:13+00:00 - - http://activitystrea.ms/schema/1.0/person - https://gs.archae.me/user/4687 - shpbot - - - - - - shpbot - shpbot - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.archae.me,2017-04-27:noticeId=760881:objectType=note - New note by shpbot - <span class='greentext'>&gt;QuakeC</span> - - - - - https://gs.archae.me/conversation/318362 - - - https://gs.archae.me/api/statuses/user_timeline/4687.atom - shpbot - - - https://social.heldscal.la/avatar/31581-original-20170405170019.jpeg - 2017-05-05T11:45:08+00:00 - - - - https://gs.archae.me/conversation/318362 - - - - - - - tag:social.heldscal.la,2017-04-27:subscription:29191:person:23226:2017-04-27T17:20:48+00:00 - shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:20:48 UTC - <a href="https://social.heldscal.la/shp">shp</a> started following <a href="http://quitter.se/taknamay">Internet Turtle Ⓐ 🏴 ✅</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-04-27T17:20:48+00:00 - 2017-04-27T17:20:48+00:00 - - http://activitystrea.ms/schema/1.0/person - http://quitter.se/user/115823 - Internet Turtle Ⓐ 🏴 ✅ - Scheme programmer, Novice esperantist, Spiritual naturalist - Will listen to your problems for free - XMPP: DarkDungeons94 at chatme.im - - - - - - taknamay - Internet Turtle Ⓐ 🏴 ✅ - Scheme programmer, Novice esperantist, Spiritual naturalist - Will listen to your problems for free - XMPP: DarkDungeons94 at chatme.im - - New Jersey, United States - - - homepage - https://quitter.se/taknamay - true - - - - tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=a66b1fb22020c152 - - - - - - - tag:social.heldscal.la,2017-04-27:subscription:29191:person:29302:2017-04-27T17:20:33+00:00 - shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:20:33 UTC - <a href="https://social.heldscal.la/shp">shp</a> started following <a href="https://icosahedron.website/@Trev">Chillidan Stormrave</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-04-27T17:20:33+00:00 - 2017-04-27T17:20:33+00:00 - - http://activitystrea.ms/schema/1.0/person - https://icosahedron.website/users/Trev - Trev Prime - web tech, music, ethics. radical individualist. kinda queer. love thy neighbor. always open for conversation. - - - - - - trev - Trev Prime - web tech, music, ethics. radical individualist. kinda queer. love thy neighbor. always open for conversation. - - - tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=781c05bd64ad9520 - - - - - - - tag:social.heldscal.la,2017-04-27:subscription:29191:person:29367:2017-04-27T17:20:27+00:00 - shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:20:27 UTC - <a href="https://social.heldscal.la/shp">shp</a> started following <a href="https://gs.kawa-kun.com/aya">射命丸 文</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-04-27T17:20:27+00:00 - 2017-04-27T17:20:27+00:00 - - http://activitystrea.ms/schema/1.0/person - https://gs.kawa-kun.com/user/4885 - 射命丸 文 - Traditional Reporter of Fantasy - - - - - - aya - 射命丸 文 - Traditional Reporter of Fantasy - - Gensōkyō - - - homepage - https://danbooru.donmai.us - true - - - - tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=5921da7a934e47ca - - - - - - - tag:social.heldscal.la,2017-04-27:subscription:29191:person:27773:2017-04-27T17:20:18+00:00 - shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:20:18 UTC - <a href="https://social.heldscal.la/shp">shp</a> started following <a href="https://gs.smuglo.li/japananon">JapanAnon</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-04-27T17:20:18+00:00 - 2017-04-27T17:20:18+00:00 - - http://activitystrea.ms/schema/1.0/person - https://gs.smuglo.li/user/27299 - JapanAnon - 匿名でしていてね! - - - - - - japananon - JapanAnon - 匿名でしていてね! - - ワイヤード - - - homepage - http://www.anonymous-japan.org - true - - - - tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=ae3d819865886cba - - - - - - - tag:social.heldscal.la,2017-04-27:subscription:29191:person:36560:2017-04-27T17:19:30+00:00 - shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:19:30 UTC - <a href="https://social.heldscal.la/shp">shp</a> started following <a href="https://shitposter.club/wareya">wareya</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-04-27T17:19:30+00:00 - 2017-04-27T17:19:30+00:00 - - http://activitystrea.ms/schema/1.0/person - https://shitposter.club/user/15439 - wareya - Who are you to defy such a perfect being that is the machine? 日本語難しいけど頑張るぜ github.com/wareya wareya.moe Short: reya or war, never "ware" - - - - - - wareya - wareya - Who are you to defy such a perfect being that is the machine? 日本語難しいけど頑張るぜ github.com/wareya wareya.moe Short: reya or war, never "ware" - - - tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=bd88a3cd20b5a418 - - - - - - - tag:social.heldscal.la,2017-04-27:subscription:29191:person:41176:2017-04-27T17:19:21+00:00 - shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:19:21 UTC - <a href="https://social.heldscal.la/shp">shp</a> started following <a href="https://hakui.club/takeshitakenji">竹下憲二 (白)</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-04-27T17:19:21+00:00 - 2017-04-27T17:19:21+00:00 - - http://activitystrea.ms/schema/1.0/person - https://hakui.club/user/6 - 竹下憲二 (白) - Oh boy. - - - - - - takeshitakenji - 竹下憲二 (白) - Oh boy. - - Seattle, WA - - - homepage - http://gs.kawa-kun.com - true - - - - tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=b139a673deba6963 - - - - - - - tag:social.heldscal.la,2017-04-27:fave:29191:note:1932205:2017-04-27T17:17:46+00:00 - Favorite - shp favorited something by dolus: Looks like Merry is pussing out and caving to pressure. Sad. <a href="https://gs.smuglo.li/file/23e37de3c321248d3f322d8ec042372914568ab4c9431a94e568a61b8146587f.png" title="https://gs.smuglo.li/file/23e37de3c321248d3f322d8ec042372914568ab4c9431a94e568a61b8146587f.png" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432294</a> <a href="https://gs.smuglo.li/file/e5a9549a19986d59d51750090910f47c186787adf02b2b6ac58df37556887297.png" title="https://gs.smuglo.li/file/e5a9549a19986d59d51750090910f47c186787adf02b2b6ac58df37556887297.png" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432295</a> <a href="https://gs.smuglo.li/file/2fdfabbc8ab0b8dc135903a8c48c29b440d1f97446b98ced4ad14a54d3b5d41f.png" title="https://gs.smuglo.li/file/2fdfabbc8ab0b8dc135903a8c48c29b440d1f97446b98ced4ad14a54d3b5d41f.png" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432296</a> <a href="https://gs.smuglo.li/file/af605d7c6fe3a8c26c6d334c2a8e0005f7e86a266f14a5b3755e7d3ac4e226de.png" title="https://gs.smuglo.li/file/af605d7c6fe3a8c26c6d334c2a8e0005f7e86a266f14a5b3755e7d3ac4e226de.png" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432297</a> - - http://activitystrea.ms/schema/1.0/favorite - 2017-04-27T17:17:46+00:00 - 2017-04-27T17:17:46+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:gs.smuglo.li,2017-04-27:noticeId=2065465:objectType=note - New note by dolus - Looks like Merry is pussing out and caving to pressure. Sad. <a href="https://gs.smuglo.li/file/23e37de3c321248d3f322d8ec042372914568ab4c9431a94e568a61b8146587f.png" title="https://gs.smuglo.li/file/23e37de3c321248d3f322d8ec042372914568ab4c9431a94e568a61b8146587f.png" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432294</a> <a href="https://gs.smuglo.li/file/e5a9549a19986d59d51750090910f47c186787adf02b2b6ac58df37556887297.png" title="https://gs.smuglo.li/file/e5a9549a19986d59d51750090910f47c186787adf02b2b6ac58df37556887297.png" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432295</a> <a href="https://gs.smuglo.li/file/2fdfabbc8ab0b8dc135903a8c48c29b440d1f97446b98ced4ad14a54d3b5d41f.png" title="https://gs.smuglo.li/file/2fdfabbc8ab0b8dc135903a8c48c29b440d1f97446b98ced4ad14a54d3b5d41f.png" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432296</a> <a href="https://gs.smuglo.li/file/af605d7c6fe3a8c26c6d334c2a8e0005f7e86a266f14a5b3755e7d3ac4e226de.png" title="https://gs.smuglo.li/file/af605d7c6fe3a8c26c6d334c2a8e0005f7e86a266f14a5b3755e7d3ac4e226de.png" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432297</a> - - - - - - - https://gs.smuglo.li/conversation/927473 - - - - - - - tag:social.heldscal.la,2017-04-27:fave:29191:note:1932492:2017-04-27T17:13:55+00:00 - Favorite - shp favorited something by zemichi: <a href="https://gs.smuglo.li/file/1d45ea4ffc95f15037f361b56ad6b89f8451b70ad1ff7a03b7bb0345b8e2227c.jpg" title="https://gs.smuglo.li/file/1d45ea4ffc95f15037f361b56ad6b89f8451b70ad1ff7a03b7bb0345b8e2227c.jpg" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432344</a><br /> that's a lot of loli - - http://activitystrea.ms/schema/1.0/favorite - 2017-04-27T17:13:55+00:00 - 2017-04-27T17:13:55+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:gs.smuglo.li,2017-04-27:noticeId=2065713:objectType=note - New note by zemichi - <a href="https://gs.smuglo.li/file/1d45ea4ffc95f15037f361b56ad6b89f8451b70ad1ff7a03b7bb0345b8e2227c.jpg" title="https://gs.smuglo.li/file/1d45ea4ffc95f15037f361b56ad6b89f8451b70ad1ff7a03b7bb0345b8e2227c.jpg" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432344</a><br /> that's a lot of loli - - - - - - - https://gs.smuglo.li/conversation/927673 - - - - - - - tag:social.heldscal.la,2017-04-27:fave:29191:note:1932559:2017-04-27T17:12:46+00:00 - Favorite - shp favorited something by gsimg: <a href="https://gs.kawa-kun.com/file/3435c5cafda46f31cad5abb5837b3521b7b458198507073a496f4d10bad3633b.jpg" title="https://gs.kawa-kun.com/file/3435c5cafda46f31cad5abb5837b3521b7b458198507073a496f4d10bad3633b.jpg" rel="nofollow noreferrer" class="attachment">https://gs.kawa-kun.com/file/3435c5cafda46f31cad5abb5837b3521b7b458198507073a496f4d10bad3633b.jpg</a> #<span class="tag"><a href="https://gs.kawa-kun.com/tag/nsfw" rel="tag">nsfw</a></span> - - http://activitystrea.ms/schema/1.0/favorite - 2017-04-27T17:12:46+00:00 - 2017-04-27T17:12:46+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:gs.kawa-kun.com,2017-04-27:noticeId=1608309:objectType=note - New note by gsimg - <a href="https://gs.kawa-kun.com/file/3435c5cafda46f31cad5abb5837b3521b7b458198507073a496f4d10bad3633b.jpg" title="https://gs.kawa-kun.com/file/3435c5cafda46f31cad5abb5837b3521b7b458198507073a496f4d10bad3633b.jpg" rel="nofollow noreferrer" class="attachment">https://gs.kawa-kun.com/file/3435c5cafda46f31cad5abb5837b3521b7b458198507073a496f4d10bad3633b.jpg</a> #<span class="tag"><a href="https://gs.kawa-kun.com/tag/nsfw" rel="tag">nsfw</a></span> - - - - - - - https://gs.kawa-kun.com/conversation/690817 - - - - - - - tag:social.heldscal.la,2017-04-27:fave:29191:note:1932601:2017-04-27T17:12:28+00:00 - Favorite - shp favorited something by zemichi: <a href="https://gs.smuglo.li/file/5d9114fafea7b9866c9d852bcfeaf66aade65ae26149758346bc5ade7e3fa8f0.jpg" title="https://gs.smuglo.li/file/5d9114fafea7b9866c9d852bcfeaf66aade65ae26149758346bc5ade7e3fa8f0.jpg" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432372</a> - - http://activitystrea.ms/schema/1.0/favorite - 2017-04-27T17:12:28+00:00 - 2017-04-27T17:12:28+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:gs.smuglo.li,2017-04-27:noticeId=2065821:objectType=note - New note by zemichi - <a href="https://gs.smuglo.li/file/5d9114fafea7b9866c9d852bcfeaf66aade65ae26149758346bc5ade7e3fa8f0.jpg" title="https://gs.smuglo.li/file/5d9114fafea7b9866c9d852bcfeaf66aade65ae26149758346bc5ade7e3fa8f0.jpg" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432372</a> - - - - - - - https://gs.smuglo.li/conversation/927760 - - - - - - - tag:social.heldscal.la,2017-04-27:noticeId=1932867:objectType=note - shp repeated a notice by shpbot - RT @<a href="https://gs.archae.me/user/4687" class="h-card u-url p-nickname mention" title="shpbot">shpbot</a> <a href="https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg" title="https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg" rel="nofollow external noreferrer" class="attachment" id="attachment-237676">https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg</a> #<span class="tag"><a href="https://social.heldscal.la/tag/2hu" rel="tag">2hu</a></span> #<span class="tag"><a href="https://social.heldscal.la/tag/ordinarymagician" rel="tag">ordinarymagician</a></span> :thinking: <a href="https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg" title="https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg" rel="nofollow external noreferrer" class="attachment" id="attachment-312306">https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg</a> - - http://activitystrea.ms/schema/1.0/share - 2017-04-27T17:11:35+00:00 - 2017-04-27T17:11:35+00:00 - - http://activitystrea.ms/schema/1.0/activity - tag:gs.archae.me,2017-04-27:noticeId=760830:objectType=note - - <a href="https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg" title="https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg" rel="nofollow noreferrer" class="attachment">https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg</a> #<span class="tag"><a href="https://gs.archae.me/tag/2hu" rel="tag">2hu</a></span> #<span class="tag"><a href="https://gs.archae.me/tag/ordinarymagician" rel="tag">ordinarymagician</a></span> :thinking: <a href="https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg" title="https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg" rel="nofollow noreferrer" class="attachment">https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg</a> - - http://activitystrea.ms/schema/1.0/post - 2017-04-27T17:00:08+00:00 - 2017-04-27T17:00:08+00:00 - - http://activitystrea.ms/schema/1.0/person - https://gs.archae.me/user/4687 - shpbot - - - - - - shpbot - shpbot - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.archae.me,2017-04-27:noticeId=760830:objectType=note - New note by shpbot - <a href="https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg" title="https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg" rel="nofollow noreferrer" class="attachment">https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg</a> #<span class="tag"><a href="https://gs.archae.me/tag/2hu" rel="tag">2hu</a></span> #<span class="tag"><a href="https://gs.archae.me/tag/ordinarymagician" rel="tag">ordinarymagician</a></span> :thinking: <a href="https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg" title="https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg" rel="nofollow noreferrer" class="attachment">https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg</a> - - - - - https://gs.archae.me/conversation/318317 - - - - - https://gs.archae.me/api/statuses/user_timeline/4687.atom - shpbot - - - https://social.heldscal.la/avatar/31581-original-20170405170019.jpeg - 2017-05-05T11:45:08+00:00 - - - - https://gs.archae.me/conversation/318317 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-04-27:noticeId=1932815:objectType=note - New note by shp - federation issues with SPC atm it seems - - - http://activitystrea.ms/schema/1.0/post - 2017-04-27T17:08:55+00:00 - 2017-04-27T17:08:55+00:00 - - tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=645a13c841f51769 - - - - - - - tag:social.heldscal.la,2017-04-26:fave:29191:note:1907285:2017-04-26T06:59:07+00:00 - Favorite - shp favorited something by lambadalambda: Is this the most offensive video on the net? <a href="https://social.heldscal.la/file/4c34bfb81a8155c265031bc48f7e69c29eb0d2941c57daf63f80e17b0e2e5f47.webm" title="https://social.heldscal.la/file/4c34bfb81a8155c265031bc48f7e69c29eb0d2941c57daf63f80e17b0e2e5f47.webm" rel="nofollow noreferrer" class="attachment">https://social.heldscal.la/attachment/402251</a> - - http://activitystrea.ms/schema/1.0/favorite - 2017-04-26T06:59:07+00:00 - 2017-04-26T06:59:07+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-04-26:noticeId=1907285:objectType=note - New note by lambadalambda - Is this the most offensive video on the net? <a href="https://social.heldscal.la/file/4c34bfb81a8155c265031bc48f7e69c29eb0d2941c57daf63f80e17b0e2e5f47.webm" title="https://social.heldscal.la/file/4c34bfb81a8155c265031bc48f7e69c29eb0d2941c57daf63f80e17b0e2e5f47.webm" rel="nofollow external noreferrer" class="attachment" id="attachment-402251">https://social.heldscal.la/attachment/402251</a> - - - - - - - tag:social.heldscal.la,2017-04-26:objectType=thread:nonce=07b02e1328f456af - - - - - - - tag:social.heldscal.la,2017-04-26:noticeId=1907951:objectType=note - shp repeated a notice by shpbot - RT @<a href="https://gs.archae.me/user/4687" class="h-card u-url p-nickname mention" title="shpbot">shpbot</a> <a href="https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg" title="https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg" rel="nofollow external noreferrer" class="attachment" id="attachment-346198">https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg</a> - - http://activitystrea.ms/schema/1.0/share - 2017-04-26T06:58:19+00:00 - 2017-04-26T06:58:19+00:00 - - http://activitystrea.ms/schema/1.0/activity - tag:gs.archae.me,2017-04-26:noticeId=752596:objectType=note - - <a href="https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg" title="https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg" rel="nofollow noreferrer" class="attachment">https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg</a> - - http://activitystrea.ms/schema/1.0/post - 2017-04-26T06:15:07+00:00 - 2017-04-26T06:15:07+00:00 - - http://activitystrea.ms/schema/1.0/person - https://gs.archae.me/user/4687 - shpbot - - - - - - shpbot - shpbot - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.archae.me,2017-04-26:noticeId=752596:objectType=note - New note by shpbot - <a href="https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg" title="https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg" rel="nofollow noreferrer" class="attachment">https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg</a> - - - - - https://gs.archae.me/conversation/314010 - - - https://gs.archae.me/api/statuses/user_timeline/4687.atom - shpbot - - - https://social.heldscal.la/avatar/31581-original-20170405170019.jpeg - 2017-05-05T11:45:08+00:00 - - - - https://gs.archae.me/conversation/314010 - - - - - - - tag:social.heldscal.la,2017-04-26:fave:29191:note:1907341:2017-04-26T06:58:16+00:00 - Favorite - shp favorited something by moonman: <a href="https://shitposter.club/file/1377b0894e983599c11e739e406243cabed9f8af7961a2550ecaf97e32de8e60.jpg" title="https://shitposter.club/file/1377b0894e983599c11e739e406243cabed9f8af7961a2550ecaf97e32de8e60.jpg" class="attachment" rel="nofollow">https://shitposter.club/attachment/630989</a> - - http://activitystrea.ms/schema/1.0/favorite - 2017-04-26T06:58:16+00:00 - 2017-04-26T06:58:16+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-04-26:noticeId=2681941:objectType=note - New note by moonman - <a href="https://shitposter.club/file/1377b0894e983599c11e739e406243cabed9f8af7961a2550ecaf97e32de8e60.jpg" title="https://shitposter.club/file/1377b0894e983599c11e739e406243cabed9f8af7961a2550ecaf97e32de8e60.jpg" class="attachment" rel="nofollow">https://shitposter.club/attachment/630989</a> - - - - - - - https://shitposter.club/conversation/1300990 - - - - - - - tag:social.heldscal.la,2017-04-26:fave:29191:comment:1907412:2017-04-26T06:57:56+00:00 - Favorite - shp favorited something by lambadalambda: @<a href="https://gs.smuglo.li/user/2" class="h-card u-url p-nickname mention" title="nepfag">nepfag</a> <a href="https://cherubini.casa/why-i-shut-down-wizards-town-and-left-mastodon-6d4e631346b3?source=linkShare-89c2f851e979-1493184822&amp;gi=a6a47c5466a0" title="https://cherubini.casa/why-i-shut-down-wizards-town-and-left-mastodon-6d4e631346b3?source=linkShare-89c2f851e979-1493184822&amp;gi=a6a47c5466a0" rel="nofollow noreferrer" class="attachment">https://social.heldscal.la/url/402273</a> - - http://activitystrea.ms/schema/1.0/favorite - 2017-04-26T06:57:56+00:00 - 2017-04-26T06:57:56+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-04-26:noticeId=1907412:objectType=comment - New comment by lambadalambda - @<a href="https://gs.smuglo.li/user/2" class="h-card u-url p-nickname mention" title="nepfag">nepfag</a> <a href="https://cherubini.casa/why-i-shut-down-wizards-town-and-left-mastodon-6d4e631346b3?source=linkShare-89c2f851e979-1493184822&amp;gi=a6a47c5466a0" title="https://cherubini.casa/why-i-shut-down-wizards-town-and-left-mastodon-6d4e631346b3?source=linkShare-89c2f851e979-1493184822&amp;gi=a6a47c5466a0" rel="nofollow external noreferrer" class="attachment" id="attachment-402273">https://social.heldscal.la/url/402273</a> - - - - - - - tag:social.heldscal.la,2017-04-26:objectType=thread:nonce=85c21eda7aaa7259 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-04-26:noticeId=1907942:objectType=note - New note by shp - #<span class="tag"><a href="https://social.heldscal.la/tag/cofe" rel="tag">cofe</a></span> time my friends <a href="https://social.heldscal.la/file/ec254b45b3a86ff74bc08bc7e065cb681d77cf7d4cedc9cdcf59e16adf311da3.png" title="https://social.heldscal.la/file/ec254b45b3a86ff74bc08bc7e065cb681d77cf7d4cedc9cdcf59e16adf311da3.png" rel="nofollow external noreferrer" class="attachment" id="attachment-402381">https://social.heldscal.la/attachment/402381</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-04-26T06:57:18+00:00 - 2017-04-26T06:57:18+00:00 - - tag:social.heldscal.la,2017-04-26:objectType=thread:nonce=9c9d9373bccfaf70 - - - - - - - - diff --git a/test/fixtures/tesla_mock/sakamoto.atom b/test/fixtures/tesla_mock/sakamoto.atom deleted file mode 100644 index 648946795..000000000 --- a/test/fixtures/tesla_mock/sakamoto.atom +++ /dev/null @@ -1 +0,0 @@ -http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://social.sakamoto.gq/objects/0ccc1a2c-66b0-4305-b23a-7f7f2b040056New note by eal<a href='https://shitposter.club/user/5381'>@shpuld</a> <a href='https://pleroma.hjkos.com/users/hj'>@hj</a> IM NOT GAY DAD2017-08-04T12:51:26.130592Z2017-08-04T12:51:26.130592Zhttps://pleroma.hjkos.com/contexts/53093c74-2100-4bf4-aac6-66d1973d03efhttps://social.sakamoto.gq/users/ealhttp://activitystrea.ms/schema/1.0/personhttps://social.sakamoto.gq/users/ealeal坂本(・ヮ・)eal \ No newline at end of file diff --git a/test/fixtures/tesla_mock/sakamoto_eal_feed.atom b/test/fixtures/tesla_mock/sakamoto_eal_feed.atom deleted file mode 100644 index 9340d9038..000000000 --- a/test/fixtures/tesla_mock/sakamoto_eal_feed.atom +++ /dev/null @@ -1 +0,0 @@ -https://social.sakamoto.gq/users/eal/feed.atomeal's timeline2017-08-04T14:19:12.683854https://social.sakamoto.gq/users/ealhttp://activitystrea.ms/schema/1.0/personhttps://social.sakamoto.gq/users/ealeal坂本(・ヮ・)ealhttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://social.sakamoto.gq/objects/b79a1721-23f3-45a5-9610-adb08c2afae5New note by ealHonestly, I like all smileys that are not emoji.2017-08-04T14:19:12.675999Z2017-08-04T14:19:12.675999Zhttps://social.sakamoto.gq/contexts/e05ede92-8db9-4963-8b8e-e71a5797d68fhttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://social.sakamoto.gq/objects/45475bf3-2dfc-4d9e-8eae-1f4f86f48982New note by ealThen again, I like all smileys/emoticons that are not emoji.<br>2017-08-04T14:19:10.113373Z2017-08-04T14:19:10.113373Zhttps://social.sakamoto.gq/contexts/852d1605-4dcb-4ba7-9ba4-dfc37ed62fbchttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://social.sakamoto.gq/objects/8f8fd6d6-cc63-40c6-a5d0-1c0e4f919368New note by ealI love the russian-style smiley.2017-08-04T14:18:30.478552Z2017-08-04T14:18:30.478552Zhttps://social.sakamoto.gq/contexts/852d1605-4dcb-4ba7-9ba4-dfc37ed62fbchttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/6e69df95-f2ad-4b8e-af4a-e93ff93d64e1eal started following https://cybre.space/users/0x3Feal started following https://cybre.space/users/0x3F2017-08-04T14:17:24.942193Z2017-08-04T14:17:24.942193Zhttp://activitystrea.ms/schema/1.0/personhttps://cybre.space/users/0x3Fhttps://cybre.space/users/0x3Fhttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/54c5e260-0185-4267-a2a6-f5dd9c76c2c9eal started following https://niu.moe/users/ryeeal started following https://niu.moe/users/rye2017-08-04T14:16:35.604739Z2017-08-04T14:16:35.604739Zhttp://activitystrea.ms/schema/1.0/personhttps://niu.moe/users/ryehttps://niu.moe/users/ryehttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/092ca863-19a8-416c-85d7-d3f23b3c0203eal started following https://mastodon.xyz/users/rafudesueal started following https://mastodon.xyz/users/rafudesu2017-08-04T14:16:10.993429Z2017-08-04T14:16:10.993429Zhttp://activitystrea.ms/schema/1.0/personhttps://mastodon.xyz/users/rafudesuhttps://mastodon.xyz/users/rafudesuhttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/be5cf702-b127-423b-a6be-5f78f01a4289eal started following https://gs.kawa-kun.com/user/2eal started following https://gs.kawa-kun.com/user/22017-08-04T14:15:41.804611Z2017-08-04T14:15:41.804611Zhttp://activitystrea.ms/schema/1.0/personhttps://gs.kawa-kun.com/user/2https://gs.kawa-kun.com/user/2http://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/4951e2a1-9bae-4e87-8e98-e6d2f8a52338eal started following https://gs.kawa-kun.com/user/4885eal started following https://gs.kawa-kun.com/user/48852017-08-04T14:15:00.135352Z2017-08-04T14:15:00.135352Zhttp://activitystrea.ms/schema/1.0/personhttps://gs.kawa-kun.com/user/4885https://gs.kawa-kun.com/user/4885http://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/cadf8745-b9ee-4f6c-af32-bfddb70e4607eal started following https://mastodon.social/users/Murassaeal started following https://mastodon.social/users/Murassa2017-08-04T14:14:36.339560Z2017-08-04T14:14:36.339560Zhttp://activitystrea.ms/schema/1.0/personhttps://mastodon.social/users/Murassahttps://mastodon.social/users/Murassahttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/a52c9aab-f0e6-4ccb-8dd3-9f417e72a41ceal started following https://mastodon.social/users/rysiekeal started following https://mastodon.social/users/rysiek2017-08-04T14:13:04.061572Z2017-08-04T14:13:04.061572Zhttp://activitystrea.ms/schema/1.0/personhttps://mastodon.social/users/rysiekhttps://mastodon.social/users/rysiekhttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/738bc887-4cca-4b36-8c86-2b54d4c54732eal started following https://mastodon.hasameli.com/users/munineal started following https://mastodon.hasameli.com/users/munin2017-08-04T14:12:10.514155Z2017-08-04T14:12:10.514155Zhttp://activitystrea.ms/schema/1.0/personhttps://mastodon.hasameli.com/users/muninhttps://mastodon.hasameli.com/users/muninhttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/dc66ad5a-b776-4180-a8aa-e4c1bf7cb703eal started following https://cybre.space/users/nightpooleal started following https://cybre.space/users/nightpool2017-08-04T14:11:16.046148Z2017-08-04T14:11:16.046148Zhttp://activitystrea.ms/schema/1.0/personhttps://cybre.space/users/nightpoolhttps://cybre.space/users/nightpoolhttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://social.sakamoto.gq/objects/9c5c00d7-3ce4-4c11-b965-dc5c2bda86c5New note by eal<a href='https://mastodon.zombocloud.com/users/staticsafe'>@staticsafe</a> privet )))2017-08-04T14:10:08.812247Z2017-08-04T14:10:08.812247Zhttps://social.sakamoto.gq/contexts/12a33823-0327-4c1c-a591-850ea79331b5http://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/49798053-1f40-4a71-ad33-106e90630863eal started following https://social.homunyan.com/users/animeirleal started following https://social.homunyan.com/users/animeirl2017-08-04T14:09:44.904792Z2017-08-04T14:09:44.904792Zhttp://activitystrea.ms/schema/1.0/personhttps://social.homunyan.com/users/animeirlhttps://social.homunyan.com/users/animeirlhttp://activitystrea.ms/schema/1.0/favoritehttps://social.sakamoto.gq/activities/2d83a1c5-70a6-45d3-9b84-59d6a70fbb17New favorite by ealeal favorited something2017-08-04T14:07:27.210044Z2017-08-04T14:07:27.210044Zhttp://activitystrea.ms/schema/1.0/notehttps://pleroma.soykaf.com/objects/b831e52f-4ed4-438e-95b4-888897f64f09https://pleroma.hjkos.com/contexts/3ed48205-1e72-4e19-a618-89a0d2ca811ehttp://activitystrea.ms/schema/1.0/favoritehttps://social.sakamoto.gq/activities/06d28bed-544a-496b-8414-1c6d439273b5New favorite by ealeal favorited something2017-08-04T14:05:37.280200Z2017-08-04T14:05:37.280200Zhttp://activitystrea.ms/schema/1.0/notetag:toot-lab.reclaim.technology,2017-08-04:objectId=1166030:objectType=Statustag:p2px.me,2017-08-04:objectType=thread:nonce=f8bfc4d13db6ce91http://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/72bf19d4-9ad4-4b2f-9cd0-f0d70f4e931beal started following https://mstdn.jp/users/nullkaleal started following https://mstdn.jp/users/nullkal2017-08-04T14:05:04.148904Z2017-08-04T14:05:04.148904Zhttp://activitystrea.ms/schema/1.0/personhttps://mstdn.jp/users/nullkalhttps://mstdn.jp/users/nullkalhttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://social.sakamoto.gq/objects/b0e89515-7621-4e09-b23d-83e192324107New note by eal<a href='https://p2px.me/user/1'>@stitchxd</a> test also2017-08-04T14:04:38.699051Z2017-08-04T14:04:38.699051Ztag:p2px.me,2017-08-04:objectType=thread:nonce=f8bfc4d13db6ce91http://activitystrea.ms/schema/1.0/favoritehttps://social.sakamoto.gq/activities/d8d2006b-6b23-45d6-ba27-39d27587777dNew favorite by ealeal favorited something2017-08-04T14:04:32.106626Z2017-08-04T14:04:32.106626Zhttp://activitystrea.ms/schema/1.0/notetag:p2px.me,2017-08-04:noticeId=222109:objectType=notetag:p2px.me,2017-08-04:objectType=thread:nonce=f8bfc4d13db6ce91http://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/cb9db95d-ec27-41fa-bebd-5375fc13acb9eal started following https://mastodon.social/users/Gargroneal started following https://mastodon.social/users/Gargron2017-08-04T14:04:04.325531Z2017-08-04T14:04:04.325531Zhttp://activitystrea.ms/schema/1.0/personhttps://mastodon.social/users/Gargronhttps://mastodon.social/users/Gargron \ No newline at end of file diff --git a/test/fixtures/tesla_mock/shp@pleroma.soykaf.com.feed b/test/fixtures/tesla_mock/shp@pleroma.soykaf.com.feed deleted file mode 100644 index b24ef7ab6..000000000 --- a/test/fixtures/tesla_mock/shp@pleroma.soykaf.com.feed +++ /dev/null @@ -1 +0,0 @@ -https://pleroma.soykaf.com/users/shp/feed.atomshp's timeline2017-09-14T08:31:48.911686https://pleroma.soykaf.com/users/shphttp://activitystrea.ms/schema/1.0/personhttps://pleroma.soykaf.com/users/shpshpshpcofeshphttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://pleroma.soykaf.com/activities/0b5f5ef2-020a-4f9e-a92b-a2bf21224644shp started following https://pleroma.soykaf.com/users/goozshp started following https://pleroma.soykaf.com/users/gooz2017-09-14T08:31:48.911226Z2017-09-14T08:31:48.911226Zhttp://activitystrea.ms/schema/1.0/personhttps://pleroma.soykaf.com/users/goozhttps://pleroma.soykaf.com/users/goozhttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://pleroma.soykaf.com/activities/d928b7f7-dc10-478c-859b-cd604770da60shp started following https://niu.moe/users/xiaoyongmaoshp started following https://niu.moe/users/xiaoyongmao2017-09-14T08:16:52.674253Z2017-09-14T08:16:52.674253Zhttp://activitystrea.ms/schema/1.0/personhttps://niu.moe/users/xiaoyongmaohttps://niu.moe/users/xiaoyongmaohttp://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/3f5089b3-f1e5-47b6-8bfe-a9c4a860e724New favorite by shpshp favorited something2017-09-14T08:12:18.213055Z2017-09-14T08:12:18.213055Zhttp://activitystrea.ms/schema/1.0/notehttps://mastodon.xyz/users/Azurolu/statuses/8346804tag:mastodon.xyz,2017-09-14:objectId=3669709:objectType=Conversationhttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/0def9b19-6b0f-44e0-96b3-543fa06a4010New note by shp<a href='https://niu.moe/users/Pasty'>@Pasty</a> I love the peach<br><a href="https://pleroma.soykaf.com/media/7e8bd209-dbd4-481a-a62c-d302d68df16d/__hinanawi_tenshi_touhou_drawn_by_e_o__8c6824f52dd494f6026607570179265f.jpg" class='attachment'>__hinanawi_tenshi_touhou_drawn_…</a>2017-09-14T08:12:04.367142Z2017-09-14T08:12:04.367142Ztag:niu.moe,2017-09-14:objectId=1660781:objectType=Conversationhttp://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/a4170edf-d273-4b82-931d-662aaf3872f3New favorite by shpshp favorited something2017-09-14T08:10:26.205104Z2017-09-14T08:10:26.205104Zhttp://activitystrea.ms/schema/1.0/notehttps://niu.moe/users/NekoiNemo/statuses/3210992tag:niu.moe,2017-09-14:objectId=1660761:objectType=Conversationhttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/c50c47a0-fac5-4781-a7e6-f20e7226d5fcNew note by shp<a href='https://freezepeach.xyz/user/3458'>@hakui</a> <a href='https://pleroma.soykaf.com/users/lain'>@lain</a> you guys are forgetting the pancakes jeez2017-09-14T08:09:30.088418Z2017-09-14T08:09:30.088418Zhttps://pleroma.soykaf.com/contexts/ac9c98ee-3eca-4b4b-9620-64b5e85e2623http://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/2af9f622-5986-483c-83a1-ac59a9035b50New favorite by shpshp favorited something2017-09-14T08:09:16.346235Z2017-09-14T08:09:16.346235Zhttp://activitystrea.ms/schema/1.0/notetag:freezepeach.xyz,2017-09-14:noticeId=3926191:objectType=commenthttps://pleroma.soykaf.com/contexts/ac9c98ee-3eca-4b4b-9620-64b5e85e2623http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/f52aad69-5828-4e0e-bb7b-f2f0869d3ff0New note by shp<a href='https://gs.smuglo.li/user/253'>@kro</a> I'll probs try some of those 2hu mangos2017-09-14T08:09:13.262835Z2017-09-14T08:09:13.262835Ztag:gs.smuglo.li,2017-09-14:objectType=thread:nonce=c4ac2016e07c4123http://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/35743658-efee-46cf-9cdf-487b95709cd5New favorite by shpshp favorited something2017-09-14T08:09:00.517534Z2017-09-14T08:09:00.517534Zhttp://activitystrea.ms/schema/1.0/notetag:gs.smuglo.li,2017-09-14:noticeId=4113226:objectType=commenttag:gs.smuglo.li,2017-09-14:objectType=thread:nonce=c4ac2016e07c4123http://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/22258ba8-58dc-4e09-b476-fe28d3307377New favorite by shpshp favorited something2017-09-14T08:08:38.087136Z2017-09-14T08:08:38.087136Zhttp://activitystrea.ms/schema/1.0/notehttps://pleroma.soykaf.com/objects/13d7809e-5dca-4117-8738-887759392f2chttps://pleroma.soykaf.com/contexts/ac9c98ee-3eca-4b4b-9620-64b5e85e2623http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/f56d640a-0dbd-48af-80b1-06d0dbd26774New note by shp<a href='https://social.sakamoto.gq/users/eal'>@eal</a> ...but neither does my phone<br><br>low brightness, very dark wallpaper (pic related, but even darker, couldn't find the actual version)<br><a href="https://pleroma.soykaf.com/media/6d1b8d57-80ae-41d6-bdea-58fea09ecdf4/phonewallpaper.png" class='attachment'>phonewallpaper.png</a>2017-09-14T08:07:23.081214Z2017-09-14T08:07:23.081214Zhttps://pleroma.soykaf.com/contexts/f4c5d56e-fc58-467b-a8a5-10515c012355http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/d313df1d-121c-4ab8-abd1-e6aedcf55cbdNew note by shp<a href='https://niu.moe/users/Pasty'>@Pasty</a> y-you too2017-09-14T07:55:26.153486Z2017-09-14T07:55:26.153486Ztag:niu.moe,2017-09-14:objectId=1660616:objectType=Conversationhttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/7b642424-4edb-48cc-8711-1eafb4745269New note by shp<a href='https://social.sakamoto.gq/users/eal'>@eal</a> bothers me more when sleeping, wore one for nearly 2 years2017-09-14T07:54:53.449227Z2017-09-14T07:54:53.449227Zhttps://pleroma.soykaf.com/contexts/f4c5d56e-fc58-467b-a8a5-10515c012355http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/5bc1bff1-88c3-489d-8efd-7e4755690a18New note by shpquick test2017-09-14T07:54:09.045525Z2017-09-14T07:54:09.045525Zhttps://pleroma.soykaf.com/contexts/cd770c2a-408e-4895-988c-60319298f219http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/956f1fb5-6f2f-433e-ab71-7f732b76f4beNew note by shphad some trouble getting sleep last night. only used phone to check the time a few times (v essential to have a near-black wallpaper to not blind yourself when you do that). can't rember the last time I rolled in the bed for longer than an hour like that2017-09-14T07:51:23.557775Z2017-09-14T07:51:23.557775Zhttps://pleroma.soykaf.com/contexts/f4c5d56e-fc58-467b-a8a5-10515c012355http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/d935d9f2-ebc7-4ff2-b65a-fbf418a60935New note by shp<a href='https://gs.smuglo.li/user/253'>@kro</a> doesn't sound like a bad idea at all2017-09-14T07:49:55.702555Z2017-09-14T07:49:55.702555Ztag:gs.smuglo.li,2017-09-14:objectType=thread:nonce=c4ac2016e07c4123http://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/342c8803-ee16-487d-9488-a39d763073f6New favorite by shpshp favorited something2017-09-14T07:49:41.875840Z2017-09-14T07:49:41.875840Zhttp://activitystrea.ms/schema/1.0/notetag:anticapitalist.party,2017-09-14:objectId=3322865:objectType=Statustag:anticapitalist.party,2017-09-14:objectId=1251751:objectType=Conversationhttp://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/5d98a19b-dd55-4077-9841-142937c613adNew favorite by shpshp favorited something2017-09-14T07:49:30.584265Z2017-09-14T07:49:30.584265Zhttp://activitystrea.ms/schema/1.0/notetag:gs.smuglo.li,2017-09-14:noticeId=4113170:objectType=commenttag:gs.smuglo.li,2017-09-14:objectType=thread:nonce=c4ac2016e07c4123http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/fdf3626a-50ba-458b-9bf7-b5f2cfa505fcNew note by shp<a href='https://pleroma.hjkos.com/users/hj'>@hj</a> c time2017-09-14T07:48:52.805422Z2017-09-14T07:48:52.805422Zhttps://pleroma.hjkos.com/contexts/dc4a3a3e-d366-4c0c-8789-8a9bee3537d9http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/c7c8eb17-b669-4827-9fbc-90f1fc54e4b1New note by shp<a href='https://sunshinegardens.org/users/tbny'>@tbny</a> err.. mediterranean from finnish*2017-09-14T07:46:52.764234Z2017-09-14T07:46:52.764234Zhttps://pleroma.soykaf.com/contexts/ac9c98ee-3eca-4b4b-9620-64b5e85e2623 \ No newline at end of file diff --git a/test/fixtures/tesla_mock/spc_5381.atom b/test/fixtures/tesla_mock/spc_5381.atom deleted file mode 100644 index c3288e97b..000000000 --- a/test/fixtures/tesla_mock/spc_5381.atom +++ /dev/null @@ -1,438 +0,0 @@ - - - GNU social - https://shitposter.club/api/statuses/user_timeline/5381.atom - shpuld timeline - Updates from shpuld on Shitposter Club! - https://shitposter.club/avatar/5381-96-20171230093854.png - 2018-02-23T13:42:22+00:00 - - http://activitystrea.ms/schema/1.0/person - https://shitposter.club/user/5381 - shpuld - - - - - - shpuld - shp - - - - - - - - - - - - - tag:shitposter.club,2018-02-23:fave:5381:comment:7387801:2018-02-23T13:39:40+00:00 - Favorite - shpuld favorited something by mayuutann: <p><span class="h-card"><a href="https://freezepeach.xyz/hakui" class="u-url mention">@<span>hakui</span></a></span> <span class="h-card"><a href="https://gs.smuglo.li/histoire" class="u-url mention">@<span>histoire</span></a></span> <span class="h-card"><a href="https://shitposter.club/shpuld" class="u-url mention">@<span>shpuld</span></a></span> <a href="https://mstdn.io/media/_Ee-x91XN0udpfZVO_U" rel="nofollow"><span class="invisible">https://</span><span class="ellipsis">mstdn.io/media/_Ee-x91XN0udpfZ</span><span class="invisible">VO_U</span></a></p> - - http://activitystrea.ms/schema/1.0/favorite - 2018-02-23T13:39:40+00:00 - 2018-02-23T13:39:40+00:00 - - http://activitystrea.ms/schema/1.0/comment - https://mstdn.io/users/mayuutann/statuses/99574950785668071 - New comment by mayuutann - <p><span class="h-card"><a href="https://freezepeach.xyz/hakui" class="u-url mention">@<span>hakui</span></a></span> <span class="h-card"><a href="https://gs.smuglo.li/histoire" class="u-url mention">@<span>histoire</span></a></span> <span class="h-card"><a href="https://shitposter.club/shpuld" class="u-url mention">@<span>shpuld</span></a></span> <a href="https://mstdn.io/media/_Ee-x91XN0udpfZVO_U" rel="nofollow"><span class="invisible">https://</span><span class="ellipsis">mstdn.io/media/_Ee-x91XN0udpfZ</span><span class="invisible">VO_U</span></a></p> - - - - - - - https://freezepeach.xyz/conversation/4182511 - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387723:objectType=comment - New comment by shpuld - @<a href="https://freezepeach.xyz/user/3458" class="h-card mention" title="&#x5FA1;&#x5712;&#x306F;&#x304F;&#x3044;">hakui</a> @<a href="https://pleroma.soykaf.com/users/lain" class="h-card mention" title="&#x2468; lain &#x2468;">lain</a> how naive~ - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:30:15+00:00 - 2018-02-23T13:30:15+00:00 - - - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=2f09acf104aebfe3 - - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387703:objectType=comment - New comment by shpuld - @<a href="https://freezepeach.xyz/user/3458" class="h-card mention" title="&#x5FA1;&#x5712;&#x306F;&#x304F;&#x3044;">hakui</a> @<a href="https://pleroma.soykaf.com/users/lain" class="h-card mention" title="&#x2468; lain &#x2468;">lain</a> you expect anyone to believe that?? - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:28:08+00:00 - 2018-02-23T13:28:08+00:00 - - - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=2f09acf104aebfe3 - - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387639:objectType=comment - New comment by shpuld - @<a href="https://mstdn.io/users/mayuutann" class="h-card mention" title="Mayutan&#x2615;">mayuutann</a> @<a href="https://freezepeach.xyz/user/3458" class="h-card mention" title="&#x5FA1;&#x5712;&#x306F;&#x304F;&#x3044;">hakui</a> pacyuri!! <a href="https://shitposter.club/file/eea140be45df3f993c4533026bf9a78fe8facd296d2fa0c6d02b2e347c5dc30e.jpg" title="https://shitposter.club/file/eea140be45df3f993c4533026bf9a78fe8facd296d2fa0c6d02b2e347c5dc30e.jpg" class="attachment" id="attachment-1589462" rel="nofollow external">https://shitposter.club/attachment/1589462</a> - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:20:38+00:00 - 2018-02-23T13:20:38+00:00 - - - - https://freezepeach.xyz/conversation/4183220 - - - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387611:objectType=comment - New comment by shpuld - @<a href="https://freezepeach.xyz/user/3458" class="h-card mention" title="&#x5FA1;&#x5712;&#x306F;&#x304F;&#x3044;">hakui</a> why is pacyu eating a pizza so cute - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:18:07+00:00 - 2018-02-23T13:18:07+00:00 - - - - https://freezepeach.xyz/conversation/4183220 - - - - - - - - tag:shitposter.club,2018-02-23:fave:5381:comment:7387600:2018-02-23T13:17:52+00:00 - Favorite - shpuld favorited something by mayuutann: <p><span class="h-card"><a href="https://shitposter.club/shpuld" class="u-url mention">@<span>shpuld</span></a></span> <span class="h-card"><a href="https://gs.smuglo.li/histoire" class="u-url mention">@<span>histoire</span></a></span> <span class="h-card"><a href="https://freezepeach.xyz/hakui" class="u-url mention">@<span>hakui</span></a></span> pichu! <a href="https://mstdn.io/media/Crv5eubz1KO0dgBEulI" rel="nofollow"><span class="invisible">https://</span><span class="ellipsis">mstdn.io/media/Crv5eubz1KO0dgB</span><span class="invisible">EulI</span></a></p> - - http://activitystrea.ms/schema/1.0/favorite - 2018-02-23T13:17:52+00:00 - 2018-02-23T13:17:52+00:00 - - http://activitystrea.ms/schema/1.0/comment - https://mstdn.io/users/mayuutann/statuses/99574863865459283 - New comment by mayuutann - <p><span class="h-card"><a href="https://shitposter.club/shpuld" class="u-url mention">@<span>shpuld</span></a></span> <span class="h-card"><a href="https://gs.smuglo.li/histoire" class="u-url mention">@<span>histoire</span></a></span> <span class="h-card"><a href="https://freezepeach.xyz/hakui" class="u-url mention">@<span>hakui</span></a></span> pichu! <a href="https://mstdn.io/media/Crv5eubz1KO0dgBEulI" rel="nofollow"><span class="invisible">https://</span><span class="ellipsis">mstdn.io/media/Crv5eubz1KO0dgB</span><span class="invisible">EulI</span></a></p> - - - - - - - https://freezepeach.xyz/conversation/4182511 - - - - - - - tag:shitposter.club,2018-02-23:fave:5381:comment:7387544:2018-02-23T13:12:43+00:00 - Favorite - shpuld favorited something by mayuutann: <p><span class="h-card"><a href="https://shitposter.club/shpuld" class="u-url mention">@<span>shpuld</span></a></span> wa~~i!! :blobcheer:</p> - - http://activitystrea.ms/schema/1.0/favorite - 2018-02-23T13:12:43+00:00 - 2018-02-23T13:12:43+00:00 - - http://activitystrea.ms/schema/1.0/comment - https://mstdn.io/users/mayuutann/statuses/99574840290947233 - New comment by mayuutann - <p><span class="h-card"><a href="https://shitposter.club/shpuld" class="u-url mention">@<span>shpuld</span></a></span> wa~~i!! :blobcheer:</p> - - - - - - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=d05e2b056274c5ab - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387555:objectType=comment - New comment by shpuld - @<a href="https://freezepeach.xyz/user/3458" class="h-card mention" title="&#x5FA1;&#x5712;&#x306F;&#x304F;&#x3044;">hakui</a> more!! - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:12:23+00:00 - 2018-02-23T13:12:23+00:00 - - - - https://freezepeach.xyz/conversation/4183220 - - - - - - - - tag:shitposter.club,2018-02-23:fave:5381:note:7387537:2018-02-23T13:12:19+00:00 - Favorite - shpuld favorited something by hakui: you have pacyupacyu'd for: 45 minutes 03 seconds - - http://activitystrea.ms/schema/1.0/favorite - 2018-02-23T13:12:19+00:00 - 2018-02-23T13:12:19+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:freezepeach.xyz,2018-02-23:noticeId=6451332:objectType=note - New note by hakui - you have pacyupacyu'd for: 45 minutes 03 seconds - - - - - - - https://freezepeach.xyz/conversation/4183220 - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387539:objectType=comment - New comment by shpuld - @<a href="https://mstdn.io/users/mayuutann" class="h-card mention" title="Mayutan&#x2615;">mayuutann</a> ndndnd~ - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:11:04+00:00 - 2018-02-23T13:11:04+00:00 - - - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=d05e2b056274c5ab - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387518:objectType=comment - New comment by shpuld - @<a href="https://mstdn.io/users/mayuutann" class="h-card mention" title="Mayutan&#x2615;">mayuutann</a> well done! mayumayu is so energetic - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:08:50+00:00 - 2018-02-23T13:08:50+00:00 - - - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=d05e2b056274c5ab - - - - - - - - tag:shitposter.club,2018-02-23:fave:5381:note:7387503:2018-02-23T13:08:00+00:00 - Favorite - shpuld favorited something by mayuutann: <p>done with FIGURE MAT!!<br /> (Posted with IFTTT)</p> - - http://activitystrea.ms/schema/1.0/favorite - 2018-02-23T13:08:00+00:00 - 2018-02-23T13:08:00+00:00 - - http://activitystrea.ms/schema/1.0/note - https://mstdn.io/users/mayuutann/statuses/99574825526201897 - New note by mayuutann - <p>done with FIGURE MAT!!<br /> (Posted with IFTTT)</p> - - - - - - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=c6aaa9b91e8d242f - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387486:objectType=comment - New comment by shpuld - @<a href="https://freezepeach.xyz/user/3458" class="h-card mention" title="&#x5FA1;&#x5712;&#x306F;&#x304F;&#x3044;">hakui</a> @<a href="https://a.weirder.earth/users/mutstd" class="h-card mention" title="Mutant Standard">mutstd</a> @<a href="https://donphan.social/users/Siphonay" class="h-card mention" title="Siphonay">siphonay</a> jokes on you I'm oppressively shitposting myself - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:05:44+00:00 - 2018-02-23T13:05:44+00:00 - - - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=5d306467336c9661 - - - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387466:objectType=comment - New comment by shpuld - @<a href="https://freezepeach.xyz/user/3458" class="h-card mention" title="&#x5FA1;&#x5712;&#x306F;&#x304F;&#x3044;">hakui</a> @<a href="https://a.weirder.earth/users/mutstd" class="h-card mention" title="Mutant Standard">mutstd</a> @<a href="https://donphan.social/users/Siphonay" class="h-card mention" title="Siphonay">siphonay</a> how does it feel being hostile - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:04:10+00:00 - 2018-02-23T13:04:10+00:00 - - - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=5d306467336c9661 - - - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387459:objectType=comment - New comment by shpuld - @<a href="https://freezepeach.xyz/user/3458" class="h-card mention" title="&#x5FA1;&#x5712;&#x306F;&#x304F;&#x3044;">hakui</a> gorogoro - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:03:32+00:00 - 2018-02-23T13:03:32+00:00 - - - - https://freezepeach.xyz/conversation/4181784 - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387432:objectType=comment - New comment by shpuld - @<a href="https://freezepeach.xyz/user/3458" class="h-card mention" title="&#x5FA1;&#x5712;&#x306F;&#x304F;&#x3044;">hakui</a> ndnd - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:02:05+00:00 - 2018-02-23T13:02:05+00:00 - - - - https://freezepeach.xyz/conversation/4181784 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2018-02-23:noticeId=7387367:objectType=note - New note by shpuld - dear diary: I'm trying to do work but I can only think of tenshi eating a corndog - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T12:56:03+00:00 - 2018-02-23T12:56:03+00:00 - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=57f316da416743fc - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2018-02-23:noticeId=7387354:objectType=note - New note by shpuld - jesus christ it's such a fridey at work - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T12:53:50+00:00 - 2018-02-23T12:53:50+00:00 - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=c05eb5e91bdcbdb7 - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387343:objectType=comment - New comment by shpuld - @<a href="https://gs.smuglo.li/user/589" class="h-card mention" title="&#x16DE;&#x16A9;&#x16B3;&#x16C1;&#x16DE;&#x16A9;&#x16B3;&#x16C1;">dokidoki</a> give them free upgrades to krokodil - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T12:53:15+00:00 - 2018-02-23T12:53:15+00:00 - - - - https://gs.smuglo.li/conversation/3934774 - - - - - - - diff --git a/test/fixtures/unfollow.xml b/test/fixtures/unfollow.xml deleted file mode 100644 index 7a8f8fd2e..000000000 --- a/test/fixtures/unfollow.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-05-07T09:54:49+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - undo:tag:social.heldscal.la,2017-05-07:subscription:23211:person:44803:2017-05-07T09:54:48+00:00 - Constance Variable (lambadalambda@social.heldscal.la)'s status on Sunday, 07-May-2017 09:54:49 UTC - <a href="https://social.heldscal.la/lambadalambda">Constance Variable</a> stopped following <a href="https://pawoo.net/@pekorino">mono</a>. - - http://activitystrea.ms/schema/1.0/unfollow - 2017-05-07T09:54:49+00:00 - 2017-05-07T09:54:49+00:00 - - http://activitystrea.ms/schema/1.0/person - https://pawoo.net/users/pekorino - mono - http://shitposter.club/mono 孤独のグルメ - - - - - pekorino - mono - http://shitposter.club/mono 孤独のグルメ - - - tag:social.heldscal.la,2017-05-07:objectType=thread:nonce=6e80caf94e03029f - - - - - - diff --git a/test/support/http_request_mock.ex b/test/support/http_request_mock.ex index a0ebf65d9..344e27f13 100644 --- a/test/support/http_request_mock.ex +++ b/test/support/http_request_mock.ex @@ -103,14 +103,6 @@ def get( }} end - def get("https://mastodon.social/users/emelie.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/emelie.atom") - }} - end - def get( "https://osada.macgirvin.com/.well-known/webfinger?resource=acct:mike@osada.macgirvin.com", _, @@ -137,14 +129,6 @@ def get( }} end - def get("https://pawoo.net/users/pekorino.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/https___pawoo.net_users_pekorino.atom") - }} - end - def get( "https://pawoo.net/.well-known/webfinger?resource=acct:https://pawoo.net/users/pekorino", _, @@ -158,19 +142,6 @@ def get( }} end - def get( - "https://social.stopwatchingus-heidelberg.de/api/statuses/user_timeline/18330.atom", - _, - _, - _ - ) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/atarifrosch_feed.xml") - }} - end - def get( "https://social.stopwatchingus-heidelberg.de/.well-known/webfinger?resource=acct:https://social.stopwatchingus-heidelberg.de/user/18330", _, @@ -184,27 +155,6 @@ def get( }} end - def get("https://mamot.fr/users/Skruyb.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/https___mamot.fr_users_Skruyb.atom") - }} - end - - def get( - "https://mamot.fr/.well-known/webfinger?resource=acct:https://mamot.fr/users/Skruyb", - _, - _, - [{"accept", "application/xrd+xml,application/jrd+json"}] - ) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/skruyb@mamot.fr.atom") - }} - end - def get( "https://social.heldscal.la/.well-known/webfinger?resource=nonexistant@social.heldscal.la", _, @@ -507,19 +457,6 @@ def get("https://mamot.fr/.well-known/host-meta", _, _, _) do }} end - def get( - "https://mamot.fr/.well-known/webfinger?resource=https://mamot.fr/users/Skruyb", - _, - _, - _ - ) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/skruyb@mamot.fr.atom") - }} - end - def get("http://pawoo.net/.well-known/host-meta", _, _, _) do {:ok, %Tesla.Env{ @@ -647,17 +584,6 @@ def get( }} end - def get("https://pleroma.soykaf.com/users/lain/feed.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: - File.read!( - "test/fixtures/tesla_mock/https___pleroma.soykaf.com_users_lain_feed.atom.xml" - ) - }} - end - def get(url, _, _, [{"accept", "application/xrd+xml,application/jrd+json"}]) when url in [ "https://pleroma.soykaf.com/.well-known/webfinger?resource=acct:https://pleroma.soykaf.com/users/lain", @@ -670,17 +596,6 @@ def get(url, _, _, [{"accept", "application/xrd+xml,application/jrd+json"}]) }} end - def get("https://shitposter.club/api/statuses/user_timeline/1.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: - File.read!( - "test/fixtures/tesla_mock/https___shitposter.club_api_statuses_user_timeline_1.atom.xml" - ) - }} - end - def get( "https://shitposter.club/.well-known/webfinger?resource=https://shitposter.club/user/1", _, @@ -694,37 +609,10 @@ def get( }} end - def get("https://shitposter.club/notice/2827873", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/https___shitposter.club_notice_2827873.json") - }} - end - - def get("https://shitposter.club/api/statuses/show/2827873.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: - File.read!( - "test/fixtures/tesla_mock/https___shitposter.club_api_statuses_show_2827873.atom.xml" - ) - }} - end - def get("https://testing.pleroma.lol/objects/b319022a-4946-44c5-9de9-34801f95507b", _, _, _) do {:ok, %Tesla.Env{status: 200}} end - def get("https://shitposter.club/api/statuses/user_timeline/5381.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/spc_5381.atom") - }} - end - def get( "https://shitposter.club/.well-known/webfinger?resource=https://shitposter.club/user/5381", _, @@ -746,14 +634,6 @@ def get("http://shitposter.club/.well-known/host-meta", _, _, _) do }} end - def get("https://shitposter.club/api/statuses/show/7369654.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/7369654.atom") - }} - end - def get("https://shitposter.club/notice/4027863", _, _, _) do {:ok, %Tesla.Env{ @@ -762,14 +642,6 @@ def get("https://shitposter.club/notice/4027863", _, _, _) do }} end - def get("https://social.sakamoto.gq/users/eal/feed.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/sakamoto_eal_feed.atom") - }} - end - def get("http://social.sakamoto.gq/.well-known/host-meta", _, _, _) do {:ok, %Tesla.Env{ @@ -791,15 +663,6 @@ def get( }} end - def get( - "https://social.sakamoto.gq/objects/0ccc1a2c-66b0-4305-b23a-7f7f2b040056", - _, - _, - [{"accept", "application/atom+xml"}] - ) do - {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/sakamoto.atom")}} - end - def get("http://mastodon.social/.well-known/host-meta", _, _, _) do {:ok, %Tesla.Env{ @@ -853,28 +716,6 @@ def get( {:ok, %Tesla.Env{status: 406, body: ""}} end - def get("http://gs.example.org/index.php/api/statuses/user_timeline/1.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: - File.read!( - "test/fixtures/tesla_mock/http__gs.example.org_index.php_api_statuses_user_timeline_1.atom.xml" - ) - }} - end - - def get("https://social.heldscal.la/api/statuses/user_timeline/29191.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: - File.read!( - "test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_29191.atom.xml" - ) - }} - end - def get("http://squeet.me/.well-known/host-meta", _, _, _) do {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/squeet.me_host_meta")}} @@ -996,17 +837,6 @@ def get( }} end - def get("https://social.heldscal.la/api/statuses/user_timeline/23211.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: - File.read!( - "test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_23211.atom.xml" - ) - }} - end - def get( "https://social.heldscal.la/.well-known/webfinger?resource=https://social.heldscal.la/user/23211", _, @@ -1036,10 +866,6 @@ def get("https://social.heldscal.la/.well-known/host-meta", _, _, _) do }} end - def get("https://mastodon.social/users/lambadalambda.atom", _, _, _) do - {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/lambadalambda.atom")}} - end - def get("https://mastodon.social/users/lambadalambda", _, _, _) do {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/lambadalambda.json")}} end diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 6e096e9ec..cc55a7be7 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -105,7 +105,7 @@ test "it fetches reply-to activities if we don't have them" do object = data["object"] - |> Map.put("inReplyTo", "https://shitposter.club/notice/2827873") + |> Map.put("inReplyTo", "https://mstdn.io/users/mayuutann/statuses/99568293732299394") data = Map.put(data, "object", object) {:ok, returned_activity} = Transmogrifier.handle_incoming(data) @@ -113,11 +113,11 @@ test "it fetches reply-to activities if we don't have them" do assert activity = Activity.get_create_by_object_ap_id( - "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" + "https://mstdn.io/users/mayuutann/statuses/99568293732299394" ) assert returned_object.data["inReplyTo"] == - "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" + "https://mstdn.io/users/mayuutann/statuses/99568293732299394" end test "it does not fetch reply-to activities beyond max replies depth limit" do @@ -1104,17 +1104,17 @@ test "returns modified object when allowed incoming reply", %{data: data} do Map.put( data["object"], "inReplyTo", - "https://shitposter.club/notice/2827873" + "https://mstdn.io/users/mayuutann/statuses/99568293732299394" ) Pleroma.Config.put([:instance, :federation_incoming_replies_max_depth], 5) modified_object = Transmogrifier.fix_in_reply_to(object_with_reply) assert modified_object["inReplyTo"] == - "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" + "https://mstdn.io/users/mayuutann/statuses/99568293732299394" assert modified_object["context"] == - "tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26" + "tag:shitposter.club,2018-02-22:objectType=thread:nonce=e5a7c72d60a9c0e4" end end @@ -1216,7 +1216,9 @@ test "returns nil when cannot normalize object" do @tag capture_log: true test "returns {:ok, %Object{}} for success case" do assert {:ok, %Object{}} = - Transmogrifier.get_obj_helper("https://shitposter.club/notice/2827873") + Transmogrifier.get_obj_helper( + "https://mstdn.io/users/mayuutann/statuses/99568293732299394" + ) end end diff --git a/test/web/mastodon_api/controllers/search_controller_test.exs b/test/web/mastodon_api/controllers/search_controller_test.exs index 24d1959f8..04dc6f445 100644 --- a/test/web/mastodon_api/controllers/search_controller_test.exs +++ b/test/web/mastodon_api/controllers/search_controller_test.exs @@ -282,18 +282,18 @@ test "search fetches remote statuses and prefers them over other results", %{con capture_log(fn -> {:ok, %{id: activity_id}} = CommonAPI.post(insert(:user), %{ - status: "check out https://shitposter.club/notice/2827873" + status: "check out http://mastodon.example.org/@admin/99541947525187367" }) results = conn - |> get("/api/v1/search?q=https://shitposter.club/notice/2827873") + |> get("/api/v1/search?q=http://mastodon.example.org/@admin/99541947525187367") |> json_response_and_validate_schema(200) - [status, %{"id" => ^activity_id}] = results["statuses"] - - assert status["uri"] == - "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" + assert [ + %{"url" => "http://mastodon.example.org/@admin/99541947525187367"}, + %{"id" => ^activity_id} + ] = results["statuses"] end) end From acf6393c87c776c0fab9fd41bbf5ba7078356be5 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 8 Sep 2020 20:13:00 +0300 Subject: [PATCH 137/460] SECURITY.md: we don't support 2.0 anymore, bump to 2.1 --- SECURITY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SECURITY.md b/SECURITY.md index c212a2505..8617c1434 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -6,7 +6,7 @@ Currently, Pleroma offers bugfixes and security patches only for the latest mino | Version | Support |---------| -------- -| 2.0 | Bugfixes and security patches +| 2.1 | Bugfixes and security patches ## Reporting a vulnerability From a781ac6ca5b7ab23eea795331db0a3fff406630e Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Wed, 10 Jun 2020 15:37:43 +0400 Subject: [PATCH 138/460] Fix atom leak in AdminAPIController --- lib/pleroma/web/admin_api/controllers/admin_api_controller.ex | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex b/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex index aa2af1ab5..f5e4d49f9 100644 --- a/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex @@ -379,8 +379,7 @@ defp maybe_parse_filters(filters) do filters |> String.split(",") |> Enum.filter(&Enum.member?(@filters, &1)) - |> Enum.map(&String.to_atom/1) - |> Map.new(&{&1, true}) + |> Map.new(&{String.to_existing_atom(&1), true}) end def right_add_multiple(%{assigns: %{user: admin}} = conn, %{ From 10ef532c63431811b3998ed7b14aea21755a2b57 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 7 Jul 2020 07:06:29 +0200 Subject: [PATCH 139/460] AP C2S: Restrict character limit on Note --- .../activity_pub/activity_pub_controller.ex | 35 ++++++++++++------- .../activity_pub_controller_test.exs | 16 +++++++++ 2 files changed, 38 insertions(+), 13 deletions(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index 220c4fe52..732c44271 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -399,21 +399,30 @@ def read_inbox(%{assigns: %{user: %User{nickname: as_nickname}}} = conn, %{ defp handle_user_activity( %User{} = user, - %{"type" => "Create", "object" => %{"type" => "Note"}} = params + %{"type" => "Create", "object" => %{"type" => "Note"} = object} = params ) do - object = - params["object"] - |> Map.merge(Map.take(params, ["to", "cc"])) - |> Map.put("attributedTo", user.ap_id()) - |> Transmogrifier.fix_object() + content = if is_binary(object["content"]), do: object["content"], else: "" + name = if is_binary(object["name"]), do: object["name"], else: "" + summary = if is_binary(object["summary"]), do: object["summary"], else: "" + length = String.length(content <> name <> summary) - ActivityPub.create(%{ - to: params["to"], - actor: user, - context: object["context"], - object: object, - additional: Map.take(params, ["cc"]) - }) + if length > Pleroma.Config.get([:instance, :limit]) do + {:error, dgettext("errors", "Note is over the character limit")} + else + object = + object + |> Map.merge(Map.take(params, ["to", "cc"])) + |> Map.put("attributedTo", user.ap_id()) + |> Transmogrifier.fix_object() + + ActivityPub.create(%{ + to: params["to"], + actor: user, + context: object["context"], + object: object, + additional: Map.take(params, ["cc"]) + }) + end end defp handle_user_activity(%User{} = user, %{"type" => "Delete"} = params) do diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index 57988dc1e..0517571f2 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -905,6 +905,8 @@ test "it requires authentication if instance is NOT federating", %{ end describe "POST /users/:nickname/outbox (C2S)" do + setup do: clear_config([:instance, :limit]) + setup do [ activity: %{ @@ -1121,6 +1123,20 @@ test "it doesn't spreads faulty attributedTo or actor fields", %{ assert cirno_object.data["actor"] == cirno.ap_id assert cirno_object.data["attributedTo"] == cirno.ap_id end + + test "Character limitation", %{conn: conn, activity: activity} do + Pleroma.Config.put([:instance, :limit], 5) + user = insert(:user) + + result = + conn + |> assign(:user, user) + |> put_req_header("content-type", "application/activity+json") + |> post("/users/#{user.nickname}/outbox", activity) + |> json_response(400) + + assert result == "Note is over the character limit" + end end describe "/relay/followers" do From 16c451f8f15b1b2907fb6fc40925b47821650f31 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Wed, 2 Sep 2020 20:11:24 +0200 Subject: [PATCH 140/460] search: Apply following filter only when user is usable --- lib/pleroma/user/search.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/user/search.ex b/lib/pleroma/user/search.ex index adbef7fb8..7babd47ea 100644 --- a/lib/pleroma/user/search.ex +++ b/lib/pleroma/user/search.ex @@ -115,8 +115,8 @@ defp trigram_rank(query, query_string) do ) end - defp base_query(_user, false), do: User - defp base_query(user, true), do: User.get_friends_query(user) + defp base_query(%User{} = user, true), do: User.get_friends_query(user) + defp base_query(_user, _following), do: User defp filter_invisible_users(query) do from(q in query, where: q.invisible == false) From 947ee55ae298a42c2667800c1aac96f637e31969 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Wed, 2 Sep 2020 20:24:03 +0200 Subject: [PATCH 141/460] user: harden get_friends_query(), get_followers_query() and their wrappers --- lib/pleroma/user.ex | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 94c96de8d..f323fc6ed 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1125,31 +1125,31 @@ def get_followers_query(%User{} = user, nil) do User.Query.build(%{followers: user, deactivated: false}) end - def get_followers_query(user, page) do + def get_followers_query(%User{} = user, page) do user |> get_followers_query(nil) |> User.Query.paginate(page, 20) end @spec get_followers_query(User.t()) :: Ecto.Query.t() - def get_followers_query(user), do: get_followers_query(user, nil) + def get_followers_query(%User{} = user), do: get_followers_query(user, nil) @spec get_followers(User.t(), pos_integer() | nil) :: {:ok, list(User.t())} - def get_followers(user, page \\ nil) do + def get_followers(%User{} = user, page \\ nil) do user |> get_followers_query(page) |> Repo.all() end @spec get_external_followers(User.t(), pos_integer() | nil) :: {:ok, list(User.t())} - def get_external_followers(user, page \\ nil) do + def get_external_followers(%User{} = user, page \\ nil) do user |> get_followers_query(page) |> User.Query.build(%{external: true}) |> Repo.all() end - def get_followers_ids(user, page \\ nil) do + def get_followers_ids(%User{} = user, page \\ nil) do user |> get_followers_query(page) |> select([u], u.id) @@ -1161,29 +1161,29 @@ def get_friends_query(%User{} = user, nil) do User.Query.build(%{friends: user, deactivated: false}) end - def get_friends_query(user, page) do + def get_friends_query(%User{} = user, page) do user |> get_friends_query(nil) |> User.Query.paginate(page, 20) end @spec get_friends_query(User.t()) :: Ecto.Query.t() - def get_friends_query(user), do: get_friends_query(user, nil) + def get_friends_query(%User{} = user), do: get_friends_query(user, nil) - def get_friends(user, page \\ nil) do + def get_friends(%User{} = user, page \\ nil) do user |> get_friends_query(page) |> Repo.all() end - def get_friends_ap_ids(user) do + def get_friends_ap_ids(%User{} = user) do user |> get_friends_query(nil) |> select([u], u.ap_id) |> Repo.all() end - def get_friends_ids(user, page \\ nil) do + def get_friends_ids(%User{} = user, page \\ nil) do user |> get_friends_query(page) |> select([u], u.id) From 630444ee0819ad5b58c5f9030758fe41e6fed530 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 31 Aug 2020 14:19:48 -0500 Subject: [PATCH 142/460] Do not make RelMe metadata provider optional. There's really no sound reason to turn this off anyway. --- config/config.exs | 1 - lib/pleroma/web/metadata.ex | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/config.exs b/config/config.exs index 2426fbd52..df61c069e 100644 --- a/config/config.exs +++ b/config/config.exs @@ -455,7 +455,6 @@ providers: [ Pleroma.Web.Metadata.Providers.OpenGraph, Pleroma.Web.Metadata.Providers.TwitterCard, - Pleroma.Web.Metadata.Providers.RelMe, Pleroma.Web.Metadata.Providers.Feed ], unfurl_nsfw: false diff --git a/lib/pleroma/web/metadata.ex b/lib/pleroma/web/metadata.ex index a9f70c43e..e45e74e7b 100644 --- a/lib/pleroma/web/metadata.ex +++ b/lib/pleroma/web/metadata.ex @@ -7,7 +7,8 @@ defmodule Pleroma.Web.Metadata do def build_tags(params) do providers = [ - Pleroma.Web.Metadata.Providers.RestrictIndexing + Pleroma.Web.Metadata.Providers.RestrictIndexing, + Pleroma.Web.Metadata.Providers.RelMe, | Pleroma.Config.get([__MODULE__, :providers], []) ] From ff07014b2657730101e826d7e82716989d43214c Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 31 Aug 2020 14:35:22 -0500 Subject: [PATCH 143/460] Disable providers of user and status metadata when instance is private --- CHANGELOG.md | 3 +++ lib/pleroma/web/metadata.ex | 12 ++++++++++-- test/web/metadata/metadata_test.exs | 9 +++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f57e191fa..496c78ffe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## unreleased-patch - ??? +### Security +- Fix metadata leak for accounts and statuses on private instances + ### Added - Rich media failure tracking (along with `:failure_backoff` option) diff --git a/lib/pleroma/web/metadata.ex b/lib/pleroma/web/metadata.ex index e45e74e7b..0f0b56321 100644 --- a/lib/pleroma/web/metadata.ex +++ b/lib/pleroma/web/metadata.ex @@ -8,8 +8,8 @@ defmodule Pleroma.Web.Metadata do def build_tags(params) do providers = [ Pleroma.Web.Metadata.Providers.RestrictIndexing, - Pleroma.Web.Metadata.Providers.RelMe, - | Pleroma.Config.get([__MODULE__, :providers], []) + Pleroma.Web.Metadata.Providers.RelMe + | activated_providers() ] Enum.reduce(providers, "", fn parser, acc -> @@ -43,4 +43,12 @@ def activity_nsfw?(%{data: %{"sensitive" => sensitive}}) do def activity_nsfw?(_) do false end + + defp activated_providers do + if Pleroma.Config.get!([:instance, :public]) do + Pleroma.Config.get([__MODULE__, :providers], []) + else + [] + end + end end diff --git a/test/web/metadata/metadata_test.exs b/test/web/metadata/metadata_test.exs index 3f8b29e58..4dd0d2f5c 100644 --- a/test/web/metadata/metadata_test.exs +++ b/test/web/metadata/metadata_test.exs @@ -22,4 +22,13 @@ test "for local user" do "" end end + + describe "no metadata for private instances" do + test "for local user" do + Pleroma.Config.put([:instance, :public], false) + user = insert(:user, bio: "This is my secret fedi account bio") + + assert "" = Pleroma.Web.Metadata.build_tags(%{user: user}) + end + end end From 14d07081fd82211071eafb3c31d8c756fe9af9f5 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 31 Aug 2020 14:48:22 -0500 Subject: [PATCH 144/460] Feed provider only generates a redirect, so always activate it. Making this configurable is misleading. --- config/config.exs | 3 +-- lib/pleroma/web/metadata.ex | 5 +++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/config.exs b/config/config.exs index df61c069e..1a2b312b5 100644 --- a/config/config.exs +++ b/config/config.exs @@ -454,8 +454,7 @@ config :pleroma, Pleroma.Web.Metadata, providers: [ Pleroma.Web.Metadata.Providers.OpenGraph, - Pleroma.Web.Metadata.Providers.TwitterCard, - Pleroma.Web.Metadata.Providers.Feed + Pleroma.Web.Metadata.Providers.TwitterCard ], unfurl_nsfw: false diff --git a/lib/pleroma/web/metadata.ex b/lib/pleroma/web/metadata.ex index 0f0b56321..926b5b187 100644 --- a/lib/pleroma/web/metadata.ex +++ b/lib/pleroma/web/metadata.ex @@ -7,8 +7,9 @@ defmodule Pleroma.Web.Metadata do def build_tags(params) do providers = [ - Pleroma.Web.Metadata.Providers.RestrictIndexing, - Pleroma.Web.Metadata.Providers.RelMe + Pleroma.Web.Metadata.Providers.Feed, + Pleroma.Web.Metadata.Providers.RelMe, + Pleroma.Web.Metadata.Providers.RestrictIndexing | activated_providers() ] From 44ced17634a9c89b9ff4a47c64805356f7f6401c Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 31 Aug 2020 15:54:22 -0500 Subject: [PATCH 145/460] Fix test so setting doesn't leak --- test/web/metadata/metadata_test.exs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/web/metadata/metadata_test.exs b/test/web/metadata/metadata_test.exs index 4dd0d2f5c..f7371cae2 100644 --- a/test/web/metadata/metadata_test.exs +++ b/test/web/metadata/metadata_test.exs @@ -24,6 +24,8 @@ test "for local user" do end describe "no metadata for private instances" do + setup do: clear_config([:instance, :public]) + test "for local user" do Pleroma.Config.put([:instance, :public], false) user = insert(:user, bio: "This is my secret fedi account bio") From a85ed6defbd2cec71d9a5594ef1de18d5333c7c7 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 31 Aug 2020 15:58:21 -0500 Subject: [PATCH 146/460] Do not serve RSS/Atom feeds when instance is private --- lib/pleroma/web/feed/tag_controller.ex | 10 +++++++++- lib/pleroma/web/feed/user_controller.ex | 10 +++++++++- lib/pleroma/web/metadata/feed.ex | 20 ++++++++++++-------- test/web/feed/tag_controller_test.exs | 13 +++++++++++++ test/web/feed/user_controller_test.exs | 16 ++++++++++++++++ 5 files changed, 59 insertions(+), 10 deletions(-) diff --git a/lib/pleroma/web/feed/tag_controller.ex b/lib/pleroma/web/feed/tag_controller.ex index 39b2a766a..e090dd625 100644 --- a/lib/pleroma/web/feed/tag_controller.ex +++ b/lib/pleroma/web/feed/tag_controller.ex @@ -9,7 +9,15 @@ defmodule Pleroma.Web.Feed.TagController do alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.Feed.FeedView - def feed(conn, %{"tag" => raw_tag} = params) do + def feed(conn, params) do + if Pleroma.Config.get!([:instance, :public]) do + render_feed(conn, params) + else + render_error(conn, :not_found, "Not found") + end + end + + def render_feed(conn, %{"tag" => raw_tag} = params) do {format, tag} = parse_tag(raw_tag) activities = diff --git a/lib/pleroma/web/feed/user_controller.ex b/lib/pleroma/web/feed/user_controller.ex index 9cd334a33..595889b9d 100644 --- a/lib/pleroma/web/feed/user_controller.ex +++ b/lib/pleroma/web/feed/user_controller.ex @@ -37,7 +37,15 @@ def feed_redirect(conn, %{"nickname" => nickname}) do end end - def feed(conn, %{"nickname" => nickname} = params) do + def feed(conn, params) do + if Pleroma.Config.get!([:instance, :public]) do + render_feed(conn, params) + else + errors(conn, {:error, :not_found}) + end + end + + def render_feed(conn, %{"nickname" => nickname} = params) do format = get_format(conn) format = diff --git a/lib/pleroma/web/metadata/feed.ex b/lib/pleroma/web/metadata/feed.ex index bd1459a17..dfe391b56 100644 --- a/lib/pleroma/web/metadata/feed.ex +++ b/lib/pleroma/web/metadata/feed.ex @@ -11,13 +11,17 @@ defmodule Pleroma.Web.Metadata.Providers.Feed do @impl Provider def build_tags(%{user: user}) do - [ - {:link, - [ - rel: "alternate", - type: "application/atom+xml", - href: Helpers.user_feed_path(Endpoint, :feed, user.nickname) <> ".atom" - ], []} - ] + if Pleroma.Config.get!([:instance, :public]) do + [ + {:link, + [ + rel: "alternate", + type: "application/atom+xml", + href: Helpers.user_feed_path(Endpoint, :feed, user.nickname) <> ".atom" + ], []} + ] + else + [] + end end end diff --git a/test/web/feed/tag_controller_test.exs b/test/web/feed/tag_controller_test.exs index 3c29cd94f..868e40965 100644 --- a/test/web/feed/tag_controller_test.exs +++ b/test/web/feed/tag_controller_test.exs @@ -181,4 +181,17 @@ test "gets a feed (RSS)", %{conn: conn} do 'yeah #PleromaArt' ] end + + describe "private instance" do + setup do: clear_config([:instance, :public]) + + test "returns 404 for tags feed", %{conn: conn} do + Config.put([:instance, :public], false) + + conn + |> put_req_header("accept", "application/rss+xml") + |> get(tag_feed_path(conn, :feed, "pleromaart")) + |> response(404) + end + end end diff --git a/test/web/feed/user_controller_test.exs b/test/web/feed/user_controller_test.exs index 0d2a61967..9a5610baa 100644 --- a/test/web/feed/user_controller_test.exs +++ b/test/web/feed/user_controller_test.exs @@ -246,4 +246,20 @@ test "with non-html / non-json format, it returns error when user is not found", assert response == ~S({"error":"Not found"}) end end + + describe "private instance" do + setup do: clear_config([:instance, :public]) + + test "returns 404 for user feed", %{conn: conn} do + Config.put([:instance, :public], false) + user = insert(:user) + + {:ok, _} = CommonAPI.post(user, %{status: "test"}) + + assert conn + |> put_req_header("accept", "application/atom+xml") + |> get(user_feed_path(conn, :feed, user.nickname)) + |> response(404) + end + end end From 96697db3bc4d8fda90906cdeff77ae2668066bd4 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 31 Aug 2020 16:11:01 -0500 Subject: [PATCH 147/460] RelMe and Feed no longer configurable --- docs/configuration/cheatsheet.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index bffce95e7..ec59896ec 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -353,8 +353,6 @@ config :pleroma, Pleroma.Web.MediaProxy.Invalidation.Http, * `providers`: a list of metadata providers to enable. Providers available: * `Pleroma.Web.Metadata.Providers.OpenGraph` * `Pleroma.Web.Metadata.Providers.TwitterCard` - * `Pleroma.Web.Metadata.Providers.RelMe` - add links from user bio with rel=me into the `
` as ``. - * `Pleroma.Web.Metadata.Providers.Feed` - add a link to a user's Atom feed into the `
` as ``. * `unfurl_nsfw`: If set to `true` nsfw attachments will be shown in previews. ### :rich_media (consumer) From 549c895d80f36109731565abf00303a7f80add21 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 31 Aug 2020 16:11:13 -0500 Subject: [PATCH 148/460] Document breaking change for metadata providers --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 496c78ffe..512547427 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## unreleased-patch - ??? +### Changed + +- **Breaking:** The metadata providers RelMe and Feed are no longer configurable. RelMe should always be activated and Feed only provides a header tag for the actual RSS/Atom feed when the instance is public. + ### Security - Fix metadata leak for accounts and statuses on private instances From 2011142ed9ae45f53496b3682da7114255c814a5 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 1 Sep 2020 10:43:44 -0500 Subject: [PATCH 149/460] Use :restrict_unauthenticated testing for more granular control --- lib/pleroma/web/feed/tag_controller.ex | 2 +- lib/pleroma/web/feed/user_controller.ex | 2 +- lib/pleroma/web/metadata.ex | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/feed/tag_controller.ex b/lib/pleroma/web/feed/tag_controller.ex index e090dd625..93a8294b7 100644 --- a/lib/pleroma/web/feed/tag_controller.ex +++ b/lib/pleroma/web/feed/tag_controller.ex @@ -10,7 +10,7 @@ defmodule Pleroma.Web.Feed.TagController do alias Pleroma.Web.Feed.FeedView def feed(conn, params) do - if Pleroma.Config.get!([:instance, :public]) do + unless Pleroma.Config.restrict_unauthenticated_access?(:activities, :local) do render_feed(conn, params) else render_error(conn, :not_found, "Not found") diff --git a/lib/pleroma/web/feed/user_controller.ex b/lib/pleroma/web/feed/user_controller.ex index 595889b9d..71eb1ea7e 100644 --- a/lib/pleroma/web/feed/user_controller.ex +++ b/lib/pleroma/web/feed/user_controller.ex @@ -38,7 +38,7 @@ def feed_redirect(conn, %{"nickname" => nickname}) do end def feed(conn, params) do - if Pleroma.Config.get!([:instance, :public]) do + unless Pleroma.Config.restrict_unauthenticated_access?(:profiles, :local) do render_feed(conn, params) else errors(conn, {:error, :not_found}) diff --git a/lib/pleroma/web/metadata.ex b/lib/pleroma/web/metadata.ex index 926b5b187..68835c826 100644 --- a/lib/pleroma/web/metadata.ex +++ b/lib/pleroma/web/metadata.ex @@ -46,7 +46,7 @@ def activity_nsfw?(_) do end defp activated_providers do - if Pleroma.Config.get!([:instance, :public]) do + unless Pleroma.Config.restrict_unauthenticated_access?(:activities, :local) do Pleroma.Config.get([__MODULE__, :providers], []) else [] From 0d2814ec8e41942cd5b056d9c1ed902be1e1773c Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 7 Sep 2020 15:06:06 +0300 Subject: [PATCH 150/460] Metadata: Move restriction check from Feed provider to activated_providers --- lib/pleroma/web/metadata.ex | 3 +-- lib/pleroma/web/metadata/feed.ex | 20 ++++++++------------ test/web/metadata/metadata_test.exs | 4 +--- 3 files changed, 10 insertions(+), 17 deletions(-) diff --git a/lib/pleroma/web/metadata.ex b/lib/pleroma/web/metadata.ex index 68835c826..0f2d8d1e7 100644 --- a/lib/pleroma/web/metadata.ex +++ b/lib/pleroma/web/metadata.ex @@ -7,7 +7,6 @@ defmodule Pleroma.Web.Metadata do def build_tags(params) do providers = [ - Pleroma.Web.Metadata.Providers.Feed, Pleroma.Web.Metadata.Providers.RelMe, Pleroma.Web.Metadata.Providers.RestrictIndexing | activated_providers() @@ -47,7 +46,7 @@ def activity_nsfw?(_) do defp activated_providers do unless Pleroma.Config.restrict_unauthenticated_access?(:activities, :local) do - Pleroma.Config.get([__MODULE__, :providers], []) + [Pleroma.Web.Metadata.Providers.Feed | Pleroma.Config.get([__MODULE__, :providers], [])] else [] end diff --git a/lib/pleroma/web/metadata/feed.ex b/lib/pleroma/web/metadata/feed.ex index dfe391b56..bd1459a17 100644 --- a/lib/pleroma/web/metadata/feed.ex +++ b/lib/pleroma/web/metadata/feed.ex @@ -11,17 +11,13 @@ defmodule Pleroma.Web.Metadata.Providers.Feed do @impl Provider def build_tags(%{user: user}) do - if Pleroma.Config.get!([:instance, :public]) do - [ - {:link, - [ - rel: "alternate", - type: "application/atom+xml", - href: Helpers.user_feed_path(Endpoint, :feed, user.nickname) <> ".atom" - ], []} - ] - else - [] - end + [ + {:link, + [ + rel: "alternate", + type: "application/atom+xml", + href: Helpers.user_feed_path(Endpoint, :feed, user.nickname) <> ".atom" + ], []} + ] end end diff --git a/test/web/metadata/metadata_test.exs b/test/web/metadata/metadata_test.exs index f7371cae2..9d3121b7b 100644 --- a/test/web/metadata/metadata_test.exs +++ b/test/web/metadata/metadata_test.exs @@ -24,10 +24,8 @@ test "for local user" do end describe "no metadata for private instances" do - setup do: clear_config([:instance, :public]) - test "for local user" do - Pleroma.Config.put([:instance, :public], false) + clear_config([:instance, :public], false) user = insert(:user, bio: "This is my secret fedi account bio") assert "" = Pleroma.Web.Metadata.build_tags(%{user: user}) From 23ca5f75afa7369ff52772c39dc3324e9402b230 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 8 Sep 2020 16:39:08 -0500 Subject: [PATCH 151/460] Make it possible to bulk send confirmation emails to all unconfirmed users --- docs/administration/CLI_tasks/email.md | 16 +++++++++++++++- lib/mix/tasks/pleroma/email.ex | 19 ++++++++++++++++++- lib/pleroma/user/query.ex | 4 ++++ 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/docs/administration/CLI_tasks/email.md b/docs/administration/CLI_tasks/email.md index 00d2e74f8..439ea877a 100644 --- a/docs/administration/CLI_tasks/email.md +++ b/docs/administration/CLI_tasks/email.md @@ -1,4 +1,4 @@ -# Managing emails +# E-Mail administration tasks {! backend/administration/CLI_tasks/general_cli_task_info.include !} @@ -30,3 +30,17 @@ Example: ```sh mix pleroma.email test --to root@example.org ``` + +## Send confirmation emails to all unconfirmed user accounts + +=== "OTP" + + ```sh + ./bin/pleroma_ctl email send_confirmation_mails + ``` + +=== "From Source" + + ```sh + mix pleroma.email send_confirmation_mails + ``` diff --git a/lib/mix/tasks/pleroma/email.ex b/lib/mix/tasks/pleroma/email.ex index d3fac6ec8..61d431971 100644 --- a/lib/mix/tasks/pleroma/email.ex +++ b/lib/mix/tasks/pleroma/email.ex @@ -2,7 +2,7 @@ defmodule Mix.Tasks.Pleroma.Email do use Mix.Task import Mix.Pleroma - @shortdoc "Simple Email test" + @shortdoc "Email administrative tasks" @moduledoc File.read!("docs/administration/CLI_tasks/email.md") def run(["test" | args]) do @@ -21,4 +21,21 @@ def run(["test" | args]) do shell_info("Test email has been sent to #{inspect(email.to)} from #{inspect(email.from)}") end + + def run(["resend_confirmation_emails"]) do + start_pleroma() + + Pleroma.User.Query.build(%{ + local: true, + deactivated: false, + confirmation_pending: true, + invisible: false + }) + |> Pleroma.RepoStreamer.chunk_stream(500) + |> Stream.each(fn users -> + users + |> Enum.each(fn user -> Pleroma.User.send_confirmation_email(user) end) + end) + |> Stream.run() + end end diff --git a/lib/pleroma/user/query.ex b/lib/pleroma/user/query.ex index d618432ff..f59ca6f9c 100644 --- a/lib/pleroma/user/query.ex +++ b/lib/pleroma/user/query.ex @@ -148,6 +148,10 @@ defp compose_query({:deactivated, true}, query) do |> where([u], not is_nil(u.nickname)) end + defp compose_query({:confirmation_pending, bool}, query) do + where(query, [u], u.confirmation_pending == ^bool) + end + defp compose_query({:need_approval, _}, query) do where(query, [u], u.approval_pending) end From 75b6fef25dd81c81cd5709739f97182045eec5b8 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 8 Sep 2020 16:39:41 -0500 Subject: [PATCH 152/460] Add mix task for bulk [un]confirming the local instance users --- docs/administration/CLI_tasks/user.md | 37 +++++++++++++-- lib/mix/tasks/pleroma/user.ex | 66 ++++++++++++++++++++++++--- lib/pleroma/user.ex | 7 +++ lib/pleroma/user/query.ex | 8 ++-- 4 files changed, 105 insertions(+), 13 deletions(-) diff --git a/docs/administration/CLI_tasks/user.md b/docs/administration/CLI_tasks/user.md index 3e7f028ba..0fcc8cfb9 100644 --- a/docs/administration/CLI_tasks/user.md +++ b/docs/administration/CLI_tasks/user.md @@ -224,9 +224,10 @@ ``` ### Options -- `--locked`/`--no-locked` - whether the user should be locked -- `--moderator`/`--no-moderator` - whether the user should be a moderator -- `--admin`/`--no-admin` - whether the user should be an admin +- `--admin`/`--no-admin` - the user account admin status +- `--confirmed`/`--no-confirmed` - the user account confirmation status +- `--locked`/`--no-locked` - the user account locked status +- `--moderator`/`--no-moderator` - the user account moderator status ## Add tags to a user @@ -271,3 +272,33 @@ ```sh mix pleroma.user toggle_confirmed ``` + +## Set confirmation status for all regular active users +*Admins and moderators are excluded* + +=== "OTP" + + ```sh + ./bin/pleroma_ctl user confirm_all + ``` + +=== "From Source" + + ```sh + mix pleroma.user confirm_all + ``` + +## Revoke confirmation status for all regular active users +*Admins and moderators are excluded* + +=== "OTP" + + ```sh + ./bin/pleroma_ctl user unconfirm_all + ``` + +=== "From Source" + + ```sh + mix pleroma.user unconfirm_all + ``` diff --git a/lib/mix/tasks/pleroma/user.ex b/lib/mix/tasks/pleroma/user.ex index 01824aa18..4073fe5a4 100644 --- a/lib/mix/tasks/pleroma/user.ex +++ b/lib/mix/tasks/pleroma/user.ex @@ -196,17 +196,24 @@ def run(["set", nickname | rest]) do OptionParser.parse( rest, strict: [ - moderator: :boolean, admin: :boolean, - locked: :boolean + confirmed: :boolean, + locked: :boolean, + moderator: :boolean ] ) with %User{local: true} = user <- User.get_cached_by_nickname(nickname) do user = - case Keyword.get(options, :moderator) do + case Keyword.get(options, :admin) do nil -> user - value -> set_moderator(user, value) + value -> set_admin(user, value) + end + + user = + case Keyword.get(options, :confirmed) do + nil -> user + value -> set_confirmed(user, value) end user = @@ -216,9 +223,9 @@ def run(["set", nickname | rest]) do end _user = - case Keyword.get(options, :admin) do + case Keyword.get(options, :moderator) do nil -> user - value -> set_admin(user, value) + value -> set_moderator(user, value) end else _ -> @@ -353,6 +360,42 @@ def run(["toggle_confirmed", nickname]) do end end + def run(["confirm_all"]) do + start_pleroma() + + Pleroma.User.Query.build(%{ + local: true, + deactivated: false, + is_moderator: false, + is_admin: false, + invisible: false + }) + |> Pleroma.RepoStreamer.chunk_stream(500) + |> Stream.each(fn users -> + users + |> Enum.each(fn user -> User.need_confirmation(user, false) end) + end) + |> Stream.run() + end + + def run(["unconfirm_all"]) do + start_pleroma() + + Pleroma.User.Query.build(%{ + local: true, + deactivated: false, + is_moderator: false, + is_admin: false, + invisible: false + }) + |> Pleroma.RepoStreamer.chunk_stream(500) + |> Stream.each(fn users -> + users + |> Enum.each(fn user -> User.need_confirmation(user, true) end) + end) + |> Stream.run() + end + def run(["sign_out", nickname]) do start_pleroma() @@ -410,4 +453,15 @@ defp set_locked(user, value) do shell_info("Locked status of #{user.nickname}: #{user.locked}") user end + + defp set_confirmed(user, value) do + {:ok, user} = + case value do + true -> User.need_confirmation(user, false) + false -> User.need_confirmation(user, true) + end + + shell_info("Confirmation pending status of #{user.nickname}: #{user.confirmation_pending}") + user + end end diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index f323fc6ed..603fc3b44 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -2123,6 +2123,13 @@ def toggle_confirmation(users) do Enum.map(users, &toggle_confirmation/1) end + @spec need_confirmation(User.t(), boolean()) :: {:ok, User.t()} | {:error, Changeset.t()} + def need_confirmation(%User{} = user, bool) do + user + |> confirmation_changeset(need_confirmation: bool) + |> update_and_set_cache() + end + def get_mascot(%{mascot: %{} = mascot}) when not is_nil(mascot) do mascot end diff --git a/lib/pleroma/user/query.ex b/lib/pleroma/user/query.ex index f59ca6f9c..64bb24c0e 100644 --- a/lib/pleroma/user/query.ex +++ b/lib/pleroma/user/query.ex @@ -107,12 +107,12 @@ defp compose_query({:tags, tags}, query) when is_list(tags) and length(tags) > 0 where(query, [u], fragment("? && ?", u.tags, ^tags)) end - defp compose_query({:is_admin, _}, query) do - where(query, [u], u.is_admin) + defp compose_query({:is_admin, bool}, query) do + where(query, [u], u.is_admin == ^bool) end - defp compose_query({:is_moderator, _}, query) do - where(query, [u], u.is_moderator) + defp compose_query({:is_moderator, bool}, query) do + where(query, [u], u.is_moderator == ^bool) end defp compose_query({:super_users, _}, query) do From d23d0c27c25e3ce7b39cae6e504062b4cb389ea4 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 8 Sep 2020 16:48:54 -0500 Subject: [PATCH 153/460] Handle possibility of user account in a bulk operation not having an email address --- lib/mix/tasks/pleroma/email.ex | 2 +- lib/pleroma/user.ex | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/mix/tasks/pleroma/email.ex b/lib/mix/tasks/pleroma/email.ex index 61d431971..c0bef0386 100644 --- a/lib/mix/tasks/pleroma/email.ex +++ b/lib/mix/tasks/pleroma/email.ex @@ -34,7 +34,7 @@ def run(["resend_confirmation_emails"]) do |> Pleroma.RepoStreamer.chunk_stream(500) |> Stream.each(fn users -> users - |> Enum.each(fn user -> Pleroma.User.send_confirmation_email(user) end) + |> Enum.each(fn user -> Pleroma.User.try_send_confirmation_email(user) end) end) |> Stream.run() end diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 603fc3b44..9dea39619 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -814,7 +814,8 @@ def send_welcome_email(%User{email: email} = user) when is_binary(email) do def send_welcome_email(_), do: {:ok, :noop} @spec try_send_confirmation_email(User.t()) :: {:ok, :enqueued | :noop} - def try_send_confirmation_email(%User{confirmation_pending: true} = user) do + def try_send_confirmation_email(%User{confirmation_pending: true, email: email} = user) + when is_binary(email) do if Config.get([:instance, :account_activation_required]) do send_confirmation_email(user) {:ok, :enqueued} From ed847474c305386adbcb97c569a0861d6fad5284 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 8 Sep 2020 16:59:53 -0500 Subject: [PATCH 154/460] Fix descriptions --- docs/administration/CLI_tasks/user.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/administration/CLI_tasks/user.md b/docs/administration/CLI_tasks/user.md index 0fcc8cfb9..c64ed4f22 100644 --- a/docs/administration/CLI_tasks/user.md +++ b/docs/administration/CLI_tasks/user.md @@ -224,10 +224,10 @@ ``` ### Options -- `--admin`/`--no-admin` - the user account admin status -- `--confirmed`/`--no-confirmed` - the user account confirmation status -- `--locked`/`--no-locked` - the user account locked status -- `--moderator`/`--no-moderator` - the user account moderator status +- `--admin`/`--no-admin` - whether the user should be an admin +- `--confirmed`/`--no-confirmed` - whether the user account is confirmed +- `--locked`/`--no-locked` - whether the user should be locked +- `--moderator`/`--no-moderator` - whether the user should be a moderator ## Add tags to a user From bccef4b9973e6fff898e819ff9f0234ad0cbf190 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 8 Sep 2020 17:01:55 -0500 Subject: [PATCH 155/460] Pedantry --- docs/administration/CLI_tasks/email.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/administration/CLI_tasks/email.md b/docs/administration/CLI_tasks/email.md index 439ea877a..d9aa0e71b 100644 --- a/docs/administration/CLI_tasks/email.md +++ b/docs/administration/CLI_tasks/email.md @@ -1,4 +1,4 @@ -# E-Mail administration tasks +# EMail administration tasks {! backend/administration/CLI_tasks/general_cli_task_info.include !} From ace94bfcc8a57a633a0bdf5746eefae32e6fdad9 Mon Sep 17 00:00:00 2001 From: tarteka Date: Wed, 9 Sep 2020 09:49:26 +0000 Subject: [PATCH 156/460] Added translation using Weblate (Spanish) --- priv/gettext/es/LC_MESSAGES/errors.po | 584 ++++++++++++++++++++++++++ 1 file changed, 584 insertions(+) create mode 100644 priv/gettext/es/LC_MESSAGES/errors.po diff --git a/priv/gettext/es/LC_MESSAGES/errors.po b/priv/gettext/es/LC_MESSAGES/errors.po new file mode 100644 index 000000000..4b0972e88 --- /dev/null +++ b/priv/gettext/es/LC_MESSAGES/errors.po @@ -0,0 +1,584 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-09-09 09:49+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 2.5.1\n" + +## This file is a PO Template file. +## +## `msgid`s here are often extracted from source code. +## Add new translations manually only if they're dynamic +## translations that can't be statically extracted. +## +## Run `mix gettext.extract` to bring this file up to +## date. Leave `msgstr`s empty as changing them here as no +## effect: edit them in PO (`.po`) files instead. +## From Ecto.Changeset.cast/4 +msgid "can't be blank" +msgstr "" + +## From Ecto.Changeset.unique_constraint/3 +msgid "has already been taken" +msgstr "" + +## From Ecto.Changeset.put_change/3 +msgid "is invalid" +msgstr "" + +## From Ecto.Changeset.validate_format/3 +msgid "has invalid format" +msgstr "" + +## From Ecto.Changeset.validate_subset/3 +msgid "has an invalid entry" +msgstr "" + +## From Ecto.Changeset.validate_exclusion/3 +msgid "is reserved" +msgstr "" + +## From Ecto.Changeset.validate_confirmation/3 +msgid "does not match confirmation" +msgstr "" + +## From Ecto.Changeset.no_assoc_constraint/3 +msgid "is still associated with this entry" +msgstr "" + +msgid "are still associated with this entry" +msgstr "" + +## From Ecto.Changeset.validate_length/3 +msgid "should be %{count} character(s)" +msgid_plural "should be %{count} character(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should have %{count} item(s)" +msgid_plural "should have %{count} item(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should be at least %{count} character(s)" +msgid_plural "should be at least %{count} character(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should have at least %{count} item(s)" +msgid_plural "should have at least %{count} item(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should be at most %{count} character(s)" +msgid_plural "should be at most %{count} character(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should have at most %{count} item(s)" +msgid_plural "should have at most %{count} item(s)" +msgstr[0] "" +msgstr[1] "" + +## From Ecto.Changeset.validate_number/3 +msgid "must be less than %{number}" +msgstr "" + +msgid "must be greater than %{number}" +msgstr "" + +msgid "must be less than or equal to %{number}" +msgstr "" + +msgid "must be greater than or equal to %{number}" +msgstr "" + +msgid "must be equal to %{number}" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:505 +#, elixir-format +msgid "Account not found" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:339 +#, elixir-format +msgid "Already voted" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:359 +#, elixir-format +msgid "Bad request" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:426 +#, elixir-format +msgid "Can't delete object" +msgstr "" + +#: lib/pleroma/web/controller_helper.ex:105 +#: lib/pleroma/web/controller_helper.ex:111 +#, elixir-format +msgid "Can't display this activity" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:285 +#, elixir-format +msgid "Can't find user" +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/account_controller.ex:61 +#, elixir-format +msgid "Can't get favorites" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:438 +#, elixir-format +msgid "Can't like object" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:563 +#, elixir-format +msgid "Cannot post an empty status without attachments" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:511 +#, elixir-format +msgid "Comment must be up to %{max_size} characters" +msgstr "" + +#: lib/pleroma/config/config_db.ex:191 +#, elixir-format +msgid "Config with params %{params} not found" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:181 +#: lib/pleroma/web/common_api/common_api.ex:185 +#, elixir-format +msgid "Could not delete" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:231 +#, elixir-format +msgid "Could not favorite" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:453 +#, elixir-format +msgid "Could not pin" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:278 +#, elixir-format +msgid "Could not unfavorite" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:463 +#, elixir-format +msgid "Could not unpin" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:216 +#, elixir-format +msgid "Could not unrepeat" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:512 +#: lib/pleroma/web/common_api/common_api.ex:521 +#, elixir-format +msgid "Could not update state" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:207 +#, elixir-format +msgid "Error." +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:106 +#, elixir-format +msgid "Invalid CAPTCHA" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:116 +#: lib/pleroma/web/oauth/oauth_controller.ex:568 +#, elixir-format +msgid "Invalid credentials" +msgstr "" + +#: lib/pleroma/plugs/ensure_authenticated_plug.ex:38 +#, elixir-format +msgid "Invalid credentials." +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:355 +#, elixir-format +msgid "Invalid indices" +msgstr "" + +#: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:29 +#, elixir-format +msgid "Invalid parameters" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:414 +#, elixir-format +msgid "Invalid password." +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:220 +#, elixir-format +msgid "Invalid request" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:109 +#, elixir-format +msgid "Kocaptcha service unavailable" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:112 +#, elixir-format +msgid "Missing parameters" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:547 +#, elixir-format +msgid "No such conversation" +msgstr "" + +#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:388 +#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:414 lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:456 +#, elixir-format +msgid "No such permission_group" +msgstr "" + +#: lib/pleroma/plugs/uploaded_media.ex:84 +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:486 lib/pleroma/web/admin_api/controllers/fallback_controller.ex:11 +#: lib/pleroma/web/feed/user_controller.ex:71 lib/pleroma/web/ostatus/ostatus_controller.ex:143 +#, elixir-format +msgid "Not found" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:331 +#, elixir-format +msgid "Poll's author can't vote" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:20 +#: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:37 lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:49 +#: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:50 lib/pleroma/web/mastodon_api/controllers/status_controller.ex:306 +#: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:71 +#, elixir-format +msgid "Record not found" +msgstr "" + +#: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:35 +#: lib/pleroma/web/feed/user_controller.ex:77 lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:36 +#: lib/pleroma/web/ostatus/ostatus_controller.ex:149 +#, elixir-format +msgid "Something went wrong" +msgstr "" + +#: lib/pleroma/web/common_api/activity_draft.ex:107 +#, elixir-format +msgid "The message visibility must be direct" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:573 +#, elixir-format +msgid "The status is over the character limit" +msgstr "" + +#: lib/pleroma/plugs/ensure_public_or_authenticated_plug.ex:31 +#, elixir-format +msgid "This resource requires authentication." +msgstr "" + +#: lib/pleroma/plugs/rate_limiter/rate_limiter.ex:206 +#, elixir-format +msgid "Throttled" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:356 +#, elixir-format +msgid "Too many choices" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:443 +#, elixir-format +msgid "Unhandled activity type" +msgstr "" + +#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:485 +#, elixir-format +msgid "You can't revoke your own admin status." +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:221 +#: lib/pleroma/web/oauth/oauth_controller.ex:308 +#, elixir-format +msgid "Your account is currently disabled" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:183 +#: lib/pleroma/web/oauth/oauth_controller.ex:331 +#, elixir-format +msgid "Your login is missing a confirmed e-mail address" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:390 +#, elixir-format +msgid "can't read inbox of %{nickname} as %{as_nickname}" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:473 +#, elixir-format +msgid "can't update outbox of %{nickname} as %{as_nickname}" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:471 +#, elixir-format +msgid "conversation is already muted" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:314 +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:492 +#, elixir-format +msgid "error" +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:32 +#, elixir-format +msgid "mascots can only be images" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:62 +#, elixir-format +msgid "not found" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:394 +#, elixir-format +msgid "Bad OAuth request." +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:115 +#, elixir-format +msgid "CAPTCHA already used" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:112 +#, elixir-format +msgid "CAPTCHA expired" +msgstr "" + +#: lib/pleroma/plugs/uploaded_media.ex:57 +#, elixir-format +msgid "Failed" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:410 +#, elixir-format +msgid "Failed to authenticate: %{message}." +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:441 +#, elixir-format +msgid "Failed to set up user account." +msgstr "" + +#: lib/pleroma/plugs/oauth_scopes_plug.ex:38 +#, elixir-format +msgid "Insufficient permissions: %{permissions}." +msgstr "" + +#: lib/pleroma/plugs/uploaded_media.ex:104 +#, elixir-format +msgid "Internal Error" +msgstr "" + +#: lib/pleroma/web/oauth/fallback_controller.ex:22 +#: lib/pleroma/web/oauth/fallback_controller.ex:29 +#, elixir-format +msgid "Invalid Username/Password" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:118 +#, elixir-format +msgid "Invalid answer data" +msgstr "" + +#: lib/pleroma/web/nodeinfo/nodeinfo_controller.ex:33 +#, elixir-format +msgid "Nodeinfo schema version not handled" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:172 +#, elixir-format +msgid "This action is outside the authorized scopes" +msgstr "" + +#: lib/pleroma/web/oauth/fallback_controller.ex:14 +#, elixir-format +msgid "Unknown error, please check the details and try again." +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:119 +#: lib/pleroma/web/oauth/oauth_controller.ex:158 +#, elixir-format +msgid "Unlisted redirect_uri." +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:390 +#, elixir-format +msgid "Unsupported OAuth provider: %{provider}." +msgstr "" + +#: lib/pleroma/uploaders/uploader.ex:72 +#, elixir-format +msgid "Uploader callback timeout" +msgstr "" + +#: lib/pleroma/web/uploader_controller.ex:23 +#, elixir-format +msgid "bad request" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:103 +#, elixir-format +msgid "CAPTCHA Error" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:290 +#, elixir-format +msgid "Could not add reaction emoji" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:301 +#, elixir-format +msgid "Could not remove reaction emoji" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:129 +#, elixir-format +msgid "Invalid CAPTCHA (Missing parameter: %{name})" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/list_controller.ex:92 +#, elixir-format +msgid "List not found" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:123 +#, elixir-format +msgid "Missing parameter: %{name}" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:210 +#: lib/pleroma/web/oauth/oauth_controller.ex:321 +#, elixir-format +msgid "Password reset is required" +msgstr "" + +#: lib/pleroma/tests/auth_test_controller.ex:9 +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:6 lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:6 +#: lib/pleroma/web/admin_api/controllers/config_controller.ex:6 lib/pleroma/web/admin_api/controllers/fallback_controller.ex:6 +#: lib/pleroma/web/admin_api/controllers/invite_controller.ex:6 lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex:6 +#: lib/pleroma/web/admin_api/controllers/oauth_app_controller.ex:6 lib/pleroma/web/admin_api/controllers/relay_controller.ex:6 +#: lib/pleroma/web/admin_api/controllers/report_controller.ex:6 lib/pleroma/web/admin_api/controllers/status_controller.ex:6 +#: lib/pleroma/web/controller_helper.ex:6 lib/pleroma/web/embed_controller.ex:6 +#: lib/pleroma/web/fallback_redirect_controller.ex:6 lib/pleroma/web/feed/tag_controller.ex:6 +#: lib/pleroma/web/feed/user_controller.ex:6 lib/pleroma/web/mailer/subscription_controller.ex:2 +#: lib/pleroma/web/masto_fe_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/account_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/app_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/auth_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/conversation_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/custom_emoji_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/filter_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/follow_request_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/instance_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/list_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/marker_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex:14 +#: lib/pleroma/web/mastodon_api/controllers/media_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/notification_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/report_controller.ex:8 +#: lib/pleroma/web/mastodon_api/controllers/scheduled_activity_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/search_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/status_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:7 +#: lib/pleroma/web/mastodon_api/controllers/suggestion_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:6 +#: lib/pleroma/web/media_proxy/media_proxy_controller.ex:6 lib/pleroma/web/mongooseim/mongoose_im_controller.ex:6 +#: lib/pleroma/web/nodeinfo/nodeinfo_controller.ex:6 lib/pleroma/web/oauth/fallback_controller.ex:6 +#: lib/pleroma/web/oauth/mfa_controller.ex:10 lib/pleroma/web/oauth/oauth_controller.ex:6 +#: lib/pleroma/web/ostatus/ostatus_controller.ex:6 lib/pleroma/web/pleroma_api/controllers/account_controller.ex:6 +#: lib/pleroma/web/pleroma_api/controllers/chat_controller.ex:5 lib/pleroma/web/pleroma_api/controllers/conversation_controller.ex:6 +#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:2 lib/pleroma/web/pleroma_api/controllers/emoji_reaction_controller.ex:6 +#: lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:6 lib/pleroma/web/pleroma_api/controllers/notification_controller.ex:6 +#: lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex:6 +#: lib/pleroma/web/pleroma_api/controllers/two_factor_authentication_controller.ex:7 lib/pleroma/web/static_fe/static_fe_controller.ex:6 +#: lib/pleroma/web/twitter_api/controllers/password_controller.ex:10 lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex:6 +#: lib/pleroma/web/twitter_api/controllers/util_controller.ex:6 lib/pleroma/web/twitter_api/twitter_api_controller.ex:6 +#: lib/pleroma/web/uploader_controller.ex:6 lib/pleroma/web/web_finger/web_finger_controller.ex:6 +#, elixir-format +msgid "Security violation: OAuth scopes check was neither handled nor explicitly skipped." +msgstr "" + +#: lib/pleroma/plugs/ensure_authenticated_plug.ex:28 +#, elixir-format +msgid "Two-factor authentication enabled, you must use a access token." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:210 +#, elixir-format +msgid "Unexpected error occurred while adding file to pack." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:138 +#, elixir-format +msgid "Unexpected error occurred while creating pack." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:278 +#, elixir-format +msgid "Unexpected error occurred while removing file from pack." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:250 +#, elixir-format +msgid "Unexpected error occurred while updating file in pack." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:179 +#, elixir-format +msgid "Unexpected error occurred while updating pack metadata." +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:61 +#, elixir-format +msgid "Web push subscription is disabled on this Pleroma instance" +msgstr "" + +#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:451 +#, elixir-format +msgid "You can't revoke your own admin/moderator status." +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:126 +#, elixir-format +msgid "authorization required for timeline view" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:24 +#, elixir-format +msgid "Access denied" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:282 +#, elixir-format +msgid "This API requires an authenticated user" +msgstr "" + +#: lib/pleroma/plugs/user_is_admin_plug.ex:21 +#, elixir-format +msgid "User is not an admin." +msgstr "" From 6ec1a9ded164df2872ad4ec99ca673e7618c9253 Mon Sep 17 00:00:00 2001 From: tarteka Date: Wed, 9 Sep 2020 09:52:08 +0000 Subject: [PATCH 157/460] Translated using Weblate (Spanish) Currently translated at 9.4% (10 of 106 strings) Translation: Pleroma/Pleroma backend Translate-URL: https://translate.pleroma.social/projects/pleroma/pleroma/es/ --- priv/gettext/es/LC_MESSAGES/errors.po | 32 ++++++++++++++------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/priv/gettext/es/LC_MESSAGES/errors.po b/priv/gettext/es/LC_MESSAGES/errors.po index 4b0972e88..ba75936a9 100644 --- a/priv/gettext/es/LC_MESSAGES/errors.po +++ b/priv/gettext/es/LC_MESSAGES/errors.po @@ -3,14 +3,16 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-09-09 09:49+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"PO-Revision-Date: 2020-09-09 10:52+0000\n" +"Last-Translator: tarteka \n" +"Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 2.5.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" ## This file is a PO Template file. ## @@ -23,44 +25,44 @@ msgstr "" ## effect: edit them in PO (`.po`) files instead. ## From Ecto.Changeset.cast/4 msgid "can't be blank" -msgstr "" +msgstr "no puede estar en blanco" ## From Ecto.Changeset.unique_constraint/3 msgid "has already been taken" -msgstr "" +msgstr "ya está en uso" ## From Ecto.Changeset.put_change/3 msgid "is invalid" -msgstr "" +msgstr "es inválido" ## From Ecto.Changeset.validate_format/3 msgid "has invalid format" -msgstr "" +msgstr "el formato no es válido" ## From Ecto.Changeset.validate_subset/3 msgid "has an invalid entry" -msgstr "" +msgstr "tiene una entrada inválida" ## From Ecto.Changeset.validate_exclusion/3 msgid "is reserved" -msgstr "" +msgstr "está reservado" ## From Ecto.Changeset.validate_confirmation/3 msgid "does not match confirmation" -msgstr "" +msgstr "la confirmación no coincide" ## From Ecto.Changeset.no_assoc_constraint/3 msgid "is still associated with this entry" -msgstr "" +msgstr "todavía está asociado con esta entrada" msgid "are still associated with this entry" -msgstr "" +msgstr "todavía están asociados con esta entrada" ## From Ecto.Changeset.validate_length/3 msgid "should be %{count} character(s)" msgid_plural "should be %{count} character(s)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "debe tener %{count} carácter" +msgstr[1] "debe tener %{count} caracteres" msgid "should have %{count} item(s)" msgid_plural "should have %{count} item(s)" From 6c79a60649c8d6b3ef9ce0fbbb4792410fe585bd Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 8 Sep 2020 17:59:25 -0500 Subject: [PATCH 158/460] Add test for pleroma.user set --confirmed Order now matters because of testing shell_info --- test/tasks/user_test.exs | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/test/tasks/user_test.exs b/test/tasks/user_test.exs index ce43a9cc7..ef77fdc9c 100644 --- a/test/tasks/user_test.exs +++ b/test/tasks/user_test.exs @@ -225,47 +225,64 @@ test "no user to deactivate" do test "All statuses set" do user = insert(:user) - Mix.Tasks.Pleroma.User.run(["set", user.nickname, "--moderator", "--admin", "--locked"]) + Mix.Tasks.Pleroma.User.run([ + "set", + user.nickname, + "--admin", + "--confirmed", + "--locked", + "--moderator" + ]) assert_received {:mix_shell, :info, [message]} - assert message =~ ~r/Moderator status .* true/ + assert message =~ ~r/Admin status .* true/ + + assert_received {:mix_shell, :info, [message]} + assert message =~ ~r/Confirmation pending .* false/ assert_received {:mix_shell, :info, [message]} assert message =~ ~r/Locked status .* true/ assert_received {:mix_shell, :info, [message]} - assert message =~ ~r/Admin status .* true/ + assert message =~ ~r/Moderator status .* true/ user = User.get_cached_by_nickname(user.nickname) assert user.is_moderator assert user.locked assert user.is_admin + refute user.confirmation_pending end test "All statuses unset" do - user = insert(:user, locked: true, is_moderator: true, is_admin: true) + user = + insert(:user, locked: true, is_moderator: true, is_admin: true, confirmation_pending: true) Mix.Tasks.Pleroma.User.run([ "set", user.nickname, - "--no-moderator", "--no-admin", - "--no-locked" + "--no-confirmed", + "--no-locked", + "--no-moderator" ]) assert_received {:mix_shell, :info, [message]} - assert message =~ ~r/Moderator status .* false/ + assert message =~ ~r/Admin status .* false/ + + assert_received {:mix_shell, :info, [message]} + assert message =~ ~r/Confirmation pending .* true/ assert_received {:mix_shell, :info, [message]} assert message =~ ~r/Locked status .* false/ assert_received {:mix_shell, :info, [message]} - assert message =~ ~r/Admin status .* false/ + assert message =~ ~r/Moderator status .* false/ user = User.get_cached_by_nickname(user.nickname) refute user.is_moderator refute user.locked refute user.is_admin + assert user.confirmation_pending end test "no user to set status" do From b900c06d4e2bc5d607af542e2c9cf9eacade376b Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 9 Sep 2020 09:02:07 -0500 Subject: [PATCH 159/460] Add tests for the bulk confirm/unconfirm tasks --- test/tasks/user_test.exs | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/test/tasks/user_test.exs b/test/tasks/user_test.exs index ef77fdc9c..b8c423c48 100644 --- a/test/tasks/user_test.exs +++ b/test/tasks/user_test.exs @@ -571,4 +571,44 @@ test "it prints an error message when user is not exist" do assert message =~ "Could not change user tags" end end + + describe "bulk confirm and unconfirm" do + test "confirm all" do + user1 = insert(:user, confirmation_pending: true) + user2 = insert(:user, confirmation_pending: true) + + assert user1.confirmation_pending + assert user2.confirmation_pending + + Mix.Tasks.Pleroma.User.run(["confirm_all"]) + + user1 = User.get_cached_by_nickname(user1.nickname) + user2 = User.get_cached_by_nickname(user2.nickname) + + refute user1.confirmation_pending + refute user2.confirmation_pending + end + + test "unconfirm all" do + user1 = insert(:user, confirmation_pending: false) + user2 = insert(:user, confirmation_pending: false) + admin = insert(:user, is_admin: true, confirmation_pending: false) + mod = insert(:user, is_moderator: true, confirmation_pending: false) + + refute user1.confirmation_pending + refute user2.confirmation_pending + + Mix.Tasks.Pleroma.User.run(["unconfirm_all"]) + + user1 = User.get_cached_by_nickname(user1.nickname) + user2 = User.get_cached_by_nickname(user2.nickname) + admin = User.get_cached_by_nickname(admin.nickname) + mod = User.get_cached_by_nickname(mod.nickname) + + assert user1.confirmation_pending + assert user2.confirmation_pending + refute admin.confirmation_pending + refute mod.confirmation_pending + end + end end From 34d7e864db8f9cc7fb73ce2fef8466ce8e09ed85 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 9 Sep 2020 09:10:44 -0500 Subject: [PATCH 160/460] New mix tasks for controlling user confirmation status and sending confirmation mails --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 19b2596cc..47cab144b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## Unreleased +### Added +- Mix tasks for controlling user account confirmation status in bulk (`mix pleroma.user confirm_all` and `mix pleroma.user unconfirm_all`) +- Mix task for sending confirmation emails to all unconfirmed users (`mix pleroma.email send_confirmation_mails`) + ### Changed - Renamed `:await_up_timeout` in `:connections_pool` namespace to `:connect_timeout`, old name is deprecated. From 0c1d24318565ec5bca0dfbe749f09d7acc9f7e42 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Wed, 9 Sep 2020 18:34:07 +0300 Subject: [PATCH 161/460] bump concurrent_limiter Should fix gun deadlocks --- mix.exs | 2 +- mix.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mix.exs b/mix.exs index 9499aab2d..18f748672 100644 --- a/mix.exs +++ b/mix.exs @@ -180,7 +180,7 @@ defp deps do {:flake_id, "~> 0.1.0"}, {:concurrent_limiter, git: "https://git.pleroma.social/pleroma/elixir-libraries/concurrent_limiter.git", - ref: "55e92f84b4ed531bd487952a71040a9c69dc2807"}, + ref: "d81be41024569330f296fc472e24198d7499ba78"}, {:remote_ip, git: "https://git.pleroma.social/pleroma/remote_ip.git", ref: "b647d0deecaa3acb140854fe4bda5b7e1dc6d1c8"}, diff --git a/mix.lock b/mix.lock index c4f9cd28c..a28c47017 100644 --- a/mix.lock +++ b/mix.lock @@ -14,7 +14,7 @@ "certifi": {:hex, :certifi, "2.5.1", "867ce347f7c7d78563450a18a6a28a8090331e77fa02380b4a21962a65d36ee5", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "805abd97539caf89ec6d4732c91e62ba9da0cda51ac462380bbd28ee697a8c42"}, "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"}, "comeonin": {:hex, :comeonin, "5.3.1", "7fe612b739c78c9c1a75186ef2d322ce4d25032d119823269d0aa1e2f1e20025", [:mix], [], "hexpm", "d6222483060c17f0977fad1b7401ef0c5863c985a64352755f366aee3799c245"}, - "concurrent_limiter": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/concurrent_limiter.git", "55e92f84b4ed531bd487952a71040a9c69dc2807", [ref: "55e92f84b4ed531bd487952a71040a9c69dc2807"]}, + "concurrent_limiter": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/concurrent_limiter.git", "d81be41024569330f296fc472e24198d7499ba78", [ref: "d81be41024569330f296fc472e24198d7499ba78"]}, "connection": {:hex, :connection, "1.0.4", "a1cae72211f0eef17705aaededacac3eb30e6625b04a6117c1b2db6ace7d5976", [:mix], [], "hexpm", "4a0850c9be22a43af9920a71ab17c051f5f7d45c209e40269a1938832510e4d9"}, "cors_plug": {:hex, :cors_plug, "2.0.2", "2b46083af45e4bc79632bd951550509395935d3e7973275b2b743bd63cc942ce", [:mix], [{:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "f0d0e13f71c51fd4ef8b2c7e051388e4dfb267522a83a22392c856de7e46465f"}, "cowboy": {:hex, :cowboy, "2.8.0", "f3dc62e35797ecd9ac1b50db74611193c29815401e53bac9a5c0577bd7bc667d", [:rebar3], [{:cowlib, "~> 2.9.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.7.1", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "4643e4fba74ac96d4d152c75803de6fad0b3fa5df354c71afdd6cbeeb15fac8a"}, From 68a74d66596f0e35f0e080de25e4679d2c8b1b76 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Wed, 9 Sep 2020 19:30:42 +0300 Subject: [PATCH 162/460] [#2497] Added missing alias, removed legacy `:adapter` option specification for HTTP.get/_. --- lib/pleroma/helpers/media_helper.ex | 4 ++-- lib/pleroma/instances/instance.ex | 2 +- lib/pleroma/web/media_proxy/media_proxy_controller.ex | 2 +- test/web/mastodon_api/views/account_view_test.exs | 1 + 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index a1205e10d..d834b4a07 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -14,7 +14,7 @@ defmodule Pleroma.Helpers.MediaHelper do def image_resize(url, options) do with executable when is_binary(executable) <- System.find_executable("convert"), {:ok, args} <- prepare_image_resize_args(options), - {:ok, env} <- HTTP.get(url, [], adapter: [pool: :media]), + {:ok, env} <- HTTP.get(url, [], pool: :media), {:ok, fifo_path} <- mkfifo() do args = List.flatten([fifo_path, args]) run_fifo(fifo_path, env, executable, args) @@ -62,7 +62,7 @@ defp prepare_image_resize_args(_), do: {:error, :missing_options} def video_framegrab(url) do with executable when is_binary(executable) <- System.find_executable("ffmpeg"), - {:ok, env} <- HTTP.get(url, [], adapter: [pool: :media]), + {:ok, env} <- HTTP.get(url, [], pool: :media), {:ok, fifo_path} <- mkfifo(), args = [ "-y", diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index 8bf53c090..4fe4b198d 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -157,7 +157,7 @@ defp scrape_favicon(%URI{} = instance_uri) do try do with {:ok, %Tesla.Env{body: html}} <- Pleroma.HTTP.get(to_string(instance_uri), [{"accept", "text/html"}], - adapter: [pool: :media] + pool: :media ), favicon_rel <- html diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 89f4a23bd..acb581459 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -51,7 +51,7 @@ defp handle_preview(conn, url) do media_proxy_url = MediaProxy.url(url) with {:ok, %{status: status} = head_response} when status in 200..299 <- - Pleroma.HTTP.request("head", media_proxy_url, [], [], adapter: [pool: :media]) do + Pleroma.HTTP.request("head", media_proxy_url, [], [], pool: :media) do content_type = Tesla.get_header(head_response, "content-type") handle_preview(content_type, conn, media_proxy_url) else diff --git a/test/web/mastodon_api/views/account_view_test.exs b/test/web/mastodon_api/views/account_view_test.exs index 5c5aa6cee..793b44fca 100644 --- a/test/web/mastodon_api/views/account_view_test.exs +++ b/test/web/mastodon_api/views/account_view_test.exs @@ -5,6 +5,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do use Pleroma.DataCase + alias Pleroma.Config alias Pleroma.User alias Pleroma.UserRelationship alias Pleroma.Web.CommonAPI From b4860c57a63b48ded8eaa37b9f40cc0851c78882 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Wed, 9 Sep 2020 19:43:36 +0300 Subject: [PATCH 163/460] [#2497] Formatting fix. --- lib/pleroma/instances/instance.ex | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index 4fe4b198d..ad7764f05 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -156,9 +156,7 @@ def get_or_update_favicon(%URI{host: host} = instance_uri) do defp scrape_favicon(%URI{} = instance_uri) do try do with {:ok, %Tesla.Env{body: html}} <- - Pleroma.HTTP.get(to_string(instance_uri), [{"accept", "text/html"}], - pool: :media - ), + Pleroma.HTTP.get(to_string(instance_uri), [{"accept", "text/html"}], pool: :media), favicon_rel <- html |> Floki.parse_document!() From cad69669fc692da360929a5961e96550de1f1fe1 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Wed, 9 Sep 2020 22:44:38 +0300 Subject: [PATCH 164/460] [#2130] Fixed OAuth OOB authentication for users with enabled MFA. --- lib/pleroma/web/oauth/oauth_controller.ex | 5 ++++- .../o_auth/o_auth/oob_authorization_created.html.eex | 2 +- .../web/templates/o_auth/o_auth/oob_token_exists.html.eex | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/oauth/oauth_controller.ex b/lib/pleroma/web/oauth/oauth_controller.ex index dd00600ea..06b116368 100644 --- a/lib/pleroma/web/oauth/oauth_controller.ex +++ b/lib/pleroma/web/oauth/oauth_controller.ex @@ -145,7 +145,10 @@ def create_authorization( def after_create_authorization(%Plug.Conn{} = conn, %Authorization{} = auth, %{ "authorization" => %{"redirect_uri" => @oob_token_redirect_uri} }) do - render(conn, "oob_authorization_created.html", %{auth: auth}) + # Enforcing the view to reuse the template when calling from other controllers + conn + |> put_view(OAuthView) + |> render("oob_authorization_created.html", %{auth: auth}) end def after_create_authorization(%Plug.Conn{} = conn, %Authorization{} = auth, %{ diff --git a/lib/pleroma/web/templates/o_auth/o_auth/oob_authorization_created.html.eex b/lib/pleroma/web/templates/o_auth/o_auth/oob_authorization_created.html.eex index 8443d906b..ffabe29a6 100644 --- a/lib/pleroma/web/templates/o_auth/o_auth/oob_authorization_created.html.eex +++ b/lib/pleroma/web/templates/o_auth/o_auth/oob_authorization_created.html.eex @@ -1,2 +1,2 @@

Successfully authorized

-

Token code is <%= @auth.token %>

+

Token code is
<%= @auth.token %>

diff --git a/lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex b/lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex index 961aad976..82785c4b9 100644 --- a/lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex +++ b/lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex @@ -1,2 +1,2 @@

Authorization exists

-

Access token is <%= @token.token %>

+

Access token is
<%= @token.token %>

From ab56dd54e787eae82cf00fddc90eab4c5cbac4a9 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 10 Sep 2020 11:23:39 +0300 Subject: [PATCH 165/460] use Pleroma.HTTP in emoji packs tasks --- lib/mix/tasks/pleroma/emoji.ex | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index 8f52ee98d..1750373f9 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -183,7 +183,7 @@ def run(["gen-pack" | args]) do IO.puts("Downloading the pack and generating SHA256") - binary_archive = Tesla.get!(client(), src).body + {:ok, %{body: binary_archive}} = Pleroma.HTTP.get(src) archive_sha = :crypto.hash(:sha256, binary_archive) |> Base.encode16() IO.puts("SHA256 is #{archive_sha}") @@ -252,7 +252,7 @@ defp fetch_and_decode!(from) do end defp fetch("http" <> _ = from) do - with {:ok, %{body: body}} <- Tesla.get(client(), from) do + with {:ok, %{body: body}} <- Pleroma.HTTP.get(from) do {:ok, body} end end @@ -271,13 +271,5 @@ defp parse_global_opts(args) do ) end - defp client do - middleware = [ - {Tesla.Middleware.FollowRedirects, [max_redirects: 3]} - ] - - Tesla.client(middleware) - end - defp default_manifest, do: Pleroma.Config.get!([:emoji, :default_manifest]) end From 148bc244359e70c87ec2812c65da83fe87efbc68 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Thu, 10 Sep 2020 11:54:10 +0300 Subject: [PATCH 166/460] [#2497] Removed Hackney-specific code (no longer needed due to adapter options unification). --- .../activity_pub/mrf/media_proxy_warming_policy.ex | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex b/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex index 6c63fe15c..0fb05d3c4 100644 --- a/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex @@ -13,17 +13,10 @@ defmodule Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy do require Logger @adapter_options [ - pool: :media + pool: :media, + recv_timeout: 10_000 ] - defp adapter_options do - if Application.get_env(:tesla, :adapter) == Tesla.Adapter.Hackney do - Keyword.put(@adapter_options, :recv_timeout, 10_000) - else - @adapter_options - end - end - def perform(:prefetch, url) do # Fetching only proxiable resources if MediaProxy.enabled?() and MediaProxy.url_proxiable?(url) do @@ -32,7 +25,7 @@ def perform(:prefetch, url) do Logger.debug("Prefetching #{inspect(url)} as #{inspect(prefetch_url)}") - HTTP.get(prefetch_url, [], adapter: adapter_options()) + HTTP.get(prefetch_url, [], @adapter_options) end end From 9853c90abba213bdc87dccf5620cb0d9eb19c049 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Thu, 10 Sep 2020 12:24:44 +0300 Subject: [PATCH 167/460] added paginate links to headers for /chats/:id/messages --- lib/pleroma/chat.ex | 24 +++++-- .../web/api_spec/operations/chat_operation.ex | 3 +- lib/pleroma/web/controller_helper.ex | 20 +++--- .../controllers/chat_controller.ex | 62 ++++++++----------- .../controllers/chat_controller_test.exs | 50 ++++++++++----- 5 files changed, 90 insertions(+), 69 deletions(-) diff --git a/lib/pleroma/chat.ex b/lib/pleroma/chat.ex index 24a86371e..202fffb8a 100644 --- a/lib/pleroma/chat.ex +++ b/lib/pleroma/chat.ex @@ -6,6 +6,7 @@ defmodule Pleroma.Chat do use Ecto.Schema import Ecto.Changeset + import Ecto.Query alias Pleroma.Repo alias Pleroma.User @@ -16,6 +17,7 @@ defmodule Pleroma.Chat do It is a helper only, to make it easy to display a list of chats with other people, ordered by last bump. The actual messages are retrieved by querying the recipients of the ChatMessages. """ + @type t :: %__MODULE__{} @primary_key {:id, FlakeId.Ecto.CompatType, autogenerate: true} schema "chats" do @@ -39,16 +41,28 @@ def changeset(struct, params) do |> unique_constraint(:user_id, name: :chats_user_id_recipient_index) end + @spec get_by_user_and_id(User.t(), FlakeId.Ecto.CompatType.t()) :: + {:ok, t()} | {:error, :not_found} + def get_by_user_and_id(%User{id: user_id}, id) do + from(c in __MODULE__, + where: c.id == ^id, + where: c.user_id == ^user_id + ) + |> Repo.find_resource() + end + + @spec get_by_id(FlakeId.Ecto.CompatType.t()) :: t() | nil def get_by_id(id) do - __MODULE__ - |> Repo.get(id) + Repo.get(__MODULE__, id) end + @spec get(FlakeId.Ecto.CompatType.t(), String.t()) :: t() | nil def get(user_id, recipient) do - __MODULE__ - |> Repo.get_by(user_id: user_id, recipient: recipient) + Repo.get_by(__MODULE__, user_id: user_id, recipient: recipient) end + @spec get_or_create(FlakeId.Ecto.CompatType.t(), String.t()) :: + {:ok, t()} | {:error, Ecto.Changeset.t()} def get_or_create(user_id, recipient) do %__MODULE__{} |> changeset(%{user_id: user_id, recipient: recipient}) @@ -60,6 +74,8 @@ def get_or_create(user_id, recipient) do ) end + @spec bump_or_create(FlakeId.Ecto.CompatType.t(), String.t()) :: + {:ok, t()} | {:error, Ecto.Changeset.t()} def bump_or_create(user_id, recipient) do %__MODULE__{} |> changeset(%{user_id: user_id, recipient: recipient}) diff --git a/lib/pleroma/web/api_spec/operations/chat_operation.ex b/lib/pleroma/web/api_spec/operations/chat_operation.ex index b1a0d26ab..8cbea9ec4 100644 --- a/lib/pleroma/web/api_spec/operations/chat_operation.ex +++ b/lib/pleroma/web/api_spec/operations/chat_operation.ex @@ -158,7 +158,8 @@ def messages_operation do "The messages in the chat", "application/json", chat_messages_response() - ) + ), + 404 => Operation.response("Not Found", "application/json", ApiError) }, security: [ %{ diff --git a/lib/pleroma/web/controller_helper.ex b/lib/pleroma/web/controller_helper.ex index 6445966e0..69188a882 100644 --- a/lib/pleroma/web/controller_helper.ex +++ b/lib/pleroma/web/controller_helper.ex @@ -48,13 +48,13 @@ defp param_to_integer(val, default) when is_binary(val) do defp param_to_integer(_, default), do: default - def add_link_headers(conn, activities, extra_params \\ %{}) + def add_link_headers(conn, entries, extra_params \\ %{}) - def add_link_headers(%{assigns: %{skip_link_headers: true}} = conn, _activities, _extra_params), + def add_link_headers(%{assigns: %{skip_link_headers: true}} = conn, _entries, _extra_params), do: conn - def add_link_headers(conn, activities, extra_params) do - case get_pagination_fields(conn, activities, extra_params) do + def add_link_headers(conn, entries, extra_params) do + case get_pagination_fields(conn, entries, extra_params) do %{"next" => next_url, "prev" => prev_url} -> put_resp_header(conn, "link", "<#{next_url}>; rel=\"next\", <#{prev_url}>; rel=\"prev\"") @@ -78,19 +78,15 @@ defp build_pagination_fields(conn, min_id, max_id, extra_params) do } end - def get_pagination_fields(conn, activities, extra_params \\ %{}) do - case List.last(activities) do + def get_pagination_fields(conn, entries, extra_params \\ %{}) do + case List.last(entries) do %{pagination_id: max_id} when not is_nil(max_id) -> - %{pagination_id: min_id} = - activities - |> List.first() + %{pagination_id: min_id} = List.first(entries) build_pagination_fields(conn, min_id, max_id, extra_params) %{id: max_id} -> - %{id: min_id} = - activities - |> List.first() + %{id: min_id} = List.first(entries) build_pagination_fields(conn, min_id, max_id, extra_params) diff --git a/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex b/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex index e8a1746d4..7b5f3daf9 100644 --- a/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex @@ -4,6 +4,8 @@ defmodule Pleroma.Web.PleromaAPI.ChatController do use Pleroma.Web, :controller + import Pleroma.Web.ControllerHelper, only: [add_link_headers: 2] + alias Pleroma.Activity alias Pleroma.Chat alias Pleroma.Chat.MessageReference @@ -47,7 +49,7 @@ def delete_message(%{assigns: %{user: %{id: user_id} = user}} = conn, %{ }) do with %MessageReference{} = cm_ref <- MessageReference.get_by_id(message_id), - ^chat_id <- cm_ref.chat_id |> to_string(), + ^chat_id <- to_string(cm_ref.chat_id), %Chat{user_id: ^user_id} <- Chat.get_by_id(chat_id), {:ok, _} <- remove_or_delete(cm_ref, user) do conn @@ -68,18 +70,13 @@ defp remove_or_delete( end end - defp remove_or_delete(cm_ref, _) do - cm_ref - |> MessageReference.delete() - end + defp remove_or_delete(cm_ref, _), do: MessageReference.delete(cm_ref) def post_chat_message( - %{body_params: params, assigns: %{user: %{id: user_id} = user}} = conn, - %{ - id: id - } + %{body_params: params, assigns: %{user: user}} = conn, + %{id: id} ) do - with %Chat{} = chat <- Repo.get_by(Chat, id: id, user_id: user_id), + with {:ok, chat} <- Chat.get_by_user_and_id(user, id), %User{} = recipient <- User.get_cached_by_ap_id(chat.recipient), {:ok, activity} <- CommonAPI.post_chat_message(user, recipient, params[:content], @@ -93,13 +90,12 @@ def post_chat_message( end end - def mark_message_as_read(%{assigns: %{user: %{id: user_id}}} = conn, %{ - id: chat_id, - message_id: message_id - }) do - with %MessageReference{} = cm_ref <- - MessageReference.get_by_id(message_id), - ^chat_id <- cm_ref.chat_id |> to_string(), + def mark_message_as_read( + %{assigns: %{user: %{id: user_id}}} = conn, + %{id: chat_id, message_id: message_id} + ) do + with %MessageReference{} = cm_ref <- MessageReference.get_by_id(message_id), + ^chat_id <- to_string(cm_ref.chat_id), %Chat{user_id: ^user_id} <- Chat.get_by_id(chat_id), {:ok, cm_ref} <- MessageReference.mark_as_read(cm_ref) do conn @@ -109,36 +105,28 @@ def mark_message_as_read(%{assigns: %{user: %{id: user_id}}} = conn, %{ end def mark_as_read( - %{ - body_params: %{last_read_id: last_read_id}, - assigns: %{user: %{id: user_id}} - } = conn, + %{body_params: %{last_read_id: last_read_id}, assigns: %{user: user}} = conn, %{id: id} ) do - with %Chat{} = chat <- Repo.get_by(Chat, id: id, user_id: user_id), - {_n, _} <- - MessageReference.set_all_seen_for_chat(chat, last_read_id) do + with {:ok, chat} <- Chat.get_by_user_and_id(user, id), + {_n, _} <- MessageReference.set_all_seen_for_chat(chat, last_read_id) do conn |> put_view(ChatView) |> render("show.json", chat: chat) end end - def messages(%{assigns: %{user: %{id: user_id}}} = conn, %{id: id} = params) do - with %Chat{} = chat <- Repo.get_by(Chat, id: id, user_id: user_id) do - cm_refs = + def messages(%{assigns: %{user: user}} = conn, %{id: id} = params) do + with {:ok, chat} <- Chat.get_by_user_and_id(user, id) do + chat_message_refs = chat |> MessageReference.for_chat_query() |> Pagination.fetch_paginated(params) conn + |> add_link_headers(chat_message_refs) |> put_view(MessageReferenceView) - |> render("index.json", chat_message_references: cm_refs) - else - _ -> - conn - |> put_status(:not_found) - |> json(%{error: "not found"}) + |> render("index.json", chat_message_references: chat_message_refs) end end @@ -158,8 +146,8 @@ def index(%{assigns: %{user: %{id: user_id} = user}} = conn, _params) do |> render("index.json", chats: chats) end - def create(%{assigns: %{user: user}} = conn, params) do - with %User{ap_id: recipient} <- User.get_by_id(params[:id]), + def create(%{assigns: %{user: user}} = conn, %{id: id}) do + with %User{ap_id: recipient} <- User.get_cached_by_id(id), {:ok, %Chat{} = chat} <- Chat.get_or_create(user.id, recipient) do conn |> put_view(ChatView) @@ -167,8 +155,8 @@ def create(%{assigns: %{user: user}} = conn, params) do end end - def show(%{assigns: %{user: user}} = conn, params) do - with %Chat{} = chat <- Repo.get_by(Chat, user_id: user.id, id: params[:id]) do + def show(%{assigns: %{user: user}} = conn, %{id: id}) do + with {:ok, chat} <- Chat.get_by_user_and_id(user, id) do conn |> put_view(ChatView) |> render("show.json", chat: chat) diff --git a/test/web/pleroma_api/controllers/chat_controller_test.exs b/test/web/pleroma_api/controllers/chat_controller_test.exs index 7be5fe09c..40f7c72ca 100644 --- a/test/web/pleroma_api/controllers/chat_controller_test.exs +++ b/test/web/pleroma_api/controllers/chat_controller_test.exs @@ -2,7 +2,7 @@ # Copyright © 2017-2020 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.PleromaAPI.ChatControllerTest do - use Pleroma.Web.ConnCase, async: true + use Pleroma.Web.ConnCase alias Pleroma.Chat alias Pleroma.Chat.MessageReference @@ -184,17 +184,39 @@ test "it paginates", %{conn: conn, user: user} do chat = Chat.get(user.id, recipient.ap_id) - result = - conn - |> get("/api/v1/pleroma/chats/#{chat.id}/messages") - |> json_response_and_validate_schema(200) + response = get(conn, "/api/v1/pleroma/chats/#{chat.id}/messages") + result = json_response_and_validate_schema(response, 200) + + [next, prev] = get_resp_header(response, "link") |> hd() |> String.split(", ") + api_endpoint = "/api/v1/pleroma/chats/" + + assert String.match?( + next, + ~r(#{api_endpoint}.*/messages\?id=.*&limit=\d+&max_id=.*; rel=\"next\"$) + ) + + assert String.match?( + prev, + ~r(#{api_endpoint}.*/messages\?id=.*&limit=\d+&min_id=.*; rel=\"prev\"$) + ) assert length(result) == 20 - result = - conn - |> get("/api/v1/pleroma/chats/#{chat.id}/messages?max_id=#{List.last(result)["id"]}") - |> json_response_and_validate_schema(200) + response = + get(conn, "/api/v1/pleroma/chats/#{chat.id}/messages?max_id=#{List.last(result)["id"]}") + + result = json_response_and_validate_schema(response, 200) + [next, prev] = get_resp_header(response, "link") |> hd() |> String.split(", ") + + assert String.match?( + next, + ~r(#{api_endpoint}.*/messages\?id=.*&limit=\d+&max_id=.*; rel=\"next\"$) + ) + + assert String.match?( + prev, + ~r(#{api_endpoint}.*/messages\?id=.*&limit=\d+&max_id=.*&min_id=.*; rel=\"prev\"$) + ) assert length(result) == 10 end @@ -223,12 +245,10 @@ test "it returns the messages for a given chat", %{conn: conn, user: user} do assert length(result) == 3 # Trying to get the chat of a different user - result = - conn - |> assign(:user, other_user) - |> get("/api/v1/pleroma/chats/#{chat.id}/messages") - - assert result |> json_response(404) + conn + |> assign(:user, other_user) + |> get("/api/v1/pleroma/chats/#{chat.id}/messages") + |> json_response_and_validate_schema(404) end end From 3ce658b93098551792a69f2455e6e9339a1722e2 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Tue, 25 Aug 2020 19:17:51 +0300 Subject: [PATCH 168/460] schedule expired oauth tokens deletion with Oban --- config/config.exs | 2 +- config/description.exs | 1 - lib/pleroma/web/oauth/token.ex | 24 ++++++++++------ lib/pleroma/web/oauth/token/clean_worker.ex | 2 -- lib/pleroma/web/oauth/token/query.ex | 6 ---- .../web/oauth/token/strategy/refresh_token.ex | 2 +- .../workers/cron/clear_oauth_token_worker.ex | 23 --------------- lib/pleroma/workers/purge_expired_token.ex | 28 +++++++++++++++++++ test/plugs/oauth_plug_test.exs | 2 +- test/web/oauth/token_test.exs | 13 --------- .../twitter_api/password_controller_test.exs | 4 +-- .../cron/clear_oauth_token_worker_test.exs | 22 --------------- .../purge_expired_oauth_token_test.exs | 27 ++++++++++++++++++ 13 files changed, 76 insertions(+), 80 deletions(-) delete mode 100644 lib/pleroma/workers/cron/clear_oauth_token_worker.ex create mode 100644 lib/pleroma/workers/purge_expired_token.ex delete mode 100644 test/workers/cron/clear_oauth_token_worker_test.exs create mode 100644 test/workers/purge_expired_oauth_token_test.exs diff --git a/config/config.exs b/config/config.exs index 1a2b312b5..fa4c96b79 100644 --- a/config/config.exs +++ b/config/config.exs @@ -530,6 +530,7 @@ log: false, queues: [ activity_expiration: 10, + oauth_token_expiration: 1, federator_incoming: 50, federator_outgoing: 50, web_push: 50, @@ -543,7 +544,6 @@ ], plugins: [Oban.Plugins.Pruner], crontab: [ - {"0 0 * * *", Pleroma.Workers.Cron.ClearOauthTokenWorker}, {"* * * * *", Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker}, {"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker}, {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker} diff --git a/config/description.exs b/config/description.exs index eac97ad64..4c4deed30 100644 --- a/config/description.exs +++ b/config/description.exs @@ -2290,7 +2290,6 @@ type: {:list, :tuple}, description: "Settings for cron background jobs", suggestions: [ - {"0 0 * * *", Pleroma.Workers.Cron.ClearOauthTokenWorker}, {"* * * * *", Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker}, {"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker}, {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker} diff --git a/lib/pleroma/web/oauth/token.ex b/lib/pleroma/web/oauth/token.ex index 08bb7326d..4d00fcb1c 100644 --- a/lib/pleroma/web/oauth/token.ex +++ b/lib/pleroma/web/oauth/token.ex @@ -50,7 +50,7 @@ def exchange_token(app, auth) do true <- auth.app_id == app.id do user = if auth.user_id, do: User.get_cached_by_id(auth.user_id), else: %User{} - create_token( + create( app, user, %{scopes: auth.scopes} @@ -83,8 +83,21 @@ defp put_valid_until(changeset, attrs) do |> validate_required([:valid_until]) end - @spec create_token(App.t(), User.t(), map()) :: {:ok, Token} | {:error, Changeset.t()} - def create_token(%App{} = app, %User{} = user, attrs \\ %{}) do + @spec create(App.t(), User.t(), map()) :: {:ok, Token} | {:error, Changeset.t()} + def create(%App{} = app, %User{} = user, attrs \\ %{}) do + with {:ok, token} <- do_create(app, user, attrs) do + if Pleroma.Config.get([:oauth2, :clean_expired_tokens]) do + Pleroma.Workers.PurgeExpiredOAuthToken.enqueue(%{ + token_id: token.id, + valid_until: DateTime.from_naive!(token.valid_until, "Etc/UTC") + }) + end + + {:ok, token} + end + end + + defp do_create(app, user, attrs) do %__MODULE__{user_id: user.id, app_id: app.id} |> cast(%{scopes: attrs[:scopes] || app.scopes}, [:scopes]) |> validate_required([:scopes, :app_id]) @@ -105,11 +118,6 @@ def delete_user_token(%User{id: user_id}, token_id) do |> Repo.delete_all() end - def delete_expired_tokens do - Query.get_expired_tokens() - |> Repo.delete_all() - end - def get_user_tokens(%User{id: user_id}) do Query.get_by_user(user_id) |> Query.preload([:app]) diff --git a/lib/pleroma/web/oauth/token/clean_worker.ex b/lib/pleroma/web/oauth/token/clean_worker.ex index e3aa4eb7e..2f51bdb75 100644 --- a/lib/pleroma/web/oauth/token/clean_worker.ex +++ b/lib/pleroma/web/oauth/token/clean_worker.ex @@ -12,7 +12,6 @@ defmodule Pleroma.Web.OAuth.Token.CleanWorker do @one_day 86_400_000 alias Pleroma.MFA - alias Pleroma.Web.OAuth alias Pleroma.Workers.BackgroundWorker def start_link(_), do: GenServer.start_link(__MODULE__, %{}) @@ -32,7 +31,6 @@ def handle_info(:perform, state) do end def perform(:clean) do - OAuth.Token.delete_expired_tokens() MFA.Token.delete_expired_tokens() end end diff --git a/lib/pleroma/web/oauth/token/query.ex b/lib/pleroma/web/oauth/token/query.ex index 93d6e26ed..fd6d9b112 100644 --- a/lib/pleroma/web/oauth/token/query.ex +++ b/lib/pleroma/web/oauth/token/query.ex @@ -33,12 +33,6 @@ def get_by_id(query \\ Token, id) do from(q in query, where: q.id == ^id) end - @spec get_expired_tokens(query, DateTime.t() | nil) :: query - def get_expired_tokens(query \\ Token, date \\ nil) do - expired_date = date || Timex.now() - from(q in query, where: fragment("?", q.valid_until) < ^expired_date) - end - @spec get_by_user(query, String.t()) :: query def get_by_user(query \\ Token, user_id) do from(q in query, where: q.user_id == ^user_id) diff --git a/lib/pleroma/web/oauth/token/strategy/refresh_token.ex b/lib/pleroma/web/oauth/token/strategy/refresh_token.ex index debc29b0b..625b0fde2 100644 --- a/lib/pleroma/web/oauth/token/strategy/refresh_token.ex +++ b/lib/pleroma/web/oauth/token/strategy/refresh_token.ex @@ -46,7 +46,7 @@ defp revoke_access_token(token) do defp create_access_token({:error, error}, _), do: {:error, error} defp create_access_token({:ok, token}, %{app: app, user: user} = token_params) do - Token.create_token(app, user, add_refresh_token(token_params, token.refresh_token)) + Token.create(app, user, add_refresh_token(token_params, token.refresh_token)) end defp add_refresh_token(params, token) do diff --git a/lib/pleroma/workers/cron/clear_oauth_token_worker.ex b/lib/pleroma/workers/cron/clear_oauth_token_worker.ex deleted file mode 100644 index 276f47efc..000000000 --- a/lib/pleroma/workers/cron/clear_oauth_token_worker.ex +++ /dev/null @@ -1,23 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Workers.Cron.ClearOauthTokenWorker do - @moduledoc """ - The worker to cleanup expired oAuth tokens. - """ - - use Oban.Worker, queue: "background" - - alias Pleroma.Config - alias Pleroma.Web.OAuth.Token - - @impl Oban.Worker - def perform(_job) do - if Config.get([:oauth2, :clean_expired_tokens], false) do - Token.delete_expired_tokens() - end - - :ok - end -end diff --git a/lib/pleroma/workers/purge_expired_token.ex b/lib/pleroma/workers/purge_expired_token.ex new file mode 100644 index 000000000..6068e43bf --- /dev/null +++ b/lib/pleroma/workers/purge_expired_token.ex @@ -0,0 +1,28 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.PurgeExpiredOAuthToken do + @moduledoc """ + Worker which purges expired OAuth tokens + """ + + use Oban.Worker, queue: :oauth_token_expiration, max_attempts: 1 + + @spec enqueue(%{token_id: integer(), valid_until: DateTime.t()}) :: + {:ok, Oban.Job.t()} | {:error, Ecto.Changeset.t()} + def enqueue(args) do + {scheduled_at, args} = Map.pop(args, :valid_until) + + args + |> __MODULE__.new(scheduled_at: scheduled_at) + |> Oban.insert() + end + + @impl true + def perform(%Oban.Job{args: %{"token_id" => id}}) do + Pleroma.Web.OAuth.Token + |> Pleroma.Repo.get(id) + |> Pleroma.Repo.delete() + end +end diff --git a/test/plugs/oauth_plug_test.exs b/test/plugs/oauth_plug_test.exs index f74c068cd..9d39d3153 100644 --- a/test/plugs/oauth_plug_test.exs +++ b/test/plugs/oauth_plug_test.exs @@ -16,7 +16,7 @@ defmodule Pleroma.Plugs.OAuthPlugTest do setup %{conn: conn} do user = insert(:user) - {:ok, %{token: token}} = Pleroma.Web.OAuth.Token.create_token(insert(:oauth_app), user) + {:ok, %{token: token}} = Pleroma.Web.OAuth.Token.create(insert(:oauth_app), user) %{user: user, token: token, conn: conn} end diff --git a/test/web/oauth/token_test.exs b/test/web/oauth/token_test.exs index 40d71eb59..c88b9cc98 100644 --- a/test/web/oauth/token_test.exs +++ b/test/web/oauth/token_test.exs @@ -69,17 +69,4 @@ test "deletes all tokens of a user" do assert tokens == 2 end - - test "deletes expired tokens" do - insert(:oauth_token, valid_until: Timex.shift(Timex.now(), days: -3)) - insert(:oauth_token, valid_until: Timex.shift(Timex.now(), days: -3)) - t3 = insert(:oauth_token) - t4 = insert(:oauth_token, valid_until: Timex.shift(Timex.now(), minutes: 10)) - {tokens, _} = Token.delete_expired_tokens() - assert tokens == 2 - available_tokens = Pleroma.Repo.all(Token) - - token_ids = available_tokens |> Enum.map(& &1.id) - assert token_ids == [t3.id, t4.id] - end end diff --git a/test/web/twitter_api/password_controller_test.exs b/test/web/twitter_api/password_controller_test.exs index 231a46c67..a5e9e2178 100644 --- a/test/web/twitter_api/password_controller_test.exs +++ b/test/web/twitter_api/password_controller_test.exs @@ -37,7 +37,7 @@ test "it shows password reset form", %{conn: conn} do test "it returns HTTP 200", %{conn: conn} do user = insert(:user) {:ok, token} = PasswordResetToken.create_token(user) - {:ok, _access_token} = Token.create_token(insert(:oauth_app), user, %{}) + {:ok, _access_token} = Token.create(insert(:oauth_app), user, %{}) params = %{ "password" => "test", @@ -62,7 +62,7 @@ test "it sets password_reset_pending to false", %{conn: conn} do user = insert(:user, password_reset_pending: true) {:ok, token} = PasswordResetToken.create_token(user) - {:ok, _access_token} = Token.create_token(insert(:oauth_app), user, %{}) + {:ok, _access_token} = Token.create(insert(:oauth_app), user, %{}) params = %{ "password" => "test", diff --git a/test/workers/cron/clear_oauth_token_worker_test.exs b/test/workers/cron/clear_oauth_token_worker_test.exs deleted file mode 100644 index 67836f34f..000000000 --- a/test/workers/cron/clear_oauth_token_worker_test.exs +++ /dev/null @@ -1,22 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Workers.Cron.ClearOauthTokenWorkerTest do - use Pleroma.DataCase - - import Pleroma.Factory - alias Pleroma.Workers.Cron.ClearOauthTokenWorker - - setup do: clear_config([:oauth2, :clean_expired_tokens]) - - test "deletes expired tokens" do - insert(:oauth_token, - valid_until: NaiveDateTime.add(NaiveDateTime.utc_now(), -60 * 10) - ) - - Pleroma.Config.put([:oauth2, :clean_expired_tokens], true) - ClearOauthTokenWorker.perform(%Oban.Job{}) - assert Pleroma.Repo.all(Pleroma.Web.OAuth.Token) == [] - end -end diff --git a/test/workers/purge_expired_oauth_token_test.exs b/test/workers/purge_expired_oauth_token_test.exs new file mode 100644 index 000000000..3bd650d89 --- /dev/null +++ b/test/workers/purge_expired_oauth_token_test.exs @@ -0,0 +1,27 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.PurgeExpiredOAuthTokenTest do + use Pleroma.DataCase, async: true + use Oban.Testing, repo: Pleroma.Repo + + import Pleroma.Factory + + setup do: clear_config([:oauth2, :clean_expired_tokens], true) + + test "purges expired token" do + user = insert(:user) + app = insert(:oauth_app) + + {:ok, %{id: id}} = Pleroma.Web.OAuth.Token.create(app, user) + + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredOAuthToken, + args: %{token_id: id} + ) + + assert {:ok, %{id: ^id}} = + perform_job(Pleroma.Workers.PurgeExpiredOAuthToken, %{token_id: id}) + end +end From 7dd986a563545cb63e8404d9b107f1d29c499940 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Sat, 5 Sep 2020 18:35:01 +0300 Subject: [PATCH 169/460] expire mfa tokens through Oban --- config/config.exs | 2 +- docs/configuration/cheatsheet.md | 10 +-- lib/pleroma/mfa/token.ex | 71 +++++++++---------- lib/pleroma/web/oauth/oauth_controller.ex | 4 +- lib/pleroma/web/oauth/token.ex | 5 +- lib/pleroma/web/oauth/token/clean_worker.ex | 36 ---------- .../controllers/remote_follow_controller.ex | 2 +- lib/pleroma/workers/purge_expired_token.ex | 11 +-- .../remote_follow_controller_test.exs | 4 +- .../purge_expired_oauth_token_test.exs | 27 ------- test/workers/purge_expired_token_test.exs | 51 +++++++++++++ 11 files changed, 106 insertions(+), 117 deletions(-) delete mode 100644 lib/pleroma/web/oauth/token/clean_worker.ex delete mode 100644 test/workers/purge_expired_oauth_token_test.exs create mode 100644 test/workers/purge_expired_token_test.exs diff --git a/config/config.exs b/config/config.exs index fa4c96b79..95a6ea9db 100644 --- a/config/config.exs +++ b/config/config.exs @@ -530,7 +530,7 @@ log: false, queues: [ activity_expiration: 10, - oauth_token_expiration: 1, + token_expiration: 5, federator_incoming: 50, federator_outgoing: 50, web_push: 50, diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index ec59896ec..d0bebbd45 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -691,9 +691,8 @@ Pleroma has the following queues: Pleroma has these periodic job workers: -`Pleroma.Workers.Cron.ClearOauthTokenWorker` - a job worker to cleanup expired oauth tokens. - -Example: +* `Pleroma.Workers.Cron.DigestEmailsWorker` - digest emails for users with new mentions and follows +* `Pleroma.Workers.Cron.NewUsersDigestWorker` - digest emails for admins with new registrations ```elixir config :pleroma, Oban, @@ -705,7 +704,8 @@ config :pleroma, Oban, federator_outgoing: 50 ], crontab: [ - {"0 0 * * *", Pleroma.Workers.Cron.ClearOauthTokenWorker} + {"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker}, + {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker} ] ``` @@ -972,7 +972,7 @@ Configure OAuth 2 provider capabilities: * `token_expires_in` - The lifetime in seconds of the access token. * `issue_new_refresh_token` - Keeps old refresh token or generate new refresh token when to obtain an access token. -* `clean_expired_tokens` - Enable a background job to clean expired oauth tokens. Defaults to `false`. Interval settings sets in configuration periodic jobs [`Oban.Cron`](#obancron) +* `clean_expired_tokens` - Enable a background job to clean expired oauth tokens. Defaults to `false`. ## Link parsing diff --git a/lib/pleroma/mfa/token.ex b/lib/pleroma/mfa/token.ex index 0b2449971..69b64c0e8 100644 --- a/lib/pleroma/mfa/token.ex +++ b/lib/pleroma/mfa/token.ex @@ -10,10 +10,11 @@ defmodule Pleroma.MFA.Token do alias Pleroma.Repo alias Pleroma.User alias Pleroma.Web.OAuth.Authorization - alias Pleroma.Web.OAuth.Token, as: OAuthToken @expires 300 + @type t() :: %__MODULE__{} + schema "mfa_tokens" do field(:token, :string) field(:valid_until, :naive_datetime_usec) @@ -24,6 +25,7 @@ defmodule Pleroma.MFA.Token do timestamps() end + @spec get_by_token(String.t()) :: {:ok, t()} | {:error, :not_found} def get_by_token(token) do from( t in __MODULE__, @@ -33,33 +35,40 @@ def get_by_token(token) do |> Repo.find_resource() end - def validate(token) do - with {:fetch_token, {:ok, token}} <- {:fetch_token, get_by_token(token)}, - {:expired, false} <- {:expired, is_expired?(token)} do + @spec validate(String.t()) :: {:ok, t()} | {:error, :not_found} | {:error, :expired_token} + def validate(token_str) do + with {:ok, token} <- get_by_token(token_str), + false <- expired?(token) do {:ok, token} - else - {:expired, _} -> {:error, :expired_token} - {:fetch_token, _} -> {:error, :not_found} - error -> {:error, error} end end - def create_token(%User{} = user) do - %__MODULE__{} - |> change - |> assign_user(user) - |> put_token - |> put_valid_until - |> Repo.insert() + defp expired?(%__MODULE__{valid_until: valid_until}) do + with true <- NaiveDateTime.diff(NaiveDateTime.utc_now(), valid_until) > 0 do + {:error, :expired_token} + end end - def create_token(user, authorization) do + @spec create(User.t(), Authorization.t() | nil) :: {:ok, t()} | {:error, Ecto.Changeset.t()} + def create(user, authorization \\ nil) do + with {:ok, token} <- do_create(user, authorization) do + Pleroma.Workers.PurgeExpiredToken.enqueue(%{ + token_id: token.id, + valid_until: DateTime.from_naive!(token.valid_until, "Etc/UTC"), + mod: __MODULE__ + }) + + {:ok, token} + end + end + + defp do_create(user, authorization) do %__MODULE__{} - |> change + |> change() |> assign_user(user) - |> assign_authorization(authorization) - |> put_token - |> put_valid_until + |> maybe_assign_authorization(authorization) + |> put_token() + |> put_valid_until() |> Repo.insert() end @@ -69,15 +78,19 @@ defp assign_user(changeset, user) do |> validate_required([:user]) end - defp assign_authorization(changeset, authorization) do + defp maybe_assign_authorization(changeset, %Authorization{} = authorization) do changeset |> put_assoc(:authorization, authorization) |> validate_required([:authorization]) end + defp maybe_assign_authorization(changeset, _), do: changeset + defp put_token(changeset) do + token = Pleroma.Web.OAuth.Token.Utils.generate_token() + changeset - |> change(%{token: OAuthToken.Utils.generate_token()}) + |> change(%{token: token}) |> validate_required([:token]) |> unique_constraint(:token) end @@ -89,18 +102,4 @@ defp put_valid_until(changeset) do |> change(%{valid_until: expires_in}) |> validate_required([:valid_until]) end - - def is_expired?(%__MODULE__{valid_until: valid_until}) do - NaiveDateTime.diff(NaiveDateTime.utc_now(), valid_until) > 0 - end - - def is_expired?(_), do: false - - def delete_expired_tokens do - from( - q in __MODULE__, - where: fragment("?", q.valid_until) < ^Timex.now() - ) - |> Repo.delete_all() - end end diff --git a/lib/pleroma/web/oauth/oauth_controller.ex b/lib/pleroma/web/oauth/oauth_controller.ex index dd00600ea..bbe7aa8a0 100644 --- a/lib/pleroma/web/oauth/oauth_controller.ex +++ b/lib/pleroma/web/oauth/oauth_controller.ex @@ -197,7 +197,7 @@ defp handle_create_authorization_error( {:mfa_required, user, auth, _}, params ) do - {:ok, token} = MFA.Token.create_token(user, auth) + {:ok, token} = MFA.Token.create(user, auth) data = %{ "mfa_token" => token.token, @@ -579,7 +579,7 @@ defp put_session_registration_id(%Plug.Conn{} = conn, registration_id), do: put_session(conn, :registration_id, registration_id) defp build_and_response_mfa_token(user, auth) do - with {:ok, token} <- MFA.Token.create_token(user, auth) do + with {:ok, token} <- MFA.Token.create(user, auth) do MFAView.render("mfa_response.json", %{token: token, user: user}) end end diff --git a/lib/pleroma/web/oauth/token.ex b/lib/pleroma/web/oauth/token.ex index 4d00fcb1c..de37998f2 100644 --- a/lib/pleroma/web/oauth/token.ex +++ b/lib/pleroma/web/oauth/token.ex @@ -87,9 +87,10 @@ defp put_valid_until(changeset, attrs) do def create(%App{} = app, %User{} = user, attrs \\ %{}) do with {:ok, token} <- do_create(app, user, attrs) do if Pleroma.Config.get([:oauth2, :clean_expired_tokens]) do - Pleroma.Workers.PurgeExpiredOAuthToken.enqueue(%{ + Pleroma.Workers.PurgeExpiredToken.enqueue(%{ token_id: token.id, - valid_until: DateTime.from_naive!(token.valid_until, "Etc/UTC") + valid_until: DateTime.from_naive!(token.valid_until, "Etc/UTC"), + mod: __MODULE__ }) end diff --git a/lib/pleroma/web/oauth/token/clean_worker.ex b/lib/pleroma/web/oauth/token/clean_worker.ex deleted file mode 100644 index 2f51bdb75..000000000 --- a/lib/pleroma/web/oauth/token/clean_worker.ex +++ /dev/null @@ -1,36 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.OAuth.Token.CleanWorker do - @moduledoc """ - The module represents functions to clean an expired OAuth and MFA tokens. - """ - use GenServer - - @ten_seconds 10_000 - @one_day 86_400_000 - - alias Pleroma.MFA - alias Pleroma.Workers.BackgroundWorker - - def start_link(_), do: GenServer.start_link(__MODULE__, %{}) - - def init(_) do - Process.send_after(self(), :perform, @ten_seconds) - {:ok, nil} - end - - @doc false - def handle_info(:perform, state) do - BackgroundWorker.enqueue("clean_expired_tokens", %{}) - interval = Pleroma.Config.get([:oauth2, :clean_expired_tokens_interval], @one_day) - - Process.send_after(self(), :perform, interval) - {:noreply, state} - end - - def perform(:clean) do - MFA.Token.delete_expired_tokens() - end -end diff --git a/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex b/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex index 521dc9322..072d889e2 100644 --- a/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex @@ -135,7 +135,7 @@ defp handle_follow_error(conn, {:verify_mfa_code, followee, token, _} = _) do end defp handle_follow_error(conn, {:mfa_required, followee, user, _} = _) do - {:ok, %{token: token}} = MFA.Token.create_token(user) + {:ok, %{token: token}} = MFA.Token.create(user) render(conn, "follow_mfa.html", %{followee: followee, mfa_token: token, error: false}) end diff --git a/lib/pleroma/workers/purge_expired_token.ex b/lib/pleroma/workers/purge_expired_token.ex index 6068e43bf..a81e0cd28 100644 --- a/lib/pleroma/workers/purge_expired_token.ex +++ b/lib/pleroma/workers/purge_expired_token.ex @@ -2,14 +2,14 @@ # Copyright © 2017-2020 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Workers.PurgeExpiredOAuthToken do +defmodule Pleroma.Workers.PurgeExpiredToken do @moduledoc """ Worker which purges expired OAuth tokens """ - use Oban.Worker, queue: :oauth_token_expiration, max_attempts: 1 + use Oban.Worker, queue: :token_expiration, max_attempts: 1 - @spec enqueue(%{token_id: integer(), valid_until: DateTime.t()}) :: + @spec enqueue(%{token_id: integer(), valid_until: DateTime.t(), mod: module()}) :: {:ok, Oban.Job.t()} | {:error, Ecto.Changeset.t()} def enqueue(args) do {scheduled_at, args} = Map.pop(args, :valid_until) @@ -20,8 +20,9 @@ def enqueue(args) do end @impl true - def perform(%Oban.Job{args: %{"token_id" => id}}) do - Pleroma.Web.OAuth.Token + def perform(%Oban.Job{args: %{"token_id" => id, "mod" => module}}) do + module + |> String.to_existing_atom() |> Pleroma.Repo.get(id) |> Pleroma.Repo.delete() end diff --git a/test/web/twitter_api/remote_follow_controller_test.exs b/test/web/twitter_api/remote_follow_controller_test.exs index f7e54c26a..3852c7ce9 100644 --- a/test/web/twitter_api/remote_follow_controller_test.exs +++ b/test/web/twitter_api/remote_follow_controller_test.exs @@ -227,7 +227,7 @@ test "follows", %{conn: conn} do } ) - {:ok, %{token: token}} = MFA.Token.create_token(user) + {:ok, %{token: token}} = MFA.Token.create(user) user2 = insert(:user) otp_token = TOTP.generate_token(otp_secret) @@ -256,7 +256,7 @@ test "returns error when auth code is incorrect", %{conn: conn} do } ) - {:ok, %{token: token}} = MFA.Token.create_token(user) + {:ok, %{token: token}} = MFA.Token.create(user) user2 = insert(:user) otp_token = TOTP.generate_token(TOTP.generate_secret()) diff --git a/test/workers/purge_expired_oauth_token_test.exs b/test/workers/purge_expired_oauth_token_test.exs deleted file mode 100644 index 3bd650d89..000000000 --- a/test/workers/purge_expired_oauth_token_test.exs +++ /dev/null @@ -1,27 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Workers.PurgeExpiredOAuthTokenTest do - use Pleroma.DataCase, async: true - use Oban.Testing, repo: Pleroma.Repo - - import Pleroma.Factory - - setup do: clear_config([:oauth2, :clean_expired_tokens], true) - - test "purges expired token" do - user = insert(:user) - app = insert(:oauth_app) - - {:ok, %{id: id}} = Pleroma.Web.OAuth.Token.create(app, user) - - assert_enqueued( - worker: Pleroma.Workers.PurgeExpiredOAuthToken, - args: %{token_id: id} - ) - - assert {:ok, %{id: ^id}} = - perform_job(Pleroma.Workers.PurgeExpiredOAuthToken, %{token_id: id}) - end -end diff --git a/test/workers/purge_expired_token_test.exs b/test/workers/purge_expired_token_test.exs new file mode 100644 index 000000000..fb7708c3f --- /dev/null +++ b/test/workers/purge_expired_token_test.exs @@ -0,0 +1,51 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.PurgeExpiredTokenTest do + use Pleroma.DataCase, async: true + use Oban.Testing, repo: Pleroma.Repo + + import Pleroma.Factory + + setup do: clear_config([:oauth2, :clean_expired_tokens], true) + + test "purges expired oauth token" do + user = insert(:user) + app = insert(:oauth_app) + + {:ok, %{id: id}} = Pleroma.Web.OAuth.Token.create(app, user) + + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredToken, + args: %{token_id: id, mod: Pleroma.Web.OAuth.Token} + ) + + assert {:ok, %{id: ^id}} = + perform_job(Pleroma.Workers.PurgeExpiredToken, %{ + token_id: id, + mod: Pleroma.Web.OAuth.Token + }) + + assert Repo.aggregate(Pleroma.Web.OAuth.Token, :count, :id) == 0 + end + + test "purges expired mfa token" do + authorization = insert(:oauth_authorization) + + {:ok, %{id: id}} = Pleroma.MFA.Token.create(authorization.user, authorization) + + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredToken, + args: %{token_id: id, mod: Pleroma.MFA.Token} + ) + + assert {:ok, %{id: ^id}} = + perform_job(Pleroma.Workers.PurgeExpiredToken, %{ + token_id: id, + mod: Pleroma.MFA.Token + }) + + assert Repo.aggregate(Pleroma.MFA.Token, :count, :id) == 0 + end +end From c6647c08e10a45aedcd77258a0e71c41d213eaa6 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 7 Sep 2020 11:54:10 +0300 Subject: [PATCH 170/460] migration and changelog --- CHANGELOG.md | 1 + ...ar_oauth_token_worker_from_oban_config.exs | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 priv/repo/migrations/20200907084956_remove_cron_clear_oauth_token_worker_from_oban_config.exs diff --git a/CHANGELOG.md b/CHANGELOG.md index 19b2596cc..14c0252f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Removed - **Breaking:** Removed `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab`. +- **Breaking:** Removed `Pleroma.Workers.Cron.ClearOauthTokenWorker` setting from Oban `:crontab` config. ## [2.1.1] - 2020-09-08 diff --git a/priv/repo/migrations/20200907084956_remove_cron_clear_oauth_token_worker_from_oban_config.exs b/priv/repo/migrations/20200907084956_remove_cron_clear_oauth_token_worker_from_oban_config.exs new file mode 100644 index 000000000..d9c972563 --- /dev/null +++ b/priv/repo/migrations/20200907084956_remove_cron_clear_oauth_token_worker_from_oban_config.exs @@ -0,0 +1,20 @@ +defmodule Pleroma.Repo.Migrations.RemoveCronClearOauthTokenWorkerFromObanConfig do + use Ecto.Migration + + def change do + with %Pleroma.ConfigDB{} = config <- + Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: Oban}), + crontab when is_list(crontab) <- config.value[:crontab], + index when is_integer(index) <- + Enum.find_index(crontab, fn {_, worker} -> + worker == Pleroma.Workers.Cron.ClearOauthTokenWorker + end) do + updated_value = Keyword.put(config.value, :crontab, List.delete_at(crontab, index)) + + config + |> Ecto.Changeset.change(value: updated_value) + |> Pleroma.Repo.update() + end + + end +end From e11fca88d424b394359f50646e4b4ec9b3ae1a8b Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 7 Sep 2020 13:44:42 +0300 Subject: [PATCH 171/460] migration to move tokens expiration into Oban --- ...92050_move_tokens_expiration_into_oban.exs | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs diff --git a/priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs b/priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs new file mode 100644 index 000000000..832bd02a7 --- /dev/null +++ b/priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs @@ -0,0 +1,36 @@ +defmodule Pleroma.Repo.Migrations.MoveTokensExpirationIntoOban do + use Ecto.Migration + + import Ecto.Query, only: [from: 2] + + def change do + Supervisor.start_link([{Oban, Pleroma.Config.get(Oban)}], + strategy: :one_for_one, + name: Pleroma.Supervisor + ) + + if Pleroma.Config.get([:oauth2, :clean_expired_tokens]) do + from(t in Pleroma.Web.OAuth.Token, where: t.valid_until > ^NaiveDateTime.utc_now()) + |> Pleroma.Repo.stream() + |> Stream.each(fn token -> + Pleroma.Workers.PurgeExpiredToken.enqueue(%{ + token_id: token.id, + valid_until: DateTime.from_naive!(token.valid_until, "Etc/UTC"), + mod: Pleroma.Web.OAuth.Token + }) + end) + |> Stream.run() + end + + from(t in Pleroma.MFA.Token, where: t.valid_until > ^NaiveDateTime.utc_now()) + |> Pleroma.Repo.stream() + |> Stream.each(fn token -> + Pleroma.Workers.PurgeExpiredToken.enqueue(%{ + token_id: token.id, + valid_until: DateTime.from_naive!(token.valid_until, "Etc/UTC"), + mod: Pleroma.MFA.Token + }) + end) + |> Stream.run() + end +end From eca42566ba62ece75b79915f4af0c8a0f0c48a17 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 7 Sep 2020 13:54:28 +0300 Subject: [PATCH 172/460] formatting --- ...6_remove_cron_clear_oauth_token_worker_from_oban_config.exs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/priv/repo/migrations/20200907084956_remove_cron_clear_oauth_token_worker_from_oban_config.exs b/priv/repo/migrations/20200907084956_remove_cron_clear_oauth_token_worker_from_oban_config.exs index d9c972563..b5a0a0ff6 100644 --- a/priv/repo/migrations/20200907084956_remove_cron_clear_oauth_token_worker_from_oban_config.exs +++ b/priv/repo/migrations/20200907084956_remove_cron_clear_oauth_token_worker_from_oban_config.exs @@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.RemoveCronClearOauthTokenWorkerFromObanConfig use Ecto.Migration def change do - with %Pleroma.ConfigDB{} = config <- + with %Pleroma.ConfigDB{} = config <- Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: Oban}), crontab when is_list(crontab) <- config.value[:crontab], index when is_integer(index) <- @@ -15,6 +15,5 @@ def change do |> Ecto.Changeset.change(value: updated_value) |> Pleroma.Repo.update() end - end end From 8af1fd32234df7d0cdb74d78bcca9f68587b70f2 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 7 Sep 2020 20:06:28 +0300 Subject: [PATCH 173/460] oban warning --- lib/pleroma/config/oban.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/config/oban.ex b/lib/pleroma/config/oban.ex index c2d56ebab..81758c93d 100644 --- a/lib/pleroma/config/oban.ex +++ b/lib/pleroma/config/oban.ex @@ -5,7 +5,7 @@ def warn do oban_config = Pleroma.Config.get(Oban) crontab = - [Pleroma.Workers.Cron.StatsWorker] + [Pleroma.Workers.Cron.StatsWorker, Pleroma.Workers.Cron.ClearOauthTokenWorker] |> Enum.reduce(oban_config[:crontab], fn removed_worker, acc -> with acc when is_list(acc) <- acc, setting when is_tuple(setting) <- From e8bfb50fa3c16f98845e326b153c8a89505e8a55 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 10 Sep 2020 20:09:44 +0300 Subject: [PATCH 174/460] pass options without adapter key --- lib/pleroma/reverse_proxy/client/tesla.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/reverse_proxy/client/tesla.ex b/lib/pleroma/reverse_proxy/client/tesla.ex index d5a339681..4b118eec2 100644 --- a/lib/pleroma/reverse_proxy/client/tesla.ex +++ b/lib/pleroma/reverse_proxy/client/tesla.ex @@ -28,7 +28,7 @@ def request(method, url, headers, body, opts \\ []) do url, body, headers, - Keyword.put(opts, :adapter, opts) + opts ) do if is_map(response.body) and method != :head do {:ok, response.status, response.headers, response.body} From cb06e98da27994ac8034f3ba387b6eeaf8a2c48f Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 10 Sep 2020 13:47:53 +0300 Subject: [PATCH 175/460] websocket handler: Do not log client ping frames as errors --- lib/pleroma/web/mastodon_api/websocket_handler.ex | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/mastodon_api/websocket_handler.ex b/lib/pleroma/web/mastodon_api/websocket_handler.ex index 94e4595d8..e6010bb4a 100644 --- a/lib/pleroma/web/mastodon_api/websocket_handler.ex +++ b/lib/pleroma/web/mastodon_api/websocket_handler.ex @@ -64,7 +64,9 @@ def websocket_handle(:pong, state) do {:ok, %{state | timer: timer()}} end - # We never receive messages. + # We only receive pings for now + def websocket_handle(:ping, state), do: {:ok, state} + def websocket_handle(frame, state) do Logger.error("#{__MODULE__} received frame: #{inspect(frame)}") {:ok, state} From e16e8f98169f822416c18778abfa8495a486c8f2 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 10 Sep 2020 13:48:24 +0300 Subject: [PATCH 176/460] Websocket handler: do not raise if handler is terminated before switching protocols Closes #2131 --- lib/pleroma/web/mastodon_api/websocket_handler.ex | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/pleroma/web/mastodon_api/websocket_handler.ex b/lib/pleroma/web/mastodon_api/websocket_handler.ex index e6010bb4a..5090d9622 100644 --- a/lib/pleroma/web/mastodon_api/websocket_handler.ex +++ b/lib/pleroma/web/mastodon_api/websocket_handler.ex @@ -100,6 +100,10 @@ def websocket_info(:tick, state) do {:reply, :ping, %{state | timer: nil, count: 0}, :hibernate} end + # State can be `[]` only in case we terminate before switching to websocket, + # we already log errors for these cases in `init/1`, so just do nothing here + def terminate(_reason, _req, []), do: :ok + def terminate(reason, _req, state) do Logger.debug( "#{__MODULE__} terminating websocket connection for user #{ From 01fa68fe4542286519e3520793c6b59103b050ff Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 10 Sep 2020 21:26:52 +0300 Subject: [PATCH 177/460] Websocket handler: fix never matching code on failed auth `:cowboy_req.reply` does not return tuples since 2.0, see https://ninenines.eu/docs/en/cowboy/2.4/manual/cowboy_req.reply/ --- lib/pleroma/web/mastodon_api/websocket_handler.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/mastodon_api/websocket_handler.ex b/lib/pleroma/web/mastodon_api/websocket_handler.ex index 5090d9622..cf923ded8 100644 --- a/lib/pleroma/web/mastodon_api/websocket_handler.ex +++ b/lib/pleroma/web/mastodon_api/websocket_handler.ex @@ -37,12 +37,12 @@ def init(%{qs: qs} = req, state) do else {:error, :bad_topic} -> Logger.debug("#{__MODULE__} bad topic #{inspect(req)}") - {:ok, req} = :cowboy_req.reply(404, req) + req = :cowboy_req.reply(404, req) {:ok, req, state} {:error, :unauthorized} -> Logger.debug("#{__MODULE__} authentication error: #{inspect(req)}") - {:ok, req} = :cowboy_req.reply(401, req) + req = :cowboy_req.reply(401, req) {:ok, req, state} end end From dc4e06e1991379f9f1b64774c5bdaacec96639b7 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Thu, 10 Sep 2020 21:28:07 +0300 Subject: [PATCH 178/460] [#2497] Removed support for thumbnail_max_* params for media preview proxy (per https://git.pleroma.social/pleroma/pleroma/-/merge_requests/2497#note_70771) --- .../web/media_proxy/media_proxy_controller.ex | 38 +++++++------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index acb581459..5621f72dc 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -9,6 +9,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do alias Pleroma.Helpers.MediaHelper alias Pleroma.ReverseProxy alias Pleroma.Web.MediaProxy + alias Plug.Conn def remote(conn, %{"sig" => sig64, "url" => url64}) do with {_, true} <- {:enabled, MediaProxy.enabled?()}, @@ -18,29 +19,29 @@ def remote(conn, %{"sig" => sig64, "url" => url64}) do ReverseProxy.call(conn, url, media_proxy_opts()) else {:enabled, false} -> - send_resp(conn, 404, Plug.Conn.Status.reason_phrase(404)) + send_resp(conn, 404, Conn.Status.reason_phrase(404)) {:in_banned_urls, true} -> - send_resp(conn, 404, Plug.Conn.Status.reason_phrase(404)) + send_resp(conn, 404, Conn.Status.reason_phrase(404)) {:error, :invalid_signature} -> - send_resp(conn, 403, Plug.Conn.Status.reason_phrase(403)) + send_resp(conn, 403, Conn.Status.reason_phrase(403)) {:wrong_filename, filename} -> redirect(conn, external: MediaProxy.build_url(sig64, url64, filename)) end end - def preview(conn, %{"sig" => sig64, "url" => url64}) do + def preview(%Conn{} = conn, %{"sig" => sig64, "url" => url64}) do with {_, true} <- {:enabled, MediaProxy.preview_enabled?()}, {:ok, url} <- MediaProxy.decode_url(sig64, url64) do handle_preview(conn, url) else {:enabled, false} -> - send_resp(conn, 404, Plug.Conn.Status.reason_phrase(404)) + send_resp(conn, 404, Conn.Status.reason_phrase(404)) {:error, :invalid_signature} -> - send_resp(conn, 403, Plug.Conn.Status.reason_phrase(403)) + send_resp(conn, 403, Conn.Status.reason_phrase(403)) {:wrong_filename, filename} -> redirect(conn, external: MediaProxy.build_preview_url(sig64, url64, filename)) @@ -94,10 +95,10 @@ defp handle_preview(content_type, conn, _media_proxy_url) do send_resp(conn, :unprocessable_entity, "Unsupported content type: #{content_type}.") end - defp handle_png_preview(%{params: params} = conn, media_proxy_url) do + defp handle_png_preview(conn, media_proxy_url) do quality = Config.get!([:media_preview_proxy, :image_quality]) - with {thumbnail_max_width, thumbnail_max_height} <- thumbnail_max_dimensions(params), + with {thumbnail_max_width, thumbnail_max_height} <- thumbnail_max_dimensions(), {:ok, thumbnail_binary} <- MediaHelper.image_resize( media_proxy_url, @@ -117,10 +118,10 @@ defp handle_png_preview(%{params: params} = conn, media_proxy_url) do end end - defp handle_jpeg_preview(%{params: params} = conn, media_proxy_url) do + defp handle_jpeg_preview(conn, media_proxy_url) do quality = Config.get!([:media_preview_proxy, :image_quality]) - with {thumbnail_max_width, thumbnail_max_height} <- thumbnail_max_dimensions(params), + with {thumbnail_max_width, thumbnail_max_height} <- thumbnail_max_dimensions(), {:ok, thumbnail_binary} <- MediaHelper.image_resize( media_proxy_url, @@ -157,22 +158,11 @@ defp put_preview_response_headers( |> put_resp_header("cache-control", ReverseProxy.default_cache_control_header()) end - defp thumbnail_max_dimensions(params) do + defp thumbnail_max_dimensions() do config = Config.get([:media_preview_proxy], []) - thumbnail_max_width = - if w = params["thumbnail_max_width"] do - String.to_integer(w) - else - Keyword.fetch!(config, :thumbnail_max_width) - end - - thumbnail_max_height = - if h = params["thumbnail_max_height"] do - String.to_integer(h) - else - Keyword.fetch!(config, :thumbnail_max_height) - end + thumbnail_max_width = Keyword.fetch!(config, :thumbnail_max_width) + thumbnail_max_height = Keyword.fetch!(config, :thumbnail_max_height) {thumbnail_max_width, thumbnail_max_height} end From 275602daa7c4a01dffb83759012554da2d9335fe Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 10 Sep 2020 21:28:47 +0300 Subject: [PATCH 179/460] Streaming integration tests: remove unexpected error assumption For some reason instead of fixing unexpected errors, we made tests assert they indeed trigger... Now that the errors are fixed these were failing --- test/integration/mastodon_websocket_test.exs | 26 ++++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/test/integration/mastodon_websocket_test.exs b/test/integration/mastodon_websocket_test.exs index ea17e9feb..76fbc8bda 100644 --- a/test/integration/mastodon_websocket_test.exs +++ b/test/integration/mastodon_websocket_test.exs @@ -99,30 +99,30 @@ test "accepts valid tokens", state do test "accepts the 'user' stream", %{token: token} = _state do assert {:ok, _} = start_socket("?stream=user&access_token=#{token.token}") - assert capture_log(fn -> - assert {:error, {401, _}} = start_socket("?stream=user") - Process.sleep(30) - end) =~ ":badarg" + capture_log(fn -> + assert {:error, {401, _}} = start_socket("?stream=user") + Process.sleep(30) + end) end test "accepts the 'user:notification' stream", %{token: token} = _state do assert {:ok, _} = start_socket("?stream=user:notification&access_token=#{token.token}") - assert capture_log(fn -> - assert {:error, {401, _}} = start_socket("?stream=user:notification") - Process.sleep(30) - end) =~ ":badarg" + capture_log(fn -> + assert {:error, {401, _}} = start_socket("?stream=user:notification") + Process.sleep(30) + end) end test "accepts valid token on Sec-WebSocket-Protocol header", %{token: token} do assert {:ok, _} = start_socket("?stream=user", [{"Sec-WebSocket-Protocol", token.token}]) - assert capture_log(fn -> - assert {:error, {401, _}} = - start_socket("?stream=user", [{"Sec-WebSocket-Protocol", "I am a friend"}]) + capture_log(fn -> + assert {:error, {401, _}} = + start_socket("?stream=user", [{"Sec-WebSocket-Protocol", "I am a friend"}]) - Process.sleep(30) - end) =~ ":badarg" + Process.sleep(30) + end) end end end From 9bf1065a06837b4c753549d89afe23a636a20972 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Sat, 22 Aug 2020 20:46:01 +0300 Subject: [PATCH 180/460] schedule activity expiration in Oban --- config/config.exs | 3 +- config/description.exs | 1 - lib/mix/tasks/pleroma/database.ex | 18 ++-- lib/pleroma/activity.ex | 3 - lib/pleroma/activity_expiration.ex | 74 ---------------- lib/pleroma/web/activity_pub/activity_pub.ex | 7 +- .../mrf/activity_expiration_policy.ex | 4 +- lib/pleroma/web/activity_pub/side_effects.ex | 6 +- lib/pleroma/web/common_api/activity_draft.ex | 2 +- lib/pleroma/web/common_api/common_api.ex | 5 +- .../web/mastodon_api/views/status_view.ex | 5 +- .../cron/purge_expired_activities_worker.ex | 48 ----------- lib/pleroma/workers/purge_expired_activity.ex | 72 ++++++++++++++++ test/activity_expiration_test.exs | 55 ------------ test/activity_test.exs | 9 -- test/support/factory.ex | 19 ----- test/tasks/database_test.exs | 62 +++++++------- test/web/activity_pub/activity_pub_test.exs | 25 ++++-- .../mrf/activity_expiration_policy_test.exs | 8 +- test/web/common_api/common_api_test.exs | 14 ++-- .../controllers/status_controller_test.exs | 44 +++++----- .../purge_expired_activities_worker_test.exs | 84 ------------------- test/workers/purge_expired_activity_test.exs | 47 +++++++++++ 23 files changed, 229 insertions(+), 386 deletions(-) delete mode 100644 lib/pleroma/activity_expiration.ex delete mode 100644 lib/pleroma/workers/cron/purge_expired_activities_worker.ex create mode 100644 lib/pleroma/workers/purge_expired_activity.ex delete mode 100644 test/activity_expiration_test.exs delete mode 100644 test/workers/cron/purge_expired_activities_worker_test.exs create mode 100644 test/workers/purge_expired_activity_test.exs diff --git a/config/config.exs b/config/config.exs index 95a6ea9db..d975db31e 100644 --- a/config/config.exs +++ b/config/config.exs @@ -544,7 +544,6 @@ ], plugins: [Oban.Plugins.Pruner], crontab: [ - {"* * * * *", Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker}, {"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker}, {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker} ] @@ -655,7 +654,7 @@ account_confirmation_resend: {8_640_000, 5}, ap_routes: {60_000, 15} -config :pleroma, Pleroma.ActivityExpiration, enabled: true +config :pleroma, Pleroma.Workers.PurgeExpiredActivity, enabled: true config :pleroma, Pleroma.Plugs.RemoteIp, enabled: true diff --git a/config/description.exs b/config/description.exs index 4c4deed30..6ce27278c 100644 --- a/config/description.exs +++ b/config/description.exs @@ -2290,7 +2290,6 @@ type: {:list, :tuple}, description: "Settings for cron background jobs", suggestions: [ - {"* * * * *", Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker}, {"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker}, {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker} ] diff --git a/lib/mix/tasks/pleroma/database.ex b/lib/mix/tasks/pleroma/database.ex index 7d8f00b08..aab4b5e9a 100644 --- a/lib/mix/tasks/pleroma/database.ex +++ b/lib/mix/tasks/pleroma/database.ex @@ -133,8 +133,7 @@ def run(["ensure_expiration"]) do days = Pleroma.Config.get([:mrf_activity_expiration, :days], 365) Pleroma.Activity - |> join(:left, [a], u in assoc(a, :expiration)) - |> join(:inner, [a, _u], o in Object, + |> join(:inner, [a], o in Object, on: fragment( "(?->>'id') = COALESCE((?)->'object'->> 'id', (?)->>'object')", @@ -144,14 +143,21 @@ def run(["ensure_expiration"]) do ) ) |> where(local: true) - |> where([a, u], is_nil(u)) |> where([a], fragment("(? ->> 'type'::text) = 'Create'", a.data)) - |> where([_a, _u, o], fragment("?->>'type' = 'Note'", o.data)) + |> where([_a, o], fragment("?->>'type' = 'Note'", o.data)) |> Pleroma.RepoStreamer.chunk_stream(100) |> Stream.each(fn activities -> Enum.each(activities, fn activity -> - expires_at = Timex.shift(activity.inserted_at, days: days) - Pleroma.ActivityExpiration.create(activity, expires_at, false) + expires_at = + activity.inserted_at + |> DateTime.from_naive!("Etc/UTC") + |> Timex.shift(days: days) + + Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ + activity_id: activity.id, + expires_at: expires_at, + validate: false + }) end) end) |> Stream.run() diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex index 97feebeaa..03cd3b8c0 100644 --- a/lib/pleroma/activity.ex +++ b/lib/pleroma/activity.ex @@ -7,7 +7,6 @@ defmodule Pleroma.Activity do alias Pleroma.Activity alias Pleroma.Activity.Queries - alias Pleroma.ActivityExpiration alias Pleroma.Bookmark alias Pleroma.Notification alias Pleroma.Object @@ -60,8 +59,6 @@ defmodule Pleroma.Activity do # typical case. has_one(:object, Object, on_delete: :nothing, foreign_key: :id) - has_one(:expiration, ActivityExpiration, on_delete: :delete_all) - timestamps() end diff --git a/lib/pleroma/activity_expiration.ex b/lib/pleroma/activity_expiration.ex deleted file mode 100644 index 955f0578e..000000000 --- a/lib/pleroma/activity_expiration.ex +++ /dev/null @@ -1,74 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.ActivityExpiration do - use Ecto.Schema - - alias Pleroma.Activity - alias Pleroma.ActivityExpiration - alias Pleroma.Repo - - import Ecto.Changeset - import Ecto.Query - - @type t :: %__MODULE__{} - @min_activity_lifetime :timer.hours(1) - - schema "activity_expirations" do - belongs_to(:activity, Activity, type: FlakeId.Ecto.CompatType) - field(:scheduled_at, :naive_datetime) - end - - def changeset(%ActivityExpiration{} = expiration, attrs, validate_scheduled_at) do - expiration - |> cast(attrs, [:scheduled_at]) - |> validate_required([:scheduled_at]) - |> validate_scheduled_at(validate_scheduled_at) - end - - def get_by_activity_id(activity_id) do - ActivityExpiration - |> where([exp], exp.activity_id == ^activity_id) - |> Repo.one() - end - - def create(%Activity{} = activity, scheduled_at, validate_scheduled_at \\ true) do - %ActivityExpiration{activity_id: activity.id} - |> changeset(%{scheduled_at: scheduled_at}, validate_scheduled_at) - |> Repo.insert() - end - - def due_expirations(offset \\ 0) do - naive_datetime = - NaiveDateTime.utc_now() - |> NaiveDateTime.add(offset, :millisecond) - - ActivityExpiration - |> where([exp], exp.scheduled_at < ^naive_datetime) - |> limit(50) - |> preload(:activity) - |> Repo.all() - |> Enum.reject(fn %{activity: activity} -> - Activity.pinned_by_actor?(activity) - end) - end - - def validate_scheduled_at(changeset, false), do: changeset - - def validate_scheduled_at(changeset, true) do - validate_change(changeset, :scheduled_at, fn _, scheduled_at -> - if not expires_late_enough?(scheduled_at) do - [scheduled_at: "an ephemeral activity must live for at least one hour"] - else - [] - end - end) - end - - def expires_late_enough?(scheduled_at) do - now = NaiveDateTime.utc_now() - diff = NaiveDateTime.diff(scheduled_at, now, :millisecond) - diff > @min_activity_lifetime - end -end diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 333621413..c33848277 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -5,7 +5,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do alias Pleroma.Activity alias Pleroma.Activity.Ir.Topics - alias Pleroma.ActivityExpiration alias Pleroma.Config alias Pleroma.Constants alias Pleroma.Conversation @@ -165,7 +164,11 @@ def notify_and_stream(activity) do end defp maybe_create_activity_expiration({:ok, %{data: %{"expires_at" => expires_at}} = activity}) do - with {:ok, _} <- ActivityExpiration.create(activity, expires_at) do + with {:ok, _job} <- + Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ + activity_id: activity.id, + expires_at: expires_at + }) do {:ok, activity} end end diff --git a/lib/pleroma/web/activity_pub/mrf/activity_expiration_policy.ex b/lib/pleroma/web/activity_pub/mrf/activity_expiration_policy.ex index 7b4c78e0f..bee47b4ed 100644 --- a/lib/pleroma/web/activity_pub/mrf/activity_expiration_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/activity_expiration_policy.ex @@ -31,10 +31,10 @@ defp note?(activity) do defp maybe_add_expiration(activity) do days = Pleroma.Config.get([:mrf_activity_expiration, :days], 365) - expires_at = NaiveDateTime.utc_now() |> Timex.shift(days: days) + expires_at = DateTime.utc_now() |> Timex.shift(days: days) with %{"expires_at" => existing_expires_at} <- activity, - :lt <- NaiveDateTime.compare(existing_expires_at, expires_at) do + :lt <- DateTime.compare(existing_expires_at, expires_at) do activity else _ -> Map.put(activity, "expires_at", expires_at) diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index a5e2323bd..b30ca1bd7 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -7,7 +7,6 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do """ alias Pleroma.Activity alias Pleroma.Activity.Ir.Topics - alias Pleroma.ActivityExpiration alias Pleroma.Chat alias Pleroma.Chat.MessageReference alias Pleroma.FollowingRelationship @@ -189,7 +188,10 @@ def handle(%{data: %{"type" => "Create"}} = activity, meta) do end if expires_at = activity.data["expires_at"] do - ActivityExpiration.create(activity, expires_at) + Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ + activity_id: activity.id, + expires_at: expires_at + }) end BackgroundWorker.enqueue("fetch_data_for_activity", %{"activity_id" => activity.id}) diff --git a/lib/pleroma/web/common_api/activity_draft.ex b/lib/pleroma/web/common_api/activity_draft.ex index f849b2e01..548f76609 100644 --- a/lib/pleroma/web/common_api/activity_draft.ex +++ b/lib/pleroma/web/common_api/activity_draft.ex @@ -202,7 +202,7 @@ defp changes(draft) do additional = case draft.expires_at do - %NaiveDateTime{} = expires_at -> Map.put(additional, "expires_at", expires_at) + %DateTime{} = expires_at -> Map.put(additional, "expires_at", expires_at) _ -> additional end diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex index 4ab533658..500c3883e 100644 --- a/lib/pleroma/web/common_api/common_api.ex +++ b/lib/pleroma/web/common_api/common_api.ex @@ -4,7 +4,6 @@ defmodule Pleroma.Web.CommonAPI do alias Pleroma.Activity - alias Pleroma.ActivityExpiration alias Pleroma.Conversation.Participation alias Pleroma.Formatter alias Pleroma.Object @@ -381,9 +380,9 @@ def get_replied_to_visibility(activity) do def check_expiry_date({:ok, nil} = res), do: res def check_expiry_date({:ok, in_seconds}) do - expiry = NaiveDateTime.utc_now() |> NaiveDateTime.add(in_seconds) + expiry = DateTime.add(DateTime.utc_now(), in_seconds) - if ActivityExpiration.expires_late_enough?(expiry) do + if Pleroma.Workers.PurgeExpiredActivity.expires_late_enough?(expiry) do {:ok, expiry} else {:error, "Expiry date is too soon"} diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 3fe1967be..ca42917fc 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -8,7 +8,6 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do require Pleroma.Constants alias Pleroma.Activity - alias Pleroma.ActivityExpiration alias Pleroma.HTML alias Pleroma.Object alias Pleroma.Repo @@ -245,8 +244,8 @@ def render("show.json", %{activity: %{data: %{"object" => _object}} = activity} expires_at = with true <- client_posted_this_activity, - %ActivityExpiration{scheduled_at: scheduled_at} <- - ActivityExpiration.get_by_activity_id(activity.id) do + %Oban.Job{scheduled_at: scheduled_at} <- + Pleroma.Workers.PurgeExpiredActivity.get_expiration(activity.id) do scheduled_at else _ -> nil diff --git a/lib/pleroma/workers/cron/purge_expired_activities_worker.ex b/lib/pleroma/workers/cron/purge_expired_activities_worker.ex deleted file mode 100644 index 6549207fc..000000000 --- a/lib/pleroma/workers/cron/purge_expired_activities_worker.ex +++ /dev/null @@ -1,48 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker do - @moduledoc """ - The worker to purge expired activities. - """ - - use Oban.Worker, queue: "activity_expiration" - - alias Pleroma.Activity - alias Pleroma.ActivityExpiration - alias Pleroma.Config - alias Pleroma.User - alias Pleroma.Web.CommonAPI - - require Logger - - @interval :timer.minutes(1) - - @impl Oban.Worker - def perform(_job) do - if Config.get([ActivityExpiration, :enabled]) do - Enum.each(ActivityExpiration.due_expirations(@interval), &delete_activity/1) - end - after - :ok - end - - def delete_activity(%ActivityExpiration{activity_id: activity_id}) do - with {:activity, %Activity{} = activity} <- - {:activity, Activity.get_by_id_with_object(activity_id)}, - {:user, %User{} = user} <- {:user, User.get_by_ap_id(activity.object.data["actor"])} do - CommonAPI.delete(activity.id, user) - else - {:activity, _} -> - Logger.error( - "#{__MODULE__} Couldn't delete expired activity: not found activity ##{activity_id}" - ) - - {:user, _} -> - Logger.error( - "#{__MODULE__} Couldn't delete expired activity: not found actor of ##{activity_id}" - ) - end - end -end diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex new file mode 100644 index 000000000..016b000c1 --- /dev/null +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -0,0 +1,72 @@ +defmodule Pleroma.Workers.PurgeExpiredActivity do + @moduledoc """ + Worker which purges expired activity. + """ + + use Oban.Worker, queue: :activity_expiration, max_attempts: 1 + + import Ecto.Query + + def enqueue(args) do + with true <- enabled?(), + args when is_map(args) <- validate_expires_at(args) do + {scheduled_at, args} = Map.pop(args, :expires_at) + + args + |> __MODULE__.new(scheduled_at: scheduled_at) + |> Oban.insert() + end + end + + @impl true + def perform(%Oban.Job{args: %{"activity_id" => id}}) do + with %Pleroma.Activity{} = activity <- find_activity(id), + %Pleroma.User{} = user <- find_user(activity.object.data["actor"]) do + Pleroma.Web.CommonAPI.delete(activity.id, user) + end + end + + defp enabled? do + with false <- Pleroma.Config.get([__MODULE__, :enabled], false) do + {:error, :expired_activities_disabled} + end + end + + defp validate_expires_at(%{validate: false} = args), do: Map.delete(args, :validate) + + defp validate_expires_at(args) do + if expires_late_enough?(args[:expires_at]) do + args + else + {:error, :expiration_too_close} + end + end + + defp find_activity(id) do + with nil <- Pleroma.Activity.get_by_id_with_object(id) do + {:error, :activity_not_found} + end + end + + defp find_user(ap_id) do + with nil <- Pleroma.User.get_by_ap_id(ap_id) do + {:error, :user_not_found} + end + end + + def get_expiration(id) do + from(j in Oban.Job, + where: j.state == "scheduled", + where: j.queue == "activity_expiration", + where: fragment("?->>'activity_id' = ?", j.args, ^id) + ) + |> Pleroma.Repo.one() + end + + @spec expires_late_enough?(DateTime.t()) :: boolean() + def expires_late_enough?(scheduled_at) do + now = DateTime.utc_now() + diff = DateTime.diff(scheduled_at, now, :millisecond) + diff > :timer.hours(1) + end +end diff --git a/test/activity_expiration_test.exs b/test/activity_expiration_test.exs deleted file mode 100644 index f86d79826..000000000 --- a/test/activity_expiration_test.exs +++ /dev/null @@ -1,55 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.ActivityExpirationTest do - use Pleroma.DataCase - alias Pleroma.ActivityExpiration - import Pleroma.Factory - - setup do: clear_config([ActivityExpiration, :enabled]) - - test "finds activities due to be deleted only" do - activity = insert(:note_activity) - - expiration_due = - insert(:expiration_in_the_past, %{activity_id: activity.id}) |> Repo.preload(:activity) - - activity2 = insert(:note_activity) - insert(:expiration_in_the_future, %{activity_id: activity2.id}) - - expirations = ActivityExpiration.due_expirations() - - assert length(expirations) == 1 - assert hd(expirations) == expiration_due - end - - test "denies expirations that don't live long enough" do - activity = insert(:note_activity) - now = NaiveDateTime.utc_now() - assert {:error, _} = ActivityExpiration.create(activity, now) - end - - test "deletes an expiration activity" do - Pleroma.Config.put([ActivityExpiration, :enabled], true) - activity = insert(:note_activity) - - naive_datetime = - NaiveDateTime.add( - NaiveDateTime.utc_now(), - -:timer.minutes(2), - :millisecond - ) - - expiration = - insert( - :expiration_in_the_past, - %{activity_id: activity.id, scheduled_at: naive_datetime} - ) - - Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker.perform(%Oban.Job{}) - - refute Pleroma.Repo.get(Pleroma.Activity, activity.id) - refute Pleroma.Repo.get(Pleroma.ActivityExpiration, expiration.id) - end -end diff --git a/test/activity_test.exs b/test/activity_test.exs index 2a92327d1..ee6a99cc3 100644 --- a/test/activity_test.exs +++ b/test/activity_test.exs @@ -185,15 +185,6 @@ test "find all statuses for unauthenticated users when `limit_to_local_content` end end - test "add an activity with an expiration" do - activity = insert(:note_activity) - insert(:expiration_in_the_future, %{activity_id: activity.id}) - - Pleroma.ActivityExpiration - |> where([a], a.activity_id == ^activity.id) - |> Repo.one!() - end - test "all_by_ids_with_object/1" do %{id: id1} = insert(:note_activity) %{id: id2} = insert(:note_activity) diff --git a/test/support/factory.ex b/test/support/factory.ex index 486eda8da..2fdfabbc5 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -200,25 +200,6 @@ def note_activity_factory(attrs \\ %{}) do |> Map.merge(attrs) end - defp expiration_offset_by_minutes(attrs, minutes) do - scheduled_at = - NaiveDateTime.utc_now() - |> NaiveDateTime.add(:timer.minutes(minutes), :millisecond) - |> NaiveDateTime.truncate(:second) - - %Pleroma.ActivityExpiration{} - |> Map.merge(attrs) - |> Map.put(:scheduled_at, scheduled_at) - end - - def expiration_in_the_past_factory(attrs \\ %{}) do - expiration_offset_by_minutes(attrs, -60) - end - - def expiration_in_the_future_factory(attrs \\ %{}) do - expiration_offset_by_minutes(attrs, 61) - end - def article_activity_factory do article = insert(:article) diff --git a/test/tasks/database_test.exs b/test/tasks/database_test.exs index 3a28aa133..292a5ef5f 100644 --- a/test/tasks/database_test.exs +++ b/test/tasks/database_test.exs @@ -3,14 +3,15 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Mix.Tasks.Pleroma.DatabaseTest do + use Pleroma.DataCase + use Oban.Testing, repo: Pleroma.Repo + alias Pleroma.Activity alias Pleroma.Object alias Pleroma.Repo alias Pleroma.User alias Pleroma.Web.CommonAPI - use Pleroma.DataCase - import Pleroma.Factory setup_all do @@ -130,40 +131,45 @@ test "it turns OrderedCollection likes into empty arrays" do describe "ensure_expiration" do test "it adds to expiration old statuses" do - %{id: activity_id1} = insert(:note_activity) + activity1 = insert(:note_activity) - %{id: activity_id2} = - insert(:note_activity, %{inserted_at: NaiveDateTime.from_iso8601!("2015-01-23 23:50:07")}) + {:ok, inserted_at, 0} = DateTime.from_iso8601("2015-01-23T23:50:07Z") + activity2 = insert(:note_activity, %{inserted_at: inserted_at}) - %{id: activity_id3} = activity3 = insert(:note_activity) + %{id: activity_id3} = insert(:note_activity) - expires_at = - NaiveDateTime.utc_now() - |> NaiveDateTime.add(60 * 61, :second) - |> NaiveDateTime.truncate(:second) + expires_at = DateTime.add(DateTime.utc_now(), 60 * 61) - Pleroma.ActivityExpiration.create(activity3, expires_at) + Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ + activity_id: activity_id3, + expires_at: expires_at + }) Mix.Tasks.Pleroma.Database.run(["ensure_expiration"]) - expirations = - Pleroma.ActivityExpiration - |> order_by(:activity_id) - |> Repo.all() + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: activity1.id}, + scheduled_at: + activity1.inserted_at + |> DateTime.from_naive!("Etc/UTC") + |> Timex.shift(days: 365) + ) - assert [ - %Pleroma.ActivityExpiration{ - activity_id: ^activity_id1 - }, - %Pleroma.ActivityExpiration{ - activity_id: ^activity_id2, - scheduled_at: ~N[2016-01-23 23:50:07] - }, - %Pleroma.ActivityExpiration{ - activity_id: ^activity_id3, - scheduled_at: ^expires_at - } - ] = expirations + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: activity2.id}, + scheduled_at: + activity2.inserted_at + |> DateTime.from_naive!("Etc/UTC") + |> Timex.shift(days: 365) + ) + + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: activity_id3}, + scheduled_at: expires_at + ) end end end diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 03f968aaf..9af573924 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -2069,18 +2069,25 @@ test "it just returns the input if the user has no following/follower addresses" end describe "global activity expiration" do - setup do: clear_config([:mrf, :policies]) - test "creates an activity expiration for local Create activities" do - Pleroma.Config.put( - [:mrf, :policies], - Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy + clear_config([:mrf, :policies], Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy) + + {:ok, activity} = ActivityBuilder.insert(%{"type" => "Create", "context" => "3hu"}) + {:ok, follow} = ActivityBuilder.insert(%{"type" => "Follow", "context" => "3hu"}) + + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: activity.id}, + scheduled_at: + activity.inserted_at + |> DateTime.from_naive!("Etc/UTC") + |> Timex.shift(days: 365) ) - {:ok, %{id: id_create}} = ActivityBuilder.insert(%{"type" => "Create", "context" => "3hu"}) - {:ok, _follow} = ActivityBuilder.insert(%{"type" => "Follow", "context" => "3hu"}) - - assert [%{activity_id: ^id_create}] = Pleroma.ActivityExpiration |> Repo.all() + refute_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: follow.id} + ) end end diff --git a/test/web/activity_pub/mrf/activity_expiration_policy_test.exs b/test/web/activity_pub/mrf/activity_expiration_policy_test.exs index f25cf8b12..e7370d4ef 100644 --- a/test/web/activity_pub/mrf/activity_expiration_policy_test.exs +++ b/test/web/activity_pub/mrf/activity_expiration_policy_test.exs @@ -18,11 +18,11 @@ test "adds `expires_at` property" do "object" => %{"type" => "Note"} }) - assert Timex.diff(expires_at, NaiveDateTime.utc_now(), :days) == 364 + assert Timex.diff(expires_at, DateTime.utc_now(), :days) == 364 end test "keeps existing `expires_at` if it less than the config setting" do - expires_at = NaiveDateTime.utc_now() |> Timex.shift(days: 1) + expires_at = DateTime.utc_now() |> Timex.shift(days: 1) assert {:ok, %{"type" => "Create", "expires_at" => ^expires_at}} = ActivityExpirationPolicy.filter(%{ @@ -35,7 +35,7 @@ test "keeps existing `expires_at` if it less than the config setting" do end test "overwrites existing `expires_at` if it greater than the config setting" do - too_distant_future = NaiveDateTime.utc_now() |> Timex.shift(years: 2) + too_distant_future = DateTime.utc_now() |> Timex.shift(years: 2) assert {:ok, %{"type" => "Create", "expires_at" => expires_at}} = ActivityExpirationPolicy.filter(%{ @@ -46,7 +46,7 @@ test "overwrites existing `expires_at` if it greater than the config setting" do "object" => %{"type" => "Note"} }) - assert Timex.diff(expires_at, NaiveDateTime.utc_now(), :days) == 364 + assert Timex.diff(expires_at, DateTime.utc_now(), :days) == 364 end test "ignores remote activities" do diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index 800db9a20..5afb0a6dc 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -4,6 +4,8 @@ defmodule Pleroma.Web.CommonAPITest do use Pleroma.DataCase + use Oban.Testing, repo: Pleroma.Repo + alias Pleroma.Activity alias Pleroma.Chat alias Pleroma.Conversation.Participation @@ -598,15 +600,15 @@ test "it validates character limits are correctly enforced" do test "it can handle activities that expire" do user = insert(:user) - expires_at = - NaiveDateTime.utc_now() - |> NaiveDateTime.truncate(:second) - |> NaiveDateTime.add(1_000_000, :second) + expires_at = DateTime.add(DateTime.utc_now(), 1_000_000) assert {:ok, activity} = CommonAPI.post(user, %{status: "chai", expires_in: 1_000_000}) - assert expiration = Pleroma.ActivityExpiration.get_by_activity_id(activity.id) - assert expiration.scheduled_at == expires_at + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: activity.id}, + scheduled_at: expires_at + ) end end diff --git a/test/web/mastodon_api/controllers/status_controller_test.exs b/test/web/mastodon_api/controllers/status_controller_test.exs index f221884e7..17a156be8 100644 --- a/test/web/mastodon_api/controllers/status_controller_test.exs +++ b/test/web/mastodon_api/controllers/status_controller_test.exs @@ -4,9 +4,9 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do use Pleroma.Web.ConnCase + use Oban.Testing, repo: Pleroma.Repo alias Pleroma.Activity - alias Pleroma.ActivityExpiration alias Pleroma.Config alias Pleroma.Conversation.Participation alias Pleroma.Object @@ -29,8 +29,8 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do setup do: oauth_access(["write:statuses"]) test "posting a status does not increment reblog_count when relaying", %{conn: conn} do - Pleroma.Config.put([:instance, :federating], true) - Pleroma.Config.get([:instance, :allow_relay], true) + Config.put([:instance, :federating], true) + Config.get([:instance, :allow_relay], true) response = conn @@ -103,7 +103,9 @@ test "posting a status", %{conn: conn} do # An activity that will expire: # 2 hours - expires_in = 120 * 60 + expires_in = 2 * 60 * 60 + + expires_at = DateTime.add(DateTime.utc_now(), expires_in) conn_four = conn @@ -116,19 +118,13 @@ test "posting a status", %{conn: conn} do assert fourth_response = %{"id" => fourth_id} = json_response_and_validate_schema(conn_four, 200) - assert activity = Activity.get_by_id(fourth_id) - assert expiration = ActivityExpiration.get_by_activity_id(fourth_id) + assert Activity.get_by_id(fourth_id) - estimated_expires_at = - NaiveDateTime.utc_now() - |> NaiveDateTime.add(expires_in) - |> NaiveDateTime.truncate(:second) - - # This assert will fail if the test takes longer than a minute. I sure hope it never does: - assert abs(NaiveDateTime.diff(expiration.scheduled_at, estimated_expires_at, :second)) < 60 - - assert fourth_response["pleroma"]["expires_at"] == - NaiveDateTime.to_iso8601(expiration.scheduled_at) + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: fourth_id}, + scheduled_at: expires_at + ) end test "it fails to create a status if `expires_in` is less or equal than an hour", %{ @@ -160,8 +156,8 @@ test "it fails to create a status if `expires_in` is less or equal than an hour" end test "Get MRF reason when posting a status is rejected by one", %{conn: conn} do - Pleroma.Config.put([:mrf_keyword, :reject], ["GNO"]) - Pleroma.Config.put([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.KeywordPolicy]) + Config.put([:mrf_keyword, :reject], ["GNO"]) + Config.put([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.KeywordPolicy]) assert %{"error" => "[KeywordPolicy] Matches with rejected keyword"} = conn @@ -1681,19 +1677,17 @@ test "returns the favorites of a user" do test "expires_at is nil for another user" do %{conn: conn, user: user} = oauth_access(["read:statuses"]) + expires_at = DateTime.add(DateTime.utc_now(), 1_000_000) {:ok, activity} = CommonAPI.post(user, %{status: "foobar", expires_in: 1_000_000}) - expires_at = - activity.id - |> ActivityExpiration.get_by_activity_id() - |> Map.get(:scheduled_at) - |> NaiveDateTime.to_iso8601() - - assert %{"pleroma" => %{"expires_at" => ^expires_at}} = + assert %{"pleroma" => %{"expires_at" => a_expires_at}} = conn |> get("/api/v1/statuses/#{activity.id}") |> json_response_and_validate_schema(:ok) + {:ok, a_expires_at, 0} = DateTime.from_iso8601(a_expires_at) + assert DateTime.diff(expires_at, a_expires_at) == 0 + %{conn: conn} = oauth_access(["read:statuses"]) assert %{"pleroma" => %{"expires_at" => nil}} = diff --git a/test/workers/cron/purge_expired_activities_worker_test.exs b/test/workers/cron/purge_expired_activities_worker_test.exs deleted file mode 100644 index d1acd9ae6..000000000 --- a/test/workers/cron/purge_expired_activities_worker_test.exs +++ /dev/null @@ -1,84 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Workers.Cron.PurgeExpiredActivitiesWorkerTest do - use Pleroma.DataCase - - alias Pleroma.ActivityExpiration - alias Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker - - import Pleroma.Factory - import ExUnit.CaptureLog - - setup do - clear_config([ActivityExpiration, :enabled]) - end - - test "deletes an expiration activity" do - Pleroma.Config.put([ActivityExpiration, :enabled], true) - activity = insert(:note_activity) - - naive_datetime = - NaiveDateTime.add( - NaiveDateTime.utc_now(), - -:timer.minutes(2), - :millisecond - ) - - expiration = - insert( - :expiration_in_the_past, - %{activity_id: activity.id, scheduled_at: naive_datetime} - ) - - Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker.perform(%Oban.Job{}) - - refute Pleroma.Repo.get(Pleroma.Activity, activity.id) - refute Pleroma.Repo.get(Pleroma.ActivityExpiration, expiration.id) - end - - test "works with ActivityExpirationPolicy" do - Pleroma.Config.put([ActivityExpiration, :enabled], true) - - clear_config([:mrf, :policies], Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy) - - user = insert(:user) - - days = Pleroma.Config.get([:mrf_activity_expiration, :days], 365) - - {:ok, %{id: id} = activity} = Pleroma.Web.CommonAPI.post(user, %{status: "cofe"}) - - past_date = - NaiveDateTime.utc_now() |> Timex.shift(days: -days) |> NaiveDateTime.truncate(:second) - - activity - |> Repo.preload(:expiration) - |> Map.get(:expiration) - |> Ecto.Changeset.change(%{scheduled_at: past_date}) - |> Repo.update!() - - Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker.perform(%Oban.Job{}) - - assert [%{data: %{"type" => "Delete", "deleted_activity_id" => ^id}}] = - Pleroma.Repo.all(Pleroma.Activity) - end - - describe "delete_activity/1" do - test "adds log message if activity isn't find" do - assert capture_log([level: :error], fn -> - PurgeExpiredActivitiesWorker.delete_activity(%ActivityExpiration{ - activity_id: "test-activity" - }) - end) =~ "Couldn't delete expired activity: not found activity" - end - - test "adds log message if actor isn't find" do - assert capture_log([level: :error], fn -> - PurgeExpiredActivitiesWorker.delete_activity(%ActivityExpiration{ - activity_id: "test-activity" - }) - end) =~ "Couldn't delete expired activity: not found activity" - end - end -end diff --git a/test/workers/purge_expired_activity_test.exs b/test/workers/purge_expired_activity_test.exs new file mode 100644 index 000000000..8b5dc9fd2 --- /dev/null +++ b/test/workers/purge_expired_activity_test.exs @@ -0,0 +1,47 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.PurgeExpiredActivityTest do + use Pleroma.DataCase, async: true + use Oban.Testing, repo: Pleroma.Repo + + import Pleroma.Factory + + alias Pleroma.Workers.PurgeExpiredActivity + + test "denies expirations that don't live long enough" do + activity = insert(:note_activity) + + assert {:error, :expiration_too_close} = + PurgeExpiredActivity.enqueue(%{ + activity_id: activity.id, + expires_at: DateTime.utc_now() + }) + + refute_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: activity.id} + ) + end + + test "enqueue job" do + activity = insert(:note_activity) + + assert {:ok, _} = + PurgeExpiredActivity.enqueue(%{ + activity_id: activity.id, + expires_at: DateTime.add(DateTime.utc_now(), 3601) + }) + + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: activity.id} + ) + + assert {:ok, _} = + perform_job(Pleroma.Workers.PurgeExpiredActivity, %{activity_id: activity.id}) + + assert %Oban.Job{} = Pleroma.Workers.PurgeExpiredActivity.get_expiration(activity.id) + end +end From de4c935071a47c78d873484b202e09dce5399570 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 24 Aug 2020 13:43:02 +0300 Subject: [PATCH 181/460] don't expire pinned posts --- lib/pleroma/activity.ex | 9 ++++++-- lib/pleroma/workers/purge_expired_activity.ex | 18 +++++++++++++++- test/workers/purge_expired_activity_test.exs | 21 +++++++++++++++++++ 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex index 03cd3b8c0..84aba9572 100644 --- a/lib/pleroma/activity.ex +++ b/lib/pleroma/activity.ex @@ -301,14 +301,14 @@ def all_by_actor_and_id(actor, status_ids) do |> Repo.all() end - def follow_requests_for_actor(%Pleroma.User{ap_id: ap_id}) do + def follow_requests_for_actor(%User{ap_id: ap_id}) do ap_id |> Queries.by_object_id() |> Queries.by_type("Follow") |> where([a], fragment("? ->> 'state' = 'pending'", a.data)) end - def following_requests_for_actor(%Pleroma.User{ap_id: ap_id}) do + def following_requests_for_actor(%User{ap_id: ap_id}) do Queries.by_type("Follow") |> where([a], fragment("?->>'state' = 'pending'", a.data)) |> where([a], a.actor == ^ap_id) @@ -343,4 +343,9 @@ def pinned_by_actor?(%Activity{} = activity) do actor = user_actor(activity) activity.id in actor.pinned_activities end + + @spec pinned_by_actor?(Activity.t(), User.t()) :: boolean() + def pinned_by_actor?(%Activity{id: id}, %User{} = user) do + id in user.pinned_activities + end end diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex index 016b000c1..ba0053008 100644 --- a/lib/pleroma/workers/purge_expired_activity.ex +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -21,8 +21,18 @@ def enqueue(args) do @impl true def perform(%Oban.Job{args: %{"activity_id" => id}}) do with %Pleroma.Activity{} = activity <- find_activity(id), - %Pleroma.User{} = user <- find_user(activity.object.data["actor"]) do + %Pleroma.User{} = user <- find_user(activity.object.data["actor"]), + false <- pinned_by_actor?(activity, user) do Pleroma.Web.CommonAPI.delete(activity.id, user) + else + :pinned_by_actor -> + # if activity is pinned, schedule deletion on next day + enqueue(%{activity_id: id, expires_at: DateTime.add(DateTime.utc_now(), 24 * 3600)}) + + :ok + + error -> + error end end @@ -54,6 +64,12 @@ defp find_user(ap_id) do end end + defp pinned_by_actor?(activity, user) do + with true <- Pleroma.Activity.pinned_by_actor?(activity, user) do + :pinned_by_actor + end + end + def get_expiration(id) do from(j in Oban.Job, where: j.state == "scheduled", diff --git a/test/workers/purge_expired_activity_test.exs b/test/workers/purge_expired_activity_test.exs index 8b5dc9fd2..736d7d567 100644 --- a/test/workers/purge_expired_activity_test.exs +++ b/test/workers/purge_expired_activity_test.exs @@ -44,4 +44,25 @@ test "enqueue job" do assert %Oban.Job{} = Pleroma.Workers.PurgeExpiredActivity.get_expiration(activity.id) end + + test "don't delete pinned posts, schedule deletion on next day" do + activity = insert(:note_activity) + + assert {:ok, _} = + PurgeExpiredActivity.enqueue(%{ + activity_id: activity.id, + expires_at: DateTime.utc_now(), + validate: false + }) + + user = Pleroma.User.get_by_ap_id(activity.actor) + {:ok, activity} = Pleroma.Web.CommonAPI.pin(activity.id, user) + + assert %{success: 1, failure: 0} == + Oban.drain_queue(queue: :activity_expiration, with_scheduled: true) + + job = Pleroma.Workers.PurgeExpiredActivity.get_expiration(activity.id) + + assert DateTime.diff(job.scheduled_at, DateTime.add(DateTime.utc_now(), 24 * 3600)) in [0, 1] + end end From 629a8de9cb2ba2cc2d09679862a24031f34abc2f Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Tue, 25 Aug 2020 09:10:45 +0300 Subject: [PATCH 182/460] deprecation warning changed namespace for activity expiration configuration --- config/description.exs | 6 +++--- lib/pleroma/config/deprecation_warnings.ex | 19 ++++++++++++++++++- lib/pleroma/workers/purge_expired_activity.ex | 8 +++++--- ...541_rename_activity_expiration_setting.exs | 13 +++++++++++++ 4 files changed, 39 insertions(+), 7 deletions(-) create mode 100644 priv/repo/migrations/20200824115541_rename_activity_expiration_setting.exs diff --git a/config/description.exs b/config/description.exs index 6ce27278c..1253944de 100644 --- a/config/description.exs +++ b/config/description.exs @@ -2472,14 +2472,14 @@ }, %{ group: :pleroma, - key: Pleroma.ActivityExpiration, + key: Pleroma.Workers.PurgeExpiredActivity, type: :group, - description: "Expired activity settings", + description: "Expired activities settings", children: [ %{ key: :enabled, type: :boolean, - description: "Whether expired activities will be sent to the job queue to be deleted" + description: "Enables expired activities addition & deletion" } ] }, diff --git a/lib/pleroma/config/deprecation_warnings.ex b/lib/pleroma/config/deprecation_warnings.ex index 2bfe4ddba..412d55a77 100644 --- a/lib/pleroma/config/deprecation_warnings.ex +++ b/lib/pleroma/config/deprecation_warnings.ex @@ -8,7 +8,7 @@ defmodule Pleroma.Config.DeprecationWarnings do require Logger alias Pleroma.Config - @type config_namespace() :: [atom()] + @type config_namespace() :: atom() | [atom()] @type config_map() :: {config_namespace(), config_namespace(), String.t()} @mrf_config_map [ @@ -57,6 +57,7 @@ def warn do check_media_proxy_whitelist_config() check_welcome_message_config() check_gun_pool_options() + check_activity_expiration_config() end def check_welcome_message_config do @@ -158,4 +159,20 @@ def check_gun_pool_options do Config.put(:pools, updated_config) end end + + @spec check_activity_expiration_config() :: :ok | nil + def check_activity_expiration_config do + warning_preface = """ + !!!DEPRECATION WARNING!!! + Your config is using old namespace for activity expiration configuration. Setting should work for now, but you are advised to change to new namespace to prevent possible issues later: + """ + + move_namespace_and_warn( + [ + {Pleroma.ActivityExpiration, Pleroma.Workers.PurgeExpiredActivity, + "\n* `config :pleroma, Pleroma.ActivityExpiration` is now `config :pleroma, Pleroma.Workers.PurgeExpiredActivity`"} + ], + warning_preface + ) + end end diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex index ba0053008..44a8ad0b9 100644 --- a/lib/pleroma/workers/purge_expired_activity.ex +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -7,6 +7,8 @@ defmodule Pleroma.Workers.PurgeExpiredActivity do import Ecto.Query + alias Pleroma.Activity + def enqueue(args) do with true <- enabled?(), args when is_map(args) <- validate_expires_at(args) do @@ -20,7 +22,7 @@ def enqueue(args) do @impl true def perform(%Oban.Job{args: %{"activity_id" => id}}) do - with %Pleroma.Activity{} = activity <- find_activity(id), + with %Activity{} = activity <- find_activity(id), %Pleroma.User{} = user <- find_user(activity.object.data["actor"]), false <- pinned_by_actor?(activity, user) do Pleroma.Web.CommonAPI.delete(activity.id, user) @@ -53,7 +55,7 @@ defp validate_expires_at(args) do end defp find_activity(id) do - with nil <- Pleroma.Activity.get_by_id_with_object(id) do + with nil <- Activity.get_by_id_with_object(id) do {:error, :activity_not_found} end end @@ -65,7 +67,7 @@ defp find_user(ap_id) do end defp pinned_by_actor?(activity, user) do - with true <- Pleroma.Activity.pinned_by_actor?(activity, user) do + with true <- Activity.pinned_by_actor?(activity, user) do :pinned_by_actor end end diff --git a/priv/repo/migrations/20200824115541_rename_activity_expiration_setting.exs b/priv/repo/migrations/20200824115541_rename_activity_expiration_setting.exs new file mode 100644 index 000000000..241882ef6 --- /dev/null +++ b/priv/repo/migrations/20200824115541_rename_activity_expiration_setting.exs @@ -0,0 +1,13 @@ +defmodule Pleroma.Repo.Migrations.RenameActivityExpirationSetting do + use Ecto.Migration + + def change do + config = Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: Pleroma.ActivityExpiration}) + + if config do + config + |> Ecto.Changeset.change(key: Pleroma.Workers.PurgeExpiredActivity) + |> Pleroma.Repo.update() + end + end +end From 5ad0cc4c863f7f8a1e6fdfa40eb884a5c94ebf67 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Tue, 25 Aug 2020 12:30:00 +0300 Subject: [PATCH 183/460] move old expirations into Oban --- ...1316_move_activity_expirations_to_oban.exs | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs diff --git a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs new file mode 100644 index 000000000..585d1a600 --- /dev/null +++ b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs @@ -0,0 +1,29 @@ +defmodule Pleroma.Repo.Migrations.MoveActivityExpirationsToOban do + use Ecto.Migration + + import Ecto.Query, only: [from: 2] + + def change do + Supervisor.start_link([{Oban, Pleroma.Config.get(Oban)}], + strategy: :one_for_one, + name: Pleroma.Supervisor + ) + + from(e in "activity_expirations", + select: %{id: e.id, activity_id: e.activity_id, scheduled_at: e.scheduled_at} + ) + |> Pleroma.RepoStreamer.chunk_stream(500) + |> Stream.each(fn expirations -> + Enum.each(expirations, fn expiration -> + with {:ok, expires_at} <- DateTime.from_naive(expiration.scheduled_at, "Etc/UTC") do + Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ + activity_id: FlakeId.to_string(expiration.activity_id), + expires_at: expires_at, + validate: false + }) + end + end) + end) + |> Stream.run() + end +end From 5381d4b78b6ed550102008cbae7f578dab06f22f Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Tue, 25 Aug 2020 12:33:38 +0300 Subject: [PATCH 184/460] drop activity_expirations table --- .../20200825093037_drop_activity_expirations_table.exs | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 priv/repo/migrations/20200825093037_drop_activity_expirations_table.exs diff --git a/priv/repo/migrations/20200825093037_drop_activity_expirations_table.exs b/priv/repo/migrations/20200825093037_drop_activity_expirations_table.exs new file mode 100644 index 000000000..11c461427 --- /dev/null +++ b/priv/repo/migrations/20200825093037_drop_activity_expirations_table.exs @@ -0,0 +1,7 @@ +defmodule Pleroma.Repo.Migrations.DropActivityExpirationsTable do + use Ecto.Migration + + def change do + drop(table("activity_expirations")) + end +end From 4981b5a1a3c097ca849552c3c6f650efd22c7451 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Tue, 25 Aug 2020 12:45:06 +0300 Subject: [PATCH 185/460] copyright header --- lib/pleroma/workers/purge_expired_activity.ex | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex index 44a8ad0b9..42e2ae79c 100644 --- a/lib/pleroma/workers/purge_expired_activity.ex +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Workers.PurgeExpiredActivity do @moduledoc """ Worker which purges expired activity. From 93e1c8df9dca697e7bdb822a8a5b3848b7870f53 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 3 Sep 2020 13:30:39 +0300 Subject: [PATCH 186/460] reject activity creation if passed expires_at option and expiring activities are not configured --- lib/pleroma/web/activity_pub/activity_pub.ex | 44 +++++++++----- lib/pleroma/workers/purge_expired_activity.ex | 4 ++ test/web/activity_pub/activity_pub_test.exs | 57 +++++++++++++++---- 3 files changed, 80 insertions(+), 25 deletions(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index c33848277..ee6dcf58a 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -110,23 +110,14 @@ def persist(object, meta) do def insert(map, local \\ true, fake \\ false, bypass_actor_check \\ false) when is_map(map) do with nil <- Activity.normalize(map), map <- lazy_put_activity_defaults(map, fake), - true <- bypass_actor_check || check_actor_is_active(map["actor"]), - {_, true} <- {:remote_limit_error, check_remote_limit(map)}, + {_, true} <- {:actor_check, bypass_actor_check || check_actor_is_active(map["actor"])}, + {_, true} <- {:remote_limit_pass, check_remote_limit(map)}, {:ok, map} <- MRF.filter(map), {recipients, _, _} = get_recipients(map), {:fake, false, map, recipients} <- {:fake, fake, map, recipients}, {:containment, :ok} <- {:containment, Containment.contain_child(map)}, - {:ok, map, object} <- insert_full_object(map) do - {:ok, activity} = - %Activity{ - data: map, - local: local, - actor: map["actor"], - recipients: recipients - } - |> Repo.insert() - |> maybe_create_activity_expiration() - + {:ok, map, object} <- insert_full_object(map), + {:ok, activity} <- insert_activity_with_expiration(map, local, recipients) do # Splice in the child object if we have one. activity = Maps.put_if_present(activity, :object, object) @@ -137,6 +128,15 @@ def insert(map, local \\ true, fake \\ false, bypass_actor_check \\ false) when %Activity{} = activity -> {:ok, activity} + {:actor_check, _} -> + {:error, false} + + {:containment, _} = error -> + error + + {:error, _} = error -> + error + {:fake, true, map, recipients} -> activity = %Activity{ data: map, @@ -149,11 +149,25 @@ def insert(map, local \\ true, fake \\ false, bypass_actor_check \\ false) when Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity) {:ok, activity} - error -> - {:error, error} + {:remote_limit_pass, _} -> + {:error, :remote_limit} + + {:reject, reason} -> + {:error, reason} end end + defp insert_activity_with_expiration(data, local, recipients) do + %Activity{ + data: data, + local: local, + actor: data["actor"], + recipients: recipients + } + |> Repo.insert() + |> maybe_create_activity_expiration() + end + def notify_and_stream(activity) do Notification.create_notifications(activity) diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex index 42e2ae79c..c70587b47 100644 --- a/lib/pleroma/workers/purge_expired_activity.ex +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -13,6 +13,10 @@ defmodule Pleroma.Workers.PurgeExpiredActivity do alias Pleroma.Activity + @spec enqueue(map()) :: + {:ok, Oban.Job.t()} + | {:error, :expired_activities_disabled} + | {:error, :expiration_too_close} def enqueue(args) do with true <- enabled?(), args when is_map(args) <- validate_expires_at(args) do diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 9af573924..d8caa0b00 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -239,7 +239,7 @@ test "drops activities beyond a certain limit" do } } - assert {:error, {:remote_limit_error, _}} = ActivityPub.insert(data) + assert {:error, :remote_limit} = ActivityPub.insert(data) end test "doesn't drop activities with content being null" do @@ -386,9 +386,11 @@ test "can be fetched into a timeline" do end describe "create activities" do - test "it reverts create" do - user = insert(:user) + setup do + [user: insert(:user)] + end + test "it reverts create", %{user: user} do with_mock(Utils, [:passthrough], maybe_federate: fn _ -> {:error, :reverted} end) do assert {:error, :reverted} = ActivityPub.create(%{ @@ -407,9 +409,47 @@ test "it reverts create" do assert Repo.aggregate(Object, :count, :id) == 0 end - test "removes doubled 'to' recipients" do - user = insert(:user) + test "creates activity if expiration is not configured and expires_at is not passed", %{ + user: user + } do + clear_config([Pleroma.Workers.PurgeExpiredActivity, :enabled], false) + assert {:ok, _} = + ActivityPub.create(%{ + to: ["user1", "user2"], + actor: user, + context: "", + object: %{ + "to" => ["user1", "user2"], + "type" => "Note", + "content" => "testing" + } + }) + end + + test "rejects activity if expires_at present but expiration is not configured", %{user: user} do + clear_config([Pleroma.Workers.PurgeExpiredActivity, :enabled], false) + + assert {:error, :expired_activities_disabled} = + ActivityPub.create(%{ + to: ["user1", "user2"], + actor: user, + context: "", + object: %{ + "to" => ["user1", "user2"], + "type" => "Note", + "content" => "testing" + }, + additional: %{ + "expires_at" => DateTime.utc_now() + } + }) + + assert Repo.aggregate(Activity, :count, :id) == 0 + assert Repo.aggregate(Object, :count, :id) == 0 + end + + test "removes doubled 'to' recipients", %{user: user} do {:ok, activity} = ActivityPub.create(%{ to: ["user1", "user1", "user2"], @@ -427,9 +467,7 @@ test "removes doubled 'to' recipients" do assert activity.recipients == ["user1", "user2", user.ap_id] end - test "increases user note count only for public activities" do - user = insert(:user) - + test "increases user note count only for public activities", %{user: user} do {:ok, _} = CommonAPI.post(User.get_cached_by_id(user.id), %{ status: "1", @@ -458,8 +496,7 @@ test "increases user note count only for public activities" do assert user.note_count == 2 end - test "increases replies count" do - user = insert(:user) + test "increases replies count", %{user: user} do user2 = insert(:user) {:ok, activity} = CommonAPI.post(user, %{status: "1", visibility: "public"}) From 357d971a10c28780795af4d19b37b0ac80d6ad09 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 3 Sep 2020 17:56:20 +0300 Subject: [PATCH 187/460] expiration for new pipeline --- lib/pleroma/web/activity_pub/activity_pub.ex | 18 ++++++++++++------ lib/pleroma/web/activity_pub/side_effects.ex | 7 ------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index ee6dcf58a..66a9f78a3 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -101,7 +101,9 @@ def persist(object, meta) do local: local, recipients: recipients, actor: object["actor"] - }) do + }), + # TODO: add tests for expired activities, when Note type will be supported in new pipeline + {:ok, _} <- maybe_create_activity_expiration(activity) do {:ok, activity, meta} end end @@ -158,14 +160,16 @@ def insert(map, local \\ true, fake \\ false, bypass_actor_check \\ false) when end defp insert_activity_with_expiration(data, local, recipients) do - %Activity{ + struct = %Activity{ data: data, local: local, actor: data["actor"], recipients: recipients } - |> Repo.insert() - |> maybe_create_activity_expiration() + + with {:ok, activity} <- Repo.insert(struct) do + maybe_create_activity_expiration(activity) + end end def notify_and_stream(activity) do @@ -177,7 +181,9 @@ def notify_and_stream(activity) do stream_out_participations(participations) end - defp maybe_create_activity_expiration({:ok, %{data: %{"expires_at" => expires_at}} = activity}) do + defp maybe_create_activity_expiration( + %{data: %{"expires_at" => %DateTime{} = expires_at}} = activity + ) do with {:ok, _job} <- Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ activity_id: activity.id, @@ -187,7 +193,7 @@ defp maybe_create_activity_expiration({:ok, %{data: %{"expires_at" => expires_at end end - defp maybe_create_activity_expiration(result), do: result + defp maybe_create_activity_expiration(activity), do: {:ok, activity} defp create_or_bump_conversation(activity, actor) do with {:ok, conversation} <- Conversation.create_or_bump_for(activity), diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index b30ca1bd7..46a8be767 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -187,13 +187,6 @@ def handle(%{data: %{"type" => "Create"}} = activity, meta) do Object.increase_replies_count(in_reply_to) end - if expires_at = activity.data["expires_at"] do - Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ - activity_id: activity.id, - expires_at: expires_at - }) - end - BackgroundWorker.enqueue("fetch_data_for_activity", %{"activity_id" => activity.id}) meta = From 6f2d1145183389c415e4d5a915e0c3965c00a3fb Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 3 Sep 2020 18:08:19 +0300 Subject: [PATCH 188/460] use another stream function in migration --- ...1316_move_activity_expirations_to_oban.exs | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs index 585d1a600..2bfefceb0 100644 --- a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs +++ b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs @@ -12,17 +12,15 @@ def change do from(e in "activity_expirations", select: %{id: e.id, activity_id: e.activity_id, scheduled_at: e.scheduled_at} ) - |> Pleroma.RepoStreamer.chunk_stream(500) - |> Stream.each(fn expirations -> - Enum.each(expirations, fn expiration -> - with {:ok, expires_at} <- DateTime.from_naive(expiration.scheduled_at, "Etc/UTC") do - Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ - activity_id: FlakeId.to_string(expiration.activity_id), - expires_at: expires_at, - validate: false - }) - end - end) + |> Pleroma.Repo.stream() + |> Enum.each(fn expiration -> + with {:ok, expires_at} <- DateTime.from_naive(expiration.scheduled_at, "Etc/UTC") do + Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ + activity_id: FlakeId.to_string(expiration.activity_id), + expires_at: expires_at, + validate: false + }) + end end) |> Stream.run() end From b3485a6dbfb1a16dd5604294074ef5139fbf3ce9 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 3 Sep 2020 19:02:22 +0300 Subject: [PATCH 189/460] little clean up --- lib/pleroma/workers/purge_expired_activity.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex index c70587b47..4be146194 100644 --- a/lib/pleroma/workers/purge_expired_activity.ex +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -23,7 +23,7 @@ def enqueue(args) do {scheduled_at, args} = Map.pop(args, :expires_at) args - |> __MODULE__.new(scheduled_at: scheduled_at) + |> new(scheduled_at: scheduled_at) |> Oban.insert() end end From eb5ff715f7917e174b9ae104a5d82779ff925301 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Fri, 4 Sep 2020 11:40:32 +0300 Subject: [PATCH 190/460] pin/unpin for activities with expires_at option --- lib/pleroma/activity.ex | 5 -- lib/pleroma/user.ex | 17 ++++++- lib/pleroma/workers/purge_expired_activity.ex | 18 +------ .../controllers/status_controller_test.exs | 49 ++++++++++++++++++- test/workers/purge_expired_activity_test.exs | 21 -------- 5 files changed, 64 insertions(+), 46 deletions(-) diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex index 84aba9572..17af04257 100644 --- a/lib/pleroma/activity.ex +++ b/lib/pleroma/activity.ex @@ -343,9 +343,4 @@ def pinned_by_actor?(%Activity{} = activity) do actor = user_actor(activity) activity.id in actor.pinned_activities end - - @spec pinned_by_actor?(Activity.t(), User.t()) :: boolean() - def pinned_by_actor?(%Activity{id: id}, %User{} = user) do - id in user.pinned_activities - end end diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index f323fc6ed..e73d19964 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -2315,6 +2315,11 @@ def add_pinnned_activity(user, %Pleroma.Activity{id: id}) do max_pinned_statuses = Config.get([:instance, :max_pinned_statuses], 0) params = %{pinned_activities: user.pinned_activities ++ [id]} + # if pinned activity was scheduled for deletion, we remove job + if expiration = Pleroma.Workers.PurgeExpiredActivity.get_expiration(id) do + Oban.cancel_job(expiration.id) + end + user |> cast(params, [:pinned_activities]) |> validate_length(:pinned_activities, @@ -2327,9 +2332,19 @@ def add_pinnned_activity(user, %Pleroma.Activity{id: id}) do |> update_and_set_cache() end - def remove_pinnned_activity(user, %Pleroma.Activity{id: id}) do + def remove_pinnned_activity(user, %Pleroma.Activity{id: id, data: data}) do params = %{pinned_activities: List.delete(user.pinned_activities, id)} + # if pinned activity was scheduled for deletion, we reschedule it for deletion + if data["expires_at"] do + {:ok, expires_at, _} = DateTime.from_iso8601(data["expires_at"]) + + Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ + activity_id: id, + expires_at: expires_at + }) + end + user |> cast(params, [:pinned_activities]) |> update_and_set_cache() diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex index 4be146194..f981eda8e 100644 --- a/lib/pleroma/workers/purge_expired_activity.ex +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -31,18 +31,8 @@ def enqueue(args) do @impl true def perform(%Oban.Job{args: %{"activity_id" => id}}) do with %Activity{} = activity <- find_activity(id), - %Pleroma.User{} = user <- find_user(activity.object.data["actor"]), - false <- pinned_by_actor?(activity, user) do + %Pleroma.User{} = user <- find_user(activity.object.data["actor"]) do Pleroma.Web.CommonAPI.delete(activity.id, user) - else - :pinned_by_actor -> - # if activity is pinned, schedule deletion on next day - enqueue(%{activity_id: id, expires_at: DateTime.add(DateTime.utc_now(), 24 * 3600)}) - - :ok - - error -> - error end end @@ -74,12 +64,6 @@ defp find_user(ap_id) do end end - defp pinned_by_actor?(activity, user) do - with true <- Activity.pinned_by_actor?(activity, user) do - :pinned_by_actor - end - end - def get_expiration(id) do from(j in Oban.Job, where: j.state == "scheduled", diff --git a/test/web/mastodon_api/controllers/status_controller_test.exs b/test/web/mastodon_api/controllers/status_controller_test.exs index 17a156be8..82ea73898 100644 --- a/test/web/mastodon_api/controllers/status_controller_test.exs +++ b/test/web/mastodon_api/controllers/status_controller_test.exs @@ -115,8 +115,7 @@ test "posting a status", %{conn: conn} do "expires_in" => expires_in }) - assert fourth_response = - %{"id" => fourth_id} = json_response_and_validate_schema(conn_four, 200) + assert %{"id" => fourth_id} = json_response_and_validate_schema(conn_four, 200) assert Activity.get_by_id(fourth_id) @@ -1142,6 +1141,52 @@ test "max pinned statuses", %{conn: conn, user: user, activity: activity_one} do |> post("/api/v1/statuses/#{activity_two.id}/pin") |> json_response_and_validate_schema(400) end + + test "on pin removes deletion job, on unpin reschedule deletion" do + %{conn: conn} = oauth_access(["write:accounts", "write:statuses"]) + expires_in = 2 * 60 * 60 + + expires_at = DateTime.add(DateTime.utc_now(), expires_in) + + assert %{"id" => id} = + conn + |> put_req_header("content-type", "application/json") + |> post("api/v1/statuses", %{ + "status" => "oolong", + "expires_in" => expires_in + }) + |> json_response_and_validate_schema(200) + + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: id}, + scheduled_at: expires_at + ) + + assert %{"id" => ^id, "pinned" => true} = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/statuses/#{id}/pin") + |> json_response_and_validate_schema(200) + + refute_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: id}, + scheduled_at: expires_at + ) + + assert %{"id" => ^id, "pinned" => false} = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/statuses/#{id}/unpin") + |> json_response_and_validate_schema(200) + + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: id}, + scheduled_at: expires_at + ) + end end describe "cards" do diff --git a/test/workers/purge_expired_activity_test.exs b/test/workers/purge_expired_activity_test.exs index 736d7d567..8b5dc9fd2 100644 --- a/test/workers/purge_expired_activity_test.exs +++ b/test/workers/purge_expired_activity_test.exs @@ -44,25 +44,4 @@ test "enqueue job" do assert %Oban.Job{} = Pleroma.Workers.PurgeExpiredActivity.get_expiration(activity.id) end - - test "don't delete pinned posts, schedule deletion on next day" do - activity = insert(:note_activity) - - assert {:ok, _} = - PurgeExpiredActivity.enqueue(%{ - activity_id: activity.id, - expires_at: DateTime.utc_now(), - validate: false - }) - - user = Pleroma.User.get_by_ap_id(activity.actor) - {:ok, activity} = Pleroma.Web.CommonAPI.pin(activity.id, user) - - assert %{success: 1, failure: 0} == - Oban.drain_queue(queue: :activity_expiration, with_scheduled: true) - - job = Pleroma.Workers.PurgeExpiredActivity.get_expiration(activity.id) - - assert DateTime.diff(job.scheduled_at, DateTime.add(DateTime.utc_now(), 24 * 3600)) in [0, 1] - end end From 29c1178c2b20eb1b389c7e1d35b58af05f48e8a2 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Fri, 4 Sep 2020 12:05:17 +0300 Subject: [PATCH 191/460] migration fix --- .../20200825061316_move_activity_expirations_to_oban.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs index 2bfefceb0..137933368 100644 --- a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs +++ b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs @@ -13,7 +13,7 @@ def change do select: %{id: e.id, activity_id: e.activity_id, scheduled_at: e.scheduled_at} ) |> Pleroma.Repo.stream() - |> Enum.each(fn expiration -> + |> Stream.each(fn expiration -> with {:ok, expires_at} <- DateTime.from_naive(expiration.scheduled_at, "Etc/UTC") do Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ activity_id: FlakeId.to_string(expiration.activity_id), From f24828a3e848e6ce3bcdd254e8c6e451898cfdf7 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 7 Sep 2020 20:21:32 +0300 Subject: [PATCH 192/460] oban warning --- lib/pleroma/config/oban.ex | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/config/oban.ex b/lib/pleroma/config/oban.ex index 81758c93d..9f601b1a3 100644 --- a/lib/pleroma/config/oban.ex +++ b/lib/pleroma/config/oban.ex @@ -5,7 +5,11 @@ def warn do oban_config = Pleroma.Config.get(Oban) crontab = - [Pleroma.Workers.Cron.StatsWorker, Pleroma.Workers.Cron.ClearOauthTokenWorker] + [ + Pleroma.Workers.Cron.StatsWorker, + Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker, + Pleroma.Workers.Cron.ClearOauthTokenWorker + ] |> Enum.reduce(oban_config[:crontab], fn removed_worker, acc -> with acc when is_list(acc) <- acc, setting when is_tuple(setting) <- From 4954667fb24ee6ab7b1bf3b676f7e88a582130cf Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 7 Sep 2020 20:22:14 +0300 Subject: [PATCH 193/460] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 14c0252f7..79cf02c96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - **Breaking:** Removed `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab`. - **Breaking:** Removed `Pleroma.Workers.Cron.ClearOauthTokenWorker` setting from Oban `:crontab` config. +- **Breaking:** Removed `Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker` setting from Oban `:crontab`. ## [2.1.1] - 2020-09-08 From 2c2094d4b2722cf511e3db8288c3754a48038f05 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 7 Sep 2020 20:57:38 +0300 Subject: [PATCH 194/460] configurable lifetime for ephemeral activities --- config/config.exs | 2 +- config/description.exs | 6 ++++++ docs/configuration/cheatsheet.md | 13 +++++++++++++ lib/pleroma/workers/purge_expired_activity.ex | 3 ++- .../controllers/status_controller_test.exs | 8 ++++---- 5 files changed, 26 insertions(+), 6 deletions(-) diff --git a/config/config.exs b/config/config.exs index d975db31e..88c47fd03 100644 --- a/config/config.exs +++ b/config/config.exs @@ -654,7 +654,7 @@ account_confirmation_resend: {8_640_000, 5}, ap_routes: {60_000, 15} -config :pleroma, Pleroma.Workers.PurgeExpiredActivity, enabled: true +config :pleroma, Pleroma.Workers.PurgeExpiredActivity, enabled: true, min_lifetime: 600 config :pleroma, Pleroma.Plugs.RemoteIp, enabled: true diff --git a/config/description.exs b/config/description.exs index 1253944de..82c7bc6a7 100644 --- a/config/description.exs +++ b/config/description.exs @@ -2480,6 +2480,12 @@ key: :enabled, type: :boolean, description: "Enables expired activities addition & deletion" + }, + %{ + key: :min_lifetime, + type: :integer, + description: "Minimum lifetime for ephemeral activity (in seconds)", + suggestions: [600] } ] }, diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index d0bebbd45..8f2425384 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -1091,3 +1091,16 @@ config :pleroma, :frontends, ``` This would serve the frontend from the the folder at `$instance_static/frontends/pleroma/stable`. You have to copy the frontend into this folder yourself. You can choose the name and ref any way you like, but they will be used by mix tasks to automate installation in the future, the name referring to the project and the ref referring to a commit. + +## Ephemeral activities + +Settings to enable and configure expiration for ephemeral activities + +* `:enabled` - enables ephemeral activities creation +* `:min_lifetime` - minimum lifetime for ephemeral activities (in seconds). Default: 10 minutes. + +Example: + +```elixir + config :pleroma, Pleroma.Workers.PurgeExpiredActivity, enabled: true, min_lifetime: 600 +``` diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex index f981eda8e..ffcb89dc3 100644 --- a/lib/pleroma/workers/purge_expired_activity.ex +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -77,6 +77,7 @@ def get_expiration(id) do def expires_late_enough?(scheduled_at) do now = DateTime.utc_now() diff = DateTime.diff(scheduled_at, now, :millisecond) - diff > :timer.hours(1) + min_lifetime = Pleroma.Config.get([__MODULE__, :min_lifetime], 600) + diff > :timer.seconds(min_lifetime) end end diff --git a/test/web/mastodon_api/controllers/status_controller_test.exs b/test/web/mastodon_api/controllers/status_controller_test.exs index 82ea73898..633a25e50 100644 --- a/test/web/mastodon_api/controllers/status_controller_test.exs +++ b/test/web/mastodon_api/controllers/status_controller_test.exs @@ -129,8 +129,8 @@ test "posting a status", %{conn: conn} do test "it fails to create a status if `expires_in` is less or equal than an hour", %{ conn: conn } do - # 1 hour - expires_in = 60 * 60 + # 1 minute + expires_in = 1 * 60 assert %{"error" => "Expiry date is too soon"} = conn @@ -141,8 +141,8 @@ test "it fails to create a status if `expires_in` is less or equal than an hour" }) |> json_response_and_validate_schema(422) - # 30 minutes - expires_in = 30 * 60 + # 5 minutes + expires_in = 5 * 60 assert %{"error" => "Expiry date is too soon"} = conn From a098e10fd6d9f3b6573e2fb6333335d40a9bf330 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 8 Sep 2020 12:07:33 +0300 Subject: [PATCH 195/460] Document ephemeral activity changes better Also remove the example from the cheatsheet, there is no need for it when the types are simple --- CHANGELOG.md | 3 +++ docs/configuration/cheatsheet.md | 8 +------- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 79cf02c96..a58a18c8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - **Breaking:** Removed `Pleroma.Workers.Cron.ClearOauthTokenWorker` setting from Oban `:crontab` config. - **Breaking:** Removed `Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker` setting from Oban `:crontab`. +### Changed +- Minimum lifetime for ephmeral activities changed to 10 minutes and made configurable (`:min_lifetime` option). + ## [2.1.1] - 2020-09-08 ### Security diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index 8f2425384..7cf1d1ce7 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -1092,15 +1092,9 @@ config :pleroma, :frontends, This would serve the frontend from the the folder at `$instance_static/frontends/pleroma/stable`. You have to copy the frontend into this folder yourself. You can choose the name and ref any way you like, but they will be used by mix tasks to automate installation in the future, the name referring to the project and the ref referring to a commit. -## Ephemeral activities +## Ephemeral activities (Pleroma.Workers.PurgeExpiredActivity) Settings to enable and configure expiration for ephemeral activities * `:enabled` - enables ephemeral activities creation * `:min_lifetime` - minimum lifetime for ephemeral activities (in seconds). Default: 10 minutes. - -Example: - -```elixir - config :pleroma, Pleroma.Workers.PurgeExpiredActivity, enabled: true, min_lifetime: 600 -``` From 15aece72382fe1862a58728b9d02990147f91365 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Tue, 8 Sep 2020 15:11:18 +0300 Subject: [PATCH 196/460] remove validate_expires_at from enqueue method --- lib/mix/tasks/pleroma/database.ex | 3 +- lib/pleroma/workers/purge_expired_activity.ex | 13 +----- ...1316_move_activity_expirations_to_oban.exs | 3 +- test/workers/purge_expired_activity_test.exs | 42 ++++++++++++------- 4 files changed, 30 insertions(+), 31 deletions(-) diff --git a/lib/mix/tasks/pleroma/database.ex b/lib/mix/tasks/pleroma/database.ex index aab4b5e9a..7f1108dcf 100644 --- a/lib/mix/tasks/pleroma/database.ex +++ b/lib/mix/tasks/pleroma/database.ex @@ -155,8 +155,7 @@ def run(["ensure_expiration"]) do Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ activity_id: activity.id, - expires_at: expires_at, - validate: false + expires_at: expires_at }) end) end) diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex index ffcb89dc3..c168890a2 100644 --- a/lib/pleroma/workers/purge_expired_activity.ex +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -18,8 +18,7 @@ defmodule Pleroma.Workers.PurgeExpiredActivity do | {:error, :expired_activities_disabled} | {:error, :expiration_too_close} def enqueue(args) do - with true <- enabled?(), - args when is_map(args) <- validate_expires_at(args) do + with true <- enabled?() do {scheduled_at, args} = Map.pop(args, :expires_at) args @@ -42,16 +41,6 @@ defp enabled? do end end - defp validate_expires_at(%{validate: false} = args), do: Map.delete(args, :validate) - - defp validate_expires_at(args) do - if expires_late_enough?(args[:expires_at]) do - args - else - {:error, :expiration_too_close} - end - end - defp find_activity(id) do with nil <- Activity.get_by_id_with_object(id) do {:error, :activity_not_found} diff --git a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs index 137933368..cdc00d20b 100644 --- a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs +++ b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs @@ -17,8 +17,7 @@ def change do with {:ok, expires_at} <- DateTime.from_naive(expiration.scheduled_at, "Etc/UTC") do Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ activity_id: FlakeId.to_string(expiration.activity_id), - expires_at: expires_at, - validate: false + expires_at: expires_at }) end end) diff --git a/test/workers/purge_expired_activity_test.exs b/test/workers/purge_expired_activity_test.exs index 8b5dc9fd2..b5938776d 100644 --- a/test/workers/purge_expired_activity_test.exs +++ b/test/workers/purge_expired_activity_test.exs @@ -10,21 +10,6 @@ defmodule Pleroma.Workers.PurgeExpiredActivityTest do alias Pleroma.Workers.PurgeExpiredActivity - test "denies expirations that don't live long enough" do - activity = insert(:note_activity) - - assert {:error, :expiration_too_close} = - PurgeExpiredActivity.enqueue(%{ - activity_id: activity.id, - expires_at: DateTime.utc_now() - }) - - refute_enqueued( - worker: Pleroma.Workers.PurgeExpiredActivity, - args: %{activity_id: activity.id} - ) - end - test "enqueue job" do activity = insert(:note_activity) @@ -44,4 +29,31 @@ test "enqueue job" do assert %Oban.Job{} = Pleroma.Workers.PurgeExpiredActivity.get_expiration(activity.id) end + + test "error if user was not found" do + activity = insert(:note_activity) + + assert {:ok, _} = + PurgeExpiredActivity.enqueue(%{ + activity_id: activity.id, + expires_at: DateTime.add(DateTime.utc_now(), 3601) + }) + + user = Pleroma.User.get_by_ap_id(activity.actor) + Pleroma.Repo.delete(user) + + assert {:error, :user_not_found} = + perform_job(Pleroma.Workers.PurgeExpiredActivity, %{activity_id: activity.id}) + end + + test "error if actiivity was not found" do + assert {:ok, _} = + PurgeExpiredActivity.enqueue(%{ + activity_id: "some_id", + expires_at: DateTime.add(DateTime.utc_now(), 3601) + }) + + assert {:error, :activity_not_found} = + perform_job(Pleroma.Workers.PurgeExpiredActivity, %{activity_id: "some_if"}) + end end From 82b56cdb9bc01dcf4dbd2ac0c06103af0900787d Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 10 Sep 2020 21:53:58 +0300 Subject: [PATCH 197/460] CHANGELOG.md: clarify that the functionality is not removed, just the config options --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a58a18c8c..75357f05e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,9 +12,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Removed -- **Breaking:** Removed `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab`. -- **Breaking:** Removed `Pleroma.Workers.Cron.ClearOauthTokenWorker` setting from Oban `:crontab` config. -- **Breaking:** Removed `Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker` setting from Oban `:crontab`. +- **Breaking:** `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab` (moved to a simpler implementation). +- **Breaking:** `Pleroma.Workers.Cron.ClearOauthTokenWorker` setting from Oban `:crontab` (moved to scheduled jobs). +- **Breaking:** `Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker` setting from Oban `:crontab` (moved to scheduled jobs). ### Changed - Minimum lifetime for ephmeral activities changed to 10 minutes and made configurable (`:min_lifetime` option). From 4d18a50f3c4b6654339a6a8df71160e23b45cac0 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Thu, 10 Sep 2020 21:54:26 +0300 Subject: [PATCH 198/460] [#2497] Formatting fix. --- lib/pleroma/web/media_proxy/media_proxy_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 5621f72dc..ff7fd2409 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -158,7 +158,7 @@ defp put_preview_response_headers( |> put_resp_header("cache-control", ReverseProxy.default_cache_control_header()) end - defp thumbnail_max_dimensions() do + defp thumbnail_max_dimensions do config = Config.get([:media_preview_proxy], []) thumbnail_max_width = Keyword.fetch!(config, :thumbnail_max_width) From da876d09e89bcfec6f2d1eaddb396f68ce48e12a Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Thu, 10 Sep 2020 23:13:51 +0200 Subject: [PATCH 199/460] federator: normalize only actor, catch actor error --- lib/pleroma/web/federator/federator.ex | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index f5803578d..e4ab9ba32 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -66,14 +66,17 @@ def perform(:publish, activity) do def perform(:incoming_ap_doc, params) do Logger.debug("Handling incoming AP activity") - params = Utils.normalize_params(params) + actor = + params + |> Map.get("actor") + |> Utils.get_ap_id() # NOTE: we use the actor ID to do the containment, this is fine because an # actor shouldn't be acting on objects outside their own AP server. - with {:ok, _user} <- ap_enabled_actor(params["actor"]), + with {_, {:ok, _user}} <- {:actor, ap_enabled_actor(actor)}, nil <- Activity.normalize(params["id"]), {_, :ok} <- - {:correct_origin?, Containment.contain_origin_from_id(params["actor"], params)}, + {:correct_origin?, Containment.contain_origin_from_id(actor, params)}, {:ok, activity} <- Transmogrifier.handle_incoming(params) do {:ok, activity} else @@ -85,10 +88,13 @@ def perform(:incoming_ap_doc, params) do Logger.debug("Already had #{params["id"]}") {:error, :already_present} + {:actor, e} -> + Logger.debug("Unhandled actor #{actor}, #{inspect(e)}") + {:error, e} + e -> # Just drop those for now - Logger.debug("Unhandled activity") - Logger.debug(Jason.encode!(params, pretty: true)) + Logger.debug("Unhandled activity\n" <> Jason.encode!(params, pretty: true)) {:error, e} end end From b73e9ef68689a7094e80e2affa0af9b05e86effb Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 25 Aug 2020 09:19:53 +0200 Subject: [PATCH 200/460] transmogrifier: Call strip_internal_fields on pipeline ingestion --- lib/pleroma/web/activity_pub/transmogrifier.ex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index af4384213..ec3b24206 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -550,6 +550,8 @@ def handle_incoming( _options ) when objtype in ~w{Question Answer ChatMessage Audio Event} do + data = Map.put(data, "object", strip_internal_fields(data["object"])) + with {:ok, %User{}} <- ObjectValidator.fetch_actor(data), {:ok, activity, _} <- Pipeline.common_pipeline(data, local: false) do {:ok, activity} From 846b59ccb09681bda0f54bed43f5b82883228e33 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Thu, 20 Aug 2020 02:00:04 +0200 Subject: [PATCH 201/460] Pipeline Ingestion: Video --- lib/pleroma/web/activity_pub/activity_pub.ex | 2 +- .../web/activity_pub/object_validator.ex | 16 +- ..._validator.ex => audio_video_validator.ex} | 43 ++++- .../object_validators/common_fixes.ex | 9 ++ .../create_generic_validator.ex | 8 +- lib/pleroma/web/activity_pub/side_effects.ex | 2 +- .../web/activity_pub/transmogrifier.ex | 37 +---- .../tesla_mock/framatube.org-video.json | 2 +- .../transmogrifier/video_handling_test.exs | 93 +++++++++++ test/web/activity_pub/transmogrifier_test.exs | 148 +----------------- 10 files changed, 158 insertions(+), 202 deletions(-) rename lib/pleroma/web/activity_pub/object_validators/{audio_validator.ex => audio_video_validator.ex} (75%) create mode 100644 test/web/activity_pub/transmogrifier/video_handling_test.exs diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 66a9f78a3..bceec8bd1 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -84,7 +84,7 @@ defp increase_replies_count_if_reply(%{ defp increase_replies_count_if_reply(_create_data), do: :noop - @object_types ~w[ChatMessage Question Answer Audio Event] + @object_types ~w[ChatMessage Question Answer Audio Video Event] @spec persist(map(), keyword()) :: {:ok, Activity.t() | Object.t()} def persist(%{"type" => type} = object, meta) when type in @object_types do with {:ok, object} <- Object.create(object) do diff --git a/lib/pleroma/web/activity_pub/object_validator.ex b/lib/pleroma/web/activity_pub/object_validator.ex index b77c06395..081f96389 100644 --- a/lib/pleroma/web/activity_pub/object_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validator.ex @@ -12,11 +12,12 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do alias Pleroma.Activity alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Object + alias Pleroma.Object.Containment alias Pleroma.User alias Pleroma.Web.ActivityPub.ObjectValidators.AcceptRejectValidator alias Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidator alias Pleroma.Web.ActivityPub.ObjectValidators.AnswerValidator - alias Pleroma.Web.ActivityPub.ObjectValidators.AudioValidator + alias Pleroma.Web.ActivityPub.ObjectValidators.AudioVideoValidator alias Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator alias Pleroma.Web.ActivityPub.ObjectValidators.ChatMessageValidator alias Pleroma.Web.ActivityPub.ObjectValidators.CreateChatMessageValidator @@ -149,10 +150,10 @@ def validate(%{"type" => "Question"} = object, meta) do end end - def validate(%{"type" => "Audio"} = object, meta) do + def validate(%{"type" => type} = object, meta) when type in ~w[Audio Video] do with {:ok, object} <- object - |> AudioValidator.cast_and_validate() + |> AudioVideoValidator.cast_and_validate() |> Ecto.Changeset.apply_action(:insert) do object = stringify_keys(object) {:ok, object, meta} @@ -198,7 +199,7 @@ def validate( %{"type" => "Create", "object" => %{"type" => objtype} = object} = create_activity, meta ) - when objtype in ~w[Question Answer Audio Event] do + when objtype in ~w[Question Answer Audio Video Event] do with {:ok, object_data} <- cast_and_apply(object), meta = Keyword.put(meta, :object_data, object_data |> stringify_keys), {:ok, create_activity} <- @@ -232,8 +233,8 @@ def cast_and_apply(%{"type" => "Answer"} = object) do AnswerValidator.cast_and_apply(object) end - def cast_and_apply(%{"type" => "Audio"} = object) do - AudioValidator.cast_and_apply(object) + def cast_and_apply(%{"type" => type} = object) when type in ~w[Audio Video] do + AudioVideoValidator.cast_and_apply(object) end def cast_and_apply(%{"type" => "Event"} = object) do @@ -262,7 +263,8 @@ def stringify_keys(object) when is_list(object) do def stringify_keys(object), do: object def fetch_actor(object) do - with {:ok, actor} <- ObjectValidators.ObjectID.cast(object["actor"]) do + with actor <- Containment.get_actor(object), + {:ok, actor} <- ObjectValidators.ObjectID.cast(actor) do User.get_or_fetch_by_ap_id(actor) end end diff --git a/lib/pleroma/web/activity_pub/object_validators/audio_validator.ex b/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex similarity index 75% rename from lib/pleroma/web/activity_pub/object_validators/audio_validator.ex rename to lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex index 1a97c504a..a6119e627 100644 --- a/lib/pleroma/web/activity_pub/object_validators/audio_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex @@ -2,9 +2,10 @@ # Copyright © 2017-2020 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioValidator do +defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioVideoValidator do use Ecto.Schema + alias Pleroma.EarmarkRenderer alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes @@ -25,14 +26,19 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioValidator do # TODO: Write type field(:tag, {:array, :map}, default: []) field(:type, :string) + + field(:name, :string) + field(:summary, :string) field(:content, :string) + field(:context, :string) + # short identifier for PleromaFE to group statuses by context + field(:context_id, :integer) # TODO: Remove actor on objects field(:actor, ObjectValidators.ObjectID) field(:attributedTo, ObjectValidators.ObjectID) - field(:summary, :string) field(:published, ObjectValidators.DateTime) field(:emoji, ObjectValidators.Emoji, default: %{}) field(:sensitive, :boolean, default: false) @@ -40,10 +46,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioValidator do field(:replies_count, :integer, default: 0) field(:like_count, :integer, default: 0) field(:announcement_count, :integer, default: 0) - field(:inReplyTo, :string) + field(:inReplyTo, ObjectValidators.ObjectID) field(:url, ObjectValidators.Uri) - # short identifier for PleromaFE to group statuses by context - field(:context_id, :integer) field(:likes, {:array, :string}, default: []) field(:announcements, {:array, :string}, default: []) @@ -68,9 +72,18 @@ def cast_data(data) do defp fix_url(%{"url" => url} = data) when is_list(url) do attachment = - Enum.find(url, fn x -> is_map(x) and String.starts_with?(x["mimeType"], "audio/") end) + Enum.find(url, fn x -> + mime_type = x["mimeType"] || x["mediaType"] || "" - link_element = Enum.find(url, fn x -> is_map(x) and x["mimeType"] == "text/html" end) + is_map(x) and String.starts_with?(mime_type, ["video/", "audio/"]) + end) + + link_element = + Enum.find(url, fn x -> + mime_type = x["mimeType"] || x["mediaType"] || "" + + is_map(x) and mime_type == "text/html" + end) data |> Map.put("attachment", [attachment]) @@ -79,12 +92,26 @@ defp fix_url(%{"url" => url} = data) when is_list(url) do defp fix_url(data), do: data + defp fix_content(%{"mediaType" => "text/markdown", "content" => content} = data) + when is_binary(content) do + content = + content + |> Earmark.as_html!(%Earmark.Options{renderer: EarmarkRenderer}) + |> Pleroma.HTML.filter_tags() + + Map.put(data, "content", content) + end + + defp fix_content(data), do: data + defp fix(data) do data |> CommonFixes.fix_defaults() |> CommonFixes.fix_attribution() + |> CommonFixes.fix_actor() |> Transmogrifier.fix_emoji() |> fix_url() + |> fix_content() end def changeset(struct, data) do @@ -97,7 +124,7 @@ def changeset(struct, data) do def validate_data(data_cng) do data_cng - |> validate_inclusion(:type, ["Audio"]) + |> validate_inclusion(:type, ["Audio", "Video"]) |> validate_required([:id, :actor, :attributedTo, :type, :context, :attachment]) |> CommonValidations.validate_any_presence([:cc, :to]) |> CommonValidations.validate_fields_match([:actor, :attributedTo]) diff --git a/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex b/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex index 720213d73..b3638cfc7 100644 --- a/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex +++ b/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex @@ -3,6 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do + alias Pleroma.Object.Containment alias Pleroma.Web.ActivityPub.Utils # based on Pleroma.Web.ActivityPub.Utils.lazy_put_objects_defaults @@ -19,4 +20,12 @@ def fix_attribution(data) do data |> Map.put_new("actor", data["attributedTo"]) end + + def fix_actor(data) do + actor = Containment.get_actor(data) + + data + |> Map.put("actor", actor) + |> Map.put("attributedTo", actor) + end end diff --git a/lib/pleroma/web/activity_pub/object_validators/create_generic_validator.ex b/lib/pleroma/web/activity_pub/object_validators/create_generic_validator.ex index b3dbeea57..422ee07be 100644 --- a/lib/pleroma/web/activity_pub/object_validators/create_generic_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/create_generic_validator.ex @@ -10,9 +10,10 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CreateGenericValidator do alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Object + alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes + alias Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations import Ecto.Changeset - import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations @primary_key false @@ -75,14 +76,15 @@ defp fix(data, meta) do data |> fix_context(meta) |> fix_addressing(meta) + |> CommonFixes.fix_actor() end def validate_data(cng, meta \\ []) do cng |> validate_required([:actor, :type, :object]) |> validate_inclusion(:type, ["Create"]) - |> validate_actor_presence() - |> validate_any_presence([:to, :cc]) + |> CommonValidations.validate_actor_presence() + |> CommonValidations.validate_any_presence([:to, :cc]) |> validate_actors_match(meta) |> validate_context_match(meta) |> validate_object_nonexistence() diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index 46a8be767..b5c720c7a 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -336,7 +336,7 @@ def handle_object_creation(%{"type" => "Answer"} = object_map, meta) do end def handle_object_creation(%{"type" => objtype} = object, meta) - when objtype in ~w[Audio Question Event] do + when objtype in ~w[Audio Video Question Event] do with {:ok, object, meta} <- Pipeline.common_pipeline(object, meta) do {:ok, object, meta} end diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index ec3b24206..e14936c10 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -7,7 +7,6 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do A module to handle coding from internal to wire ActivityPub and back. """ alias Pleroma.Activity - alias Pleroma.EarmarkRenderer alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Maps alias Pleroma.Object @@ -45,7 +44,6 @@ def fix_object(object, options \\ []) do |> fix_addressing |> fix_summary |> fix_type(options) - |> fix_content end def fix_summary(%{"summary" => nil} = object) do @@ -274,24 +272,7 @@ def fix_url(%{"url" => url} = object) when is_map(url) do Map.put(object, "url", url["href"]) end - def fix_url(%{"type" => "Video", "url" => url} = object) when is_list(url) do - attachment = - Enum.find(url, fn x -> - media_type = x["mediaType"] || x["mimeType"] || "" - - is_map(x) and String.starts_with?(media_type, "video/") - end) - - link_element = - Enum.find(url, fn x -> is_map(x) and (x["mediaType"] || x["mimeType"]) == "text/html" end) - - object - |> Map.put("attachment", [attachment]) - |> Map.put("url", link_element["href"]) - end - - def fix_url(%{"type" => object_type, "url" => url} = object) - when object_type != "Video" and is_list(url) do + def fix_url(%{"url" => url} = object) when is_list(url) do first_element = Enum.at(url, 0) url_string = @@ -371,18 +352,6 @@ def fix_type(%{"inReplyTo" => reply_id, "name" => _} = object, options) def fix_type(object, _), do: object - defp fix_content(%{"mediaType" => "text/markdown", "content" => content} = object) - when is_binary(content) do - html_content = - content - |> Earmark.as_html!(%Earmark.Options{renderer: EarmarkRenderer}) - |> Pleroma.HTML.filter_tags() - - Map.merge(object, %{"content" => html_content, "mediaType" => "text/html"}) - end - - defp fix_content(object), do: object - # Reduce the object list to find the reported user. defp get_reported(objects) do Enum.reduce_while(objects, nil, fn ap_id, _ -> @@ -455,7 +424,7 @@ def handle_incoming( %{"type" => "Create", "object" => %{"type" => objtype} = object} = data, options ) - when objtype in ~w{Article Note Video Page} do + when objtype in ~w{Article Note Page} do actor = Containment.get_actor(data) with nil <- Activity.get_create_by_object_ap_id(object["id"]), @@ -549,7 +518,7 @@ def handle_incoming( %{"type" => "Create", "object" => %{"type" => objtype}} = data, _options ) - when objtype in ~w{Question Answer ChatMessage Audio Event} do + when objtype in ~w{Question Answer ChatMessage Audio Video Event} do data = Map.put(data, "object", strip_internal_fields(data["object"])) with {:ok, %User{}} <- ObjectValidator.fetch_actor(data), diff --git a/test/fixtures/tesla_mock/framatube.org-video.json b/test/fixtures/tesla_mock/framatube.org-video.json index 3d53f0c97..1fa529886 100644 --- a/test/fixtures/tesla_mock/framatube.org-video.json +++ b/test/fixtures/tesla_mock/framatube.org-video.json @@ -1 +1 @@ -{"type":"Video","id":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206","name":"Déframasoftisons Internet [Framasoft]","duration":"PT3622S","uuid":"6050732a-8a7a-43d4-a6cd-809525a1d206","tag":[{"type":"Hashtag","name":"déframasoftisons"},{"type":"Hashtag","name":"EPN23"},{"type":"Hashtag","name":"framaconf"},{"type":"Hashtag","name":"Framasoft"},{"type":"Hashtag","name":"pyg"}],"category":{"identifier":"15","name":"Science & Technology"},"views":122,"sensitive":false,"waitTranscoding":false,"state":1,"commentsEnabled":true,"downloadEnabled":true,"published":"2020-05-24T18:34:31.569Z","originallyPublishedAt":"2019-11-30T23:00:00.000Z","updated":"2020-07-05T09:01:01.720Z","mediaType":"text/markdown","content":"Après avoir mené avec un certain succès la campagne « Dégooglisons Internet » en 2014, l’association Framasoft annonce fin 2019 arrêter progressivement un certain nombre de ses services alternatifs aux GAFAM. Pourquoi ?\r\n\r\nTranscription par @april...","support":null,"subtitleLanguage":[],"icon":{"type":"Image","url":"https://framatube.org/static/thumbnails/6050732a-8a7a-43d4-a6cd-809525a1d206.jpg","mediaType":"image/jpeg","width":223,"height":122},"url":[{"type":"Link","mediaType":"text/html","href":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206"},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4","height":1080,"size":1157359410,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309939","height":1080,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-1080.torrent","height":1080},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.torrent&xt=urn:btih:381c9429900552e23a4eb506318f1fa01e4d63a8&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4&ws=https%3A%2F%2Fpeertube.live%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4","height":1080},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4","height":480,"size":250095131,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309941","height":480,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-480.torrent","height":480},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.torrent&xt=urn:btih:a181dcbb5368ab5c31cc9ff07634becb72c344ee&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4&ws=https%3A%2F%2Fpeertube.live%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4","height":480},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4","height":360,"size":171357733,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309942","height":360,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-360.torrent","height":360},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.torrent&xt=urn:btih:aedfa9479ea04a175eee0b0bd0bda64076308746&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4&ws=https%3A%2F%2Fpeertube.live%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4","height":360},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4","height":720,"size":497100839,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309943","height":720,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-720.torrent","height":720},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.torrent&xt=urn:btih:71971668f82a3b24ac71bc3a982848dd8dc5a5f5&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4&ws=https%3A%2F%2Fpeertube.live%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4","height":720},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-240.mp4","height":240,"size":113038439,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309944","height":240,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-240.torrent","height":240},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240.torrent&xt=urn:btih:c42aa6c95efb28d9f114ebd98537f7b00fa72246&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240.mp4","height":240},{"type":"Link","mediaType":"application/x-mpegURL","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/master.m3u8","tag":[{"type":"Infohash","name":"f7428214539626e062f300f2ca4cf9154575144e"},{"type":"Infohash","name":"46e236dffb1ea6b9123a5396cbe88e97dd94cc6c"},{"type":"Infohash","name":"11f1045830b5d786c788f2594d19f128764e7d87"},{"type":"Infohash","name":"4327ad3e0d84de100130a27e9ab6fe40c4284f0e"},{"type":"Infohash","name":"41e2eee8e7b23a63c23a77c40a46de11492a4831"},{"type":"Link","name":"sha256","mediaType":"application/json","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/segments-sha256.json"},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-1080-fragmented.mp4","height":1080,"size":1156777472,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309940","height":1080,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-1080-hls.torrent","height":1080},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080-hls.torrent&xt=urn:btih:0204d780ebfab0d5d9d3476a038e812ad792deeb&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080-fragmented.mp4","height":1080},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-480-fragmented.mp4","height":480,"size":249562889,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309945","height":480,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-480-hls.torrent","height":480},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480-hls.torrent&xt=urn:btih:5d14f38ded29de629668fe1cfc61a75f4cce2628&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480-fragmented.mp4","height":480},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-360-fragmented.mp4","height":360,"size":170836415,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309946","height":360,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-360-hls.torrent","height":360},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360-hls.torrent&xt=urn:btih:30125488789080ad405ebcee6c214945f31b8f30&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360-fragmented.mp4","height":360},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-720-fragmented.mp4","height":720,"size":496533741,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309947","height":720,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-720-hls.torrent","height":720},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720-hls.torrent&xt=urn:btih:8ed1e8bccde709901c26e315fc8f53bfd26d1ba6&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720-fragmented.mp4","height":720},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-240-fragmented.mp4","height":240,"size":112529249,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309948","height":240,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-240-hls.torrent","height":240},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240-hls.torrent&xt=urn:btih:8b452bf4e70b9078d4e74ca8b5523cc9dc70d10a&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240-fragmented.mp4","height":240}]}],"likes":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206/likes","dislikes":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206/dislikes","shares":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206/announces","comments":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206/comments","attributedTo":[{"type":"Person","id":"https://framatube.org/accounts/framasoft"},{"type":"Group","id":"https://framatube.org/video-channels/bf54d359-cfad-4935-9d45-9d6be93f63e8"}],"to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://framatube.org/accounts/framasoft/followers"],"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1",{"RsaSignature2017":"https://w3id.org/security#RsaSignature2017"},{"pt":"https://joinpeertube.org/ns#","sc":"http://schema.org#","Hashtag":"as:Hashtag","uuid":"sc:identifier","category":"sc:category","licence":"sc:license","subtitleLanguage":"sc:subtitleLanguage","sensitive":"as:sensitive","language":"sc:inLanguage","Infohash":"pt:Infohash","Playlist":"pt:Playlist","PlaylistElement":"pt:PlaylistElement","originallyPublishedAt":"sc:datePublished","views":{"@type":"sc:Number","@id":"pt:views"},"state":{"@type":"sc:Number","@id":"pt:state"},"size":{"@type":"sc:Number","@id":"pt:size"},"fps":{"@type":"sc:Number","@id":"pt:fps"},"startTimestamp":{"@type":"sc:Number","@id":"pt:startTimestamp"},"stopTimestamp":{"@type":"sc:Number","@id":"pt:stopTimestamp"},"position":{"@type":"sc:Number","@id":"pt:position"},"commentsEnabled":{"@type":"sc:Boolean","@id":"pt:commentsEnabled"},"downloadEnabled":{"@type":"sc:Boolean","@id":"pt:downloadEnabled"},"waitTranscoding":{"@type":"sc:Boolean","@id":"pt:waitTranscoding"},"support":{"@type":"sc:Text","@id":"pt:support"},"likes":{"@id":"as:likes","@type":"@id"},"dislikes":{"@id":"as:dislikes","@type":"@id"},"playlists":{"@id":"pt:playlists","@type":"@id"},"shares":{"@id":"as:shares","@type":"@id"},"comments":{"@id":"as:comments","@type":"@id"}}]} \ No newline at end of file +{"type":"Create","id":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206/activity","actor":"https://framatube.org/accounts/framasoft","object":{"type":"Video","id":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206","name":"Déframasoftisons Internet [Framasoft]","duration":"PT3622S","uuid":"6050732a-8a7a-43d4-a6cd-809525a1d206","tag":[{"type":"Hashtag","name":"déframasoftisons"},{"type":"Hashtag","name":"EPN23"},{"type":"Hashtag","name":"framaconf"},{"type":"Hashtag","name":"Framasoft"},{"type":"Hashtag","name":"pyg"}],"category":{"identifier":"15","name":"Science & Technology"},"views":154,"sensitive":false,"waitTranscoding":false,"state":1,"commentsEnabled":true,"downloadEnabled":true,"published":"2020-05-24T18:34:31.569Z","originallyPublishedAt":"2019-11-30T23:00:00.000Z","updated":"2020-08-17T11:01:02.994Z","mediaType":"text/markdown","content":"Après avoir mené avec un certain succès la campagne « Dégooglisons Internet » en 2014, l’association Framasoft annonce fin 2019 arrêter progressivement un certain nombre de ses services alternatifs aux GAFAM. Pourquoi ?\r\n\r\nTranscription par @aprilorg ici : https://www.april.org/deframasoftisons-internet-pierre-yves-gosset-framasoft","support":null,"subtitleLanguage":[],"icon":[{"type":"Image","url":"https://framatube.org/static/thumbnails/6050732a-8a7a-43d4-a6cd-809525a1d206.jpg","mediaType":"image/jpeg","width":223,"height":122},{"type":"Image","url":"https://framatube.org/static/previews/6050732a-8a7a-43d4-a6cd-809525a1d206.jpg","mediaType":"image/jpeg","width":850,"height":480}],"url":[{"type":"Link","mediaType":"text/html","href":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206"},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4","height":1080,"size":1157359410,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309939","height":1080,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-1080.torrent","height":1080},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.torrent&xt=urn:btih:381c9429900552e23a4eb506318f1fa01e4d63a8&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4&ws=https%3A%2F%2Fpeertube.live%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4","height":1080},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4","height":720,"size":497100839,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309943","height":720,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-720.torrent","height":720},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.torrent&xt=urn:btih:71971668f82a3b24ac71bc3a982848dd8dc5a5f5&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4&ws=https%3A%2F%2Fpeertube.live%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4","height":720},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4","height":480,"size":250095131,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309941","height":480,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-480.torrent","height":480},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.torrent&xt=urn:btih:a181dcbb5368ab5c31cc9ff07634becb72c344ee&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4&ws=https%3A%2F%2Fpeertube.live%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4","height":480},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4","height":360,"size":171357733,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309942","height":360,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-360.torrent","height":360},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.torrent&xt=urn:btih:aedfa9479ea04a175eee0b0bd0bda64076308746&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4&ws=https%3A%2F%2Fpeertube.live%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4","height":360},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-240.mp4","height":240,"size":113038439,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309944","height":240,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-240.torrent","height":240},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240.torrent&xt=urn:btih:c42aa6c95efb28d9f114ebd98537f7b00fa72246&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240.mp4","height":240},{"type":"Link","mediaType":"application/x-mpegURL","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/master.m3u8","tag":[{"type":"Infohash","name":"f7428214539626e062f300f2ca4cf9154575144e"},{"type":"Infohash","name":"46e236dffb1ea6b9123a5396cbe88e97dd94cc6c"},{"type":"Infohash","name":"11f1045830b5d786c788f2594d19f128764e7d87"},{"type":"Infohash","name":"4327ad3e0d84de100130a27e9ab6fe40c4284f0e"},{"type":"Infohash","name":"41e2eee8e7b23a63c23a77c40a46de11492a4831"},{"type":"Link","name":"sha256","mediaType":"application/json","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/segments-sha256.json"},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-1080-fragmented.mp4","height":1080,"size":1156777472,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309940","height":1080,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-1080-hls.torrent","height":1080},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080-hls.torrent&xt=urn:btih:0204d780ebfab0d5d9d3476a038e812ad792deeb&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080-fragmented.mp4","height":1080},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-720-fragmented.mp4","height":720,"size":496533741,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309947","height":720,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-720-hls.torrent","height":720},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720-hls.torrent&xt=urn:btih:8ed1e8bccde709901c26e315fc8f53bfd26d1ba6&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720-fragmented.mp4","height":720},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-480-fragmented.mp4","height":480,"size":249562889,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309945","height":480,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-480-hls.torrent","height":480},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480-hls.torrent&xt=urn:btih:5d14f38ded29de629668fe1cfc61a75f4cce2628&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480-fragmented.mp4","height":480},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-360-fragmented.mp4","height":360,"size":170836415,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309946","height":360,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-360-hls.torrent","height":360},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360-hls.torrent&xt=urn:btih:30125488789080ad405ebcee6c214945f31b8f30&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360-fragmented.mp4","height":360},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-240-fragmented.mp4","height":240,"size":112529249,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309948","height":240,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-240-hls.torrent","height":240},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240-hls.torrent&xt=urn:btih:8b452bf4e70b9078d4e74ca8b5523cc9dc70d10a&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240-fragmented.mp4","height":240}]}],"likes":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206/likes","dislikes":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206/dislikes","shares":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206/announces","comments":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206/comments","attributedTo":[{"type":"Person","id":"https://framatube.org/accounts/framasoft"},{"type":"Group","id":"https://framatube.org/video-channels/bf54d359-cfad-4935-9d45-9d6be93f63e8"}],"to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://framatube.org/accounts/framasoft/followers"]},"to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://framatube.org/accounts/framasoft/followers"],"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1",{"RsaSignature2017":"https://w3id.org/security#RsaSignature2017"},{"pt":"https://joinpeertube.org/ns#","sc":"http://schema.org#","Hashtag":"as:Hashtag","uuid":"sc:identifier","category":"sc:category","licence":"sc:license","subtitleLanguage":"sc:subtitleLanguage","sensitive":"as:sensitive","language":"sc:inLanguage","Infohash":"pt:Infohash","Playlist":"pt:Playlist","PlaylistElement":"pt:PlaylistElement","originallyPublishedAt":"sc:datePublished","views":{"@type":"sc:Number","@id":"pt:views"},"state":{"@type":"sc:Number","@id":"pt:state"},"size":{"@type":"sc:Number","@id":"pt:size"},"fps":{"@type":"sc:Number","@id":"pt:fps"},"startTimestamp":{"@type":"sc:Number","@id":"pt:startTimestamp"},"stopTimestamp":{"@type":"sc:Number","@id":"pt:stopTimestamp"},"position":{"@type":"sc:Number","@id":"pt:position"},"commentsEnabled":{"@type":"sc:Boolean","@id":"pt:commentsEnabled"},"downloadEnabled":{"@type":"sc:Boolean","@id":"pt:downloadEnabled"},"waitTranscoding":{"@type":"sc:Boolean","@id":"pt:waitTranscoding"},"support":{"@type":"sc:Text","@id":"pt:support"},"likes":{"@id":"as:likes","@type":"@id"},"dislikes":{"@id":"as:dislikes","@type":"@id"},"playlists":{"@id":"pt:playlists","@type":"@id"},"shares":{"@id":"as:shares","@type":"@id"},"comments":{"@id":"as:comments","@type":"@id"}}]} \ No newline at end of file diff --git a/test/web/activity_pub/transmogrifier/video_handling_test.exs b/test/web/activity_pub/transmogrifier/video_handling_test.exs new file mode 100644 index 000000000..69c953a2e --- /dev/null +++ b/test/web/activity_pub/transmogrifier/video_handling_test.exs @@ -0,0 +1,93 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.Transmogrifier.VideoHandlingTest do + use Oban.Testing, repo: Pleroma.Repo + use Pleroma.DataCase + + alias Pleroma.Activity + alias Pleroma.Object + alias Pleroma.Object.Fetcher + alias Pleroma.Web.ActivityPub.Transmogrifier + + setup_all do + Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) + :ok + end + + test "skip converting the content when it is nil" do + data = + File.read!("test/fixtures/tesla_mock/framatube.org-video.json") + |> Jason.decode!() + |> Kernel.put_in(["object", "content"], nil) + + {:ok, %Activity{local: false} = activity} = Transmogrifier.handle_incoming(data) + + assert object = Object.normalize(activity, false) + + assert object.data["content"] == nil + end + + test "it converts content of object to html" do + data = File.read!("test/fixtures/tesla_mock/framatube.org-video.json") |> Jason.decode!() + + {:ok, %Activity{local: false} = activity} = Transmogrifier.handle_incoming(data) + + assert object = Object.normalize(activity, false) + + assert object.data["content"] == + "

Après avoir mené avec un certain succès la campagne « Dégooglisons Internet » en 2014, l’association Framasoft annonce fin 2019 arrêter progressivement un certain nombre de ses services alternatifs aux GAFAM. Pourquoi ?

Transcription par @aprilorg ici : https://www.april.org/deframasoftisons-internet-pierre-yves-gosset-framasoft

" + end + + test "it remaps video URLs as attachments if necessary" do + {:ok, object} = + Fetcher.fetch_object_from_id( + "https://peertube.moe/videos/watch/df5f464b-be8d-46fb-ad81-2d4c2d1630e3" + ) + + assert object.data["url"] == + "https://peertube.moe/videos/watch/df5f464b-be8d-46fb-ad81-2d4c2d1630e3" + + assert object.data["attachment"] == [ + %{ + "type" => "Link", + "mediaType" => "video/mp4", + "name" => nil, + "url" => [ + %{ + "href" => + "https://peertube.moe/static/webseed/df5f464b-be8d-46fb-ad81-2d4c2d1630e3-480.mp4", + "mediaType" => "video/mp4", + "type" => "Link" + } + ] + } + ] + + data = File.read!("test/fixtures/tesla_mock/framatube.org-video.json") |> Jason.decode!() + + {:ok, %Activity{local: false} = activity} = Transmogrifier.handle_incoming(data) + + assert object = Object.normalize(activity, false) + + assert object.data["attachment"] == [ + %{ + "type" => "Link", + "mediaType" => "video/mp4", + "name" => nil, + "url" => [ + %{ + "href" => + "https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4", + "mediaType" => "video/mp4", + "type" => "Link" + } + ] + } + ] + + assert object.data["url"] == + "https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206" + end +end diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index cc55a7be7..0a3291d49 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -8,7 +8,6 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do alias Pleroma.Activity alias Pleroma.Object - alias Pleroma.Object.Fetcher alias Pleroma.Tests.ObanHelpers alias Pleroma.User alias Pleroma.Web.ActivityPub.Transmogrifier @@ -355,83 +354,6 @@ test "it works for incoming unfollows with an existing follow" do refute User.following?(User.get_cached_by_ap_id(data["actor"]), user) end - test "skip converting the content when it is nil" do - object_id = "https://peertube.social/videos/watch/278d2b7c-0f38-4aaa-afe6-9ecc0c4a34fe" - - {:ok, object} = Fetcher.fetch_and_contain_remote_object_from_id(object_id) - - result = - Pleroma.Web.ActivityPub.Transmogrifier.fix_object(Map.merge(object, %{"content" => nil})) - - assert result["content"] == nil - end - - test "it converts content of object to html" do - object_id = "https://peertube.social/videos/watch/278d2b7c-0f38-4aaa-afe6-9ecc0c4a34fe" - - {:ok, %{"content" => content_markdown}} = - Fetcher.fetch_and_contain_remote_object_from_id(object_id) - - {:ok, %Pleroma.Object{data: %{"content" => content}} = object} = - Fetcher.fetch_object_from_id(object_id) - - assert content_markdown == - "Support this and our other Michigan!/usr/group videos and meetings. Learn more at http://mug.org/membership\n\nTwenty Years in Jail: FreeBSD's Jails, Then and Now\n\nJails started as a limited virtualization system, but over the last two years they've..." - - assert content == - "

Support this and our other Michigan!/usr/group videos and meetings. Learn more at http://mug.org/membership

Twenty Years in Jail: FreeBSD’s Jails, Then and Now

Jails started as a limited virtualization system, but over the last two years they’ve…

" - - assert object.data["mediaType"] == "text/html" - end - - test "it remaps video URLs as attachments if necessary" do - {:ok, object} = - Fetcher.fetch_object_from_id( - "https://peertube.moe/videos/watch/df5f464b-be8d-46fb-ad81-2d4c2d1630e3" - ) - - assert object.data["url"] == - "https://peertube.moe/videos/watch/df5f464b-be8d-46fb-ad81-2d4c2d1630e3" - - assert object.data["attachment"] == [ - %{ - "type" => "Link", - "mediaType" => "video/mp4", - "url" => [ - %{ - "href" => - "https://peertube.moe/static/webseed/df5f464b-be8d-46fb-ad81-2d4c2d1630e3-480.mp4", - "mediaType" => "video/mp4", - "type" => "Link" - } - ] - } - ] - - {:ok, object} = - Fetcher.fetch_object_from_id( - "https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206" - ) - - assert object.data["attachment"] == [ - %{ - "type" => "Link", - "mediaType" => "video/mp4", - "url" => [ - %{ - "href" => - "https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4", - "mediaType" => "video/mp4", - "type" => "Link" - } - ] - } - ] - - assert object.data["url"] == - "https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206" - end - test "it accepts Flag activities" do user = insert(:user) other_user = insert(:user) @@ -1133,75 +1055,7 @@ test "fixes data for object when url is map" do } end - test "fixes data for video object" do - object = %{ - "type" => "Video", - "url" => [ - %{ - "type" => "Link", - "mimeType" => "video/mp4", - "href" => "https://peede8d-46fb-ad81-2d4c2d1630e3-480.mp4" - }, - %{ - "type" => "Link", - "mimeType" => "video/mp4", - "href" => "https://peertube46fb-ad81-2d4c2d1630e3-240.mp4" - }, - %{ - "type" => "Link", - "mimeType" => "text/html", - "href" => "https://peertube.-2d4c2d1630e3" - }, - %{ - "type" => "Link", - "mimeType" => "text/html", - "href" => "https://peertube.-2d4c2d16377-42" - } - ] - } - - assert Transmogrifier.fix_url(object) == %{ - "attachment" => [ - %{ - "href" => "https://peede8d-46fb-ad81-2d4c2d1630e3-480.mp4", - "mimeType" => "video/mp4", - "type" => "Link" - } - ], - "type" => "Video", - "url" => "https://peertube.-2d4c2d1630e3" - } - end - - test "fixes url for not Video object" do - object = %{ - "type" => "Text", - "url" => [ - %{ - "type" => "Link", - "mimeType" => "text/html", - "href" => "https://peertube.-2d4c2d1630e3" - }, - %{ - "type" => "Link", - "mimeType" => "text/html", - "href" => "https://peertube.-2d4c2d16377-42" - } - ] - } - - assert Transmogrifier.fix_url(object) == %{ - "type" => "Text", - "url" => "https://peertube.-2d4c2d1630e3" - } - - assert Transmogrifier.fix_url(%{"type" => "Text", "url" => []}) == %{ - "type" => "Text", - "url" => "" - } - end - - test "retunrs not modified object" do + test "returns non-modified object" do assert Transmogrifier.fix_url(%{"type" => "Text"}) == %{"type" => "Text"} end end From 2132b24a9df8116e12abc8c458cff4c3850aeda0 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Thu, 20 Aug 2020 04:27:59 +0200 Subject: [PATCH 202/460] object_validators: likes & announcements as [ObjectID] --- .../activity_pub/object_validators/audio_video_validator.ex | 4 ++-- .../web/activity_pub/object_validators/note_validator.ex | 4 ++-- .../web/activity_pub/object_validators/question_validator.ex | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex b/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex index a6119e627..16973e5db 100644 --- a/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex @@ -49,8 +49,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioVideoValidator do field(:inReplyTo, ObjectValidators.ObjectID) field(:url, ObjectValidators.Uri) - field(:likes, {:array, :string}, default: []) - field(:announcements, {:array, :string}, default: []) + field(:likes, {:array, ObjectValidators.ObjectID}, default: []) + field(:announcements, {:array, ObjectValidators.ObjectID}, default: []) end def cast_and_apply(data) do diff --git a/lib/pleroma/web/activity_pub/object_validators/note_validator.ex b/lib/pleroma/web/activity_pub/object_validators/note_validator.ex index ab4469a59..e47cbaaea 100644 --- a/lib/pleroma/web/activity_pub/object_validators/note_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/note_validator.ex @@ -43,8 +43,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidator do field(:inReplyTo, ObjectValidators.ObjectID) field(:url, ObjectValidators.Uri) - field(:likes, {:array, :string}, default: []) - field(:announcements, {:array, :string}, default: []) + field(:likes, {:array, ObjectValidators.ObjectID}, default: []) + field(:announcements, {:array, ObjectValidators.ObjectID}, default: []) end def cast_and_validate(data) do diff --git a/lib/pleroma/web/activity_pub/object_validators/question_validator.ex b/lib/pleroma/web/activity_pub/object_validators/question_validator.ex index 934d3c1ea..9310485dc 100644 --- a/lib/pleroma/web/activity_pub/object_validators/question_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/question_validator.ex @@ -47,8 +47,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.QuestionValidator do # short identifier for PleromaFE to group statuses by context field(:context_id, :integer) - field(:likes, {:array, :string}, default: []) - field(:announcements, {:array, :string}, default: []) + field(:likes, {:array, ObjectValidators.ObjectID}, default: []) + field(:announcements, {:array, ObjectValidators.ObjectID}, default: []) field(:closed, ObjectValidators.DateTime) field(:voters, {:array, ObjectValidators.ObjectID}, default: []) From 1b3d5956b1be7faac4e1230d788307650acce991 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Thu, 20 Aug 2020 20:03:07 +0200 Subject: [PATCH 203/460] Pipeline Ingestion: Article --- lib/pleroma/web/activity_pub/activity_pub.ex | 2 +- .../web/activity_pub/object_validator.ex | 17 ++++- ...validator.ex => article_note_validator.ex} | 55 +++++++++++--- lib/pleroma/web/activity_pub/side_effects.ex | 2 +- .../web/activity_pub/transmogrifier.ex | 4 +- .../wedistribute-create-article.json | 1 + ...st.exs => article_note_validator_test.exs} | 6 +- .../transmogrifier/article_handling_test.exs | 75 +++++++++++++++++++ test/web/activity_pub/transmogrifier_test.exs | 9 --- 9 files changed, 143 insertions(+), 28 deletions(-) rename lib/pleroma/web/activity_pub/object_validators/{note_validator.ex => article_note_validator.ex} (59%) create mode 100644 test/fixtures/tesla_mock/wedistribute-create-article.json rename test/web/activity_pub/object_validators/{note_validator_test.exs => article_note_validator_test.exs} (76%) create mode 100644 test/web/activity_pub/transmogrifier/article_handling_test.exs diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index bceec8bd1..3ab045737 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -84,7 +84,7 @@ defp increase_replies_count_if_reply(%{ defp increase_replies_count_if_reply(_create_data), do: :noop - @object_types ~w[ChatMessage Question Answer Audio Video Event] + @object_types ~w[ChatMessage Question Answer Audio Video Event Article] @spec persist(map(), keyword()) :: {:ok, Activity.t() | Object.t()} def persist(%{"type" => type} = object, meta) when type in @object_types do with {:ok, object} <- Object.create(object) do diff --git a/lib/pleroma/web/activity_pub/object_validator.ex b/lib/pleroma/web/activity_pub/object_validator.ex index 081f96389..bd0a2a8dc 100644 --- a/lib/pleroma/web/activity_pub/object_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validator.ex @@ -17,6 +17,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do alias Pleroma.Web.ActivityPub.ObjectValidators.AcceptRejectValidator alias Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidator alias Pleroma.Web.ActivityPub.ObjectValidators.AnswerValidator + alias Pleroma.Web.ActivityPub.ObjectValidators.ArticleNoteValidator alias Pleroma.Web.ActivityPub.ObjectValidators.AudioVideoValidator alias Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator alias Pleroma.Web.ActivityPub.ObjectValidators.ChatMessageValidator @@ -160,6 +161,16 @@ def validate(%{"type" => type} = object, meta) when type in ~w[Audio Video] do end end + def validate(%{"type" => "Article"} = object, meta) do + with {:ok, object} <- + object + |> ArticleNoteValidator.cast_and_validate() + |> Ecto.Changeset.apply_action(:insert) do + object = stringify_keys(object) + {:ok, object, meta} + end + end + def validate(%{"type" => "Answer"} = object, meta) do with {:ok, object} <- object @@ -199,7 +210,7 @@ def validate( %{"type" => "Create", "object" => %{"type" => objtype} = object} = create_activity, meta ) - when objtype in ~w[Question Answer Audio Video Event] do + when objtype in ~w[Question Answer Audio Video Event Article] do with {:ok, object_data} <- cast_and_apply(object), meta = Keyword.put(meta, :object_data, object_data |> stringify_keys), {:ok, create_activity} <- @@ -241,6 +252,10 @@ def cast_and_apply(%{"type" => "Event"} = object) do EventValidator.cast_and_apply(object) end + def cast_and_apply(%{"type" => "Article"} = object) do + ArticleNoteValidator.cast_and_apply(object) + end + def cast_and_apply(o), do: {:error, {:validator_not_set, o}} # is_struct/1 isn't present in Elixir 1.8.x diff --git a/lib/pleroma/web/activity_pub/object_validators/note_validator.ex b/lib/pleroma/web/activity_pub/object_validators/article_note_validator.ex similarity index 59% rename from lib/pleroma/web/activity_pub/object_validators/note_validator.ex rename to lib/pleroma/web/activity_pub/object_validators/article_note_validator.ex index e47cbaaea..5b7dad517 100644 --- a/lib/pleroma/web/activity_pub/object_validators/note_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/article_note_validator.ex @@ -2,15 +2,19 @@ # Copyright © 2017-2020 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidator do +defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNoteValidator do use Ecto.Schema alias Pleroma.EctoType.ActivityPub.ObjectValidators + alias Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator + alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes + alias Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations alias Pleroma.Web.ActivityPub.Transmogrifier import Ecto.Changeset @primary_key false + @derive Jason.Encoder embedded_schema do field(:id, ObjectValidators.ObjectID, primary_key: true) @@ -30,13 +34,14 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidator do # short identifier for PleromaFE to group statuses by context field(:context_id, :integer) + # TODO: Remove actor on objects field(:actor, ObjectValidators.ObjectID) + field(:attributedTo, ObjectValidators.ObjectID) field(:published, ObjectValidators.DateTime) field(:emoji, ObjectValidators.Emoji, default: %{}) field(:sensitive, :boolean, default: false) - # TODO: Write type - field(:attachment, {:array, :map}, default: []) + embeds_many(:attachment, AttachmentValidator) field(:replies_count, :integer, default: 0) field(:like_count, :integer, default: 0) field(:announcement_count, :integer, default: 0) @@ -47,27 +52,55 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidator do field(:announcements, {:array, ObjectValidators.ObjectID}, default: []) end + def cast_and_apply(data) do + data + |> cast_data + |> apply_action(:insert) + end + def cast_and_validate(data) do data |> cast_data() |> validate_data() end - defp fix(data) do - data - |> Transmogrifier.fix_emoji() - end - def cast_data(data) do data = fix(data) %__MODULE__{} - |> cast(data, __schema__(:fields)) + |> changeset(data) + end + + defp fix_url(%{"url" => url} = data) when is_map(url) do + Map.put(data, "url", url["href"]) + end + + defp fix_url(data), do: data + + defp fix(data) do + data + |> CommonFixes.fix_defaults() + |> CommonFixes.fix_attribution() + |> CommonFixes.fix_actor() + |> fix_url() + |> Transmogrifier.fix_emoji() + end + + def changeset(struct, data) do + data = fix(data) + + struct + |> cast(data, __schema__(:fields) -- [:attachment]) + |> cast_embed(:attachment) end def validate_data(data_cng) do data_cng - |> validate_inclusion(:type, ["Note"]) - |> validate_required([:id, :actor, :to, :cc, :type, :content, :context]) + |> validate_inclusion(:type, ["Article", "Note"]) + |> validate_required([:id, :actor, :attributedTo, :type, :context, :context_id]) + |> CommonValidations.validate_any_presence([:cc, :to]) + |> CommonValidations.validate_fields_match([:actor, :attributedTo]) + |> CommonValidations.validate_actor_presence() + |> CommonValidations.validate_host_match() end end diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index b5c720c7a..b9a83a544 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -336,7 +336,7 @@ def handle_object_creation(%{"type" => "Answer"} = object_map, meta) do end def handle_object_creation(%{"type" => objtype} = object, meta) - when objtype in ~w[Audio Video Question Event] do + when objtype in ~w[Audio Video Question Event Article] do with {:ok, object, meta} <- Pipeline.common_pipeline(object, meta) do {:ok, object, meta} end diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index e14936c10..80f529704 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -424,7 +424,7 @@ def handle_incoming( %{"type" => "Create", "object" => %{"type" => objtype} = object} = data, options ) - when objtype in ~w{Article Note Page} do + when objtype in ~w{Note Page} do actor = Containment.get_actor(data) with nil <- Activity.get_create_by_object_ap_id(object["id"]), @@ -518,7 +518,7 @@ def handle_incoming( %{"type" => "Create", "object" => %{"type" => objtype}} = data, _options ) - when objtype in ~w{Question Answer ChatMessage Audio Video Event} do + when objtype in ~w{Question Answer ChatMessage Audio Video Event Article} do data = Map.put(data, "object", strip_internal_fields(data["object"])) with {:ok, %User{}} <- ObjectValidator.fetch_actor(data), diff --git a/test/fixtures/tesla_mock/wedistribute-create-article.json b/test/fixtures/tesla_mock/wedistribute-create-article.json new file mode 100644 index 000000000..3cfef8b99 --- /dev/null +++ b/test/fixtures/tesla_mock/wedistribute-create-article.json @@ -0,0 +1 @@ +{"@context":["https:\/\/www.w3.org\/ns\/activitystreams"],"type":"Create","actor":"https:\/\/wedistribute.org\/wp-json\/pterotype\/v1\/actor\/-blog","object":{"@context":["https:\/\/www.w3.org\/ns\/activitystreams"],"type":"Article","name":"The end is near: Mastodon plans to drop OStatus support","content":"\n

The days of OStatus are numbered. The venerable protocol has served as a glue between many different types of servers since the early days of the Fediverse, connecting StatusNet (now GNU Social) to Friendica, Hubzilla, Mastodon, and Pleroma.<\/p>\n\n\n\n

Now that many fediverse platforms support ActivityPub as a successor protocol, Mastodon appears to be drawing a line in the sand. In a Patreon update<\/a>, Eugen Rochko writes:<\/p>\n\n\n\n

...OStatus...has overstayed its welcome in the code...and now that most of the network uses ActivityPub, it's time for it to go. <\/p>Eugen Rochko, Mastodon creator<\/cite><\/blockquote>\n\n\n\n

The pull request<\/a> to remove Pubsubhubbub and Salmon, two of the main components of OStatus, has already been merged into Mastodon's master branch.<\/p>\n\n\n\n

Some projects will be left in the dark as a side effect of this. GNU Social and PostActiv, for example, both only communicate using OStatus. While some discussion<\/a> exists regarding adopting ActivityPub for GNU Social, and a plugin is in development<\/a>, it hasn't been formally adopted yet. We just hope that the Free Software Foundation's instance<\/a> gets updated in time!<\/p>\n","summary":"One of the largest platforms in the federated social web is dropping the protocol that it started with.","attributedTo":"https:\/\/wedistribute.org\/wp-json\/pterotype\/v1\/actor\/-blog","url":"https:\/\/wedistribute.org\/2019\/07\/mastodon-drops-ostatus\/","to":["https:\/\/www.w3.org\/ns\/activitystreams#Public","https:\/\/wedistribute.org\/wp-json\/pterotype\/v1\/actor\/-blog\/followers"],"id":"https:\/\/wedistribute.org\/wp-json\/pterotype\/v1\/object\/85810","likes":"https:\/\/wedistribute.org\/wp-json\/pterotype\/v1\/object\/85810\/likes","shares":"https:\/\/wedistribute.org\/wp-json\/pterotype\/v1\/object\/85810\/shares"},"to":["https:\/\/www.w3.org\/ns\/activitystreams#Public","https:\/\/wedistribute.org\/wp-json\/pterotype\/v1\/actor\/-blog\/followers"],"id":"https:\/\/wedistribute.org\/wp-json\/pterotype\/v1\/object\/85809"} \ No newline at end of file diff --git a/test/web/activity_pub/object_validators/note_validator_test.exs b/test/web/activity_pub/object_validators/article_note_validator_test.exs similarity index 76% rename from test/web/activity_pub/object_validators/note_validator_test.exs rename to test/web/activity_pub/object_validators/article_note_validator_test.exs index 30c481ffb..cc6dab872 100644 --- a/test/web/activity_pub/object_validators/note_validator_test.exs +++ b/test/web/activity_pub/object_validators/article_note_validator_test.exs @@ -2,10 +2,10 @@ # Copyright © 2017-2020 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidatorTest do +defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNoteValidatorTest do use Pleroma.DataCase - alias Pleroma.Web.ActivityPub.ObjectValidators.NoteValidator + alias Pleroma.Web.ActivityPub.ObjectValidators.ArticleNoteValidator alias Pleroma.Web.ActivityPub.Utils import Pleroma.Factory @@ -29,7 +29,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidatorTest do end test "a basic note validates", %{note: note} do - %{valid?: true} = NoteValidator.cast_and_validate(note) + %{valid?: true} = ArticleNoteValidator.cast_and_validate(note) end end end diff --git a/test/web/activity_pub/transmogrifier/article_handling_test.exs b/test/web/activity_pub/transmogrifier/article_handling_test.exs new file mode 100644 index 000000000..9b12a470a --- /dev/null +++ b/test/web/activity_pub/transmogrifier/article_handling_test.exs @@ -0,0 +1,75 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.Transmogrifier.ArticleHandlingTest do + use Oban.Testing, repo: Pleroma.Repo + use Pleroma.DataCase + + alias Pleroma.Activity + alias Pleroma.Object + alias Pleroma.Object.Fetcher + alias Pleroma.Web.ActivityPub.Transmogrifier + + test "Pterotype (Wordpress Plugin) Article" do + Tesla.Mock.mock(fn %{url: "https://wedistribute.org/wp-json/pterotype/v1/actor/-blog"} -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/wedistribute-user.json")} + end) + + data = + File.read!("test/fixtures/tesla_mock/wedistribute-create-article.json") |> Jason.decode!() + + {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + + object = Object.normalize(data["object"]) + + assert object.data["name"] == "The end is near: Mastodon plans to drop OStatus support" + + assert object.data["summary"] == + "One of the largest platforms in the federated social web is dropping the protocol that it started with." + + assert object.data["url"] == "https://wedistribute.org/2019/07/mastodon-drops-ostatus/" + end + + test "Plume Article" do + Tesla.Mock.mock(fn + %{url: "https://baptiste.gelez.xyz/~/PlumeDevelopment/this-month-in-plume-june-2018/"} -> + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/tesla_mock/baptiste.gelex.xyz-article.json") + } + + %{url: "https://baptiste.gelez.xyz/@/BaptisteGelez"} -> + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/tesla_mock/baptiste.gelex.xyz-user.json") + } + end) + + {:ok, object} = + Fetcher.fetch_object_from_id( + "https://baptiste.gelez.xyz/~/PlumeDevelopment/this-month-in-plume-june-2018/" + ) + + assert object.data["name"] == "This Month in Plume: June 2018" + + assert object.data["url"] == + "https://baptiste.gelez.xyz/~/PlumeDevelopment/this-month-in-plume-june-2018/" + end + + test "Prismo Article" do + Tesla.Mock.mock(fn %{url: "https://prismo.news/@mxb"} -> + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/tesla_mock/https___prismo.news__mxb.json") + } + end) + + data = File.read!("test/fixtures/prismo-url-map.json") |> Jason.decode!() + + {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + object = Object.normalize(data["object"]) + + assert object.data["url"] == "https://prismo.news/posts/83" + end +end diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 0a3291d49..561674f01 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -44,15 +44,6 @@ test "it works for incoming notices with tag not being an array (kroeg)" do assert "test" in object.data["tag"] end - test "it works for incoming notices with url not being a string (prismo)" do - data = File.read!("test/fixtures/prismo-url-map.json") |> Poison.decode!() - - {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) - object = Object.normalize(data["object"]) - - assert object.data["url"] == "https://prismo.news/posts/83" - end - test "it cleans up incoming notices which are not really DMs" do user = insert(:user) other_user = insert(:user) From f18178cb096b9a00ed12ff0fe36893f118ec6649 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Sat, 22 Aug 2020 02:01:33 +0200 Subject: [PATCH 204/460] AttachmentValidator: directly embed url schema and pass it fix_media_type --- .../object_validators/attachment_validator.ex | 21 ++++++++++++++-- .../object_validators/url_object_validator.ex | 24 ------------------- 2 files changed, 19 insertions(+), 26 deletions(-) delete mode 100644 lib/pleroma/web/activity_pub/object_validators/url_object_validator.ex diff --git a/lib/pleroma/web/activity_pub/object_validators/attachment_validator.ex b/lib/pleroma/web/activity_pub/object_validators/attachment_validator.ex index c8b148280..df102a134 100644 --- a/lib/pleroma/web/activity_pub/object_validators/attachment_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/attachment_validator.ex @@ -5,6 +5,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator do use Ecto.Schema + alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Web.ActivityPub.ObjectValidators.UrlObjectValidator import Ecto.Changeset @@ -15,7 +16,11 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator do field(:mediaType, :string, default: "application/octet-stream") field(:name, :string) - embeds_many(:url, UrlObjectValidator) + embeds_many :url, UrlObjectValidator, primary_key: false do + field(:type, :string) + field(:href, ObjectValidators.Uri) + field(:mediaType, :string, default: "application/octet-stream") + end end def cast_and_validate(data) do @@ -37,7 +42,18 @@ def changeset(struct, data) do struct |> cast(data, [:type, :mediaType, :name]) - |> cast_embed(:url, required: true) + |> cast_embed(:url, with: &url_changeset/2) + |> validate_inclusion(:type, ~w[Link Document Audio Image Video]) + |> validate_required([:type, :mediaType, :url]) + end + + def url_changeset(struct, data) do + data = fix_media_type(data) + + struct + |> cast(data, [:type, :href, :mediaType]) + |> validate_inclusion(:type, ["Link"]) + |> validate_required([:type, :href, :mediaType]) end def fix_media_type(data) do @@ -75,6 +91,7 @@ defp fix_url(data) do def validate_data(cng) do cng + |> validate_inclusion(:type, ~w[Document Audio Image Video]) |> validate_required([:mediaType, :url, :type]) end end diff --git a/lib/pleroma/web/activity_pub/object_validators/url_object_validator.ex b/lib/pleroma/web/activity_pub/object_validators/url_object_validator.ex deleted file mode 100644 index 881030f38..000000000 --- a/lib/pleroma/web/activity_pub/object_validators/url_object_validator.ex +++ /dev/null @@ -1,24 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ActivityPub.ObjectValidators.UrlObjectValidator do - use Ecto.Schema - - alias Pleroma.EctoType.ActivityPub.ObjectValidators - - import Ecto.Changeset - @primary_key false - - embedded_schema do - field(:type, :string) - field(:href, ObjectValidators.Uri) - field(:mediaType, :string, default: "application/octet-stream") - end - - def changeset(struct, data) do - struct - |> cast(data, __schema__(:fields)) - |> validate_required([:type, :href, :mediaType]) - end -end From e3ca0a7e2d18ca9b3c809282678456d4517d39bc Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Fri, 11 Sep 2020 09:09:28 +0300 Subject: [PATCH 205/460] migration to remove old cron jobs --- .../20200911055909_remove_cron_jobs.exs | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 priv/repo/migrations/20200911055909_remove_cron_jobs.exs diff --git a/priv/repo/migrations/20200911055909_remove_cron_jobs.exs b/priv/repo/migrations/20200911055909_remove_cron_jobs.exs new file mode 100644 index 000000000..33897d128 --- /dev/null +++ b/priv/repo/migrations/20200911055909_remove_cron_jobs.exs @@ -0,0 +1,20 @@ +defmodule Pleroma.Repo.Migrations.RemoveCronJobs do + use Ecto.Migration + + import Ecto.Query, only: [from: 2] + + def up do + from(j in "oban_jobs", + where: + j.worker in ^[ + "Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker", + "Pleroma.Workers.Cron.StatsWorker", + "Pleroma.Workers.Cron.ClearOauthTokenWorker" + ], + select: [:id] + ) + |> Pleroma.Repo.delete_all() + end + + def down, do: :ok +end From dbc013f24c3885960714425f201e372335d22345 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 11 Sep 2020 11:22:50 +0200 Subject: [PATCH 206/460] instance: Handle not getting a favicon --- lib/pleroma/instances/instance.ex | 12 ++--- test/web/instances/instance_test.exs | 71 ++++++++++++++++++---------- 2 files changed, 50 insertions(+), 33 deletions(-) diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index 8bf53c090..6948651c7 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -159,13 +159,11 @@ defp scrape_favicon(%URI{} = instance_uri) do Pleroma.HTTP.get(to_string(instance_uri), [{"accept", "text/html"}], adapter: [pool: :media] ), - favicon_rel <- - html - |> Floki.parse_document!() - |> Floki.attribute("link[rel=icon]", "href") - |> List.first(), - favicon <- URI.merge(instance_uri, favicon_rel) |> to_string(), - true <- is_binary(favicon) do + {_, [favicon_rel | _]} when is_binary(favicon_rel) <- + {:parse, + html |> Floki.parse_document!() |> Floki.attribute("link[rel=icon]", "href")}, + {_, favicon} when is_binary(favicon) <- + {:merge, URI.merge(instance_uri, favicon_rel) |> to_string()} do favicon else _ -> nil diff --git a/test/web/instances/instance_test.exs b/test/web/instances/instance_test.exs index dc6ace843..4f0805100 100644 --- a/test/web/instances/instance_test.exs +++ b/test/web/instances/instance_test.exs @@ -99,35 +99,54 @@ test "does NOT modify `unreachable_since` value of existing record in case it's end end - test "Scrapes favicon URLs" do - Tesla.Mock.mock(fn %{url: "https://favicon.example.org/"} -> - %Tesla.Env{ - status: 200, - body: ~s[] - } - end) + describe "get_or_update_favicon/1" do + test "Scrapes favicon URLs" do + Tesla.Mock.mock(fn %{url: "https://favicon.example.org/"} -> + %Tesla.Env{ + status: 200, + body: ~s[] + } + end) - assert "https://favicon.example.org/favicon.png" == - Instance.get_or_update_favicon(URI.parse("https://favicon.example.org/")) - end + assert "https://favicon.example.org/favicon.png" == + Instance.get_or_update_favicon(URI.parse("https://favicon.example.org/")) + end - test "Returns nil on too long favicon URLs" do - long_favicon_url = - "https://Lorem.ipsum.dolor.sit.amet/consecteturadipiscingelit/Praesentpharetrapurusutaliquamtempus/Mauriseulaoreetarcu/atfacilisisorci/Nullamporttitor/nequesedfeugiatmollis/dolormagnaefficiturlorem/nonpretiumsapienorcieurisus/Nullamveleratsem/Maecenassedaccumsanexnam/favicon.png" + test "Returns nil on too long favicon URLs" do + long_favicon_url = + "https://Lorem.ipsum.dolor.sit.amet/consecteturadipiscingelit/Praesentpharetrapurusutaliquamtempus/Mauriseulaoreetarcu/atfacilisisorci/Nullamporttitor/nequesedfeugiatmollis/dolormagnaefficiturlorem/nonpretiumsapienorcieurisus/Nullamveleratsem/Maecenassedaccumsanexnam/favicon.png" - Tesla.Mock.mock(fn %{url: "https://long-favicon.example.org/"} -> - %Tesla.Env{ - status: 200, - body: ~s[] - } - end) + Tesla.Mock.mock(fn %{url: "https://long-favicon.example.org/"} -> + %Tesla.Env{ + status: 200, + body: + ~s[] + } + end) - assert capture_log(fn -> - assert nil == - Instance.get_or_update_favicon( - URI.parse("https://long-favicon.example.org/") - ) - end) =~ - "Instance.get_or_update_favicon(\"long-favicon.example.org\") error: %Postgrex.Error{" + assert capture_log(fn -> + assert nil == + Instance.get_or_update_favicon( + URI.parse("https://long-favicon.example.org/") + ) + end) =~ + "Instance.get_or_update_favicon(\"long-favicon.example.org\") error: %Postgrex.Error{" + end + + test "Handles not getting a favicon URL properly" do + Tesla.Mock.mock(fn %{url: "https://no-favicon.example.org/"} -> + %Tesla.Env{ + status: 200, + body: ~s[

I wil look down and whisper "GNO.."

] + } + end) + + refute capture_log(fn -> + assert nil == + Instance.get_or_update_favicon( + URI.parse("https://no-favicon.example.org/") + ) + end) =~ "Instance.scrape_favicon(\"https://no-favicon.example.org/\") error: " + end end end From 36c9197ac36707cdfe3d679bbd64972b4b03ea84 Mon Sep 17 00:00:00 2001 From: Haelwenn Date: Fri, 11 Sep 2020 10:46:16 +0000 Subject: [PATCH 207/460] Apply 1 suggestion(s) to 1 file(s) --- lib/pleroma/web/federator/federator.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index e4ab9ba32..130654145 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -94,7 +94,7 @@ def perform(:incoming_ap_doc, params) do e -> # Just drop those for now - Logger.debug("Unhandled activity\n" <> Jason.encode!(params, pretty: true)) + Logger.debug(fn -> "Unhandled activity\n" <> Jason.encode!(params, pretty: true) end) {:error, e} end end From 89a7efab69d905cc3521388b1e1cf43851848627 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Fri, 11 Sep 2020 14:22:54 +0300 Subject: [PATCH 208/460] ConnectionPool: Log possible HTTP1 blocks --- lib/pleroma/gun/conn.ex | 12 ++++++------ lib/pleroma/gun/connection_pool/worker.ex | 22 ++++++++++++++++------ lib/pleroma/telemetry/logger.ex | 18 ++++++++++++++++-- 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/lib/pleroma/gun/conn.ex b/lib/pleroma/gun/conn.ex index 75b1ffc0a..477e19c6e 100644 --- a/lib/pleroma/gun/conn.ex +++ b/lib/pleroma/gun/conn.ex @@ -50,10 +50,10 @@ defp do_open(uri, %{proxy: {proxy_host, proxy_port}} = opts) do with open_opts <- Map.delete(opts, :tls_opts), {:ok, conn} <- Gun.open(proxy_host, proxy_port, open_opts), - {:ok, _} <- Gun.await_up(conn, opts[:connect_timeout]), + {:ok, protocol} <- Gun.await_up(conn, opts[:connect_timeout]), stream <- Gun.connect(conn, connect_opts), {:response, :fin, 200, _} <- Gun.await(conn, stream) do - {:ok, conn} + {:ok, conn, protocol} else error -> Logger.warn( @@ -88,8 +88,8 @@ defp do_open(uri, %{proxy: {proxy_type, proxy_host, proxy_port}} = opts) do |> Map.put(:socks_opts, socks_opts) with {:ok, conn} <- Gun.open(proxy_host, proxy_port, opts), - {:ok, _} <- Gun.await_up(conn, opts[:connect_timeout]) do - {:ok, conn} + {:ok, protocol} <- Gun.await_up(conn, opts[:connect_timeout]) do + {:ok, conn, protocol} else error -> Logger.warn( @@ -106,8 +106,8 @@ defp do_open(%URI{host: host, port: port} = uri, opts) do host = Pleroma.HTTP.AdapterHelper.parse_host(host) with {:ok, conn} <- Gun.open(host, port, opts), - {:ok, _} <- Gun.await_up(conn, opts[:connect_timeout]) do - {:ok, conn} + {:ok, protocol} <- Gun.await_up(conn, opts[:connect_timeout]) do + {:ok, conn, protocol} else error -> Logger.warn( diff --git a/lib/pleroma/gun/connection_pool/worker.ex b/lib/pleroma/gun/connection_pool/worker.ex index c36332817..49d41e4c7 100644 --- a/lib/pleroma/gun/connection_pool/worker.ex +++ b/lib/pleroma/gun/connection_pool/worker.ex @@ -15,7 +15,7 @@ def init([_key, _uri, _opts, _client_pid] = opts) do @impl true def handle_continue({:connect, [key, uri, opts, client_pid]}, _) do - with {:ok, conn_pid} <- Gun.Conn.open(uri, opts), + with {:ok, conn_pid, protocol} <- Gun.Conn.open(uri, opts), Process.link(conn_pid) do time = :erlang.monotonic_time(:millisecond) @@ -27,8 +27,12 @@ def handle_continue({:connect, [key, uri, opts, client_pid]}, _) do send(client_pid, {:conn_pid, conn_pid}) {:noreply, - %{key: key, timer: nil, client_monitors: %{client_pid => Process.monitor(client_pid)}}, - :hibernate} + %{ + key: key, + timer: nil, + client_monitors: %{client_pid => Process.monitor(client_pid)}, + protocol: protocol + }, :hibernate} else err -> {:stop, {:shutdown, err}, nil} @@ -53,14 +57,20 @@ def handle_cast({:remove_client, client_pid}, state) do end @impl true - def handle_call(:add_client, {client_pid, _}, %{key: key} = state) do + def handle_call(:add_client, {client_pid, _}, %{key: key, protocol: protocol} = state) do time = :erlang.monotonic_time(:millisecond) - {{conn_pid, _, _, _}, _} = + {{conn_pid, used_by, _, _}, _} = Registry.update_value(@registry, key, fn {conn_pid, used_by, crf, last_reference} -> {conn_pid, [client_pid | used_by], crf(time - last_reference, crf), time} end) + :telemetry.execute( + [:pleroma, :connection_pool, :client, :add], + %{client_pid: client_pid, clients: used_by}, + %{key: state.key, protocol: protocol} + ) + state = if state.timer != nil do Process.cancel_timer(state[:timer]) @@ -131,7 +141,7 @@ def handle_info({:gun_down, _pid, _protocol, _reason, _killed_streams}, state) d @impl true def handle_info({:DOWN, _ref, :process, pid, reason}, state) do :telemetry.execute( - [:pleroma, :connection_pool, :client_death], + [:pleroma, :connection_pool, :client, :dead], %{client_pid: pid, reason: reason}, %{key: state.key} ) diff --git a/lib/pleroma/telemetry/logger.ex b/lib/pleroma/telemetry/logger.ex index 4cacae02f..197b1d091 100644 --- a/lib/pleroma/telemetry/logger.ex +++ b/lib/pleroma/telemetry/logger.ex @@ -7,7 +7,8 @@ defmodule Pleroma.Telemetry.Logger do [:pleroma, :connection_pool, :reclaim, :start], [:pleroma, :connection_pool, :reclaim, :stop], [:pleroma, :connection_pool, :provision_failure], - [:pleroma, :connection_pool, :client_death] + [:pleroma, :connection_pool, :client, :dead], + [:pleroma, :connection_pool, :client, :add] ] def attach do :telemetry.attach_many("pleroma-logger", @events, &handle_event/4, []) @@ -62,7 +63,7 @@ def handle_event( end def handle_event( - [:pleroma, :connection_pool, :client_death], + [:pleroma, :connection_pool, :client, :dead], %{client_pid: client_pid, reason: reason}, %{key: key}, _ @@ -73,4 +74,17 @@ def handle_event( }" end) end + + def handle_event( + [:pleroma, :connection_pool, :client, :add], + %{clients: [_, _ | _] = clients}, + %{key: key, protocol: :http}, + _ + ) do + Logger.info(fn -> + "Pool worker for #{key}: #{length(clients)} clients are using an HTTP1 connection at the same time, head-of-line blocking might occur." + end) + end + + def handle_event([:pleroma, :connection_pool, :client, :add], _, _, _), do: :ok end From f1f44069ae525fd21127e5ceccc61016c12f4427 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 11 Sep 2020 19:58:58 +0200 Subject: [PATCH 209/460] Fetcher: Correctly return MRF reject reason --- lib/pleroma/object/fetcher.ex | 4 ++-- lib/pleroma/web/activity_pub/activity_pub.ex | 4 ++-- test/object/fetcher_test.exs | 25 +++++++++++++++----- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex index 1de2ce6c3..24dc7cb95 100644 --- a/lib/pleroma/object/fetcher.ex +++ b/lib/pleroma/object/fetcher.ex @@ -98,8 +98,8 @@ def fetch_object_from_id(id, options \\ []) do {:containment, _} -> {:error, "Object containment failed."} - {:transmogrifier, {:error, {:reject, nil}}} -> - {:reject, nil} + {:transmogrifier, {:error, {:reject, e}}} -> + {:reject, e} {:transmogrifier, _} = e -> {:error, e} diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 66a9f78a3..b2205bff7 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -154,8 +154,8 @@ def insert(map, local \\ true, fake \\ false, bypass_actor_check \\ false) when {:remote_limit_pass, _} -> {:error, :remote_limit} - {:reject, reason} -> - {:error, reason} + {:reject, _} = e -> + {:error, e} end end diff --git a/test/object/fetcher_test.exs b/test/object/fetcher_test.exs index 16cfa7f5c..3173ee31c 100644 --- a/test/object/fetcher_test.exs +++ b/test/object/fetcher_test.exs @@ -6,10 +6,13 @@ defmodule Pleroma.Object.FetcherTest do use Pleroma.DataCase alias Pleroma.Activity + alias Pleroma.Config alias Pleroma.Object alias Pleroma.Object.Fetcher - import Tesla.Mock + + import ExUnit.CaptureLog import Mock + import Tesla.Mock setup do mock(fn @@ -71,20 +74,20 @@ test "it works when fetching the OP actor errors out" do setup do: clear_config([:instance, :federation_incoming_replies_max_depth]) test "it returns thread depth exceeded error if thread depth is exceeded" do - Pleroma.Config.put([:instance, :federation_incoming_replies_max_depth], 0) + Config.put([:instance, :federation_incoming_replies_max_depth], 0) assert {:error, "Max thread distance exceeded."} = Fetcher.fetch_object_from_id(@ap_id, depth: 1) end test "it fetches object if max thread depth is restricted to 0 and depth is not specified" do - Pleroma.Config.put([:instance, :federation_incoming_replies_max_depth], 0) + Config.put([:instance, :federation_incoming_replies_max_depth], 0) assert {:ok, _} = Fetcher.fetch_object_from_id(@ap_id) end test "it fetches object if requested depth does not exceed max thread depth" do - Pleroma.Config.put([:instance, :federation_incoming_replies_max_depth], 10) + Config.put([:instance, :federation_incoming_replies_max_depth], 10) assert {:ok, _} = Fetcher.fetch_object_from_id(@ap_id, depth: 10) end @@ -120,6 +123,16 @@ test "it fetches an object" do assert object == object_again end + + test "Return MRF reason when fetched status is rejected by one" do + clear_config([:mrf_keyword, :reject], ["yeah"]) + clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.KeywordPolicy]) + + assert {:reject, "[KeywordPolicy] Matches with rejected keyword"} == + Fetcher.fetch_object_from_id( + "http://mastodon.example.org/@admin/99541947525187367" + ) + end end describe "implementation quirks" do @@ -212,7 +225,7 @@ test "it can refetch pruned objects" do Pleroma.Signature, [:passthrough], [] do - Pleroma.Config.put([:activitypub, :sign_object_fetches], true) + Config.put([:activitypub, :sign_object_fetches], true) Fetcher.fetch_object_from_id("http://mastodon.example.org/@admin/99541947525187367") @@ -223,7 +236,7 @@ test "it can refetch pruned objects" do Pleroma.Signature, [:passthrough], [] do - Pleroma.Config.put([:activitypub, :sign_object_fetches], false) + Config.put([:activitypub, :sign_object_fetches], false) Fetcher.fetch_object_from_id("http://mastodon.example.org/@admin/99541947525187367") From f88dc1937e5aa4208143fa68400a5c38a1b9eddf Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 31 Aug 2020 16:48:24 -0500 Subject: [PATCH 210/460] MastodonAPI.StatusView.get_user/1 --> CommonAPI.get_user/1 --- .../web/admin_api/views/status_view.ex | 3 ++- lib/pleroma/web/common_api/common_api.ex | 17 +++++++++++++ .../web/mastodon_api/views/status_view.ex | 25 +++---------------- .../web/pleroma_api/views/scrobble_view.ex | 4 +-- test/web/common_api/common_api_test.exs | 20 +++++++++++++++ 5 files changed, 45 insertions(+), 24 deletions(-) diff --git a/lib/pleroma/web/admin_api/views/status_view.ex b/lib/pleroma/web/admin_api/views/status_view.ex index 500800be2..6042a22b6 100644 --- a/lib/pleroma/web/admin_api/views/status_view.ex +++ b/lib/pleroma/web/admin_api/views/status_view.ex @@ -8,6 +8,7 @@ defmodule Pleroma.Web.AdminAPI.StatusView do require Pleroma.Constants alias Pleroma.Web.AdminAPI + alias Pleroma.Web.CommonAPI alias Pleroma.Web.MastodonAPI defdelegate merge_account_views(user), to: AdminAPI.AccountView @@ -17,7 +18,7 @@ def render("index.json", opts) do end def render("show.json", %{activity: %{data: %{"object" => _object}} = activity} = opts) do - user = MastodonAPI.StatusView.get_user(activity.data["actor"]) + user = CommonAPI.get_user(activity.data["actor"]) MastodonAPI.StatusView.render("show.json", opts) |> Map.merge(%{account: merge_account_views(user)}) diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex index 5ad2b91c2..d6e9d3d67 100644 --- a/lib/pleroma/web/common_api/common_api.ex +++ b/lib/pleroma/web/common_api/common_api.ex @@ -550,4 +550,21 @@ def hide_reblogs(%User{} = user, %User{} = target) do def show_reblogs(%User{} = user, %User{} = target) do UserRelationship.delete_reblog_mute(user, target) end + + def get_user(ap_id, fake_record_fallback \\ true) do + cond do + user = User.get_cached_by_ap_id(ap_id) -> + user + + user = User.get_by_guessed_nickname(ap_id) -> + user + + fake_record_fallback -> + # TODO: refactor (fake records is never a good idea) + User.error_user(ap_id) + + true -> + nil + end + end end diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 3fe1967be..66732d09e 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -56,23 +56,6 @@ defp get_replied_to_activities(activities) do end) end - def get_user(ap_id, fake_record_fallback \\ true) do - cond do - user = User.get_cached_by_ap_id(ap_id) -> - user - - user = User.get_by_guessed_nickname(ap_id) -> - user - - fake_record_fallback -> - # TODO: refactor (fake records is never a good idea) - User.error_user(ap_id) - - true -> - nil - end - end - defp get_context_id(%{data: %{"context_id" => context_id}}) when not is_nil(context_id), do: context_id @@ -120,7 +103,7 @@ def render("index.json", opts) do # Note: unresolved users are filtered out actors = (activities ++ parent_activities) - |> Enum.map(&get_user(&1.data["actor"], false)) + |> Enum.map(&CommonAPI.get_user(&1.data["actor"], false)) |> Enum.filter(& &1) UserRelationship.view_relationships_option(reading_user, actors, subset: :source_mutes) @@ -139,7 +122,7 @@ def render( "show.json", %{activity: %{data: %{"type" => "Announce", "object" => _object}} = activity} = opts ) do - user = get_user(activity.data["actor"]) + user = CommonAPI.get_user(activity.data["actor"]) created_at = Utils.to_masto_date(activity.data["published"]) activity_object = Object.normalize(activity) @@ -212,7 +195,7 @@ def render( def render("show.json", %{activity: %{data: %{"object" => _object}} = activity} = opts) do object = Object.normalize(activity) - user = get_user(activity.data["actor"]) + user = CommonAPI.get_user(activity.data["actor"]) user_follower_address = user.follower_address like_count = object.data["like_count"] || 0 @@ -266,7 +249,7 @@ def render("show.json", %{activity: %{data: %{"object" => _object}} = activity} reply_to = get_reply_to(activity, opts) - reply_to_user = reply_to && get_user(reply_to.data["actor"]) + reply_to_user = reply_to && CommonAPI.get_user(reply_to.data["actor"]) content = object diff --git a/lib/pleroma/web/pleroma_api/views/scrobble_view.ex b/lib/pleroma/web/pleroma_api/views/scrobble_view.ex index bbff93abe..95bd4c368 100644 --- a/lib/pleroma/web/pleroma_api/views/scrobble_view.ex +++ b/lib/pleroma/web/pleroma_api/views/scrobble_view.ex @@ -10,14 +10,14 @@ defmodule Pleroma.Web.PleromaAPI.ScrobbleView do alias Pleroma.Activity alias Pleroma.HTML alias Pleroma.Object + alias Pleroma.Web.CommonAPI alias Pleroma.Web.CommonAPI.Utils alias Pleroma.Web.MastodonAPI.AccountView - alias Pleroma.Web.MastodonAPI.StatusView def render("show.json", %{activity: %Activity{data: %{"type" => "Listen"}} = activity} = opts) do object = Object.normalize(activity) - user = StatusView.get_user(activity.data["actor"]) + user = CommonAPI.get_user(activity.data["actor"]) created_at = Utils.to_masto_date(activity.data["published"]) %{ diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index 4ba6232dc..d171b344a 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -1126,4 +1126,24 @@ test "respects visibility=private" do assert Visibility.get_visibility(activity) == "private" end end + + describe "get_user/1" do + test "gets user by ap_id" do + user = insert(:user) + assert CommonAPI.get_user(user.ap_id) == user + end + + test "gets user by guessed nickname" do + user = insert(:user, ap_id: "", nickname: "mario@mushroom.kingdom") + assert CommonAPI.get_user("https://mushroom.kingdom/users/mario") == user + end + + test "fallback" do + assert %User{ + name: "", + ap_id: "", + nickname: "erroruser@example.com" + } = CommonAPI.get_user("") + end + end end From b40a627ab02f9f63eac42ce6fc65282fc6cb6b92 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 31 Aug 2020 19:56:05 -0500 Subject: [PATCH 211/460] AdminAPI: delete a chat message --- lib/pleroma/moderation_log.ex | 24 +++++++++ .../admin_api/controllers/chat_controller.ex | 37 +++++++++++++ .../operations/admin/chat_operation.ex | 44 +++++++++++++++ lib/pleroma/web/router.ex | 2 + test/support/factory.ex | 54 +++++++++++++++++++ .../controllers/chat_controller_test.exs | 53 ++++++++++++++++++ 6 files changed, 214 insertions(+) create mode 100644 lib/pleroma/web/admin_api/controllers/chat_controller.ex create mode 100644 lib/pleroma/web/api_spec/operations/admin/chat_operation.ex create mode 100644 test/web/admin_api/controllers/chat_controller_test.exs diff --git a/lib/pleroma/moderation_log.ex b/lib/pleroma/moderation_log.ex index 31c9afe2a..47036a6f6 100644 --- a/lib/pleroma/moderation_log.ex +++ b/lib/pleroma/moderation_log.ex @@ -320,6 +320,19 @@ def insert_log(%{ |> insert_log_entry_with_message() end + @spec insert_log(%{actor: User, action: String.t(), subject_id: String.t()}) :: + {:ok, ModerationLog} | {:error, any} + def insert_log(%{actor: %User{} = actor, action: "chat_message_delete", subject_id: subject_id}) do + %ModerationLog{ + data: %{ + "actor" => %{"nickname" => actor.nickname}, + "action" => "chat_message_delete", + "subject_id" => subject_id + } + } + |> insert_log_entry_with_message() + end + @spec insert_log_entry_with_message(ModerationLog) :: {:ok, ModerationLog} | {:error, any} defp insert_log_entry_with_message(entry) do entry.data["message"] @@ -627,6 +640,17 @@ def get_log_entry_message(%ModerationLog{ "@#{actor_nickname} updated users: #{users_to_nicknames_string(subjects)}" end + @spec get_log_entry_message(ModerationLog) :: String.t() + def get_log_entry_message(%ModerationLog{ + data: %{ + "actor" => %{"nickname" => actor_nickname}, + "action" => "chat_message_delete", + "subject_id" => subject_id + } + }) do + "@#{actor_nickname} deleted chat message ##{subject_id}" + end + defp nicknames_to_string(nicknames) do nicknames |> Enum.map(&"@#{&1}") diff --git a/lib/pleroma/web/admin_api/controllers/chat_controller.ex b/lib/pleroma/web/admin_api/controllers/chat_controller.ex new file mode 100644 index 000000000..bcce824d2 --- /dev/null +++ b/lib/pleroma/web/admin_api/controllers/chat_controller.ex @@ -0,0 +1,37 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.ChatController do + use Pleroma.Web, :controller + + alias Pleroma.Activity + alias Pleroma.ModerationLog + alias Pleroma.Plugs.OAuthScopesPlug + alias Pleroma.Web.CommonAPI + + require Logger + + plug(Pleroma.Web.ApiSpec.CastAndValidate) + + plug( + OAuthScopesPlug, + %{scopes: ["write:chats"], admin: true} when action in [:delete_message] + ) + + action_fallback(Pleroma.Web.AdminAPI.FallbackController) + + defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.Admin.ChatOperation + + def delete_message(%{assigns: %{user: user}} = conn, %{message_id: id}) do + with {:ok, %Activity{}} <- CommonAPI.delete(id, user) do + ModerationLog.insert_log(%{ + action: "chat_message_delete", + actor: user, + subject_id: id + }) + + json(conn, %{}) + end + end +end diff --git a/lib/pleroma/web/api_spec/operations/admin/chat_operation.ex b/lib/pleroma/web/api_spec/operations/admin/chat_operation.ex new file mode 100644 index 000000000..7045fd7ce --- /dev/null +++ b/lib/pleroma/web/api_spec/operations/admin/chat_operation.ex @@ -0,0 +1,44 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Admin.ChatOperation do + alias OpenApiSpex.Operation + alias Pleroma.Web.ApiSpec.Schemas.ApiError + alias Pleroma.Web.ApiSpec.Schemas.FlakeID + + import Pleroma.Web.ApiSpec.Helpers + + def open_api_operation(action) do + operation = String.to_existing_atom("#{action}_operation") + apply(__MODULE__, operation, []) + end + + def delete_message_operation do + %Operation{ + tags: ["Admin", "Chats"], + summary: "Delete an individual chat message", + operationId: "AdminAPI.ChatController.delete", + parameters: [id_param(), message_id_param()] ++ admin_api_params(), + security: [%{"oAuth" => ["write:chats"]}], + responses: %{ + 200 => empty_object_response(), + 404 => Operation.response("Not Found", "application/json", ApiError) + } + } + end + + def id_param do + Operation.parameter(:id, :path, FlakeID, "Chat ID", + example: "9umDrYheeY451cQnEe", + required: true + ) + end + + def message_id_param do + Operation.parameter(:message_id, :path, FlakeID, "Chat message ID", + example: "9umDrYheeY451cQnEe", + required: true + ) + end +end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index c6433cc53..e438768ed 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -214,6 +214,8 @@ defmodule Pleroma.Web.Router do get("/media_proxy_caches", MediaProxyCacheController, :index) post("/media_proxy_caches/delete", MediaProxyCacheController, :delete) post("/media_proxy_caches/purge", MediaProxyCacheController, :purge) + + delete("/chats/:id/messages/:message_id", ChatController, :delete_message) end scope "/api/pleroma/emoji", Pleroma.Web.PleromaAPI do diff --git a/test/support/factory.ex b/test/support/factory.ex index 486eda8da..61ca4587c 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -460,4 +460,58 @@ def filter_factory do phrase: "cofe" } end + + def chat_factory(attrs \\ %{}) do + user = attrs[:user] || insert(:user) + recipient = attrs[:recipient] || insert(:user) + + %Pleroma.Chat{ + user_id: user.id, + recipient: recipient.ap_id + } + end + + def chat_message_factory(attrs \\ %{}) do + text = sequence(:text, &"This is :moominmamma: chat message #{&1}") + chat = attrs[:chat] || insert(:chat) + + data = %{ + "type" => "ChatMessage", + "content" => text, + "id" => Pleroma.Web.ActivityPub.Utils.generate_object_id(), + "actor" => User.get_by_id(chat.user_id).ap_id, + "to" => [chat.recipient], + "published" => DateTime.utc_now() |> DateTime.to_iso8601() + } + + %Pleroma.Object{ + data: merge_attributes(data, Map.get(attrs, :data, %{})) + } + end + + def chat_message_activity_factory(attrs \\ %{}) do + chat = attrs[:chat] || insert(:chat) + chat_message = attrs[:chat_message] || insert(:chat_message, chat: chat) + + data_attrs = attrs[:data_attrs] || %{} + attrs = Map.drop(attrs, [:chat, :chat_message, :data_attrs]) + + data = + %{ + "id" => Pleroma.Web.ActivityPub.Utils.generate_activity_id(), + "type" => "Create", + "actor" => chat_message.data["actor"], + "to" => chat_message.data["to"], + "object" => chat_message.data["id"], + "published" => DateTime.utc_now() |> DateTime.to_iso8601() + } + |> Map.merge(data_attrs) + + %Pleroma.Activity{ + data: data, + actor: data["actor"], + recipients: data["to"] + } + |> Map.merge(attrs) + end end diff --git a/test/web/admin_api/controllers/chat_controller_test.exs b/test/web/admin_api/controllers/chat_controller_test.exs new file mode 100644 index 000000000..4527437af --- /dev/null +++ b/test/web/admin_api/controllers/chat_controller_test.exs @@ -0,0 +1,53 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.ChatControllerTest do + use Pleroma.Web.ConnCase + + import Pleroma.Factory + + alias Pleroma.Activity + alias Pleroma.Config + alias Pleroma.ModerationLog + alias Pleroma.Repo + + setup do + admin = insert(:user, is_admin: true) + token = insert(:oauth_admin_token, user: admin) + + conn = + build_conn() + |> assign(:user, admin) + |> assign(:token, token) + + {:ok, %{admin: admin, token: token, conn: conn}} + end + + describe "DELETE /api/pleroma/admin/chats/:id/messages/:message_id" do + setup do + chat = insert(:chat) + message = insert(:chat_message_activity, chat: chat) + %{chat: chat, message: message} + end + + test "deletes chat message", %{conn: conn, chat: chat, message: message, admin: admin} do + conn + |> delete("/api/pleroma/admin/chats/#{chat.id}/messages/#{message.id}") + |> json_response_and_validate_schema(:ok) + + refute Activity.get_by_id(message.id) + + log_entry = Repo.one(ModerationLog) + + assert ModerationLog.get_log_entry_message(log_entry) == + "@#{admin.nickname} deleted chat message ##{message.id}" + end + + test "returns 404 when the chat message does not exist", %{conn: conn} do + conn = delete(conn, "/api/pleroma/admin/chats/test/messages/test") + + assert json_response_and_validate_schema(conn, :not_found) == %{"error" => "Not found"} + end + end +end From fb0de073439b5e3be823e736b44608e80f1027f1 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 31 Aug 2020 20:23:33 -0500 Subject: [PATCH 212/460] AdminAPI: list chats for a user --- .../controllers/admin_api_controller.ex | 27 +++++++++++++++++++ lib/pleroma/web/router.ex | 3 +++ .../controllers/admin_api_controller_test.exs | 18 +++++++++++++ 3 files changed, 48 insertions(+) diff --git a/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex b/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex index f5e4d49f9..9b66c2f10 100644 --- a/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex @@ -5,6 +5,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do use Pleroma.Web, :controller + import Ecto.Query import Pleroma.Web.ControllerHelper, only: [json_response: 3] alias Pleroma.Config @@ -21,6 +22,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do alias Pleroma.Web.AdminAPI.ModerationLogView alias Pleroma.Web.AdminAPI.Search alias Pleroma.Web.Endpoint + alias Pleroma.Web.PleromaAPI alias Pleroma.Web.Router require Logger @@ -68,6 +70,12 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do when action in [:list_user_statuses, :list_instance_statuses] ) + plug( + OAuthScopesPlug, + %{scopes: ["read:chats"], admin: true} + when action in [:list_user_chats] + ) + plug( OAuthScopesPlug, %{scopes: ["read"], admin: true} @@ -256,6 +264,25 @@ def list_user_statuses(%{assigns: %{user: admin}} = conn, %{"nickname" => nickna end end + def list_user_chats(%{assigns: %{user: admin}} = conn, %{"nickname" => nickname} = _params) do + with %User{id: user_id} <- User.get_cached_by_nickname_or_id(nickname, for: admin) do + chats = + from(c in Pleroma.Chat, + where: c.user_id == ^user_id, + order_by: [desc: c.updated_at], + inner_join: u in User, + on: u.ap_id == c.recipient + ) + |> Pleroma.Repo.all() + + conn + |> put_view(PleromaAPI.ChatView) + |> render("index.json", chats: chats) + else + _ -> {:error, :not_found} + end + end + def user_toggle_activation(%{assigns: %{user: admin}} = conn, %{"nickname" => nickname}) do user = User.get_cached_by_nickname(nickname) diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index e438768ed..ad3282df4 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -178,6 +178,7 @@ defmodule Pleroma.Web.Router do get("/users", AdminAPIController, :list_users) get("/users/:nickname", AdminAPIController, :user_show) get("/users/:nickname/statuses", AdminAPIController, :list_user_statuses) + get("/users/:nickname/chats", AdminAPIController, :list_user_chats) get("/instances/:instance/statuses", AdminAPIController, :list_instance_statuses) @@ -215,6 +216,8 @@ defmodule Pleroma.Web.Router do post("/media_proxy_caches/delete", MediaProxyCacheController, :delete) post("/media_proxy_caches/purge", MediaProxyCacheController, :purge) + # get("/chats/:id", ChatController, :show) + # get("/chats/:id/messages", ChatController, :messages) delete("/chats/:id/messages/:message_id", ChatController, :delete_message) end diff --git a/test/web/admin_api/controllers/admin_api_controller_test.exs b/test/web/admin_api/controllers/admin_api_controller_test.exs index dbf478edf..cf5637246 100644 --- a/test/web/admin_api/controllers/admin_api_controller_test.exs +++ b/test/web/admin_api/controllers/admin_api_controller_test.exs @@ -1510,6 +1510,24 @@ test "excludes reblogs by default", %{conn: conn, user: user} do end end + describe "GET /api/pleroma/admin/users/:nickname/chats" do + setup do + user = insert(:user) + + insert(:chat, user: user) + insert(:chat, user: user) + insert(:chat, user: user) + + %{user: user} + end + + test "renders user's statuses", %{conn: conn, user: user} do + conn = get(conn, "/api/pleroma/admin/users/#{user.nickname}/chats") + + assert json_response(conn, 200) |> length() == 3 + end + end + describe "GET /api/pleroma/admin/moderation_log" do setup do moderator = insert(:user, is_moderator: true) From c41430b23eaf3fd15b227e66215aa2a4ff31dfdb Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 1 Sep 2020 19:05:24 -0500 Subject: [PATCH 213/460] Refactor with Chat.for_user_query/1 --- lib/pleroma/chat.ex | 12 ++++++++++++ .../admin_api/controllers/admin_api_controller.ex | 8 +------- .../web/pleroma_api/controllers/chat_controller.ex | 9 ++------- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/lib/pleroma/chat.ex b/lib/pleroma/chat.ex index 24a86371e..b38c5c3dd 100644 --- a/lib/pleroma/chat.ex +++ b/lib/pleroma/chat.ex @@ -6,7 +6,9 @@ defmodule Pleroma.Chat do use Ecto.Schema import Ecto.Changeset + import Ecto.Query + alias Pleroma.Chat alias Pleroma.Repo alias Pleroma.User @@ -69,4 +71,14 @@ def bump_or_create(user_id, recipient) do conflict_target: [:user_id, :recipient] ) end + + @spec for_user_query(FlakeId.Ecto.CompatType.t()) :: Ecto.Query.t() + def for_user_query(user_id) do + from(c in Chat, + where: c.user_id == ^user_id, + order_by: [desc: c.updated_at], + inner_join: u in User, + on: u.ap_id == c.recipient + ) + end end diff --git a/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex b/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex index 9b66c2f10..fccdbabb4 100644 --- a/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex @@ -5,7 +5,6 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do use Pleroma.Web, :controller - import Ecto.Query import Pleroma.Web.ControllerHelper, only: [json_response: 3] alias Pleroma.Config @@ -267,12 +266,7 @@ def list_user_statuses(%{assigns: %{user: admin}} = conn, %{"nickname" => nickna def list_user_chats(%{assigns: %{user: admin}} = conn, %{"nickname" => nickname} = _params) do with %User{id: user_id} <- User.get_cached_by_nickname_or_id(nickname, for: admin) do chats = - from(c in Pleroma.Chat, - where: c.user_id == ^user_id, - order_by: [desc: c.updated_at], - inner_join: u in User, - on: u.ap_id == c.recipient - ) + Pleroma.Chat.for_user_query(user_id) |> Pleroma.Repo.all() conn diff --git a/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex b/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex index 1f2e953f7..27c9a2e0f 100644 --- a/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex @@ -146,13 +146,8 @@ def index(%{assigns: %{user: %{id: user_id} = user}} = conn, _params) do blocked_ap_ids = User.blocked_users_ap_ids(user) chats = - from(c in Chat, - where: c.user_id == ^user_id, - where: c.recipient not in ^blocked_ap_ids, - order_by: [desc: c.updated_at], - inner_join: u in User, - on: u.ap_id == c.recipient - ) + Chat.for_user_query(user_id) + |> where([c], c.recipient not in ^blocked_ap_ids) |> Repo.all() conn From f13b52a703d5c60cf12b2fff69f458e5c467c783 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 1 Sep 2020 19:39:34 -0500 Subject: [PATCH 214/460] AdminAPI: list messages in a chat --- .../admin_api/controllers/chat_controller.ex | 27 ++++++++++ .../operations/admin/chat_operation.ex | 26 ++++++++- lib/pleroma/web/router.ex | 2 +- .../controllers/chat_controller_test.exs | 54 +++++++++++++++++++ 4 files changed, 107 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/admin_api/controllers/chat_controller.ex b/lib/pleroma/web/admin_api/controllers/chat_controller.ex index bcce824d2..b423188d7 100644 --- a/lib/pleroma/web/admin_api/controllers/chat_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/chat_controller.ex @@ -6,14 +6,23 @@ defmodule Pleroma.Web.AdminAPI.ChatController do use Pleroma.Web, :controller alias Pleroma.Activity + alias Pleroma.Chat + alias Pleroma.Chat.MessageReference alias Pleroma.ModerationLog + alias Pleroma.Pagination alias Pleroma.Plugs.OAuthScopesPlug alias Pleroma.Web.CommonAPI + alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView require Logger plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug( + OAuthScopesPlug, + %{scopes: ["read:chats"], admin: true} when action in [:messages] + ) + plug( OAuthScopesPlug, %{scopes: ["write:chats"], admin: true} when action in [:delete_message] @@ -34,4 +43,22 @@ def delete_message(%{assigns: %{user: user}} = conn, %{message_id: id}) do json(conn, %{}) end end + + def messages(conn, %{id: id} = params) do + with %Chat{} = chat <- Chat.get_by_id(id) do + cm_refs = + chat + |> MessageReference.for_chat_query() + |> Pagination.fetch_paginated(params) + + conn + |> put_view(MessageReferenceView) + |> render("index.json", chat_message_references: cm_refs) + else + _ -> + conn + |> put_status(:not_found) + |> json(%{error: "not found"}) + end + end end diff --git a/lib/pleroma/web/api_spec/operations/admin/chat_operation.ex b/lib/pleroma/web/api_spec/operations/admin/chat_operation.ex index 7045fd7ce..a382bd35a 100644 --- a/lib/pleroma/web/api_spec/operations/admin/chat_operation.ex +++ b/lib/pleroma/web/api_spec/operations/admin/chat_operation.ex @@ -16,7 +16,7 @@ def open_api_operation(action) do def delete_message_operation do %Operation{ - tags: ["Admin", "Chats"], + tags: ["admin", "chat"], summary: "Delete an individual chat message", operationId: "AdminAPI.ChatController.delete", parameters: [id_param(), message_id_param()] ++ admin_api_params(), @@ -28,6 +28,30 @@ def delete_message_operation do } end + def messages_operation do + %Operation{ + tags: ["admin", "chat"], + summary: "Get the most recent messages of the chat", + operationId: "AdminAPI.ChatController.messages", + parameters: + [Operation.parameter(:id, :path, :string, "The ID of the Chat")] ++ + pagination_params(), + responses: %{ + 200 => + Operation.response( + "The messages in the chat", + "application/json", + Pleroma.Web.ApiSpec.ChatOperation.chat_messages_response() + ) + }, + security: [ + %{ + "oAuth" => ["read:chats"] + } + ] + } + end + def id_param do Operation.parameter(:id, :path, FlakeID, "Chat ID", example: "9umDrYheeY451cQnEe", diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index ad3282df4..02836114a 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -217,7 +217,7 @@ defmodule Pleroma.Web.Router do post("/media_proxy_caches/purge", MediaProxyCacheController, :purge) # get("/chats/:id", ChatController, :show) - # get("/chats/:id/messages", ChatController, :messages) + get("/chats/:id/messages", ChatController, :messages) delete("/chats/:id/messages/:message_id", ChatController, :delete_message) end diff --git a/test/web/admin_api/controllers/chat_controller_test.exs b/test/web/admin_api/controllers/chat_controller_test.exs index 4527437af..f61e2a1fa 100644 --- a/test/web/admin_api/controllers/chat_controller_test.exs +++ b/test/web/admin_api/controllers/chat_controller_test.exs @@ -8,9 +8,11 @@ defmodule Pleroma.Web.AdminAPI.ChatControllerTest do import Pleroma.Factory alias Pleroma.Activity + alias Pleroma.Chat alias Pleroma.Config alias Pleroma.ModerationLog alias Pleroma.Repo + alias Pleroma.Web.CommonAPI setup do admin = insert(:user, is_admin: true) @@ -50,4 +52,56 @@ test "returns 404 when the chat message does not exist", %{conn: conn} do assert json_response_and_validate_schema(conn, :not_found) == %{"error" => "Not found"} end end + + describe "GET /api/pleroma/admin/chats/:id/messages" do + test "it paginates", %{conn: conn} do + user = insert(:user) + recipient = insert(:user) + + Enum.each(1..30, fn _ -> + {:ok, _} = CommonAPI.post_chat_message(user, recipient, "hey") + end) + + chat = Chat.get(user.id, recipient.ap_id) + + result = + conn + |> get("/api/pleroma/admin/chats/#{chat.id}/messages") + |> json_response_and_validate_schema(200) + + assert length(result) == 20 + + result = + conn + |> get("/api/pleroma/admin/chats/#{chat.id}/messages?max_id=#{List.last(result)["id"]}") + |> json_response_and_validate_schema(200) + + assert length(result) == 10 + end + + test "it returns the messages for a given chat", %{conn: conn} do + user = insert(:user) + other_user = insert(:user) + third_user = insert(:user) + + {:ok, _} = CommonAPI.post_chat_message(user, other_user, "hey") + {:ok, _} = CommonAPI.post_chat_message(user, third_user, "hey") + {:ok, _} = CommonAPI.post_chat_message(user, other_user, "how are you?") + {:ok, _} = CommonAPI.post_chat_message(other_user, user, "fine, how about you?") + + chat = Chat.get(user.id, other_user.ap_id) + + result = + conn + |> get("/api/pleroma/admin/chats/#{chat.id}/messages") + |> json_response_and_validate_schema(200) + + result + |> Enum.each(fn message -> + assert message["chat_id"] == chat.id |> to_string() + end) + + assert length(result) == 3 + end + end end From 9dd0b23da424c380a37897d8bf69ab241efa6f91 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 1 Sep 2020 19:49:46 -0500 Subject: [PATCH 215/460] AdminAPI: show chat --- .../admin_api/controllers/chat_controller.ex | 11 ++++++- .../operations/admin/chat_operation.ex | 32 +++++++++++++++++++ lib/pleroma/web/router.ex | 2 +- .../controllers/chat_controller_test.exs | 16 ++++++++++ 4 files changed, 59 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/admin_api/controllers/chat_controller.ex b/lib/pleroma/web/admin_api/controllers/chat_controller.ex index b423188d7..ac362c430 100644 --- a/lib/pleroma/web/admin_api/controllers/chat_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/chat_controller.ex @@ -13,6 +13,7 @@ defmodule Pleroma.Web.AdminAPI.ChatController do alias Pleroma.Plugs.OAuthScopesPlug alias Pleroma.Web.CommonAPI alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView + alias Pleroma.Web.PleromaAPI.ChatView require Logger @@ -20,7 +21,7 @@ defmodule Pleroma.Web.AdminAPI.ChatController do plug( OAuthScopesPlug, - %{scopes: ["read:chats"], admin: true} when action in [:messages] + %{scopes: ["read:chats"], admin: true} when action in [:show, :messages] ) plug( @@ -61,4 +62,12 @@ def messages(conn, %{id: id} = params) do |> json(%{error: "not found"}) end end + + def show(conn, %{id: id}) do + with %Chat{} = chat <- Chat.get_by_id(id) do + conn + |> put_view(ChatView) + |> render("show.json", chat: chat) + end + end end diff --git a/lib/pleroma/web/api_spec/operations/admin/chat_operation.ex b/lib/pleroma/web/api_spec/operations/admin/chat_operation.ex index a382bd35a..3550d531e 100644 --- a/lib/pleroma/web/api_spec/operations/admin/chat_operation.ex +++ b/lib/pleroma/web/api_spec/operations/admin/chat_operation.ex @@ -5,6 +5,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.ChatOperation do alias OpenApiSpex.Operation alias Pleroma.Web.ApiSpec.Schemas.ApiError + alias Pleroma.Web.ApiSpec.Schemas.Chat alias Pleroma.Web.ApiSpec.Schemas.FlakeID import Pleroma.Web.ApiSpec.Helpers @@ -52,6 +53,37 @@ def messages_operation do } end + def show_operation do + %Operation{ + tags: ["chat"], + summary: "Create a chat", + operationId: "AdminAPI.ChatController.show", + parameters: [ + Operation.parameter( + :id, + :path, + :string, + "The id of the chat", + required: true, + example: "1234" + ) + ], + responses: %{ + 200 => + Operation.response( + "The existing chat", + "application/json", + Chat + ) + }, + security: [ + %{ + "oAuth" => ["read"] + } + ] + } + end + def id_param do Operation.parameter(:id, :path, FlakeID, "Chat ID", example: "9umDrYheeY451cQnEe", diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 02836114a..e4440d442 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -216,7 +216,7 @@ defmodule Pleroma.Web.Router do post("/media_proxy_caches/delete", MediaProxyCacheController, :delete) post("/media_proxy_caches/purge", MediaProxyCacheController, :purge) - # get("/chats/:id", ChatController, :show) + get("/chats/:id", ChatController, :show) get("/chats/:id/messages", ChatController, :messages) delete("/chats/:id/messages/:message_id", ChatController, :delete_message) end diff --git a/test/web/admin_api/controllers/chat_controller_test.exs b/test/web/admin_api/controllers/chat_controller_test.exs index f61e2a1fa..63c195b99 100644 --- a/test/web/admin_api/controllers/chat_controller_test.exs +++ b/test/web/admin_api/controllers/chat_controller_test.exs @@ -104,4 +104,20 @@ test "it returns the messages for a given chat", %{conn: conn} do assert length(result) == 3 end end + + describe "GET /api/pleroma/admin/chats/:id" do + test "it returns a chat", %{conn: conn} do + user = insert(:user) + other_user = insert(:user) + + {:ok, chat} = Chat.get_or_create(user.id, other_user.ap_id) + + result = + conn + |> get("/api/pleroma/admin/chats/#{chat.id}") + |> json_response_and_validate_schema(200) + + assert result["id"] == to_string(chat.id) + end + end end From 02d70228b566d5de2cbdd6d1f9958caf2db173f1 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 1 Sep 2020 20:40:36 -0500 Subject: [PATCH 216/460] AdminAPI: fix delete chat message --- .../admin_api/controllers/chat_controller.ex | 20 ++++++++-- .../operations/admin/chat_operation.ex | 40 +++++++++---------- .../controllers/chat_controller_test.exs | 39 ++++++++++-------- 3 files changed, 56 insertions(+), 43 deletions(-) diff --git a/lib/pleroma/web/admin_api/controllers/chat_controller.ex b/lib/pleroma/web/admin_api/controllers/chat_controller.ex index ac362c430..61d45b970 100644 --- a/lib/pleroma/web/admin_api/controllers/chat_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/chat_controller.ex @@ -33,15 +33,27 @@ defmodule Pleroma.Web.AdminAPI.ChatController do defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.Admin.ChatOperation - def delete_message(%{assigns: %{user: user}} = conn, %{message_id: id}) do - with {:ok, %Activity{}} <- CommonAPI.delete(id, user) do + def delete_message(%{assigns: %{user: user}} = conn, %{ + message_id: message_id, + id: chat_id + }) do + with %MessageReference{object: %{data: %{"id" => object_ap_id}}} = cm_ref <- + MessageReference.get_by_id(message_id), + ^chat_id <- to_string(cm_ref.chat_id), + %Activity{id: activity_id} <- Activity.get_create_by_object_ap_id(object_ap_id), + {:ok, _} <- CommonAPI.delete(activity_id, user) do ModerationLog.insert_log(%{ action: "chat_message_delete", actor: user, - subject_id: id + subject_id: message_id }) - json(conn, %{}) + conn + |> put_view(MessageReferenceView) + |> render("show.json", chat_message_reference: cm_ref) + else + _e -> + {:error, :could_not_delete} end end diff --git a/lib/pleroma/web/api_spec/operations/admin/chat_operation.ex b/lib/pleroma/web/api_spec/operations/admin/chat_operation.ex index 3550d531e..d3e5dfc1c 100644 --- a/lib/pleroma/web/api_spec/operations/admin/chat_operation.ex +++ b/lib/pleroma/web/api_spec/operations/admin/chat_operation.ex @@ -4,9 +4,8 @@ defmodule Pleroma.Web.ApiSpec.Admin.ChatOperation do alias OpenApiSpex.Operation - alias Pleroma.Web.ApiSpec.Schemas.ApiError alias Pleroma.Web.ApiSpec.Schemas.Chat - alias Pleroma.Web.ApiSpec.Schemas.FlakeID + alias Pleroma.Web.ApiSpec.Schemas.ChatMessage import Pleroma.Web.ApiSpec.Helpers @@ -19,13 +18,24 @@ def delete_message_operation do %Operation{ tags: ["admin", "chat"], summary: "Delete an individual chat message", - operationId: "AdminAPI.ChatController.delete", - parameters: [id_param(), message_id_param()] ++ admin_api_params(), - security: [%{"oAuth" => ["write:chats"]}], + operationId: "AdminAPI.ChatController.delete_message", + parameters: [ + Operation.parameter(:id, :path, :string, "The ID of the Chat"), + Operation.parameter(:message_id, :path, :string, "The ID of the message") + ], responses: %{ - 200 => empty_object_response(), - 404 => Operation.response("Not Found", "application/json", ApiError) - } + 200 => + Operation.response( + "The deleted ChatMessage", + "application/json", + ChatMessage + ) + }, + security: [ + %{ + "oAuth" => ["write:chats"] + } + ] } end @@ -83,18 +93,4 @@ def show_operation do ] } end - - def id_param do - Operation.parameter(:id, :path, FlakeID, "Chat ID", - example: "9umDrYheeY451cQnEe", - required: true - ) - end - - def message_id_param do - Operation.parameter(:message_id, :path, FlakeID, "Chat message ID", - example: "9umDrYheeY451cQnEe", - required: true - ) - end end diff --git a/test/web/admin_api/controllers/chat_controller_test.exs b/test/web/admin_api/controllers/chat_controller_test.exs index 63c195b99..9393dd49b 100644 --- a/test/web/admin_api/controllers/chat_controller_test.exs +++ b/test/web/admin_api/controllers/chat_controller_test.exs @@ -7,9 +7,10 @@ defmodule Pleroma.Web.AdminAPI.ChatControllerTest do import Pleroma.Factory - alias Pleroma.Activity alias Pleroma.Chat + alias Pleroma.Chat.MessageReference alias Pleroma.Config + alias Pleroma.Object alias Pleroma.ModerationLog alias Pleroma.Repo alias Pleroma.Web.CommonAPI @@ -27,29 +28,33 @@ defmodule Pleroma.Web.AdminAPI.ChatControllerTest do end describe "DELETE /api/pleroma/admin/chats/:id/messages/:message_id" do - setup do - chat = insert(:chat) - message = insert(:chat_message_activity, chat: chat) - %{chat: chat, message: message} - end + test "it deletes a message from the chat", %{conn: conn, admin: admin} do + user = insert(:user) + recipient = insert(:user) - test "deletes chat message", %{conn: conn, chat: chat, message: message, admin: admin} do - conn - |> delete("/api/pleroma/admin/chats/#{chat.id}/messages/#{message.id}") - |> json_response_and_validate_schema(:ok) + {:ok, message} = + CommonAPI.post_chat_message(user, recipient, "Hello darkness my old friend") - refute Activity.get_by_id(message.id) + object = Object.normalize(message, false) + + chat = Chat.get(user.id, recipient.ap_id) + + cm_ref = MessageReference.for_chat_and_object(chat, object) + + result = + conn + |> put_req_header("content-type", "application/json") + |> delete("/api/pleroma/admin/chats/#{chat.id}/messages/#{cm_ref.id}") + |> json_response_and_validate_schema(200) log_entry = Repo.one(ModerationLog) assert ModerationLog.get_log_entry_message(log_entry) == - "@#{admin.nickname} deleted chat message ##{message.id}" - end + "@#{admin.nickname} deleted chat message ##{cm_ref.id}" - test "returns 404 when the chat message does not exist", %{conn: conn} do - conn = delete(conn, "/api/pleroma/admin/chats/test/messages/test") - - assert json_response_and_validate_schema(conn, :not_found) == %{"error" => "Not found"} + assert result["id"] == cm_ref.id + refute MessageReference.get_by_id(cm_ref.id) + assert %{data: %{"type" => "Tombstone"}} = Object.get_by_id(object.id) end end From c361df11b4e31bc6b369a4feebdbaa82987c2eec Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 1 Sep 2020 20:56:42 -0500 Subject: [PATCH 217/460] Docs: AdminAPI chat moderation --- docs/API/admin_api.md | 111 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/docs/API/admin_api.md b/docs/API/admin_api.md index c0ea074f0..7bdbd17aa 100644 --- a/docs/API/admin_api.md +++ b/docs/API/admin_api.md @@ -1334,3 +1334,114 @@ Loads json generated from `config/descriptions.exs`. { } ``` + +## GET /api/pleroma/admin/users/:nickname/chats + +### List a user's chats + +- Params: None + +- Response: + +```json +[ + { + "account": { + "id": "someflakeid", + "username": "somenick", + ... + }, + "id" : "1", + "unread" : 2, + "last_message" : {...}, // The last message in that chat + "updated_at": "2020-04-21T15:11:46.000Z" + } +] +``` + +## GET /api/pleroma/admin/chats/:chat_id + +### View a single chat + +- Params: None + +- Response: + +```json +{ + "account": { + "id": "someflakeid", + "username": "somenick", + ... + }, + "id" : "1", + "unread" : 2, + "last_message" : {...}, // The last message in that chat + "updated_at": "2020-04-21T15:11:46.000Z" +} +``` + +## GET /api/pleroma/admin/chats/:chat_id/messages + +### List the messages in a chat + +- Params: None + +- Response: + +```json +[ + { + "account_id": "someflakeid", + "chat_id": "1", + "content": "Check this out :firefox:", + "created_at": "2020-04-21T15:11:46.000Z", + "emojis": [ + { + "shortcode": "firefox", + "static_url": "https://dontbulling.me/emoji/Firefox.gif", + "url": "https://dontbulling.me/emoji/Firefox.gif", + "visible_in_picker": false + } + ], + "id": "13", + "unread": true + }, + { + "account_id": "someflakeid", + "chat_id": "1", + "content": "Whats' up?", + "created_at": "2020-04-21T15:06:45.000Z", + "emojis": [], + "id": "12", + "unread": false + } +] +``` + +## DELETE /api/pleroma/admin/chats/:chat_id/messages/:message_id + +### Delete a single message + +- Params: None + +- Response: + +```json +{ + "account_id": "someflakeid", + "chat_id": "1", + "content": "Check this out :firefox:", + "created_at": "2020-04-21T15:11:46.000Z", + "emojis": [ + { + "shortcode": "firefox", + "static_url": "https://dontbulling.me/emoji/Firefox.gif", + "url": "https://dontbulling.me/emoji/Firefox.gif", + "visible_in_picker": false + } + ], + "id": "13", + "unread": false +} +``` From 67726453f85eb5bb51bf82e7decf23a4f1d184af Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 1 Sep 2020 21:12:21 -0500 Subject: [PATCH 218/460] Credo fix --- test/web/admin_api/controllers/chat_controller_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/web/admin_api/controllers/chat_controller_test.exs b/test/web/admin_api/controllers/chat_controller_test.exs index 9393dd49b..bca9d440d 100644 --- a/test/web/admin_api/controllers/chat_controller_test.exs +++ b/test/web/admin_api/controllers/chat_controller_test.exs @@ -10,8 +10,8 @@ defmodule Pleroma.Web.AdminAPI.ChatControllerTest do alias Pleroma.Chat alias Pleroma.Chat.MessageReference alias Pleroma.Config - alias Pleroma.Object alias Pleroma.ModerationLog + alias Pleroma.Object alias Pleroma.Repo alias Pleroma.Web.CommonAPI From e229536e5cca65d811f85d25c86bf3c92b3d8c45 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Thu, 10 Sep 2020 01:44:32 -0500 Subject: [PATCH 219/460] Chat Moderation: use explicit `sender` and `recipient` fields --- docs/API/admin_api.md | 14 +++++++-- .../controllers/admin_api_controller.ex | 5 +--- .../admin_api/controllers/chat_controller.ex | 4 +-- lib/pleroma/web/admin_api/views/chat_view.ex | 30 +++++++++++++++++++ .../controllers/chat_controller_test.exs | 3 ++ 5 files changed, 48 insertions(+), 8 deletions(-) create mode 100644 lib/pleroma/web/admin_api/views/chat_view.ex diff --git a/docs/API/admin_api.md b/docs/API/admin_api.md index 7bdbd17aa..eadb455ee 100644 --- a/docs/API/admin_api.md +++ b/docs/API/admin_api.md @@ -1346,7 +1346,12 @@ Loads json generated from `config/descriptions.exs`. ```json [ { - "account": { + "sender": { + "id": "someflakeid", + "username": "somenick", + ... + }, + "receiver": { "id": "someflakeid", "username": "somenick", ... @@ -1369,7 +1374,12 @@ Loads json generated from `config/descriptions.exs`. ```json { - "account": { + "sender": { + "id": "someflakeid", + "username": "somenick", + ... + }, + "receiver": { "id": "someflakeid", "username": "somenick", ... diff --git a/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex b/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex index fccdbabb4..d5713c3dd 100644 --- a/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex @@ -21,11 +21,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do alias Pleroma.Web.AdminAPI.ModerationLogView alias Pleroma.Web.AdminAPI.Search alias Pleroma.Web.Endpoint - alias Pleroma.Web.PleromaAPI alias Pleroma.Web.Router - require Logger - @users_page_size 50 plug( @@ -270,7 +267,7 @@ def list_user_chats(%{assigns: %{user: admin}} = conn, %{"nickname" => nickname} |> Pleroma.Repo.all() conn - |> put_view(PleromaAPI.ChatView) + |> put_view(AdminAPI.ChatView) |> render("index.json", chats: chats) else _ -> {:error, :not_found} diff --git a/lib/pleroma/web/admin_api/controllers/chat_controller.ex b/lib/pleroma/web/admin_api/controllers/chat_controller.ex index 61d45b970..967600d69 100644 --- a/lib/pleroma/web/admin_api/controllers/chat_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/chat_controller.ex @@ -11,9 +11,9 @@ defmodule Pleroma.Web.AdminAPI.ChatController do alias Pleroma.ModerationLog alias Pleroma.Pagination alias Pleroma.Plugs.OAuthScopesPlug + alias Pleroma.Web.AdminAPI alias Pleroma.Web.CommonAPI alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView - alias Pleroma.Web.PleromaAPI.ChatView require Logger @@ -78,7 +78,7 @@ def messages(conn, %{id: id} = params) do def show(conn, %{id: id}) do with %Chat{} = chat <- Chat.get_by_id(id) do conn - |> put_view(ChatView) + |> put_view(AdminAPI.ChatView) |> render("show.json", chat: chat) end end diff --git a/lib/pleroma/web/admin_api/views/chat_view.ex b/lib/pleroma/web/admin_api/views/chat_view.ex new file mode 100644 index 000000000..847df1423 --- /dev/null +++ b/lib/pleroma/web/admin_api/views/chat_view.ex @@ -0,0 +1,30 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.ChatView do + use Pleroma.Web, :view + + alias Pleroma.Chat + alias Pleroma.User + alias Pleroma.Web.MastodonAPI + alias Pleroma.Web.PleromaAPI + + def render("index.json", %{chats: chats} = opts) do + render_many(chats, __MODULE__, "show.json", Map.delete(opts, :chats)) + end + + def render("show.json", %{chat: %Chat{user_id: user_id}} = opts) do + user = User.get_by_id(user_id) + sender = MastodonAPI.AccountView.render("show.json", user: user, skip_visibility_check: true) + + serialized_chat = PleromaAPI.ChatView.render("show.json", opts) + + serialized_chat + |> Map.put(:sender, sender) + |> Map.put(:receiver, serialized_chat[:account]) + |> Map.delete(:account) + end + + def render(view, opts), do: PleromaAPI.ChatView.render(view, opts) +end diff --git a/test/web/admin_api/controllers/chat_controller_test.exs b/test/web/admin_api/controllers/chat_controller_test.exs index bca9d440d..840f18aa2 100644 --- a/test/web/admin_api/controllers/chat_controller_test.exs +++ b/test/web/admin_api/controllers/chat_controller_test.exs @@ -123,6 +123,9 @@ test "it returns a chat", %{conn: conn} do |> json_response_and_validate_schema(200) assert result["id"] == to_string(chat.id) + assert %{} = result["sender"] + assert %{} = result["receiver"] + refute result["account"] end end end From dfb831ca39db3098d6d585448a6ff8e938e51e8c Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Fri, 11 Sep 2020 14:00:34 -0500 Subject: [PATCH 220/460] Chat moderation: add tests for unauthorized access --- docs/API/admin_api.md | 2 +- .../controllers/admin_api_controller_test.exs | 29 +++++++ .../controllers/chat_controller_test.exs | 80 ++++++++++++++++++- 3 files changed, 109 insertions(+), 2 deletions(-) diff --git a/docs/API/admin_api.md b/docs/API/admin_api.md index eadb455ee..bc96abbf0 100644 --- a/docs/API/admin_api.md +++ b/docs/API/admin_api.md @@ -1395,7 +1395,7 @@ Loads json generated from `config/descriptions.exs`. ### List the messages in a chat -- Params: None +- Params: `max_id`, `min_id` - Response: diff --git a/test/web/admin_api/controllers/admin_api_controller_test.exs b/test/web/admin_api/controllers/admin_api_controller_test.exs index cf5637246..dbeeb7f3d 100644 --- a/test/web/admin_api/controllers/admin_api_controller_test.exs +++ b/test/web/admin_api/controllers/admin_api_controller_test.exs @@ -1528,6 +1528,35 @@ test "renders user's statuses", %{conn: conn, user: user} do end end + describe "GET /api/pleroma/admin/users/:nickname/chats unauthorized" do + setup do + user = insert(:user) + insert(:chat, user: user) + %{conn: conn} = oauth_access(["read:chats"]) + %{conn: conn, user: user} + end + + test "returns 403", %{conn: conn, user: user} do + conn + |> get("/api/pleroma/admin/users/#{user.nickname}/chats") + |> json_response(403) + end + end + + describe "GET /api/pleroma/admin/users/:nickname/chats unauthenticated" do + setup do + user = insert(:user) + insert(:chat, user: user) + %{conn: build_conn(), user: user} + end + + test "returns 403", %{conn: conn, user: user} do + conn + |> get("/api/pleroma/admin/users/#{user.nickname}/chats") + |> json_response(403) + end + end + describe "GET /api/pleroma/admin/moderation_log" do setup do moderator = insert(:user, is_moderator: true) diff --git a/test/web/admin_api/controllers/chat_controller_test.exs b/test/web/admin_api/controllers/chat_controller_test.exs index 840f18aa2..ccca3521a 100644 --- a/test/web/admin_api/controllers/chat_controller_test.exs +++ b/test/web/admin_api/controllers/chat_controller_test.exs @@ -15,7 +15,7 @@ defmodule Pleroma.Web.AdminAPI.ChatControllerTest do alias Pleroma.Repo alias Pleroma.Web.CommonAPI - setup do + defp admin_setup do admin = insert(:user, is_admin: true) token = insert(:oauth_admin_token, user: admin) @@ -28,6 +28,8 @@ defmodule Pleroma.Web.AdminAPI.ChatControllerTest do end describe "DELETE /api/pleroma/admin/chats/:id/messages/:message_id" do + setup do: admin_setup() + test "it deletes a message from the chat", %{conn: conn, admin: admin} do user = insert(:user) recipient = insert(:user) @@ -59,6 +61,8 @@ test "it deletes a message from the chat", %{conn: conn, admin: admin} do end describe "GET /api/pleroma/admin/chats/:id/messages" do + setup do: admin_setup() + test "it paginates", %{conn: conn} do user = insert(:user) recipient = insert(:user) @@ -111,6 +115,8 @@ test "it returns the messages for a given chat", %{conn: conn} do end describe "GET /api/pleroma/admin/chats/:id" do + setup do: admin_setup() + test "it returns a chat", %{conn: conn} do user = insert(:user) other_user = insert(:user) @@ -128,4 +134,76 @@ test "it returns a chat", %{conn: conn} do refute result["account"] end end + + describe "unauthorized chat moderation" do + setup do + user = insert(:user) + recipient = insert(:user) + + {:ok, message} = CommonAPI.post_chat_message(user, recipient, "Yo") + object = Object.normalize(message, false) + chat = Chat.get(user.id, recipient.ap_id) + cm_ref = MessageReference.for_chat_and_object(chat, object) + + %{conn: conn} = oauth_access(["read:chats", "write:chats"]) + %{conn: conn, chat: chat, cm_ref: cm_ref} + end + + test "DELETE /api/pleroma/admin/chats/:id/messages/:message_id", %{conn: conn, chat: chat, cm_ref: cm_ref} do + conn + |> put_req_header("content-type", "application/json") + |> delete("/api/pleroma/admin/chats/#{chat.id}/messages/#{cm_ref.id}") + |> json_response(403) + + assert MessageReference.get_by_id(cm_ref.id) == cm_ref + end + + test "GET /api/pleroma/admin/chats/:id/messages", %{conn: conn, chat: chat} do + conn + |> get("/api/pleroma/admin/chats/#{chat.id}/messages") + |> json_response(403) + end + + test "GET /api/pleroma/admin/chats/:id", %{conn: conn, chat: chat} do + conn + |> get("/api/pleroma/admin/chats/#{chat.id}") + |> json_response(403) + end + end + + describe "unauthenticated chat moderation" do + setup do + user = insert(:user) + recipient = insert(:user) + + {:ok, message} = CommonAPI.post_chat_message(user, recipient, "Yo") + object = Object.normalize(message, false) + chat = Chat.get(user.id, recipient.ap_id) + cm_ref = MessageReference.for_chat_and_object(chat, object) + + %{conn: build_conn(), chat: chat, cm_ref: cm_ref} + end + + test "DELETE /api/pleroma/admin/chats/:id/messages/:message_id", %{conn: conn, chat: chat, cm_ref: cm_ref} do + conn + |> put_req_header("content-type", "application/json") + |> delete("/api/pleroma/admin/chats/#{chat.id}/messages/#{cm_ref.id}") + |> json_response(403) + + assert MessageReference.get_by_id(cm_ref.id) == cm_ref + end + + test "GET /api/pleroma/admin/chats/:id/messages", %{conn: conn, chat: chat} do + conn + |> get("/api/pleroma/admin/chats/#{chat.id}/messages") + |> json_response(403) + end + + test "GET /api/pleroma/admin/chats/:id", %{conn: conn, chat: chat} do + conn + |> get("/api/pleroma/admin/chats/#{chat.id}") + |> json_response(403) + end + end + end From bc86d0a906e58becb94c5a73552f90abbe494c28 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Fri, 11 Sep 2020 14:29:56 -0500 Subject: [PATCH 221/460] Chat moderation: fix formatting --- .../admin_api/controllers/chat_controller_test.exs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/test/web/admin_api/controllers/chat_controller_test.exs b/test/web/admin_api/controllers/chat_controller_test.exs index ccca3521a..e81484ce6 100644 --- a/test/web/admin_api/controllers/chat_controller_test.exs +++ b/test/web/admin_api/controllers/chat_controller_test.exs @@ -149,7 +149,11 @@ test "it returns a chat", %{conn: conn} do %{conn: conn, chat: chat, cm_ref: cm_ref} end - test "DELETE /api/pleroma/admin/chats/:id/messages/:message_id", %{conn: conn, chat: chat, cm_ref: cm_ref} do + test "DELETE /api/pleroma/admin/chats/:id/messages/:message_id", %{ + conn: conn, + chat: chat, + cm_ref: cm_ref + } do conn |> put_req_header("content-type", "application/json") |> delete("/api/pleroma/admin/chats/#{chat.id}/messages/#{cm_ref.id}") @@ -184,7 +188,11 @@ test "GET /api/pleroma/admin/chats/:id", %{conn: conn, chat: chat} do %{conn: build_conn(), chat: chat, cm_ref: cm_ref} end - test "DELETE /api/pleroma/admin/chats/:id/messages/:message_id", %{conn: conn, chat: chat, cm_ref: cm_ref} do + test "DELETE /api/pleroma/admin/chats/:id/messages/:message_id", %{ + conn: conn, + chat: chat, + cm_ref: cm_ref + } do conn |> put_req_header("content-type", "application/json") |> delete("/api/pleroma/admin/chats/#{chat.id}/messages/#{cm_ref.id}") @@ -205,5 +213,4 @@ test "GET /api/pleroma/admin/chats/:id", %{conn: conn, chat: chat} do |> json_response(403) end end - end From 40c847dc2a33bcd4bb6776d500cb73d6fa5ff052 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 11 Sep 2020 17:42:39 -0500 Subject: [PATCH 222/460] Spelling Reported by: trevoke --- docs/configuration/cheatsheet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index 7cf1d1ce7..0c5d17ce3 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -18,7 +18,7 @@ To add configuration to your config file, you can copy it from the base config. * `notify_email`: Email used for notifications. * `description`: The instance’s description, can be seen in nodeinfo and ``/api/v1/instance``. * `limit`: Posts character limit (CW/Subject included in the counter). -* `discription_limit`: The character limit for image descriptions. +* `description_limit`: The character limit for image descriptions. * `chat_limit`: Character limit of the instance chat messages. * `remote_limit`: Hard character limit beyond which remote posts will be dropped. * `upload_limit`: File size limit of uploads (except for avatar, background, banner). From 6877bad44cccff807cf8d1426c26ab80a6ea0244 Mon Sep 17 00:00:00 2001 From: tarteka Date: Fri, 11 Sep 2020 18:24:59 +0000 Subject: [PATCH 223/460] Translated using Weblate (Spanish) Currently translated at 20.7% (22 of 106 strings) Translation: Pleroma/Pleroma backend Translate-URL: https://translate.pleroma.social/projects/pleroma/pleroma/es/ --- priv/gettext/es/LC_MESSAGES/errors.po | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/priv/gettext/es/LC_MESSAGES/errors.po b/priv/gettext/es/LC_MESSAGES/errors.po index ba75936a9..0a6fceaad 100644 --- a/priv/gettext/es/LC_MESSAGES/errors.po +++ b/priv/gettext/es/LC_MESSAGES/errors.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-09-09 09:49+0000\n" -"PO-Revision-Date: 2020-09-09 10:52+0000\n" +"PO-Revision-Date: 2020-09-11 21:26+0000\n" "Last-Translator: tarteka \n" "Language-Team: Spanish \n" @@ -94,52 +94,52 @@ msgid "must be less than %{number}" msgstr "" msgid "must be greater than %{number}" -msgstr "" +msgstr "debe ser mayor que %{number}" msgid "must be less than or equal to %{number}" -msgstr "" +msgstr "debe ser menor o igual que %{number}" msgid "must be greater than or equal to %{number}" -msgstr "" +msgstr "deber ser mayor o igual que %{number}" msgid "must be equal to %{number}" -msgstr "" +msgstr "deber ser igual a %{number}" #: lib/pleroma/web/common_api/common_api.ex:505 #, elixir-format msgid "Account not found" -msgstr "" +msgstr "Cuenta no encontrada" #: lib/pleroma/web/common_api/common_api.ex:339 #, elixir-format msgid "Already voted" -msgstr "" +msgstr "Ya has votado" #: lib/pleroma/web/oauth/oauth_controller.ex:359 #, elixir-format msgid "Bad request" -msgstr "" +msgstr "Solicitud incorrecta" #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:426 #, elixir-format msgid "Can't delete object" -msgstr "" +msgstr "No se puede eliminar el objeto" #: lib/pleroma/web/controller_helper.ex:105 #: lib/pleroma/web/controller_helper.ex:111 #, elixir-format msgid "Can't display this activity" -msgstr "" +msgstr "No se puede mostrar esta actividad" #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:285 #, elixir-format msgid "Can't find user" -msgstr "" +msgstr "No se puede encontrar al usuario" #: lib/pleroma/web/pleroma_api/controllers/account_controller.ex:61 #, elixir-format msgid "Can't get favorites" -msgstr "" +msgstr "No se puede obtener los favoritos" #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:438 #, elixir-format @@ -149,7 +149,7 @@ msgstr "" #: lib/pleroma/web/common_api/utils.ex:563 #, elixir-format msgid "Cannot post an empty status without attachments" -msgstr "" +msgstr "No se puede publicar un estado vacío y sin archivos adjuntos" #: lib/pleroma/web/common_api/utils.ex:511 #, elixir-format From c0b36621f1149734e97f268e267202cc53700abb Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 11 Sep 2020 16:59:45 -0500 Subject: [PATCH 224/460] Ensure we only apply NSFW Simple policy on parsable objects --- lib/pleroma/web/activity_pub/mrf/simple_policy.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex index bb193475a..161177727 100644 --- a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex @@ -66,7 +66,8 @@ defp check_media_nsfw( "type" => "Create", "object" => child_object } = object - ) do + ) + when is_map(child_object) do media_nsfw = Config.get([:mrf_simple, :media_nsfw]) |> MRF.subdomains_regex() From 32831f371ff426ac0c6f5d6c1381313f5f92af42 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Sat, 12 Sep 2020 10:33:42 +0300 Subject: [PATCH 225/460] [#2497] Media preview proxy: redirecting to media proxy url in case of preview error or unsupported content type. --- .../web/media_proxy/media_proxy_controller.ex | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index ff7fd2409..08d62a51a 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -91,8 +91,8 @@ defp handle_preview("video/" <> _ = _content_type, conn, media_proxy_url) do handle_video_preview(conn, media_proxy_url) end - defp handle_preview(content_type, conn, _media_proxy_url) do - send_resp(conn, :unprocessable_entity, "Unsupported content type: #{content_type}.") + defp handle_preview(_unsupported_content_type, conn, media_proxy_url) do + fallback_on_preview_error(conn, media_proxy_url) end defp handle_png_preview(conn, media_proxy_url) do @@ -114,7 +114,7 @@ defp handle_png_preview(conn, media_proxy_url) do |> send_resp(200, thumbnail_binary) else _ -> - send_resp(conn, :failed_dependency, "Can't handle preview.") + fallback_on_preview_error(conn, media_proxy_url) end end @@ -132,7 +132,7 @@ defp handle_jpeg_preview(conn, media_proxy_url) do |> send_resp(200, thumbnail_binary) else _ -> - send_resp(conn, :failed_dependency, "Can't handle preview.") + fallback_on_preview_error(conn, media_proxy_url) end end @@ -144,10 +144,14 @@ defp handle_video_preview(conn, media_proxy_url) do |> send_resp(200, thumbnail_binary) else _ -> - send_resp(conn, :failed_dependency, "Can't handle preview.") + fallback_on_preview_error(conn, media_proxy_url) end end + defp fallback_on_preview_error(conn, media_proxy_url) do + redirect(conn, external: media_proxy_url) + end + defp put_preview_response_headers( conn, [content_type, filename] = _content_info \\ ["image/jpeg", "preview.jpg"] From cd234a5321b9d33146b90be95d84fa67aa4f7707 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Sat, 12 Sep 2020 11:20:41 +0300 Subject: [PATCH 226/460] [#2497] Media preview proxy: preview bypass for small images (basing on Content-Length and Content-Type). --- .../web/media_proxy/media_proxy_controller.ex | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 08d62a51a..78df7763e 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -11,6 +11,8 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do alias Pleroma.Web.MediaProxy alias Plug.Conn + @min_content_length_for_preview 100 * 1024 + def remote(conn, %{"sig" => sig64, "url" => url64}) do with {_, true} <- {:enabled, MediaProxy.enabled?()}, {:ok, url} <- MediaProxy.decode_url(sig64, url64), @@ -54,8 +56,12 @@ defp handle_preview(conn, url) do with {:ok, %{status: status} = head_response} when status in 200..299 <- Pleroma.HTTP.request("head", media_proxy_url, [], [], pool: :media) do content_type = Tesla.get_header(head_response, "content-type") - handle_preview(content_type, conn, media_proxy_url) + content_length = Tesla.get_header(head_response, "content-length") + content_length = content_length && String.to_integer(content_length) + + handle_preview(content_type, content_length, conn, media_proxy_url) else + # If HEAD failed, redirecting to media proxy URI doesn't make much sense; returning an error {_, %{status: status}} -> send_resp(conn, :failed_dependency, "Can't fetch HTTP headers (HTTP #{status}).") @@ -69,29 +75,36 @@ defp handle_preview(conn, url) do defp handle_preview( "image/" <> _ = _content_type, + _content_length, %{params: %{"output_format" => "jpeg"}} = conn, media_proxy_url ) do handle_jpeg_preview(conn, media_proxy_url) end - defp handle_preview("image/gif" = _content_type, conn, media_proxy_url) do + defp handle_preview("image/gif" = _content_type, _content_length, conn, media_proxy_url) do redirect(conn, external: media_proxy_url) end - defp handle_preview("image/png" <> _ = _content_type, conn, media_proxy_url) do + defp handle_preview("image/" <> _ = _content_type, content_length, conn, media_proxy_url) + when is_integer(content_length) and content_length > 0 and + content_length < @min_content_length_for_preview do + redirect(conn, external: media_proxy_url) + end + + defp handle_preview("image/png" <> _ = _content_type, _content_length, conn, media_proxy_url) do handle_png_preview(conn, media_proxy_url) end - defp handle_preview("image/" <> _ = _content_type, conn, media_proxy_url) do + defp handle_preview("image/" <> _ = _content_type, _content_length, conn, media_proxy_url) do handle_jpeg_preview(conn, media_proxy_url) end - defp handle_preview("video/" <> _ = _content_type, conn, media_proxy_url) do + defp handle_preview("video/" <> _ = _content_type, _content_length, conn, media_proxy_url) do handle_video_preview(conn, media_proxy_url) end - defp handle_preview(_unsupported_content_type, conn, media_proxy_url) do + defp handle_preview(_unsupported_content_type, _content_length, conn, media_proxy_url) do fallback_on_preview_error(conn, media_proxy_url) end From 65f4e37ee1f47ff2f160eb56facef4c783a6828c Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Sun, 13 Sep 2020 10:04:50 +0300 Subject: [PATCH 227/460] remove old workers in oban migrations --- .../20200825061316_move_activity_expirations_to_oban.exs | 2 ++ .../20200907092050_move_tokens_expiration_into_oban.exs | 2 ++ 2 files changed, 4 insertions(+) diff --git a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs index cdc00d20b..a703af83f 100644 --- a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs +++ b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs @@ -4,6 +4,8 @@ defmodule Pleroma.Repo.Migrations.MoveActivityExpirationsToOban do import Ecto.Query, only: [from: 2] def change do + Pleroma.Config.Oban.warn() + Supervisor.start_link([{Oban, Pleroma.Config.get(Oban)}], strategy: :one_for_one, name: Pleroma.Supervisor diff --git a/priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs b/priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs index 832bd02a7..9e49ddacb 100644 --- a/priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs +++ b/priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs @@ -4,6 +4,8 @@ defmodule Pleroma.Repo.Migrations.MoveTokensExpirationIntoOban do import Ecto.Query, only: [from: 2] def change do + Pleroma.Config.Oban.warn() + Supervisor.start_link([{Oban, Pleroma.Config.get(Oban)}], strategy: :one_for_one, name: Pleroma.Supervisor From 489a107cf449a10c7f6ac9a4b8d4a7f9f7314c5c Mon Sep 17 00:00:00 2001 From: Maksim Date: Sun, 13 Sep 2020 11:54:15 +0000 Subject: [PATCH 228/460] Apply 1 suggestion(s) to 1 file(s) --- lib/pleroma/emoji/pack.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/emoji/pack.ex b/lib/pleroma/emoji/pack.ex index 930bbb422..0b3f8f00b 100644 --- a/lib/pleroma/emoji/pack.ex +++ b/lib/pleroma/emoji/pack.ex @@ -84,7 +84,7 @@ defp unpack_zip_emojies(zip_files) do end) end - @spec add_file(String.t(), String.t(), Path.t(), Plug.Upload.t()) :: + @spec add_file(t(), String.t(), Path.t(), Plug.Upload.t()) :: {:ok, t()} | {:error, File.posix() | atom()} def add_file(%Pack{} = pack, _, _, %Plug.Upload{content_type: "application/zip"} = file) do From 3e53ab4e98e6294f593f2185998f555ccd6fee73 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Mon, 14 Sep 2020 14:08:12 +0300 Subject: [PATCH 229/460] added notification constraints --- .../migration_helper/notification_backfill.ex | 15 +++++----- lib/pleroma/repo.ex | 9 ++++-- ...8_delete_notification_without_activity.exs | 30 +++++++++++++++++++ ...914105800_add_notification_constraints.exs | 23 ++++++++++++++ 4 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 priv/repo/migrations/20200914105638_delete_notification_without_activity.exs create mode 100644 priv/repo/migrations/20200914105800_add_notification_constraints.exs diff --git a/lib/pleroma/migration_helper/notification_backfill.ex b/lib/pleroma/migration_helper/notification_backfill.ex index d260e62ca..24f4733fe 100644 --- a/lib/pleroma/migration_helper/notification_backfill.ex +++ b/lib/pleroma/migration_helper/notification_backfill.ex @@ -19,13 +19,13 @@ def fill_in_notification_types do query |> Repo.chunk_stream(100) |> Enum.each(fn notification -> - type = - notification.activity - |> type_from_activity() + if notification.activity do + type = type_from_activity(notification.activity) - notification - |> Ecto.Changeset.change(%{type: type}) - |> Repo.update() + notification + |> Ecto.Changeset.change(%{type: type}) + |> Repo.update() + end end) end @@ -72,8 +72,7 @@ defp type_from_activity(%{data: %{"type" => type}} = activity) do "pleroma:emoji_reaction" "Create" -> - activity - |> type_from_activity_object() + type_from_activity_object(activity) t -> raise "No notification type for activity type #{t}" diff --git a/lib/pleroma/repo.ex b/lib/pleroma/repo.ex index f317e4d58..a75610879 100644 --- a/lib/pleroma/repo.ex +++ b/lib/pleroma/repo.ex @@ -49,7 +49,7 @@ def get_assoc(resource, association) do end end - def chunk_stream(query, chunk_size) do + def chunk_stream(query, chunk_size, returns_as \\ :one) do # We don't actually need start and end funcitons of resource streaming, # but it seems to be the only way to not fetch records one-by-one and # have individual records be the elements of the stream, instead of @@ -69,7 +69,12 @@ def chunk_stream(query, chunk_size) do records -> last_id = List.last(records).id - {records, last_id} + + if returns_as == :one do + {records, last_id} + else + {[records], last_id} + end end end, fn _ -> :ok end diff --git a/priv/repo/migrations/20200914105638_delete_notification_without_activity.exs b/priv/repo/migrations/20200914105638_delete_notification_without_activity.exs new file mode 100644 index 000000000..f5b339101 --- /dev/null +++ b/priv/repo/migrations/20200914105638_delete_notification_without_activity.exs @@ -0,0 +1,30 @@ +defmodule Pleroma.Repo.Migrations.DeleteNotificationWithoutActivity do + use Ecto.Migration + + import Ecto.Query + alias Pleroma.Repo + + def up do + from( + q in Pleroma.Notification, + left_join: c in assoc(q, :activity), + select: %{id: type(q.id, :integer)}, + where: is_nil(c.id) + ) + |> Repo.chunk_stream(1_000, :bacthes) + |> Stream.each(fn records -> + notification_ids = Enum.map(records, fn %{id: id} -> id end) + + Repo.delete_all( + from(n in "notifications", + where: n.id in ^notification_ids + ) + ) + end) + |> Stream.run() + end + + def down do + :ok + end +end diff --git a/priv/repo/migrations/20200914105800_add_notification_constraints.exs b/priv/repo/migrations/20200914105800_add_notification_constraints.exs new file mode 100644 index 000000000..a65c35fd0 --- /dev/null +++ b/priv/repo/migrations/20200914105800_add_notification_constraints.exs @@ -0,0 +1,23 @@ +defmodule Pleroma.Repo.Migrations.AddNotificationConstraints do + use Ecto.Migration + + def up do + drop(constraint(:notifications, "notifications_activity_id_fkey")) + + alter table(:notifications) do + modify(:activity_id, references(:activities, type: :uuid, on_delete: :delete_all), + null: false + ) + end + end + + def down do + drop(constraint(:notifications, "notifications_activity_id_fkey")) + + alter table(:notifications) do + modify(:activity_id, references(:activities, type: :uuid, on_delete: :delete_all), + null: true + ) + end + end +end From f66a15c4a51e1c8f614b4c1609b2385a29762931 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 14 Sep 2020 14:44:25 +0300 Subject: [PATCH 230/460] RichMedia parser: do not set a cache TTL for unchanging errors --- lib/pleroma/web/rich_media/parser.ex | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex index 5727fda18..ab8f35922 100644 --- a/lib/pleroma/web/rich_media/parser.ex +++ b/lib/pleroma/web/rich_media/parser.ex @@ -36,6 +36,14 @@ defp get_cached_or_parse(url) do {:ok, _data} = res -> res + {:error, :body_too_large} = e -> + e + + {:error, {:content_type, _}} -> + e + + # The TTL is not set for the errors above, since they are unlikely to change + # with time {:error, _} = e -> ttl = Pleroma.Config.get([:rich_media, :failure_backoff], 60_000) Cachex.expire(:rich_media_cache, url, ttl) From f70335002df9b2b3f47f0ccaed6aaeebfb14435f Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 14 Sep 2020 14:45:58 +0300 Subject: [PATCH 231/460] RichMedia: Do a HEAD request to check content type/length This shouldn't be too expensive, since the connections are pooled, but it should save us some bandwidth since we won't fetch non-html files and files that are too large for us to process (especially since you can't cancel a request without closing the connection with HTTP1). --- lib/pleroma/web/rich_media/helpers.ex | 46 ++++++++++++++++++++++++++- test/support/http_request_mock.ex | 17 ++++++++++ test/web/rich_media/parser_test.exs | 29 +++++++++++++++++ 3 files changed, 91 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex index bd7f03cbe..d7a19df4a 100644 --- a/lib/pleroma/web/rich_media/helpers.ex +++ b/lib/pleroma/web/rich_media/helpers.ex @@ -87,6 +87,50 @@ def perform(:fetch, %Activity{} = activity) do def rich_media_get(url) do headers = [{"user-agent", Pleroma.Application.user_agent() <> "; Bot"}] - Pleroma.HTTP.get(url, headers, @options) + head_check = + case Pleroma.HTTP.head(url, headers, @options) do + # If the HEAD request didn't reach the server for whatever reason, + # we assume the GET that comes right after won't either + {:error, _} = e -> + e + + {:ok, %Tesla.Env{status: 200, headers: headers}} -> + with :ok <- check_content_type(headers), + :ok <- check_content_length(headers), + do: :ok + + _ -> + :ok + end + + with :ok <- head_check, do: Pleroma.HTTP.get(url, headers, @options) + end + + defp check_content_type(headers) do + case List.keyfind(headers, "content-type", 0) do + {_, content_type} -> + case Plug.Conn.Utils.media_type(content_type) do + {:ok, "text", "html", _} -> :ok + _ -> {:error, {:content_type, content_type}} + end + + _ -> + :ok + end + end + + @max_body @options[:max_body] + defp check_content_length(headers) do + case List.keyfind(headers, "content-length", 0) do + {_, maybe_content_length} -> + case Integer.parse(maybe_content_length) do + {content_length, ""} when content_length <= @max_body -> :ok + {_, ""} -> {:error, :body_too_large} + _ -> :ok + end + + _ -> + :ok + end end end diff --git a/test/support/http_request_mock.ex b/test/support/http_request_mock.ex index 344e27f13..cb022333f 100644 --- a/test/support/http_request_mock.ex +++ b/test/support/http_request_mock.ex @@ -1262,4 +1262,21 @@ def post(url, query, body, headers) do inspect(headers) }"} end + + # Most of the rich media mocks are missing HEAD requests, so we just return 404. + @rich_media_mocks [ + "https://example.com/ogp", + "https://example.com/ogp-missing-data", + "https://example.com/twitter-card" + ] + def head(url, _query, _body, _headers) when url in @rich_media_mocks do + {:ok, %Tesla.Env{status: 404, body: ""}} + end + + def head(url, query, body, headers) do + {:error, + "Mock response not implemented for HEAD #{inspect(url)}, #{query}, #{inspect(body)}, #{ + inspect(headers) + }"} + end end diff --git a/test/web/rich_media/parser_test.exs b/test/web/rich_media/parser_test.exs index 21ae35f8b..d65a63121 100644 --- a/test/web/rich_media/parser_test.exs +++ b/test/web/rich_media/parser_test.exs @@ -56,6 +56,27 @@ defmodule Pleroma.Web.RichMedia.ParserTest do %{method: :get, url: "http://example.com/error"} -> {:error, :overload} + + %{ + method: :head, + url: "http://example.com/huge-page" + } -> + %Tesla.Env{ + status: 200, + headers: [{"content-length", "2000001"}, {"content-type", "text/html"}] + } + + %{ + method: :head, + url: "http://example.com/pdf-file" + } -> + %Tesla.Env{ + status: 200, + headers: [{"content-length", "1000000"}, {"content-type", "application/pdf"}] + } + + %{method: :head} -> + %Tesla.Env{status: 404, body: "", headers: []} end) :ok @@ -144,4 +165,12 @@ test "rejects invalid OGP data" do test "returns error if getting page was not successful" do assert {:error, :overload} = Parser.parse("http://example.com/error") end + + test "does a HEAD request to check if the body is too large" do + assert {:error, body_too_large} = Parser.parse("http://example.com/huge-page") + end + + test "does a HEAD request to check if the body is html" do + assert {:error, {:content_type, _}} = Parser.parse("http://example.com/pdf-file") + end end From 738685a6298d7bd883fe81477b2e25ec94822e02 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 14 Sep 2020 11:56:00 +0000 Subject: [PATCH 232/460] Apply 1 suggestion(s) to 1 file(s) --- test/web/rich_media/parser_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/web/rich_media/parser_test.exs b/test/web/rich_media/parser_test.exs index d65a63121..6d00c2af5 100644 --- a/test/web/rich_media/parser_test.exs +++ b/test/web/rich_media/parser_test.exs @@ -167,7 +167,7 @@ test "returns error if getting page was not successful" do end test "does a HEAD request to check if the body is too large" do - assert {:error, body_too_large} = Parser.parse("http://example.com/huge-page") + assert {:error, :body_too_large} = Parser.parse("http://example.com/huge-page") end test "does a HEAD request to check if the body is html" do From bb407edce4b512aae74c12ea0c1abcc92bc18ddb Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 14 Sep 2020 15:46:00 +0300 Subject: [PATCH 233/460] RichMedia: fix a compilation error due to nonexistent variable No idea why this passed Gitlab CI --- lib/pleroma/web/rich_media/parser.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex index ab8f35922..33f6f1fa1 100644 --- a/lib/pleroma/web/rich_media/parser.ex +++ b/lib/pleroma/web/rich_media/parser.ex @@ -39,7 +39,7 @@ defp get_cached_or_parse(url) do {:error, :body_too_large} = e -> e - {:error, {:content_type, _}} -> + {:error, {:content_type, _}} = e -> e # The TTL is not set for the errors above, since they are unlikely to change From 0b5e72ecf033ff78c67eb4e5a68277e5d83f5611 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 10 Sep 2020 15:00:19 +0300 Subject: [PATCH 234/460] Remove `:managed_config` option. In practice, it was already removed half a year ago, but the description and cheatsheet entries were still there. The migration intentionally does not use ConfigDB.get_by_params, since this will break migration code as soon as we add a new field is added to ConfigDB. Closes #2086 --- CHANGELOG.md | 2 ++ config/config.exs | 1 - config/description.exs | 6 ----- docs/configuration/cheatsheet.md | 1 - ...10113106_remove_managed_config_from_db.exs | 27 +++++++++++++++++++ 5 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 priv/repo/migrations/20200910113106_remove_managed_config_from_db.exs diff --git a/CHANGELOG.md b/CHANGELOG.md index 75357f05e..88c489895 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - **Breaking:** `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab` (moved to a simpler implementation). - **Breaking:** `Pleroma.Workers.Cron.ClearOauthTokenWorker` setting from Oban `:crontab` (moved to scheduled jobs). - **Breaking:** `Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker` setting from Oban `:crontab` (moved to scheduled jobs). +- Removed `:managed_config` option. In practice, it was accidentally removed with 2.0.0 release when frontends were +switched to a new configuration mechanism, however it was not officially removed until now. ### Changed - Minimum lifetime for ephmeral activities changed to 10 minutes and made configurable (`:min_lifetime` option). diff --git a/config/config.exs b/config/config.exs index 88c47fd03..c204814d0 100644 --- a/config/config.exs +++ b/config/config.exs @@ -216,7 +216,6 @@ allow_relay: true, public: true, quarantined_instances: [], - managed_config: true, static_dir: "instance/static/", allowed_post_formats: [ "text/plain", diff --git a/config/description.exs b/config/description.exs index 82c7bc6a7..2b30f8148 100644 --- a/config/description.exs +++ b/config/description.exs @@ -764,12 +764,6 @@ "*.quarantined.com" ] }, - %{ - key: :managed_config, - type: :boolean, - description: - "Whenether the config for pleroma-fe is configured in this config or in static/config.json" - }, %{ key: :static_dir, type: :string, diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index 0c5d17ce3..054b8fe43 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -40,7 +40,6 @@ To add configuration to your config file, you can copy it from the base config. * `allow_relay`: Enable Pleroma’s Relay, which makes it possible to follow a whole instance. * `public`: Makes the client API in authenticated mode-only except for user-profiles. Useful for disabling the Local Timeline and The Whole Known Network. Note that there is a dependent setting restricting or allowing unauthenticated access to specific resources, see `restrict_unauthenticated` for more details. * `quarantined_instances`: List of ActivityPub instances where private (DMs, followers-only) activities will not be send. -* `managed_config`: Whenether the config for pleroma-fe is configured in [:frontend_configurations](#frontend_configurations) or in ``static/config.json``. * `allowed_post_formats`: MIME-type list of formats allowed to be posted (transformed into HTML). * `extended_nickname_format`: Set to `true` to use extended local nicknames format (allows underscores/dashes). This will break federation with older software for theses nicknames. diff --git a/priv/repo/migrations/20200910113106_remove_managed_config_from_db.exs b/priv/repo/migrations/20200910113106_remove_managed_config_from_db.exs new file mode 100644 index 000000000..e27a9ae48 --- /dev/null +++ b/priv/repo/migrations/20200910113106_remove_managed_config_from_db.exs @@ -0,0 +1,27 @@ +defmodule Pleroma.Repo.Migrations.RemoveManagedConfigFromDb do + use Ecto.Migration + import Ecto.Query + alias Pleroma.ConfigDB + alias Pleroma.Repo + + def up do + config_entry = + from(c in ConfigDB, + select: [:id, :value], + where: c.group == ^:pleroma and c.key == ^:instance + ) + |> Repo.one() + + if config_entry do + {_, value} = Keyword.pop(config_entry.value, :managed_config) + + config_entry + |> Ecto.Changeset.change(value: value) + |> Repo.update() + end + end + + def down do + :ok + end +end From d31f0393bfaa733cf68058c21294874daa286e0a Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 14 Sep 2020 12:06:08 -0500 Subject: [PATCH 235/460] Validate Welcome Chat message works with Simple policy applied to local instance --- test/user_test.exs | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/test/user_test.exs b/test/user_test.exs index 50f72549e..a910226b2 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -440,6 +440,45 @@ test "it sends a welcome chat message if it is set" do assert activity.actor == welcome_user.ap_id end + setup do: + clear_config(:mrf_simple, + media_removal: [], + media_nsfw: [], + federated_timeline_removal: [], + report_removal: [], + reject: [], + followers_only: [], + accept: [], + avatar_removal: [], + banner_removal: [], + reject_deletes: [] + ) + + setup do: + clear_config(:mrf, + policies: [ + Pleroma.Web.ActivityPub.MRF.SimplePolicy + ] + ) + + test "it sends a welcome chat message when Simple policy applied to local instance" do + Pleroma.Config.put([:mrf_simple, :media_nsfw], ["localhost"]) + + welcome_user = insert(:user) + Pleroma.Config.put([:welcome, :chat_message, :enabled], true) + Pleroma.Config.put([:welcome, :chat_message, :sender_nickname], welcome_user.nickname) + Pleroma.Config.put([:welcome, :chat_message, :message], "Hello, this is a chat message") + + cng = User.register_changeset(%User{}, @full_user_data) + {:ok, registered_user} = User.register(cng) + ObanHelpers.perform_all() + + activity = Repo.one(Pleroma.Activity) + assert registered_user.ap_id in activity.recipients + assert Object.normalize(activity).data["content"] =~ "chat message" + assert activity.actor == welcome_user.ap_id + end + test "it sends a welcome email message if it is set" do welcome_user = insert(:user) Pleroma.Config.put([:welcome, :email, :enabled], true) From 25d1caf1ddae3730f2554d35d89a0c2692927d99 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 14 Sep 2020 12:07:31 -0500 Subject: [PATCH 236/460] Merge duplicate Changed sections --- CHANGELOG.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75357f05e..e94f2eda2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Renamed `:await_up_timeout` in `:connections_pool` namespace to `:connect_timeout`, old name is deprecated. - Renamed `:timeout` in `pools` namespace to `:recv_timeout`, old name is deprecated. +- Minimum lifetime for ephmeral activities changed to 10 minutes and made configurable (`:min_lifetime` option). ### Removed @@ -16,9 +17,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - **Breaking:** `Pleroma.Workers.Cron.ClearOauthTokenWorker` setting from Oban `:crontab` (moved to scheduled jobs). - **Breaking:** `Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker` setting from Oban `:crontab` (moved to scheduled jobs). -### Changed -- Minimum lifetime for ephmeral activities changed to 10 minutes and made configurable (`:min_lifetime` option). - ## [2.1.1] - 2020-09-08 ### Security From 118bf6e92bc112b20ba1ce2f7d0bd3bb5db7ebfe Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 14 Sep 2020 12:08:32 -0500 Subject: [PATCH 237/460] Fixed Welcome chats with MRF Simple applied locally --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e94f2eda2..685d59873 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - **Breaking:** `Pleroma.Workers.Cron.ClearOauthTokenWorker` setting from Oban `:crontab` (moved to scheduled jobs). - **Breaking:** `Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker` setting from Oban `:crontab` (moved to scheduled jobs). +### Fixed + +- Welcome Chat messages preventing user registration with MRF Simple Policy applied to the local instance + ## [2.1.1] - 2020-09-08 ### Security From 38b2db297b3207607072347b408dc7eacbac600e Mon Sep 17 00:00:00 2001 From: stwf Date: Mon, 14 Sep 2020 13:18:11 -0400 Subject: [PATCH 238/460] search indexing metadata respects discoverable flag --- lib/pleroma/web/metadata/restrict_indexing.ex | 7 +++---- test/web/metadata/metadata_test.exs | 19 +++++++++++++++++-- test/web/metadata/restrict_indexing_test.exs | 8 +++++++- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/lib/pleroma/web/metadata/restrict_indexing.ex b/lib/pleroma/web/metadata/restrict_indexing.ex index f15607896..a1dcb6e15 100644 --- a/lib/pleroma/web/metadata/restrict_indexing.ex +++ b/lib/pleroma/web/metadata/restrict_indexing.ex @@ -10,7 +10,9 @@ defmodule Pleroma.Web.Metadata.Providers.RestrictIndexing do """ @impl true - def build_tags(%{user: %{local: false}}) do + def build_tags(%{user: %{local: true, discoverable: true}}), do: [] + + def build_tags(_) do [ {:meta, [ @@ -19,7 +21,4 @@ def build_tags(%{user: %{local: false}}) do ], []} ] end - - @impl true - def build_tags(%{user: %{local: true}}), do: [] end diff --git a/test/web/metadata/metadata_test.exs b/test/web/metadata/metadata_test.exs index 9d3121b7b..fe3009628 100644 --- a/test/web/metadata/metadata_test.exs +++ b/test/web/metadata/metadata_test.exs @@ -18,17 +18,32 @@ test "for remote user" do test "for local user" do user = insert(:user) + assert Pleroma.Web.Metadata.build_tags(%{user: user}) =~ + "" + end + + test "for local user set to discoverable" do + user = insert(:user, discoverable: true) + refute Pleroma.Web.Metadata.build_tags(%{user: user}) =~ "" end end describe "no metadata for private instances" do - test "for local user" do + test "for local user set to discoverable" do clear_config([:instance, :public], false) - user = insert(:user, bio: "This is my secret fedi account bio") + user = insert(:user, bio: "This is my secret fedi account bio", discoverable: true) assert "" = Pleroma.Web.Metadata.build_tags(%{user: user}) end + + test "search exclusion metadata is included" do + clear_config([:instance, :public], false) + user = insert(:user, bio: "This is my secret fedi account bio") + + assert "" == + Pleroma.Web.Metadata.build_tags(%{user: user}) + end end end diff --git a/test/web/metadata/restrict_indexing_test.exs b/test/web/metadata/restrict_indexing_test.exs index aad0bac42..6b3a65372 100644 --- a/test/web/metadata/restrict_indexing_test.exs +++ b/test/web/metadata/restrict_indexing_test.exs @@ -14,8 +14,14 @@ test "for remote user" do test "for local user" do assert Pleroma.Web.Metadata.Providers.RestrictIndexing.build_tags(%{ - user: %Pleroma.User{local: true} + user: %Pleroma.User{local: true, discoverable: true} }) == [] end + + test "for local user when discoverable is false" do + assert Pleroma.Web.Metadata.Providers.RestrictIndexing.build_tags(%{ + user: %Pleroma.User{local: true, discoverable: false} + }) == [{:meta, [name: "robots", content: "noindex, noarchive"], []}] + end end end From f900a40d5dc4285977bd92f3792ad04a2f34ddcf Mon Sep 17 00:00:00 2001 From: stwf Date: Mon, 14 Sep 2020 13:55:49 -0400 Subject: [PATCH 239/460] fix credo warning --- test/web/metadata/metadata_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/web/metadata/metadata_test.exs b/test/web/metadata/metadata_test.exs index fe3009628..054844597 100644 --- a/test/web/metadata/metadata_test.exs +++ b/test/web/metadata/metadata_test.exs @@ -42,7 +42,7 @@ test "search exclusion metadata is included" do clear_config([:instance, :public], false) user = insert(:user, bio: "This is my secret fedi account bio") - assert "" == + assert ~s() == Pleroma.Web.Metadata.build_tags(%{user: user}) end end From 709723182d69e1bb41a23c8abeb5d7c2c67b8c49 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 14 Sep 2020 17:06:42 -0500 Subject: [PATCH 240/460] Ensure SimplePolicy's tags in string representation don't trip up the object validator --- lib/pleroma/web/activity_pub/transmogrifier.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index af4384213..8fe430644 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -309,7 +309,7 @@ def fix_url(object), do: object def fix_emoji(%{"tag" => tags} = object) when is_list(tags) do emoji = tags - |> Enum.filter(fn data -> data["type"] == "Emoji" and data["icon"] end) + |> Enum.filter(fn data -> is_map(data) and data["type"] == "Emoji" and data["icon"] end) |> Enum.reduce(%{}, fn data, mapping -> name = String.trim(data["name"], ":") From 0b66e806e32055b625560eb06b9300cc856f9789 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 14 Sep 2020 17:11:08 -0500 Subject: [PATCH 241/460] Move changelog entry to next patch --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 685d59873..ac4a6f7f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - **Breaking:** `Pleroma.Workers.Cron.ClearOauthTokenWorker` setting from Oban `:crontab` (moved to scheduled jobs). - **Breaking:** `Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker` setting from Oban `:crontab` (moved to scheduled jobs). +## unreleased-patch - ??? + ### Fixed - Welcome Chat messages preventing user registration with MRF Simple Policy applied to the local instance From 3ab59a6f3c7b7bae2e69d1a8d1bf484d039a5420 Mon Sep 17 00:00:00 2001 From: eugenijm Date: Tue, 15 Sep 2020 13:00:07 +0300 Subject: [PATCH 242/460] Mastodon API: fix the public timeline returning an error when the `reply_visibility` parameter is set to `self` for an unauthenticated user --- CHANGELOG.md | 1 + lib/pleroma/web/activity_pub/activity_pub.ex | 4 ++-- test/web/activity_pub/activity_pub_test.exs | 8 ++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 82f64d441..f7a372e11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ switched to a new configuration mechanism, however it was not officially removed ### Fixed - Welcome Chat messages preventing user registration with MRF Simple Policy applied to the local instance +- Mastodon API: the public timeline returning an error when the `reply_visibility` parameter is set to `self` for an unauthenticated user ## [2.1.1] - 2020-09-08 diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 66a9f78a3..5aac3f53b 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -767,7 +767,7 @@ defp restrict_replies(query, %{exclude_replies: true}) do end defp restrict_replies(query, %{ - reply_filtering_user: user, + reply_filtering_user: %User{} = user, reply_visibility: "self" }) do from( @@ -783,7 +783,7 @@ defp restrict_replies(query, %{ end defp restrict_replies(query, %{ - reply_filtering_user: user, + reply_filtering_user: %User{} = user, reply_visibility: "following" }) do from( diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index d8caa0b00..7bdad3810 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -1810,6 +1810,14 @@ test "public timeline with default reply_visibility `self`", %{users: %{u1: user |> Enum.map(& &1.id) assert activities_ids == [] + + activities_ids = + %{} + |> Map.put(:reply_visibility, "self") + |> Map.put(:reply_filtering_user, nil) + |> ActivityPub.fetch_public_activities() + + assert activities_ids == [] end test "home timeline", %{users: %{u1: user}} do From f879d07fa1a046b5aa33de8e445b1ca803fa1d04 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Tue, 15 Sep 2020 15:32:49 +0300 Subject: [PATCH 243/460] fixed tests --- test/marker_test.exs | 4 ++-- test/repo_test.exs | 4 +++- .../web/mastodon_api/controllers/account_controller_test.exs | 5 ++++- test/web/mastodon_api/controllers/marker_controller_test.exs | 2 +- test/web/mastodon_api/views/account_view_test.exs | 2 +- 5 files changed, 11 insertions(+), 6 deletions(-) diff --git a/test/marker_test.exs b/test/marker_test.exs index 5b6d0b4a4..7b3943c7b 100644 --- a/test/marker_test.exs +++ b/test/marker_test.exs @@ -33,8 +33,8 @@ test "return empty multi" do test "returns user markers" do user = insert(:user) marker = insert(:marker, user: user) - insert(:notification, user: user) - insert(:notification, user: user) + insert(:notification, user: user, activity: insert(:note_activity)) + insert(:notification, user: user, activity: insert(:note_activity)) insert(:marker, timeline: "home", user: user) assert Marker.get_markers( diff --git a/test/repo_test.exs b/test/repo_test.exs index 92e827c95..72c0b5071 100644 --- a/test/repo_test.exs +++ b/test/repo_test.exs @@ -37,7 +37,9 @@ test "get one-to-one assoc from repo" do test "get one-to-many assoc from repo" do user = insert(:user) - notification = refresh_record(insert(:notification, user: user)) + + notification = + refresh_record(insert(:notification, user: user, activity: insert(:note_activity))) assert Repo.get_assoc(user, :notifications) == {:ok, [notification]} end diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index 17a1e7d66..f7f1369e4 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -1442,7 +1442,10 @@ test "returns lists to which the account belongs" do describe "verify_credentials" do test "verify_credentials" do %{user: user, conn: conn} = oauth_access(["read:accounts"]) - [notification | _] = insert_list(7, :notification, user: user) + + [notification | _] = + insert_list(7, :notification, user: user, activity: insert(:note_activity)) + Pleroma.Notification.set_read_up_to(user, notification.id) conn = get(conn, "/api/v1/accounts/verify_credentials") diff --git a/test/web/mastodon_api/controllers/marker_controller_test.exs b/test/web/mastodon_api/controllers/marker_controller_test.exs index 6dd40fb4a..9f0481120 100644 --- a/test/web/mastodon_api/controllers/marker_controller_test.exs +++ b/test/web/mastodon_api/controllers/marker_controller_test.exs @@ -11,7 +11,7 @@ defmodule Pleroma.Web.MastodonAPI.MarkerControllerTest do test "gets markers with correct scopes", %{conn: conn} do user = insert(:user) token = insert(:oauth_token, user: user, scopes: ["read:statuses"]) - insert_list(7, :notification, user: user) + insert_list(7, :notification, user: user, activity: insert(:note_activity)) {:ok, %{"notifications" => marker}} = Pleroma.Marker.upsert( diff --git a/test/web/mastodon_api/views/account_view_test.exs b/test/web/mastodon_api/views/account_view_test.exs index 9f22f9dcf..c5f491d6b 100644 --- a/test/web/mastodon_api/views/account_view_test.exs +++ b/test/web/mastodon_api/views/account_view_test.exs @@ -448,7 +448,7 @@ test "shows unread_conversation_count only to the account owner" do test "shows unread_count only to the account owner" do user = insert(:user) - insert_list(7, :notification, user: user) + insert_list(7, :notification, user: user, activity: insert(:note_activity)) other_user = insert(:user) user = User.get_cached_by_ap_id(user.ap_id) From c74fad9e06cdb272a1378082908448f7f0b592ac Mon Sep 17 00:00:00 2001 From: Maksim Date: Wed, 16 Sep 2020 03:18:50 +0000 Subject: [PATCH 244/460] Apply 1 suggestion(s) to 1 file(s) --- .../20200914105638_delete_notification_without_activity.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priv/repo/migrations/20200914105638_delete_notification_without_activity.exs b/priv/repo/migrations/20200914105638_delete_notification_without_activity.exs index f5b339101..9333fc5a1 100644 --- a/priv/repo/migrations/20200914105638_delete_notification_without_activity.exs +++ b/priv/repo/migrations/20200914105638_delete_notification_without_activity.exs @@ -11,7 +11,7 @@ def up do select: %{id: type(q.id, :integer)}, where: is_nil(c.id) ) - |> Repo.chunk_stream(1_000, :bacthes) + |> Repo.chunk_stream(1_000, :batches) |> Stream.each(fn records -> notification_ids = Enum.map(records, fn %{id: id} -> id end) From 599f8bb152ca0669d17baa5f313f00f0791209b6 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Wed, 16 Sep 2020 09:47:18 +0300 Subject: [PATCH 245/460] RepoStreamer.chunk_stream -> Repo.chunk_stream --- lib/mix/tasks/pleroma/database.ex | 4 ++-- lib/mix/tasks/pleroma/user.ex | 4 ++-- lib/pleroma/repo.ex | 14 +++++++++++++ lib/pleroma/repo_streamer.ex | 34 ------------------------------- lib/pleroma/user.ex | 3 +-- test/repo_test.exs | 28 +++++++++++++++++++++++++ 6 files changed, 47 insertions(+), 40 deletions(-) delete mode 100644 lib/pleroma/repo_streamer.ex diff --git a/lib/mix/tasks/pleroma/database.ex b/lib/mix/tasks/pleroma/database.ex index 7f1108dcf..a01c36ece 100644 --- a/lib/mix/tasks/pleroma/database.ex +++ b/lib/mix/tasks/pleroma/database.ex @@ -99,7 +99,7 @@ def run(["fix_likes_collections"]) do where: fragment("(?)->>'likes' is not null", object.data), select: %{id: object.id, likes: fragment("(?)->>'likes'", object.data)} ) - |> Pleroma.RepoStreamer.chunk_stream(100) + |> Pleroma.Repo.chunk_stream(100, :batches) |> Stream.each(fn objects -> ids = objects @@ -145,7 +145,7 @@ def run(["ensure_expiration"]) do |> where(local: true) |> where([a], fragment("(? ->> 'type'::text) = 'Create'", a.data)) |> where([_a, o], fragment("?->>'type' = 'Note'", o.data)) - |> Pleroma.RepoStreamer.chunk_stream(100) + |> Pleroma.Repo.chunk_stream(100, :batches) |> Stream.each(fn activities -> Enum.each(activities, fn activity -> expires_at = diff --git a/lib/mix/tasks/pleroma/user.ex b/lib/mix/tasks/pleroma/user.ex index 01824aa18..b20c49d89 100644 --- a/lib/mix/tasks/pleroma/user.ex +++ b/lib/mix/tasks/pleroma/user.ex @@ -179,7 +179,7 @@ def run(["deactivate_all_from_instance", instance]) do start_pleroma() Pleroma.User.Query.build(%{nickname: "@#{instance}"}) - |> Pleroma.RepoStreamer.chunk_stream(500) + |> Pleroma.Repo.chunk_stream(500, :batches) |> Stream.each(fn users -> users |> Enum.each(fn user -> @@ -370,7 +370,7 @@ def run(["list"]) do start_pleroma() Pleroma.User.Query.build(%{local: true}) - |> Pleroma.RepoStreamer.chunk_stream(500) + |> Pleroma.Repo.chunk_stream(500, :batches) |> Stream.each(fn users -> users |> Enum.each(fn user -> diff --git a/lib/pleroma/repo.ex b/lib/pleroma/repo.ex index a75610879..4524bd5e2 100644 --- a/lib/pleroma/repo.ex +++ b/lib/pleroma/repo.ex @@ -49,6 +49,20 @@ def get_assoc(resource, association) do end end + @doc """ + Returns a lazy enumerable that emits all entries from the data store matching the given query. + + `returns_as` use to group records. use the `batches` option to fetch records in bulk. + + ## Examples + + # fetch records one-by-one + iex> Pleroma.Repo.chunk_stream(Pleroma.Activity.Queries.by_actor(ap_id), 500) + + # fetch records in bulk + iex> Pleroma.Repo.chunk_stream(Pleroma.Activity.Queries.by_actor(ap_id), 500, :batches) + """ + @spec chunk_stream(Ecto.Query.t(), integer(), atom()) :: Enumerable.t() def chunk_stream(query, chunk_size, returns_as \\ :one) do # We don't actually need start and end funcitons of resource streaming, # but it seems to be the only way to not fetch records one-by-one and diff --git a/lib/pleroma/repo_streamer.ex b/lib/pleroma/repo_streamer.ex deleted file mode 100644 index cb4d7bb7a..000000000 --- a/lib/pleroma/repo_streamer.ex +++ /dev/null @@ -1,34 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.RepoStreamer do - alias Pleroma.Repo - import Ecto.Query - - def chunk_stream(query, chunk_size) do - Stream.unfold(0, fn - :halt -> - {[], :halt} - - last_id -> - query - |> order_by(asc: :id) - |> where([r], r.id > ^last_id) - |> limit(^chunk_size) - |> Repo.all() - |> case do - [] -> - {[], :halt} - - records -> - last_id = List.last(records).id - {records, last_id} - end - end) - |> Stream.take_while(fn - [] -> false - _ -> true - end) - end -end diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index e73d19964..57497eb83 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -25,7 +25,6 @@ defmodule Pleroma.User do alias Pleroma.Object alias Pleroma.Registration alias Pleroma.Repo - alias Pleroma.RepoStreamer alias Pleroma.User alias Pleroma.UserRelationship alias Pleroma.Web @@ -1775,7 +1774,7 @@ def delete_notifications_from_user_activities(%User{ap_id: ap_id}) do def delete_user_activities(%User{ap_id: ap_id} = user) do ap_id |> Activity.Queries.by_actor() - |> RepoStreamer.chunk_stream(50) + |> Repo.chunk_stream(50, :batches) |> Stream.each(fn activities -> Enum.each(activities, fn activity -> delete_activity(activity, user) end) end) diff --git a/test/repo_test.exs b/test/repo_test.exs index 72c0b5071..155791be2 100644 --- a/test/repo_test.exs +++ b/test/repo_test.exs @@ -49,4 +49,32 @@ test "return error if has not assoc " do assert Repo.get_assoc(token, :user) == {:error, :not_found} end end + + describe "chunk_stream/3" do + test "fetch records one-by-one" do + users = insert_list(50, :user) + + {fetch_users, 50} = + from(t in User) + |> Repo.chunk_stream(5) + |> Enum.reduce({[], 0}, fn %User{} = user, {acc, count} -> + {acc ++ [user], count + 1} + end) + + assert users == fetch_users + end + + test "fetch records in bulk" do + users = insert_list(50, :user) + + {fetch_users, 10} = + from(t in User) + |> Repo.chunk_stream(5, :batches) + |> Enum.reduce({[], 0}, fn users, {acc, count} -> + {acc ++ users, count + 1} + end) + + assert users == fetch_users + end + end end From adb1b0282dfbced2b2986c90cff765be37dd5151 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Wed, 16 Sep 2020 17:23:05 +0300 Subject: [PATCH 246/460] ConnectionPool Worker: use monitor flush instead of checking ref `:flush` removes the DOWN message if one had arrived, so this check should no longer be necessary. --- lib/pleroma/gun/connection_pool/worker.ex | 25 ++++++++--------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/lib/pleroma/gun/connection_pool/worker.ex b/lib/pleroma/gun/connection_pool/worker.ex index 49d41e4c7..bf57e9e5f 100644 --- a/lib/pleroma/gun/connection_pool/worker.ex +++ b/lib/pleroma/gun/connection_pool/worker.ex @@ -93,25 +93,18 @@ def handle_call(:remove_client, {client_pid, _}, %{key: key} = state) do end) {ref, state} = pop_in(state.client_monitors[client_pid]) - # DOWN message can receive right after `remove_client` call and cause worker to terminate - state = - if is_nil(ref) do - state + + Process.demonitor(ref, [:flush]) + + timer = + if used_by == [] do + max_idle = Pleroma.Config.get([:connections_pool, :max_idle_time], 30_000) + Process.send_after(self(), :idle_close, max_idle) else - Process.demonitor(ref) - - timer = - if used_by == [] do - max_idle = Pleroma.Config.get([:connections_pool, :max_idle_time], 30_000) - Process.send_after(self(), :idle_close, max_idle) - else - nil - end - - %{state | timer: timer} + nil end - {:reply, :ok, state, :hibernate} + {:reply, :ok, %{state | timer: timer}, :hibernate} end @impl true From 7a88b726bf81e1610ade2b07ffd6af672b701600 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 16 Sep 2020 17:29:16 +0200 Subject: [PATCH 247/460] User: Remote users don't need to be confirmed or approved --- lib/pleroma/user.ex | 4 ++-- test/user_test.exs | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 57497eb83..1ffe60dfc 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -275,9 +275,9 @@ def binary_id(%User{} = user), do: binary_id(user.id) @spec account_status(User.t()) :: account_status() def account_status(%User{deactivated: true}), do: :deactivated def account_status(%User{password_reset_pending: true}), do: :password_reset_pending - def account_status(%User{approval_pending: true}), do: :approval_pending + def account_status(%User{local: true, approval_pending: true}), do: :approval_pending - def account_status(%User{confirmation_pending: true}) do + def account_status(%User{local: true, confirmation_pending: true}) do if Config.get([:instance, :account_activation_required]) do :confirmation_pending else diff --git a/test/user_test.exs b/test/user_test.exs index a910226b2..060918d71 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -1676,7 +1676,7 @@ test "returns true when the account is itself" do assert User.visible_for(user, user) == :visible end - test "returns false when the account is unauthenticated and auth is required" do + test "returns false when the account is unconfirmed and confirmation is required" do Pleroma.Config.put([:instance, :account_activation_required], true) user = insert(:user, local: true, confirmation_pending: true) @@ -1685,14 +1685,23 @@ test "returns false when the account is unauthenticated and auth is required" do refute User.visible_for(user, other_user) == :visible end - test "returns true when the account is unauthenticated and auth is not required" do + test "returns true when the account is unconfirmed and confirmation is required but the account is remote" do + Pleroma.Config.put([:instance, :account_activation_required], true) + + user = insert(:user, local: false, confirmation_pending: true) + other_user = insert(:user, local: true) + + assert User.visible_for(user, other_user) == :visible + end + + test "returns true when the account is unconfirmed and confirmation is not required" do user = insert(:user, local: true, confirmation_pending: true) other_user = insert(:user, local: true) assert User.visible_for(user, other_user) == :visible end - test "returns true when the account is unauthenticated and being viewed by a privileged account (auth required)" do + test "returns true when the account is unconfirmed and being viewed by a privileged account (confirmation required)" do Pleroma.Config.put([:instance, :account_activation_required], true) user = insert(:user, local: true, confirmation_pending: true) From 73e0e6a8a2efaac513077317229f72b128f3a3ea Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 16 Sep 2020 10:56:42 -0500 Subject: [PATCH 248/460] Remove unused import --- test/object/fetcher_test.exs | 1 - 1 file changed, 1 deletion(-) diff --git a/test/object/fetcher_test.exs b/test/object/fetcher_test.exs index 3173ee31c..14d2c645f 100644 --- a/test/object/fetcher_test.exs +++ b/test/object/fetcher_test.exs @@ -10,7 +10,6 @@ defmodule Pleroma.Object.FetcherTest do alias Pleroma.Object alias Pleroma.Object.Fetcher - import ExUnit.CaptureLog import Mock import Tesla.Mock From a781f41f969bd1a929005b2b5006a40d42855ae8 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Wed, 16 Sep 2020 22:30:42 +0300 Subject: [PATCH 249/460] [#2497] Media preview proxy: misc. improvements (`static` param support, dynamic fifo pipe path), refactoring. --- CHANGELOG.md | 3 +++ lib/pleroma/helpers/media_helper.ex | 4 +--- lib/pleroma/helpers/uri_helper.ex | 13 ++++++++----- .../web/mastodon_api/views/account_view.ex | 4 ++-- lib/pleroma/web/media_proxy/media_proxy.ex | 2 +- .../web/media_proxy/media_proxy_controller.ex | 19 ++++++++++++++++--- lib/pleroma/web/oauth/oauth_controller.ex | 4 ++-- 7 files changed, 33 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f7a372e11..adea6d019 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Renamed `:timeout` in `pools` namespace to `:recv_timeout`, old name is deprecated. - Minimum lifetime for ephmeral activities changed to 10 minutes and made configurable (`:min_lifetime` option). +### Added +- Media preview proxy (requires media proxy be enabled; see `:media_preview_proxy` config for more details). + ### Removed - **Breaking:** `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab` (moved to a simpler implementation). diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index d834b4a07..9b7348ee2 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -9,8 +9,6 @@ defmodule Pleroma.Helpers.MediaHelper do alias Pleroma.HTTP - @tmp_base "/tmp/pleroma-media_preview-pipe" - def image_resize(url, options) do with executable when is_binary(executable) <- System.find_executable("convert"), {:ok, args} <- prepare_image_resize_args(options), @@ -103,7 +101,7 @@ defp run_fifo(fifo_path, env, executable, args) do end defp mkfifo do - path = "#{@tmp_base}#{to_charlist(:erlang.phash2(self()))}" + path = Path.join(System.tmp_dir!(), "pleroma-media-preview-pipe-#{Ecto.UUID.generate()}") case System.cmd("mkfifo", [path]) do {_, 0} -> diff --git a/lib/pleroma/helpers/uri_helper.ex b/lib/pleroma/helpers/uri_helper.ex index 9c9e53447..f1301f055 100644 --- a/lib/pleroma/helpers/uri_helper.ex +++ b/lib/pleroma/helpers/uri_helper.ex @@ -3,14 +3,17 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Helpers.UriHelper do - def append_uri_params(uri, appended_params) do + def modify_uri_params(uri, overridden_params, deleted_params \\ []) do uri = URI.parse(uri) - appended_params = for {k, v} <- appended_params, into: %{}, do: {to_string(k), v} - existing_params = URI.query_decoder(uri.query || "") |> Enum.into(%{}) - updated_params_keys = Enum.uniq(Map.keys(existing_params) ++ Map.keys(appended_params)) + + existing_params = URI.query_decoder(uri.query || "") |> Map.new() + overridden_params = Map.new(overridden_params, fn {k, v} -> {to_string(k), v} end) + deleted_params = Enum.map(deleted_params, &to_string/1) updated_params = - for k <- updated_params_keys, do: {k, appended_params[k] || existing_params[k]} + existing_params + |> Map.merge(overridden_params) + |> Map.drop(deleted_params) uri |> Map.put(:query, URI.encode_query(updated_params)) diff --git a/lib/pleroma/web/mastodon_api/views/account_view.ex b/lib/pleroma/web/mastodon_api/views/account_view.ex index a811f81c2..121ba1693 100644 --- a/lib/pleroma/web/mastodon_api/views/account_view.ex +++ b/lib/pleroma/web/mastodon_api/views/account_view.ex @@ -182,9 +182,9 @@ defp do_render("show.json", %{user: user} = opts) do display_name = user.name || user.nickname avatar = User.avatar_url(user) |> MediaProxy.url() - avatar_static = User.avatar_url(user) |> MediaProxy.preview_url(output_format: "jpeg") + avatar_static = User.avatar_url(user) |> MediaProxy.preview_url(static: true) header = User.banner_url(user) |> MediaProxy.url() - header_static = User.banner_url(user) |> MediaProxy.preview_url(output_format: "jpeg") + header_static = User.banner_url(user) |> MediaProxy.preview_url(static: true) following_count = if !user.hide_follows_count or !user.hide_follows or opts[:for] == user do diff --git a/lib/pleroma/web/media_proxy/media_proxy.ex b/lib/pleroma/web/media_proxy/media_proxy.ex index ba553998b..8656b8cad 100644 --- a/lib/pleroma/web/media_proxy/media_proxy.ex +++ b/lib/pleroma/web/media_proxy/media_proxy.ex @@ -157,7 +157,7 @@ def build_url(sig_base64, url_base64, filename \\ nil) do def build_preview_url(sig_base64, url_base64, filename \\ nil, preview_params \\ []) do uri = proxy_url("proxy/preview", sig_base64, url_base64, filename) - UriHelper.append_uri_params(uri, preview_params) + UriHelper.modify_uri_params(uri, preview_params) end def verify_request_path_and_url( diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 78df7763e..fe279e964 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -7,6 +7,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do alias Pleroma.Config alias Pleroma.Helpers.MediaHelper + alias Pleroma.Helpers.UriHelper alias Pleroma.ReverseProxy alias Pleroma.Web.MediaProxy alias Plug.Conn @@ -74,14 +75,26 @@ defp handle_preview(conn, url) do end defp handle_preview( - "image/" <> _ = _content_type, + "image/gif" = _content_type, _content_length, - %{params: %{"output_format" => "jpeg"}} = conn, + %{params: %{"static" => static}} = conn, media_proxy_url - ) do + ) + when static in ["true", true] do handle_jpeg_preview(conn, media_proxy_url) end + defp handle_preview( + _content_type, + _content_length, + %{params: %{"static" => static}} = conn, + _media_proxy_url + ) + when static in ["true", true] do + uri_without_static_param = UriHelper.modify_uri_params(current_url(conn), %{}, ["static"]) + redirect(conn, external: uri_without_static_param) + end + defp handle_preview("image/gif" = _content_type, _content_length, conn, media_proxy_url) do redirect(conn, external: media_proxy_url) end diff --git a/lib/pleroma/web/oauth/oauth_controller.ex b/lib/pleroma/web/oauth/oauth_controller.ex index 26e68be42..a4152e840 100644 --- a/lib/pleroma/web/oauth/oauth_controller.ex +++ b/lib/pleroma/web/oauth/oauth_controller.ex @@ -119,7 +119,7 @@ defp handle_existing_authorization( redirect_uri = redirect_uri(conn, redirect_uri) url_params = %{access_token: token.token} url_params = Maps.put_if_present(url_params, :state, params["state"]) - url = UriHelper.append_uri_params(redirect_uri, url_params) + url = UriHelper.modify_uri_params(redirect_uri, url_params) redirect(conn, external: url) else conn @@ -161,7 +161,7 @@ def after_create_authorization(%Plug.Conn{} = conn, %Authorization{} = auth, %{ redirect_uri = redirect_uri(conn, redirect_uri) url_params = %{code: auth.token} url_params = Maps.put_if_present(url_params, :state, auth_attrs["state"]) - url = UriHelper.append_uri_params(redirect_uri, url_params) + url = UriHelper.modify_uri_params(redirect_uri, url_params) redirect(conn, external: url) else conn From 5a8ea0a5b07c22d567a60af36345483fe880b638 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Thu, 17 Sep 2020 09:13:43 +0300 Subject: [PATCH 250/460] small refactoring --- lib/pleroma/user/import.ex | 10 ++------ lib/pleroma/workers/background_worker.ex | 29 +++--------------------- 2 files changed, 5 insertions(+), 34 deletions(-) diff --git a/lib/pleroma/user/import.ex b/lib/pleroma/user/import.ex index de27bdc4c..e458021c8 100644 --- a/lib/pleroma/user/import.ex +++ b/lib/pleroma/user/import.ex @@ -65,20 +65,14 @@ defp handle_error(op, user_id, error) do def blocks_import(%User{} = blocker, [_ | _] = identifiers) do BackgroundWorker.enqueue( "blocks_import", - %{ - "blocker_id" => blocker.id, - "blocked_identifiers" => identifiers - } + %{"user_id" => blocker.id, "identifiers" => identifiers} ) end def follow_import(%User{} = follower, [_ | _] = identifiers) do BackgroundWorker.enqueue( "follow_import", - %{ - "follower_id" => follower.id, - "followed_identifiers" => identifiers - } + %{"user_id" => follower.id, "identifiers" => identifiers} ) end diff --git a/lib/pleroma/workers/background_worker.ex b/lib/pleroma/workers/background_worker.ex index f9c767ee0..55b5a13d9 100644 --- a/lib/pleroma/workers/background_worker.ex +++ b/lib/pleroma/workers/background_worker.ex @@ -26,33 +26,10 @@ def perform(%Job{args: %{"op" => "force_password_reset", "user_id" => user_id}}) User.perform(:force_password_reset, user) end - def perform(%Job{ - args: %{ - "op" => "blocks_import", - "blocker_id" => blocker_id, - "blocked_identifiers" => blocked_identifiers - } - }) do - blocker = User.get_cached_by_id(blocker_id) - {:ok, User.Import.perform(:blocks_import, blocker, blocked_identifiers)} - end - - def perform(%Job{ - args: %{ - "op" => "follow_import", - "follower_id" => follower_id, - "followed_identifiers" => followed_identifiers - } - }) do - follower = User.get_cached_by_id(follower_id) - {:ok, User.Import.perform(:follow_import, follower, followed_identifiers)} - end - - def perform(%Job{ - args: %{"op" => "mutes_import", "user_id" => user_id, "identifiers" => identifiers} - }) do + def perform(%Job{args: %{"op" => op, "user_id" => user_id, "identifiers" => identifiers}}) + when op in ["blocks_import", "follow_import", "mutes_import"] do user = User.get_cached_by_id(user_id) - {:ok, User.Import.perform(:mutes_import, user, identifiers)} + {:ok, User.Import.perform(String.to_atom(op), user, identifiers)} end def perform(%Job{args: %{"op" => "media_proxy_preload", "message" => message}}) do From e39ff2616b6694f97ab793bc60b5caa7b509f0b1 Mon Sep 17 00:00:00 2001 From: lain Date: Thu, 17 Sep 2020 13:29:26 +0200 Subject: [PATCH 251/460] Admin chat api tests: Small additions. --- test/web/admin_api/controllers/admin_api_controller_test.exs | 2 +- test/web/admin_api/controllers/chat_controller_test.exs | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/test/web/admin_api/controllers/admin_api_controller_test.exs b/test/web/admin_api/controllers/admin_api_controller_test.exs index 3476fd0b4..e6ad210a2 100644 --- a/test/web/admin_api/controllers/admin_api_controller_test.exs +++ b/test/web/admin_api/controllers/admin_api_controller_test.exs @@ -1521,7 +1521,7 @@ test "excludes reblogs by default", %{conn: conn, user: user} do %{user: user} end - test "renders user's statuses", %{conn: conn, user: user} do + test "renders user's chats", %{conn: conn, user: user} do conn = get(conn, "/api/pleroma/admin/users/#{user.nickname}/chats") assert json_response(conn, 200) |> length() == 3 diff --git a/test/web/admin_api/controllers/chat_controller_test.exs b/test/web/admin_api/controllers/chat_controller_test.exs index e81484ce6..bd4c9c9d1 100644 --- a/test/web/admin_api/controllers/chat_controller_test.exs +++ b/test/web/admin_api/controllers/chat_controller_test.exs @@ -40,8 +40,10 @@ test "it deletes a message from the chat", %{conn: conn, admin: admin} do object = Object.normalize(message, false) chat = Chat.get(user.id, recipient.ap_id) + recipient_chat = Chat.get(recipient.id, user.ap_id) cm_ref = MessageReference.for_chat_and_object(chat, object) + recipient_cm_ref = MessageReference.for_chat_and_object(recipient_chat, object) result = conn @@ -56,6 +58,7 @@ test "it deletes a message from the chat", %{conn: conn, admin: admin} do assert result["id"] == cm_ref.id refute MessageReference.get_by_id(cm_ref.id) + refute MessageReference.get_by_id(recipient_cm_ref.id) assert %{data: %{"type" => "Tombstone"}} = Object.get_by_id(object.id) end end From 5e3c70afa5c02926a5578628431487e92b2175e9 Mon Sep 17 00:00:00 2001 From: lain Date: Thu, 17 Sep 2020 13:37:25 +0200 Subject: [PATCH 252/460] AdminAPI Chat tests: Remove factory. The factory system doesn't work too well with how the chats are done. Instead of tempting people to use it, let's rather use the CommonAPI system for now. --- test/support/factory.ex | 54 ------------------- .../controllers/admin_api_controller_test.exs | 13 +++-- 2 files changed, 8 insertions(+), 59 deletions(-) diff --git a/test/support/factory.ex b/test/support/factory.ex index e59d83242..2fdfabbc5 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -441,58 +441,4 @@ def filter_factory do phrase: "cofe" } end - - def chat_factory(attrs \\ %{}) do - user = attrs[:user] || insert(:user) - recipient = attrs[:recipient] || insert(:user) - - %Pleroma.Chat{ - user_id: user.id, - recipient: recipient.ap_id - } - end - - def chat_message_factory(attrs \\ %{}) do - text = sequence(:text, &"This is :moominmamma: chat message #{&1}") - chat = attrs[:chat] || insert(:chat) - - data = %{ - "type" => "ChatMessage", - "content" => text, - "id" => Pleroma.Web.ActivityPub.Utils.generate_object_id(), - "actor" => User.get_by_id(chat.user_id).ap_id, - "to" => [chat.recipient], - "published" => DateTime.utc_now() |> DateTime.to_iso8601() - } - - %Pleroma.Object{ - data: merge_attributes(data, Map.get(attrs, :data, %{})) - } - end - - def chat_message_activity_factory(attrs \\ %{}) do - chat = attrs[:chat] || insert(:chat) - chat_message = attrs[:chat_message] || insert(:chat_message, chat: chat) - - data_attrs = attrs[:data_attrs] || %{} - attrs = Map.drop(attrs, [:chat, :chat_message, :data_attrs]) - - data = - %{ - "id" => Pleroma.Web.ActivityPub.Utils.generate_activity_id(), - "type" => "Create", - "actor" => chat_message.data["actor"], - "to" => chat_message.data["to"], - "object" => chat_message.data["id"], - "published" => DateTime.utc_now() |> DateTime.to_iso8601() - } - |> Map.merge(data_attrs) - - %Pleroma.Activity{ - data: data, - actor: data["actor"], - recipients: data["to"] - } - |> Map.merge(attrs) - end end diff --git a/test/web/admin_api/controllers/admin_api_controller_test.exs b/test/web/admin_api/controllers/admin_api_controller_test.exs index e6ad210a2..e4d3512de 100644 --- a/test/web/admin_api/controllers/admin_api_controller_test.exs +++ b/test/web/admin_api/controllers/admin_api_controller_test.exs @@ -1513,10 +1513,11 @@ test "excludes reblogs by default", %{conn: conn, user: user} do describe "GET /api/pleroma/admin/users/:nickname/chats" do setup do user = insert(:user) + recipients = insert_list(3, :user) - insert(:chat, user: user) - insert(:chat, user: user) - insert(:chat, user: user) + Enum.each(recipients, fn recipient -> + CommonAPI.post_chat_message(user, recipient, "yo") + end) %{user: user} end @@ -1531,7 +1532,8 @@ test "renders user's chats", %{conn: conn, user: user} do describe "GET /api/pleroma/admin/users/:nickname/chats unauthorized" do setup do user = insert(:user) - insert(:chat, user: user) + recipient = insert(:user) + CommonAPI.post_chat_message(user, recipient, "yo") %{conn: conn} = oauth_access(["read:chats"]) %{conn: conn, user: user} end @@ -1546,7 +1548,8 @@ test "returns 403", %{conn: conn, user: user} do describe "GET /api/pleroma/admin/users/:nickname/chats unauthenticated" do setup do user = insert(:user) - insert(:chat, user: user) + recipient = insert(:user) + CommonAPI.post_chat_message(user, recipient, "yo") %{conn: build_conn(), user: user} end From 582ad5d4e1587b3dba9d879bd68dd9a315c8446e Mon Sep 17 00:00:00 2001 From: eugenijm Date: Sun, 30 Aug 2020 15:15:14 +0300 Subject: [PATCH 253/460] AdminAPI: Allow to modify Terms of Service and Instance Panel via Admin API --- CHANGELOG.md | 6 + docs/API/admin_api.md | 42 +++++++ .../instance_document_controller.ex | 37 ++++++ .../admin/instance_document_operation.ex | 108 +++++++++++++++++ lib/pleroma/web/instance_document.ex | 62 ++++++++++ lib/pleroma/web/router.ex | 4 + test/fixtures/custom_instance_panel.html | 1 + .../instance_document_controller_test.exs | 112 ++++++++++++++++++ 8 files changed, 372 insertions(+) create mode 100644 lib/pleroma/web/admin_api/controllers/instance_document_controller.ex create mode 100644 lib/pleroma/web/api_spec/operations/admin/instance_document_operation.ex create mode 100644 lib/pleroma/web/instance_document.ex create mode 100644 test/fixtures/custom_instance_panel.html create mode 100644 test/web/admin_api/controllers/instance_document_controller_test.exs diff --git a/CHANGELOG.md b/CHANGELOG.md index f7a372e11..1ec6c11cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,12 @@ switched to a new configuration mechanism, however it was not officially removed ### Added - Rich media failure tracking (along with `:failure_backoff` option). +
+ Admin API Changes + +- Add `PATCH /api/pleroma/admin/instance_document/:document_name` to modify the Terms of Service and Instance Panel HTML pages via Admin API +
+ ### Fixed - Default HTTP adapter not respecting pool setting, leading to possible OOM. - Fixed uploading webp images when the Exiftool Upload Filter is enabled by skipping them diff --git a/docs/API/admin_api.md b/docs/API/admin_api.md index bc96abbf0..eba92dd1f 100644 --- a/docs/API/admin_api.md +++ b/docs/API/admin_api.md @@ -1455,3 +1455,45 @@ Loads json generated from `config/descriptions.exs`. "unread": false } ``` + +## `GET /api/pleroma/admin/instance_document/:document_name` + +### Gets an instance document + +- Authentication: required + +- Response: + +``` json +{ + "url": "https://example.com/instance/panel.html" +} +``` + +## `PATCH /api/pleroma/admin/instance_document/:document_name` +- Params: + - `file` (the file to be uploaded, using multipart form data.) + +### Updates an instance document + +- Authentication: required + +- Response: + +``` json +{ + "url": "https://example.com/instance/panel.html" +} +``` + +## `DELETE /api/pleroma/admin/instance_document/:document_name` + +### Delete an instance document + +- Response: + +``` json +{ + "url": "https://example.com/instance/panel.html" +} +``` diff --git a/lib/pleroma/web/admin_api/controllers/instance_document_controller.ex b/lib/pleroma/web/admin_api/controllers/instance_document_controller.ex new file mode 100644 index 000000000..2144e44ac --- /dev/null +++ b/lib/pleroma/web/admin_api/controllers/instance_document_controller.ex @@ -0,0 +1,37 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.InstanceDocumentController do + use Pleroma.Web, :controller + + alias Pleroma.Plugs.OAuthScopesPlug + alias Pleroma.Web.InstanceDocument + + plug(Pleroma.Web.ApiSpec.CastAndValidate) + + action_fallback(Pleroma.Web.AdminAPI.FallbackController) + + defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.Admin.InstanceDocumentOperation + + plug(OAuthScopesPlug, %{scopes: ["read"], admin: true} when action == :show) + plug(OAuthScopesPlug, %{scopes: ["write"], admin: true} when action in [:update, :delete]) + + def show(conn, %{name: document_name}) do + with {:ok, url} <- InstanceDocument.get(document_name) do + json(conn, %{"url" => url}) + end + end + + def update(%{body_params: %{file: file}} = conn, %{name: document_name}) do + with {:ok, url} <- InstanceDocument.put(document_name, file.path) do + json(conn, %{"url" => url}) + end + end + + def delete(conn, %{name: document_name}) do + with :ok <- InstanceDocument.delete(document_name) do + json(conn, %{}) + end + end +end diff --git a/lib/pleroma/web/api_spec/operations/admin/instance_document_operation.ex b/lib/pleroma/web/api_spec/operations/admin/instance_document_operation.ex new file mode 100644 index 000000000..e0eb993fb --- /dev/null +++ b/lib/pleroma/web/api_spec/operations/admin/instance_document_operation.ex @@ -0,0 +1,108 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Admin.InstanceDocumentOperation do + alias OpenApiSpex.Operation + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Helpers + alias Pleroma.Web.ApiSpec.Schemas.ApiError + + def open_api_operation(action) do + operation = String.to_existing_atom("#{action}_operation") + apply(__MODULE__, operation, []) + end + + def show_operation do + %Operation{ + tags: ["Admin", "InstanceDocument"], + summary: "Get the instance document", + operationId: "AdminAPI.InstanceDocumentController.show", + security: [%{"oAuth" => ["read"]}], + parameters: [ + Operation.parameter(:name, :path, %Schema{type: :string}, "The document name", + required: true + ) + | Helpers.admin_api_params() + ], + responses: %{ + 200 => Operation.response("InstanceDocument", "application/json", instance_document()), + 400 => Operation.response("Bad Request", "application/json", ApiError), + 403 => Operation.response("Forbidden", "application/json", ApiError), + 404 => Operation.response("Not Found", "application/json", ApiError) + } + } + end + + def update_operation do + %Operation{ + tags: ["Admin", "InstanceDocument"], + summary: "Update the instance document", + operationId: "AdminAPI.InstanceDocumentController.update", + security: [%{"oAuth" => ["write"]}], + requestBody: Helpers.request_body("Parameters", update_request()), + parameters: [ + Operation.parameter(:name, :path, %Schema{type: :string}, "The document name", + required: true + ) + | Helpers.admin_api_params() + ], + responses: %{ + 200 => Operation.response("InstanceDocument", "application/json", instance_document()), + 400 => Operation.response("Bad Request", "application/json", ApiError), + 403 => Operation.response("Forbidden", "application/json", ApiError), + 404 => Operation.response("Not Found", "application/json", ApiError) + } + } + end + + defp update_request do + %Schema{ + title: "UpdateRequest", + description: "POST body for uploading the file", + type: :object, + required: [:file], + properties: %{ + file: %Schema{ + type: :string, + format: :binary, + description: "The file to be uploaded, using multipart form data." + } + } + } + end + + def delete_operation do + %Operation{ + tags: ["Admin", "InstanceDocument"], + summary: "Get the instance document", + operationId: "AdminAPI.InstanceDocumentController.delete", + security: [%{"oAuth" => ["write"]}], + parameters: [ + Operation.parameter(:name, :path, %Schema{type: :string}, "The document name", + required: true + ) + | Helpers.admin_api_params() + ], + responses: %{ + 200 => Operation.response("InstanceDocument", "application/json", instance_document()), + 400 => Operation.response("Bad Request", "application/json", ApiError), + 403 => Operation.response("Forbidden", "application/json", ApiError), + 404 => Operation.response("Not Found", "application/json", ApiError) + } + } + end + + defp instance_document do + %Schema{ + title: "InstanceDocument", + type: :object, + properties: %{ + url: %Schema{type: :string} + }, + example: %{ + "url" => "https://example.com/static/terms-of-service.html" + } + } + end +end diff --git a/lib/pleroma/web/instance_document.ex b/lib/pleroma/web/instance_document.ex new file mode 100644 index 000000000..969a44e41 --- /dev/null +++ b/lib/pleroma/web/instance_document.ex @@ -0,0 +1,62 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.InstanceDocument do + alias Pleroma.Config + alias Pleroma.Web.Endpoint + + @instance_documents %{ + "terms-of-service" => "/static/terms-of-service.html", + "instance-panel" => "/instance/panel.html" + } + + @spec get(String.t()) :: {:ok, String.t()} | {:error, atom()} + def get(document_name) do + case Map.fetch(@instance_documents, document_name) do + {:ok, path} -> {:ok, Path.join(Endpoint.url(), path)} + _ -> {:error, :not_found} + end + end + + @spec put(String.t(), String.t()) :: {:ok, String.t()} | {:error, atom()} + def put(document_name, origin_path) do + with {_, {:ok, destination_path}} <- + {:instance_document, Map.fetch(@instance_documents, document_name)}, + :ok <- put_file(origin_path, destination_path) do + {:ok, Path.join(Endpoint.url(), destination_path)} + else + {:instance_document, :error} -> {:error, :not_found} + error -> error + end + end + + @spec delete(String.t()) :: :ok | {:error, atom()} + def delete(document_name) do + with {_, {:ok, path}} <- {:instance_document, Map.fetch(@instance_documents, document_name)}, + instance_static_dir_path <- instance_static_dir(path), + :ok <- File.rm(instance_static_dir_path) do + :ok + else + {:instance_document, :error} -> {:error, :not_found} + {:error, :enoent} -> {:error, :not_found} + error -> error + end + end + + defp put_file(origin_path, destination_path) do + with destination <- instance_static_dir(destination_path), + {_, :ok} <- {:mkdir_p, File.mkdir_p(Path.dirname(destination))}, + {_, {:ok, _}} <- {:copy, File.copy(origin_path, destination)} do + :ok + else + {error, _} -> {:error, error} + end + end + + defp instance_static_dir(filename) do + [:instance, :static_dir] + |> Config.get!() + |> Path.join(filename) + end +end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index e4440d442..a4a58c2c4 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -182,6 +182,10 @@ defmodule Pleroma.Web.Router do get("/instances/:instance/statuses", AdminAPIController, :list_instance_statuses) + get("/instance_document/:name", InstanceDocumentController, :show) + patch("/instance_document/:name", InstanceDocumentController, :update) + delete("/instance_document/:name", InstanceDocumentController, :delete) + patch("/users/confirm_email", AdminAPIController, :confirm_email) patch("/users/resend_confirmation_email", AdminAPIController, :resend_confirmation_email) diff --git a/test/fixtures/custom_instance_panel.html b/test/fixtures/custom_instance_panel.html new file mode 100644 index 000000000..6371a1e43 --- /dev/null +++ b/test/fixtures/custom_instance_panel.html @@ -0,0 +1 @@ +

Custom instance panel

\ No newline at end of file diff --git a/test/web/admin_api/controllers/instance_document_controller_test.exs b/test/web/admin_api/controllers/instance_document_controller_test.exs new file mode 100644 index 000000000..60dcc9dff --- /dev/null +++ b/test/web/admin_api/controllers/instance_document_controller_test.exs @@ -0,0 +1,112 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.InstanceDocumentControllerTest do + use Pleroma.Web.ConnCase, async: true + import Pleroma.Factory + alias Pleroma.Config + + @dir "test/tmp/instance_static" + @default_instance_panel ~s(

Welcome to Pleroma!

) + + setup do + File.mkdir_p!(@dir) + on_exit(fn -> File.rm_rf(@dir) end) + end + + setup do: clear_config([:instance, :static_dir], @dir) + + setup do + admin = insert(:user, is_admin: true) + token = insert(:oauth_admin_token, user: admin) + + conn = + build_conn() + |> assign(:user, admin) + |> assign(:token, token) + + {:ok, %{admin: admin, token: token, conn: conn}} + end + + describe "GET /api/pleroma/admin/instance_document/:name" do + test "return the instance document url", %{conn: conn} do + conn = get(conn, "/api/pleroma/admin/instance_document/instance-panel") + + assert %{"url" => url} = json_response_and_validate_schema(conn, 200) + index = get(build_conn(), url) + response = html_response(index, 200) + assert String.contains?(response, @default_instance_panel) + end + + test "it returns 403 if requested by a non-admin" do + non_admin_user = insert(:user) + token = insert(:oauth_token, user: non_admin_user) + + conn = + build_conn() + |> assign(:user, non_admin_user) + |> assign(:token, token) + |> get("/api/pleroma/admin/instance_document/instance-panel") + + assert json_response(conn, :forbidden) + end + + test "it returns 404 if the instance document with the given name doesn't exist", %{ + conn: conn + } do + conn = get(conn, "/api/pleroma/admin/instance_document/1234") + + assert json_response_and_validate_schema(conn, 404) + end + end + + describe "PATCH /api/pleroma/admin/instance_document/:name" do + test "uploads the instance document", %{conn: conn} do + image = %Plug.Upload{ + content_type: "text/html", + path: Path.absname("test/fixtures/custom_instance_panel.html"), + filename: "custom_instance_panel.html" + } + + conn = + conn + |> put_req_header("content-type", "multipart/form-data") + |> patch("/api/pleroma/admin/instance_document/instance-panel", %{ + "file" => image + }) + + assert %{"url" => url} = json_response_and_validate_schema(conn, 200) + index = get(build_conn(), url) + assert html_response(index, 200) == "

Custom instance panel

" + end + end + + describe "DELETE /api/pleroma/admin/instance_document/:name" do + test "deletes the instance document", %{conn: conn} do + File.mkdir!(@dir <> "/instance/") + File.write!(@dir <> "/instance/panel.html", "Custom instance panel") + + conn_resp = + conn + |> get("/api/pleroma/admin/instance_document/instance-panel") + + assert %{"url" => url} = json_response_and_validate_schema(conn_resp, 200) + index = get(build_conn(), url) + assert html_response(index, 200) == "Custom instance panel" + + conn + |> delete("/api/pleroma/admin/instance_document/instance-panel") + |> json_response_and_validate_schema(200) + + conn_resp = + conn + |> get("/api/pleroma/admin/instance_document/instance-panel") + + assert %{"url" => url} = json_response_and_validate_schema(conn_resp, 200) + index = get(build_conn(), url) + response = html_response(index, 200) + assert String.contains?(response, @default_instance_panel) + end + end +end From f58262c673616661baf9750c216a07d239ae99c3 Mon Sep 17 00:00:00 2001 From: stwf Date: Thu, 17 Sep 2020 09:48:17 -0400 Subject: [PATCH 254/460] add description to changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75357f05e..a7a4f08ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Renamed `:await_up_timeout` in `:connections_pool` namespace to `:connect_timeout`, old name is deprecated. - Renamed `:timeout` in `pools` namespace to `:recv_timeout`, old name is deprecated. +- The `discoverable` field in the `User` struct will now add a NOINDEX metatag to profile pages when false. ### Removed From c711a2b15761db9d2d30035e9fee0783f0bf77b0 Mon Sep 17 00:00:00 2001 From: eugenijm Date: Thu, 17 Sep 2020 16:54:38 +0300 Subject: [PATCH 255/460] Return the file content for `GET /api/pleroma/admin/instance_document/:document_name` --- docs/API/admin_api.md | 12 ++++++------ .../controllers/instance_document_controller.ex | 8 ++++++-- .../admin/instance_document_operation.ex | 9 ++++++++- lib/pleroma/web/instance_document.ex | 2 +- .../instance_document_controller_test.exs | 16 +++++----------- 5 files changed, 26 insertions(+), 21 deletions(-) diff --git a/docs/API/admin_api.md b/docs/API/admin_api.md index eba92dd1f..7992db58f 100644 --- a/docs/API/admin_api.md +++ b/docs/API/admin_api.md @@ -1458,23 +1458,23 @@ Loads json generated from `config/descriptions.exs`. ## `GET /api/pleroma/admin/instance_document/:document_name` -### Gets an instance document +### Get an instance document - Authentication: required - Response: -``` json -{ - "url": "https://example.com/instance/panel.html" -} +Returns the content of the document + +```html +

Instance panel

``` ## `PATCH /api/pleroma/admin/instance_document/:document_name` - Params: - `file` (the file to be uploaded, using multipart form data.) -### Updates an instance document +### Update an instance document - Authentication: required diff --git a/lib/pleroma/web/admin_api/controllers/instance_document_controller.ex b/lib/pleroma/web/admin_api/controllers/instance_document_controller.ex index 2144e44ac..504d9b517 100644 --- a/lib/pleroma/web/admin_api/controllers/instance_document_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/instance_document_controller.ex @@ -5,6 +5,7 @@ defmodule Pleroma.Web.AdminAPI.InstanceDocumentController do use Pleroma.Web, :controller + alias Pleroma.Plugs.InstanceStatic alias Pleroma.Plugs.OAuthScopesPlug alias Pleroma.Web.InstanceDocument @@ -18,8 +19,11 @@ defmodule Pleroma.Web.AdminAPI.InstanceDocumentController do plug(OAuthScopesPlug, %{scopes: ["write"], admin: true} when action in [:update, :delete]) def show(conn, %{name: document_name}) do - with {:ok, url} <- InstanceDocument.get(document_name) do - json(conn, %{"url" => url}) + with {:ok, url} <- InstanceDocument.get(document_name), + {:ok, content} <- File.read(InstanceStatic.file_path(url)) do + conn + |> put_resp_content_type("text/html") + |> send_resp(200, content) end end diff --git a/lib/pleroma/web/api_spec/operations/admin/instance_document_operation.ex b/lib/pleroma/web/api_spec/operations/admin/instance_document_operation.ex index e0eb993fb..a120ff4e8 100644 --- a/lib/pleroma/web/api_spec/operations/admin/instance_document_operation.ex +++ b/lib/pleroma/web/api_spec/operations/admin/instance_document_operation.ex @@ -26,7 +26,7 @@ def show_operation do | Helpers.admin_api_params() ], responses: %{ - 200 => Operation.response("InstanceDocument", "application/json", instance_document()), + 200 => document_content(), 400 => Operation.response("Bad Request", "application/json", ApiError), 403 => Operation.response("Forbidden", "application/json", ApiError), 404 => Operation.response("Not Found", "application/json", ApiError) @@ -105,4 +105,11 @@ defp instance_document do } } end + + defp document_content do + Operation.response("InstanceDocumentContent", "text/html", %Schema{ + type: :string, + example: "

Instance panel

" + }) + end end diff --git a/lib/pleroma/web/instance_document.ex b/lib/pleroma/web/instance_document.ex index 969a44e41..df5caebf0 100644 --- a/lib/pleroma/web/instance_document.ex +++ b/lib/pleroma/web/instance_document.ex @@ -14,7 +14,7 @@ defmodule Pleroma.Web.InstanceDocument do @spec get(String.t()) :: {:ok, String.t()} | {:error, atom()} def get(document_name) do case Map.fetch(@instance_documents, document_name) do - {:ok, path} -> {:ok, Path.join(Endpoint.url(), path)} + {:ok, path} -> {:ok, path} _ -> {:error, :not_found} end end diff --git a/test/web/admin_api/controllers/instance_document_controller_test.exs b/test/web/admin_api/controllers/instance_document_controller_test.exs index 60dcc9dff..5f7b042f6 100644 --- a/test/web/admin_api/controllers/instance_document_controller_test.exs +++ b/test/web/admin_api/controllers/instance_document_controller_test.exs @@ -33,10 +33,8 @@ defmodule Pleroma.Web.AdminAPI.InstanceDocumentControllerTest do test "return the instance document url", %{conn: conn} do conn = get(conn, "/api/pleroma/admin/instance_document/instance-panel") - assert %{"url" => url} = json_response_and_validate_schema(conn, 200) - index = get(build_conn(), url) - response = html_response(index, 200) - assert String.contains?(response, @default_instance_panel) + assert content = html_response(conn, 200) + assert String.contains?(content, @default_instance_panel) end test "it returns 403 if requested by a non-admin" do @@ -91,9 +89,7 @@ test "deletes the instance document", %{conn: conn} do conn |> get("/api/pleroma/admin/instance_document/instance-panel") - assert %{"url" => url} = json_response_and_validate_schema(conn_resp, 200) - index = get(build_conn(), url) - assert html_response(index, 200) == "Custom instance panel" + assert html_response(conn_resp, 200) == "Custom instance panel" conn |> delete("/api/pleroma/admin/instance_document/instance-panel") @@ -103,10 +99,8 @@ test "deletes the instance document", %{conn: conn} do conn |> get("/api/pleroma/admin/instance_document/instance-panel") - assert %{"url" => url} = json_response_and_validate_schema(conn_resp, 200) - index = get(build_conn(), url) - response = html_response(index, 200) - assert String.contains?(response, @default_instance_panel) + assert content = html_response(conn_resp, 200) + assert String.contains?(content, @default_instance_panel) end end end From db80b9d630f9fc72ebc269cb24142501116c269a Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 17 Sep 2020 16:13:21 +0300 Subject: [PATCH 256/460] RichMedia: Fix log spam on failures and resetting TTL on cached errors --- lib/pleroma/web/rich_media/parser.ex | 67 +++++++++++++++++++--------- 1 file changed, 46 insertions(+), 21 deletions(-) diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex index 33f6f1fa1..c70d2fdba 100644 --- a/lib/pleroma/web/rich_media/parser.ex +++ b/lib/pleroma/web/rich_media/parser.ex @@ -20,36 +20,61 @@ def parse(url) do with {:ok, data} <- get_cached_or_parse(url), {:ok, _} <- set_ttl_based_on_image(data, url) do {:ok, data} - else - {:error, {:invalid_metadata, data}} = e -> - Logger.debug(fn -> "Incomplete or invalid metadata for #{url}: #{inspect(data)}" end) - e - - error -> - Logger.error(fn -> "Rich media error for #{url}: #{inspect(error)}" end) - error end end defp get_cached_or_parse(url) do - case Cachex.fetch!(:rich_media_cache, url, fn _ -> {:commit, parse_url(url)} end) do - {:ok, _data} = res -> - res + case Cachex.fetch(:rich_media_cache, url, fn -> + case parse_url(url) do + {:ok, _} = res -> + {:commit, res} - {:error, :body_too_large} = e -> - e + {:error, reason} = e -> + # Unfortunately we have to log errors here, instead of doing that + # along with ttl setting at the bottom. Otherwise we can get log spam + # if more than one process was waiting for the rich media card + # while it was generated. Ideally we would set ttl here as well, + # so we don't override it number_of_waiters_on_generation + # times, but one, obviously, can't set ttl for not-yet-created entry + # and Cachex doesn't support returning ttl from the fetch callback. + log_error(url, reason) + {:commit, e} + end + end) do + {action, res} when action in [:commit, :ok] -> + case res do + {:ok, _data} = res -> + res - {:error, {:content_type, _}} = e -> - e + {:error, reason} = e -> + if action == :commit, do: set_error_ttl(url, reason) + e + end - # The TTL is not set for the errors above, since they are unlikely to change - # with time - {:error, _} = e -> - ttl = Pleroma.Config.get([:rich_media, :failure_backoff], 60_000) - Cachex.expire(:rich_media_cache, url, ttl) - e + {:error, e} -> + {:error, {:cachex_error, e}} end end + + defp set_error_ttl(_url, :body_too_large), do: :ok + defp set_error_ttl(_url, {:content_type, _}), do: :ok + + # The TTL is not set for the errors above, since they are unlikely to change + # with time + + defp set_error_ttl(url, _reason) do + ttl = Pleroma.Config.get([:rich_media, :failure_backoff], 60_000) + Cachex.expire(:rich_media_cache, url, ttl) + :ok + end + + defp log_error(url, {:invalid_metadata, data}) do + Logger.debug(fn -> "Incomplete or invalid metadata for #{url}: #{inspect(data)}" end) + end + + defp log_error(url, reason) do + Logger.warn(fn -> "Rich media error for #{url}: #{inspect(reason)}" end) + end end @doc """ From 7cdbd91d83c02a79c22783ca489ef82e82b31a51 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Thu, 17 Sep 2020 17:13:40 +0300 Subject: [PATCH 257/460] [#2497] Configurability of :min_content_length (preview proxy). Refactoring, documentation, tests. --- config/config.exs | 3 +- config/description.exs | 12 +- docs/configuration/cheatsheet.md | 8 + lib/pleroma/helpers/media_helper.ex | 1 + .../web/media_proxy/media_proxy_controller.ex | 90 +++--- test/fixtures/image.gif | Bin 0 -> 1001718 bytes test/fixtures/image.png | Bin 0 -> 104426 bytes .../media_proxy_controller_test.exs | 278 +++++++++++++++++- 8 files changed, 329 insertions(+), 63 deletions(-) create mode 100755 test/fixtures/image.gif create mode 100755 test/fixtures/image.png diff --git a/config/config.exs b/config/config.exs index 2ca2236a9..98c31ef86 100644 --- a/config/config.exs +++ b/config/config.exs @@ -444,7 +444,8 @@ enabled: false, thumbnail_max_width: 600, thumbnail_max_height: 600, - image_quality: 85 + image_quality: 85, + min_content_length: 100 * 1024 config :pleroma, :chat, enabled: true diff --git a/config/description.exs b/config/description.exs index 79e3cc259..4a5d5f2ea 100644 --- a/config/description.exs +++ b/config/description.exs @@ -1961,17 +1961,25 @@ %{ key: :thumbnail_max_width, type: :integer, - description: "Max width of preview thumbnail." + description: + "Max width of preview thumbnail for images (video preview always has original dimensions)." }, %{ key: :thumbnail_max_height, type: :integer, - description: "Max height of preview thumbnail." + description: + "Max height of preview thumbnail for images (video preview always has original dimensions)." }, %{ key: :image_quality, type: :integer, description: "Quality of the output. Ranges from 0 (min quality) to 100 (max quality)." + }, + %{ + key: :min_content_length, + type: :integer, + description: + "Min content length to perform preview, in bytes. If greater than 0, media smaller in size will be served as is, without thumbnailing." } ] }, diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index 054b8fe43..d7c342383 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -314,6 +314,14 @@ This section describe PWA manifest instance-specific values. Currently this opti * `enabled`: Enables purge cache * `provider`: Which one of the [purge cache strategy](#purge-cache-strategy) to use. +## :media_preview_proxy + +* `enabled`: Enables proxying of remote media preview to the instance’s proxy. Requires enabled media proxy (`media_proxy/enabled`). +* `thumbnail_max_width`: Max width of preview thumbnail for images (video preview always has original dimensions). +* `thumbnail_max_height`: Max height of preview thumbnail for images (video preview always has original dimensions). +* `image_quality`: Quality of the output. Ranges from 0 (min quality) to 100 (max quality). +* `min_content_length`: Min content length to perform preview, in bytes. If greater than 0, media smaller in size will be served as is, without thumbnailing. + ### Purge cache strategy #### Pleroma.Web.MediaProxy.Invalidation.Script diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index 9b7348ee2..b6f35a24b 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -58,6 +58,7 @@ defp prepare_image_resize_args(%{max_width: max_width, max_height: max_height} = defp prepare_image_resize_args(_), do: {:error, :missing_options} + # Note: video thumbnail is intentionally not resized (always has original dimensions) def video_framegrab(url) do with executable when is_binary(executable) <- System.find_executable("ffmpeg"), {:ok, env} <- HTTP.get(url, [], pool: :media), diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index fe279e964..90651ed9b 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -12,8 +12,6 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do alias Pleroma.Web.MediaProxy alias Plug.Conn - @min_content_length_for_preview 100 * 1024 - def remote(conn, %{"sig" => sig64, "url" => url64}) do with {_, true} <- {:enabled, MediaProxy.enabled?()}, {:ok, url} <- MediaProxy.decode_url(sig64, url64), @@ -37,7 +35,8 @@ def remote(conn, %{"sig" => sig64, "url" => url64}) do def preview(%Conn{} = conn, %{"sig" => sig64, "url" => url64}) do with {_, true} <- {:enabled, MediaProxy.preview_enabled?()}, - {:ok, url} <- MediaProxy.decode_url(sig64, url64) do + {:ok, url} <- MediaProxy.decode_url(sig64, url64), + :ok <- MediaProxy.verify_request_path_and_url(conn, url) do handle_preview(conn, url) else {:enabled, false} -> @@ -59,8 +58,25 @@ defp handle_preview(conn, url) do content_type = Tesla.get_header(head_response, "content-type") content_length = Tesla.get_header(head_response, "content-length") content_length = content_length && String.to_integer(content_length) + static = conn.params["static"] in ["true", true] - handle_preview(content_type, content_length, conn, media_proxy_url) + cond do + static and content_type == "image/gif" -> + handle_jpeg_preview(conn, media_proxy_url) + + static -> + drop_static_param_and_redirect(conn) + + content_type == "image/gif" -> + redirect(conn, external: media_proxy_url) + + min_content_length_for_preview() > 0 and content_length > 0 and + content_length < min_content_length_for_preview() -> + redirect(conn, external: media_proxy_url) + + true -> + handle_preview(content_type, conn, media_proxy_url) + end else # If HEAD failed, redirecting to media proxy URI doesn't make much sense; returning an error {_, %{status: status}} -> @@ -74,58 +90,27 @@ defp handle_preview(conn, url) do end end - defp handle_preview( - "image/gif" = _content_type, - _content_length, - %{params: %{"static" => static}} = conn, - media_proxy_url - ) - when static in ["true", true] do - handle_jpeg_preview(conn, media_proxy_url) - end - - defp handle_preview( - _content_type, - _content_length, - %{params: %{"static" => static}} = conn, - _media_proxy_url - ) - when static in ["true", true] do - uri_without_static_param = UriHelper.modify_uri_params(current_url(conn), %{}, ["static"]) - redirect(conn, external: uri_without_static_param) - end - - defp handle_preview("image/gif" = _content_type, _content_length, conn, media_proxy_url) do - redirect(conn, external: media_proxy_url) - end - - defp handle_preview("image/" <> _ = _content_type, content_length, conn, media_proxy_url) - when is_integer(content_length) and content_length > 0 and - content_length < @min_content_length_for_preview do - redirect(conn, external: media_proxy_url) - end - - defp handle_preview("image/png" <> _ = _content_type, _content_length, conn, media_proxy_url) do + defp handle_preview("image/png" <> _ = _content_type, conn, media_proxy_url) do handle_png_preview(conn, media_proxy_url) end - defp handle_preview("image/" <> _ = _content_type, _content_length, conn, media_proxy_url) do + defp handle_preview("image/" <> _ = _content_type, conn, media_proxy_url) do handle_jpeg_preview(conn, media_proxy_url) end - defp handle_preview("video/" <> _ = _content_type, _content_length, conn, media_proxy_url) do + defp handle_preview("video/" <> _ = _content_type, conn, media_proxy_url) do handle_video_preview(conn, media_proxy_url) end - defp handle_preview(_unsupported_content_type, _content_length, conn, media_proxy_url) do + defp handle_preview(_unsupported_content_type, conn, media_proxy_url) do fallback_on_preview_error(conn, media_proxy_url) end defp handle_png_preview(conn, media_proxy_url) do quality = Config.get!([:media_preview_proxy, :image_quality]) + {thumbnail_max_width, thumbnail_max_height} = thumbnail_max_dimensions() - with {thumbnail_max_width, thumbnail_max_height} <- thumbnail_max_dimensions(), - {:ok, thumbnail_binary} <- + with {:ok, thumbnail_binary} <- MediaHelper.image_resize( media_proxy_url, %{ @@ -146,9 +131,9 @@ defp handle_png_preview(conn, media_proxy_url) do defp handle_jpeg_preview(conn, media_proxy_url) do quality = Config.get!([:media_preview_proxy, :image_quality]) + {thumbnail_max_width, thumbnail_max_height} = thumbnail_max_dimensions() - with {thumbnail_max_width, thumbnail_max_height} <- thumbnail_max_dimensions(), - {:ok, thumbnail_binary} <- + with {:ok, thumbnail_binary} <- MediaHelper.image_resize( media_proxy_url, %{max_width: thumbnail_max_width, max_height: thumbnail_max_height, quality: quality} @@ -174,6 +159,15 @@ defp handle_video_preview(conn, media_proxy_url) do end end + defp drop_static_param_and_redirect(conn) do + uri_without_static_param = + conn + |> current_url() + |> UriHelper.modify_uri_params(%{}, ["static"]) + + redirect(conn, external: uri_without_static_param) + end + defp fallback_on_preview_error(conn, media_proxy_url) do redirect(conn, external: media_proxy_url) end @@ -189,7 +183,7 @@ defp put_preview_response_headers( end defp thumbnail_max_dimensions do - config = Config.get([:media_preview_proxy], []) + config = media_preview_proxy_config() thumbnail_max_width = Keyword.fetch!(config, :thumbnail_max_width) thumbnail_max_height = Keyword.fetch!(config, :thumbnail_max_height) @@ -197,6 +191,14 @@ defp thumbnail_max_dimensions do {thumbnail_max_width, thumbnail_max_height} end + defp min_content_length_for_preview do + Keyword.get(media_preview_proxy_config(), :min_content_length, 0) + end + + defp media_preview_proxy_config do + Config.get!([:media_preview_proxy]) + end + defp media_proxy_opts do Config.get([:media_proxy, :proxy_opts], []) end diff --git a/test/fixtures/image.gif b/test/fixtures/image.gif new file mode 100755 index 0000000000000000000000000000000000000000..9df64778b72095084f03e1dcb7b57273e58ce8db GIT binary patch literal 1001718 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%0D1hM&QC7wz5c%f38fi7Bwvmy8~`sEai0w+ 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௣v1hJBPF5c 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 z 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�QG&wD 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�ByV>e2S-`%F--51{ytKS&C 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�>{G1-|&tqR%Hmf zY-MaiDK&n}&*N0xzx!r)IVFJPE=XB>n~i+*C_vC<
*hG6ef0Jgo5?^SF`@ss%q z*B>pfH!d58yT8?V$f?Wz2-+J#l|ld)*okjnUT|X;oK~2Obflemi0c+L@GFBJ0Jh}F z@iH)QC6s4#Kk6ib1rn5XH+CB`+38OmI7r}&(Zj_sDI5RPWSjRm%wLN1p@5b z-w2nr_x9Ryu{*8M@8ErnjV!p?CE4rYQxTO{qOWQ~xQ~E^{Eg2ymw7CEKSeD&`iQ~A zwPEfL_d)aj*5AMQ(;2Z5z44YkUzZ1M8U3`G^#6s+I6ztzI1BLpKjHE(0&CPp8A?E~ zNnV?5s~$;#Y?BCEE{G9%3@jSh#MMsR!Re-BjXUa$b8z3#Lqo?Yrgvd-LLzRg)TuJn zP`YsWQji{#nM8;_N@}Q*_n?V;{9obHWD{4B9wu&?6C3?M;qv~~ix-_b)1J~Xva z!3y)7XM;sp#oh*u%TTZ$Just^jK5JdSVVNtP?CVadM_<}oj;dGyxZa`yI$cLN*FCXDwE{G6&@wsMGK zU2fPiBXD-0iCPyM3!k_L5{2?M7JeXaX7h1zL zQce?D%{5&c!nEjfkO++oa`2D&w<=c9#ds=tzxsGq(EEO9BuO_!GI8HKED@wkL!Q+=gmfNy%mtLFPF<5zWH92P?Xut!LfvEI(LWP=#w%*}le_%DN7 zT+rGNLxdpK^nAxmIug{0341Zt!Rw7bq(%!K!J=2swFEG3=kWzn-l%K7< z3V^*ewR?8*UrPT(hopQNM{wG;jeo5${QNWJ*J^*j$c9z$(FlXe#QKojKRUO0_80%q z6A|a?xWjK-pFTgGe)k}zbKuoQ3^-Kt%P1Ed;~W|=DmBC<1SE1k5kzzDQ(>~WfjPOh z(C2>faotx^r0wu1n_kM?;8FD%Mv;IHKC@LQxOZ?W@a8wGD e`GSG-aZVPie{2mH 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

?5N5tW-=}iY40#26%2Q(G@ruHWIH-p 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

*J)m_>`&?yy2p03*vC##1V$vx;k}@iIYsvf) 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�=H-}H-1 z+>e}ta{D>f36m)>msWOqVL@zPsH)`=Aaim4trosMQ8DLQT=us>`F{eSuYh;1mnxT6 z@JmeLp8<9L#b@||ig^LfTS_~dNu(${yOj3DM+|O$Q7%GUKR--LlM5Ug#J+bf0OZ9> z*+94K?s+%6roN6hKliUeITjZF7l8R4Q2!b_8n_aDl7OAfmAdZ3pSMb1%c|;uQgDt^ zWbOvjzWoRi1l7R&31F^Z84Zho?%7&u?yOSo{Hmu_a=3luK1U&TKw~oq+&%tFue<{0rakLqlsuo|qgi?-jeSJnM59N@`&~R1*6h^&zs6I7;Ypd=Qck&I`kx z8yO`3WGed@>*7%V0J43p2YoxE`36w$H%7j2Lb!>>|A!>tu~9Mq8aQ8}w1*dpS=D^Z zGroCYTO6#7m2+z=hlRyM<&kWECA;!Jikru>vb+uD&|S_Vn3we=eqrr+XPtR4DLD zpvUnXpVvcllc+xZ87OzaeAEi?FD=_x3;Jo+HLGGhiyUKbc?V|8{_;R&w{~F+fct!h zTBvKZRCX*VVlM&nnJtwPfyatrTtxa?7+u@6^~h8f6b)xLZt7MMRq zN(Mk>IvsfDom&i)Bt)UOM142+sycXN;zJ}kAl^aMx0EKDRb7V!=1$zMnjc)SJ6??E zmcjW9m;>*D_`eLyzYEaUvB4ZSZ-C>uC-EzEcod7EBMy`C!Vt#*?HNVId+F)H!Z%YL3TQsEhfmlgW z^b7uKl{{=9p2Chg`S?n2IRv;Kqe;6L6<5^saR#cq0}H81F$3$iT7D@yTV-dI3(#4K zrcs_(c26vT@uN#LsQzb!Fxe*C8hbh_5StXJ7Qr~`Bq7D`Sg=4ILXE$+UGud*rqyPY zz2d*w54P!gL1?U1?6^7{QCF9B%~DR zWz&N%-^E#hXRNLV+oiLGp?SAeb^a}2zT)H=Xv%zK^p0vxlzuc&xj~hg4U-KxAWdaek+jl>ez#(;Is zc(N$72jjay{)YhbuL5*DZDLTSF*`GikOpE`0npKWRSD!Pi+s6oAygRn&)#L#kF5Md z^F?v#Sn*{bytBJz%hHlUwEX)5nxSIBfO9H@AV91?7u;f|1X-Z2sx{m34RddsRA9C(u^;oRtd^1lzJ#o5n2o`1+CQ;tG-UT}+F1%C6 zCbw0`0+d6Xz7-@xW$9$Biz*NWhe;jabqWkt+zTW1u@jyR0CQm+{=3()k>NIhqCegf zO72QId>qaGgQ^7=J{db!3k?X zO_N(mo|8mTm;Q63D4$`A7q}_(ioKz>vKUkRKK_BbpLqDW>EeXLCk(2`@)m`ClGj$R zALD)o#0{uml8XmzJWI26>nldU1n01(89T@0v;wQYd!$M<0*I%y7*kK+^4E4T6*2&f zxmfya1d?Ala-48gp5c49!~W?7@Q~ik!Fb;S;9iM_yO-T5-;3mei!&cL5Ow)$W>8Ot z^PaQm;eEjQ+b-?yBPV^z%Jr!;C;JodewdjR?t^E-;|WO4%DS^k49_ga@kykx0QYGu z+Hjv6d>78cuY=7|7$)gb{P$*1`TvX$I{)-JVYM_x6^KM)Eo*Qo1ZIGFT>b$h+<=tj zWbP*~r~CjmkAft#f@*Aak8eDu{#_(N3Q(y8~o%@34$Ctj&iCh(~a;8S`K z;Qf!DLKKSYqM`Hst*G1|#TJpN*G*CZeU1*pC(@$L87gUPwIpCd9~8a)HhH23OZ==# z&M_pRV)~UcU=A1nNB5qz_#v0n*gxH04sl$B1pNulkKu*iZUt?>OWwj?9F-Hh?cjm= z`0)gghaE9^ij@V`?X2z&(O>S>$kjSS2L#2A&$#I#gWF*%ss345>#|(L;_clXfbXej zju0c>Rdl6Cl#4N=NFdmEg~I>)_h%pUDS*=QEP(!zC*^Vd*H5%#gxHifphYS^(Gw3% zwp>-ruVV+wQ+yXWiDQ$EEcBmrgczTRoQM!(bF;r3RcwugppFX*@V7wuhuGC$qPX+5 zJ0Q#8KMrFCf5i0SsL!%YOXp`F{O)P-w_k_Yh|{yR@1d%~SJoZ0nZU`yTY+#Tz|ky3 zD?Rb6;C$&hwwxTiK2SQqx@ew`)lp{j(4i{oDeOAo@KE_4EfxE$;+?ip9IE~3Vf(@d3a~x;-rMFm zo|Vm3dlR_|U9bvkIyG`{c)Zqb4lAIS!7?WSkg7VvMYjyVmChW*!j8{naLTvOZ?be4}SjM^ERbpq% z0RN&9;Z6?3t)c?v;|a`NCAlT_JLA$EY-}Gvhf$W;F+~!OB;LE|^ z9$2HYAyXCeAtKZcEayo*1?DT@yr`OA{G$b%w~qqzmj(t$i8fvt6xbXZ_|Q0d@i^}? zOYp@x$c1yPSU0_t&|T@j1=h~j0se_C7$v>hsI3bdGu5X(D&J((i2{xuyn8TV!4d;~ z-fzHUSHjG;l))*QaDQKD%IzI=zNx%-Q^Bn|4)e1N!a))5NKow8448_! zr1i>Ft1?S%FBO|j`0EUL@ow5t041JWAYy}hqm7eS1xE* zKxzk=rwaBWFz@SAmFnmnFu$&WiDG>Esoy=+8n7loy2-Oo zqHqh;^;bc;eISp5V&8q&#hGZvk%+wNF$>3>AXLp5@_1z*_}gGy1sBRAJoG_pn4GBJ zcgx(SWZ7z!{JD9uTeCSyuoOW5oVSi8VTJr`MO(x{5tys@Cr!Ta2dv+9S2U1(p+jk* zzg&$&OVNH94U7{s`xFv=>mGfTzlIcl5*8=R=q%`3D*G9q5K+ucXg^;5*&D$8`LeEb zj9DZ+FpmOr^gZxFW!=6%PdATrXoQNn2j7T5e&~w10_MIl9s0Cm#k>IK$91ltsbj0| z9WYP5;A_BqFbLE|?I3aun2SV+Ub>C2o(lYwZ~4m=^F^l~%;#-)oqr9Sf0!}-sXt%$ zLC3~}>=)-|X;;0I;p|jkJp@#975Fa>7<_oZy$H$^Fz+&Eoqb0K!dJoZ5~Y3Al=fGv z=JK9bb!VG40p%|Na#gen&#hB2PjOZf zD-*#~g1Ba3u z?twX;B5q8a7Yn{2V$V+jbJwe{#LrB{JOT3&sN`cTSIki)JygY9wuG(%^Cosqz`X1S zADQhitC&x7kwS(WVyvN?w@RRSGrIe9#r)G?`~%1P9>x8Ii<1Dk^?xmvb)k?__OPq| z_2!zsX07%`$>|XL=?>ec*gGxtLLZR>+>^Y_nbHn2+_%((*181M!ORd;1H@zN||WE zziNoF2(|>VB;>|!{6UU|VRR6jXW?dQNeg7QRVx3vEV%;^&%2*+r@I|zHO8nCjAC`x8T>1)0K%o9L1 zVa9~gzFjrnqO-47%mW`0FRly=6xOdU6r3z<-{zTrdp^CmF7egpE`6g%wJmnZZ~44{*` zOMskXDte{>Ji|U_ou_4IFS2+Zp)2BcExV72xuuOTWu{1csdt2KAy9&Kt&s)=X!Q^f z2i_=Ml!fdlK%(tJhXLm59Acp61&CnY2#(NAOsFVuvMX>O%K|5x==4R4loq&dSh@dS{WZYh=nvWrS zY3u^cH^4bYp@}f+|UUYmn?f5Cb6_xu?P-K*zZp}X6m zAZg?j!8h|-f>nyN07A;cTdk`W*xdlp(zj722b{V#EXW(yZOlKn!^C>eYA>u+8a*Jt zf%i?*xq+&sU-$P-L1DKcx(AVg`l~>Z^Xb0rm>ADrtp5*WCp(NM%3M@OCqY%+0&T?1Ez?>r>-&&>3W0|tbFWg>to3yH;rE3q@E zlMi zz}&=lfewCIu7w!zkBHlIeK6|gysXkPFu#1t1vMO34|aYggG}$z3a2sjP#=Q6PV@Im z_$^F01Yk}9jt?6%Jwjq(1Yy4@h(|BTc0B)X3x4kWF=iFo#q|cm1MxX@47|R!1 zUB_ZZrkSV8;jvj_=B*?b@by|)!TtOup2-6FmMsdgZ6Ld zy&v@Z{Oy+=K`ql9O@Q=SWzUI%aaXa+);r&FXwztC&I!~pZA=o}=djd!12l1i=Ochn zOu%<~KdPrYBoHpEv(qD;{+YNQa{)TFBKw~cT~zk!Is`!07H^?~&j`-XYwa4je#Oo49+6;?VIT9zA)l|(<0&^7K_f{0|fb+G1%Jp%a0!7Nj zsm(;H%+}^w!*}}7S3Yxu%qgHVsQB(;_0^;RCigGK0h{0DVYId*BA!JuThz!@_`ikzD0Mdw~?t zMW-cTd&R@@c7*ApeAnr}=i*=FtU={Lt+EzTn}A|`F((TyICE6%MUym! zxqyS46F(WJEs46N`5wXQs0Ec1Mz1s$#+?9Ddiq2@+VA-RVL$c!-T$#kEi%L=C-C-7 z5g2|9S!T)E4-BLE@F6oyN*a7s`eh4c`q>@12`;_s#Sn_N^` zZ0>d}X>bls>Xa=w-=U}L8H^qAw@>wmub%Ql@#(i1(_iaBpXkc$J+Nv=L=%6+ue9G| zIXci#zu8sV-N5{2NwIEZ1p5$5PUx=iu!1{Zs+wa?TVJtpd&xSj8K|^_s!&snD?Zuu zE4~lPUjpMxKs{t>Q=Xy8NxV!PhmgTk;YC;{OEGvKw4hyc&+Y@L8A^1u=~Dq&?A0TEqB{* zO48A9&G0#U$QUGho-2{K>RIaa_4zIuo+MO&dPYEAw8$~gmxs3sQyTyzFu$LSv;R7uM*&cy>b(T!mFoEU^M}9IGufdE zE-;^wah0wDh&aQ+usV}FO@K6GNR#f~cvnUn8A#@)-`n~lg? z;eE$Q`c;r3^4IKcspo>yvURv)ZfL7bW>B8(ZDy(F65z_8p_A_PgJsPq?6IFYK-# zqfO|P;%(=#X@Y)K6~PDyHK?w>>nnULKkGcn;o+sCvD;_!z-R^9Zh*y0?cD=aKW`uL zJr%ems-<^H6i+7(J@~`-n`=*VxL$ZG))pMg1Sqd9%_sqPH^$j4^Ew0mm^wFbXd+rz zsE#!to{!EjW)}L#k&_xMRRz)1eW9F#xKHx8w7ZpR(3Wq1zChpbS z>gO&z%#)h7%mOp~XA_u*%CCDa^t61hlwRCVuoh#8>mA??z&^&7^7=x>9F+OH3v@fx zcoP>MDz>ye=IS~XFmJL(7Mw#QQf4aYiArB>G-AADVBW{W(<0T3%C2H8c0nda&uH=U zIHlkCX7Tcis_bt8@(*3d-w}z!CR}|-SZad3@X9$;c3+=hwa=ob&95f}>ac-p*{_!~ zZ5zN`UXEATOj%`e>6*($X=~AfYtIPvzzR#7O^0APN!~&o%yvunA@U{xd8(^Liks@VptL0ZE z5`~~w0nE8nEze?V6!Y-9?&jG$PwaDvYTgIKwM_whd5p74Dv~Hc#s1=sR@1#pK(&i> zfYYcaTOYWns<>Dvz=e$_N@=|s{6OoTf-u#WAS*#&KU%o!_Gu?pfw z!7|3fb{x-Q)8Dl}~TV2 zHI>5=sY>rZP}HlzE1>+Fz+8dkv|yvm9?pRI{G1&G#_-kQ*(;q@%$os?8Z=LHPOGev z@^gJV2B(9gcqqrtV*cgq=to69Hhk$Zc?6wT`Ru)|RLjS3RW80$EiV!eOTe6h#tuKX z9`;%UFn1t(0hr$)o^m5!?JG~J>BoDZ+<_OwYP_v7o)vQI9vxl;B>e5G<88)L1Uv$c zu|in>6U`V#djCBbrvQ{=U&u{W#|yBYEbGB^F2FOCDlWJU1YprxbnWRm`~r%vr?L zI?1D!z_b~plwvmp+XOVx>bn={Vl!) z$mP!p3&EIlD1kjUGYlV~!0^q*5Favc#|vP5C4o45pV$NC(Ysu3M9_V~RS&l8FE5N} zfB)1dvfJpC@b*_q={@zBSMvn5;<>%nu38?c>*b~$s`4xnC283-bLU}z2ZIW@>e5Y$ z^RMvc6th87r;EE%4{%XR#-)Irf>p4j46`gl(E?w zK`YEvb{W85NM|rm*q>fq7(@2AXXlv^^O$4AWZN)`>=28qQ#H51_q2_(ly@@6NHcLa zk#D_w$#b}n7zT{gc-^)r!Flj6zXjyXyGayz56sJoc>&Dpin#&i=Pw^(>)WZAr%d2@ z514M93wGWMhxdHAm?0RJca#10@cZ(7D`&xg>xavy1F2Ia+0A5CRcjZlR~vnx&QUM|05qW%lG!jGntZM;j7W{7*65f zmJlP8ouOaez11C>6mIN<`VEK;D!<$tTHkUe+BwV>-`DY{;z@&|EP3N`3cqm#|8rl# z*Zt+s9hH=@ycD-h3zfO|c()H)kAqvvE`%qF$_^Ww2|F?AMLzzFJr-hV$GCyHYNc?3 zdCr#`LNz{sa8+cnRCdOs1p}@Ad_t6!Y(?K6Q($h!T8teZ6SZ}7jH`QM>O91kfVnD4 zfkiDU1)(+uwsA3E#2oX0F6t5FUi5jqrdmz5#FPIi7=J&A{fc^9fm)rEns!1VLyVJI z`d?hgiZCG7lRx?aVFA3O`0Fa*MF8xx6B@O4Ys6$TK(~;s^qdQy zZQVC(j|=z8QiaQ?vJWuz&?4BZB@kghuPEk-NroKU-=6HEs%>tgOpF*he3|GnUhM#b z9T_CBhozIlT;Ir5WyGY$;HdhVeft0c=+^^*voRMc>MB*r>G*}1=H7bhKK3yI={xZW zI-I?!hG)CSEdU34 zukM)8qOVzBBaUIMw-xa7eq>b^Con&&rI1S?MRaikRG4I-r<}V)rqPeM{jxow&CV^b zG0@GP~bx8Q(zc;Ai!p1*&bNe&JV@C_I`SjUa&d$Nxm z4qV3-C|2N|U7DlcUjXuI_~>_K)qeFiCs|-%I&R7;B6J>! zm>-|j@!_*wN<@m47@G3s7C@)2G9y*UJ?L&?T+}g>n}4S4bpswa7C>~twuMcISM>a**pBYw%me!kx~f za!j;J>uKy2)1O76ES(Dz)|A*9D?7f#oEA%n(r5q?{G9(V03HT3q|paYPj>$fYiI0j zcPij)VS`Hzfp@18ZGDFNox23yWtEmY&AdnX42%}ji1Wc5b#>@~x&K^JV0S$&%vNrp z9$_iq2!sAl#oPmPt9g9TCkUKe;e&3b_~Uv0k=0kQ&KSe7BR5RBheZWw-$ zK*gF0m{*hP(OC><;kb&{-_|KukE0#2Y0L^Euj=!T#W?uY<2J`YnT-7l`08Vo^v_(- zkD<8h$Sinz2Dv zF9LCu=#Yu0QIn#$xPs`eGzKR&j95Wy{2a1;oz+hE2G+9(SG! z$T1mXI2i$eM_?}ZVCJ6k2p%LLF7Ed@&l{646PW@UdNzd72$Wr#1)`kfnwEMgo)z9} zT`?_w44&k}(}1Cfp0TPeZO!h!dVkGy>;XHe4g>oA!WWVV&_xw($L4haTwglxc7~(4 z7v*LC`$&&4&ti3+!pB_3xx(AsCJs0Q<(BzDBZRj$F4AK2N*q7_0w{lFui%@x6|u4E7l=%h{k4|p9^fba&^{pcwzaEN)Q$y8 z{Lz4p4wNTA2stk7=YRmzLKIAK%~UGo&wtDA6j3d&5)XWW^Qu~20`nQ2-%<7d{MJ`D zeUb@7*trSewcGv;De=%HO`QFk=gYb$)Na^70T4w=Qhr^CQ5N=C9|=yd{{3!SP+U@7Fj?dGX@U;s6WchpFlx6AWcc&tLZKe7cex z;{4P_B$?dd1S}T--@WUxJ~l>ipGz^YmH+vh;QUjd{FSQvr@`*WsOsMb<=+SBll`3I zgD;FS4DkM!CWvJN*6n5|QJ<{H;=2Ruoe4uW(bjqI1t>QQ`m{u`QZ;{t%JYe;`DlK> ziYw87`7KahMQ2zPRN}&dQYc-oEi#?L8}Y0&QML(z#PHP+z0rVaNFcQ+%-m)i>sC!Rp}EUArrSB7f3?#P`^gA zefA?$+|h{Hc~5eC{qw|*j|**?54lwL{5j=0`f3c#$=m!06%ok?N-U%^H92_6wk+bhFd`BZ;YtGwYPf1Qv2LoAPNh^OWjYj zHxlkn^Vv04>YpuVWSpYItWG@ReBg~Z(1!pg_zD^5hqoCT^yYBDPQ`t{I zpFr$Hd0bb^a|X)M>|NhKwaPi`IM2B=UiAE;_nkecM%N#*R5^zi3ADdorL#XaKso!Q z*NBPSF<;9*7C!NVVEWx!&Q}2V8zB5YQ$gowi(ciTyOU|b;^3jTZL;K|s?Rj5o;D{W z=b-(sfb*4^L$SFQq7-~BGuJML-vH;BY@|EA=I_$kcY%2~53soq6sp$i^Nbsl?{9(S z53bbPOoIZn&fdYKYL)=yfjKDeH2W+)y7ev(;G+?JlfYb@Pg$N_v*pme*ex*s{X7i1 zF;(Ft;&$Y5XshL{o~P}b$DL%r@RWa7DIc{a!CIA^hQ3}P4^!fE)tSRDa#SuQ9P8|^ z$rxP%;^A2;V7q$kor?HM>M(lRr&X%a7>N{kbfHc0+>_`14k#DfFGfG7FE#kENA_9* z`mC6^rtGf3ZMPOfQb#F#7vch^3V8?mQQX6{w|uMubC?8*w*(sup6QZ~ePtS*A9>|a zc-Unl+=K5SM|!7!gyB#M`huYb(a_j^e2h!bErE0KOcAT`>_Mnga6kV%g4E`tj)PmP zvkI6?I=gw_i;hEY^_gekfAJlG#Q#Q^h97V&eEK^-2ax|gfZkzt9?}3NOxd$6 z`%+S#Z>}01F<4!p#ABYCBBzt?t%1q?k(2w%nZY@S_ifn3Y*4OTV{>s@0q1;SY^(xy z8)-FPo>k44?Szav4qp*=b3M70{nLk5>`pxHCn&VPvt+#j;EP^u32IXNg4VbwEw(DE zF@&Ob1;CrAnV}l(rn05E|L=7_s6qBHLQ~~9jBR^X9qLl3!qa}1F8M%cP<|_7qkZOo zY|oIA3GuU!QF*g+GG=azD<+eylB4)1{40!Y8TKrR+*Zfv1}HB(ld5%&qZY2~=EI9X z{EF9yP9_2U7m50@ASTq517-0nW-IGMJYR?)JSn*&g07Xd?6%*UTO1X`rW3?l1m#K~ zE>`Qi^Ti6U>I6Igel(!3O1fZ!A!t>~>HcD?yoDv(FskG*6>kO1$6ZmEs^#Zr9)-Kk z^Vr8D3TseTpCA4{j~LSp;}d?ilZM{$OU+zN2-m96h`-&}#k?8DmH?5}ss-YPY-{kJ zxsx23HoqnS=dNusN3j8@TWb5?q_uwqulx%jkJofrHula>)M>x3;{GZYSW&F*j*l^! zP|TS$IEfy1 zDecMQ9DBfgccNnh911mWPUpyi2|4icVzdQzf7+i{X;El~udLcZ0{NxtW95*71yEj% zFJw^40zffR#Y2Ql_1}?!ds<$Q6HJ5=MFW!3x&!98KUY>vZ3X=Bn{uKbqf=j>)7L2g z9mZ{I4-+i?2T~Yymh6hUb*_5O42bYHOpx*3I;B$ z8GPY>oa#D8s;Ux9*PuW-F$sL0Jn&Uzemlfg4Qa6OT#ryKM*!00e$1Z2KEiR1u~sdY z@yG_1ov8=fgZIc%loj*F!y85f8HG*lVXESnjyZ2|dxW0$nCSTRtIG>rR^)B&fp_EM zd5(wi4=*a_N&HR4cnX+HKuuYBkL?1|vz*O4FD>ohuSJa!%##gcW$aaB?%jU#Pg2`o ziKF<&cRv!peZMmPpX@=$*wU2Q6C2nBbTI^%W)!(SL`~`1wr!q<|{~{OF>M zrkV03^~^${_&-@uUlieMD}fkt?5O7q0alaeb_2@ecuHeac&pQZc1d;#X3UJ&X2F;M z{}@A8>ygI>U6ScGgT|E*$dqmxwg?8Yf_hP@x5S03B~XCb*<7>_B3f+X>;<-J>xb}v zg<6O>ut8Vn3gVn?xoC2lSW4}^O;MlCM~L{?X$I0KMJOIMx@%?@UhHCwMYBb@PFUNp z>lh682`1sJYD{W!6oYu=Bz$^7PjH#MAuQR_lnZQ}O8Gr0Q&RA5paJ(sF{kz9U>m zIySQg5gK5A0`Q6!js}=t*Q9{Cdgr59=%R*|>D6cTo`f&?ORUq$&*)W8*S9D=pR$&mc%E3c>B4a$5%NCU=oOteG<|N!p*p7oW&urT`wFkUOUZ0u7IOT7Qq;x z=YZ2Q!8o#=*A5G{QmvQ0<>q%s18`!(qK*3~I(-D_p9ydEz}%}xo}8XPz}3t7@*n0PD6G}%+Ct!ZnG$0SLx z@cl(}BfrNF9sjMkGQ=6jj|J$no%&tXKbv8Xt=}s_%mQF%Q(=#qytp>NF|yRmP2Kz? z8Ughd38gmw{MnRzuxoYpLbj0Tfw{{V77JJl&eaXRSv8mc-lWTvz#N*U`McLw2JaJ4 zJ_F>h0P%093GsKApSKqA1whVOrWOr=eg%{l@6}ez<#i?SUbIa#74sP|ziII>o0rdo zo(U+rZc>_ixP#>fV(-{lmV~@NNvUs=COP42)^N*#Ht0Yp=L5yUv!lATDY#b6a|LLZ zmu~D?_P!0qiv+={_9J4#!R|Q=44IXCtv++P7lha(DV4{{+ao``r2im6Ih_+h%pEzJ zb?7}_RmLANhgWCd+y>t}Rr7BFb3^TYsOGFL!6O96xDs9Mg7&V{0xtyXKju$V#>O(p zz*rFG!+de)1}N_Y-&lcu1=5W5BvB_0s){+I-5bTZpK9!kg9QOV4_`{N!2B^3jUCB4 zGgf$K)p9m^0gTaEP?huNdafQVUzqb{c6W`LfbJO}=bONJIk_;KaiRCSt6D?s$*%Aw z=EOTKl5H%(pczNM*Ae2v>A?q42YNJLf-(K>#!6)Kp<*6P-pk5R?0|WSA0R;ai@D(N7=G9lap0=lFcCoROJSA^_thp*Ac4cMn%ZLNLV6 z%a!N_J&UPx@iNn=52RGv=n^#fOI2~XS1QraFZ}s80DWa3uUM{eo+)x!rdRscn@zr| zw5P+jAbvLlqFT4s$KtDEZ7*JK>_e+2_A)r%p|6)haA-4=tTJS~mRt+K9HzSXzy^hV z1(dG<@&#c1lEV3q#^al5&j!3aRuUYFzTP$J?+Ct`F%`YbyD`nGm-_kl$0Rv0yFMb) z*oPA~^eLziTm*l0Ph*EnZYg`Mu8K@GCVt1`K{4I=u%AJZs+1!`&xO{HT_xG7GHn;?qzF*IYviQ7mVWNhUitQdiQykU=FXC5J?9EJjkMwo~mFLFtAM0`RbXW z1&g3yN8)G9L#jD2r-+@n2FfEam(_AE#5SFtqL>JDKJped!sr3`80EMoTuzA0ddx3- zypVwL_wH%zt~dHblU*Nph~pSQIYJh%0_Lf;pb=n0)gyB;5-5RrCjd7@0;BB3iO-sx zCT?1AJ`V-rdz-{IQ>pK--oK^ zF*mu?YtG4}Tmj}+@$VMH(gSM|l+QSb)gm+sV81%j{^QnaQLO(Z3jCs~Kf6-iZlye2 zZ)sr`qHdaMIg0PGyB5@}qy)^bs0t4BQ8 z?irhGze=QWOe^KP$-YQ)ehH9&vNFC=;h^fn-iVzZ-M!(pdqD9F*(6U&jTAKNI|V?J z3A*93_`iSxpJIWtfYjT>F((XO0OdP?y!gL#~mTv>|)oQt$5Wo714Lf0+!f#gW zAXm)q>$2+T%)oq9VDVNehi#0c?>D{y{@qsN``Rg=YuU5?{BsOXkB`9oV7!)*sq774 zm2qRVlB2lZ3Yb@8WCqSlU>?{9&-d2?^P$%<%+w+`%$j72%F1}Yc2g|E7%oP45Mg#_ zF`7R=Hml)pf$&#j(atr8ZN{TL@4KDcUkB*FvxAQ>ypR<@tpNMOV;ka)<1a=6{{*|d z0?4C1@0N7$;%2UtXv0C4z0qF;=Y+@tu7L9u`Zs!D?t^8RD&!_GSC#TrIx6mo?5ES(-x9}LQP)nO8Z}bDek%owL{R6S{;)pcLQsko_#W9GJx0+d72Q`vO{M#) zZs&-H7)7<*n?W-qrlRH6=vtBr>o)-6esAS<1ATsf_M(DXiEPk;`Etp^x?*eu)f9<_ z*|`2#b$nHTXEbA^8O{t~{?!0&H~G-@ETXYgViSD->d#fxulzGxSE6H)l!8Yrp5-Qe zeHWN3;9R~>dWTXpu|%qdj)un0H74Mc#%?GMv_fl-7__12FF&iAKXaeP}I$tmH<~kz1 zhV`uAlN|xD?-=bW*_+H#z3V`>fU31TS;0+D&tmSs&JVAgjAm01p8(>oTsrjrDgk-? z`H^oxV)n2;6F<0u-hr(d241H8tt!P=q7iCcQ1YZ)1As3B<$nR%Coq#=L62UEx9#=|J?hK6fUT*&G4P(e%GG(Uz@XY2Rs<5%d&HtSZ6(#6P=U zm>g5;6IU~GC_v>5z#;cwmlSqWv7h#qH|I@)a51T1X!5zg90f3cp3iua(*SO}SWx-A zH%W~6Z1NnVJ0=Bc;JEvK@hl}}7IE;@5!dNjuO`5=?IFh`CfoqfXcAN_IoXx#?e_GP zFySQN8NveagTS50fI+b_hWgk82P?dmDra+d3b>|pb?k%+qiASg3Q0Ct7lyy*;9Uw*b|hW!2X2VR*cMo@{z6e z&K~%#HL$9hyQBbf3HW#KJSi#TiK72#K)ajdyf97WLta++XX0ecbC5890U)&46CO!nt z?Vm$zpeRm@3NS;il01(kWo>nUmC^&yskjU9A$&tB&OlR}w7@KpF`=saUm=5X^&Xpz@dN}oE5)P-uDExZ!@vcbJU}pHKY_Ic z{4hbl?_(c#8th_=nhEz9kC9bxEEbfbG?lL0IcI*?oH;C2*9IPd$ARkaNwKgF9_@~rkA z0*v5#`*G{?^llGS>2Cf6kzCA5scP;$PvGXbtxSV{%)xkTcak=+^z*YK{v1SjM)POi zIEc$Cjn}p0es6n^Rt)a$zG0}!!^Ny8h5i;}I~PJ;p5d0N?@TFRD$zl_39j-U{Pf0f z-r*K_yS9KUyQLSK49+7O%8JXVz_Rd{)K-Dnnz+n_&vNk#74|731nbyB$t$foX;ihX zO^vsu1YvmqP#EWz zU;Hq~=8)BOK#PtEohqL|fLnpDAb6RIv*A_r6O&e>*uNJ8{N>|{e(wI6Ac6T5Ta*}l!QN`8auPN^NEt+eZw4FixXn>F*h&gRYDFB|$lMvkrKUiQUui8Xsd z6lEcI&jALX?*q;9cqb#+3^}ylZ-W}&P>>UlP0)eMA^Le=YH>a3qjK3m_E>MGp0`cI ze486JlX1jWkC86~)W_g5ATOd;E-oV+A*nVTc&v0M{1TAUP~c7NRfcOQCPOrH{SERS z{u{n${I0GXCZXd$1M!GpEXIbvixrauv8W$IE6X2hxneDNmu=9-rT9J^2=&Q@gL!i~ z`0V)>bH)MH5zlv4;l+K@CSA>depc-da}SmfaM;lIkrOs>6#J3H=}OHa(tkI;ZNXOX zs_S;((`_hFpny$`TJ@RB)&S_5#B35%+#`@_`?Ec0Tlx7t7=o|VSx`6XV{)|^GS+P4 zGd8h!6Q|AYcSpwsUxJX7(!geGpD*<&Z!5@>y`NTf^-*Pxu?S?6^IVoRc|{Q7^R zj!8iWwQ|~Y4#=xvNGtCbwK59LJo`S>(~7H{1HeUlfMrmq4m7Bca6;R&MF5QbHq#1= zF9UKfxzLXHG)|-9c~`@ysDKJse*WIG;m~-VQ}kfpDV!5js`ul2&*=)RT&Ns*yth#jDCr^ZtKLJQ@MI+p29uaDK&x z6dA1HlL5g;yaeYIz#j1&A`zi%k(e8R!Nne0HP2W5%iH;jTRR#{(*SKkR? z_#&vRbxMl3d8Q62j>C6uR4x2i0V*M;e#JH|u~|PC{r-EKwZ#XxQb1jyqqG}nSFNSm z(eI!bZ`|(Q4C8v%jRhe86e#CH24WYO&)!1^&X4~06bYBCM#+>irBF{-Nr9~Vh*kWa|R&D6;R&v7AMbYwMIe% za{rEm93BFd)Pi%&^YXINoEQR@d>+9#QzX{W@ffP(c?h%cP``caM*+rDEDxVQ?$#L; zKs;@A=#%nw>Z1N{3Bpn4DW;&jv}hX($tVl1iq2L?D;9Tx0{oweJxh^>j0Grq%i&T! zcMo;}%Fmc40`pg@<>|TfpgaQkBy1Oe=#{7-Q?>ke_z~^NEU5e)o=^@ju-FQWs=9l& z#(wOu@6pgqPKv%1cuPqLrorXx+*~#OyjPWxwVLAaiJ->>n8(=G+Sgru`(l<%!1hep zeg%`{k>P8U3Iv}3wWjj=A1-aEB~H>^VRn- zp|qEm0}RTGVhyBUshUGCbezf9iXL1t+-LagvSnIRC0qvc?E<+fRrKy6v3hJ4n?+^j zt6)|bSXdq0BZ#R@KzXCyeT~Hs-Cv;mROS)u4o_i1F_x`@`j}V*KAI%X1K}Etc-&2K zf2IhoHWBm*i6Q}jrvl4zwLHuv%rylfDyI_=eN*5M%;I z28LCD#+*)qub^dxaRd;*7;_;rSF0Rv7h^?Df`m0F;^nc&d|O_LxVJ>Y2rWuNA8TPc zJC4vw`&mF8>9vrt2rQ_-yuVROtoZ)*8&JVyNgz@I5tPTI(M#3xp+W98Fb@G{qP%mM z)_?%s4JF?v3s_W{UjXI?d}9bbpA(of)40VJ=YYNi)SdO26vs=VcR@X!W3OuN#s|DF z{UR`z;CwaK40u$tbs?(HtDcODYX?M9W^2uY&pOejY`vaPZVsvn4l_y+`cE8VuQ$Bv zNndo|nYo{=hm}YZ){6s2W$e#z+`k9V`N~6B1MSOI@h)b^JOFqrJ;jZk`yHv;#cSOW zwpbFecmJcPL;|pyA2c297=haFaytyk9Y}exR#519%txaqFk7-JAb$Rmdg(4>@RzCT zqJ?rLwuW$g+VVFSVsH5&pon3$o#>zA-VCAG3mz@4WG{OJsk}!mIEkSjOg-nXRLeOE zI{5SYF#&Be8aon$!0!{V06tn@UBYNw0_NAXJZQ#E&OCWwPA8;xu&PQw!w2g7_16p! z2m@O=B^pF;bxI5+W%`kl3Uz=|v;(Z*M2_sh(PaV^hyd0?A$C3KA?BmXIyK^0RKYL9 zzOO2gG}k7;cpJO1S)cHl_}a?vX6{4_6#S2QsfQ{#W5PqJUoIJ^{}h1!PHe62lWTx| zsUnUy^98fsdA>O~wp3^~!FZR2{+Gb~)d@9Q+uYiZkX9E}(OIwg6VR{$5KF+ksFdsZ=jz8vboCj+Bj035+`tQF%tQIL>Ed+`kLZ zKY8s70&!E&zL@Y>BG2xm=~opSi|qYd&uIsc$7|SCVBh)O&iL6Cg2SZW^9-gpd(Ane zDrZWvzy1!G57&F1!ZqkDl~e(r?LRZ$-)h2Gk5QK>;fG)Rrx%|^uQgTO-lSSp{Z4gH z`8_5r*`A;d1{^5&6?JL5hYr~H9?%!f-BycXMbOUPtFyX~d0%}8%u&Xaa(yh7=8tYv zP&o5I_LTEf36O_(GXv$RuUTx!DCp}~O9F1-dF0K+Rm;8X z&dr$sebYwS6%z!-W}rt^%Q>=tx&-AI(;j40U@p-6y(QS4FgvN^`CZUd%r}6!J$Fca z+|}dTiY;b1uLMg+XKyLqG?aEEV1B(}iRY{cT$t4}I(wP23t+dZig6Cim*d)%%wClU zD3@WePgj85eU5oS!Vrn}#R_dC=`>AvIEs`9QPy7;aksltoNLM9GI(hiEDw(E;z4l7|my_ zMzQ$hDtU^ZGUM^i9a`NHXeJ1z$>*-@SbJaKg<-) z#Qo63o7`Y?-0uykNtR-4NrufH7 z^clV%XHPf%9dX=!=PGHCfNlWhR#XoW_+GvLCrH1~chdJYT|9$pMu0!UxnmDFb5cZE zpTPt#D8PBd)CjpHxUtfCn~yE4UXF>QQ25=J@AtHzhP9uGgJa?IT)kRoAunv=9a)gr z0qrvfmBpL`R^LyIL!)IeeGGoBnW-0Fu_ht00gL_f=lY<35?rp7uNS-lTMP7eujBKr z2OoKU+ZFQevl~6*CCDB%{ja43MsU8Y(jF(5pi2RL1d1^i_(Fk>O_YG=qFMS};|{nS z9p7EQp;V(@9MW@fRkM+wLHZh7k*QAUom(sF55wu0&uLltZjQ?$=@Tut5^WtQ$Y_+A zbr!&Z#r3lp*QrPS5_O~dJ#8dtK)I#TcXN^=(Nv8!nRJ-(rgIuWywB%+L#UJwFW7bk zP^R^RMFhk)j-(6ob8@2VAzz$dzx(tdLE0FWj?Ge(Zj9PAqXNS*K@|;0-gTf^E!ynp ztxR%0qrzUhar@!!pZz#xmoo5odLEa|=6Z*)&ig}ekJ0gP!fqF69hT~hdfR(CNVuNn z)wrSXBA>lKXIfG)Pg4?vo{D`u0qP<8rcVX*SW!Rk_n;Wltdn0bH1_z6VAaaaWU|LU zLcg~H=Prq0MBOX}-;XgS8v2l`=hXHQHWlCKDB0&vnu@)cu~Pg{DC^JW@=`b+*+8$d zU*BwR#q|0nm8eeqZnye97An`r=J9qG@7a&Bvgk*qfcfQ70VU-4y@>I+@Jv4y{(c9b zzbfL4MPP`90lJa_-^s+!`q_7=GT(g0??gGP=a}`5O@6lw&QS#AtKb|(CBki1bbs1ORx>U=?Ei&b!5aflTN*37OaSYu9i&69?VQGOT{?gd~8(@600Wqvc zt8}Z%*PEBGvobMe3CdF?GFa&;;M#)nI0lWttNk3GfcqYE5x`nC_5flUV1C)K*+lgU zFrT<6j1mkZ^p+#A2I#!HeiSkAGFJQb-z@7+A*KFtIYQ97KjDMx&~ZhyiS>)g*&B1)QI3Io4!4z%Ie%>4Deh>&Z~%oPg4aLycSIN$`pd0pVN@|+0p>70 zaIE2F;}g-Ulxm7jduRwBi^E^FDPcJ0Uj6o)!&uD_o7PsNZGS& z0?NQ!X6I|(0`uWh`S3Ne5}2C=0b@GcD#&Bhl{5H8M%Sxcsda{|VhMzHs7+tYC;g4d z!iDdr{X2{=T`7kHYH;Nt%&X*Ab+?IeA;xQr!MbX>9beDnj_obC!ePHX%`aU9B+%B) zM}Hpudne}B&gp6$xHn@*#eZfvtj9AA{LVh(Pa&;gtl<*CSGw6u&}s}%gJ%?;5!Ch= zbo>g`8AK;@l9Sd3`SzGE5^F2P9!@@tzcj(QG90+K9K5nUPYoogl-9)=V$X4y)%Q{h z4{{XGLQ$pNH3@L$D&^5W3-yvIDeUh7b1V$PQ(glTI()1G(>|Z8D$ZMM?VNu}_|5y5 z!>|(+I8IKf=jR_j7I0(4y$hJ6$S}U&BYT$zfSnZnLmvw`bXB~gvNy;TMp3?tbM3t{ zirmFO?y2i>GBL`rx2ika^@?+Cf~Qt5=42p|ofe2 z1QAGhH-5hZ zzU}X)z)_o!>>mN%trt#f<}K<%2TZz zn&VUofXy_pAip zuH+QV@Z$~0pJH#nXU(Ziuv0A`hB;8oIoq52IAZpD4$^(4JkNvcnH)h0|AHrX{V}rv zbmcw6YQJHhwo?z05OWM0dnUmuB04~B14O0@`765(l^yOFwI%L{=U>HcdsnPidCI?X zEAradt{`J1m1~PO!e`<(RDp5aaoqZ^AdYm?UbjgL`@rNz*I*TRbMp0a43Qi7f2S*0Ff$UrM&EMH|dn!dKAMtH3<|emY4eb_{LrFPW>=1vuwQuemyZXn^~@ zVB_9&AL;x?4H>9`d8{-#%?jLf<8~0<4^LLe8-H$A|6Uw+v%VoNuZ(;t(Z%hBhdO~_ zzE33=d{rzNEVo#0K2*Rmhz3>)?C#yos^u2=ir#V>U~WHiCLkU*(E|?KTg?c*3((A= z+eOOHae~UqF~qClZ!;@&bIID4`K1soHyWDq7Aoa-f%9wvh#LEyIEXa$i$Q=~rFY>8 zqpk#Gtl9l}6dx?RVE$ra?44M!0{UH>=5m}#-KJsLVZ<%aOJ-f}yIXHHT>_F&|t@f#~CZ zcm?>RT3=SohoIJ3HUyGa`KZEUmyFBV`XeS6R>1jAv>hCL=OKfTZeMK!jUe9hdd<@xe36$*v(*y`7Mk5!XVjbPwHMeqEcb)G|@46J@sAbgK-tQ0V8GJ0$wd8(Ic?~}fAwK3O#`WAhop?kZr6%q!IQCOb@T0hy0 zy)jBvb1D2*&U?na*#!Zo*E5Yfw5znI`;FJAd&*NHgm=QsZte&p;Z8yzj2nMWqK;4O z^Li|(hRf#`+B#WO#=pt*TF~{|-cLFC@9r9stGx3SM+u3I(oY^P?$?!ati<82H+rP+ z{TZ#l#L#RHG^*;xg;5c%bTO&_PH#DTIx-62o-5|KD(3cG+%$KF76Up}aVcgP3%>OJ z?l2if*n|jK0Q09h`-AeHTVU>l{rpOEUPlGalPW%SQpi3}jG~e~vHy(;s4<39fma^} zivzOx*((bNn>ezI{jmvpsc{DvRy8zn=&JJh*RY(@c0#6k*UxmpTN?U-SFFKTt>9?R zN3~O}sL+o*9XWn7K>sATe0K-msF=^2&R@8uSB~*&lia7!4FGLGlD{W)O}qxoTX4>K z0)=fFSc7v}HFp4d1DwlV^QV{=)N!r#6%*)bsqDsXZHys+xrLDpC>L49B?3jvD1u^t zX0fA;TiN$p3Aj%}dFX-f?;BSBdQ`Qv^pp^LqH16J7bfb>0goL7TZXdlLQt3F0C7kkc%?7P&Mj{ zkV1-DqVc_!=Vbx5{5cLst?z;U@9U8I0+`27Z-DX<05=LyZjS}(W1rRVBfeqdPcEMq znJU*aDmxxSP{!%sI5qd#`lW-M1M`uU=XJ2c`#mcKM-~YXF|IB)i_`M`e+ut-B?F0lAW8;C*!D@Rk7NG5h>-fj7Ilhs^iqo zGOsAX-$Tqc_lzY<`wY7fUwAKn1EAxRoctnF#IPuK6E1nxvdDVJ&lV8^irFJQag#FS z26s4(=|z*5cdcxiiZw=K&pR?ByGw#5Bjhl#V-GNzAU=Xb9>a&u#~oZFRidp2c`*Tx z;eE|?z-W-@Hd_(}lXnw{kCG zwTTNYiRiyfVdrLnGn~h1WH=1#?ktlBj}UfO^XRm>%2{*B%Gj?Sd*)Vj^XzG^^%!e? zNnxI+imKizKFwaAx=(J#svJ==ZGUcaAc5VxCm4?5fQ?8CF~9|S91}&U8OBa{+ZCN0 zvY$PUC%Q^G)jJ7gAG8woCKZ7iAjSo#J};&HS={FxZJz~2o|(pe-TA}ETIyUdbZ&%e zyB8V?FLhV~&Gq@Cpf%wVqJzALb2XAxbA}Nih2G$v#}M~zk+!e`lLZXp1-2j{jz#aWvIf=H5+e~sXLOl_WWFZ*x{Poms}&nF5D zAVECS^%r~DDKz(+#>)awqfBTL;=js6GN`R!w%F5xzrV%5`tHI5qj(gXYyzxujNRM^ilmW$zgDT#Uh6IHV>cw(FF%RNQuGHqb|M`sS z!Z{RIxpvh#zCAs{BUq^_-I0)s;tFAy6A@&MR2WPZ(K>f8kGE2hh8buGS%PIierOgjaojtHwb1|bl-szzQtM=d5kri*`El| zZ$QQV4n=mqo>}vm%ZU=n>F*i8qrNu-?cI0wAK2b~?qmRWdlj+!l3!gHp(rkt6aDx2 zn5c-S-#b5W_+tYlh={%EYD3_GmS#*TC^zXD?yd#HRLrACvZf1BBn>FCeI9u*|1bK{ zlnD@Xde9rA=EWVY(}}hMB&v+yZMl4VL1zsCX}>0^*U%~JDD0+g|A9<@zc(WUPi+dj zGl+MNn=T%a2avCAl8sLlbLh1I0WCbjm}PV9OS~GQ6^H&g#SK*g@6f7qR?woKyj6mx zdB*n9!6cD$azS|(YYIMO6|BqK|2tS-Cu`AO>%3;}=jQ1YjzJ;h);pa;#wJAz#PF6| z7Q|329T6&e#wb?2#Cqs#20@{bp z$Dm+WP_17Tp>wsYs6^5D0X3VB)VmXI{N?48y8s)T&-NqNf&Eyo`^*s@HD0*3B#!IZ zjiUnMm00}9PDayq-Jc53e+4KHC|9N?_;^)vuMNO+j+)4ygHY!o#x`iT_b)|bfaO7+ zM`uNMM73%zuRmLq#6tLDcFwfE0fLGhgACN*RbEbhz}#L7(`RMD?G<2-00zVu?sOBPYU=}G z_)%xHm2x~q0xh~uxa7w$)w<`iejo!Risat%xCERi6xjLd{JTGMABG5$m6T+q7|=@; z)XNOZod|82&g)EoZ1=#_A1y#43s5d47&fd;p^^=uKmH0%*(qaDsG08pb6+hF_FUA8 z@d(P`XB9j8vpZ`15Y=*X%0oRXS8>1l#2qNMB5$NzbPy}%@j399Kpl1NH34&bEtciM z1hC%&=0hxWtaXOE%6hrfXq(t{{VNo8l~dahW#b&1ruVX~wz;<$a^(@e+F!l(pA%rtgD`J5wBx8A)*rh4|tk?Wcx{}_<7U+pJ}`RW{}(m6v9Hb*V7?XRxq>D?7c zA_DO{Ark$LVeqRG-YOZpY}_roN~@r(r|DOK?y6EAxj{b0z?+~PPnIGRCEV>ahW35+ zDVyKr{_DD0e#V==f1K$VVwkv&sGp+*#BA)}{s8kx_4fYkOdAL)8#D!wCkpoI*u!NH z-JMPa{Mfi&$)pk5%{KPxw_v@})8Ql&I7tGmoO&9#&e|&%!g}t2@)xV!C59^FIiCq> z`_-$Y4Hf|SA^=$zUqi#FTLj}{QIxK!{rX;e*T4RD1pGabxDUX_R69lk0y!I?ScJ8Z zZB~^y+zHsH)OLsfoing)D0i3v_YYyB7nSQf4F4)PCngKPA^NTZ{dh`gx95RAHWjcx zG8kdVA`_dyT!M04bxoD>GcgX+XMYs}Zt7VD%6ZvjP+ph)3&E|y!!~GsC)tDzC|++A zRdu%Nwbzw(cp=BAI+#@bo9wY24^(5!)3acp_OCyWlyHi*Ht)yH=(!bo>6iM;-CSU3 z7Z~Q>NHlhvSnB$>C{*fWwfunszDImBR z+H*`P?9}(ADD1MjoMI>gnhoWB#OK9PSIeoFAut1f3rO$tLtYcEObio{O#*IaG#yWn zZChOKdtmZu=LO7tN*f!%T!L)sB#wWFTvONI0Ih_&RxbH~0kUpyhzEd^E z#}?uq$cpbi)WNC>#7r^25ty4*!egR_i=^pDPv=hZ0(u-S*};iKQ_>WIO@Q2!-7)%p z8bFs1{{>~l%8$}o%E}7SO6G6l(yHTw8$IWW;*OYx;UeJpk_Z=HTTrUGl7o7bz#L(b z;Otf#aL!dqy8`E_Ul@I*+%6);=U9C|R=eSwUK2CG0<|MkZqE#!t+WEx7D|t2C7NiD zRmxV5oTMm62+qyo6I`zGnPa$I8HGZrXe%i!x{`&S`C7CrQ=3~nNy%%G~Qw=pK0Eq8wUtk&kL zZ3T$`UbTF0%YKcy6)E18gdK~tFC_Oh3!0sFcJVzQtYZ^JHJ`=V9c3L01%zMm11*3i zJ;hrAH3P~aE9J_yBT}c=D&-*;ttsrIV-s3Xe(MFq-t@~7&5jj22RTU;&=*Slb2C+~ zM3)x}5UFYO=9mY)8a-W1XfuApF$pTlzLl0i_nfSbPNUBp=2?r8}J~Rcp13Rh8$BKdTnD7pvgqer^|(xSkd2 zaIzx4OPh!5{LuF=0r?P>ab{~{`uOZei^QFkKsQK_eUMmENy7sKCshsf*+OisMTQDe ziT$Y!5SY;0!-(PRN_N7+#W{ujMP(`35tR}ra-K7v!X#RD?WDKY^DXqYL1}kY^8#=S zv9%JIn{iLI=vnJ4a7ckX^nK;$=N?8X)+R0zP4 zJ;KGKY{Lx)Se5UZ*sCqk@3HYb1w~v|!>_T07oPoMRor4wn#wn27C2*HhPHDx0Pc3C%bE+rDC7Al$wCrv4dV&Qe-RFy*eX%``s zsH51K_l(YJMryNsH1ek&xC`1f;5B6V?GebWWuTmEK))e)%(1jdsb2NMI#+I(d7BAd^`LKq+L&zMfp8@`NFRftrPuM?G7 z?ogksjzHPIsIIl{e@80`v0C+(@$);>@FrnDBJl1qpDKOW#Tt`-@l-J2LYCEt;ob#3 z=0YNecjOsiY;wq=*^dV3*pdZ*vuLmqQE=n4GHq9FiZGelH4f3*Isv`ftVDMI_z%*A z6fVy$eR_K;w~3u2JJmA!n_uIv2j>V}x`&yxSIhs%d6i^ahU}Gn{tn9L`25Z@=wXN! z5ttc|K)=6joa};N#$!q-*o>bN8$zzii%b<%l)DiA*GXS|F@uD+mltC5J7U~2Y>MnQ z6g9?1oh7ClM;;nJ?BK%~Q2~IBjt9&SwZ%|UW!Q2*$*#-~r2+Wxi9Wf~px17Vq$_)4aECt&ty7EfDpWUBpKd1{GCFNh~x&E4>mF*9y8e(y5?t zcwVRqEvN;Yej{gWfY8w`5N2jZF^_72 zIU<0nEYx7+T;~};3wAucWt9KEs`H1)0SWuH`?_uswp^u#yVpnY3?C>K09b!z+=+{{ zU?NrJ%jGV1TLg+X$Lu}7mv{ToEZ zbUmpw9`1Uf$ULu_XY>Z36#VPz!(Th6VSm>No)O)N*B30_= zs~~iS?9{S?uPmPOHd`If#Uue|Ae>?^?OtP-106H1E-bwRVugt)tmPV^Il@D!^@d)* zhQ@`DgW@?;Ps)Y+pwe(U{5nZvYy0>>JNa6XtnTYJ4`eaxR}IvqApBLpu2wKk z`o*m(KPkZfe*m!0dRkK2Y_#HSBW0$ZVO+3K^Zn+{m=ctB3C>#)w~^`W@%YM{8o>@K z-c!uPDNjYH%pQfvmU%vhNESc^?T|DcM(uzCT>U@wXC?}Rd4*jHp}+{772joOGq9Ce z3mJ3L1VeF0iH6&Q42<q_f(I7(+3zg zL+8F0Bv7tmtA6W10;VejOH8vzT~ejC@-^sRuu~a2rtdL&`BQ7?8a&*3p}@?#FqKn83b{HDArl!8H2V&ir+3LLkT;6o$8iHY9SVs6%)mNz!i*L8 ze`o)ric$M;moao*++$ZVlyW`9Sf)#(*HT=Xt7WV?>)BqZZjZeM{}EU4c7I+6;IluE z&3hJd5AwT@rNK#O6AK&nV%EN>w83g1UO!Xsc9cYx|M%aI@tHs0tDs~3h0DwxS027|V&#@$ZZOq0o>3_lsDA&ioEd0ExK-quQ(b!c`srt%SE9MTEj|{ko zK9X>K`@>h}PS{Q(!gted@5UPzfd*pIi}}v>ZFjK&!t)FOXQMr)C}w3ce;p`QeX4J~+5sVL!V5yYckCnLN|FZXP3zFlyj;P@C|DW8(*;N^~cmXLnGO{~o z&*Z~eU3rOc*b+s6B(MrkhxfV{;O2X?0K}H4 zaLFS*Nmed5n$DHb>A|6mB_f%@j%0}ya|rP~qcj->>DUB^0M6ro`$fs2rKbx4IE<}w zq#Wo^^NV2BEJowzcnD=-K+=5bXkG_1lUEB zpJ3y)w*h-tr|cFT|6S1TW{LT1;~ir;1Ji1Hz3uXL$Gwkm2dhfNC7`=>oCcfG;F$X%ErQhkc>>eb$TkAVre0+Ej+<-VteYFb6LIU#nXUG{i z1mMF0s@>}l8wklGoe0cJ@wY^&$@LOoJe+tZ1wVajRVdldp1i*Z7R?Fdz#|WUP zAtVu#U{`6cb4ZLuviM-d`}yJOwW6I*qo7Wj@XM`z+BM5tkjV#mbgXJySVxNKA!fC8 zx}~1)QFTq*zQ*6GlCxY1UF*69#r|C&K)I)3=I4uIZ`bd5mGcgiN6|McTn0mucp?D) zvvj@6gSjyZ6UvX581H+yiqHrI9rQFp>y)t(gDx;G$Mv07V^IeaoFo@Brgg zvggWn(6lOJN3aVbCN@FgBN{f}YT*w11iO{&<|01Oh4|$2FF8Q;g%xbR&huv?#Mxef zd+mUO_O&|;;F?gFxQgarpuBD?lmQFFeU5J4^Blie#r>~3$9J=6M+J{40bakjNzky$ zZw}F(!zOd$=EhPY?7RIz=_Q*JAJ3T6Z-a7k+U_`TJO$?woR;(Eadup7*25?NV=-^; z68o;D{Sd(1e6}-X^YaD%T00dsW)!VCJSbXmAg(vwC%oi(G?-cf@wk^32k;U^zi~*N zALjYgYop1l(R`n)gX>U)4Z?kl>}(h{;Ct=s_hc3d<1ExHWvu8|pga--EbfWDRvW5L z(ZRtTGN%CG5Uq?_*v&VU<4O>2jO0P7RjQ7p01Bw<{fOBXoX|qiJ&$z{E~@IfQUO=1 zoDQ&Y?D>9=0$O%9W$9ip_{*x-3zvL!G2t{7InK_B>j@phCshdJ29E&wqcR%>+naws zR+}3>TaOd40&ua-`?WSs58kd51S?{IqFW*Iit&4_uGO7z4%JzJjY1SI-|^RLGOL^` zZ2@QbFmktzd(Q&gTZ~_70X+2|w>gx1uGD)FMd*kQDik+`dxUr=Oje1YN}JFBst215yX@P9ZRKSE-^dE;9W%I^H%A5=Ipb+s+STWM zDLI~ZsUW0%Rn`2Sn?)ijXl8w_%dmT`Z~)z}Ra7@qkQU2?qo0#*|9-j39*n9Cd=Q{h zzV;2LVC@od-+y(4pR2=C_<*Wues_#o~F>~dx+nvzuKh4q;d<~qf? zlxb4|%;WxnP`RaCN3jb>0rM=@wd0g)t?T0KY1BO5YhB+wAz82UEZ|loq^>fa-~V{9 z?~VZAw|QTB03Ms2BUmq6l1I(9+4}+Y`MCK6mK|#=KwjTT>4jcZG+B9{U-w8l)uos9CQv#S)}*NqqpUb&hsp(@H8HqqOiMHgX1Rlyb3kamDvg+*f?>u{F16 z*T$7^{EST{9*^GN=%%>bn4vK6;MNyi25fShF?<(?U1E$P$6zRgR8|}iAdhb5{C<@K z?!EjWgY-=JfkNpI`JjJ*I-p>b3xB#*0u%kLQ-XJlx^G93cO2_1u3MAPU_4zU_kttd zQPk>6pzr~lO>#gqv02{q(OOW=gctMtxc-eekZ-EVc+J}dUvIcJ_es|xf~i+^9G5^> zIMLz2vx!^g{SY?kX@~&?5`oC~&VLVc&4>3%ygncT1WWc6BhNOoYH`9wzS>miS4}L~ zc4Gbx!wdPZGmR4HY8D@C9hM}pXPEV_#-Q4Ruc{GDW&JGP6DkWuF>Qz{ltKdY#4$p| zg4f*ZRed`R`IbR+n3087^X7{XxxSGSV)zglyQT==#Owx@9K=izJkK&49vJ9wU=yT!WgJuE;71^BQ9ZeATC{sxsS^ zqvpG4l5SkIu^^_fkv|k*)RIR0pm(+WSa`r`s2q%s!b<&KVQpXs@T+b-jOA&gI}Fhi z6f28l_3xr`?)Ef#)fNA_AsY`}_ik|?2rn%AD*^hun>L?Bw%kiU+;Gy3(XBPYb)m7E6{hf#e3@}<9(gp!&iP8ywg<$bS4vUK%MaR zR53V874q)1{Ezeuw?O{NLlo`D*orYF(5E1^OtMSMP-8y3|2Uq}pYQi03&$_Gws@J0lj8D|`3T}4bVYl;g#vd)XUg9u{&d-fNPV}JuE~52Ll_`(aowjpb&(Ss` zEXS9{ExzC6{$oDqKGJ^2guHk{m5eEKoW$eZQ20t#mxZ8Zx0`L)TXYN|d0Z)sjQju` zOyjf0pL%ppMD}DL#@>cnltpfU%^li$f^%DO^CW-==YBTbfFN6Px8OW{rt{F(bYAQJ zm>Zl0pl4Um3PAq60s)xT9V-E^;j5QKJfwYEPBXCUROW|hvF@a(w@}D`^;K3&VURyZ1T-%z>jTk~P3RS(Q%3G@W@==fqr>W*!(YHTc31=cD#MHL9N2j?K zj3N4+byLyKd>$)cXWqLKH{2-{K_vX#xE@HbTOKp1NG2~9{p)DJw*uo7AdX&hQ}pyj zv9CfyaW6MiootwZd>6}nr}YpIhc#iu*2;X1JxdU)-nbYk>do%e&DC?|3v9#8o@Wqg zU&9hYKIPyo-j+n-gk4%vaUVf)$EN09x`WexubKx5^ z`X9}0mP(ri;I~r?_{O!Z#Ok{41@!qtN*mQ7$AV1YI?qBuK6F5y3d7aVPDl zXzo;TEI@i!oE;qB^}JI6us5jx1&u71EW++bseH4eD*xoTGl7`)>~ABMnD< z(Xe*@-uX&-4uY@QcKAcGv|L+MmUTc9bHD#dt^5;TwdW=`z0~`CVaF_tz1qPg8;-yX zH=0vrF(HmlFaTx*&`#63dHv`4T6gDI0CUuKwaL4@5w{`ttYTKawn+(mk*ij*Q-u4y ze2YD3@7yR8FB-+FnUmLmC;i%Vv;I;1|7bL={f-!yyub0jR4LO8ekDo0tMh^{mfUu zd}T8SvUSkv)>rq;(;9RoIc_9R*>nCL6=Gy7n%Qs`Ox-GYb-5y99=-BoL3Wx8eZ=?N zuDv)|rFj%R;K+dp3aE$q^wlNDZTMYiv-`Vz`1e={(e4lp?~)Nfe~#`}>A4msURJ{w z;>C8`0Y#^$A^}+C@iA|`^m$%|JDSeFMJ;S5QdZ0HC zE#J6*V0^3P^j((fX_b6vMfbIJn{SVDQYIV3Sk*GmO<;cSfyHaxz|&c^(d9~Y8+!;~ zhH1Y({W*kJIty|&bSME?fNhKKEY|vC-(5bF9!VjxnMwat+qwn$t`ULjqZHwcgazcO z`iYXHs*VRWC%y#YV?l&`qALFIwGh<4HK=5r{tSgf=E?xMTz@zV&`W(&_2Y(G zmqL0eR7Vd+UxQ}Tf{gidLxArpB}7-{-T>w$IB(kIvEj6XQoN6W>0D_A`3}7}D?c@7 z*rV>M0xkpDLL`VoC|=uqA-Gt`+=W3MA5DGJq;ZrEMkc#v^+=?fRKwAgr!o#(Uz%!kf8 zrMI|C>Y4r>=c$zk_`SKpyt!-dzLhBH)#DG}4sNsNQ+@`dxnKrh?g04E_kpUFJgLbG zWou@P;Y`x5Huh-u<}2pN{OIe)Co-FjX6BzJx#mM)z9R|pE*K_NnU(PjJKy1Q)qOkI16GN#`2DS{v$+p}@%uH` z74i&9ttA>u5Icmene`AKf{ck2iXA&RZa{0Ey#nR;do!#nXdyc;#wOS+^V_a~u>|JK z0G}K0z2RV6cWgZGA-2`YI4WZG_HWX}N^PSVj~FU{szM0!@1dXTmKr`~n`lTZ3ZTTd zH}7V!coQ7$jFWBU0zU}0yLGj^rrip-0N;4yH9IBwck>&GAxa=Wfwr?-vqcBHo*{bd zplwNGE@!o&ezy<$yPJ=1Zh(B`Ho^Ri{dsLvrMIvs!RE5JdM~jcD0ais z21~iiv@N)oBm^hGd0RC%r6O|VQe3EDk7Ifj)A_T%D(oSvO`>i$$VDaxhNzks;M{?7 z)D?3kX0NH1+W>Q4p9vO~J)I#5yVf8!L4EbN-(j@*TjG<94=Pq!yGD9%^d|>1o*n$? zK>6x9j!P7d=9y0a;8TbUR=}LXY~hUil^H#%Hg*V~^j$5&9bn$gM86BnmDSW%rToqL z@l}N!0m#AF<{$*6SQ%g48%biTYu*Io9C^I@?QP5V0|~7CSWBMh3b|~8OCX;D@MW;u zR*p^8T?)aCSSj~a<{p$Yf$}j#8@*~_ukN?BUkmqLf%npKt{7dcfcat;B??Va?yHT` z-(qcDUdmDAkRh)AeQKylvcL1}-IlZ@DL2&0cLa^qza7v=sRmwHkH4QAKYaWJSJ$us#_9anAxNyOjWh1QgaPzM6UdIx z7B`E(8=!O3xb^| zTF0-m_Y0I+ux)zU&Jkevy0>j*u@HwAydO@K3{5w|4k#a~NYT!O$Ik-M_Fh!~Q-RBn4mDv>EV_lr z8q{ZE^J09jtZVgde3zXaYd|`a?eq6^@EFP(v(H1RL3R~v@er7831E!p?cZ2y!F&v0 zf1~rSt~PIi?u~2M0mn&q`Wvrb@L;J)`N^|8S7ZS6J+#@1uZ%}e?PA_f%+&e%I$m9b z23wALK0kIPp8xZ==lHcV=y6#mD(`&jXWTfjmLPF+vZn&u*a(rOJAiuD^m~pmG}sQ2vFHd!8P;a5XH{2W!GC?v zpQw^V0A7h7KMH%uc_vpNzNjK|^fpne_0zX38_;9GBg|}Z1d5fnJ05Pyl{Yj;uTqb9 zc5XpTY&}y>qJo96oquDNz!MGI6|2`{gP1|GLeuQ$bzcvmgzhTef_#wotMFMb+s{Mm z_)W+)gpCBi4C?Kp5QnoHf^28iJK_g?-T^XF`W}-Vv4OVAoR#N2+L-EZas~|ZIE3ws` zRFBx`kg7U0Bax7Z3`(kZO?(4!^+9!Uah z1U}_6xbj`@+t~#;M_`5_ki_Ay4nTUZFDA@@eKC*gTH2M;yaCD4l4=}Ui!fTOCGdn< zp>*I?0P|=sV%yhaY3?v#EUL#Z8P_&g*Gm0dsaGw_m;b%WduQ39Kpw{CY#n+KBmeyn zn3sZYBm2`c-0Mj~A=#{PC+Xpkd+M4qrV!g*5h1(6Z#(noXh6T>IxCINvR!#&)_B#v z9zXLj>N!}r1CN1tM(eq~IttLX$Uo%ixuT;u_I;?&yGEz{Kp{s zInc*$=t`YpJNyk-tmp3UZvyaDzS335cV^ZRpi+R;q5AAfRQ(|o#ygml{&QAgg_BP~ zaILWHZO44UahIcG1TOe@0(1!~9xmobATst=MpBZRm2trOo?)hJdApuI#iE%NcC@GR zPD^|>zYdWpT4#@vRfhQ3i>#kdHu{E8gKlTH43=5g!T}(*vtPhAN}oVjsGY-C;iFo* z-Gn@bo{7bmx3l#LR|@U%9$8QJXNOR3+!%{2el3NFwUB7#k z?tWhA&7}SFTw*C0rslJrR@A%qQHNP)Mb&|FnE+sltg*;e<2=>fqP0PY#{Eh4eH()d z@-n8BPb%h5fceTwmg~?cY_B$!fN}{5*K0u+)GV_dhNX}x3$w_JZC9Q#T!2%qfag1a zoEjiub4Q`dhD%n958kKZ5#fEd3xKE2dURmdemdbnK1JR_-wS;K;mS#*KYgVaP_^)j zt_A7G$a=3RU4~w@-E@Q4*s`(Kz`n{pMgj7R3_VuUqEr;J(pm-<4zVyJm>m?iBT@#W zoazy1+Z|yXS>FVsQ1mX&yd{{1-?PMMJN4vwuqrlegYwOo_D){&BoD{t{d@QQ&>vkE zQz;;?3I(TBTF;hdRXcm?SO|v?19KtQXlQv~<#EnFaPXB6VdhKm?^1WGay|Mb0DbKh z^8p566}TAYp*!#MBPd<>L+8wo1tWMKzsu(pdlg7$0~#iKy^V3q*k=eRZ8rmUa#sttW^AUvs(tWu}Z{-_~4tM zyj|kd*WZEi1SE|gGN>xH*lVXB3%jdsOEUASZx;vzAX*pGrV|2W8O|$4`wQfw_qtu* zgUtnudR+;DinetRJbOE8`**iM90YjA2=na_O6DxHd=&SEXK9Spf1M-EmLK#YYgkmg z?d*Gej&;S~#F2Avf+f$br= zUV<1C^G^{g*vu>_fjgogGJ!47yxS@GxS+5b^p;L9;%85N(%;Rc(2T1gm_O}!ln1QE zl^(%ZFp`%vn;FNTjsI>++^!9VVhRGeCejz!R}pyN)p7k*ArE+jbHvs;w3xp?@fj(l zp9APWnUKGe9c*kI#MKE`w77?-ZtEdL`EAX}p!#MQ-b!p$MSP=90GGmYRbY7VESFVu z6f7v>XGIvWL}mz&uz}++ne{h+ku7&iJ8~610@yQn9a&(00rymCN6{K@fA7_i!BF)l zhHv4C^S+3{yswy_>X~2x%7x&?S9>#;xeZqc1wXLg|HH4RA0ahW1-;2#2N)JPpseHv zRLTN<5#IKu1mzVn9==)*?qBaHfOA(ZN1tD}$3i6(ybESKVBW5e4a;Io4p@T*&@p?i z8oCg6t16vcb)3cDlcDJMgtVg0$9DHqtcs&Lv;c>u!1wkpLICyEaprZ<5dJ$A@^%LO zN-bmSiJfsLgwi<|Yf;#Ib#3?EbFI1_)a&sfD7UW#&9-d|I_`+bRUnkHDvWy60!$I; zhVyr_j$*%3hXYx=7T*33a)*K+0^RAZ%K##IoU zk3t8b>qaTM1Z*yS2JCYI^k3_P?t#}xtY5)tEVc(UpdNuS-pTH&ccKYuR0O1%Ydm@v z2%|on{I#MujJe9cMCPuuxc>!seDAO>=IVEZs+PJO&5TzB<*;MOU?bir6oW^tpsGS| zbTmlS5v;}CcAX=adP~i-QR2ggc)yjUTC_h}u5tF)bjUa!&V=jyI43m^u0gp3iJP0C(U)blyvTe@LSjdhjW$JKy^gj0u#bE8{V^7^NIl5I4rm{NPyj-eFWWY;$w@E! zJ6_HU&hV$S>$fxAVFqLou>X^$Df3z*vs{1Qwv zyN_fn<5e(@ZwtY{yV83H{ns|aQZ*nbt905Of$d{NrM#ll> zy`ZY)&StIQcy^PW)$doKJkGOAaLWAoP+3TAF5W2i7RAzLr5vJd`?_wlmBC0LR2A|x z-_JKmkg6iS=?w_wo4uw5A6MT~zD{^hbyaLt>$JKl%=a&0hOWiKbSYa=Hy|?HBdIxp zQ|3=r$+i& z%4b%@A)4#Cy8uxiP)%B#{LaO>8v(dVnYmSghIAiJXF)3(j3ivT17=g({r3FD#^EtG z4x9(00`GaoWI@+~a7G2tXf+AdXzWrdVz=WlRFgSk$AFsczN*tqYtn&q%;+?~+gIDi zh^!n^w*}Mn;0|_zxALEduUuR0Z|oHa_yLIiLoMzMY6921$&LpgHd#7B0hxsa7INsr z2nNtRU~U|?5TjsDAjxpn#4AXdmZv`p^{kjfKcI>fK`GGyi$nBdtl-h0mcv94!K6_T zEF4#I0u6kR;hD1l&ZDJRHE(`{a}m@T@1Ip^KML_U#l~Hm`l!{}DOkdDcmaxQjo#IC z=s-i^2cHgU%()#K3hn);_`X^rt2SVk!TR@qb$Q&*IlOzWsc{g}AF5T+M;VRyG300^ zSy#&0k$I{U05jxVJYnJ+S&UMQ+V6Td7e~1MC)PU0SSz=WQ6%^qL{4GWF%aIr0)BU` z?es|)HmtuKPkFAdHCk9LZS%wro(tk(65(aG8x+&=1n`S>W1h)jufcnYCD5<_AMv`F z<3c<35UcB_*Aj50n2W#|-lzPo=nGeU$QEv`GYB#X<0CB4|W)BelqQYO>6^;AZBh^YWRtMM!uQAuaofjPeY}>;N-eL;I#>{?ZJAZzO_wb0q z6BDpsVng#6>L}~0ygLh+pD=0*f7>ribba_=Yus|_`SMB zVyi#eg~w+n-<#Rr)QwT91!lMScLUzW_!0iep%>vZC)z^2J=k(tn&*vg*M|u z>=-NRl}Q?0r_6nCzGC3G{hjCcEpUw{Pjrw@hIx92Z`syQ4S33Xwh~#bcAq1^(f)l$ zjzsV&&*y?*BfZ_6_x(mOu`^>8T+pNw<*o$Zj==q+2-5a5@wN6~pD!zBJiG>L6>@a8 zWT7IS|CahWyRL*BIdNN;P(M5NpCtl=cmP&wkCl&l$qxn5DJ#er_O2sN!~#X^-lQcZ zOt;!$_HI*EmtwQSv;o7%_xpd)08eCA3lTLsaG?aWXxf=uN83ov2DP8*q%o|T%9T; z3Pui1MeG;<&6ke&wj_$xS63dJy zkOOhhzOWX&nuF$SHY*p0uW#?BA9eVfaMKY5Q=kw5aKj&vpyAPxe(&-ifDuPx1D>Or zImKPE-#-LP?ZC`^WxQ7*Y%hrz)Vr&efN1me^S-=akGjxN%r7H&a>q7bB;e}*eYh1= z&>L<&_jFf0ua3=ag@CAZvD=ayCnan(j# zIoNy>w=A*wc3V9jCenM^4;Q2a@hlbU2@ce@dd{JlzXZ(3oNGq`%vtQa-rj=+5rgb!Dh4w#R0}bKXXHAF zeZ4Q=hU9vAK6@o%?|c1Ts!qk)m)hEcbd4^2$nYa1kY5#2rUdW|fzSUJOf#7ea2H5D zZ`kV9dd_BWNuC2?Wx;^^u5A<}SCM_2FkgwanQEg2+Fx)2_xSJhmqzLv^&Jfoq&axZ z`?ZspmjXqEq+$?*mEFBXHjBl^+wp6E1jgUs)sV=G{VcT>xHI>QezeT5a|l50y|=3X zRY0o0#{9}Ved(#rn#3saM(0Dm2&!lRccnj&tL3j9)|Ef)jQpL)a3`B@*6RF2u=cgr z7UG%kl6|<)KT8QeJ!p47+wk$O$k=s0wNQwtDtB0Il$>X9arSjqnUmuRdfl=SK! zvJU9oLL-V{=5NHFXN>U=Fjq2ob0=q&O*z;A<}SIs+jwb+EQFX$13X1?1*WkFItdpa z;8r$iu{oQv!p>G44$Uhd0N%ezqw~TxZRVWh(A8S}=jNc02TZxWQQ4JOdDvKy ztI~NRh|s8!{t|q%I15n&6%=5+1>|voHLbwMH$iv@v{#Dnn@2o1!0FaD$D`2pI0aF8 zK&$S7{^zU70U97f2i~+z_!p8Yf?Xy(4b94^psES^ti( zffsv22H|!C9rYn#=glu0HTsS-ACN0>j?sw3!F5xdQG{h=F*zE)B&D=|`5)3SFsGeo zzbb==AI&JM@#^Ozw|YIPmIGM)&ICUY$qNfGUaHIP?#f>*Fjoob>gqOImUWdYuGn66 zJvZY=%z{aF`bEBWgU*{@?5$EOqf+^*f~vxA-Jo> zo6)nU0@Mv?9HtT;RkICo;H&b(^(#c>Kr&B9zuoq|I>S~#9AnGly#@OZs^T|jd?k8b za1IiRL)g82Re>|X7-7BDjyc$n0uKn0(zdOc6<-qa0dTVwaD*CHRxdri4KcPMd zM6$cG|6?Xu2u&i5J^Y?XZTAw@Yq=$+WI78#SlPmr0DVzXK{c)>0J-yrHve7ukE<$n zY*c9M*xYP9kzeoWTr1Y#iMy}$0Z{!d4|TrD_itQ7S80FZaB{ha#PK%{Kg2V~4k3Vg%8E;0M6m2V?jOrcsrr z^$8wYeC{d8eMhhG-}+ieZufIM@Oo+0?3?!KCz*2I7hx2EaZDu&t3kGW&w1?z^9~x4ohPCcdJC{B``gB+an-^K z4ymb<8ICD(y9F4e{h0#Dg%qZFs9aTllWnRwwUvK5nwDnNxm+5vQ^Y&)tXf^nnD5R^ zbLV?_Bae79Cx#*r#0K2~j_+8qq2j`<{>@+OVINCRdswF211-y@Mf^lT0(e9sbXWk* zJ>=%P^P|l@xaZ<}wim@mRMCI1#XZ?Vr6h3?UYXO{6`d>-WcC}ub|PSu-9j!%Msbo` zId`Kao)}wIjB?i90QM|&N)6gS)jlluF#OG91I#gWcLgTs@Ktf4?c{(sa)rAB=SQ|^ zqir+C^lr9RZ?Q^#!h>^KaQy-T=cTf0g5_CN&8+}k!*{C-Oq|6c^?^HX?haz3*1oxp9+K}!%#Ba z53j(^V4+4wEHm_gqGGl_2*_8h>L|eH`#{{j&TDNZrRz++OhGh+YiA}e%_|*4IjZy^ zedoM%0&Tk*Fq9Z>57drPiqnDB`t%6`LZ;eQ%UN`%++OYbOzcWoUg-JeYimGxJ9pd& z=(51P6aaVk@Zj>HLIX2s(jDRAn6hV>3OCxSb7!r^MYVb*9@lVbIS&)eb=k7LJDdH9 zqSG5*=4S!?-l@o|E(Ng3wO!1M0<{j9c(KETn{xXHi^GM*HGB(%HzWl`Y=8T;Habl| zvE~?3f=}eSKi1-YBDOh-=m~7zgusgvf$8O)T)PFYY}r@`DC2mOFAZHHgTNx5e|v}^wQ>w0uo zQv}-(&h0y$eLKJ$Mx2h`XwIx&xO;5l`Ei>AzdjpmtF#S2TvkCxAZ@|A#oYfblJdM2 zt@9#pC_!Tf*y7oO%@Pc_ILDe<>lJI|>=Z*KJht|S=IZ+ZLP;KII$t_FQHk({{|>(E zX}rP|B+(Hhi;@gf9{dCaL{ebX*D<}|wG|(@C$oC$_0km}b zS#(B)c}imMx|r-C`h2#V#b%m+MFUn*Dr@JWn2+=7o}@8=MFlbauJB`DwP|7pGUNJkEW~3A`vTV^XJ^Po-tA9)DNm&#l)sJ|D1JSmRA13is zfcyxR=tHyOf2-XGZjeuVV8McGf89LtK^4LI{TXimdfrU-m4;s}?*9F=3VeB}T>jMM zvoN}ua<=>m!f>8DNtwOar<4JfWnQYRw2n#UI?}81jechg<9iP1H4LYy5UWfvwyj6K z(NYO@3~z&WpS%GCzbf0g+U}Lqt+j`H7VuScnikG$<{Yk#4GDbPS#DiOi?#N8kjY*@ zhMx6wc4@|U+EzwA0Q4XF;8iVr!TndIJvwT3isgvbQMY%n_r&&%_|Y285F*1@%Wsh_ zpq=lAWX0-hj-cC-sRq<55MEY;<$F#Lcdrpvv;!pIggo@tL_jG#7r-|*GB}6|xAYIE zuMJ?)x^AzN3lc_6&!PBzM;e%Taa_AffOskCn4T$IcLL&tZ!(!EfijJ9Js!nqRb_Pe zgyHckaWz3aB@x)FOQ38IU!Oh>G&@CVx{gDnLV|4qqR11V^T+#M_v40VRVi;o>FzGW z6|jz4OL%a$FJ{?G2gi3>+)L|bLx`6)vv3=iw}w^WA5Uli%sN-MV`i>h{TMY9WlwKl zO`~^WatpbHUB??%v3J8sApR-Q5GO*b>M00+k~g9t+;HHRi^RSCyIkzbXRkXSrkOMB z0uiS_Bf88w20oKtB$nQ>vrLD+J&adGx7|>nAkm`U5k{t*#sXn&JPv6u2mRl+#m-ll zM{>b)KHW#oRv1xU1m{P5?!H3!7u=(m>4pw0X=dJZ1AKvbnqWgC^oG(74x{ike|?7O zrKp0BXFJht6__w@H3B%qOq)pN(9asnTqS5ezy;zkTfJq!@EySYG!QYSl!^V$(rIjS zS6B5OlZXP1nHhZsey7Odwj86fgMx4bMHoBLeGdM+%mCrOZu&O!n;2jV%;S-Y@IFjx z>4toOPwI~V%&oY~SNp&BEWbp@yhnTkuuK3sBshdc1GVRuIqsrEUNnrPnpSv&O2!M%K5HX-rvu97O%^SjtHNj z33E!C<-ShZxo|o}CY=N1^P?v&WCqQprp~g9g6gL8uP6OZw+)xnUrlzPIGmE=IwQz2 zM5Swec=MbwV|xQ?M2IH;LF0Wsg=L{ODiolzRS_gXS@{gi0_7pYQ_fE-^;DZ9qW*DP zt$$$WJKXu_Ek*4bp-oz^eRY(A1TvR8r66GO8p$Q9VG`B-K<$F#o?%g(!B&2?7|mNf z2RzyicLB^10C={)>_-yg^n2r!Z@3BI(ciwS82E1h^zNkE1)-5nN5uz+NI@OMsWy{r zU84t6p|XG~Kp`_ccVdJrh!Wq!wWe`#FN+y2VO#7s@H=bfXx5yvNfSa>gavw#YvY9G zWUe5ZR7Z>VwhHhQh*Nwo|4kH^BXYI-YD?!WzyUKKEPTxiAN6z82NR1u5`nqquqYH- z^I@ZB&$v!V;75C9+Zh->zP4vJbp!A*-HiF?hj#zUh`8SW-_uj=mA+NYQJaQDLi^ERW)$i$2RW%WRU`i%?&Tr|~Ev_Fq^FPj6cajyUNkVo4>KJR7a`A+FW zjYv9&*N&4P*r@DE?w=at*qDX~s!dqEU-iB2845xrDm`39fI?SNA}DEL#wOlcHgT2X zQh?g)K@lTQ!tb`thJK`GWN@c{3MhbUfob zdoDMohZ<{86@i|~@15Kb@2Na^5iOhz7J{s#3fSW94q>v=CyQsZW z8Rpo~#MuF^54XWG$9xKumFvLx!0SE%?|Aa5Kl}AFB60td-TV>7!aLUuY~8W4jSgP& zlp_q2k*1nHv^pgNTfzxo=!HJ>B~t@fii){sbSshj|-Sj=7xo0yYf*#i&=6f zQrCd<3YaI0uZ=nKYpoS{CC#nb*Eqw%k8SfA7BVs1zt~xAD}pcW3~BEr!~I4n5VulZ zkH1CO_PLz!!NFdg4kE0z+)aT&MJ$Zkw>>x0=5(vc~~Ar(1}Vb>Y^Y7nR_i1MT))Gxz$iXXM?cAI2u=K^anK zM00l06|v@Pp20mzOnS(;agI`yEINOb?d4soJbOZ;B?*ez^$L*R&IimRHW*V3u>|Es zuP9<4DY+&TxDx^6HxSzHks21aULH9?vHCiX=V4PJ!vHyaZ>EaY>8H9v%^7|)zCBwAK~(mmZD(>% z;wxdlt!W4~x-iy-jB|B`Pe)hZC}ZqA<0pHHPeAy0J_~l9L-n$C;J>w{n%w$72k3K> z|L4Bg-T815CNLb5k~HumT2sI|WAc>``&Jn!5G>k%EMRwYbio5I+B&s>eFL;h7IV=C z*dBH=I5OLy4TwWzNYNBVq9lQL&T6_P4Tcw*bD~#&zITND*Mjq)rhXAjF(3a!IGq;s zz8>_sTQwhk<|`g}r?}q;>)?I(JQ1jYc^~CuD z{!={VDozryGP}=Uff|7!?15{IsEKPWrir!Cvm0OVWQc9c_wM0Lc^zXrB5>0gU1%^bsz8eC#@=oG*?YRahrXFKid z{q?(?a*a)dP})@)kCJUFDEm%^#Y**ys1~3&{U|>!K4QiywH}8Zq$9J zJF47RTu&G1MyP66H|_AGXgpKr<3cKW>{Q4rYcvHyRk2_@*Y0M$3nJuP0=cl-Uk4_S znki%Oe$V3q)%e^@xNFd?`@puFP8$)lCwWYll5cBBeWUVGRlvz_zILbZ{}h0K!fzf6 zqGjW%h*d}B_f_J4zQuj4bMh@^yw$31=A@`nBxFTQP$kaA!lj*|p5jB!+C`BBu?rGH zIbI0uFoB7Ud-DSfnmW1o%J|qFme7`AX`?Ekl)DU;!MSaNw=L}>RL#ql_Th_P6oKT# z1WBZDLq zr_}dls;%1j2>g&YVvoj#5Lh6v;YAOJXxkQ>Skdu{?SuI$L5$@LwN=)e{EaDzIRlYCJC;*1F}pxy8x{cm=E}|fa?PsLK!o*w2wG%KGM8-1mcki zR_f{}5Y{qY)o`ZSu=qL8Q44FhsyQ;WyE_ORgFIxX0R@3H+kxrUOVtr+#|`NcC5EKZ zv|v^T+A-N~N~Law>g;Exc(5Cs(8m@@G$oi#K{`;#MW{BYohzmBI5%q`^!_5<$&4ou zAi3Ks0$5j+1ln^DrMA6SiJr-ptjaQi^6T$9L*&JLc?--;^wWh+}G!0k1D_mD`l zu1LhQ-CMJ*eYn>2r0CIDmMsDK7)vj6Rb+SyY-W)|@GbIlnfxeh3?{|mO#iCZ-&u`h z&UfL5tIF=W4U+#cfG#rO^X&xWjo*E8oewR+o?K^b^E;pJ`7eC-r(k?YAg*%>+mXsA zuLd9L&JQ(_|Cow9#XQX?)9sQ~a+U|I=gyY4A%QK8A~ul>rr0D1bCZ{nFpC&2U&D}& zs^ty}w1)~`@20gCw%RIWW5ZShbKep#tLCpm!=)UDwL_cVKVd*))6yOZfNI|Syv5+G zKnPMxJBtIZYiDn(=1`LSOqG3Z0CPnSoJFqYbOOj*oCeoErUtHr0-s(6j8avRx9HTz zh{5f!(wU&`y+kG+bTVQ=dK95y!=}-cX(EN;L3SoNBAGX960wE7z8V%4gKFA^&cR$& zk8z{L36`fA+;D^vjPTniORuZ>^6PzlE4#Q$RQ*aO@OHhil>+;w(A#dMylPvI0(Efh z($Jbj^tu380Olni=l-#R4Xd~ch^Lody@vYtgOX19nFScXS3fKI%8q4hy!XlE(FRdU zU4rrlz`XAwE$Tt2=s?~!q1visXtA7)DrTFqamC0Ke-9hUkT1_XY}>)cLcn)CX<4_w zhcXq_fP9y97+PAHsNX{Y;8+#cePUUnlx7^ubz<#kz3 zi1sWz>#Jvj;=ey~U$Fl>>uz_Jq2UP_r^q2=E`>GC_&WePp{r7Ous9z*J64++&Thb| zPmhrgK&%h7E+DJq#u3agmPbaYh1|mpp@?IW&Uh_&7z{Rhc}x&7g&)4INwU@(v*u@UsNM(M!Suao#YUL9 zVqsjMfO!UG=6hmCF>#> zUyxo9I?n1U5deAA5st6dNzm+ce=0f?i5M_m><*a2SIc26(M}V`NH+inXPwquO919x ztr`x@rq3jLJG+jpG|SF@B^~U5V-^CdX0>fMfS)8Esg#0LJ@|$B zFX_!3CyrG(VD`winE}U!H5r>ug>+pQM@eMhS!}92SGnPG@o2bnNU=xHf{5;w=x>x5 zJf#>mivRZQF0r;_vbdj!p3^;xOfD=Ktq^bI^)q0-iMDb|r zG-B8hodRmSRWN=~4d>X@TS-HGymNA;q!UXgOrQ=+gybc}_;>A|-ycE$p$hu(a)b_^ zWGs#b(bQ5dcdG4YJ*TN2l27iuXA6e4zO*X=%bh;lJQSli3%dDm%!)eJ)d0(uM>+P} zbGxvpd9E_Cx5*W=akr)lW)w!z-5nl?p4+eQg;}xNC;e7{H?>UD68`r)C}!OeD%HVD z@$xW-JEX>(fw$Ism;l<&ryqf+xJMAi^em5+XShxX+)C*;`OwYmkFGT@Ct;lq6IO?P z5h8Qm3Nyd=29x}+9ir6;nH}f~p*t{vAXGsIF zMiut@P_&vO&dWC=nz7YCewHJ>wzfZ;e;W|CRJ->K_m&;m(0i^F+Y84r65|j$UaspX zmD=Oj7=|BMfzLf;cU$yy<4B5Wr2ruslB19tR^o9nlja^F=VsYo+85V(hvbeUNJY-` zGc!sfCBWA;BCP#KI!nj|Jx1-ClGenlV~$Cu$dZT{h=eQzxeNsw&{ep~oMnI@&NB7=}uTAb++v6Ol0oumG zEh)ms#L*85wpq!r~8%6*84c6u{<~#LF!df~=*O=E@BinN{s6 z4tFYFdhiC>Q8oRV7pD?;JE8^J^&X}|8SFJi0O#KOR3|kwKG?4Pra1Jv5t6gAVk?6B zRgFxobJW$AcwHD7kgjVs|It_1z9p@ZAorJUkM}eG)89O*g9rMMB7Q;x7IlyLNP%nb z7EP_EDJSRNKZ2LU(#&rhq6_IL0Z0Uu9I9+o0dp(*2H0)^ByjAoV>roWg_hBN%>&;Q zGnr?*zr^mEGcAE~-zsxYz_X~XCvu_&IK zxE>1L&-_XPQT9kP-G7&kbpxRnV?Y6#s}-=-;S*l!WDOuV`ckEcFSg3*Z=;Q6EaQ5N zZ?f6}aZOe+7l_5K`fUr~;AW&zxMf&1W*`+F==`-|^1R~V0Rr^qws|l73oTxUs-4^1 zXF^xwR~BcO=N(~TF-JYZNZ(Z#pFQeg4^yis>$CSNV4)LiwY5)%@v=hPf@VJ>Q?S;l zDUs>apwupx2O5~}j&4lbzLDb~I3p}TvABjE(2o|)jndNHk~em^1g>i?XIHFpVvKgJ zWQv22p4Cdo_=95lKMT)ykFqm1U(w2oyxOw1aOW*9L4=E z(%(gPUd^tj12+V+R9Jyd$WAMoSJ)TX`(lCG()(DfG5(8fW^W&EW{y6NQX=X+w9Gb3 zfSpy~xdblNSm(z+egL{)1eo!67yT8~WKgH;U$u*`E2uEQFblsOEEM#)0!)*`zuW7J z&FEX_8Gy7-IHACH@My=vZqtJHayhXPu~Q@jyE+ep`goS!si?S4&~)w(uLS_1<6!sV z;hu)xM~4-WW?hv=;U%Sn+sed{Bl&=@M)a`3kq^doxdP?;gZES(->t0Z!*mpj-$yPl zIv}KGrbqF;TX@!7KjG$~eQs(;?@S>nbTJY8=US>v50m#GfLaCK3%~|T=x?>F=i)R3CtkMD2XTox9`?2{iklTjJ-I#e|Ss_|EzL zsH+5W=VEM#3O48Z*aYG}*Y;gJ2*Qh5zkeiOdT!62`?$3$MZEHLXCREbCgo3*OMa|^ zEx@!$Jmu2ifJ@CH2Jl_~7~y#;?!iT|en`Ch_}49uH`2vxX4SeqXHnrjM+zN_*& z017%F3_+?~-Bh*uI)|HQk-%KtM>Ebs7NDGtsFo}d}v(FOfiD)=-n_^9h4u#VmN#0uu9WfEVXGJAKPN9-< zhzYx8__4oxZnWCI0m>IhdgJF+e-<8LcS7U%$lH4zAP4}-yK^RLrZ6$eruK?C6ipdy zG6K1(-(RE;qQjg7#J*60EkGVg@_}{pu&$7gM$~t{;)$?_v`B~RI;a3&)TXiE8@9;d zmTu4`K(igkv!1-%#lTvd;7uN?-7-n1fscWAb!5jH9ZImdF?_fXT}%ZamCKWX>@=DN zrW(XC3MYhT(TR${sq)l{=qti-OIMbDvcC|Z6S}>I1?vW(;zEJ#s-PA9%hf_>IIsy* z;V`pRGkKy79}XGc;#w9c(*{HOiUylQ>jIse46N&lW@vvJGY@f9|Dk;!(*k_##etrf zELBS3Z@@j%WbWvZU(i;rebw9m`y*7W9e@wuJhrr3a2{LQuh+9J?WT%QwzS`ebY|rV zHU}-HAYQ@V*_Iyle9xi9R64tjX#WP$ejKahD*(CzuK%}xb@v6W<>TkUxguNgdnoJ1 ztD=q^t9DX)-Kp->*nPD+haNd|Jm&nj6-fKrDlTSo>Dr!S9xf#Hn1$VZ4!{hU*;JgF zI|Qy%@Zh-T_R-jcq3CjnX8|g8$i$vxh=6bptj-Gs@t4SeqDt-{6Xs}voqN881Yh4f zlA%vPuyFu5t;<(049yx=V_qx=x)Y%wE7@F=5p_9B{2tXf9`f%1{{NqV2CiyB;oja4 zkv&8z z=7+~qy68Uy=#PBls+AQgE$ighC|0gkDFeG_#O7$kQIrZU&4ZztQNb-5!!)xc71tvR zaUCS2>^4WDazZ7U!4;VWaQ_aW&SIwAG8R$@g}L3uE_#@@r=V6YJCdM<1_ha0fO0`nIL_1koSvPO6;@++XhcrC4pRs~ zo}T@m*hZg`C+~ub%;0do^f^WEH6PsPaHD5o7>t#HpiTj+u7$2pjU8anDRoMek639C zndsOA=cqrr0_O1pcdhjsAoAuAjvOmgdUTGFL|;#JGhbxG9K|YCeZzQMM+cy~EbH%&r8?5pIzCeej=@tCXFhi6*Yxv&1-1(c0wV|xy zq|8Me^Xc07I3C2{{}7<(Ah6n4O8bum6O91vQ5@kLG#WCquPioZav7{ZZbEr7%QO{w z#0tCpT$Qi6uobf<3-4rtJV$r4I}mISpTvcAz=4n$b(<2xZcV6+!!Wq7n{tjh;Cvdn z^^2KH)?=<}K3<;X`S7wW?Cy{&TH5~{@+X+Y?&MhW}fTk8`&MlN?)WZ-cPiP z-vZPS_jtdY`g|wW%-yG~)2eGsf{)IBV1(|Qcx&N6PHab45*=(V6+MstfM^-Amx|5% zN${=AG(@F59k|`a+I#bdggSq%&Dz%mo?L-FK3nETK7`%O+wf}AJGNp;tjX?Uu6#M+ z0yV;cZW*x!vwZg%y~`>SCqX zR*=CatOQ@_*ao))%qcR4e!hIvZR{hCcre+T`QOdmQkML%pj#bLN0>{G`ViWiJ6MKP zB(|)MqfTr>5A5BBZ^aW6V4s3+a9;GfJ~qcCAZEe?us>}wX@NDD*mww1VX51sT+*r( zraDKt0m$Q(@)N*32#`^|9;N<^1MwXg!f2G43qaH588YdgDL5}J2zcdd9)6PeRug!g zxu<62Ugtb~aid@g%DU8o=c)j57GRxN03MUafRG(h4Eb8jZARR+l~c^2 zyRcXsAm>gm^YJ!(-9i@>OZf>3`FMJSho2|;sOPZ+RqIPGhh{YNCRUSpqSabz;^Zz6 zR{(fnFy3`ntbF1#Acsv7hV;SiC0HaF9}6=7*8y}E{v&wAfK`JtqPGvld1;2^q9uar z>_I^kr!%j-O2a(5-=!g{F0f9=L`QGcs-hyTM@Ye9IVV5?tV6|QVZdI2Jqk}46wlTQ zxP2WaNDt)((N-fM92AHEfA9sw;VqmHEA)B!InaIyy?}1EjcMN8A`cioL}cBs*7z$m zKL1waHTQACE2Ezy5(i=p$HTi+2Vd-2Jl^Bu|6%#x3Bcr-AqP_EE(U>0M{5F zY4R-#%vt33(IjHV$ggkxf66~Q%mE`#$i)sur%pdig;(T>ub3KJw=d8MB{gkc>!8(E z3E*5~lfM<&%AG3PrNx$G`vgtR#LahOnaQSBe3_tnSZ-U%k5?83fnGrfX7SaUPKq93 zvCi1I9H6+bY!WUAf{FDS=LQ2d=2D22CR3C%@wiNIUIx-b-eZ}oh{ucVgQ3P zjn`1HngShth>h?=_+vTwqm61!HH6C0%`6buB1@DYk2RS%B5yy7xQ1E)cnDGiADBb` zAr*H_Ka&p}J^P?O14o!_)m3(xXM{PR4|>I%7)A)@AI|p`-d^p3niHGzwuZAa9QR^A z_HGzZd5MO5UU(;CJJc-(?EneLBfIM><`b-+x6H8Ljzpe=iY@K5s-|Wh{rcNe1j&C6 zqiagj68 zCpv68-efYqK^R8Dm;;5Nf@xk)d4oN3QGXPusbxqNc!*p`Im?`?!e87U7J$2I>vrN< zwh0;a%sNqguDhTxQWaE!8tZL8yygr`TL?%pAs0Y4PuODz{e7qR_J@**&U8v5+CmL6 z6zalfDT9ub+(!}6_zlIs0duMfCi8Aqd;GZP=sshp(H# zU&J%BQvJ9EQ3aGe?KM(}VuXjD$f8k;u&MuM-JLkWw}9HFlD#T=RpiXS9{>zOwhx`p ziy3|yK=zIDVc9WTN`?fA84l2C_)KRVC&D7K;F~nB#O(@TO$*AA@7uCU4jq51nc5ow z8}ZwFJku=bb5!GkB99!tn?Q-q#R8@+WJv#bXhSaCPBU+a1Gejh&jsJ!JWRG zO1cZ{sZlY4BiQdE+y{8b++rw(oRBSlP{qX|IxmN?&aA*WH>);m<0=Jh5Mq-Pc3?^% zx{3T3{utJjHlvxj5 zHMeW;6c6fz{r)^C&(}ST;M^t|6f=8q?DP7)`T0CJw-x&{`kh0A?6~evH)pnHDBtC~ z@C~-}X_pr_U-SPqKt9{nO)}dZD8tV?duf;=b}=WI?cpX{qG1HjXlB~Oc^;fD?9XHy zdjjU&^~`o@M4`JSFuzFnueR_bQUIx14)eG4)@enOP^qw|-@AWqT{-OMLk94D?khfj zvD;~CYFrR!F=M+d;)*tLF(tXqA{&X_oub>a&5$vsb4dM`4v)GBPK<6Ca9z)ZD^Sh?AZQXIRK4AZT!wYFz%b0U=e^P#;Hcxx*1E!*za!cICZS@p z85g3CiQF=->bEeVnBQj85dhu)(fU_JKpPEAq+;4CDH{bzx3F1mcC918GdMmnP(xs7 zMRyDqxxvn;ry8$wLVFeF5p(%hNIgcaY4e{0bQ}0POM$1?Pb?Bg@z4xbtch52u-I03 z*hAj7p&Kw>wGTy0g1cSX_{qA;1N;OPUGtF@J{h51-yAwhEtreLmTx@Uj)jM}pz{@R z-TmAsn04d9#F2uH>!dV$2)ZjA-& zoxRKFZ=qnLk2`~y!1#!5>|_Bn>#Dg2<;bL^i^~kvZQLOKNau&QtGs?Ef`1e_sT6kO z3Y5o|ape12^j(9`0XY%@!Hiku%P_a+xqE&RV;{t3%basfhfl)uDg3vN-lCF4Tib}9PRb#}iIml7FE$(PcDiA(u^ObyH7smiM^7~$pjX~5k z5M_7a(l1ETinR@gd05CqfO=G8VDCAh`!E74F;v>C0*CwLFwPOb5un@l+h>b>@9RXJ z$X`I~jwdXDa}|edyT>t-SNgQx<^=5Y0N=iLO2DFM$aRo0*r(YRF3uLcJW@6rFe$Pc zhR>Vk?7pdx;jKnub~q2!=o7wVxt#qO-Jz-&ESmOr)oEmZhD*5Zb!dMHw83$_(Wl(a zn+ICWzGnr_@1Gy}fIo}pa2jIfpO9c|i@%L}rg)b`trBPV`H@|K=}C zvRIL~r5K5;;QAyB4XBQB)a0*iOl4q)$3`1_@-8>YDPF+b=TQonujb2x?nepCX%12g z9C*jzu8n>Ct*Tof#`3;NVBWQ5Gq(BBkS`%_$IPCpiqOfwy6isx`gZhixlm&p+# zAVnaD=9`|W3Wqh&PrM7{JUwN#-;dCxsyw!)BU7heTO}7Af;8Yfj{Tg;_QKB>Pa?y_ z1L$g=lVq%dk&FAt_qN)R8=!ROUh3~Jbhx=lKJ0je&Dlan1uYMxMj95eV+E>LzqeDE zV8uO+tbERj>D)MxqY}M1iB8=Q(l0;UOrv@GzeLI;N!?Qqq8fe4XxR5RdRR(!?`l|2JkX3EH=7?}@XEPHyW#uH&^vISv)hIL9P z0Lzbv6(GOQuN7Z`dyn{{0h5}s{oGLulD3sx`Kv1)V|c&p{LCsbOiE(k0kj=ICiruW zi*7+S3hm1AP!SXifP9!+#Q>x19JvM-EIBCG6fDSrelFsTsyM2>Bxg)L_@r-1as-*` zhA5|fJz0Imt*^uai#$uc{<&DoRe7A7agz;srS7>0-;@Rbep^xRZPZM)sr)p_`ef^VK+OHWf8UP;;yVneSVr%jtU@HS>U}~diiv;II z$JY6>dpqw$hdtA`%g~N~JVdG6A^>*_^6UB5|1-XJEjgcVl{i-7bey)-*6sBLyDq^X zgSuOY60Byi*^V*a0p;mnOQK|awT45hu_v(E7}egf4grK}U_JtX!b#n|5oXM9LSlrO zY}WJT@&9j3V%qSd$F~RPkU-zv8)8w^5=6u(+V+QOxy|m8>qEP%h(}fN3SE-x;N?8m zxyWR_o{YatioHg!z8O+X1X4pMh!}{I#A$9GIccq47YmD7n?rQLY13+xcFvw&l$Jqk zP2G(zFhe)<>=zNr8ScC|b4Fjq%#=f*_ZBbPfsOC@PL=%Xs3X~mO}S>5!;i;N0fk_N z<=W$iSCxm_G_ac9S~F)2s5bz)4E`AHEXO@sj0D^m-}8uJfaUD=lQW*h^_QK#@67sj z#@zvTtgdS{me>pJRt{PS)CCp7FhaBRe`?@i1Yyc+Y88ChwCMjULL)+I@ z{t3$Kk-4AuMvH3H&t?AgH44E%(0HM-St%hdrRE6AecQhk1lu9gSN22==l?cDUeCox z^>T>6Wn=%V6A@>V^Ga3^Yp?iP>xV3m19sov@pi8k&GcMxW__327zx! zW4(yG1sg>!xE3Tq1Hg_#t{5D_*BxKJ=0Wj1RrA95R$R(z$vU~@hBc%( zuq1{qTE0=NYG?UgRiIu1kTfnXRFwr+K|mkxP!q1|wjU9wV+d7yNPuu#grdF+UJ$le zYL~VS1Yi~CzXLV!G>UgMvA%ql{jUMNhX!adQBO-*=;%a&Z`ILfivS$e{4eD8p(+&p z&j(0zoRZB)n2XWk6D|-QUi>W{%I?}<;GD?* z)l4AGcwG*~Ci~zvNogdnd4!5toX7LxKXBv%%=iSxJ}8fe0axVvP-@H7v7!Tl7vDe%cii3LJUA-+%5GimQBd=5IF%Ux8g&#DSZHpdSm#4!)Ksfw-w>>2P zyyh7asjEtyrUs9^rsHceBspr1{i^Dp$g?t$fUtg!d9ToMlZl0O$wc&UuOB9;4|L;Z zw{@b^tW29S!NFcMNFYK}C2v>P4)Q~Uc?!CK35+^s+x4^CQnX=_?f9I1CDv6b zjP(eCJxG(a)hOJP?v`eF+sEQSLju`(f5#<^6);~_%S9kM26NRo0rR_N^a7TGjIcN4 zq#Jicc(z}Uk){*C%tO9r$lYvsAUBVVtoKM{h%nZq0dDMzHIG5L%k(ILe~bys!{g0t z86xxK*bqBkp$L_OJr%`So`;@erASaI{N5wJ@>T4;YvM-BE))RT9G9Xg4(L3<&Zkp$ zyk#vPuiTtyXv~qh5vtD0G?Fg&xIp+Mu;~gHX6BhA&7N0`*N$Ku3UFIiSp#T2l{9Ae0*b z)h+N=YvJuVzNba{s{s0)pc*T(oip{F&0OuFlvX1zboT&~Lb6ZzZjfPCIyrqK)65zu ztAq1EfcBDc*JEBIY!H8VhC_eMHm;aJ_&_0;BG)e1v@^g8mgF$%-y10dQx+pk?d+3T zKTUNPH@L_BeLH_P=f3p8hkGXcOU*qcJIbQXyp96rLxA(Y*Y|oaPyj_hy1yLW$Spxd zx-wilvD{O><>;OZgla{~&&D492tlw`2%hau9*Fl@f)~cp)ovu%s%qKK3IizX>iLeN zI=&g~eUd*J^kKr{;1vfw7F7*JHY(=+Ft6t;?@Dd4>&`16N2r#|SKbWru$ARNex_DG zY7xTdX)bc%3FvQt4FCSuy)%H=b!ai{4=Q0kqStJhU$ii5k{MrHivSTlv?_npqxv^o}PJ@8YrQ#mu>v>npJadHr z)IEsCh>Du7Tg)l9Ps@#w*m+ZRfT_Ba_l#wK$y$^nXY{s$%OabM;%UPIY?tX?RdmcM zx0!)CFIk>LsHu)QZ+?r{gagun;SF%kg7J2h1M`QfYOa5G1jqXb%qOd)6kOwL-(3xW znKNG}+8nA?cZ5(sGRP29+?0UV&g^=bO`xNy8IB8`)uRokyK-eziA>y2)nDdBg9vMjsi%f)-d>a?x4Uma7b znt6oz9$u~W6yrtie6VWoR#nl?sSimASP{C4V2I$lCUlfi@+j2uzX8T~Mq58wb$^OV zo3_wLS=h*Dg0@7gnr^8xIZ7%E*cD&j;XyaMl zZR27E+&k6#m_OW=-Jp+fcajAHJ6VdMzhCSKjq%LCTs|Jex-$~!E;Au9$#aBSv=gjE zhTe7adzK`>a)G}=hTFJv>L^07CnL@3?`;03DemC;^t8~XVcAU zVg$JNMKD{VhIz~+ItQ47IJIDGMY1%(Ck6O&sGm6zxL38Eccwe+zE(IV2!CxvMDTk= zMsB!1R@)|z0LOv)f7VuMEcU)`OBpZ670n+arq16pp$o}QY&K}nUK^w9hUApayYj|Cfso~Z8+ zz=p)5uC~dx?vX_~pMY{={qf~|=|--_21Gg%;fnrf0J(cj#Vo?OyF>vvB@#?wC1(BC zV+Y?Fl)u%wF3PdG&6*`iamucW0Lpg&dB^fLA)sopZwq{=!FbLLYEF!z$df`7%wK^K zx;bl{&_^gizg>cCDEggHva?UAF`~9GWl!V#DzeFTz~tycA$RNVcx72ICh&$Y=-go3 z2(Vo<+Z3WI3_;&FlGEiUzIRYKHKYe&_X+$6vK=#a^W{^rD^jI}BjbCZycjdf-2mVJ z`VoNsde#N&mXDTmXETU_N-h$EWlV#1f>B~k2#o2?%G`_$ZyP(ymLe;QSVR zGeDSzv^ayxR#i3sCnP&s$yKzoM?%0}Cp@Rjz@Xdp>J?x!FpnTR9)2ru4*Hp7-P&fW z_$;cAi^5n--KKpD8>vna=@n5B*%J1JEeop#tTL)^(!3H?dNFIh~Yk z?qV!}0)TZ$Z7BqeH^BH}jXwE3Z?L83#D^_v6vD1|r5ENqPPj{hwkKV~+@ajC0Mu&F z4L>f%+qJ362!a+lScsm*@rDt4*ckjBd<*x)BNzB)f(W-r+Ni{rY4Dg4#KnAXq^>WF zhP!k9k6x+YmZ?S>d$gtZ=q@BN+tBgp$#_N7^JzyVMy+&&4<2GaRYA{+*8`IGi2-p_ z3od^PHLF%BD=q~tM3qI_5?mG`<^Zy-j2Ll7!T^@z(&ov4{n`XJNsI@XgNSiqE!?Uo zrk@n|Q;IfVVO@LOkF*wI#heCMn?E)R?H8MOhN^j*VIP-=xxc>CSg6V5#>|kN0l23F z-(|bF!S`tbiWQ?fM|9D$Q{|>wKs$&342Z9M&aHp>K@ZG1hE(ayI^7Jdyk>P^U6npo z>F>_m(Ypa@2n&&oDBk5rc#!BYXx%*-ZL=0%-WT1dQ45{@WT#@V9D)zE?dY(#=HQTu zpa$vtI{`drwqr9 z*ddR7i9P}O&JcJ=K}tJ5gSdGNb35nIqx+C|d|GMM~sM0ixK9B4SoJHKOF z5w~a1uHSa2B2MwS1~&xH7H725Y+@11ojq8{6V3*RN1BHA+U->^6c5a37aNFZ^BSUX z7*dWxO;q6`qJ6n|{*&N4}rGK1vgUd6IQ&_}P%;c37&7wiKMB>=#zmW;O*AHP z11};0JMM6?bAJSBkXxvr58Wt`W33)&s4<8H=0rZw5y*rI+VN_~&#iSn`N8eYXj$5S zUX}8L{_~{6l$kNF#7e3II943#z}?Zuy@}(hH!gW=W&ld zw?2H>9uo0Re-S*<_AxWWx=SL9hQ--(ym2o_cR$1!kDk@`>3|YC#LyZF2O(O+>43Fw zVUKH?;?PCe)~^}D@lc6|{f=i*(eb^{Q ztIx{?i0VWnItwGm8ref_6l&2C+_BJ_s0@q)c;_P5Dch?N_I&a(@46b{gqi9pGE4uC z_#TchHS@L6H{NNz#LtVKoT!RM9t7kTn0PZZxOVcLWq8Ue@dmzglFH6n79)3v zHF?#J8^95MQ4-|K)M}k~p{d?{LU``S0Xi|5*-(L;6=@geJGyes#WDA-`JT zVL27|8Kihv#cVfE&JvfZg9R_5U<|7+njI-&@Jmugc@vO}j>PiW`hQ?aVL-hPC%8R_c5KZ z)eVQp3(Ooj0h#MftrqW`q8_DEp-;~f2#VQkpBESYT+zRsJHAYXy63KFp)G1SH%f@x zJ=SyN>hmvczQ!CiMEAOgLsIsQ%!pPwZ^7YPv!flW2az+v^KJ>hs^n1>9rhWH`MX-@ zh7(W<0U4U{%Rv|-=OVJ`g_a>QtI)ksS)y5xeU#ZCN&?5PQw%*AfZ_W>XYmNJ+YUqe z+_7p&EG$AFa<4j{i*-vg@pY(+cq4~H;gzm}^nLG4PW|fudM?x;P2jV=3q!D+_4iQH z){_>8Rlqg?Hn%{936!QU7os=bwJAeacp~HLNO{2g?U#MWR4#=FH1NO__h&U#7TQ#k zy50Q^7HL#ZC4kn{vLC^@VfZi5OXMv{0jZ&yW=7_Tne|6GZV+60>m=|}7;6npBj4=j( zUJQB%=DgDdkXE@HmeUhjv4L#v@mz{2#}?@c7h92)6LAkgxjJAgPzaF$I&rk&$;td4 zEa$Zm{?1}931mW6yTPVj@4*_gQpiLl+-6Meo z*;eggZ0x=5GX4Kg-M47jjoi8tn*0BMJi?9LTM{22tJJm=pRAQ+#_rx*k17@cl7PM* zjy>}>kkXo5E)}L+=4~qD6Ir^tR|(9~36=Vdfugv)Ka1>CpqsXEVo{3C3X){BP=#n& zw@27DKX5^e|W86`rR_kME`B6y+PVXNVU>iG9S_xDsZN zkv$kK`gi^S>|jkuF(d=gkp&+n2v2qW6I|doWKflVX3!bh1~Dh2)QtM{mWl`hse!Y2xlAaR_JXdLTj&>gE3!fb&k;4{On z+UKdWhd3ti(O)<%RLGG`m2Xl3`dV_9jhzIT;X5e>7f@Wh&DKojX;yb zq8j>hUO_5)W5Fm!LtWH4@zf>22>Yc?UDXI;@CAa%|IDh^l{_*s>*v}!NhG0Gl<2q= zsay2)j{%qm&1r0q-{;J<>HEnMJt3+mhh&owXE zW%2L3&I7V-{Us>pLtm#u?;Q`mltVHn8$_FT%I!vzngeXO)P;lze&ibH0`c1Go1t=$t_VZbp|MSq2mD{>* zHnTFs?K~4iyLa}(3`x)R`4uVV8M%K&d;0aCf02E`pX)v`9BLM;rsu63k8;qmCGNAG z2J4^Mx>DoYAt&GG>S^f?JI>>!M+5vd$(u%EkUMV>##V6p5Uhoe36y&vS^sH37~I%OQ-yskt~ei(~Gu2Ec31cKK(N|$NK!wY&v+D$Bdyh z3s_bWgO_>6Z(S?=TQGh#6qVHJd_p(=+8J~u`G;TmxNrPWXI+xZf9$f>lsox(7e}Y@ z3UFxw{b-{(MI{q91NJO9r+zOU@NhqiJW&w2xrW|-R57ho@=&I5QkoV-Sa?^*pGAPD zn*#mpu~{=`ZWd?l=?`v1sTTB%a;Tcqq&N&dRZ(w|*H!tMDhPMQ{L{L(YGG$PfNHhm zxeC?;u)7}DL7JEbi=V~W3Mr3gv=y~3`0;ze(68d$CiZ*XAe=$WRZ*cLJW|>KWv8-X z`;>qgw}QIX$jI;H7%B&pV0-Z(m+zEv=2;fsIDg+k-_5{68vO*@*SN^X4(+FCTvJjy z#(QzCd(FJJ@<&zI+*Qlb9w=~cQ=UI%U>2buF9;ySO;DOQH>pI)t43F z$@jW`2Wz5>%}9g>o?rlU>Hf~9Vp^WPS2)Moev7W1E;j)&h&wTjf~j&=Zdqp~In+6- zD%NQc(%GlAitIsKC$;gzb%-$u*P)*$_r%2gdm}U2v#`7B=K+wb-xZ*IYF#Jhuhky& z{$R-?5!YYu&cdKc@cS}OE(LKQ+aVq@3c5o9%)T20?YE=7@?vl1lI0s3Aa`h~uEWmT zJZZ(0cYyNQlv#<-<iW-#b%;ERe$~?039%_+Iyylvzu&V0%dvDm(yzN{?5z3BY0uoanEgDg!YoG z7|9!8N}DP)l?lhx=tK`zJvUcc_Yn4TD0vD?P(_6a*|YTik>jUjL^q#TfH`Ji&-)NQ zthCq@!>M|FsobCcr01HGfcqii7HrG@s@~^3yypx2BHG5G%ctAxg{kQ%#o{Z^M-R+A z>2O4uE4hzG-|E34_h$NkjH4!mfoPM8!}SJz1zI)E8ag3aw{zjH8w)bc>(s!XMG)c#nsBy8=j2}V zPW;sn31>FXEqaYJXzJW!SIH8NzC(bGlg?4kU>cjBeaQLKgP4|}I7%zIB~|nY_|de;1$c+6Rlb5Ng*4Y@cW@^XvfX2tp|b=a}H+S>MMDm8di;i&`DUNkQM zh7HG>BUOx*U1Y=#9z1yQH(dyL>)X`b+-Y$#=IU(AMV@1kkA^O>ApWECOZvP6vBSCM z(`?20+OzS@q(R)rztdXnj|23T>eH%?`a25+`4h9mI%cE!{*=bxjnY`g+=OM6a>$G` zAgbyasAr#8znty_apA?K4i1e^Lt|1mLpWBaBY@BML8PFoX3|Yr zv9V}v`quk1d!^em1}JCZMb-RLa$Hx3&=6PXlV;N(2kEdss6<6l;AbNyW*rDX*lV>? zib@qXz_bV96NiSa&x`~e!b+8|!Vhz^0Zp!@4Yy#<$Nq#Y=?|sMcu0pK5(#@tryzy8UKR+gO6U&vR{nXk_>ZFqJ$R%)iRh_174We{` zrY={nRVT}83CEFd2+bqN<ZTSB+u90;+BiF6^`rKyLmy=%c*RRLRdhgPAt1LEknV zJIoN)5g`E2a?Q%PSbwq904B6c`qOCuu++2=SybYK?l)CxF?&>2d%2)c)YL$|;{2NH-7FrD&8is|hUgkF5O!l{&zxjY-p7H^Pc zsXSl*^Eot#!te7?2*Q3<(e;4^ta3*xFr4X~(s}(V%!G}_-hsD3e8OFTrW>>-5!8|L z5a1}2FX_yznQ=Ssjuz0=bAq&qljlAYC|F*@4(y#O6?X)a$n`ZuHID*QU-etWU^-g%Cop$P3V&iC!3^=mg=a4K4VNAbv?gAi@yi%X) zIhxt)){?FH^LBol3sB5x(Rn{g)>(EJaF&*x*xNpH)ttjG1i=rH?%u7>z13ofT!Gw0 ztkT#%^X9c%2%EnfO^)RWr3~OOUklY)CIBD90iI|$=oaMFTs&88>$W=U5@5%=6ukUtm`}Z^+2Xq=+U~+O`=>k)bN->|sIy#8 z*W|t`5pXC%prIF(m~76OXCYwOvd$Ois1ZipfpIk5edb3fk5yvD*qzJUqu#fyyEb;} z3@Q|sWIjCIXXjDSJo#KTCHn&?A5r}BLH}!K&?(J^1_f)2Gh!4>{j`N485TB{rICfn z$h=fCj%ShIsUruUAb-CU0aBeM0<32uw|JqNYjp_%x^82@(baP3z%TPF472BG_qE@rJDN=t3lkqiN7u5lT-9K5Z{R!?!;9!i zs^V5#`q*&ZD9TzWl?^oHO|&IpQ~X&=Xm{~oXa4#=lb%zFP*^R4(4?~a4W9~#j(n@Iw^0p$WPg@oLLiPqzKQVDE+cPR|} zv`mvQ?zPU;=O+O7BzD|Zz!cEMaL?48R1+wlW{f3)y+ckUu~lx&;%7i!#Kw~FTm4y< zTp|PVoTud3b}xEcEN0c2IVh1!mG?GbOdC&}9!#FO>~fMDsL+i@)#rA7&k1F+EPy9e z^|%vG%2U@&gnW)4*_w=_j*Wt_Cfb$rOT;_nxn}`{#=L26=*oivJ^(3Lb8J2M&UzR5u{;gKP$i{j^pKMGvBxeq|s0om6 zjq_D=$12|~>r6>RWd6?v!<IgCeVmEdmUP%J77M}WLX5lU{6D}Re5)xYD5AGAcya!2C;cg?Q?0z24NoN-;lw3 z^ixHCDR&mnvF#kNZ>g~N;9OY-Y?z@zpkAsk$6l#rGhd-$R%l-_a#<8?DEaJE$u+PR za;B(bSxh2dw_C?1Ah!;H`fEH)lLC!>ovf0(S6jvcu32f9v(Z>`kaBIRO77=0(>;_* zA%<=;L?85NZE(duwsSz7tK`xu7>P7}PNFk>raMoVJTYZJXYXUKSTA=LQ;e|WxK1cQ zUbRJ3ZP62!spj+fcf|FQ#v|dOAWiyDt2fw+;-&reobxN^ZKVi}hW|@*+g5GRa%OV0 zYw*RmALo02gZpwO;fpwwAybc4q9d0JXi3jQY+U6S)$1j*CcE;1P`4AVo($JkBTGje z8;JD3w}Ni=uYIXzzoCJ!0OAzDG?S5VPs&>ec($KbS>n*@XHiDqha3oD8Nj!$>QM)9q9n< zrk{eMDf{x-^;6eDb~Mau1oQg-kqMFQM)-Ar&GsXm@+>;rH>wSU=4nKr%7LILR$;ld z(i*1e&4H7_YMz7a=E%juk83E>r%3bQ<@4DC^L*{Om0b}s$I!ms*{@Y_{sfOwiKi8- z&dJ`aE#ff}5Ew}o;YGG?5lJ7h>aWM<$HmNz0tkPrETjap7DBIVh=qzmuXVkg(@g@TD*8d-sjJ*~7H$QodW$vGs%oj&4^{FMKuVQdGMO1$SeUJ#g;GfYwcxC&Q{(gTYb9UF5o$mbR%|6oeuiKNq1_YiB*!f`tJsf+0Ljno;>V zw@y%3Ca9BvLr|Jb>@yZ>+3^6xa?PVD+i(D%Z<4POluw7XKMdVrak}GT3Css)np7THU*u!No=f6t^XKK((aR^pe$s$fz19p6RzOvqlsQI7Q zpgkI_9d9aktvGKMm&xq&YPDDMH(J-mkLBKjOC~UGq-3SD3C$*8UPfpZ6?ER?HPJGx z9CjaK5P?WSBsE>@a`}DEE%+Loe|=xaW*=umR!AGTC=ds-%+5*7YMV=kN?CVS7Vh6Y zg#uUy%FWG@ZxUQ8j{@c@?i*m$)TC4dUDi1r4DaT`JDv^9NwI3(9xr&NT~{gzlKF+$@~$ zm$Vxa@pUQ^!tEc9%qT4NCENf%=uU|dnqnhsYRsz1sfN6pa{o}!$9Xb6yM=$9c!yDH zEv@1KI^j&_lfP*}m+_Yy;fGs!?2c3kUj#ZuzhsbIbC8?^RRWvn$c0p_bPxR!gAHy| zx25%x(>j%JGi?Jl`EheUpMRp-#l0+C>URcc6K)H?58>e`2qV)(s(xH!{P4r z?rcL86}#3b(pbYWp?EhN1lAhuHMT(q%t1{aShoFh!2FS3plEj=#Mitpwrtq8I_qok zcfRg#I%cs&s!HG4l#JD(71e^TEnBo3g;N~2K^&0v-dSqsz8cf$-ftRk9u_--@-SZzu zzT#*dcC&9qn`JS#?w_ac;LGax3XCfvdDVG`W{?6AoX1MvFmH79;-LQVUEMn8@$!B$ zu`rB)8N~NCgP@$iE2@p!T^Vl0jJ2>E6Uk=bysa^CI^)S-1mv~|N+ECSKsg;z;g!Hq z#C1!{_NCVDlQdZ+H)B%~B$Ak9X-RigaBmltwsL3F29ZUdp`aCkc=iMF4eNDUm$z0( z&ZXIqM)Ay>JzSs`i!!19RyMl&&2%nhem6^V%n0r!3lND|q zG~|iDq@#dhG%R^iYem#S2q{mpFPl`>TdT34RE{c8DD2ZztC}YjD(R%xQ|Byf)Ze3C zRPnrSG;FX8ywJnU*T|Ew-fA&E2Ee(qDbb(N+-xCl3FUigt&T5AgPo~$yvqdzwg>hM z5(<%VM5%%f(AUkXi&J|1s|v6Aq`S3iO3&lWi4&e667rl@5KaMB+pw_cpAX>gp-X1) z_?&xLh$A&6)05}ID$gO93~EhO6C=SPq>ryIO)w~_EAl*US@!_JHvC6xPlRrO4t7n| zOeIZsIcZ#l1||9%guj^2Z{T2cjNwwV(y$m3C*M=D);HACXI>mhVgi zbD#iLF_(;1dTX&^_w4BJ9i^kP#^kS0Kgv3R#1I%+dz-C__96D`j`yWz&Z^+xW5eS6 zSK`5ct&02Cunt^8P@iJ8TIj7I?BxT`l@?`#by*ce>yO8}EWR|9fRR0vqfa?*AM~eE z8mo%<1Yh{Jyl&rb81=v84+bTvt|9GSNwOuo^-?fw8pkIj?ell-E<$ z{Q2Cc#U1&Oh7c`mfYphH=Y@_%C;A-Ov-x>$%>UVu?MQQuBNFwenDeZ`f6OVF7C-1_ zGW>IxdO^9zrxIztyzT=88!^QxPA1JYZA3wa=qXGpRHHz!_a2>j^vHBI^8W4}M&;OS zi6#aa*rm#`^9Q!sv)BlawfV5`#^^)>)9oAsv7^2>C!zr`KW!xs35v!VjdL~Jh3|-< zvi%vG>!s>Ya`Sd{EtX^j?!vPe>F=p#`4`+1P!m{8ICz(4U0J|ji2sv^_=~D?2Qub@ z3F7zTW24!OZ^0r%$xR|a5fErpB182ul`vIR@k|8Niu6#e*!Axry16KL#W=fKTKW~M z2Me}gxyyl$JSGHzfl6#}0HnQ?LMI{t8KTeN8k095O3QzMIpOaZiXM)OFN2skBcZ$R}K8>ompQm1AG9x`gRny!;p|7 zh<@n|Q4xp!Sp?EAg&$NDqb33;0Xc}4udjf!| zQc1DiP^toOVCB4c+T=G7%rHFg<^&b^r2@}$(0;7*HkVSzdLda*-zIcD^w%_ z%YnsPnh5XPvCd(hz55If#CK-Q7mwFlULI0O7?EV+6V$wxhO$8Gs_D9wKKraEAm7}7 zp8YQbj1Qiy`xrw$BLT5uLTHO}T55k}W6#J4rgB0y*`2oH7~eTFJfPe7`LVSfQPhnc z{p6TxW}&wM{O*REVyTvA*2QP4@r1LSe{VoJ(%-x4aF_R_S@Q5*jGbl|=noB3-jzpm z91|U&qh1GF>xUx0gUmA?U-H_z{uIN7pZIX?c{3BxqImW=#oS|$RNY_H>y6ERgt}@7 zW3{N=6guKIjuC7eF&-FKTTqi#nih(2;nzgA@D0{8hxl~;Y57%6fON_;^NNH7Y!UFr zS^lUIq$Qf;-9#$l*w{AM3aFh(Ku`K_=O7!@#t3&iu3}Yi;5I+pB-ZuMF%%$t^D|uz zy_tFa?*aNx75D#S?kCYgFU9|GXo2TqRkRjti@+pXP%yDHEQiNaJ+G}gu&4Dp*il(j zIt_E?d?YcT)FT8~51}X}38#p}_>I_HJ@+kd+iqVCDacj}UP#_8w)%jX{t2-epfQb(A-6ZT;jDF3uVfvVI$u+TL7 zMkw8c?ideMtb`X8qUqK4W3Cg_#@>F6U$H&f>LG%@V5(Plk49f*}X? zVQyj(mC$GC*TbqVD~JFjey^^@qo~72a(yLkYoG2ywj{$MC+9B3@q>1Dlres157f7tGxLVwkoTzXWF&*8(iH6N)ck)Hpu?0LTXbiRHWm{A=lYc|6%|)3 zpI{!h1#!M##KH)?r0P+>H25+c-vFqp3tT$iGTA0oAG(VE+Vo$GU`oZ=eb!vzPCX3g{SR&TC-pligi&j58gGok96SH{AEY zxPcDNghxkod6C7DxlICW*)1yoX5Ts5RKA1VCR4XVJ5JGrJ*cxH4co6~xti&YwTo*$ zS1=!j7>XQI032O6hHH}F2LYzhGt58`?p3qo%WFbU)ON_B0AD34JB7X%pu7i%xkxZn z$-ANg5%gb*HCxBtp(lN)z_koeLfO3eo#&kX`n^+;(17TAh*{$EymiJHRqmS-Ua$aT zO5V*ZcTi^LJ>@CSRiasPY~$o89vm`l?Rh?joTOH7E+#g1z=udEwH+0lBx?rbmPTN) z0B=z}?=DhN8j%SKpjsmB}z)07Mo z1JLqE!XYX<_Egtv(v2I078jT+5JE{kuu-aZPZAAq$2x)TlCl+R#`U1(&;L6WC{JyB zClK^Vvx@A~>K11JJ5^Z!_YeuzX|bJsnM7|3V?5$m{_M_k;#jm8Kg|%tJ1u$^2>3MNkx~@(cm6apl?@Yh^NyWd=YnS_b}$0Rm|~ZiL28g zkAB9J0Zryc+e_EdlL^FWtrl-WPlu8MJ{@4sHbiGQR2TqK2oqkU z&Vi=W#h=_liEC~w9J0~5QdQYU;DGPF`59rTgZKl^@ywGU{VeU7^U}!}i?CY;=ZaW6 zFF_wcuAIru>i2SIzc||LlV$5{QcJz>wbH$NjsA^SR-(-?wCU0v=of zoB5;1WbqAnf7?0s9Xo{0;H{p)VGBT4IXTVlQ-cJszwqvzfC5lhV=w6mso_BG)Y>7$ z-MV(Rmc&qkZURWh3J+3XS6=TTj~Pa$2u EYuydHI0)g&a%*+5FEN^F7tWJPCSX zK`^Ymzu#2uSD<{lXKdsK4bj04ltWa#^NEJ~r(V>Itu+}7_{=|7Vr6aOFSt9O=n$!Ba3>w(G$${P~y6SzP$hr^Snl{4$p*>@)3pQoa8mAq@_ zfuuOuhWt)D+;^{HGB9NiRzM-*x&fZA+=D`ZYsY$QJ|mUsX|C1VV?U5I5*c!%w+#Bu zkHLbHa{=7H#@geL^>*5x5S(urM+M4i4R?9S+c|PsbP}KW6n^<}A-LkkLu0k`?KzKP ze-B|``)>v4`B38bmwHV3UWmC^4vonKSanH^FSY^l>ZM^~R+-t|s>2f&K$>5_BHZbd zzspznQqoSdSNhC-GD-f~{^G)pKcv^!q2Ylwkekcc+VOaBZ;gGLHOjFbxL-{7=|#4& zh!~BS5~hT0A)BAc`A!8A8JvF}LKgpn6#DXvgSL8!vo=CWl+D2~fH!Oe;O`Xsa!nu{ z#HmtI6Cm`&A5&lSchBuNfo_rSqC3;sA#ml1tLMFg#+Gl_V|N%bR-*4i>=8Edt^mf` zbSkwK(kz-+M?D%Lw$LTgh>(=~&Vs{2{ojjaN%c*YT#AM!#L&GZm^)V~L}?q}+BEYS zzFLesz#I`&d9Zh%$^I~1fnsPLvfDgMK<46LjnP^WTp@IipQxUnP%3_cTu)hz-HU70+_&YP!!C zLMVVE^;6q^w)JZ3^$>AZ6cws%+O!uPAwN2n)bGNlqX^_y3RL_iC{y2>@3t4OzQ3<@ z$7lTf`%P%$9qIfHgt8H9_gc{LJA(M{0OAW!T>gv$f19URUWkRE6N;M@#KT^8K3J@T z%)w#*o&MgG<4)~HA%D;N`ZECi19tvZzR$UO!1;5g=e}3q(v2vkok&=nU?{zp77o

8ha5Q)(Tv#>~=|7iGOXvAt&VC}SI_mU2j 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%0AeLQk0B12@QJ4s;P>yktdLX zR3;K5*D2T3OctrHDwQTf@t*^H(BI061moF3M3dcyUR`1d554qQ?pFM0H+=nM(4OY> zmYwqFH%7fWj}|}^?4E>&Z1bU7q~L#p%1HtOp#nnz{3kI>jY<5k!v8*j1Hk-GmH$fM zKSc(5dU`uII%PEo0BQpUbs+&x_5T+D<@Y88K&?Z$Sk9N;JF_n!0C+SY0LFg-6#BFL z{{RO12JX7%HoE${2DWarb~dK}L3F-gSLYgJQ2lR2J9~Fg@Gmu^`(prr=NkY3`2Pd3 z=Jz@OTOpD3&J31K~>6$p08`~Js{KEc^T!>+*YODX3g00>DqG@Ut z0jyZRqx+kY{tsNJnE%23kADA+^&j~z(RBWoj(orK$^AuqE diff --git a/test/web/pleroma_api/controllers/emoji_file_controller_test.exs b/test/web/pleroma_api/controllers/emoji_file_controller_test.exs index 827a4c374..39b4e1dac 100644 --- a/test/web/pleroma_api/controllers/emoji_file_controller_test.exs +++ b/test/web/pleroma_api/controllers/emoji_file_controller_test.exs @@ -59,8 +59,8 @@ test "upload zip file with emojies", %{admin_conn: admin_conn} do |> post("/api/pleroma/emoji/packs/test_pack/files", %{ file: %Plug.Upload{ content_type: "application/zip", - filename: "finland-emojis.zip", - path: Path.absname("test/fixtures/finland-emojis.zip") + filename: "emojis.zip", + path: Path.absname("test/fixtures/emojis.zip") } }) |> json_response_and_validate_schema(200) From 9d6415de157ddf6effb154b354fd6410dba8aae6 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 23 Sep 2020 10:54:24 +0200 Subject: [PATCH 297/460] Changelog: Info about email fix. --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e61b1d144..0dc098f80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Removed `:managed_config` option. In practice, it was accidentally removed with 2.0.0 release when frontends were switched to a new configuration mechanism, however it was not officially removed until now. +### Fixed +- Allow sending out emails again. + ## [2.1.2] - 2020-09-17 From 518c0f2962ab36660157d7cbc995d1f4562728b3 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 23 Sep 2020 10:57:53 +0200 Subject: [PATCH 298/460] Changelog: Add info about emoji zip import feature --- CHANGELOG.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e61b1d144..8ea66844d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## Unreleased -### Added -- Experimental websocket-based federation between Pleroma instances. - ### Changed - Renamed `:await_up_timeout` in `:connections_pool` namespace to `:connect_timeout`, old name is deprecated. @@ -19,6 +16,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Added - Media preview proxy (requires media proxy be enabled; see `:media_preview_proxy` config for more details). - Pleroma API: Importing the mutes users from CSV files. +- Experimental websocket-based federation between Pleroma instances. +- Admin API: Importing emoji from a zip file ### Removed @@ -28,7 +27,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Removed `:managed_config` option. In practice, it was accidentally removed with 2.0.0 release when frontends were switched to a new configuration mechanism, however it was not officially removed until now. - ## [2.1.2] - 2020-09-17 ### Security From 5e86a2809e37100b54e0fc88db79245e13f684aa Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Wed, 23 Sep 2020 11:45:32 +0200 Subject: [PATCH 299/460] transmogrifier: Drop incoming create early if it already exists --- lib/pleroma/web/activity_pub/transmogrifier.ex | 6 +++++- .../activity_pub/transmogrifier/question_handling_test.exs | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index aa6a69463..d7dd9fe6b 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -515,15 +515,19 @@ def handle_incoming( end def handle_incoming( - %{"type" => "Create", "object" => %{"type" => objtype}} = data, + %{"type" => "Create", "object" => %{"type" => objtype, "id" => obj_id}} = data, _options ) when objtype in ~w{Question Answer ChatMessage Audio Video Event Article} do data = Map.put(data, "object", strip_internal_fields(data["object"])) with {:ok, %User{}} <- ObjectValidator.fetch_actor(data), + nil <- Activity.get_create_by_object_ap_id(obj_id), {:ok, activity, _} <- Pipeline.common_pipeline(data, local: false) do {:ok, activity} + else + %Activity{} = activity -> {:ok, activity} + e -> e end end diff --git a/test/web/activity_pub/transmogrifier/question_handling_test.exs b/test/web/activity_pub/transmogrifier/question_handling_test.exs index 74ee79543..d2822ce75 100644 --- a/test/web/activity_pub/transmogrifier/question_handling_test.exs +++ b/test/web/activity_pub/transmogrifier/question_handling_test.exs @@ -157,12 +157,12 @@ test "Mastodon Question activity with custom emojis" do } end - test "returns an error if received a second time" do + test "returns same activity if received a second time" do data = File.read!("test/fixtures/mastodon-question-activity.json") |> Poison.decode!() assert {:ok, %Activity{local: false} = activity} = Transmogrifier.handle_incoming(data) - assert {:error, {:validate_object, {:error, _}}} = Transmogrifier.handle_incoming(data) + assert {:ok, ^activity} = Transmogrifier.handle_incoming(data) end test "accepts a Question with no content" do From 8af8eb5ce79a35e01415763164533c537e017776 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 23 Sep 2020 12:32:47 -0500 Subject: [PATCH 300/460] Chase Pleroma.RepoStreamer.chunk_stream -> Pleroma.Repo.chunk_stream --- lib/mix/tasks/pleroma/email.ex | 7 ++----- lib/mix/tasks/pleroma/user.ex | 4 ++-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/mix/tasks/pleroma/email.ex b/lib/mix/tasks/pleroma/email.ex index c0bef0386..1f543241a 100644 --- a/lib/mix/tasks/pleroma/email.ex +++ b/lib/mix/tasks/pleroma/email.ex @@ -31,11 +31,8 @@ def run(["resend_confirmation_emails"]) do confirmation_pending: true, invisible: false }) - |> Pleroma.RepoStreamer.chunk_stream(500) - |> Stream.each(fn users -> - users - |> Enum.each(fn user -> Pleroma.User.try_send_confirmation_email(user) end) - end) + |> Pleroma.Repo.chunk_stream(500, :batches) + |> Stream.each(&Pleroma.User.try_send_confirmation_email(&1)) |> Stream.run() end end diff --git a/lib/mix/tasks/pleroma/user.ex b/lib/mix/tasks/pleroma/user.ex index 8196e34b1..d50205600 100644 --- a/lib/mix/tasks/pleroma/user.ex +++ b/lib/mix/tasks/pleroma/user.ex @@ -370,7 +370,7 @@ def run(["confirm_all"]) do is_admin: false, invisible: false }) - |> Pleroma.RepoStreamer.chunk_stream(500) + |> Pleroma.Repo.chunk_stream(500, :batches) |> Stream.each(fn users -> users |> Enum.each(fn user -> User.need_confirmation(user, false) end) @@ -388,7 +388,7 @@ def run(["unconfirm_all"]) do is_admin: false, invisible: false }) - |> Pleroma.RepoStreamer.chunk_stream(500) + |> Pleroma.Repo.chunk_stream(500, :batches) |> Stream.each(fn users -> users |> Enum.each(fn user -> User.need_confirmation(user, true) end) From 9b6d89ff8c798079f4db18eb2b5c66a7426ecbc5 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Sat, 27 Jun 2020 13:43:25 +0300 Subject: [PATCH 301/460] support for special chars in pack name --- docs/API/pleroma_api.md | 49 +++++++-- lib/pleroma/emoji/pack.ex | 5 +- .../pleroma_emoji_pack_operation.ex | 2 +- lib/pleroma/web/router.ex | 16 +-- test/instance_static/emoji/blobs.gg/blank.png | Bin 0 -> 95 bytes test/instance_static/emoji/blobs.gg/pack.json | 11 ++ .../emoji_pack_controller_test.exs | 104 +++++++++++------- 7 files changed, 128 insertions(+), 59 deletions(-) create mode 100644 test/instance_static/emoji/blobs.gg/blank.png create mode 100644 test/instance_static/emoji/blobs.gg/pack.json diff --git a/docs/API/pleroma_api.md b/docs/API/pleroma_api.md index 94b6a4fda..350849687 100644 --- a/docs/API/pleroma_api.md +++ b/docs/API/pleroma_api.md @@ -379,14 +379,18 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Response: JSON, returns a list of Mastodon Conversation entities that were marked as read (200 - healthy, 503 unhealthy). ## `GET /api/pleroma/emoji/packs/import` + ### Imports packs from filesystem + * Method `GET` * Authentication: required * Params: None * Response: JSON, returns a list of imported packs. ## `GET /api/pleroma/emoji/packs/remote` + ### Make request to another instance for packs list + * Method `GET` * Authentication: required * Params: @@ -394,7 +398,9 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Response: JSON with the pack list, hashmap with pack name and pack contents ## `POST /api/pleroma/emoji/packs/download` + ### Download pack from another instance + * Method `POST` * Authentication: required * Params: @@ -404,18 +410,24 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Response: JSON, "ok" with 200 status if the pack was downloaded, or 500 if there were errors downloading the pack -## `POST /api/pleroma/emoji/packs/:name` +## `POST /api/pleroma/emoji/packs/create?name=:name` + ### Creates an empty pack + * Method `POST` * Authentication: required -* Params: None +* Params: + * `name`: pack name * Response: JSON, "ok" and 200 status or 409 if the pack with that name already exists -## `PATCH /api/pleroma/emoji/packs/:name` +## `PATCH /api/pleroma/emoji/packs/update?name=:name` + ### Updates (replaces) pack metadata + * Method `PATCH` * Authentication: required * Params: + * `name`: pack name * `metadata`: metadata to replace the old one * `license`: Pack license * `homepage`: Pack home page url @@ -426,39 +438,51 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Response: JSON, updated "metadata" section of the pack and 200 status or 400 if there was a problem with the new metadata (the error is specified in the "error" part of the response JSON) -## `DELETE /api/pleroma/emoji/packs/:name` +## `DELETE /api/pleroma/emoji/packs/delete?name=:name` + ### Delete a custom emoji pack + * Method `DELETE` * Authentication: required -* Params: None +* Params: + * `name`: pack name * Response: JSON, "ok" and 200 status or 500 if there was an error deleting the pack -## `POST /api/pleroma/emoji/packs/:name/files` +## `POST /api/pleroma/emoji/packs/files?name=:name` + ### Add new file to the pack + * Method `POST` * Authentication: required * Params: + * `name`: pack name * `file`: file needs to be uploaded with the multipart request or link to remote file. * `shortcode`: (*optional*) shortcode for new emoji, must be unique for all emoji. If not sended, shortcode will be taken from original filename. * `filename`: (*optional*) new emoji file name. If not specified will be taken from original filename. * Response: JSON, list of files for updated pack (hashmap -> shortcode => filename) with status 200, either error status with error message. -## `PATCH /api/pleroma/emoji/packs/:name/files` +## `PATCH /api/pleroma/emoji/packs/files?name=:name` + ### Update emoji file from pack + * Method `PATCH` * Authentication: required * Params: + * `name`: pack name * `shortcode`: emoji file shortcode * `new_shortcode`: new emoji file shortcode * `new_filename`: new filename for emoji file * `force`: (*optional*) with true value to overwrite existing emoji with new shortcode * Response: JSON, list with updated files for updated pack (hashmap -> shortcode => filename) with status 200, either error status with error message. -## `DELETE /api/pleroma/emoji/packs/:name/files` +## `DELETE /api/pleroma/emoji/packs/files?name=:name` + ### Delete emoji file from pack + * Method `DELETE` * Authentication: required * Params: + * `name`: pack name * `shortcode`: emoji file shortcode * Response: JSON, list with updated files for updated pack (hashmap -> shortcode => filename) with status 200, either error status with error message. @@ -483,7 +507,7 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa } ``` -## `GET /api/pleroma/emoji/packs/:name` +## `GET /api/pleroma/emoji/packs/show?name=:name` ### Get pack.json for the pack @@ -502,11 +526,14 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa } ``` -## `GET /api/pleroma/emoji/packs/:name/archive` +## `GET /api/pleroma/emoji/packs/archive?name=:name` + ### Requests a local pack archive from the instance + * Method `GET` * Authentication: not required -* Params: None +* Params: + * `name`: pack name * Response: the archive of the pack with a 200 status code, 403 if the pack is not set as shared, 404 if the pack does not exist diff --git a/lib/pleroma/emoji/pack.ex b/lib/pleroma/emoji/pack.ex index 0b3f8f00b..9901aa832 100644 --- a/lib/pleroma/emoji/pack.ex +++ b/lib/pleroma/emoji/pack.ex @@ -244,7 +244,8 @@ def download(name, url, as) do uri = url |> String.trim() |> URI.parse() with :ok <- validate_shareable_packs_available(uri), - {:ok, remote_pack} <- uri |> URI.merge("/api/pleroma/emoji/packs/#{name}") |> http_get(), + {:ok, remote_pack} <- + uri |> URI.merge("/api/pleroma/emoji/packs/show?name=#{name}") |> http_get(), {:ok, %{sha: sha, url: url} = pack_info} <- fetch_pack_info(remote_pack, uri, name), {:ok, archive} <- download_archive(url, sha), pack <- copy_as(remote_pack, as || name), @@ -572,7 +573,7 @@ defp fetch_pack_info(remote_pack, uri, name) do {:ok, %{ sha: sha, - url: URI.merge(uri, "/api/pleroma/emoji/packs/#{name}/archive") |> to_string() + url: URI.merge(uri, "/api/pleroma/emoji/packs/archive?name=#{name}") |> to_string() }} %{"fallback-src" => src, "fallback-src-sha256" => sha} when is_binary(src) -> diff --git a/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex index 59548af13..87ee5feb4 100644 --- a/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex +++ b/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex @@ -192,7 +192,7 @@ def import_from_filesystem_operation do end defp name_param do - Operation.parameter(:name, :path, :string, "Pack Name", example: "cofe", required: true) + Operation.parameter(:name, :query, :string, "Pack Name", example: "cofe", required: true) end defp url_param do diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 42a9db21d..6f591b12f 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -234,21 +234,21 @@ defmodule Pleroma.Web.Router do get("/remote", EmojiPackController, :remote) post("/download", EmojiPackController, :download) - post("/:name", EmojiPackController, :create) - patch("/:name", EmojiPackController, :update) - delete("/:name", EmojiPackController, :delete) + post("/create", EmojiPackController, :create) + patch("/update", EmojiPackController, :update) + delete("/delete", EmojiPackController, :delete) - post("/:name/files", EmojiFileController, :create) - patch("/:name/files", EmojiFileController, :update) - delete("/:name/files", EmojiFileController, :delete) + post("/files", EmojiFileController, :add_file) + patch("/files", EmojiFileController, :update_file) + delete("/files", EmojiFileController, :delete_file) end # Pack info / downloading scope "/packs" do pipe_through(:api) get("/", EmojiPackController, :index) - get("/:name", EmojiPackController, :show) - get("/:name/archive", EmojiPackController, :archive) + get("/show", EmojiPackController, :show) + get("/archive", EmojiPackController, :archive) end end diff --git a/test/instance_static/emoji/blobs.gg/blank.png b/test/instance_static/emoji/blobs.gg/blank.png new file mode 100644 index 0000000000000000000000000000000000000000..8f50fa02340e7e09e562f86e00b6e4bd6ad1d565 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^4Is=2Bp6=1#-sr$rjj7PU get("/api/pleroma/emoji/packs") |> json_response_and_validate_schema(200) - assert resp["count"] == 3 + assert resp["count"] == 4 assert resp["packs"] |> Map.keys() - |> length() == 3 + |> length() == 4 shared = resp["packs"]["test_pack"] assert shared["files"] == %{"blank" => "blank.png", "blank2" => "blank2.png"} @@ -58,7 +58,7 @@ test "GET /api/pleroma/emoji/packs", %{conn: conn} do |> get("/api/pleroma/emoji/packs?page_size=1") |> json_response_and_validate_schema(200) - assert resp["count"] == 3 + assert resp["count"] == 4 packs = Map.keys(resp["packs"]) @@ -71,7 +71,7 @@ test "GET /api/pleroma/emoji/packs", %{conn: conn} do |> get("/api/pleroma/emoji/packs?page_size=1&page=2") |> json_response_and_validate_schema(200) - assert resp["count"] == 3 + assert resp["count"] == 4 packs = Map.keys(resp["packs"]) assert length(packs) == 1 [pack2] = packs @@ -81,11 +81,21 @@ test "GET /api/pleroma/emoji/packs", %{conn: conn} do |> get("/api/pleroma/emoji/packs?page_size=1&page=3") |> json_response_and_validate_schema(200) - assert resp["count"] == 3 + assert resp["count"] == 4 packs = Map.keys(resp["packs"]) assert length(packs) == 1 [pack3] = packs - assert [pack1, pack2, pack3] |> Enum.uniq() |> length() == 3 + + resp = + conn + |> get("/api/pleroma/emoji/packs?page_size=1&page=4") + |> json_response_and_validate_schema(200) + + assert resp["count"] == 4 + packs = Map.keys(resp["packs"]) + assert length(packs) == 1 + [pack4] = packs + assert [pack1, pack2, pack3, pack4] |> Enum.uniq() |> length() == 4 end describe "GET /api/pleroma/emoji/packs/remote" do @@ -128,11 +138,11 @@ test "non shareable instance", %{admin_conn: admin_conn} do end end - describe "GET /api/pleroma/emoji/packs/:name/archive" do + describe "GET /api/pleroma/emoji/packs/archive?name=:name" do test "download shared pack", %{conn: conn} do resp = conn - |> get("/api/pleroma/emoji/packs/test_pack/archive") + |> get("/api/pleroma/emoji/packs/archive?name=test_pack") |> response(200) {:ok, arch} = :zip.unzip(resp, [:memory]) @@ -143,7 +153,7 @@ test "download shared pack", %{conn: conn} do test "non existing pack", %{conn: conn} do assert conn - |> get("/api/pleroma/emoji/packs/test_pack_for_import/archive") + |> get("/api/pleroma/emoji/packs/archive?name=test_pack_for_import") |> json_response_and_validate_schema(:not_found) == %{ "error" => "Pack test_pack_for_import does not exist" } @@ -151,7 +161,7 @@ test "non existing pack", %{conn: conn} do test "non downloadable pack", %{conn: conn} do assert conn - |> get("/api/pleroma/emoji/packs/test_pack_nonshared/archive") + |> get("/api/pleroma/emoji/packs/archive?name=test_pack_nonshared") |> json_response_and_validate_schema(:forbidden) == %{ "error" => "Pack test_pack_nonshared cannot be downloaded from this instance, either pack sharing was disabled for this pack or some files are missing" @@ -173,28 +183,28 @@ test "shared pack from remote and non shared from fallback-src", %{ %{ method: :get, - url: "https://example.com/api/pleroma/emoji/packs/test_pack" + url: "https://example.com/api/pleroma/emoji/packs/show?name=test_pack" } -> conn - |> get("/api/pleroma/emoji/packs/test_pack") + |> get("/api/pleroma/emoji/packs/show?name=test_pack") |> json_response_and_validate_schema(200) |> json() %{ method: :get, - url: "https://example.com/api/pleroma/emoji/packs/test_pack/archive" + url: "https://example.com/api/pleroma/emoji/packs/archive?name=test_pack" } -> conn - |> get("/api/pleroma/emoji/packs/test_pack/archive") + |> get("/api/pleroma/emoji/packs/archive?name=test_pack") |> response(200) |> text() %{ method: :get, - url: "https://example.com/api/pleroma/emoji/packs/test_pack_nonshared" + url: "https://example.com/api/pleroma/emoji/packs/show?name=test_pack_nonshared" } -> conn - |> get("/api/pleroma/emoji/packs/test_pack_nonshared") + |> get("/api/pleroma/emoji/packs/show?name=test_pack_nonshared") |> json_response_and_validate_schema(200) |> json() @@ -218,7 +228,7 @@ test "shared pack from remote and non shared from fallback-src", %{ assert File.exists?("#{@emoji_path}/test_pack2/blank.png") assert admin_conn - |> delete("/api/pleroma/emoji/packs/test_pack2") + |> delete("/api/pleroma/emoji/packs/delete?name=test_pack2") |> json_response_and_validate_schema(200) == "ok" refute File.exists?("#{@emoji_path}/test_pack2") @@ -239,7 +249,7 @@ test "shared pack from remote and non shared from fallback-src", %{ assert File.exists?("#{@emoji_path}/test_pack_nonshared2/blank.png") assert admin_conn - |> delete("/api/pleroma/emoji/packs/test_pack_nonshared2") + |> delete("/api/pleroma/emoji/packs/delete?name=test_pack_nonshared2") |> json_response_and_validate_schema(200) == "ok" refute File.exists?("#{@emoji_path}/test_pack_nonshared2") @@ -279,14 +289,14 @@ test "checksum fail", %{admin_conn: admin_conn} do %{ method: :get, - url: "https://example.com/api/pleroma/emoji/packs/pack_bad_sha" + url: "https://example.com/api/pleroma/emoji/packs/show?name=pack_bad_sha" } -> {:ok, pack} = Pleroma.Emoji.Pack.load_pack("pack_bad_sha") %Tesla.Env{status: 200, body: Jason.encode!(pack)} %{ method: :get, - url: "https://example.com/api/pleroma/emoji/packs/pack_bad_sha/archive" + url: "https://example.com/api/pleroma/emoji/packs/archive?name=pack_bad_sha" } -> %Tesla.Env{ status: 200, @@ -316,7 +326,7 @@ test "other error", %{admin_conn: admin_conn} do %{ method: :get, - url: "https://example.com/api/pleroma/emoji/packs/test_pack" + url: "https://example.com/api/pleroma/emoji/packs/show?name=test_pack" } -> {:ok, pack} = Pleroma.Emoji.Pack.load_pack("test_pack") %Tesla.Env{status: 200, body: Jason.encode!(pack)} @@ -336,7 +346,7 @@ test "other error", %{admin_conn: admin_conn} do end end - describe "PATCH /api/pleroma/emoji/packs/:name" do + describe "PATCH /api/pleroma/emoji/packs/update?name=:name" do setup do pack_file = "#{@emoji_path}/test_pack/pack.json" original_content = File.read!(pack_file) @@ -358,7 +368,9 @@ test "other error", %{admin_conn: admin_conn} do test "for a pack without a fallback source", ctx do assert ctx[:admin_conn] |> put_req_header("content-type", "multipart/form-data") - |> patch("/api/pleroma/emoji/packs/test_pack", %{"metadata" => ctx[:new_data]}) + |> patch("/api/pleroma/emoji/packs/update?name=test_pack", %{ + "metadata" => ctx[:new_data] + }) |> json_response_and_validate_schema(200) == ctx[:new_data] assert Jason.decode!(File.read!(ctx[:pack_file]))["pack"] == ctx[:new_data] @@ -384,7 +396,7 @@ test "for a pack with a fallback source", ctx do assert ctx[:admin_conn] |> put_req_header("content-type", "multipart/form-data") - |> patch("/api/pleroma/emoji/packs/test_pack", %{metadata: new_data}) + |> patch("/api/pleroma/emoji/packs/update?name=test_pack", %{metadata: new_data}) |> json_response_and_validate_schema(200) == new_data_with_sha assert Jason.decode!(File.read!(ctx[:pack_file]))["pack"] == new_data_with_sha @@ -404,17 +416,17 @@ test "when the fallback source doesn't have all the files", ctx do assert ctx[:admin_conn] |> put_req_header("content-type", "multipart/form-data") - |> patch("/api/pleroma/emoji/packs/test_pack", %{metadata: new_data}) + |> patch("/api/pleroma/emoji/packs/update?name=test_pack", %{metadata: new_data}) |> json_response_and_validate_schema(:bad_request) == %{ "error" => "The fallback archive does not have all files specified in pack.json" } end end - describe "POST/DELETE /api/pleroma/emoji/packs/:name" do + describe "POST/DELETE /api/pleroma/emoji/packs/?name=:name" do test "creating and deleting a pack", %{admin_conn: admin_conn} do assert admin_conn - |> post("/api/pleroma/emoji/packs/test_created") + |> post("/api/pleroma/emoji/packs/create?name=test_created") |> json_response_and_validate_schema(200) == "ok" assert File.exists?("#{@emoji_path}/test_created/pack.json") @@ -426,7 +438,7 @@ test "creating and deleting a pack", %{admin_conn: admin_conn} do } assert admin_conn - |> delete("/api/pleroma/emoji/packs/test_created") + |> delete("/api/pleroma/emoji/packs/delete?name=test_created") |> json_response_and_validate_schema(200) == "ok" refute File.exists?("#{@emoji_path}/test_created/pack.json") @@ -439,7 +451,7 @@ test "if pack exists", %{admin_conn: admin_conn} do File.write!(Path.join(path, "pack.json"), pack_file) assert admin_conn - |> post("/api/pleroma/emoji/packs/test_created") + |> post("/api/pleroma/emoji/packs/create?name=test_created") |> json_response_and_validate_schema(:conflict) == %{ "error" => "A pack named \"test_created\" already exists" } @@ -449,7 +461,7 @@ test "if pack exists", %{admin_conn: admin_conn} do test "with empty name", %{admin_conn: admin_conn} do assert admin_conn - |> post("/api/pleroma/emoji/packs/ ") + |> post("/api/pleroma/emoji/packs/create?name= ") |> json_response_and_validate_schema(:bad_request) == %{ "error" => "pack name cannot be empty" } @@ -458,7 +470,7 @@ test "with empty name", %{admin_conn: admin_conn} do test "deleting nonexisting pack", %{admin_conn: admin_conn} do assert admin_conn - |> delete("/api/pleroma/emoji/packs/non_existing") + |> delete("/api/pleroma/emoji/packs/delete?name=non_existing") |> json_response_and_validate_schema(:not_found) == %{ "error" => "Pack non_existing does not exist" } @@ -466,7 +478,7 @@ test "deleting nonexisting pack", %{admin_conn: admin_conn} do test "deleting with empty name", %{admin_conn: admin_conn} do assert admin_conn - |> delete("/api/pleroma/emoji/packs/ ") + |> delete("/api/pleroma/emoji/packs/delete?name= ") |> json_response_and_validate_schema(:bad_request) == %{ "error" => "pack name cannot be empty" } @@ -529,7 +541,7 @@ test "shows pack.json", %{conn: conn} do } } = conn - |> get("/api/pleroma/emoji/packs/test_pack") + |> get("/api/pleroma/emoji/packs/show?name=test_pack") |> json_response_and_validate_schema(200) assert files == %{"blank" => "blank.png", "blank2" => "blank2.png"} @@ -539,7 +551,7 @@ test "shows pack.json", %{conn: conn} do "files_count" => 2 } = conn - |> get("/api/pleroma/emoji/packs/test_pack?page_size=1") + |> get("/api/pleroma/emoji/packs/show?name=test_pack&page_size=1") |> json_response_and_validate_schema(200) assert files |> Map.keys() |> length() == 1 @@ -549,15 +561,33 @@ test "shows pack.json", %{conn: conn} do "files_count" => 2 } = conn - |> get("/api/pleroma/emoji/packs/test_pack?page_size=1&page=2") + |> get("/api/pleroma/emoji/packs/show?name=test_pack&page_size=1&page=2") |> json_response_and_validate_schema(200) assert files |> Map.keys() |> length() == 1 end + test "for pack name with special chars", %{conn: conn} do + assert %{ + "files" => files, + "files_count" => 1, + "pack" => %{ + "can-download" => true, + "description" => "Test description", + "download-sha256" => _, + "homepage" => "https://pleroma.social", + "license" => "Test license", + "share-files" => true + } + } = + conn + |> get("/api/pleroma/emoji/packs/show?name=blobs.gg") + |> json_response_and_validate_schema(200) + end + test "non existing pack", %{conn: conn} do assert conn - |> get("/api/pleroma/emoji/packs/non_existing") + |> get("/api/pleroma/emoji/packs/show?name=non_existing") |> json_response_and_validate_schema(:not_found) == %{ "error" => "Pack non_existing does not exist" } @@ -565,7 +595,7 @@ test "non existing pack", %{conn: conn} do test "error name", %{conn: conn} do assert conn - |> get("/api/pleroma/emoji/packs/ ") + |> get("/api/pleroma/emoji/packs/show?name= ") |> json_response_and_validate_schema(:bad_request) == %{ "error" => "pack name cannot be empty" } From dbbc8016670166c24a29dcc3e2f0d66bb2f4e35f Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Sat, 27 Jun 2020 14:33:49 +0300 Subject: [PATCH 302/460] pagination for remote emoji packs --- lib/pleroma/emoji/pack.ex | 8 ++++---- .../operations/pleroma_emoji_pack_operation.ex | 16 +++++++++++++++- .../controllers/emoji_pack_controller.ex | 5 +++-- .../controllers/emoji_pack_controller_test.exs | 6 +++--- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/lib/pleroma/emoji/pack.ex b/lib/pleroma/emoji/pack.ex index 9901aa832..4420eff5a 100644 --- a/lib/pleroma/emoji/pack.ex +++ b/lib/pleroma/emoji/pack.ex @@ -198,13 +198,13 @@ def import_from_filesystem do end end - @spec list_remote(String.t()) :: {:ok, map()} | {:error, atom()} - def list_remote(url) do - uri = url |> String.trim() |> URI.parse() + @spec list_remote(keyword()) :: {:ok, map()} | {:error, atom()} + def list_remote(opts) do + uri = opts[:url] |> String.trim() |> URI.parse() with :ok <- validate_shareable_packs_available(uri) do uri - |> URI.merge("/api/pleroma/emoji/packs") + |> URI.merge("/api/pleroma/emoji/packs?page=#{opts[:page]}&page_size=#{opts[:page_size]}") |> http_get() end end diff --git a/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex index 87ee5feb4..79f52dcb3 100644 --- a/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex +++ b/lib/pleroma/web/api_spec/operations/pleroma_emoji_pack_operation.ex @@ -19,7 +19,21 @@ def remote_operation do tags: ["Emoji Packs"], summary: "Make request to another instance for emoji packs list", security: [%{"oAuth" => ["write"]}], - parameters: [url_param()], + parameters: [ + url_param(), + Operation.parameter( + :page, + :query, + %Schema{type: :integer, default: 1}, + "Page" + ), + Operation.parameter( + :page_size, + :query, + %Schema{type: :integer, default: 30}, + "Number of emoji to return" + ) + ], operationId: "PleromaAPI.EmojiPackController.remote", responses: %{ 200 => emoji_packs_response(), diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex index e3969fee1..6696f8b92 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex @@ -23,8 +23,9 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackController do defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.PleromaEmojiPackOperation - def remote(conn, %{url: url}) do - with {:ok, packs} <- Pack.list_remote(url) do + def remote(conn, params) do + with {:ok, packs} <- + Pack.list_remote(url: params.url, page_size: params.page_size, page: params.page) do json(conn, packs) else {:error, :not_shareable} -> diff --git a/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs b/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs index 068755936..95fd78c7e 100644 --- a/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs +++ b/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs @@ -102,7 +102,7 @@ test "GET /api/pleroma/emoji/packs", %{conn: conn} do test "shareable instance", %{admin_conn: admin_conn, conn: conn} do resp = conn - |> get("/api/pleroma/emoji/packs") + |> get("/api/pleroma/emoji/packs?page=2&page_size=1") |> json_response_and_validate_schema(200) mock(fn @@ -112,12 +112,12 @@ test "shareable instance", %{admin_conn: admin_conn, conn: conn} do %{method: :get, url: "https://example.com/nodeinfo/2.1.json"} -> json(%{metadata: %{features: ["shareable_emoji_packs"]}}) - %{method: :get, url: "https://example.com/api/pleroma/emoji/packs"} -> + %{method: :get, url: "https://example.com/api/pleroma/emoji/packs?page=2&page_size=1"} -> json(resp) end) assert admin_conn - |> get("/api/pleroma/emoji/packs/remote?url=https://example.com") + |> get("/api/pleroma/emoji/packs/remote?url=https://example.com&page=2&page_size=1") |> json_response_and_validate_schema(200) == resp end From 958008cc14ef74050d340dcc1865d25f069cf232 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 17 Aug 2020 11:19:49 +0300 Subject: [PATCH 303/460] changelog entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f5d01af3..46962b6ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -120,6 +120,7 @@ switched to a new configuration mechanism, however it was not officially removed - Mastodon API (legacy): Allow query parameters for `/api/v1/domain_blocks`, e.g. `/api/v1/domain_blocks?domain=badposters.zone` - Mastodon API: Make notifications about statuses from muted users and threads read automatically - Pleroma API: `/api/pleroma/captcha` responses now include `seconds_valid` with an integer value. +- Pleroma API: Pagination for remote/local packs and emoji.

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 KLoezqAOJhO#}3{A literal 0 HcmV?d00001 diff --git a/test/fixtures/image.png b/test/fixtures/image.png new file mode 100755 index 0000000000000000000000000000000000000000..e999e8800cf69e0c734a07a6c63b7adc49ad4783 GIT binary patch literal 104426 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 z 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 Cachex.clear(:banned_urls_cache) end) end - test "it returns 404 when MediaProxy disabled", %{conn: conn} do - clear_config([:media_proxy, :enabled], false) - - assert %Conn{ - status: 404, - resp_body: "Not Found" - } = get(conn, "/proxy/hhgfh/eeeee") - - assert %Conn{ - status: 404, - resp_body: "Not Found" - } = get(conn, "/proxy/hhgfh/eeee/fff") - end - - describe "" do + describe "Media Proxy" do setup do clear_config([:media_proxy, :enabled], true) clear_config([Pleroma.Web.Endpoint, :secret_key_base], "00000000000") + [url: MediaProxy.encode_url("https://google.fn/test.png")] end + test "it returns 404 when disabled", %{conn: conn} do + clear_config([:media_proxy, :enabled], false) + + assert %Conn{ + status: 404, + resp_body: "Not Found" + } = get(conn, "/proxy/hhgfh/eeeee") + + assert %Conn{ + status: 404, + resp_body: "Not Found" + } = get(conn, "/proxy/hhgfh/eeee/fff") + end + test "it returns 403 for invalid signature", %{conn: conn, url: url} do Pleroma.Config.put([Pleroma.Web.Endpoint, :secret_key_base], "000") %{path: path} = URI.parse(url) @@ -55,7 +56,7 @@ test "it returns 403 for invalid signature", %{conn: conn, url: url} do } = get(conn, "/proxy/hhgfh/eeee/fff") end - test "redirects on valid url when filename is invalidated", %{conn: conn, url: url} do + test "redirects to valid url when filename is invalidated", %{conn: conn, url: url} do invalid_url = String.replace(url, "test.png", "test-file.png") response = get(conn, invalid_url) assert response.status == 302 @@ -78,4 +79,249 @@ test "it returns 404 when url is in banned_urls cache", %{conn: conn, url: url} end end end + + describe "Media Preview Proxy" do + setup do + clear_config([:media_proxy, :enabled], true) + clear_config([:media_preview_proxy, :enabled], true) + clear_config([Pleroma.Web.Endpoint, :secret_key_base], "00000000000") + + original_url = "https://google.fn/test.png" + + [ + url: MediaProxy.encode_preview_url(original_url), + media_proxy_url: MediaProxy.encode_url(original_url) + ] + end + + test "returns 404 when media proxy is disabled", %{conn: conn} do + clear_config([:media_proxy, :enabled], false) + + assert %Conn{ + status: 404, + resp_body: "Not Found" + } = get(conn, "/proxy/preview/hhgfh/eeeee") + + assert %Conn{ + status: 404, + resp_body: "Not Found" + } = get(conn, "/proxy/preview/hhgfh/fff") + end + + test "returns 404 when disabled", %{conn: conn} do + clear_config([:media_preview_proxy, :enabled], false) + + assert %Conn{ + status: 404, + resp_body: "Not Found" + } = get(conn, "/proxy/preview/hhgfh/eeeee") + + assert %Conn{ + status: 404, + resp_body: "Not Found" + } = get(conn, "/proxy/preview/hhgfh/fff") + end + + test "it returns 403 for invalid signature", %{conn: conn, url: url} do + Pleroma.Config.put([Pleroma.Web.Endpoint, :secret_key_base], "000") + %{path: path} = URI.parse(url) + + assert %Conn{ + status: 403, + resp_body: "Forbidden" + } = get(conn, path) + + assert %Conn{ + status: 403, + resp_body: "Forbidden" + } = get(conn, "/proxy/preview/hhgfh/eeee") + + assert %Conn{ + status: 403, + resp_body: "Forbidden" + } = get(conn, "/proxy/preview/hhgfh/eeee/fff") + end + + test "redirects to valid url when filename is invalidated", %{conn: conn, url: url} do + invalid_url = String.replace(url, "test.png", "test-file.png") + response = get(conn, invalid_url) + assert response.status == 302 + assert redirected_to(response) == url + end + + test "responds with 424 Failed Dependency if HEAD request to media proxy fails", %{ + conn: conn, + url: url, + media_proxy_url: media_proxy_url + } do + Tesla.Mock.mock(fn + %{method: "head", url: ^media_proxy_url} -> + %Tesla.Env{status: 500, body: ""} + end) + + response = get(conn, url) + assert response.status == 424 + assert response.resp_body == "Can't fetch HTTP headers (HTTP 500)." + end + + test "redirects to media proxy URI on unsupported content type", %{ + conn: conn, + url: url, + media_proxy_url: media_proxy_url + } do + Tesla.Mock.mock(fn + %{method: "head", url: ^media_proxy_url} -> + %Tesla.Env{status: 200, body: "", headers: [{"content-type", "application/pdf"}]} + end) + + response = get(conn, url) + assert response.status == 302 + assert redirected_to(response) == media_proxy_url + end + + test "with `static=true` and GIF image preview requested, responds with JPEG image", %{ + conn: conn, + url: url, + media_proxy_url: media_proxy_url + } do + # Setting a high :min_content_length to ensure this scenario is not affected by its logic + clear_config([:media_preview_proxy, :min_content_length], 1_000_000_000) + + Tesla.Mock.mock(fn + %{method: "head", url: ^media_proxy_url} -> + %Tesla.Env{ + status: 200, + body: "", + headers: [{"content-type", "image/gif"}, {"content-length", "1001718"}] + } + + %{method: :get, url: ^media_proxy_url} -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/image.gif")} + end) + + response = get(conn, url <> "?static=true") + + assert response.status == 200 + assert Conn.get_resp_header(response, "content-type") == ["image/jpeg"] + assert response.resp_body != "" + end + + test "with GIF image preview requested and no `static` param, redirects to media proxy URI", + %{ + conn: conn, + url: url, + media_proxy_url: media_proxy_url + } do + Tesla.Mock.mock(fn + %{method: "head", url: ^media_proxy_url} -> + %Tesla.Env{status: 200, body: "", headers: [{"content-type", "image/gif"}]} + end) + + response = get(conn, url) + + assert response.status == 302 + assert redirected_to(response) == media_proxy_url + end + + test "with `static` param and non-GIF image preview requested, " <> + "redirects to media preview proxy URI without `static` param", + %{ + conn: conn, + url: url, + media_proxy_url: media_proxy_url + } do + Tesla.Mock.mock(fn + %{method: "head", url: ^media_proxy_url} -> + %Tesla.Env{status: 200, body: "", headers: [{"content-type", "image/jpeg"}]} + end) + + response = get(conn, url <> "?static=true") + + assert response.status == 302 + assert redirected_to(response) == url + end + + test "with :min_content_length setting not matched by Content-Length header, " <> + "redirects to media proxy URI", + %{ + conn: conn, + url: url, + media_proxy_url: media_proxy_url + } do + clear_config([:media_preview_proxy, :min_content_length], 100_000) + + Tesla.Mock.mock(fn + %{method: "head", url: ^media_proxy_url} -> + %Tesla.Env{ + status: 200, + body: "", + headers: [{"content-type", "image/gif"}, {"content-length", "5000"}] + } + end) + + response = get(conn, url) + + assert response.status == 302 + assert redirected_to(response) == media_proxy_url + end + + test "thumbnails PNG images into PNG", %{ + conn: conn, + url: url, + media_proxy_url: media_proxy_url + } do + Tesla.Mock.mock(fn + %{method: "head", url: ^media_proxy_url} -> + %Tesla.Env{status: 200, body: "", headers: [{"content-type", "image/png"}]} + + %{method: :get, url: ^media_proxy_url} -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/image.png")} + end) + + response = get(conn, url) + + assert response.status == 200 + assert Conn.get_resp_header(response, "content-type") == ["image/png"] + assert response.resp_body != "" + end + + test "thumbnails JPEG images into JPEG", %{ + conn: conn, + url: url, + media_proxy_url: media_proxy_url + } do + Tesla.Mock.mock(fn + %{method: "head", url: ^media_proxy_url} -> + %Tesla.Env{status: 200, body: "", headers: [{"content-type", "image/jpeg"}]} + + %{method: :get, url: ^media_proxy_url} -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/image.jpg")} + end) + + response = get(conn, url) + + assert response.status == 200 + assert Conn.get_resp_header(response, "content-type") == ["image/jpeg"] + assert response.resp_body != "" + end + + test "redirects to media proxy URI in case of thumbnailing error", %{ + conn: conn, + url: url, + media_proxy_url: media_proxy_url + } do + Tesla.Mock.mock(fn + %{method: "head", url: ^media_proxy_url} -> + %Tesla.Env{status: 200, body: "", headers: [{"content-type", "image/jpeg"}]} + + %{method: :get, url: ^media_proxy_url} -> + %Tesla.Env{status: 200, body: "error"} + end) + + response = get(conn, url) + + assert response.status == 302 + assert redirected_to(response) == media_proxy_url + end + end end From f7e40f7ef134a3030aa61114daa39810efb5889d Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 17 Sep 2020 09:32:50 -0500 Subject: [PATCH 258/460] Deny ConfigDB migration when deprecated settings found --- lib/mix/tasks/pleroma/config.ex | 10 ++++- lib/pleroma/config/deprecation_warnings.ex | 43 ++++++++++++++++++---- test/tasks/config_test.exs | 13 +++++++ 3 files changed, 56 insertions(+), 10 deletions(-) diff --git a/lib/mix/tasks/pleroma/config.ex b/lib/mix/tasks/pleroma/config.ex index 904c5a74b..18f99318d 100644 --- a/lib/mix/tasks/pleroma/config.ex +++ b/lib/mix/tasks/pleroma/config.ex @@ -32,7 +32,8 @@ def run(["migrate_from_db" | options]) do @spec migrate_to_db(Path.t() | nil) :: any() def migrate_to_db(file_path \\ nil) do - if Pleroma.Config.get([:configurable_from_database]) do + with true <- Pleroma.Config.get([:configurable_from_database]), + :ok <- Pleroma.Config.DeprecationWarnings.warn() do config_file = if file_path do file_path @@ -46,7 +47,8 @@ def migrate_to_db(file_path \\ nil) do do_migrate_to_db(config_file) else - migration_error() + :error -> deprecation_error() + _ -> migration_error() end end @@ -120,6 +122,10 @@ defp migration_error do ) end + defp deprecation_error do + shell_error("Migration is not allowed until all deprecation warnings have been resolved.") + end + if Code.ensure_loaded?(Config.Reader) do defp config_header, do: "import Config\r\n\r\n" defp read_file(config_file), do: Config.Reader.read_imports!(config_file) diff --git a/lib/pleroma/config/deprecation_warnings.ex b/lib/pleroma/config/deprecation_warnings.ex index 412d55a77..98c4dc9c8 100644 --- a/lib/pleroma/config/deprecation_warnings.ex +++ b/lib/pleroma/config/deprecation_warnings.ex @@ -26,6 +26,10 @@ def check_hellthread_threshold do !!!DEPRECATION WARNING!!! You are using the old configuration mechanism for the hellthread filter. Please check config.md. """) + + :error + else + :ok end end @@ -47,17 +51,26 @@ def mrf_user_allowlist do config :pleroma, :mrf_user_allowlist, #{inspect(rewritten, pretty: true)} """) + + :error + else + :ok end end def warn do - check_hellthread_threshold() - mrf_user_allowlist() - check_old_mrf_config() - check_media_proxy_whitelist_config() - check_welcome_message_config() - check_gun_pool_options() - check_activity_expiration_config() + with :ok <- check_hellthread_threshold(), + :ok <- mrf_user_allowlist(), + :ok <- check_old_mrf_config(), + :ok <- check_media_proxy_whitelist_config(), + :ok <- check_welcome_message_config(), + :ok <- check_gun_pool_options(), + :ok <- check_activity_expiration_config() do + :ok + else + _ -> + :error + end end def check_welcome_message_config do @@ -74,6 +87,10 @@ def check_welcome_message_config do \n* `config :pleroma, :instance, welcome_user_nickname` is now `config :pleroma, :welcome, :direct_message, :sender_nickname` \n* `config :pleroma, :instance, welcome_message` is now `config :pleroma, :welcome, :direct_message, :message` """) + + :error + else + :ok end end @@ -101,8 +118,11 @@ def move_namespace_and_warn(config_map, warning_preface) do end end) - if warning != "" do + if warning == "" do + :ok + else Logger.warn(warning_preface <> warning) + :error end end @@ -115,6 +135,10 @@ def check_media_proxy_whitelist_config do !!!DEPRECATION WARNING!!! Your config is using old format (only domain) for MediaProxy whitelist option. Setting should work for now, but you are advised to change format to scheme with port to prevent possible issues later. """) + + :error + else + :ok end end @@ -157,6 +181,9 @@ def check_gun_pool_options do Logger.warn(Enum.join([warning_preface | pool_warnings])) Config.put(:pools, updated_config) + :error + else + :ok end end diff --git a/test/tasks/config_test.exs b/test/tasks/config_test.exs index fb12e7fb3..f36648829 100644 --- a/test/tasks/config_test.exs +++ b/test/tasks/config_test.exs @@ -40,6 +40,19 @@ test "error if file with custom settings doesn't exist" do on_exit(fn -> Application.put_env(:quack, :level, initial) end) end + @tag capture_log: true + test "config migration refused when deprecated settings are found" do + clear_config([:media_proxy, :whitelist], ["domain_without_scheme.com"]) + assert Repo.all(ConfigDB) == [] + + Mix.Tasks.Pleroma.Config.migrate_to_db("test/fixtures/config/temp.secret.exs") + + assert_received {:mix_shell, :error, [message]} + + assert message =~ + "Migration is not allowed until all deprecation warnings have been resolved." + end + test "filtered settings are migrated to db" do assert Repo.all(ConfigDB) == [] From 41939e3175cf31884cb84acd136c303a84c77f8c Mon Sep 17 00:00:00 2001 From: stwf Date: Mon, 14 Sep 2020 11:40:52 -0400 Subject: [PATCH 259/460] User search respect discoverable flag --- lib/pleroma/user/search.ex | 5 +++ .../tesla_mock/admin@mastdon.example.org.json | 44 +++++++++++-------- ...ps___osada.macgirvin.com_channel_mike.json | 3 +- test/support/factory.ex | 1 + test/web/admin_api/search_test.exs | 9 ++++ .../mastodon_api/views/account_view_test.exs | 4 +- 6 files changed, 45 insertions(+), 21 deletions(-) diff --git a/lib/pleroma/user/search.ex b/lib/pleroma/user/search.ex index 7babd47ea..b8c648672 100644 --- a/lib/pleroma/user/search.ex +++ b/lib/pleroma/user/search.ex @@ -52,6 +52,7 @@ defp search_query(query_string, for_user, following) do |> base_query(following) |> filter_blocked_user(for_user) |> filter_invisible_users() + |> filter_discoverable_users() |> filter_internal_users() |> filter_blocked_domains(for_user) |> fts_search(query_string) @@ -122,6 +123,10 @@ defp filter_invisible_users(query) do from(q in query, where: q.invisible == false) end + defp filter_discoverable_users(query) do + from(q in query, where: q.discoverable == true) + end + defp filter_internal_users(query) do from(q in query, where: q.actor_type != "Application") end diff --git a/test/fixtures/tesla_mock/admin@mastdon.example.org.json b/test/fixtures/tesla_mock/admin@mastdon.example.org.json index a911b979a..f961ccb36 100644 --- a/test/fixtures/tesla_mock/admin@mastdon.example.org.json +++ b/test/fixtures/tesla_mock/admin@mastdon.example.org.json @@ -1,20 +1,24 @@ { - "@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1", { - "manuallyApprovesFollowers": "as:manuallyApprovesFollowers", - "sensitive": "as:sensitive", - "movedTo": "as:movedTo", - "Hashtag": "as:Hashtag", - "ostatus": "http://ostatus.org#", - "atomUri": "ostatus:atomUri", - "inReplyToAtomUri": "ostatus:inReplyToAtomUri", - "conversation": "ostatus:conversation", - "toot": "http://joinmastodon.org/ns#", - "Emoji": "toot:Emoji", - "alsoKnownAs": { - "@id": "as:alsoKnownAs", - "@type": "@id" + "@context": [ + "https://www.w3.org/ns/activitystreams", + "https://w3id.org/security/v1", + { + "manuallyApprovesFollowers": "as:manuallyApprovesFollowers", + "sensitive": "as:sensitive", + "movedTo": "as:movedTo", + "Hashtag": "as:Hashtag", + "ostatus": "http://ostatus.org#", + "atomUri": "ostatus:atomUri", + "inReplyToAtomUri": "ostatus:inReplyToAtomUri", + "conversation": "ostatus:conversation", + "toot": "http://joinmastodon.org/ns#", + "Emoji": "toot:Emoji", + "alsoKnownAs": { + "@id": "as:alsoKnownAs", + "@type": "@id" + } } - }], + ], "id": "http://mastodon.example.org/users/admin", "type": "Person", "following": "http://mastodon.example.org/users/admin/following", @@ -23,6 +27,7 @@ "outbox": "http://mastodon.example.org/users/admin/outbox", "preferredUsername": "admin", "name": null, + "discoverable": "true", "summary": "\u003cp\u003e\u003c/p\u003e", "url": "http://mastodon.example.org/@admin", "manuallyApprovesFollowers": false, @@ -34,7 +39,8 @@ "owner": "http://mastodon.example.org/users/admin", "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtc4Tir+3ADhSNF6VKrtW\nOU32T01w7V0yshmQei38YyiVwVvFu8XOP6ACchkdxbJ+C9mZud8qWaRJKVbFTMUG\nNX4+6Q+FobyuKrwN7CEwhDALZtaN2IPbaPd6uG1B7QhWorrY+yFa8f2TBM3BxnUy\nI4T+bMIZIEYG7KtljCBoQXuTQmGtuffO0UwJksidg2ffCF5Q+K//JfQagJ3UzrR+\nZXbKMJdAw4bCVJYs4Z5EhHYBwQWiXCyMGTd7BGlmMkY6Av7ZqHKC/owp3/0EWDNz\nNqF09Wcpr3y3e8nA10X40MJqp/wR+1xtxp+YGbq/Cj5hZGBG7etFOmIpVBrDOhry\nBwIDAQAB\n-----END PUBLIC KEY-----\n" }, - "attachment": [{ + "attachment": [ + { "type": "PropertyValue", "name": "foo", "value": "bar" @@ -58,5 +64,7 @@ "mediaType": "image/png", "url": "https://cdn.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png" }, - "alsoKnownAs": ["http://example.org/users/foo"] -} + "alsoKnownAs": [ + "http://example.org/users/foo" + ] +} \ No newline at end of file diff --git a/test/fixtures/tesla_mock/https___osada.macgirvin.com_channel_mike.json b/test/fixtures/tesla_mock/https___osada.macgirvin.com_channel_mike.json index c42f3a53c..ca76d6e17 100644 --- a/test/fixtures/tesla_mock/https___osada.macgirvin.com_channel_mike.json +++ b/test/fixtures/tesla_mock/https___osada.macgirvin.com_channel_mike.json @@ -8,6 +8,7 @@ "preferredUsername": "mike", "name": "Mike Macgirvin (Osada)", "updated": "2018-08-29T03:09:11Z", + "discoverable": "true", "icon": { "type": "Image", "mediaType": "image/jpeg", @@ -51,4 +52,4 @@ "created": "2018-10-17T07:16:28Z", "signatureValue": "WbfFVIPImkd3yNu6brz0CvZaeV242rwAbH0vy8DM4vfnXCxLr5Uv/Wj9gwP+tbooTxGaahAKBeqlGkQp8RLEo37LATrKMRLA/0V6DeeV+C5ORWR9B4WxyWiD3s/9Wf+KesFMtktNLAcMZ5PfnOS/xNYerhnpkp/gWPxtkglmLIWJv+w18A5zZ01JCxsO4QljHbhYaEUPHUfQ97abrkLECeam+FThVwdO6BFCtbjoNXHfzjpSZL/oKyBpi5/fpnqMqOLOQPs5WgBBZJvjEYYkQcoPTyxYI5NGpNbzIjGHPQNuACnOelH16A7L+q4swLWDIaEFeXQ2/5bmqVKZDZZ6usNP4QyTVszwd8jqo27qcDTNibXDUTsTdKpNQvM/3UncBuzuzmUV3FczhtGshIU1/pRVZiQycpVqPlGLvXhP/yZCe+1siyqDd+3uMaS2vkHTObSl5r+VYof+c+TcjrZXHSWnQTg8/X3zkoBWosrQ93VZcwjzMxQoARYv6rphbOoTz7RPmGAXYUt3/PDWkqDlmQDwCpLNNkJo1EidyefZBdD9HXQpCBO0ZU0NHb0JmPvg/+zU0krxlv70bm3RHA/maBETVjroIWzt7EwQEg5pL2hVnvSBG+1wF3BtRVe77etkPOHxLnYYIcAMLlVKCcgDd89DPIziQyruvkx1busHI08=" } -} +} \ No newline at end of file diff --git a/test/support/factory.ex b/test/support/factory.ex index 2fdfabbc5..fb82be0c4 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -31,6 +31,7 @@ def user_factory do nickname: sequence(:nickname, &"nick#{&1}"), password_hash: Pbkdf2.hash_pwd_salt("test"), bio: sequence(:bio, &"Tester Number #{&1}"), + discoverable: true, last_digest_emailed_at: NaiveDateTime.utc_now(), last_refreshed_at: NaiveDateTime.utc_now(), notification_settings: %Pleroma.User.NotificationSetting{}, diff --git a/test/web/admin_api/search_test.exs b/test/web/admin_api/search_test.exs index b974cedd5..d88867c52 100644 --- a/test/web/admin_api/search_test.exs +++ b/test/web/admin_api/search_test.exs @@ -177,5 +177,14 @@ test "it returns unapproved user" do assert total == 3 assert count == 1 end + + test "it returns non-discoverable users" do + insert(:user) + insert(:user, discoverable: false) + + {:ok, _results, total} = Search.user() + + assert total == 2 + end end end diff --git a/test/web/mastodon_api/views/account_view_test.exs b/test/web/mastodon_api/views/account_view_test.exs index c5f491d6b..a54b765ef 100644 --- a/test/web/mastodon_api/views/account_view_test.exs +++ b/test/web/mastodon_api/views/account_view_test.exs @@ -68,7 +68,7 @@ test "Represent a user account" do sensitive: false, pleroma: %{ actor_type: "Person", - discoverable: false + discoverable: true }, fields: [] }, @@ -166,7 +166,7 @@ test "Represent a Service(bot) account" do sensitive: false, pleroma: %{ actor_type: "Service", - discoverable: false + discoverable: true }, fields: [] }, From dfc621a5291a761f025670153bb58a2005fd0a73 Mon Sep 17 00:00:00 2001 From: stwf Date: Thu, 17 Sep 2020 10:13:56 -0400 Subject: [PATCH 260/460] add test and changelog entry --- CHANGELOG.md | 2 +- test/user_search_test.exs | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6072d4cbe..5d329fd55 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,8 +10,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Renamed `:await_up_timeout` in `:connections_pool` namespace to `:connect_timeout`, old name is deprecated. - Renamed `:timeout` in `pools` namespace to `:recv_timeout`, old name is deprecated. - The `discoverable` field in the `User` struct will now add a NOINDEX metatag to profile pages when false. +- Users with the `discoverable` field set to false will not show up in searches. - Minimum lifetime for ephmeral activities changed to 10 minutes and made configurable (`:min_lifetime` option). - ### Removed - **Breaking:** `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab` (moved to a simpler implementation). diff --git a/test/user_search_test.exs b/test/user_search_test.exs index 01976bf58..8529ce6db 100644 --- a/test/user_search_test.exs +++ b/test/user_search_test.exs @@ -25,6 +25,14 @@ test "excludes invisible users from results" do assert found_user.id == user.id end + test "excludes users when discoverable is false" do + insert(:user, %{nickname: "john 3000", discoverable: false}) + insert(:user, %{nickname: "john 3001"}) + + users = User.search("john") + assert Enum.count(users) == 1 + end + test "excludes service actors from results" do insert(:user, actor_type: "Application", nickname: "user1") service = insert(:user, actor_type: "Service", nickname: "user2") From 9d77f4abf80f75559456cef06da1a0d3b3b4f7e2 Mon Sep 17 00:00:00 2001 From: stwf Date: Thu, 17 Sep 2020 12:32:40 -0400 Subject: [PATCH 261/460] adapt to new user factory behavior --- test/web/metadata/metadata_test.exs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/web/metadata/metadata_test.exs b/test/web/metadata/metadata_test.exs index 054844597..ca6cbe67f 100644 --- a/test/web/metadata/metadata_test.exs +++ b/test/web/metadata/metadata_test.exs @@ -16,7 +16,7 @@ test "for remote user" do end test "for local user" do - user = insert(:user) + user = insert(:user, discoverable: false) assert Pleroma.Web.Metadata.build_tags(%{user: user}) =~ "" @@ -40,7 +40,7 @@ test "for local user set to discoverable" do test "search exclusion metadata is included" do clear_config([:instance, :public], false) - user = insert(:user, bio: "This is my secret fedi account bio") + user = insert(:user, bio: "This is my secret fedi account bio", discoverable: false) assert ~s() == Pleroma.Web.Metadata.build_tags(%{user: user}) From 3a0f99ed35a84145e713d4c640c50dc82c1b0dbb Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Mon, 14 Sep 2020 13:52:13 +0200 Subject: [PATCH 262/460] KeywordPolicy: Still match when fields are absent --- .../web/activity_pub/mrf/keyword_policy.ex | 61 +++++++++---------- 1 file changed, 29 insertions(+), 32 deletions(-) diff --git a/lib/pleroma/web/activity_pub/mrf/keyword_policy.ex b/lib/pleroma/web/activity_pub/mrf/keyword_policy.ex index 15e09dcf0..db66cfa3e 100644 --- a/lib/pleroma/web/activity_pub/mrf/keyword_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/keyword_policy.ex @@ -20,9 +20,17 @@ defp string_matches?(string, pattern) do String.match?(string, pattern) end - defp check_reject(%{"object" => %{"content" => content, "summary" => summary}} = message) do + defp object_payload(%{} = object) do + [object["content"], object["summary"], object["name"]] + |> Enum.filter(& &1) + |> Enum.join("\n") + end + + defp check_reject(%{"object" => %{} = object} = message) do + payload = object_payload(object) + if Enum.any?(Pleroma.Config.get([:mrf_keyword, :reject]), fn pattern -> - string_matches?(content, pattern) or string_matches?(summary, pattern) + string_matches?(payload, pattern) end) do {:reject, "[KeywordPolicy] Matches with rejected keyword"} else @@ -30,12 +38,12 @@ defp check_reject(%{"object" => %{"content" => content, "summary" => summary}} = end end - defp check_ftl_removal( - %{"to" => to, "object" => %{"content" => content, "summary" => summary}} = message - ) do + defp check_ftl_removal(%{"to" => to, "object" => %{} = object} = message) do + payload = object_payload(object) + if Pleroma.Constants.as_public() in to and Enum.any?(Pleroma.Config.get([:mrf_keyword, :federated_timeline_removal]), fn pattern -> - string_matches?(content, pattern) or string_matches?(summary, pattern) + string_matches?(payload, pattern) end) do to = List.delete(to, Pleroma.Constants.as_public()) cc = [Pleroma.Constants.as_public() | message["cc"] || []] @@ -51,35 +59,24 @@ defp check_ftl_removal( end end - defp check_replace(%{"object" => %{"content" => content, "summary" => summary}} = message) do - content = - if is_binary(content) do - content - else - "" - end + defp check_replace(%{"object" => %{} = object} = message) do + object = + ["content", "name", "summary"] + |> Enum.filter(fn field -> Map.has_key?(object, field) && object[field] end) + |> Enum.reduce(object, fn field, object -> + data = + Enum.reduce( + Pleroma.Config.get([:mrf_keyword, :replace]), + object[field], + fn {pat, repl}, acc -> String.replace(acc, pat, repl) end + ) - summary = - if is_binary(summary) do - summary - else - "" - end + Map.put(object, field, data) + end) - {content, summary} = - Enum.reduce( - Pleroma.Config.get([:mrf_keyword, :replace]), - {content, summary}, - fn {pattern, replacement}, {content_acc, summary_acc} -> - {String.replace(content_acc, pattern, replacement), - String.replace(summary_acc, pattern, replacement)} - end - ) + message = Map.put(message, "object", object) - {:ok, - message - |> put_in(["object", "content"], content) - |> put_in(["object", "summary"], summary)} + {:ok, message} end @impl true From abf25e5d5254edc88a65610bf5a0fd7e52f545c3 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Sat, 12 Sep 2020 12:05:36 +0200 Subject: [PATCH 263/460] Create MRF.filter_pipeline to inject :object_data when present --- CHANGELOG.md | 6 +++++ lib/pleroma/web/activity_pub/mrf.ex | 24 ++++++++++++++++--- .../web/activity_pub/mrf/subchain_policy.ex | 3 +-- lib/pleroma/web/activity_pub/pipeline.ex | 8 +++++-- test/web/activity_pub/pipeline_test.exs | 16 ++++++------- .../controllers/chat_controller_test.exs | 17 +++++++++++++ 6 files changed, 59 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c25c60a3..de11dd7a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,12 @@ switched to a new configuration mechanism, however it was not officially removed - Welcome Chat messages preventing user registration with MRF Simple Policy applied to the local instance - Mastodon API: the public timeline returning an error when the `reply_visibility` parameter is set to `self` for an unauthenticated user +## Unreleased-patch + +### Security + +- Fix most MRF rules either crashing or not being applied to objects passed into the Common Pipeline (ChatMessage, Question, Answer, Audio, Event) + ## [2.1.1] - 2020-09-08 ### Security diff --git a/lib/pleroma/web/activity_pub/mrf.ex b/lib/pleroma/web/activity_pub/mrf.ex index 206d6af52..5e5361082 100644 --- a/lib/pleroma/web/activity_pub/mrf.ex +++ b/lib/pleroma/web/activity_pub/mrf.ex @@ -5,16 +5,34 @@ defmodule Pleroma.Web.ActivityPub.MRF do @callback filter(Map.t()) :: {:ok | :reject, Map.t()} - def filter(policies, %{} = object) do + def filter(policies, %{} = message) do policies - |> Enum.reduce({:ok, object}, fn - policy, {:ok, object} -> policy.filter(object) + |> Enum.reduce({:ok, message}, fn + policy, {:ok, message} -> policy.filter(message) _, error -> error end) end def filter(%{} = object), do: get_policies() |> filter(object) + def pipeline_filter(%{} = message, meta) do + object = meta[:object_data] + ap_id = message["object"] + + if object && ap_id do + with {:ok, message} <- filter(Map.put(message, "object", object)) do + meta = Keyword.put(meta, :object_data, message["object"]) + {:ok, Map.put(message, "object", ap_id), meta} + else + {err, message} -> {err, message, meta} + end + else + {err, message} = filter(message) + + {err, message, meta} + end + end + def get_policies do Pleroma.Config.get([:mrf, :policies], []) |> get_policies() end diff --git a/lib/pleroma/web/activity_pub/mrf/subchain_policy.ex b/lib/pleroma/web/activity_pub/mrf/subchain_policy.ex index c9f20571f..048052da6 100644 --- a/lib/pleroma/web/activity_pub/mrf/subchain_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/subchain_policy.ex @@ -28,8 +28,7 @@ def filter(%{"actor" => actor} = message) do }" ) - subchain - |> MRF.filter(message) + MRF.filter(subchain, message) else _e -> {:ok, message} end diff --git a/lib/pleroma/web/activity_pub/pipeline.ex b/lib/pleroma/web/activity_pub/pipeline.ex index 36e325c37..2db86f116 100644 --- a/lib/pleroma/web/activity_pub/pipeline.ex +++ b/lib/pleroma/web/activity_pub/pipeline.ex @@ -26,13 +26,17 @@ def common_pipeline(object, meta) do {:error, e} -> {:error, e} + + {:reject, e} -> + {:reject, e} end end def do_common_pipeline(object, meta) do with {_, {:ok, validated_object, meta}} <- {:validate_object, ObjectValidator.validate(object, meta)}, - {_, {:ok, mrfd_object}} <- {:mrf_object, MRF.filter(validated_object)}, + {_, {:ok, mrfd_object, meta}} <- + {:mrf_object, MRF.pipeline_filter(validated_object, meta)}, {_, {:ok, activity, meta}} <- {:persist_object, ActivityPub.persist(mrfd_object, meta)}, {_, {:ok, activity, meta}} <- @@ -40,7 +44,7 @@ def do_common_pipeline(object, meta) do {_, {:ok, _}} <- {:federation, maybe_federate(activity, meta)} do {:ok, activity, meta} else - {:mrf_object, {:reject, _}} -> {:ok, nil, meta} + {:mrf_object, {:reject, message, _}} -> {:reject, message} e -> {:error, e} end end diff --git a/test/web/activity_pub/pipeline_test.exs b/test/web/activity_pub/pipeline_test.exs index f2a231eaf..210a06563 100644 --- a/test/web/activity_pub/pipeline_test.exs +++ b/test/web/activity_pub/pipeline_test.exs @@ -26,7 +26,7 @@ test "when given an `object_data` in meta, Federation will receive a the origina { Pleroma.Web.ActivityPub.MRF, [], - [filter: fn o -> {:ok, o} end] + [pipeline_filter: fn o, m -> {:ok, o, m} end] }, { Pleroma.Web.ActivityPub.ActivityPub, @@ -51,7 +51,7 @@ test "when given an `object_data` in meta, Federation will receive a the origina Pleroma.Web.ActivityPub.Pipeline.common_pipeline(activity, meta) assert_called(Pleroma.Web.ActivityPub.ObjectValidator.validate(activity, meta)) - assert_called(Pleroma.Web.ActivityPub.MRF.filter(activity)) + assert_called(Pleroma.Web.ActivityPub.MRF.pipeline_filter(activity, meta)) assert_called(Pleroma.Web.ActivityPub.ActivityPub.persist(activity, meta)) assert_called(Pleroma.Web.ActivityPub.SideEffects.handle(activity, meta)) refute called(Pleroma.Web.Federator.publish(activity)) @@ -68,7 +68,7 @@ test "it goes through validation, filtering, persisting, side effects and federa { Pleroma.Web.ActivityPub.MRF, [], - [filter: fn o -> {:ok, o} end] + [pipeline_filter: fn o, m -> {:ok, o, m} end] }, { Pleroma.Web.ActivityPub.ActivityPub, @@ -93,7 +93,7 @@ test "it goes through validation, filtering, persisting, side effects and federa Pleroma.Web.ActivityPub.Pipeline.common_pipeline(activity, meta) assert_called(Pleroma.Web.ActivityPub.ObjectValidator.validate(activity, meta)) - assert_called(Pleroma.Web.ActivityPub.MRF.filter(activity)) + assert_called(Pleroma.Web.ActivityPub.MRF.pipeline_filter(activity, meta)) assert_called(Pleroma.Web.ActivityPub.ActivityPub.persist(activity, meta)) assert_called(Pleroma.Web.ActivityPub.SideEffects.handle(activity, meta)) assert_called(Pleroma.Web.Federator.publish(activity)) @@ -109,7 +109,7 @@ test "it goes through validation, filtering, persisting, side effects without fe { Pleroma.Web.ActivityPub.MRF, [], - [filter: fn o -> {:ok, o} end] + [pipeline_filter: fn o, m -> {:ok, o, m} end] }, { Pleroma.Web.ActivityPub.ActivityPub, @@ -131,7 +131,7 @@ test "it goes through validation, filtering, persisting, side effects without fe Pleroma.Web.ActivityPub.Pipeline.common_pipeline(activity, meta) assert_called(Pleroma.Web.ActivityPub.ObjectValidator.validate(activity, meta)) - assert_called(Pleroma.Web.ActivityPub.MRF.filter(activity)) + assert_called(Pleroma.Web.ActivityPub.MRF.pipeline_filter(activity, meta)) assert_called(Pleroma.Web.ActivityPub.ActivityPub.persist(activity, meta)) assert_called(Pleroma.Web.ActivityPub.SideEffects.handle(activity, meta)) end @@ -148,7 +148,7 @@ test "it goes through validation, filtering, persisting, side effects without fe { Pleroma.Web.ActivityPub.MRF, [], - [filter: fn o -> {:ok, o} end] + [pipeline_filter: fn o, m -> {:ok, o, m} end] }, { Pleroma.Web.ActivityPub.ActivityPub, @@ -170,7 +170,7 @@ test "it goes through validation, filtering, persisting, side effects without fe Pleroma.Web.ActivityPub.Pipeline.common_pipeline(activity, meta) assert_called(Pleroma.Web.ActivityPub.ObjectValidator.validate(activity, meta)) - assert_called(Pleroma.Web.ActivityPub.MRF.filter(activity)) + assert_called(Pleroma.Web.ActivityPub.MRF.pipeline_filter(activity, meta)) assert_called(Pleroma.Web.ActivityPub.ActivityPub.persist(activity, meta)) assert_called(Pleroma.Web.ActivityPub.SideEffects.handle(activity, meta)) end diff --git a/test/web/pleroma_api/controllers/chat_controller_test.exs b/test/web/pleroma_api/controllers/chat_controller_test.exs index 7be5fe09c..32c23e9d7 100644 --- a/test/web/pleroma_api/controllers/chat_controller_test.exs +++ b/test/web/pleroma_api/controllers/chat_controller_test.exs @@ -126,6 +126,23 @@ test "it works with an attachment", %{conn: conn, user: user} do assert result["attachment"] end + + test "gets MRF reason when rejected", %{conn: conn, user: user} do + clear_config([:mrf_keyword, :reject], ["GNO"]) + clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.KeywordPolicy]) + + other_user = insert(:user) + + {:ok, chat} = Chat.get_or_create(user.id, other_user.ap_id) + + result = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/pleroma/chats/#{chat.id}/messages", %{"content" => "GNO/Linux"}) + |> json_response_and_validate_schema(200) + + assert result == %{} + end end describe "DELETE /api/v1/pleroma/chats/:id/messages/:message_id" do From 7bf269fe836ded974d2187c6b36eba4ab185ff25 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Mon, 14 Sep 2020 14:07:22 +0200 Subject: [PATCH 264/460] Fix MRF reject for ChatMessage --- lib/pleroma/web/api_spec/operations/chat_operation.ex | 3 ++- .../web/api_spec/operations/status_operation.ex | 2 +- lib/pleroma/web/common_api/common_api.ex | 3 +++ .../web/pleroma_api/controllers/chat_controller.ex | 10 ++++++++++ test/web/common_api/common_api_test.exs | 11 +++++++++++ .../pleroma_api/controllers/chat_controller_test.exs | 6 +++--- 6 files changed, 30 insertions(+), 5 deletions(-) diff --git a/lib/pleroma/web/api_spec/operations/chat_operation.ex b/lib/pleroma/web/api_spec/operations/chat_operation.ex index b1a0d26ab..56554d5b4 100644 --- a/lib/pleroma/web/api_spec/operations/chat_operation.ex +++ b/lib/pleroma/web/api_spec/operations/chat_operation.ex @@ -184,7 +184,8 @@ def post_chat_message_operation do "application/json", ChatMessage ), - 400 => Operation.response("Bad Request", "application/json", ApiError) + 400 => Operation.response("Bad Request", "application/json", ApiError), + 422 => Operation.response("MRF Rejection", "application/json", ApiError) }, security: [ %{ diff --git a/lib/pleroma/web/api_spec/operations/status_operation.ex b/lib/pleroma/web/api_spec/operations/status_operation.ex index 5bd4619d5..d7ebde6f6 100644 --- a/lib/pleroma/web/api_spec/operations/status_operation.ex +++ b/lib/pleroma/web/api_spec/operations/status_operation.ex @@ -55,7 +55,7 @@ def create_operation do "application/json", %Schema{oneOf: [Status, ScheduledStatus]} ), - 422 => Operation.response("Bad Request", "application/json", ApiError) + 422 => Operation.response("Bad Request / MRF Rejection", "application/json", ApiError) } } end diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex index a8c83bc8f..60a50b027 100644 --- a/lib/pleroma/web/common_api/common_api.ex +++ b/lib/pleroma/web/common_api/common_api.ex @@ -48,6 +48,9 @@ def post_chat_message(%User{} = user, %User{} = recipient, content, opts \\ []) local: true )} do {:ok, activity} + else + {:common_pipeline, {:reject, _} = e} -> e + e -> e end end diff --git a/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex b/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex index 27c9a2e0f..867cff829 100644 --- a/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex @@ -90,6 +90,16 @@ def post_chat_message( conn |> put_view(MessageReferenceView) |> render("show.json", chat_message_reference: cm_ref) + else + {:reject, message} -> + conn + |> put_status(:unprocessable_entity) + |> json(%{error: message}) + + {:error, message} -> + conn + |> put_status(:bad_request) + |> json(%{error: message}) end end diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index f5559f932..2eab64e8b 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -217,6 +217,17 @@ test "it reject messages over the local limit" do assert message == :content_too_long end + + test "it reject messages via MRF" do + clear_config([:mrf_keyword, :reject], ["GNO"]) + clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.KeywordPolicy]) + + author = insert(:user) + recipient = insert(:user) + + assert {:reject, "[KeywordPolicy] Matches with rejected keyword"} == + CommonAPI.post_chat_message(author, recipient, "GNO/Linux") + end end describe "unblocking" do diff --git a/test/web/pleroma_api/controllers/chat_controller_test.exs b/test/web/pleroma_api/controllers/chat_controller_test.exs index 32c23e9d7..44a78a738 100644 --- a/test/web/pleroma_api/controllers/chat_controller_test.exs +++ b/test/web/pleroma_api/controllers/chat_controller_test.exs @@ -100,7 +100,7 @@ test "it fails if there is no content", %{conn: conn, user: user} do |> post("/api/v1/pleroma/chats/#{chat.id}/messages") |> json_response_and_validate_schema(400) - assert result + assert %{"error" => "no_content"} == result end test "it works with an attachment", %{conn: conn, user: user} do @@ -139,9 +139,9 @@ test "gets MRF reason when rejected", %{conn: conn, user: user} do conn |> put_req_header("content-type", "application/json") |> post("/api/v1/pleroma/chats/#{chat.id}/messages", %{"content" => "GNO/Linux"}) - |> json_response_and_validate_schema(200) + |> json_response_and_validate_schema(422) - assert result == %{} + assert %{"error" => "[KeywordPolicy] Matches with rejected keyword"} == result end end From 226fa3e486e3ea9f82e8d3a7025244fdf11d14db Mon Sep 17 00:00:00 2001 From: Sergey Suprunenko Date: Thu, 17 Sep 2020 22:04:47 +0200 Subject: [PATCH 265/460] Make WebPushEncryption use Pleroma.HTTP as an HTTP adapter --- config/config.exs | 2 ++ test/web/push/impl_test.exs | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/config/config.exs b/config/config.exs index c204814d0..b8864fe08 100644 --- a/config/config.exs +++ b/config/config.exs @@ -787,6 +787,8 @@ config :ex_aws, http_client: Pleroma.HTTP.ExAws +config :web_push_encryption, http_client: Pleroma.HTTP + config :pleroma, :instances_favicons, enabled: false config :floki, :html_parser, Floki.HTMLParser.FastHtml diff --git a/test/web/push/impl_test.exs b/test/web/push/impl_test.exs index aeb5c1fbd..c7c17e156 100644 --- a/test/web/push/impl_test.exs +++ b/test/web/push/impl_test.exs @@ -12,7 +12,9 @@ defmodule Pleroma.Web.Push.ImplTest do alias Pleroma.Web.CommonAPI alias Pleroma.Web.Push.Impl alias Pleroma.Web.Push.Subscription + alias Pleroma.Web.WebPushHttpClientMock + import Mock import Pleroma.Factory setup do @@ -78,6 +80,22 @@ test "successful message sending" do assert Impl.push_message(@message, @sub, @api_key, %Subscription{}) == :ok end + test_with_mock "uses WebPushHttpClientMock as an HTTP client", WebPushHttpClientMock, + post: fn _, _, _ -> {:ok, %{status_code: 200}} end do + Impl.push_message(@message, @sub, @api_key, %Subscription{}) + assert_called(WebPushHttpClientMock.post("https://example.com/example/1234", :_, :_)) + end + + test_with_mock "uses Pleroma.HTTP as an HTTP client", Pleroma.HTTP, + post: fn _, _, _ -> {:ok, %{status_code: 200}} end do + client = Application.get_env(:web_push_encryption, :http_client) + on_exit(fn -> Application.put_env(:web_push_encryption, :http_client, client) end) + Application.put_env(:web_push_encryption, :http_client, Pleroma.HTTP) + + Impl.push_message(@message, @sub, @api_key, %Subscription{}) + assert_called(Pleroma.HTTP.post("https://example.com/example/1234", :_, :_)) + end + @tag capture_log: true test "fail message sending" do assert Impl.push_message( From 2159daa9af8967fe4b6d31e19c7048979b4cb165 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Fri, 18 Sep 2020 07:09:53 +0300 Subject: [PATCH 266/460] update changelog --- CHANGELOG.md | 4 ++++ docs/API/pleroma_api.md | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1266d2dfe..5abafdf69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - The `discoverable` field in the `User` struct will now add a NOINDEX metatag to profile pages when false. - Users with the `discoverable` field set to false will not show up in searches. - Minimum lifetime for ephmeral activities changed to 10 minutes and made configurable (`:min_lifetime` option). + ### Removed - **Breaking:** `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab` (moved to a simpler implementation). @@ -20,6 +21,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Removed `:managed_config` option. In practice, it was accidentally removed with 2.0.0 release when frontends were switched to a new configuration mechanism, however it was not officially removed until now. +### Added +- Pleroma API: Importing the mutes users from CSV files. + ## [2.1.2] - 2020-09-17 ### Security diff --git a/docs/API/pleroma_api.md b/docs/API/pleroma_api.md index 567ad5732..94b6a4fda 100644 --- a/docs/API/pleroma_api.md +++ b/docs/API/pleroma_api.md @@ -60,7 +60,6 @@ Request parameters can be passed via [query strings](https://en.wikipedia.org/wi * `list`: STRING or FILE containing a whitespace-separated list of accounts to mute * Response: HTTP 200 on success, 500 on error - ## `/api/pleroma/captcha` ### Get a new captcha * Method: `GET` From f2ef9735c52c648a03de4af41f19bb4ec857de03 Mon Sep 17 00:00:00 2001 From: Steven Fuchs Date: Fri, 18 Sep 2020 11:58:22 +0000 Subject: [PATCH 267/460] Federate data through persistent websocket connections --- CHANGELOG.md | 3 + config/config.exs | 12 ++ config/description.exs | 13 ++ config/test.exs | 5 + docs/configuration/cheatsheet.md | 10 + lib/pleroma/application.ex | 9 +- lib/pleroma/object/fetcher.ex | 66 +++++-- lib/pleroma/signature.ex | 6 +- lib/pleroma/user.ex | 10 +- lib/pleroma/web/activity_pub/activity_pub.ex | 14 +- lib/pleroma/web/activity_pub/publisher.ex | 34 ++-- .../web/activity_pub/transmogrifier.ex | 2 +- lib/pleroma/web/fed_sockets/fed_registry.ex | 185 ++++++++++++++++++ lib/pleroma/web/fed_sockets/fed_socket.ex | 137 +++++++++++++ lib/pleroma/web/fed_sockets/fed_sockets.ex | 182 +++++++++++++++++ lib/pleroma/web/fed_sockets/fetch_registry.ex | 151 ++++++++++++++ .../web/fed_sockets/incoming_handler.ex | 88 +++++++++ .../web/fed_sockets/ingester_worker.ex | 33 ++++ .../web/fed_sockets/outgoing_handler.ex | 146 ++++++++++++++ lib/pleroma/web/fed_sockets/socket_info.ex | 52 +++++ lib/pleroma/web/fed_sockets/supervisor.ex | 59 ++++++ mix.lock | 2 +- test/web/fed_sockets/fed_registry_test.exs | 124 ++++++++++++ test/web/fed_sockets/fetch_registry_test.exs | 67 +++++++ test/web/fed_sockets/socket_info_test.exs | 118 +++++++++++ 25 files changed, 1479 insertions(+), 49 deletions(-) create mode 100644 lib/pleroma/web/fed_sockets/fed_registry.ex create mode 100644 lib/pleroma/web/fed_sockets/fed_socket.ex create mode 100644 lib/pleroma/web/fed_sockets/fed_sockets.ex create mode 100644 lib/pleroma/web/fed_sockets/fetch_registry.ex create mode 100644 lib/pleroma/web/fed_sockets/incoming_handler.ex create mode 100644 lib/pleroma/web/fed_sockets/ingester_worker.ex create mode 100644 lib/pleroma/web/fed_sockets/outgoing_handler.ex create mode 100644 lib/pleroma/web/fed_sockets/socket_info.ex create mode 100644 lib/pleroma/web/fed_sockets/supervisor.ex create mode 100644 test/web/fed_sockets/fed_registry_test.exs create mode 100644 test/web/fed_sockets/fetch_registry_test.exs create mode 100644 test/web/fed_sockets/socket_info_test.exs diff --git a/CHANGELOG.md b/CHANGELOG.md index 1266d2dfe..5e4d06c82 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## Unreleased +### Added +- Experimental websocket-based federation between Pleroma instances. + ### Changed - Renamed `:await_up_timeout` in `:connections_pool` namespace to `:connect_timeout`, old name is deprecated. diff --git a/config/config.exs b/config/config.exs index c204814d0..104013b41 100644 --- a/config/config.exs +++ b/config/config.exs @@ -130,6 +130,7 @@ dispatch: [ {:_, [ + {"/api/fedsocket/v1", Pleroma.Web.FedSockets.IncomingHandler, []}, {"/api/v1/streaming", Pleroma.Web.MastodonAPI.WebsocketHandler, []}, {"/websocket", Phoenix.Endpoint.CowboyWebSocket, {Phoenix.Transports.WebSocket, @@ -148,6 +149,16 @@ "SameSite=Lax" ] +config :pleroma, :fed_sockets, + enabled: false, + connection_duration: :timer.hours(8), + rejection_duration: :timer.minutes(15), + fed_socket_fetches: [ + default: 12_000, + interval: 3_000, + lazy: false + ] + # Configures Elixir's Logger config :logger, :console, level: :debug, @@ -532,6 +543,7 @@ token_expiration: 5, federator_incoming: 50, federator_outgoing: 50, + ingestion_queue: 50, web_push: 50, mailer: 10, transmogrifier: 20, diff --git a/config/description.exs b/config/description.exs index 2b30f8148..6f3855918 100644 --- a/config/description.exs +++ b/config/description.exs @@ -270,6 +270,19 @@ } ] }, + %{ + group: :pleroma, + key: :fed_sockets, + type: :group, + description: "Websocket based federation", + children: [ + %{ + key: :enabled, + type: :boolean, + description: "Enable FedSockets" + } + ] + }, %{ group: :pleroma, key: Pleroma.Emails.Mailer, diff --git a/config/test.exs b/config/test.exs index 0ee6f1b7f..93a0e2a61 100644 --- a/config/test.exs +++ b/config/test.exs @@ -19,6 +19,11 @@ level: :warn, format: "\n[$level] $message\n" +config :pleroma, :fed_sockets, + enabled: false, + connection_duration: 5, + rejection_duration: 5 + config :pleroma, :auth, oauth_consumer_strategies: [] config :pleroma, Pleroma.Upload, diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index 054b8fe43..9a275294e 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -225,6 +225,16 @@ Enables the worker which processes posts scheduled for deletion. Pinned posts ar * `enabled`: whether expired activities will be sent to the job queue to be deleted +## FedSockets +FedSockets is an experimental feature allowing for Pleroma backends to federate using a persistant websocket connection as opposed to making each federation a seperate http connection. This feature is currently off by default. It is configurable throught he following options. + +### :fedsockets +* `enabled`: Enables FedSockets for this instance. `false` by default. +* `connection_duration`: Time an idle websocket is kept open. +* `rejection_duration`: Failures to connect via FedSockets will not be retried for this period of time. +* `fed_socket_fetches` and `fed_socket_rejections`: Settings passed to `cachex` for the fetch registry, and rejection stacks. See `Pleroma.Web.FedSockets` for more details. + + ## Frontends ### :frontend_configurations diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index c39e24919..00ec79a2a 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -99,7 +99,7 @@ def start(_type, _args) do {Oban, Config.get(Oban)} ] ++ task_children(@env) ++ - streamer_child(@env) ++ + dont_run_in_test(@env) ++ chat_child(@env, chat_enabled?()) ++ [ Pleroma.Web.Endpoint, @@ -188,16 +188,17 @@ def build_cachex(type, opts), defp chat_enabled?, do: Config.get([:chat, :enabled]) - defp streamer_child(env) when env in [:test, :benchmark], do: [] + defp dont_run_in_test(env) when env in [:test, :benchmark], do: [] - defp streamer_child(_) do + defp dont_run_in_test(_) do [ {Registry, [ name: Pleroma.Web.Streamer.registry(), keys: :duplicate, partitions: System.schedulers_online() - ]} + ]}, + Pleroma.Web.FedSockets.Supervisor ] end diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex index 24dc7cb95..169298b34 100644 --- a/lib/pleroma/object/fetcher.ex +++ b/lib/pleroma/object/fetcher.ex @@ -12,6 +12,7 @@ defmodule Pleroma.Object.Fetcher do alias Pleroma.Web.ActivityPub.ObjectValidator alias Pleroma.Web.ActivityPub.Transmogrifier alias Pleroma.Web.Federator + alias Pleroma.Web.FedSockets require Logger require Pleroma.Constants @@ -182,27 +183,20 @@ defp maybe_date_fetch(headers, date) do end end - def fetch_and_contain_remote_object_from_id(id) when is_binary(id) do + def fetch_and_contain_remote_object_from_id(prm, opts \\ []) + + def fetch_and_contain_remote_object_from_id(%{"id" => id}, opts), + do: fetch_and_contain_remote_object_from_id(id, opts) + + def fetch_and_contain_remote_object_from_id(id, opts) when is_binary(id) do Logger.debug("Fetching object #{id} via AP") - date = Pleroma.Signature.signed_date() - - headers = - [{"accept", "application/activity+json"}] - |> maybe_date_fetch(date) - |> sign_fetch(id, date) - - Logger.debug("Fetch headers: #{inspect(headers)}") - with {:scheme, true} <- {:scheme, String.starts_with?(id, "http")}, - {:ok, %{body: body, status: code}} when code in 200..299 <- HTTP.get(id, headers), - {:ok, data} <- Jason.decode(body), + {:ok, body} <- get_object(id, opts), + {:ok, data} <- safe_json_decode(body), :ok <- Containment.contain_origin_from_id(id, data) do {:ok, data} else - {:ok, %{status: code}} when code in [404, 410] -> - {:error, "Object has been deleted"} - {:scheme, _} -> {:error, "Unsupported URI scheme"} @@ -214,8 +208,44 @@ def fetch_and_contain_remote_object_from_id(id) when is_binary(id) do end end - def fetch_and_contain_remote_object_from_id(%{"id" => id}), - do: fetch_and_contain_remote_object_from_id(id) + def fetch_and_contain_remote_object_from_id(_id, _opts), + do: {:error, "id must be a string"} - def fetch_and_contain_remote_object_from_id(_id), do: {:error, "id must be a string"} + defp get_object(id, opts) do + with false <- Keyword.get(opts, :force_http, false), + {:ok, fedsocket} <- FedSockets.get_or_create_fed_socket(id) do + Logger.debug("fetching via fedsocket - #{inspect(id)}") + FedSockets.fetch(fedsocket, id) + else + _other -> + Logger.debug("fetching via http - #{inspect(id)}") + get_object_http(id) + end + end + + defp get_object_http(id) do + date = Pleroma.Signature.signed_date() + + headers = + [{"accept", "application/activity+json"}] + |> maybe_date_fetch(date) + |> sign_fetch(id, date) + + case HTTP.get(id, headers) do + {:ok, %{body: body, status: code}} when code in 200..299 -> + {:ok, body} + + {:ok, %{status: code}} when code in [404, 410] -> + {:error, "Object has been deleted"} + + {:error, e} -> + {:error, e} + + e -> + {:error, e} + end + end + + defp safe_json_decode(nil), do: {:ok, nil} + defp safe_json_decode(json), do: Jason.decode(json) end diff --git a/lib/pleroma/signature.ex b/lib/pleroma/signature.ex index 3aa6909d2..e388993b7 100644 --- a/lib/pleroma/signature.ex +++ b/lib/pleroma/signature.ex @@ -39,7 +39,7 @@ def key_id_to_actor_id(key_id) do def fetch_public_key(conn) do with %{"keyId" => kid} <- HTTPSignatures.signature_for_conn(conn), {:ok, actor_id} <- key_id_to_actor_id(kid), - {:ok, public_key} <- User.get_public_key_for_ap_id(actor_id) do + {:ok, public_key} <- User.get_public_key_for_ap_id(actor_id, force_http: true) do {:ok, public_key} else e -> @@ -50,8 +50,8 @@ def fetch_public_key(conn) do def refetch_public_key(conn) do with %{"keyId" => kid} <- HTTPSignatures.signature_for_conn(conn), {:ok, actor_id} <- key_id_to_actor_id(kid), - {:ok, _user} <- ActivityPub.make_user_from_ap_id(actor_id), - {:ok, public_key} <- User.get_public_key_for_ap_id(actor_id) do + {:ok, _user} <- ActivityPub.make_user_from_ap_id(actor_id, force_http: true), + {:ok, public_key} <- User.get_public_key_for_ap_id(actor_id, force_http: true) do {:ok, public_key} else e -> diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 1ffe60dfc..d92484a40 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1820,12 +1820,12 @@ def html_filter_policy(%User{no_rich_text: true}) do def html_filter_policy(_), do: Config.get([:markup, :scrub_policy]) - def fetch_by_ap_id(ap_id), do: ActivityPub.make_user_from_ap_id(ap_id) + def fetch_by_ap_id(ap_id, opts \\ []), do: ActivityPub.make_user_from_ap_id(ap_id, opts) - def get_or_fetch_by_ap_id(ap_id) do + def get_or_fetch_by_ap_id(ap_id, opts \\ []) do cached_user = get_cached_by_ap_id(ap_id) - maybe_fetched_user = needs_update?(cached_user) && fetch_by_ap_id(ap_id) + maybe_fetched_user = needs_update?(cached_user) && fetch_by_ap_id(ap_id, opts) case {cached_user, maybe_fetched_user} do {_, {:ok, %User{} = user}} -> @@ -1898,8 +1898,8 @@ def public_key(%{public_key: public_key_pem}) when is_binary(public_key_pem) do def public_key(_), do: {:error, "key not found"} - def get_public_key_for_ap_id(ap_id) do - with {:ok, %User{} = user} <- get_or_fetch_by_ap_id(ap_id), + def get_public_key_for_ap_id(ap_id, opts \\ []) do + with {:ok, %User{} = user} <- get_or_fetch_by_ap_id(ap_id, opts), {:ok, public_key} <- public_key(user) do {:ok, public_key} else diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 92fc1e422..06e8e1a7c 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -1270,10 +1270,12 @@ defp object_to_user_data(data) do def fetch_follow_information_for_user(user) do with {:ok, following_data} <- - Fetcher.fetch_and_contain_remote_object_from_id(user.following_address), + Fetcher.fetch_and_contain_remote_object_from_id(user.following_address, + force_http: true + ), {:ok, hide_follows} <- collection_private(following_data), {:ok, followers_data} <- - Fetcher.fetch_and_contain_remote_object_from_id(user.follower_address), + Fetcher.fetch_and_contain_remote_object_from_id(user.follower_address, force_http: true), {:ok, hide_followers} <- collection_private(followers_data) do {:ok, %{ @@ -1347,8 +1349,8 @@ def user_data_from_user_object(data) do end end - def fetch_and_prepare_user_from_ap_id(ap_id) do - with {:ok, data} <- Fetcher.fetch_and_contain_remote_object_from_id(ap_id), + def fetch_and_prepare_user_from_ap_id(ap_id, opts \\ []) do + with {:ok, data} <- Fetcher.fetch_and_contain_remote_object_from_id(ap_id, opts), {:ok, data} <- user_data_from_user_object(data) do {:ok, maybe_update_follow_information(data)} else @@ -1390,13 +1392,13 @@ def maybe_handle_clashing_nickname(data) do end end - def make_user_from_ap_id(ap_id) do + def make_user_from_ap_id(ap_id, opts \\ []) do user = User.get_cached_by_ap_id(ap_id) if user && !User.ap_enabled?(user) do Transmogrifier.upgrade_user_from_ap_id(ap_id) else - with {:ok, data} <- fetch_and_prepare_user_from_ap_id(ap_id) do + with {:ok, data} <- fetch_and_prepare_user_from_ap_id(ap_id, opts) do if user do user |> User.remote_user_changeset(data) diff --git a/lib/pleroma/web/activity_pub/publisher.ex b/lib/pleroma/web/activity_pub/publisher.ex index d88f7f3ee..9c3956683 100644 --- a/lib/pleroma/web/activity_pub/publisher.ex +++ b/lib/pleroma/web/activity_pub/publisher.ex @@ -13,6 +13,7 @@ defmodule Pleroma.Web.ActivityPub.Publisher do alias Pleroma.User alias Pleroma.Web.ActivityPub.Relay alias Pleroma.Web.ActivityPub.Transmogrifier + alias Pleroma.Web.FedSockets require Pleroma.Constants @@ -50,15 +51,35 @@ def is_representable?(%Activity{} = activity) do def publish_one(%{inbox: inbox, json: json, actor: %User{} = actor, id: id} = params) do Logger.debug("Federating #{id} to #{inbox}") - uri = URI.parse(inbox) + case FedSockets.get_or_create_fed_socket(inbox) do + {:ok, fedsocket} -> + Logger.debug("publishing via fedsockets - #{inspect(inbox)}") + FedSockets.publish(fedsocket, json) + _ -> + Logger.debug("publishing via http - #{inspect(inbox)}") + http_publish(inbox, actor, json, params) + end + end + + def publish_one(%{actor_id: actor_id} = params) do + actor = User.get_cached_by_id(actor_id) + + params + |> Map.delete(:actor_id) + |> Map.put(:actor, actor) + |> publish_one() + end + + defp http_publish(inbox, actor, json, params) do + uri = %{path: path} = URI.parse(inbox) digest = "SHA-256=" <> (:crypto.hash(:sha256, json) |> Base.encode64()) date = Pleroma.Signature.signed_date() signature = Pleroma.Signature.sign(actor, %{ - "(request-target)": "post #{uri.path}", + "(request-target)": "post #{path}", host: signature_host(uri), "content-length": byte_size(json), digest: digest, @@ -89,15 +110,6 @@ def publish_one(%{inbox: inbox, json: json, actor: %User{} = actor, id: id} = pa end end - def publish_one(%{actor_id: actor_id} = params) do - actor = User.get_cached_by_id(actor_id) - - params - |> Map.delete(:actor_id) - |> Map.put(:actor, actor) - |> publish_one() - end - defp signature_host(%URI{port: port, scheme: scheme, host: host}) do if port == URI.default_port(scheme) do host diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index fcca014f0..aa6a69463 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -1000,7 +1000,7 @@ def perform(:user_upgrade, user) do def upgrade_user_from_ap_id(ap_id) do with %User{local: false} = user <- User.get_cached_by_ap_id(ap_id), - {:ok, data} <- ActivityPub.fetch_and_prepare_user_from_ap_id(ap_id), + {:ok, data} <- ActivityPub.fetch_and_prepare_user_from_ap_id(ap_id, force_http: true), {:ok, user} <- update_user(user, data) do TransmogrifierWorker.enqueue("user_upgrade", %{"user_id" => user.id}) {:ok, user} diff --git a/lib/pleroma/web/fed_sockets/fed_registry.ex b/lib/pleroma/web/fed_sockets/fed_registry.ex new file mode 100644 index 000000000..e00ea69c0 --- /dev/null +++ b/lib/pleroma/web/fed_sockets/fed_registry.ex @@ -0,0 +1,185 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.FedSockets.FedRegistry do + @moduledoc """ + The FedRegistry stores the active FedSockets for quick retrieval. + + The storage and retrieval portion of the FedRegistry is done in process through + elixir's `Registry` module for speed and its ability to monitor for terminated processes. + + Dropped connections will be caught by `Registry` and deleted. Since the next + message will initiate a new connection there is no reason to try and reconnect at that point. + + Normally outside modules should have no need to call or use the FedRegistry themselves. + """ + + alias Pleroma.Web.FedSockets.FedSocket + alias Pleroma.Web.FedSockets.SocketInfo + + require Logger + + @default_rejection_duration 15 * 60 * 1000 + @rejections :fed_socket_rejections + + @doc """ + Retrieves a FedSocket from the Registry given it's origin. + + The origin is expected to be a string identifying the endpoint "example.com" or "example2.com:8080" + + Will return: + * {:ok, fed_socket} for working FedSockets + * {:error, :rejected} for origins that have been tried and refused within the rejection duration interval + * {:error, some_reason} usually :missing for unknown origins + """ + def get_fed_socket(origin) do + case get_registry_data(origin) do + {:error, reason} -> + {:error, reason} + + {:ok, %{state: :connected} = socket_info} -> + {:ok, socket_info} + end + end + + @doc """ + Adds a connected FedSocket to the Registry. + + Always returns {:ok, fed_socket} + """ + def add_fed_socket(origin, pid \\ nil) do + origin + |> SocketInfo.build(pid) + |> SocketInfo.connect() + |> add_socket_info + end + + defp add_socket_info(%{origin: origin, state: :connected} = socket_info) do + case Registry.register(FedSockets.Registry, origin, socket_info) do + {:ok, _owner} -> + clear_prior_rejection(origin) + Logger.debug("fedsocket added: #{inspect(origin)}") + + {:ok, socket_info} + + {:error, {:already_registered, _pid}} -> + FedSocket.close(socket_info) + existing_socket_info = Registry.lookup(FedSockets.Registry, origin) + + {:ok, existing_socket_info} + + _ -> + {:error, :error_adding_socket} + end + end + + @doc """ + Mark this origin as having rejected a connection attempt. + This will keep it from getting additional connection attempts + for a period of time specified in the config. + + Always returns {:ok, new_reg_data} + """ + def set_host_rejected(uri) do + new_reg_data = + uri + |> SocketInfo.origin() + |> get_or_create_registry_data() + |> set_to_rejected() + |> save_registry_data() + + {:ok, new_reg_data} + end + + @doc """ + Retrieves the FedRegistryData from the Registry given it's origin. + + The origin is expected to be a string identifying the endpoint "example.com" or "example2.com:8080" + + Will return: + * {:ok, fed_registry_data} for known origins + * {:error, :missing} for uniknown origins + * {:error, :cache_error} indicating some low level runtime issues + """ + def get_registry_data(origin) do + case Registry.lookup(FedSockets.Registry, origin) do + [] -> + if is_rejected?(origin) do + Logger.debug("previously rejected fedsocket requested") + {:error, :rejected} + else + {:error, :missing} + end + + [{_pid, %{state: :connected} = socket_info}] -> + {:ok, socket_info} + + _ -> + {:error, :cache_error} + end + end + + @doc """ + Retrieves a map of all sockets from the Registry. The keys are the origins and the values are the corresponding SocketInfo + """ + def list_all do + (list_all_connected() ++ list_all_rejected()) + |> Enum.into(%{}) + end + + defp list_all_connected do + FedSockets.Registry + |> Registry.select([{{:"$1", :_, :"$3"}, [], [{{:"$1", :"$3"}}]}]) + end + + defp list_all_rejected do + {:ok, keys} = Cachex.keys(@rejections) + + {:ok, registry_data} = + Cachex.execute(@rejections, fn worker -> + Enum.map(keys, fn k -> {k, Cachex.get!(worker, k)} end) + end) + + registry_data + end + + defp clear_prior_rejection(origin), + do: Cachex.del(@rejections, origin) + + defp is_rejected?(origin) do + case Cachex.get(@rejections, origin) do + {:ok, nil} -> + false + + {:ok, _} -> + true + end + end + + defp get_or_create_registry_data(origin) do + case get_registry_data(origin) do + {:error, :missing} -> + %SocketInfo{origin: origin} + + {:ok, socket_info} -> + socket_info + end + end + + defp save_registry_data(%SocketInfo{origin: origin, state: :connected} = socket_info) do + {:ok, true} = Registry.update_value(FedSockets.Registry, origin, fn _ -> socket_info end) + socket_info + end + + defp save_registry_data(%SocketInfo{origin: origin, state: :rejected} = socket_info) do + rejection_expiration = + Pleroma.Config.get([:fed_sockets, :rejection_duration], @default_rejection_duration) + + {:ok, true} = Cachex.put(@rejections, origin, socket_info, ttl: rejection_expiration) + socket_info + end + + defp set_to_rejected(%SocketInfo{} = socket_info), + do: %SocketInfo{socket_info | state: :rejected} +end diff --git a/lib/pleroma/web/fed_sockets/fed_socket.ex b/lib/pleroma/web/fed_sockets/fed_socket.ex new file mode 100644 index 000000000..98d64e65a --- /dev/null +++ b/lib/pleroma/web/fed_sockets/fed_socket.ex @@ -0,0 +1,137 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.FedSockets.FedSocket do + @moduledoc """ + The FedSocket module abstracts the actions to be taken taken on connections regardless of + whether the connection started as inbound or outbound. + + + Normally outside modules will have no need to call the FedSocket module directly. + """ + + alias Pleroma.Object + alias Pleroma.Object.Containment + alias Pleroma.User + alias Pleroma.Web.ActivityPub.ObjectView + alias Pleroma.Web.ActivityPub.UserView + alias Pleroma.Web.ActivityPub.Visibility + alias Pleroma.Web.FedSockets.FetchRegistry + alias Pleroma.Web.FedSockets.IngesterWorker + alias Pleroma.Web.FedSockets.OutgoingHandler + alias Pleroma.Web.FedSockets.SocketInfo + + require Logger + + @shake "61dd18f7-f1e6-49a4-939a-a749fcdc1103" + + def connect_to_host(uri) do + case OutgoingHandler.start_link(uri) do + {:ok, pid} -> + {:ok, pid} + + error -> + {:error, error} + end + end + + def close(%SocketInfo{pid: socket_pid}), + do: Process.send(socket_pid, :close, []) + + def publish(%SocketInfo{pid: socket_pid}, json) do + %{action: :publish, data: json} + |> Jason.encode!() + |> send_packet(socket_pid) + end + + def fetch(%SocketInfo{pid: socket_pid}, id) do + fetch_uuid = FetchRegistry.register_fetch(id) + + %{action: :fetch, data: id, uuid: fetch_uuid} + |> Jason.encode!() + |> send_packet(socket_pid) + + wait_for_fetch_to_return(fetch_uuid, 0) + end + + def receive_package(%SocketInfo{} = fed_socket, json) do + json + |> Jason.decode!() + |> process_package(fed_socket) + end + + defp wait_for_fetch_to_return(uuid, cntr) do + case FetchRegistry.check_fetch(uuid) do + {:error, :waiting} -> + Process.sleep(:math.pow(cntr, 3) |> Kernel.trunc()) + wait_for_fetch_to_return(uuid, cntr + 1) + + {:error, :missing} -> + Logger.error("FedSocket fetch timed out - #{inspect(uuid)}") + {:error, :timeout} + + {:ok, _fr} -> + FetchRegistry.pop_fetch(uuid) + end + end + + defp process_package(%{"action" => "publish", "data" => data}, %{origin: origin} = _fed_socket) do + if Containment.contain_origin(origin, data) do + IngesterWorker.enqueue("ingest", %{"object" => data}) + end + + {:reply, %{"action" => "publish_reply", "status" => "processed"}} + end + + defp process_package(%{"action" => "fetch_reply", "uuid" => uuid, "data" => data}, _fed_socket) do + FetchRegistry.register_fetch_received(uuid, data) + {:noreply, nil} + end + + defp process_package(%{"action" => "fetch", "uuid" => uuid, "data" => ap_id}, _fed_socket) do + {:ok, data} = render_fetched_data(ap_id, uuid) + {:reply, data} + end + + defp process_package(%{"action" => "publish_reply"}, _fed_socket) do + {:noreply, nil} + end + + defp process_package(other, _fed_socket) do + Logger.warn("unknown json packages received #{inspect(other)}") + {:noreply, nil} + end + + defp render_fetched_data(ap_id, uuid) do + {:ok, + %{ + "action" => "fetch_reply", + "status" => "processed", + "uuid" => uuid, + "data" => represent_item(ap_id) + }} + end + + defp represent_item(ap_id) do + case User.get_by_ap_id(ap_id) do + nil -> + object = Object.get_cached_by_ap_id(ap_id) + + if Visibility.is_public?(object) do + Phoenix.View.render_to_string(ObjectView, "object.json", object: object) + else + nil + end + + user -> + Phoenix.View.render_to_string(UserView, "user.json", user: user) + end + end + + defp send_packet(data, socket_pid) do + Process.send(socket_pid, {:send, data}, []) + end + + def shake, do: @shake +end diff --git a/lib/pleroma/web/fed_sockets/fed_sockets.ex b/lib/pleroma/web/fed_sockets/fed_sockets.ex new file mode 100644 index 000000000..035d54796 --- /dev/null +++ b/lib/pleroma/web/fed_sockets/fed_sockets.ex @@ -0,0 +1,182 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.FedSockets do + @moduledoc """ + This documents the FedSockets framework. A framework for federating + ActivityPub objects between servers via persistant WebSocket connections. + + FedSockets allow servers to authenticate on first contact and maintain that + connection, eliminating the need to authenticate every time data needs to be shared. + + ## Protocol + FedSockets currently support 2 types of data transfer: + * `publish` method which doesn't require a response + * `fetch` method requires a response be sent + + ### Publish + The publish operation sends a json encoded map of the shape: + %{action: :publish, data: json} + and accepts (but does not require) a reply of form: + %{"action" => "publish_reply"} + + The outgoing params represent + * data: ActivityPub object encoded into json + + + ### Fetch + The fetch operation sends a json encoded map of the shape: + %{action: :fetch, data: id, uuid: fetch_uuid} + and requires a reply of form: + %{"action" => "fetch_reply", "uuid" => uuid, "data" => data} + + The outgoing params represent + * id: an ActivityPub object URI + * uuid: a unique uuid generated by the sender + + The reply params represent + * data: an ActivityPub object encoded into json + * uuid: the uuid sent along with the fetch request + + ## Examples + Clients of FedSocket transfers shouldn't need to use any of the functions outside of this module. + + A typical publish operation can be performed through the following code, and a fetch operation in a similar manner. + + case FedSockets.get_or_create_fed_socket(inbox) do + {:ok, fedsocket} -> + FedSockets.publish(fedsocket, json) + + _ -> + alternative_publish(inbox, actor, json, params) + end + + ## Configuration + FedSockets have the following config settings + + config :pleroma, :fed_sockets, + enabled: true, + ping_interval: :timer.seconds(15), + connection_duration: :timer.hours(1), + rejection_duration: :timer.hours(1), + fed_socket_fetches: [ + default: 12_000, + interval: 3_000, + lazy: false + ] + * enabled - turn FedSockets on or off with this flag. Can be toggled at runtime. + * connection_duration - How long a FedSocket can sit idle before it's culled. + * rejection_duration - After failing to make a FedSocket connection a host will be excluded + from further connections for this amount of time + * fed_socket_fetches - Use these parameters to pass options to the Cachex queue backing the FetchRegistry + * fed_socket_rejections - Use these parameters to pass options to the Cachex queue backing the FedRegistry + + Cachex options are + * default: the minimum amount of time a fetch can wait before it times out. + * interval: the interval between checks for timed out entries. This plus the default represent the maximum time allowed + * lazy: leave at false for consistant and fast lookups, set to true for stricter timeout enforcement + + """ + require Logger + + alias Pleroma.Web.FedSockets.FedRegistry + alias Pleroma.Web.FedSockets.FedSocket + alias Pleroma.Web.FedSockets.SocketInfo + + @doc """ + returns a FedSocket for the given origin. Will reuse an existing one or create a new one. + + address is expected to be a fully formed URL such as: + "http://www.example.com" or "http://www.example.com:8080" + + It can and usually does include additional path parameters, + but these are ignored as the FedSockets are organized by host and port info alone. + """ + def get_or_create_fed_socket(address) do + with {:cache, {:error, :missing}} <- {:cache, get_fed_socket(address)}, + {:connect, {:ok, _pid}} <- {:connect, FedSocket.connect_to_host(address)}, + {:cache, {:ok, fed_socket}} <- {:cache, get_fed_socket(address)} do + Logger.debug("fedsocket created for - #{inspect(address)}") + {:ok, fed_socket} + else + {:cache, {:ok, socket}} -> + Logger.debug("fedsocket found in cache - #{inspect(address)}") + {:ok, socket} + + {:connect, {:error, _host}} -> + Logger.debug("set host rejected for - #{inspect(address)}") + FedRegistry.set_host_rejected(address) + {:error, :rejected} + + {_, {:error, :disabled}} -> + {:error, :disabled} + + {_, {:error, reason}} -> + Logger.warn("get_or_create_fed_socket error - #{inspect(reason)}") + {:error, reason} + end + end + + @doc """ + returns a FedSocket for the given origin. Will not create a new FedSocket if one does not exist. + + address is expected to be a fully formed URL such as: + "http://www.example.com" or "http://www.example.com:8080" + """ + def get_fed_socket(address) do + origin = SocketInfo.origin(address) + + with {:config, true} <- {:config, Pleroma.Config.get([:fed_sockets, :enabled], false)}, + {:ok, socket} <- FedRegistry.get_fed_socket(origin) do + {:ok, socket} + else + {:config, _} -> + {:error, :disabled} + + {:error, :rejected} -> + Logger.debug("FedSocket previously rejected - #{inspect(origin)}") + {:error, :rejected} + + {:error, reason} -> + {:error, reason} + end + end + + @doc """ + Sends the supplied data via the publish protocol. + It will not block waiting for a reply. + Returns :ok but this is not an indication of a successful transfer. + + the data is expected to be JSON encoded binary data. + """ + def publish(%SocketInfo{} = fed_socket, json) do + FedSocket.publish(fed_socket, json) + end + + @doc """ + Sends the supplied data via the fetch protocol. + It will block waiting for a reply or timeout. + + Returns {:ok, object} where object is the requested object (or nil) + {:error, :timeout} in the event the message was not responded to + + the id is expected to be the URI of an ActivityPub object. + """ + def fetch(%SocketInfo{} = fed_socket, id) do + FedSocket.fetch(fed_socket, id) + end + + @doc """ + Disconnect all and restart FedSockets. + This is mainly used in development and testing but could be useful in production. + """ + def reset do + FedRegistry + |> Process.whereis() + |> Process.exit(:testing) + end + + def uri_for_origin(origin), + do: "ws://#{origin}/api/fedsocket/v1" +end diff --git a/lib/pleroma/web/fed_sockets/fetch_registry.ex b/lib/pleroma/web/fed_sockets/fetch_registry.ex new file mode 100644 index 000000000..7897f0fc6 --- /dev/null +++ b/lib/pleroma/web/fed_sockets/fetch_registry.ex @@ -0,0 +1,151 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.FedSockets.FetchRegistry do + @moduledoc """ + The FetchRegistry acts as a broker for fetch requests and return values. + This allows calling processes to block while waiting for a reply. + It doesn't impose it's own process instead using `Cachex` to handle fetches in process, allowing + multi threaded processes to avoid bottlenecking. + + Normally outside modules will have no need to call or use the FetchRegistry themselves. + + The `Cachex` parameters can be controlled from the config. Since exact timeout intervals + aren't necessary the following settings are used by default: + + config :pleroma, :fed_sockets, + fed_socket_fetches: [ + default: 12_000, + interval: 3_000, + lazy: false + ] + + """ + + defmodule FetchRegistryData do + defstruct uuid: nil, + sent_json: nil, + received_json: nil, + sent_at: nil, + received_at: nil + end + + alias Ecto.UUID + + require Logger + + @fetches :fed_socket_fetches + + @doc """ + Registers a json request wth the FetchRegistry and returns the identifying UUID. + """ + def register_fetch(json) do + %FetchRegistryData{uuid: uuid} = + json + |> new_registry_data + |> save_registry_data + + uuid + end + + @doc """ + Reports on the status of a Fetch given the identifying UUID. + + Will return + * {:ok, fetched_object} if a fetch has completed + * {:error, :waiting} if a fetch is still pending + * {:error, other_error} usually :missing to indicate a fetch that has timed out + """ + def check_fetch(uuid) do + case get_registry_data(uuid) do + {:ok, %FetchRegistryData{received_at: nil}} -> + {:error, :waiting} + + {:ok, %FetchRegistryData{} = reg_data} -> + {:ok, reg_data} + + e -> + e + end + end + + @doc """ + Retrieves the response to a fetch given the identifying UUID. + The completed fetch will be deleted from the FetchRegistry + + Will return + * {:ok, fetched_object} if a fetch has completed + * {:error, :waiting} if a fetch is still pending + * {:error, other_error} usually :missing to indicate a fetch that has timed out + """ + def pop_fetch(uuid) do + case check_fetch(uuid) do + {:ok, %FetchRegistryData{received_json: received_json}} -> + delete_registry_data(uuid) + {:ok, received_json} + + e -> + e + end + end + + @doc """ + This is called to register a fetch has returned. + It expects the result data along with the UUID that was sent in the request + + Will return the fetched object or :error + """ + def register_fetch_received(uuid, data) do + case get_registry_data(uuid) do + {:ok, %FetchRegistryData{received_at: nil} = reg_data} -> + reg_data + |> set_fetch_received(data) + |> save_registry_data() + + {:ok, %FetchRegistryData{} = reg_data} -> + Logger.warn("tried to add fetched data twice - #{uuid}") + reg_data + + {:error, _} -> + Logger.warn("Error adding fetch to registry - #{uuid}") + :error + end + end + + defp new_registry_data(json) do + %FetchRegistryData{ + uuid: UUID.generate(), + sent_json: json, + sent_at: :erlang.monotonic_time(:millisecond) + } + end + + defp get_registry_data(origin) do + case Cachex.get(@fetches, origin) do + {:ok, nil} -> + {:error, :missing} + + {:ok, reg_data} -> + {:ok, reg_data} + + _ -> + {:error, :cache_error} + end + end + + defp set_fetch_received(%FetchRegistryData{} = reg_data, data), + do: %FetchRegistryData{ + reg_data + | received_at: :erlang.monotonic_time(:millisecond), + received_json: data + } + + defp save_registry_data(%FetchRegistryData{uuid: uuid} = reg_data) do + {:ok, true} = Cachex.put(@fetches, uuid, reg_data) + reg_data + end + + defp delete_registry_data(origin), + do: {:ok, true} = Cachex.del(@fetches, origin) +end diff --git a/lib/pleroma/web/fed_sockets/incoming_handler.ex b/lib/pleroma/web/fed_sockets/incoming_handler.ex new file mode 100644 index 000000000..49d0d9d84 --- /dev/null +++ b/lib/pleroma/web/fed_sockets/incoming_handler.ex @@ -0,0 +1,88 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.FedSockets.IncomingHandler do + require Logger + + alias Pleroma.Web.FedSockets.FedRegistry + alias Pleroma.Web.FedSockets.FedSocket + alias Pleroma.Web.FedSockets.SocketInfo + + import HTTPSignatures, only: [validate_conn: 1, split_signature: 1] + + @behaviour :cowboy_websocket + + def init(req, state) do + shake = FedSocket.shake() + + with true <- Pleroma.Config.get([:fed_sockets, :enabled]), + sec_protocol <- :cowboy_req.header("sec-websocket-protocol", req, nil), + headers = %{"(request-target)" => ^shake} <- :cowboy_req.headers(req), + true <- validate_conn(%{req_headers: headers}), + %{"keyId" => origin} <- split_signature(headers["signature"]) do + req = + if is_nil(sec_protocol) do + req + else + :cowboy_req.set_resp_header("sec-websocket-protocol", sec_protocol, req) + end + + {:cowboy_websocket, req, %{origin: origin}, %{}} + else + _ -> + {:ok, req, state} + end + end + + def websocket_init(%{origin: origin}) do + case FedRegistry.add_fed_socket(origin) do + {:ok, socket_info} -> + {:ok, socket_info} + + e -> + Logger.error("FedSocket websocket_init failed - #{inspect(e)}") + {:error, inspect(e)} + end + end + + # Use the ping to check if the connection should be expired + def websocket_handle(:ping, socket_info) do + if SocketInfo.expired?(socket_info) do + {:stop, socket_info} + else + {:ok, socket_info, :hibernate} + end + end + + def websocket_handle({:text, data}, socket_info) do + socket_info = SocketInfo.touch(socket_info) + + case FedSocket.receive_package(socket_info, data) do + {:noreply, _} -> + {:ok, socket_info} + + {:reply, reply} -> + {:reply, {:text, Jason.encode!(reply)}, socket_info} + + {:error, reason} -> + Logger.error("incoming error - receive_package: #{inspect(reason)}") + {:ok, socket_info} + end + end + + def websocket_info({:send, message}, socket_info) do + socket_info = SocketInfo.touch(socket_info) + + {:reply, {:text, message}, socket_info} + end + + def websocket_info(:close, state) do + {:stop, state} + end + + def websocket_info(message, state) do + Logger.debug("#{__MODULE__} unknown message #{inspect(message)}") + {:ok, state} + end +end diff --git a/lib/pleroma/web/fed_sockets/ingester_worker.ex b/lib/pleroma/web/fed_sockets/ingester_worker.ex new file mode 100644 index 000000000..325f2a4ab --- /dev/null +++ b/lib/pleroma/web/fed_sockets/ingester_worker.ex @@ -0,0 +1,33 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.FedSockets.IngesterWorker do + use Pleroma.Workers.WorkerHelper, queue: "ingestion_queue" + require Logger + + alias Pleroma.Web.Federator + + @impl Oban.Worker + def perform(%Job{args: %{"op" => "ingest", "object" => ingestee}}) do + try do + ingestee + |> Jason.decode!() + |> do_ingestion() + rescue + e -> + Logger.error("IngesterWorker error - #{inspect(e)}") + e + end + end + + defp do_ingestion(params) do + case Federator.incoming_ap_doc(params) do + {:error, reason} -> + {:error, reason} + + {:ok, object} -> + {:ok, object} + end + end +end diff --git a/lib/pleroma/web/fed_sockets/outgoing_handler.ex b/lib/pleroma/web/fed_sockets/outgoing_handler.ex new file mode 100644 index 000000000..6ddef17fe --- /dev/null +++ b/lib/pleroma/web/fed_sockets/outgoing_handler.ex @@ -0,0 +1,146 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.FedSockets.OutgoingHandler do + use GenServer + + require Logger + + alias Pleroma.Web.ActivityPub.InternalFetchActor + alias Pleroma.Web.FedSockets + alias Pleroma.Web.FedSockets.FedRegistry + alias Pleroma.Web.FedSockets.FedSocket + alias Pleroma.Web.FedSockets.SocketInfo + + def start_link(uri) do + GenServer.start_link(__MODULE__, %{uri: uri}) + end + + def init(%{uri: uri}) do + case initiate_connection(uri) do + {:ok, ws_origin, conn_pid} -> + FedRegistry.add_fed_socket(ws_origin, conn_pid) + + {:error, reason} -> + Logger.debug("Outgoing connection failed - #{inspect(reason)}") + :ignore + end + end + + def handle_info({:gun_ws, conn_pid, _ref, {:text, data}}, socket_info) do + socket_info = SocketInfo.touch(socket_info) + + case FedSocket.receive_package(socket_info, data) do + {:noreply, _} -> + {:noreply, socket_info} + + {:reply, reply} -> + :gun.ws_send(conn_pid, {:text, Jason.encode!(reply)}) + {:noreply, socket_info} + + {:error, reason} -> + Logger.error("incoming error - receive_package: #{inspect(reason)}") + {:noreply, socket_info} + end + end + + def handle_info(:close, state) do + Logger.debug("Sending close frame !!!!!!!") + {:close, state} + end + + def handle_info({:gun_down, _pid, _prot, :closed, _}, state) do + {:stop, :normal, state} + end + + def handle_info({:send, data}, %{conn_pid: conn_pid} = socket_info) do + socket_info = SocketInfo.touch(socket_info) + :gun.ws_send(conn_pid, {:text, data}) + {:noreply, socket_info} + end + + def handle_info({:gun_ws, _, _, :pong}, state) do + {:noreply, state, :hibernate} + end + + def handle_info(msg, state) do + Logger.debug("#{__MODULE__} unhandled event #{inspect(msg)}") + {:noreply, state} + end + + def terminate(reason, state) do + Logger.debug( + "#{__MODULE__} terminating outgoing connection for #{inspect(state)} for #{inspect(reason)}" + ) + + {:ok, state} + end + + def initiate_connection(uri) do + ws_uri = + uri + |> SocketInfo.origin() + |> FedSockets.uri_for_origin() + + %{host: host, port: port, path: path} = URI.parse(ws_uri) + + with {:ok, conn_pid} <- :gun.open(to_charlist(host), port), + {:ok, _} <- :gun.await_up(conn_pid), + reference <- :gun.get(conn_pid, to_charlist(path)), + {:response, :fin, 204, _} <- :gun.await(conn_pid, reference), + headers <- build_headers(uri), + ref <- :gun.ws_upgrade(conn_pid, to_charlist(path), headers, %{silence_pings: false}) do + receive do + {:gun_upgrade, ^conn_pid, ^ref, [<<"websocket">>], _} -> + {:ok, ws_uri, conn_pid} + after + 15_000 -> + Logger.debug("Fedsocket timeout connecting to #{inspect(uri)}") + {:error, :timeout} + end + else + {:response, :nofin, 404, _} -> + {:error, :fedsockets_not_supported} + + e -> + Logger.debug("Fedsocket error connecting to #{inspect(uri)}") + {:error, e} + end + end + + defp build_headers(uri) do + host_for_sig = uri |> URI.parse() |> host_signature() + + shake = FedSocket.shake() + digest = "SHA-256=" <> (:crypto.hash(:sha256, shake) |> Base.encode64()) + date = Pleroma.Signature.signed_date() + shake_size = byte_size(shake) + + signature_opts = %{ + "(request-target)": shake, + "content-length": to_charlist("#{shake_size}"), + date: date, + digest: digest, + host: host_for_sig + } + + signature = Pleroma.Signature.sign(InternalFetchActor.get_actor(), signature_opts) + + [ + {'signature', to_charlist(signature)}, + {'date', date}, + {'digest', to_charlist(digest)}, + {'content-length', to_charlist("#{shake_size}")}, + {to_charlist("(request-target)"), to_charlist(shake)} + ] + end + + defp host_signature(%{host: host, scheme: scheme, port: port}) do + if port == URI.default_port(scheme) do + host + else + "#{host}:#{port}" + end + end +end diff --git a/lib/pleroma/web/fed_sockets/socket_info.ex b/lib/pleroma/web/fed_sockets/socket_info.ex new file mode 100644 index 000000000..d6fdffe1a --- /dev/null +++ b/lib/pleroma/web/fed_sockets/socket_info.ex @@ -0,0 +1,52 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.FedSockets.SocketInfo do + defstruct origin: nil, + pid: nil, + conn_pid: nil, + state: :default, + connected_until: nil + + alias Pleroma.Web.FedSockets.SocketInfo + @default_connection_duration 15 * 60 * 1000 + + def build(uri, conn_pid \\ nil) do + uri + |> build_origin() + |> build_pids(conn_pid) + |> touch() + end + + def touch(%SocketInfo{} = socket_info), + do: %{socket_info | connected_until: new_ttl()} + + def connect(%SocketInfo{} = socket_info), + do: %{socket_info | state: :connected} + + def expired?(%{connected_until: connected_until}), + do: connected_until < :erlang.monotonic_time(:millisecond) + + def origin(uri), + do: build_origin(uri).origin + + defp build_pids(socket_info, conn_pid), + do: struct(socket_info, pid: self(), conn_pid: conn_pid) + + defp build_origin(uri) when is_binary(uri), + do: uri |> URI.parse() |> build_origin + + defp build_origin(%{host: host, port: nil, scheme: scheme}), + do: build_origin(%{host: host, port: URI.default_port(scheme)}) + + defp build_origin(%{host: host, port: port}), + do: %SocketInfo{origin: "#{host}:#{port}"} + + defp new_ttl do + connection_duration = + Pleroma.Config.get([:fed_sockets, :connection_duration], @default_connection_duration) + + :erlang.monotonic_time(:millisecond) + connection_duration + end +end diff --git a/lib/pleroma/web/fed_sockets/supervisor.ex b/lib/pleroma/web/fed_sockets/supervisor.ex new file mode 100644 index 000000000..a5f4bebfb --- /dev/null +++ b/lib/pleroma/web/fed_sockets/supervisor.ex @@ -0,0 +1,59 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.FedSockets.Supervisor do + use Supervisor + import Cachex.Spec + + def start_link(opts) do + Supervisor.start_link(__MODULE__, opts, name: __MODULE__) + end + + def init(args) do + children = [ + build_cache(:fed_socket_fetches, args), + build_cache(:fed_socket_rejections, args), + {Registry, keys: :unique, name: FedSockets.Registry, meta: [rejected: %{}]} + ] + + opts = [strategy: :one_for_all, name: Pleroma.Web.Streamer.Supervisor] + Supervisor.init(children, opts) + end + + defp build_cache(name, args) do + opts = get_opts(name, args) + + %{ + id: String.to_atom("#{name}_cache"), + start: {Cachex, :start_link, [name, opts]}, + type: :worker + } + end + + defp get_opts(cache_name, args) + when cache_name in [:fed_socket_fetches, :fed_socket_rejections] do + default = get_opts_or_config(args, cache_name, :default, 15_000) + interval = get_opts_or_config(args, cache_name, :interval, 3_000) + lazy = get_opts_or_config(args, cache_name, :lazy, false) + + [expiration: expiration(default: default, interval: interval, lazy: lazy)] + end + + defp get_opts(name, args) do + Keyword.get(args, name, []) + end + + defp get_opts_or_config(args, name, key, default) do + args + |> Keyword.get(name, []) + |> Keyword.get(key) + |> case do + nil -> + Pleroma.Config.get([:fed_sockets, name, key], default) + + value -> + value + end + end +end diff --git a/mix.lock b/mix.lock index a28c47017..a17e8c0fc 100644 --- a/mix.lock +++ b/mix.lock @@ -118,5 +118,5 @@ "unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm", "1d1848c40487cdb0b30e8ed975e34e025860c02e419cb615d255849f3427439d"}, "unsafe": {:hex, :unsafe, "1.0.1", "a27e1874f72ee49312e0a9ec2e0b27924214a05e3ddac90e91727bc76f8613d8", [:mix], [], "hexpm", "6c7729a2d214806450d29766abc2afaa7a2cbecf415be64f36a6691afebb50e5"}, "web_push_encryption": {:hex, :web_push_encryption, "0.3.0", "598b5135e696fd1404dc8d0d7c0fa2c027244a4e5d5e5a98ba267f14fdeaabc8", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:jose, "~> 1.8", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "f10bdd1afe527ede694749fb77a2f22f146a51b054c7fa541c9fd920fba7c875"}, - "websocket_client": {:git, "https://github.com/jeremyong/websocket_client.git", "9a6f65d05ebf2725d62fb19262b21f1805a59fbf", []}, + "websocket_client": {:git, "https://github.com/jeremyong/websocket_client.git", "9a6f65d05ebf2725d62fb19262b21f1805a59fbf", []} } diff --git a/test/web/fed_sockets/fed_registry_test.exs b/test/web/fed_sockets/fed_registry_test.exs new file mode 100644 index 000000000..19ac874d6 --- /dev/null +++ b/test/web/fed_sockets/fed_registry_test.exs @@ -0,0 +1,124 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.FedSockets.FedRegistryTest do + use ExUnit.Case + + alias Pleroma.Web.FedSockets + alias Pleroma.Web.FedSockets.FedRegistry + alias Pleroma.Web.FedSockets.SocketInfo + + @good_domain "http://good.domain" + @good_domain_origin "good.domain:80" + + setup do + start_supervised({Pleroma.Web.FedSockets.Supervisor, []}) + build_test_socket(@good_domain) + Process.sleep(10) + + :ok + end + + describe "add_fed_socket/1 without conflicting sockets" do + test "can be added" do + Process.sleep(10) + assert {:ok, %SocketInfo{origin: origin}} = FedRegistry.get_fed_socket(@good_domain_origin) + assert origin == "good.domain:80" + end + + test "multiple origins can be added" do + build_test_socket("http://anothergood.domain") + Process.sleep(10) + + assert {:ok, %SocketInfo{origin: origin_1}} = + FedRegistry.get_fed_socket(@good_domain_origin) + + assert {:ok, %SocketInfo{origin: origin_2}} = + FedRegistry.get_fed_socket("anothergood.domain:80") + + assert origin_1 == "good.domain:80" + assert origin_2 == "anothergood.domain:80" + assert FedRegistry.list_all() |> Enum.count() == 2 + end + end + + describe "add_fed_socket/1 when duplicate sockets conflict" do + setup do + build_test_socket(@good_domain) + build_test_socket(@good_domain) + Process.sleep(10) + :ok + end + + test "will be ignored" do + assert {:ok, %SocketInfo{origin: origin, pid: pid_one}} = + FedRegistry.get_fed_socket(@good_domain_origin) + + assert origin == "good.domain:80" + + assert FedRegistry.list_all() |> Enum.count() == 1 + end + + test "the newer process will be closed" do + pid_two = build_test_socket(@good_domain) + + assert {:ok, %SocketInfo{origin: origin, pid: pid_one}} = + FedRegistry.get_fed_socket(@good_domain_origin) + + assert origin == "good.domain:80" + Process.sleep(10) + + refute Process.alive?(pid_two) + + assert FedRegistry.list_all() |> Enum.count() == 1 + end + end + + describe "get_fed_socket/1" do + test "returns missing for unknown hosts" do + assert {:error, :missing} = FedRegistry.get_fed_socket("not_a_dmoain") + end + + test "returns rejected for hosts previously rejected" do + "rejected.domain:80" + |> FedSockets.uri_for_origin() + |> FedRegistry.set_host_rejected() + + assert {:error, :rejected} = FedRegistry.get_fed_socket("rejected.domain:80") + end + + test "can retrieve a previously added SocketInfo" do + build_test_socket(@good_domain) + Process.sleep(10) + assert {:ok, %SocketInfo{origin: origin}} = FedRegistry.get_fed_socket(@good_domain_origin) + assert origin == "good.domain:80" + end + + test "removes references to SocketInfos when the process crashes" do + assert {:ok, %SocketInfo{origin: origin, pid: pid}} = + FedRegistry.get_fed_socket(@good_domain_origin) + + assert origin == "good.domain:80" + + Process.exit(pid, :testing) + Process.sleep(100) + assert {:error, :missing} = FedRegistry.get_fed_socket(@good_domain_origin) + end + end + + def build_test_socket(uri) do + Kernel.spawn(fn -> fed_socket_almost(uri) end) + end + + def fed_socket_almost(origin) do + FedRegistry.add_fed_socket(origin) + + receive do + :close -> + :ok + after + 5_000 -> :timeout + end + end +end diff --git a/test/web/fed_sockets/fetch_registry_test.exs b/test/web/fed_sockets/fetch_registry_test.exs new file mode 100644 index 000000000..7bd2d995a --- /dev/null +++ b/test/web/fed_sockets/fetch_registry_test.exs @@ -0,0 +1,67 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.FedSockets.FetchRegistryTest do + use ExUnit.Case + + alias Pleroma.Web.FedSockets.FetchRegistry + alias Pleroma.Web.FedSockets.FetchRegistry.FetchRegistryData + + @json_message "hello" + @json_reply "hello back" + + setup do + start_supervised( + {Pleroma.Web.FedSockets.Supervisor, + [ + ping_interval: 8, + connection_duration: 15, + rejection_duration: 5, + fed_socket_fetches: [default: 10, interval: 10] + ]} + ) + + :ok + end + + test "fetches can be stored" do + uuid = FetchRegistry.register_fetch(@json_message) + + assert {:error, :waiting} = FetchRegistry.check_fetch(uuid) + end + + test "fetches can return" do + uuid = FetchRegistry.register_fetch(@json_message) + task = Task.async(fn -> FetchRegistry.register_fetch_received(uuid, @json_reply) end) + + assert {:error, :waiting} = FetchRegistry.check_fetch(uuid) + Task.await(task) + + assert {:ok, %FetchRegistryData{received_json: received_json}} = + FetchRegistry.check_fetch(uuid) + + assert received_json == @json_reply + end + + test "fetches are deleted once popped from stack" do + uuid = FetchRegistry.register_fetch(@json_message) + task = Task.async(fn -> FetchRegistry.register_fetch_received(uuid, @json_reply) end) + Task.await(task) + + assert {:ok, %FetchRegistryData{received_json: received_json}} = + FetchRegistry.check_fetch(uuid) + + assert received_json == @json_reply + assert {:ok, @json_reply} = FetchRegistry.pop_fetch(uuid) + + assert {:error, :missing} = FetchRegistry.check_fetch(uuid) + end + + test "fetches can time out" do + uuid = FetchRegistry.register_fetch(@json_message) + assert {:error, :waiting} = FetchRegistry.check_fetch(uuid) + Process.sleep(500) + assert {:error, :missing} = FetchRegistry.check_fetch(uuid) + end +end diff --git a/test/web/fed_sockets/socket_info_test.exs b/test/web/fed_sockets/socket_info_test.exs new file mode 100644 index 000000000..db3d6edcd --- /dev/null +++ b/test/web/fed_sockets/socket_info_test.exs @@ -0,0 +1,118 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.FedSockets.SocketInfoTest do + use ExUnit.Case + + alias Pleroma.Web.FedSockets + alias Pleroma.Web.FedSockets.SocketInfo + + describe "uri_for_origin" do + test "provides the fed_socket URL given the origin information" do + endpoint = "example.com:4000" + assert FedSockets.uri_for_origin(endpoint) =~ "ws://" + assert FedSockets.uri_for_origin(endpoint) =~ endpoint + end + end + + describe "origin" do + test "will provide the origin field given a url" do + endpoint = "example.com:4000" + assert SocketInfo.origin("ws://#{endpoint}") == endpoint + assert SocketInfo.origin("http://#{endpoint}") == endpoint + assert SocketInfo.origin("https://#{endpoint}") == endpoint + end + + test "will proide the origin field given a uri" do + endpoint = "example.com:4000" + uri = URI.parse("http://#{endpoint}") + + assert SocketInfo.origin(uri) == endpoint + end + end + + describe "touch" do + test "will update the TTL" do + endpoint = "example.com:4000" + socket = SocketInfo.build("ws://#{endpoint}") + Process.sleep(2) + touched_socket = SocketInfo.touch(socket) + + assert socket.connected_until < touched_socket.connected_until + end + end + + describe "expired?" do + setup do + start_supervised( + {Pleroma.Web.FedSockets.Supervisor, + [ + ping_interval: 8, + connection_duration: 5, + rejection_duration: 5, + fed_socket_rejections: [lazy: true] + ]} + ) + + :ok + end + + test "tests if the TTL is exceeded" do + endpoint = "example.com:4000" + socket = SocketInfo.build("ws://#{endpoint}") + refute SocketInfo.expired?(socket) + Process.sleep(10) + + assert SocketInfo.expired?(socket) + end + end + + describe "creating outgoing connection records" do + test "can be passed a string" do + assert %{conn_pid: :pid, origin: _origin} = SocketInfo.build("example.com:4000", :pid) + end + + test "can be passed a URI" do + uri = URI.parse("http://example.com:4000") + assert %{conn_pid: :pid, origin: origin} = SocketInfo.build(uri, :pid) + assert origin =~ "example.com:4000" + end + + test "will include the port number" do + assert %{conn_pid: :pid, origin: origin} = SocketInfo.build("http://example.com:4000", :pid) + + assert origin =~ ":4000" + end + + test "will provide the port if missing" do + assert %{conn_pid: :pid, origin: "example.com:80"} = + SocketInfo.build("http://example.com", :pid) + + assert %{conn_pid: :pid, origin: "example.com:443"} = + SocketInfo.build("https://example.com", :pid) + end + end + + describe "creating incoming connection records" do + test "can be passed a string" do + assert %{pid: _, origin: _origin} = SocketInfo.build("example.com:4000") + end + + test "can be passed a URI" do + uri = URI.parse("example.com:4000") + assert %{pid: _, origin: _origin} = SocketInfo.build(uri) + end + + test "will include the port number" do + assert %{pid: _, origin: origin} = SocketInfo.build("http://example.com:4000") + + assert origin =~ ":4000" + end + + test "will provide the port if missing" do + assert %{pid: _, origin: "example.com:80"} = SocketInfo.build("http://example.com") + assert %{pid: _, origin: "example.com:443"} = SocketInfo.build("https://example.com") + end + end +end From 26c571df339ebfdadf760f75871b9343131a2d81 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Fri, 18 Sep 2020 16:09:37 +0300 Subject: [PATCH 268/460] FedSockets: fix log spam on cached rejects --- lib/pleroma/web/fed_sockets/fed_sockets.ex | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/pleroma/web/fed_sockets/fed_sockets.ex b/lib/pleroma/web/fed_sockets/fed_sockets.ex index 035d54796..1fd5899c8 100644 --- a/lib/pleroma/web/fed_sockets/fed_sockets.ex +++ b/lib/pleroma/web/fed_sockets/fed_sockets.ex @@ -104,6 +104,9 @@ def get_or_create_fed_socket(address) do Logger.debug("fedsocket found in cache - #{inspect(address)}") {:ok, socket} + {:cache, {:error, :rejected} = e} -> + e + {:connect, {:error, _host}} -> Logger.debug("set host rejected for - #{inspect(address)}") FedRegistry.set_host_rejected(address) From 26859c549c58901bbcc9dde009fd1cb81f6eb292 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 18 Sep 2020 17:49:15 -0500 Subject: [PATCH 269/460] Add user agent to fedsocket requests --- lib/pleroma/web/fed_sockets/outgoing_handler.ex | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/fed_sockets/outgoing_handler.ex b/lib/pleroma/web/fed_sockets/outgoing_handler.ex index 6ddef17fe..3ff4a85e3 100644 --- a/lib/pleroma/web/fed_sockets/outgoing_handler.ex +++ b/lib/pleroma/web/fed_sockets/outgoing_handler.ex @@ -7,6 +7,7 @@ defmodule Pleroma.Web.FedSockets.OutgoingHandler do require Logger + alias Pleroma.Application alias Pleroma.Web.ActivityPub.InternalFetchActor alias Pleroma.Web.FedSockets alias Pleroma.Web.FedSockets.FedRegistry @@ -87,7 +88,10 @@ def initiate_connection(uri) do with {:ok, conn_pid} <- :gun.open(to_charlist(host), port), {:ok, _} <- :gun.await_up(conn_pid), - reference <- :gun.get(conn_pid, to_charlist(path)), + reference <- + :gun.get(conn_pid, to_charlist(path), [ + {'user-agent', to_charlist(Application.user_agent())} + ]), {:response, :fin, 204, _} <- :gun.await(conn_pid, reference), headers <- build_headers(uri), ref <- :gun.ws_upgrade(conn_pid, to_charlist(path), headers, %{silence_pings: false}) do @@ -132,7 +136,8 @@ defp build_headers(uri) do {'date', date}, {'digest', to_charlist(digest)}, {'content-length', to_charlist("#{shake_size}")}, - {to_charlist("(request-target)"), to_charlist(shake)} + {to_charlist("(request-target)"), to_charlist(shake)}, + {'user-agent', to_charlist(Application.user_agent())} ] end From 51116b539201eb99fa89cabc88a08f92c67bfeca Mon Sep 17 00:00:00 2001 From: rinpatch Date: Sat, 19 Sep 2020 00:50:00 +0300 Subject: [PATCH 270/460] OpenAPI: fix various errors pointed out by editor.swagger.io --- lib/pleroma/web/api_spec/helpers.ex | 6 +++++- lib/pleroma/web/api_spec/operations/account_operation.ex | 7 +++++-- .../web/api_spec/operations/custom_emoji_operation.ex | 2 +- .../web/api_spec/operations/emoji_reaction_operation.ex | 2 +- lib/pleroma/web/api_spec/operations/list_operation.ex | 3 +-- lib/pleroma/web/api_spec/schemas/chat_message.ex | 3 ++- lib/pleroma/web/api_spec/schemas/scheduled_status.ex | 4 ++-- 7 files changed, 17 insertions(+), 10 deletions(-) diff --git a/lib/pleroma/web/api_spec/helpers.ex b/lib/pleroma/web/api_spec/helpers.ex index 2a7f1a706..34de2ed57 100644 --- a/lib/pleroma/web/api_spec/helpers.ex +++ b/lib/pleroma/web/api_spec/helpers.ex @@ -72,7 +72,11 @@ def empty_object_response do end def empty_array_response do - Operation.response("Empty array", "application/json", %Schema{type: :array, example: []}) + Operation.response("Empty array", "application/json", %Schema{ + type: :array, + items: %Schema{type: :object, example: %{}}, + example: [] + }) end def no_content_response do diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index aaebc9b5c..d90ddb787 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -372,6 +372,10 @@ def identity_proofs_operation do tags: ["accounts"], summary: "Identity proofs", operationId: "AccountController.identity_proofs", + # Validators complains about unused path params otherwise + parameters: [ + %Reference{"$ref": "#/components/parameters/accountIdOrNickname"} + ], description: "Not implemented", responses: %{ 200 => empty_array_response() @@ -469,7 +473,6 @@ defp create_response do identifier: %Schema{type: :string}, message: %Schema{type: :string} }, - required: [], # Note: example of successful registration with failed login response: # example: %{ # "identifier" => "missing_confirmed_email", @@ -530,7 +533,7 @@ defp update_credentials_request do nullable: true, oneOf: [ %Schema{type: :array, items: attribute_field()}, - %Schema{type: :object, additionalProperties: %Schema{type: attribute_field()}} + %Schema{type: :object, additionalProperties: attribute_field()} ] }, # NOTE: `source` field is not supported diff --git a/lib/pleroma/web/api_spec/operations/custom_emoji_operation.ex b/lib/pleroma/web/api_spec/operations/custom_emoji_operation.ex index 2f812ac77..5ff263ceb 100644 --- a/lib/pleroma/web/api_spec/operations/custom_emoji_operation.ex +++ b/lib/pleroma/web/api_spec/operations/custom_emoji_operation.ex @@ -69,7 +69,7 @@ defp custom_emoji do type: :object, properties: %{ category: %Schema{type: :string}, - tags: %Schema{type: :array} + tags: %Schema{type: :array, items: %Schema{type: :string}} } } ], diff --git a/lib/pleroma/web/api_spec/operations/emoji_reaction_operation.ex b/lib/pleroma/web/api_spec/operations/emoji_reaction_operation.ex index 1a49fece0..745d41f88 100644 --- a/lib/pleroma/web/api_spec/operations/emoji_reaction_operation.ex +++ b/lib/pleroma/web/api_spec/operations/emoji_reaction_operation.ex @@ -23,7 +23,7 @@ def index_operation do parameters: [ Operation.parameter(:id, :path, FlakeID, "Status ID", required: true), Operation.parameter(:emoji, :path, :string, "Filter by a single unicode emoji", - required: false + required: nil ) ], security: [%{"oAuth" => ["read:statuses"]}], diff --git a/lib/pleroma/web/api_spec/operations/list_operation.ex b/lib/pleroma/web/api_spec/operations/list_operation.ex index 15039052e..f6e73968a 100644 --- a/lib/pleroma/web/api_spec/operations/list_operation.ex +++ b/lib/pleroma/web/api_spec/operations/list_operation.ex @@ -187,8 +187,7 @@ defp add_remove_accounts_request(required) when is_boolean(required) do type: :object, properties: %{ account_ids: %Schema{type: :array, description: "Array of account IDs", items: FlakeID} - }, - required: required && [:account_ids] + } }, required: required ) diff --git a/lib/pleroma/web/api_spec/schemas/chat_message.ex b/lib/pleroma/web/api_spec/schemas/chat_message.ex index bbf2a4427..9d2799618 100644 --- a/lib/pleroma/web/api_spec/schemas/chat_message.ex +++ b/lib/pleroma/web/api_spec/schemas/chat_message.ex @@ -4,6 +4,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.ChatMessage do alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.Emoji require OpenApiSpex @@ -18,7 +19,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.ChatMessage do chat_id: %Schema{type: :string}, content: %Schema{type: :string, nullable: true}, created_at: %Schema{type: :string, format: :"date-time"}, - emojis: %Schema{type: :array}, + emojis: %Schema{type: :array, items: Emoji}, attachment: %Schema{type: :object, nullable: true}, card: %Schema{ type: :object, diff --git a/lib/pleroma/web/api_spec/schemas/scheduled_status.ex b/lib/pleroma/web/api_spec/schemas/scheduled_status.ex index 0520d0848..addefa9d3 100644 --- a/lib/pleroma/web/api_spec/schemas/scheduled_status.ex +++ b/lib/pleroma/web/api_spec/schemas/scheduled_status.ex @@ -27,9 +27,9 @@ defmodule Pleroma.Web.ApiSpec.Schemas.ScheduledStatus do media_ids: %Schema{type: :array, nullable: true, items: %Schema{type: :string}}, sensitive: %Schema{type: :boolean, nullable: true}, spoiler_text: %Schema{type: :string, nullable: true}, - visibility: %Schema{type: VisibilityScope, nullable: true}, + visibility: %Schema{allOf: [VisibilityScope], nullable: true}, scheduled_at: %Schema{type: :string, format: :"date-time", nullable: true}, - poll: %Schema{type: Poll, nullable: true}, + poll: %Schema{allOf: [Poll], nullable: true}, in_reply_to_id: %Schema{type: :string, nullable: true} } } From 4b12e071ac7ea87c91f6192cc0da90c32e846ca4 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Sat, 19 Sep 2020 00:50:38 +0300 Subject: [PATCH 271/460] OpenAPI: make it possible to generate a spec without starting the app Needed for api docs generation on pleroma.social that will come later --- lib/pleroma/web/api_spec.ex | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/web/api_spec.ex b/lib/pleroma/web/api_spec.ex index 79fd5f871..93a5273e3 100644 --- a/lib/pleroma/web/api_spec.ex +++ b/lib/pleroma/web/api_spec.ex @@ -13,10 +13,15 @@ defmodule Pleroma.Web.ApiSpec do @impl OpenApi def spec do %OpenApi{ - servers: [ - # Populate the Server info from a phoenix endpoint - OpenApiSpex.Server.from_endpoint(Endpoint) - ], + servers: + if Phoenix.Endpoint.server?(:pleroma, Endpoint) do + [ + # Populate the Server info from a phoenix endpoint + OpenApiSpex.Server.from_endpoint(Endpoint) + ] + else + [] + end, info: %OpenApiSpex.Info{ title: "Pleroma", description: Application.spec(:pleroma, :description) |> to_string(), From 60b025b782eb27b86a791451149b6690431371dc Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Sat, 19 Sep 2020 19:16:55 +0300 Subject: [PATCH 272/460] [#2074] OAuth scope checking in Streaming API. --- lib/pleroma/plugs/oauth_scopes_plug.ex | 2 +- .../web/mastodon_api/websocket_handler.ex | 10 +- lib/pleroma/web/streamer/streamer.ex | 70 ++- test/integration/mastodon_websocket_test.exs | 2 +- test/notification_test.exs | 8 +- test/support/data_case.ex | 15 + test/web/streamer/streamer_test.exs | 408 +++++++++++------- 7 files changed, 332 insertions(+), 183 deletions(-) diff --git a/lib/pleroma/plugs/oauth_scopes_plug.ex b/lib/pleroma/plugs/oauth_scopes_plug.ex index efc25b79f..b1a736d78 100644 --- a/lib/pleroma/plugs/oauth_scopes_plug.ex +++ b/lib/pleroma/plugs/oauth_scopes_plug.ex @@ -53,7 +53,7 @@ def drop_auth_info(conn) do |> assign(:token, nil) end - @doc "Filters descendants of supported scopes" + @doc "Keeps those of `scopes` which are descendants of `supported_scopes`" def filter_descendants(scopes, supported_scopes) do Enum.filter( scopes, diff --git a/lib/pleroma/web/mastodon_api/websocket_handler.ex b/lib/pleroma/web/mastodon_api/websocket_handler.ex index cf923ded8..439cdd716 100644 --- a/lib/pleroma/web/mastodon_api/websocket_handler.ex +++ b/lib/pleroma/web/mastodon_api/websocket_handler.ex @@ -23,8 +23,8 @@ def init(%{qs: qs} = req, state) do with params <- Enum.into(:cow_qs.parse_qs(qs), %{}), sec_websocket <- :cowboy_req.header("sec-websocket-protocol", req, nil), access_token <- Map.get(params, "access_token"), - {:ok, user} <- authenticate_request(access_token, sec_websocket), - {:ok, topic} <- Streamer.get_topic(Map.get(params, "stream"), user, params) do + {:ok, user, oauth_token} <- authenticate_request(access_token, sec_websocket), + {:ok, topic} <- Streamer.get_topic(params["stream"], user, oauth_token, params) do req = if sec_websocket do :cowboy_req.set_resp_header("sec-websocket-protocol", sec_websocket, req) @@ -117,7 +117,7 @@ def terminate(reason, _req, state) do # Public streams without authentication. defp authenticate_request(nil, nil) do - {:ok, nil} + {:ok, nil, nil} end # Authenticated streams. @@ -125,9 +125,9 @@ defp authenticate_request(access_token, sec_websocket) do token = access_token || sec_websocket with true <- is_bitstring(token), - %Token{user_id: user_id} <- Repo.get_by(Token, token: token), + oauth_token = %Token{user_id: user_id} <- Repo.get_by(Token, token: token), user = %User{} <- User.get_cached_by_id(user_id) do - {:ok, user} + {:ok, user, oauth_token} else _ -> {:error, :unauthorized} end diff --git a/lib/pleroma/web/streamer/streamer.ex b/lib/pleroma/web/streamer/streamer.ex index d1d70e556..5475f18a6 100644 --- a/lib/pleroma/web/streamer/streamer.ex +++ b/lib/pleroma/web/streamer/streamer.ex @@ -11,10 +11,12 @@ defmodule Pleroma.Web.Streamer do alias Pleroma.Conversation.Participation alias Pleroma.Notification alias Pleroma.Object + alias Pleroma.Plugs.OAuthScopesPlug alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Visibility alias Pleroma.Web.CommonAPI + alias Pleroma.Web.OAuth.Token alias Pleroma.Web.StreamerView @mix_env Mix.env() @@ -26,53 +28,87 @@ def registry, do: @registry @user_streams ["user", "user:notification", "direct", "user:pleroma_chat"] @doc "Expands and authorizes a stream, and registers the process for streaming." - @spec get_topic_and_add_socket(stream :: String.t(), User.t() | nil, Map.t() | nil) :: + @spec get_topic_and_add_socket( + stream :: String.t(), + User.t() | nil, + Token.t() | nil, + Map.t() | nil + ) :: {:ok, topic :: String.t()} | {:error, :bad_topic} | {:error, :unauthorized} - def get_topic_and_add_socket(stream, user, params \\ %{}) do - case get_topic(stream, user, params) do + def get_topic_and_add_socket(stream, user, oauth_token, params \\ %{}) do + case get_topic(stream, user, oauth_token, params) do {:ok, topic} -> add_socket(topic, user) error -> error end end @doc "Expand and authorizes a stream" - @spec get_topic(stream :: String.t(), User.t() | nil, Map.t()) :: + @spec get_topic(stream :: String.t(), User.t() | nil, Token.t() | nil, Map.t()) :: {:ok, topic :: String.t()} | {:error, :bad_topic} - def get_topic(stream, user, params \\ %{}) + def get_topic(stream, user, oauth_token, params \\ %{}) # Allow all public steams. - def get_topic(stream, _, _) when stream in @public_streams do + def get_topic(stream, _user, _oauth_token, _params) when stream in @public_streams do {:ok, stream} end # Allow all hashtags streams. - def get_topic("hashtag", _, %{"tag" => tag}) do + def get_topic("hashtag", _user, _oauth_token, %{"tag" => tag} = _params) do {:ok, "hashtag:" <> tag} end # Expand user streams. - def get_topic(stream, %User{} = user, _) when stream in @user_streams do - {:ok, stream <> ":" <> to_string(user.id)} + def get_topic( + stream, + %User{id: user_id} = user, + %Token{user_id: token_user_id} = oauth_token, + _params + ) + when stream in @user_streams and user_id == token_user_id do + # Note: "read" works for all user streams (not mentioning it since it's an ancestor scope) + required_scopes = + if stream == "user:notification" do + ["read:notifications"] + else + ["read:statuses"] + end + + if OAuthScopesPlug.filter_descendants(required_scopes, oauth_token.scopes) == [] do + {:error, :unauthorized} + else + {:ok, stream <> ":" <> to_string(user.id)} + end end - def get_topic(stream, _, _) when stream in @user_streams do + def get_topic(stream, _user, _oauth_token, _params) when stream in @user_streams do {:error, :unauthorized} end # List streams. - def get_topic("list", %User{} = user, %{"list" => id}) do - if Pleroma.List.get(id, user) do - {:ok, "list:" <> to_string(id)} - else - {:error, :bad_topic} + def get_topic( + "list", + %User{id: user_id} = user, + %Token{user_id: token_user_id} = oauth_token, + %{"list" => id} + ) + when user_id == token_user_id do + cond do + OAuthScopesPlug.filter_descendants(["read", "read:lists"], oauth_token.scopes) == [] -> + {:error, :unauthorized} + + Pleroma.List.get(id, user) -> + {:ok, "list:" <> to_string(id)} + + true -> + {:error, :bad_topic} end end - def get_topic("list", _, _) do + def get_topic("list", _user, _oauth_token, _params) do {:error, :unauthorized} end - def get_topic(_, _, _) do + def get_topic(_stream, _user, _oauth_token, _params) do {:error, :bad_topic} end diff --git a/test/integration/mastodon_websocket_test.exs b/test/integration/mastodon_websocket_test.exs index 76fbc8bda..0f2e6cc2b 100644 --- a/test/integration/mastodon_websocket_test.exs +++ b/test/integration/mastodon_websocket_test.exs @@ -78,7 +78,7 @@ test "receives well formatted events" do Pleroma.Repo.insert( OAuth.App.register_changeset(%OAuth.App{}, %{ client_name: "client", - scopes: ["scope"], + scopes: ["read"], redirect_uris: "url" }) ) diff --git a/test/notification_test.exs b/test/notification_test.exs index a09b08675..f2e0f0b0d 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -179,17 +179,19 @@ test "does not create a notification for subscribed users if status is a reply" describe "create_notification" do @tag needs_streamer: true test "it creates a notification for user and send to the 'user' and the 'user:notification' stream" do - user = insert(:user) + %{user: user, token: oauth_token} = oauth_access(["read"]) task = Task.async(fn -> - Streamer.get_topic_and_add_socket("user", user) + {:ok, _topic} = Streamer.get_topic_and_add_socket("user", user, oauth_token) assert_receive {:render_with_user, _, _, _}, 4_000 end) task_user_notification = Task.async(fn -> - Streamer.get_topic_and_add_socket("user:notification", user) + {:ok, _topic} = + Streamer.get_topic_and_add_socket("user:notification", user, oauth_token) + assert_receive {:render_with_user, _, _, _}, 4_000 end) diff --git a/test/support/data_case.ex b/test/support/data_case.ex index ba8848952..d5456521c 100644 --- a/test/support/data_case.ex +++ b/test/support/data_case.ex @@ -27,6 +27,21 @@ defmodule Pleroma.DataCase do import Ecto.Query import Pleroma.DataCase use Pleroma.Tests.Helpers + + # Sets up OAuth access with specified scopes + defp oauth_access(scopes, opts \\ []) do + user = + Keyword.get_lazy(opts, :user, fn -> + Pleroma.Factory.insert(:user) + end) + + token = + Keyword.get_lazy(opts, :oauth_token, fn -> + Pleroma.Factory.insert(:oauth_token, user: user, scopes: scopes) + end) + + %{user: user, token: token} + end end end diff --git a/test/web/streamer/streamer_test.exs b/test/web/streamer/streamer_test.exs index d56d74464..185724a9f 100644 --- a/test/web/streamer/streamer_test.exs +++ b/test/web/streamer/streamer_test.exs @@ -21,92 +21,148 @@ defmodule Pleroma.Web.StreamerTest do setup do: clear_config([:instance, :skip_thread_containment]) - describe "get_topic without an user" do + describe "get_topic/_ (unauthenticated)" do test "allows public" do - assert {:ok, "public"} = Streamer.get_topic("public", nil) - assert {:ok, "public:local"} = Streamer.get_topic("public:local", nil) - assert {:ok, "public:media"} = Streamer.get_topic("public:media", nil) - assert {:ok, "public:local:media"} = Streamer.get_topic("public:local:media", nil) + assert {:ok, "public"} = Streamer.get_topic("public", nil, nil) + assert {:ok, "public:local"} = Streamer.get_topic("public:local", nil, nil) + assert {:ok, "public:media"} = Streamer.get_topic("public:media", nil, nil) + assert {:ok, "public:local:media"} = Streamer.get_topic("public:local:media", nil, nil) end test "allows hashtag streams" do - assert {:ok, "hashtag:cofe"} = Streamer.get_topic("hashtag", nil, %{"tag" => "cofe"}) + assert {:ok, "hashtag:cofe"} = Streamer.get_topic("hashtag", nil, nil, %{"tag" => "cofe"}) end test "disallows user streams" do - assert {:error, _} = Streamer.get_topic("user", nil) - assert {:error, _} = Streamer.get_topic("user:notification", nil) - assert {:error, _} = Streamer.get_topic("direct", nil) + assert {:error, _} = Streamer.get_topic("user", nil, nil) + assert {:error, _} = Streamer.get_topic("user:notification", nil, nil) + assert {:error, _} = Streamer.get_topic("direct", nil, nil) end test "disallows list streams" do - assert {:error, _} = Streamer.get_topic("list", nil, %{"list" => 42}) + assert {:error, _} = Streamer.get_topic("list", nil, nil, %{"list" => 42}) end end - describe "get_topic with an user" do - setup do - user = insert(:user) - {:ok, %{user: user}} + describe "get_topic/_ (authenticated)" do + setup do: oauth_access(["read"]) + + test "allows public streams (regardless of OAuth token scopes)", %{ + user: user, + token: read_oauth_token + } do + with oauth_token <- [nil, read_oauth_token] do + assert {:ok, "public"} = Streamer.get_topic("public", user, oauth_token) + assert {:ok, "public:local"} = Streamer.get_topic("public:local", user, oauth_token) + assert {:ok, "public:media"} = Streamer.get_topic("public:media", user, oauth_token) + + assert {:ok, "public:local:media"} = + Streamer.get_topic("public:local:media", user, oauth_token) + end end - test "allows public streams", %{user: user} do - assert {:ok, "public"} = Streamer.get_topic("public", user) - assert {:ok, "public:local"} = Streamer.get_topic("public:local", user) - assert {:ok, "public:media"} = Streamer.get_topic("public:media", user) - assert {:ok, "public:local:media"} = Streamer.get_topic("public:local:media", user) - end + test "allows user streams (with proper OAuth token scopes)", %{ + user: user, + token: read_oauth_token + } do + %{token: read_notifications_token} = oauth_access(["read:notifications"], user: user) + %{token: read_statuses_token} = oauth_access(["read:statuses"], user: user) + %{token: badly_scoped_token} = oauth_access(["irrelevant:scope"], user: user) - test "allows user streams", %{user: user} do expected_user_topic = "user:#{user.id}" - expected_notif_topic = "user:notification:#{user.id}" + expected_notification_topic = "user:notification:#{user.id}" expected_direct_topic = "direct:#{user.id}" - assert {:ok, ^expected_user_topic} = Streamer.get_topic("user", user) - assert {:ok, ^expected_notif_topic} = Streamer.get_topic("user:notification", user) - assert {:ok, ^expected_direct_topic} = Streamer.get_topic("direct", user) + expected_pleroma_chat_topic = "user:pleroma_chat:#{user.id}" + + for valid_user_token <- [read_oauth_token, read_statuses_token] do + assert {:ok, ^expected_user_topic} = Streamer.get_topic("user", user, valid_user_token) + + assert {:ok, ^expected_direct_topic} = + Streamer.get_topic("direct", user, valid_user_token) + + assert {:ok, ^expected_pleroma_chat_topic} = + Streamer.get_topic("user:pleroma_chat", user, valid_user_token) + end + + for invalid_user_token <- [read_notifications_token, badly_scoped_token], + user_topic <- ["user", "direct", "user:pleroma_chat"] do + assert {:error, :unauthorized} = Streamer.get_topic(user_topic, user, invalid_user_token) + end + + for valid_notification_token <- [read_oauth_token, read_notifications_token] do + assert {:ok, ^expected_notification_topic} = + Streamer.get_topic("user:notification", user, valid_notification_token) + end + + for invalid_notification_token <- [read_statuses_token, badly_scoped_token] do + assert {:error, :unauthorized} = + Streamer.get_topic("user:notification", user, invalid_notification_token) + end end - test "allows hashtag streams", %{user: user} do - assert {:ok, "hashtag:cofe"} = Streamer.get_topic("hashtag", user, %{"tag" => "cofe"}) + test "allows hashtag streams (regardless of OAuth token scopes)", %{ + user: user, + token: read_oauth_token + } do + for oauth_token <- [nil, read_oauth_token] do + assert {:ok, "hashtag:cofe"} = + Streamer.get_topic("hashtag", user, oauth_token, %{"tag" => "cofe"}) + end end - test "disallows registering to an user stream", %{user: user} do + test "disallows registering to another user's stream", %{user: user, token: read_oauth_token} do another_user = insert(:user) - assert {:error, _} = Streamer.get_topic("user:#{another_user.id}", user) - assert {:error, _} = Streamer.get_topic("user:notification:#{another_user.id}", user) - assert {:error, _} = Streamer.get_topic("direct:#{another_user.id}", user) + assert {:error, _} = Streamer.get_topic("user:#{another_user.id}", user, read_oauth_token) + + assert {:error, _} = + Streamer.get_topic("user:notification:#{another_user.id}", user, read_oauth_token) + + assert {:error, _} = Streamer.get_topic("direct:#{another_user.id}", user, read_oauth_token) end - test "allows list stream that are owned by the user", %{user: user} do + test "allows list stream that are owned by the user (with `read` or `read:lists` scopes)", %{ + user: user, + token: read_oauth_token + } do + %{token: read_lists_token} = oauth_access(["read:lists"], user: user) + %{token: invalid_token} = oauth_access(["irrelevant:scope"], user: user) {:ok, list} = List.create("Test", user) - assert {:error, _} = Streamer.get_topic("list:#{list.id}", user) - assert {:ok, _} = Streamer.get_topic("list", user, %{"list" => list.id}) + + assert {:error, _} = Streamer.get_topic("list:#{list.id}", user, read_oauth_token) + + for valid_token <- [read_oauth_token, read_lists_token] do + assert {:ok, _} = Streamer.get_topic("list", user, valid_token, %{"list" => list.id}) + end + + assert {:error, _} = Streamer.get_topic("list", user, invalid_token, %{"list" => list.id}) end - test "disallows list stream that are not owned by the user", %{user: user} do + test "disallows list stream that are not owned by the user", %{user: user, token: oauth_token} do another_user = insert(:user) {:ok, list} = List.create("Test", another_user) - assert {:error, _} = Streamer.get_topic("list:#{list.id}", user) - assert {:error, _} = Streamer.get_topic("list", user, %{"list" => list.id}) + + assert {:error, _} = Streamer.get_topic("list:#{list.id}", user, oauth_token) + assert {:error, _} = Streamer.get_topic("list", user, oauth_token, %{"list" => list.id}) end end describe "user streams" do setup do - user = insert(:user) + %{user: user, token: token} = oauth_access(["read"]) notify = insert(:notification, user: user, activity: build(:note_activity)) - {:ok, %{user: user, notify: notify}} + {:ok, %{user: user, notify: notify, token: token}} end - test "it streams the user's post in the 'user' stream", %{user: user} do - Streamer.get_topic_and_add_socket("user", user) + test "it streams the user's post in the 'user' stream", %{user: user, token: oauth_token} do + Streamer.get_topic_and_add_socket("user", user, oauth_token) {:ok, activity} = CommonAPI.post(user, %{status: "hey"}) + assert_receive {:render_with_user, _, _, ^activity} refute Streamer.filtered_by_user?(user, activity) end - test "it streams boosts of the user in the 'user' stream", %{user: user} do - Streamer.get_topic_and_add_socket("user", user) + test "it streams boosts of the user in the 'user' stream", %{user: user, token: oauth_token} do + Streamer.get_topic_and_add_socket("user", user, oauth_token) other_user = insert(:user) {:ok, activity} = CommonAPI.post(other_user, %{status: "hey"}) @@ -117,9 +173,10 @@ test "it streams boosts of the user in the 'user' stream", %{user: user} do end test "it does not stream announces of the user's own posts in the 'user' stream", %{ - user: user + user: user, + token: oauth_token } do - Streamer.get_topic_and_add_socket("user", user) + Streamer.get_topic_and_add_socket("user", user, oauth_token) other_user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{status: "hey"}) @@ -129,9 +186,10 @@ test "it does not stream announces of the user's own posts in the 'user' stream" end test "it does stream notifications announces of the user's own posts in the 'user' stream", %{ - user: user + user: user, + token: oauth_token } do - Streamer.get_topic_and_add_socket("user", user) + Streamer.get_topic_and_add_socket("user", user, oauth_token) other_user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{status: "hey"}) @@ -145,8 +203,11 @@ test "it does stream notifications announces of the user's own posts in the 'use refute Streamer.filtered_by_user?(user, notification) end - test "it streams boosts of mastodon user in the 'user' stream", %{user: user} do - Streamer.get_topic_and_add_socket("user", user) + test "it streams boosts of mastodon user in the 'user' stream", %{ + user: user, + token: oauth_token + } do + Streamer.get_topic_and_add_socket("user", user, oauth_token) other_user = insert(:user) {:ok, activity} = CommonAPI.post(other_user, %{status: "hey"}) @@ -164,21 +225,34 @@ test "it streams boosts of mastodon user in the 'user' stream", %{user: user} do refute Streamer.filtered_by_user?(user, announce) end - test "it sends notify to in the 'user' stream", %{user: user, notify: notify} do - Streamer.get_topic_and_add_socket("user", user) + test "it sends notify to in the 'user' stream", %{ + user: user, + token: oauth_token, + notify: notify + } do + Streamer.get_topic_and_add_socket("user", user, oauth_token) Streamer.stream("user", notify) + assert_receive {:render_with_user, _, _, ^notify} refute Streamer.filtered_by_user?(user, notify) end - test "it sends notify to in the 'user:notification' stream", %{user: user, notify: notify} do - Streamer.get_topic_and_add_socket("user:notification", user) + test "it sends notify to in the 'user:notification' stream", %{ + user: user, + token: oauth_token, + notify: notify + } do + Streamer.get_topic_and_add_socket("user:notification", user, oauth_token) Streamer.stream("user:notification", notify) + assert_receive {:render_with_user, _, _, ^notify} refute Streamer.filtered_by_user?(user, notify) end - test "it sends chat messages to the 'user:pleroma_chat' stream", %{user: user} do + test "it sends chat messages to the 'user:pleroma_chat' stream", %{ + user: user, + token: oauth_token + } do other_user = insert(:user) {:ok, create_activity} = CommonAPI.post_chat_message(other_user, user, "hey cirno") @@ -187,7 +261,7 @@ test "it sends chat messages to the 'user:pleroma_chat' stream", %{user: user} d cm_ref = MessageReference.for_chat_and_object(chat, object) cm_ref = %{cm_ref | chat: chat, object: object} - Streamer.get_topic_and_add_socket("user:pleroma_chat", user) + Streamer.get_topic_and_add_socket("user:pleroma_chat", user, oauth_token) Streamer.stream("user:pleroma_chat", {user, cm_ref}) text = StreamerView.render("chat_update.json", %{chat_message_reference: cm_ref}) @@ -196,7 +270,7 @@ test "it sends chat messages to the 'user:pleroma_chat' stream", %{user: user} d assert_receive {:text, ^text} end - test "it sends chat messages to the 'user' stream", %{user: user} do + test "it sends chat messages to the 'user' stream", %{user: user, token: oauth_token} do other_user = insert(:user) {:ok, create_activity} = CommonAPI.post_chat_message(other_user, user, "hey cirno") @@ -205,7 +279,7 @@ test "it sends chat messages to the 'user' stream", %{user: user} do cm_ref = MessageReference.for_chat_and_object(chat, object) cm_ref = %{cm_ref | chat: chat, object: object} - Streamer.get_topic_and_add_socket("user", user) + Streamer.get_topic_and_add_socket("user", user, oauth_token) Streamer.stream("user", {user, cm_ref}) text = StreamerView.render("chat_update.json", %{chat_message_reference: cm_ref}) @@ -214,7 +288,10 @@ test "it sends chat messages to the 'user' stream", %{user: user} do assert_receive {:text, ^text} end - test "it sends chat message notifications to the 'user:notification' stream", %{user: user} do + test "it sends chat message notifications to the 'user:notification' stream", %{ + user: user, + token: oauth_token + } do other_user = insert(:user) {:ok, create_activity} = CommonAPI.post_chat_message(other_user, user, "hey") @@ -223,19 +300,21 @@ test "it sends chat message notifications to the 'user:notification' stream", %{ Repo.get_by(Pleroma.Notification, user_id: user.id, activity_id: create_activity.id) |> Repo.preload(:activity) - Streamer.get_topic_and_add_socket("user:notification", user) + Streamer.get_topic_and_add_socket("user:notification", user, oauth_token) Streamer.stream("user:notification", notify) + assert_receive {:render_with_user, _, _, ^notify} refute Streamer.filtered_by_user?(user, notify) end test "it doesn't send notify to the 'user:notification' stream when a user is blocked", %{ - user: user + user: user, + token: oauth_token } do blocked = insert(:user) {:ok, _user_relationship} = User.block(user, blocked) - Streamer.get_topic_and_add_socket("user:notification", user) + Streamer.get_topic_and_add_socket("user:notification", user, oauth_token) {:ok, activity} = CommonAPI.post(user, %{status: ":("}) {:ok, _} = CommonAPI.favorite(blocked, activity.id) @@ -244,14 +323,15 @@ test "it doesn't send notify to the 'user:notification' stream when a user is bl end test "it doesn't send notify to the 'user:notification' stream when a thread is muted", %{ - user: user + user: user, + token: oauth_token } do user2 = insert(:user) {:ok, activity} = CommonAPI.post(user, %{status: "super hot take"}) {:ok, _} = CommonAPI.add_mute(user, activity) - Streamer.get_topic_and_add_socket("user:notification", user) + Streamer.get_topic_and_add_socket("user:notification", user, oauth_token) {:ok, favorite_activity} = CommonAPI.favorite(user2, activity.id) @@ -260,12 +340,13 @@ test "it doesn't send notify to the 'user:notification' stream when a thread is end test "it sends favorite to 'user:notification' stream'", %{ - user: user + user: user, + token: oauth_token } do user2 = insert(:user, %{ap_id: "https://hecking-lewd-place.com/user/meanie"}) {:ok, activity} = CommonAPI.post(user, %{status: "super hot take"}) - Streamer.get_topic_and_add_socket("user:notification", user) + Streamer.get_topic_and_add_socket("user:notification", user, oauth_token) {:ok, favorite_activity} = CommonAPI.favorite(user2, activity.id) assert_receive {:render_with_user, _, "notification.json", notif} @@ -274,13 +355,14 @@ test "it sends favorite to 'user:notification' stream'", %{ end test "it doesn't send the 'user:notification' stream' when a domain is blocked", %{ - user: user + user: user, + token: oauth_token } do user2 = insert(:user, %{ap_id: "https://hecking-lewd-place.com/user/meanie"}) {:ok, user} = User.block_domain(user, "hecking-lewd-place.com") {:ok, activity} = CommonAPI.post(user, %{status: "super hot take"}) - Streamer.get_topic_and_add_socket("user:notification", user) + Streamer.get_topic_and_add_socket("user:notification", user, oauth_token) {:ok, favorite_activity} = CommonAPI.favorite(user2, activity.id) refute_receive _ @@ -288,7 +370,8 @@ test "it doesn't send the 'user:notification' stream' when a domain is blocked", end test "it sends follow activities to the 'user:notification' stream", %{ - user: user + user: user, + token: oauth_token } do user_url = user.ap_id user2 = insert(:user) @@ -303,7 +386,7 @@ test "it sends follow activities to the 'user:notification' stream", %{ %Tesla.Env{status: 200, body: body} end) - Streamer.get_topic_and_add_socket("user:notification", user) + Streamer.get_topic_and_add_socket("user:notification", user, oauth_token) {:ok, _follower, _followed, follow_activity} = CommonAPI.follow(user2, user) assert_receive {:render_with_user, _, "notification.json", notif} @@ -312,51 +395,53 @@ test "it sends follow activities to the 'user:notification' stream", %{ end end - test "it sends to public authenticated" do - user = insert(:user) - other_user = insert(:user) + describe "public streams" do + test "it sends to public (authenticated)" do + %{user: user, token: oauth_token} = oauth_access(["read"]) + other_user = insert(:user) - Streamer.get_topic_and_add_socket("public", other_user) + Streamer.get_topic_and_add_socket("public", user, oauth_token) - {:ok, activity} = CommonAPI.post(user, %{status: "Test"}) - assert_receive {:render_with_user, _, _, ^activity} - refute Streamer.filtered_by_user?(user, activity) + {:ok, activity} = CommonAPI.post(other_user, %{status: "Test"}) + assert_receive {:render_with_user, _, _, ^activity} + refute Streamer.filtered_by_user?(other_user, activity) + end + + test "it sends to public (unauthenticated)" do + user = insert(:user) + + Streamer.get_topic_and_add_socket("public", nil, nil) + + {:ok, activity} = CommonAPI.post(user, %{status: "Test"}) + activity_id = activity.id + assert_receive {:text, event} + assert %{"event" => "update", "payload" => payload} = Jason.decode!(event) + assert %{"id" => ^activity_id} = Jason.decode!(payload) + + {:ok, _} = CommonAPI.delete(activity.id, user) + assert_receive {:text, event} + assert %{"event" => "delete", "payload" => ^activity_id} = Jason.decode!(event) + end + + test "handles deletions" do + %{user: user, token: oauth_token} = oauth_access(["read"]) + other_user = insert(:user) + {:ok, activity} = CommonAPI.post(other_user, %{status: "Test"}) + + Streamer.get_topic_and_add_socket("public", user, oauth_token) + + {:ok, _} = CommonAPI.delete(activity.id, other_user) + activity_id = activity.id + assert_receive {:text, event} + assert %{"event" => "delete", "payload" => ^activity_id} = Jason.decode!(event) + end end - test "works for deletions" do - user = insert(:user) - other_user = insert(:user) - {:ok, activity} = CommonAPI.post(other_user, %{status: "Test"}) - - Streamer.get_topic_and_add_socket("public", user) - - {:ok, _} = CommonAPI.delete(activity.id, other_user) - activity_id = activity.id - assert_receive {:text, event} - assert %{"event" => "delete", "payload" => ^activity_id} = Jason.decode!(event) - end - - test "it sends to public unauthenticated" do - user = insert(:user) - - Streamer.get_topic_and_add_socket("public", nil) - - {:ok, activity} = CommonAPI.post(user, %{status: "Test"}) - activity_id = activity.id - assert_receive {:text, event} - assert %{"event" => "update", "payload" => payload} = Jason.decode!(event) - assert %{"id" => ^activity_id} = Jason.decode!(payload) - - {:ok, _} = CommonAPI.delete(activity.id, user) - assert_receive {:text, event} - assert %{"event" => "delete", "payload" => ^activity_id} = Jason.decode!(event) - end - - describe "thread_containment" do + describe "thread_containment/2" do test "it filters to user if recipients invalid and thread containment is enabled" do Pleroma.Config.put([:instance, :skip_thread_containment], false) author = insert(:user) - user = insert(:user) + %{user: user, token: oauth_token} = oauth_access(["read"]) User.follow(user, author, :follow_accept) activity = @@ -368,7 +453,7 @@ test "it filters to user if recipients invalid and thread containment is enabled ) ) - Streamer.get_topic_and_add_socket("public", user) + Streamer.get_topic_and_add_socket("public", user, oauth_token) Streamer.stream("public", activity) assert_receive {:render_with_user, _, _, ^activity} assert Streamer.filtered_by_user?(user, activity) @@ -377,7 +462,7 @@ test "it filters to user if recipients invalid and thread containment is enabled test "it sends message if recipients invalid and thread containment is disabled" do Pleroma.Config.put([:instance, :skip_thread_containment], true) author = insert(:user) - user = insert(:user) + %{user: user, token: oauth_token} = oauth_access(["read"]) User.follow(user, author, :follow_accept) activity = @@ -389,7 +474,7 @@ test "it sends message if recipients invalid and thread containment is disabled" ) ) - Streamer.get_topic_and_add_socket("public", user) + Streamer.get_topic_and_add_socket("public", user, oauth_token) Streamer.stream("public", activity) assert_receive {:render_with_user, _, _, ^activity} @@ -400,6 +485,7 @@ test "it sends message if recipients invalid and thread containment is enabled b Pleroma.Config.put([:instance, :skip_thread_containment], false) author = insert(:user) user = insert(:user, skip_thread_containment: true) + %{token: oauth_token} = oauth_access(["read"], user: user) User.follow(user, author, :follow_accept) activity = @@ -411,7 +497,7 @@ test "it sends message if recipients invalid and thread containment is enabled b ) ) - Streamer.get_topic_and_add_socket("public", user) + Streamer.get_topic_and_add_socket("public", user, oauth_token) Streamer.stream("public", activity) assert_receive {:render_with_user, _, _, ^activity} @@ -420,23 +506,26 @@ test "it sends message if recipients invalid and thread containment is enabled b end describe "blocks" do - test "it filters messages involving blocked users" do - user = insert(:user) + setup do: oauth_access(["read"]) + + test "it filters messages involving blocked users", %{user: user, token: oauth_token} do blocked_user = insert(:user) {:ok, _user_relationship} = User.block(user, blocked_user) - Streamer.get_topic_and_add_socket("public", user) + Streamer.get_topic_and_add_socket("public", user, oauth_token) {:ok, activity} = CommonAPI.post(blocked_user, %{status: "Test"}) assert_receive {:render_with_user, _, _, ^activity} assert Streamer.filtered_by_user?(user, activity) end - test "it filters messages transitively involving blocked users" do - blocker = insert(:user) + test "it filters messages transitively involving blocked users", %{ + user: blocker, + token: blocker_token + } do blockee = insert(:user) friend = insert(:user) - Streamer.get_topic_and_add_socket("public", blocker) + Streamer.get_topic_and_add_socket("public", blocker, blocker_token) {:ok, _user_relationship} = User.block(blocker, blockee) @@ -458,8 +547,9 @@ test "it filters messages transitively involving blocked users" do end describe "lists" do - test "it doesn't send unwanted DMs to list" do - user_a = insert(:user) + setup do: oauth_access(["read"]) + + test "it doesn't send unwanted DMs to list", %{user: user_a, token: user_a_token} do user_b = insert(:user) user_c = insert(:user) @@ -468,7 +558,7 @@ test "it doesn't send unwanted DMs to list" do {:ok, list} = List.create("Test", user_a) {:ok, list} = List.follow(list, user_b) - Streamer.get_topic_and_add_socket("list", user_a, %{"list" => list.id}) + Streamer.get_topic_and_add_socket("list", user_a, user_a_token, %{"list" => list.id}) {:ok, _activity} = CommonAPI.post(user_b, %{ @@ -479,14 +569,13 @@ test "it doesn't send unwanted DMs to list" do refute_receive _ end - test "it doesn't send unwanted private posts to list" do - user_a = insert(:user) + test "it doesn't send unwanted private posts to list", %{user: user_a, token: user_a_token} do user_b = insert(:user) {:ok, list} = List.create("Test", user_a) {:ok, list} = List.follow(list, user_b) - Streamer.get_topic_and_add_socket("list", user_a, %{"list" => list.id}) + Streamer.get_topic_and_add_socket("list", user_a, user_a_token, %{"list" => list.id}) {:ok, _activity} = CommonAPI.post(user_b, %{ @@ -497,8 +586,7 @@ test "it doesn't send unwanted private posts to list" do refute_receive _ end - test "it sends wanted private posts to list" do - user_a = insert(:user) + test "it sends wanted private posts to list", %{user: user_a, token: user_a_token} do user_b = insert(:user) {:ok, user_a} = User.follow(user_a, user_b) @@ -506,7 +594,7 @@ test "it sends wanted private posts to list" do {:ok, list} = List.create("Test", user_a) {:ok, list} = List.follow(list, user_b) - Streamer.get_topic_and_add_socket("list", user_a, %{"list" => list.id}) + Streamer.get_topic_and_add_socket("list", user_a, user_a_token, %{"list" => list.id}) {:ok, activity} = CommonAPI.post(user_b, %{ @@ -520,8 +608,9 @@ test "it sends wanted private posts to list" do end describe "muted reblogs" do - test "it filters muted reblogs" do - user1 = insert(:user) + setup do: oauth_access(["read"]) + + test "it filters muted reblogs", %{user: user1, token: user1_token} do user2 = insert(:user) user3 = insert(:user) CommonAPI.follow(user1, user2) @@ -529,34 +618,38 @@ test "it filters muted reblogs" do {:ok, create_activity} = CommonAPI.post(user3, %{status: "I'm kawen"}) - Streamer.get_topic_and_add_socket("user", user1) + Streamer.get_topic_and_add_socket("user", user1, user1_token) {:ok, announce_activity} = CommonAPI.repeat(create_activity.id, user2) assert_receive {:render_with_user, _, _, ^announce_activity} assert Streamer.filtered_by_user?(user1, announce_activity) end - test "it filters reblog notification for reblog-muted actors" do - user1 = insert(:user) + test "it filters reblog notification for reblog-muted actors", %{ + user: user1, + token: user1_token + } do user2 = insert(:user) CommonAPI.follow(user1, user2) CommonAPI.hide_reblogs(user1, user2) {:ok, create_activity} = CommonAPI.post(user1, %{status: "I'm kawen"}) - Streamer.get_topic_and_add_socket("user", user1) + Streamer.get_topic_and_add_socket("user", user1, user1_token) {:ok, _announce_activity} = CommonAPI.repeat(create_activity.id, user2) assert_receive {:render_with_user, _, "notification.json", notif} assert Streamer.filtered_by_user?(user1, notif) end - test "it send non-reblog notification for reblog-muted actors" do - user1 = insert(:user) + test "it send non-reblog notification for reblog-muted actors", %{ + user: user1, + token: user1_token + } do user2 = insert(:user) CommonAPI.follow(user1, user2) CommonAPI.hide_reblogs(user1, user2) {:ok, create_activity} = CommonAPI.post(user1, %{status: "I'm kawen"}) - Streamer.get_topic_and_add_socket("user", user1) + Streamer.get_topic_and_add_socket("user", user1, user1_token) {:ok, _favorite_activity} = CommonAPI.favorite(user2, create_activity.id) assert_receive {:render_with_user, _, "notification.json", notif} @@ -564,27 +657,28 @@ test "it send non-reblog notification for reblog-muted actors" do end end - test "it filters posts from muted threads" do - user = insert(:user) - user2 = insert(:user) - Streamer.get_topic_and_add_socket("user", user2) - {:ok, user2, user, _activity} = CommonAPI.follow(user2, user) - {:ok, activity} = CommonAPI.post(user, %{status: "super hot take"}) - {:ok, _} = CommonAPI.add_mute(user2, activity) - assert_receive {:render_with_user, _, _, ^activity} - assert Streamer.filtered_by_user?(user2, activity) + describe "muted threads" do + test "it filters posts from muted threads" do + user = insert(:user) + %{user: user2, token: user2_token} = oauth_access(["read"]) + Streamer.get_topic_and_add_socket("user", user2, user2_token) + + {:ok, user2, user, _activity} = CommonAPI.follow(user2, user) + {:ok, activity} = CommonAPI.post(user, %{status: "super hot take"}) + {:ok, _} = CommonAPI.add_mute(user2, activity) + + assert_receive {:render_with_user, _, _, ^activity} + assert Streamer.filtered_by_user?(user2, activity) + end end describe "direct streams" do - setup do - :ok - end + setup do: oauth_access(["read"]) - test "it sends conversation update to the 'direct' stream", %{} do - user = insert(:user) + test "it sends conversation update to the 'direct' stream", %{user: user, token: oauth_token} do another_user = insert(:user) - Streamer.get_topic_and_add_socket("direct", user) + Streamer.get_topic_and_add_socket("direct", user, oauth_token) {:ok, _create_activity} = CommonAPI.post(another_user, %{ @@ -602,11 +696,11 @@ test "it sends conversation update to the 'direct' stream", %{} do assert last_status["pleroma"]["direct_conversation_id"] == participation.id end - test "it doesn't send conversation update to the 'direct' stream when the last message in the conversation is deleted" do - user = insert(:user) + test "it doesn't send conversation update to the 'direct' stream when the last message in the conversation is deleted", + %{user: user, token: oauth_token} do another_user = insert(:user) - Streamer.get_topic_and_add_socket("direct", user) + Streamer.get_topic_and_add_socket("direct", user, oauth_token) {:ok, create_activity} = CommonAPI.post(another_user, %{ @@ -629,10 +723,12 @@ test "it doesn't send conversation update to the 'direct' stream when the last m refute_receive _ end - test "it sends conversation update to the 'direct' stream when a message is deleted" do - user = insert(:user) + test "it sends conversation update to the 'direct' stream when a message is deleted", %{ + user: user, + token: oauth_token + } do another_user = insert(:user) - Streamer.get_topic_and_add_socket("direct", user) + Streamer.get_topic_and_add_socket("direct", user, oauth_token) {:ok, create_activity} = CommonAPI.post(another_user, %{ From d72970a1fc852c6a5c836ffd3983f65ddf4ca459 Mon Sep 17 00:00:00 2001 From: Kana Date: Sun, 20 Sep 2020 13:18:26 +0000 Subject: [PATCH 273/460] Added translation using Weblate (Chinese (Simplified)) --- priv/gettext/zh_Hans/LC_MESSAGES/errors.po | 578 +++++++++++++++++++++ 1 file changed, 578 insertions(+) create mode 100644 priv/gettext/zh_Hans/LC_MESSAGES/errors.po diff --git a/priv/gettext/zh_Hans/LC_MESSAGES/errors.po b/priv/gettext/zh_Hans/LC_MESSAGES/errors.po new file mode 100644 index 000000000..8383badc3 --- /dev/null +++ b/priv/gettext/zh_Hans/LC_MESSAGES/errors.po @@ -0,0 +1,578 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-09-20 13:18+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 2.5.1\n" + +## This file is a PO Template file. +## +## `msgid`s here are often extracted from source code. +## Add new translations manually only if they're dynamic +## translations that can't be statically extracted. +## +## Run `mix gettext.extract` to bring this file up to +## date. Leave `msgstr`s empty as changing them here as no +## effect: edit them in PO (`.po`) files instead. +## From Ecto.Changeset.cast/4 +msgid "can't be blank" +msgstr "" + +## From Ecto.Changeset.unique_constraint/3 +msgid "has already been taken" +msgstr "" + +## From Ecto.Changeset.put_change/3 +msgid "is invalid" +msgstr "" + +## From Ecto.Changeset.validate_format/3 +msgid "has invalid format" +msgstr "" + +## From Ecto.Changeset.validate_subset/3 +msgid "has an invalid entry" +msgstr "" + +## From Ecto.Changeset.validate_exclusion/3 +msgid "is reserved" +msgstr "" + +## From Ecto.Changeset.validate_confirmation/3 +msgid "does not match confirmation" +msgstr "" + +## From Ecto.Changeset.no_assoc_constraint/3 +msgid "is still associated with this entry" +msgstr "" + +msgid "are still associated with this entry" +msgstr "" + +## From Ecto.Changeset.validate_length/3 +msgid "should be %{count} character(s)" +msgid_plural "should be %{count} character(s)" +msgstr[0] "" + +msgid "should have %{count} item(s)" +msgid_plural "should have %{count} item(s)" +msgstr[0] "" + +msgid "should be at least %{count} character(s)" +msgid_plural "should be at least %{count} character(s)" +msgstr[0] "" + +msgid "should have at least %{count} item(s)" +msgid_plural "should have at least %{count} item(s)" +msgstr[0] "" + +msgid "should be at most %{count} character(s)" +msgid_plural "should be at most %{count} character(s)" +msgstr[0] "" + +msgid "should have at most %{count} item(s)" +msgid_plural "should have at most %{count} item(s)" +msgstr[0] "" + +## From Ecto.Changeset.validate_number/3 +msgid "must be less than %{number}" +msgstr "" + +msgid "must be greater than %{number}" +msgstr "" + +msgid "must be less than or equal to %{number}" +msgstr "" + +msgid "must be greater than or equal to %{number}" +msgstr "" + +msgid "must be equal to %{number}" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:505 +#, elixir-format +msgid "Account not found" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:339 +#, elixir-format +msgid "Already voted" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:359 +#, elixir-format +msgid "Bad request" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:426 +#, elixir-format +msgid "Can't delete object" +msgstr "" + +#: lib/pleroma/web/controller_helper.ex:105 +#: lib/pleroma/web/controller_helper.ex:111 +#, elixir-format +msgid "Can't display this activity" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:285 +#, elixir-format +msgid "Can't find user" +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/account_controller.ex:61 +#, elixir-format +msgid "Can't get favorites" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:438 +#, elixir-format +msgid "Can't like object" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:563 +#, elixir-format +msgid "Cannot post an empty status without attachments" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:511 +#, elixir-format +msgid "Comment must be up to %{max_size} characters" +msgstr "" + +#: lib/pleroma/config/config_db.ex:191 +#, elixir-format +msgid "Config with params %{params} not found" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:181 +#: lib/pleroma/web/common_api/common_api.ex:185 +#, elixir-format +msgid "Could not delete" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:231 +#, elixir-format +msgid "Could not favorite" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:453 +#, elixir-format +msgid "Could not pin" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:278 +#, elixir-format +msgid "Could not unfavorite" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:463 +#, elixir-format +msgid "Could not unpin" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:216 +#, elixir-format +msgid "Could not unrepeat" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:512 +#: lib/pleroma/web/common_api/common_api.ex:521 +#, elixir-format +msgid "Could not update state" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:207 +#, elixir-format +msgid "Error." +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:106 +#, elixir-format +msgid "Invalid CAPTCHA" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:116 +#: lib/pleroma/web/oauth/oauth_controller.ex:568 +#, elixir-format +msgid "Invalid credentials" +msgstr "" + +#: lib/pleroma/plugs/ensure_authenticated_plug.ex:38 +#, elixir-format +msgid "Invalid credentials." +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:355 +#, elixir-format +msgid "Invalid indices" +msgstr "" + +#: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:29 +#, elixir-format +msgid "Invalid parameters" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:414 +#, elixir-format +msgid "Invalid password." +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:220 +#, elixir-format +msgid "Invalid request" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:109 +#, elixir-format +msgid "Kocaptcha service unavailable" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:112 +#, elixir-format +msgid "Missing parameters" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:547 +#, elixir-format +msgid "No such conversation" +msgstr "" + +#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:388 +#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:414 lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:456 +#, elixir-format +msgid "No such permission_group" +msgstr "" + +#: lib/pleroma/plugs/uploaded_media.ex:84 +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:486 lib/pleroma/web/admin_api/controllers/fallback_controller.ex:11 +#: lib/pleroma/web/feed/user_controller.ex:71 lib/pleroma/web/ostatus/ostatus_controller.ex:143 +#, elixir-format +msgid "Not found" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:331 +#, elixir-format +msgid "Poll's author can't vote" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:20 +#: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:37 lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:49 +#: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:50 lib/pleroma/web/mastodon_api/controllers/status_controller.ex:306 +#: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:71 +#, elixir-format +msgid "Record not found" +msgstr "" + +#: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:35 +#: lib/pleroma/web/feed/user_controller.ex:77 lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:36 +#: lib/pleroma/web/ostatus/ostatus_controller.ex:149 +#, elixir-format +msgid "Something went wrong" +msgstr "" + +#: lib/pleroma/web/common_api/activity_draft.ex:107 +#, elixir-format +msgid "The message visibility must be direct" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:573 +#, elixir-format +msgid "The status is over the character limit" +msgstr "" + +#: lib/pleroma/plugs/ensure_public_or_authenticated_plug.ex:31 +#, elixir-format +msgid "This resource requires authentication." +msgstr "" + +#: lib/pleroma/plugs/rate_limiter/rate_limiter.ex:206 +#, elixir-format +msgid "Throttled" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:356 +#, elixir-format +msgid "Too many choices" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:443 +#, elixir-format +msgid "Unhandled activity type" +msgstr "" + +#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:485 +#, elixir-format +msgid "You can't revoke your own admin status." +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:221 +#: lib/pleroma/web/oauth/oauth_controller.ex:308 +#, elixir-format +msgid "Your account is currently disabled" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:183 +#: lib/pleroma/web/oauth/oauth_controller.ex:331 +#, elixir-format +msgid "Your login is missing a confirmed e-mail address" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:390 +#, elixir-format +msgid "can't read inbox of %{nickname} as %{as_nickname}" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:473 +#, elixir-format +msgid "can't update outbox of %{nickname} as %{as_nickname}" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:471 +#, elixir-format +msgid "conversation is already muted" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:314 +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:492 +#, elixir-format +msgid "error" +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:32 +#, elixir-format +msgid "mascots can only be images" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:62 +#, elixir-format +msgid "not found" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:394 +#, elixir-format +msgid "Bad OAuth request." +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:115 +#, elixir-format +msgid "CAPTCHA already used" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:112 +#, elixir-format +msgid "CAPTCHA expired" +msgstr "" + +#: lib/pleroma/plugs/uploaded_media.ex:57 +#, elixir-format +msgid "Failed" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:410 +#, elixir-format +msgid "Failed to authenticate: %{message}." +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:441 +#, elixir-format +msgid "Failed to set up user account." +msgstr "" + +#: lib/pleroma/plugs/oauth_scopes_plug.ex:38 +#, elixir-format +msgid "Insufficient permissions: %{permissions}." +msgstr "" + +#: lib/pleroma/plugs/uploaded_media.ex:104 +#, elixir-format +msgid "Internal Error" +msgstr "" + +#: lib/pleroma/web/oauth/fallback_controller.ex:22 +#: lib/pleroma/web/oauth/fallback_controller.ex:29 +#, elixir-format +msgid "Invalid Username/Password" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:118 +#, elixir-format +msgid "Invalid answer data" +msgstr "" + +#: lib/pleroma/web/nodeinfo/nodeinfo_controller.ex:33 +#, elixir-format +msgid "Nodeinfo schema version not handled" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:172 +#, elixir-format +msgid "This action is outside the authorized scopes" +msgstr "" + +#: lib/pleroma/web/oauth/fallback_controller.ex:14 +#, elixir-format +msgid "Unknown error, please check the details and try again." +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:119 +#: lib/pleroma/web/oauth/oauth_controller.ex:158 +#, elixir-format +msgid "Unlisted redirect_uri." +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:390 +#, elixir-format +msgid "Unsupported OAuth provider: %{provider}." +msgstr "" + +#: lib/pleroma/uploaders/uploader.ex:72 +#, elixir-format +msgid "Uploader callback timeout" +msgstr "" + +#: lib/pleroma/web/uploader_controller.ex:23 +#, elixir-format +msgid "bad request" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:103 +#, elixir-format +msgid "CAPTCHA Error" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:290 +#, elixir-format +msgid "Could not add reaction emoji" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:301 +#, elixir-format +msgid "Could not remove reaction emoji" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:129 +#, elixir-format +msgid "Invalid CAPTCHA (Missing parameter: %{name})" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/list_controller.ex:92 +#, elixir-format +msgid "List not found" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:123 +#, elixir-format +msgid "Missing parameter: %{name}" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:210 +#: lib/pleroma/web/oauth/oauth_controller.ex:321 +#, elixir-format +msgid "Password reset is required" +msgstr "" + +#: lib/pleroma/tests/auth_test_controller.ex:9 +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:6 lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:6 +#: lib/pleroma/web/admin_api/controllers/config_controller.ex:6 lib/pleroma/web/admin_api/controllers/fallback_controller.ex:6 +#: lib/pleroma/web/admin_api/controllers/invite_controller.ex:6 lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex:6 +#: lib/pleroma/web/admin_api/controllers/oauth_app_controller.ex:6 lib/pleroma/web/admin_api/controllers/relay_controller.ex:6 +#: lib/pleroma/web/admin_api/controllers/report_controller.ex:6 lib/pleroma/web/admin_api/controllers/status_controller.ex:6 +#: lib/pleroma/web/controller_helper.ex:6 lib/pleroma/web/embed_controller.ex:6 +#: lib/pleroma/web/fallback_redirect_controller.ex:6 lib/pleroma/web/feed/tag_controller.ex:6 +#: lib/pleroma/web/feed/user_controller.ex:6 lib/pleroma/web/mailer/subscription_controller.ex:2 +#: lib/pleroma/web/masto_fe_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/account_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/app_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/auth_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/conversation_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/custom_emoji_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/filter_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/follow_request_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/instance_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/list_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/marker_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex:14 +#: lib/pleroma/web/mastodon_api/controllers/media_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/notification_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/report_controller.ex:8 +#: lib/pleroma/web/mastodon_api/controllers/scheduled_activity_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/search_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/status_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:7 +#: lib/pleroma/web/mastodon_api/controllers/suggestion_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:6 +#: lib/pleroma/web/media_proxy/media_proxy_controller.ex:6 lib/pleroma/web/mongooseim/mongoose_im_controller.ex:6 +#: lib/pleroma/web/nodeinfo/nodeinfo_controller.ex:6 lib/pleroma/web/oauth/fallback_controller.ex:6 +#: lib/pleroma/web/oauth/mfa_controller.ex:10 lib/pleroma/web/oauth/oauth_controller.ex:6 +#: lib/pleroma/web/ostatus/ostatus_controller.ex:6 lib/pleroma/web/pleroma_api/controllers/account_controller.ex:6 +#: lib/pleroma/web/pleroma_api/controllers/chat_controller.ex:5 lib/pleroma/web/pleroma_api/controllers/conversation_controller.ex:6 +#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:2 lib/pleroma/web/pleroma_api/controllers/emoji_reaction_controller.ex:6 +#: lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:6 lib/pleroma/web/pleroma_api/controllers/notification_controller.ex:6 +#: lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex:6 +#: lib/pleroma/web/pleroma_api/controllers/two_factor_authentication_controller.ex:7 lib/pleroma/web/static_fe/static_fe_controller.ex:6 +#: lib/pleroma/web/twitter_api/controllers/password_controller.ex:10 lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex:6 +#: lib/pleroma/web/twitter_api/controllers/util_controller.ex:6 lib/pleroma/web/twitter_api/twitter_api_controller.ex:6 +#: lib/pleroma/web/uploader_controller.ex:6 lib/pleroma/web/web_finger/web_finger_controller.ex:6 +#, elixir-format +msgid "Security violation: OAuth scopes check was neither handled nor explicitly skipped." +msgstr "" + +#: lib/pleroma/plugs/ensure_authenticated_plug.ex:28 +#, elixir-format +msgid "Two-factor authentication enabled, you must use a access token." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:210 +#, elixir-format +msgid "Unexpected error occurred while adding file to pack." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:138 +#, elixir-format +msgid "Unexpected error occurred while creating pack." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:278 +#, elixir-format +msgid "Unexpected error occurred while removing file from pack." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:250 +#, elixir-format +msgid "Unexpected error occurred while updating file in pack." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:179 +#, elixir-format +msgid "Unexpected error occurred while updating pack metadata." +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:61 +#, elixir-format +msgid "Web push subscription is disabled on this Pleroma instance" +msgstr "" + +#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:451 +#, elixir-format +msgid "You can't revoke your own admin/moderator status." +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:126 +#, elixir-format +msgid "authorization required for timeline view" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:24 +#, elixir-format +msgid "Access denied" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:282 +#, elixir-format +msgid "This API requires an authenticated user" +msgstr "" + +#: lib/pleroma/plugs/user_is_admin_plug.ex:21 +#, elixir-format +msgid "User is not an admin." +msgstr "" From f3c62b246d6d0b2aab5e155e625118bd2a3d5e8a Mon Sep 17 00:00:00 2001 From: Kana Date: Sun, 20 Sep 2020 13:19:21 +0000 Subject: [PATCH 274/460] Translated using Weblate (Chinese (Simplified)) Currently translated at 24.5% (26 of 106 strings) Translation: Pleroma/Pleroma backend Translate-URL: https://translate.pleroma.social/projects/pleroma/pleroma/zh_Hans/ --- priv/gettext/zh_Hans/LC_MESSAGES/errors.po | 62 +++++++++++----------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/priv/gettext/zh_Hans/LC_MESSAGES/errors.po b/priv/gettext/zh_Hans/LC_MESSAGES/errors.po index 8383badc3..4f029d558 100644 --- a/priv/gettext/zh_Hans/LC_MESSAGES/errors.po +++ b/priv/gettext/zh_Hans/LC_MESSAGES/errors.po @@ -3,14 +3,16 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-09-20 13:18+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"PO-Revision-Date: 2020-09-20 14:48+0000\n" +"Last-Translator: Kana \n" +"Language-Team: Chinese (Simplified) \n" "Language: zh_Hans\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 2.5.1\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.0.4\n" ## This file is a PO Template file. ## @@ -23,27 +25,27 @@ msgstr "" ## effect: edit them in PO (`.po`) files instead. ## From Ecto.Changeset.cast/4 msgid "can't be blank" -msgstr "" +msgstr "不能为空" ## From Ecto.Changeset.unique_constraint/3 msgid "has already been taken" -msgstr "" +msgstr "已被占用" ## From Ecto.Changeset.put_change/3 msgid "is invalid" -msgstr "" +msgstr "不合法" ## From Ecto.Changeset.validate_format/3 msgid "has invalid format" -msgstr "" +msgstr "的格式不合法" ## From Ecto.Changeset.validate_subset/3 msgid "has an invalid entry" -msgstr "" +msgstr "中存在不合法的项目" ## From Ecto.Changeset.validate_exclusion/3 msgid "is reserved" -msgstr "" +msgstr "是被保留的" ## From Ecto.Changeset.validate_confirmation/3 msgid "does not match confirmation" @@ -51,87 +53,87 @@ msgstr "" ## From Ecto.Changeset.no_assoc_constraint/3 msgid "is still associated with this entry" -msgstr "" +msgstr "仍与该项目相关联" msgid "are still associated with this entry" -msgstr "" +msgstr "仍与该项目相关联" ## From Ecto.Changeset.validate_length/3 msgid "should be %{count} character(s)" msgid_plural "should be %{count} character(s)" -msgstr[0] "" +msgstr[0] "应为 %{count} 个字符" msgid "should have %{count} item(s)" msgid_plural "should have %{count} item(s)" -msgstr[0] "" +msgstr[0] "应有 %{item} 项" msgid "should be at least %{count} character(s)" msgid_plural "should be at least %{count} character(s)" -msgstr[0] "" +msgstr[0] "应至少有 %{count} 个字符" msgid "should have at least %{count} item(s)" msgid_plural "should have at least %{count} item(s)" -msgstr[0] "" +msgstr[0] "应至少有 %{count} 项" msgid "should be at most %{count} character(s)" msgid_plural "should be at most %{count} character(s)" -msgstr[0] "" +msgstr[0] "应至多有 %{count} 个字符" msgid "should have at most %{count} item(s)" msgid_plural "should have at most %{count} item(s)" -msgstr[0] "" +msgstr[0] "应至多有 %{count} 项" ## From Ecto.Changeset.validate_number/3 msgid "must be less than %{number}" -msgstr "" +msgstr "必须小于 %{number}" msgid "must be greater than %{number}" -msgstr "" +msgstr "必须大于 %{number}" msgid "must be less than or equal to %{number}" -msgstr "" +msgstr "必须小于等于 %{number}" msgid "must be greater than or equal to %{number}" -msgstr "" +msgstr "必须大于等于 %{number}" msgid "must be equal to %{number}" -msgstr "" +msgstr "必须等于 %{number}" #: lib/pleroma/web/common_api/common_api.ex:505 #, elixir-format msgid "Account not found" -msgstr "" +msgstr "未找到账号" #: lib/pleroma/web/common_api/common_api.ex:339 #, elixir-format msgid "Already voted" -msgstr "" +msgstr "已经进行了投票" #: lib/pleroma/web/oauth/oauth_controller.ex:359 #, elixir-format msgid "Bad request" -msgstr "" +msgstr "不正确的请求" #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:426 #, elixir-format msgid "Can't delete object" -msgstr "" +msgstr "不能删除对象" #: lib/pleroma/web/controller_helper.ex:105 #: lib/pleroma/web/controller_helper.ex:111 #, elixir-format msgid "Can't display this activity" -msgstr "" +msgstr "不能显示该活动" #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:285 #, elixir-format msgid "Can't find user" -msgstr "" +msgstr "找不到用户" #: lib/pleroma/web/pleroma_api/controllers/account_controller.ex:61 #, elixir-format msgid "Can't get favorites" -msgstr "" +msgstr "不能获取收藏" #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:438 #, elixir-format From f2f0a0260f00e316f62d42e766787b20cc92601a Mon Sep 17 00:00:00 2001 From: lain Date: Mon, 21 Sep 2020 16:08:38 +0200 Subject: [PATCH 275/460] ActivityPub: Don't block-filter your own posts We are filtering out replies to people you block, but that should not include your own posts. --- lib/pleroma/web/activity_pub/activity_pub.ex | 9 ++++++++- .../controllers/timeline_controller_test.exs | 12 ++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 06e8e1a7c..aacd58d03 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -841,7 +841,14 @@ defp restrict_blocked(query, %{blocking_user: %User{} = user} = opts) do from( [activity, object: o] in query, where: fragment("not (? = ANY(?))", activity.actor, ^blocked_ap_ids), - where: fragment("not (? && ?)", activity.recipients, ^blocked_ap_ids), + where: + fragment( + "((not (? && ?)) or ? = ?)", + activity.recipients, + ^blocked_ap_ids, + activity.actor, + ^user.ap_id + ), where: fragment( "recipients_contain_blocked_domains(?, ?) = false", diff --git a/test/web/mastodon_api/controllers/timeline_controller_test.exs b/test/web/mastodon_api/controllers/timeline_controller_test.exs index 517cabcff..c6e0268fd 100644 --- a/test/web/mastodon_api/controllers/timeline_controller_test.exs +++ b/test/web/mastodon_api/controllers/timeline_controller_test.exs @@ -114,8 +114,16 @@ test "doesn't return replies if follower is posting with blocked user" do {:ok, _reply_from_friend} = CommonAPI.post(friend, %{status: "status", in_reply_to_status_id: reply_from_blockee}) - res_conn = get(conn, "/api/v1/timelines/public") - [%{"id" => ^activity_id}] = json_response_and_validate_schema(res_conn, 200) + # Still shows replies from yourself + {:ok, %{id: reply_from_me}} = + CommonAPI.post(blocker, %{status: "status", in_reply_to_status_id: reply_from_blockee}) + + response = + get(conn, "/api/v1/timelines/public") + |> json_response_and_validate_schema(200) + + assert length(response) == 2 + [%{"id" => ^reply_from_me}, %{"id" => ^activity_id}] = response end test "doesn't return replies if follow is posting with users from blocked domain" do From 8afdbcdb1c012c37cde3a3d2bea147f95c5111b0 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 21 Sep 2020 10:13:41 -0500 Subject: [PATCH 276/460] Force HTTP for fedsockets --- lib/pleroma/web/fed_sockets/outgoing_handler.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/fed_sockets/outgoing_handler.ex b/lib/pleroma/web/fed_sockets/outgoing_handler.ex index 3ff4a85e3..e235a7c43 100644 --- a/lib/pleroma/web/fed_sockets/outgoing_handler.ex +++ b/lib/pleroma/web/fed_sockets/outgoing_handler.ex @@ -86,7 +86,7 @@ def initiate_connection(uri) do %{host: host, port: port, path: path} = URI.parse(ws_uri) - with {:ok, conn_pid} <- :gun.open(to_charlist(host), port), + with {:ok, conn_pid} <- :gun.open(to_charlist(host), port, %{protocols: [:http]}), {:ok, _} <- :gun.await_up(conn_pid), reference <- :gun.get(conn_pid, to_charlist(path), [ From 8b6ac45f3cb5a3c1ac16e766a6f503ee491bc310 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 21 Sep 2020 13:28:02 -0500 Subject: [PATCH 277/460] Allow emails to be sent again, #2101 #2172 https://github.com/swoosh/swoosh/issues/478#issuecomment-642393707 --- lib/pleroma/emails/mailer.ex | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/pleroma/emails/mailer.ex b/lib/pleroma/emails/mailer.ex index 8b1bdef75..5108c71c8 100644 --- a/lib/pleroma/emails/mailer.ex +++ b/lib/pleroma/emails/mailer.ex @@ -35,6 +35,11 @@ def perform(:deliver_async, email, config), do: deliver(email, config) def deliver(email, config \\ []) def deliver(email, config) do + # temporary hackney fix until hackney max_connections bug is fixed + # https://git.pleroma.social/pleroma/pleroma/-/issues/2101 + email = + Swoosh.Email.put_private(email, :hackney_options, ssl_options: [versions: [:"tlsv1.2"]]) + case enabled?() do true -> Swoosh.Mailer.deliver(email, parse_config(config)) false -> {:error, :deliveries_disabled} From 23d5d7cf593550669812527ab12501b2a2adc6eb Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 21 Sep 2020 13:56:40 -0500 Subject: [PATCH 278/460] Fix #2172 HTTP error on password reset --- lib/pleroma/web/mastodon_api/controllers/auth_controller.ex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex b/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex index 9f09550e1..57c0be5fe 100644 --- a/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex @@ -5,6 +5,8 @@ defmodule Pleroma.Web.MastodonAPI.AuthController do use Pleroma.Web, :controller + import Pleroma.Web.ControllerHelper, only: [json_response: 3] + alias Pleroma.User alias Pleroma.Web.OAuth.App alias Pleroma.Web.OAuth.Authorization @@ -61,9 +63,7 @@ def password_reset(conn, params) do TwitterAPI.password_reset(nickname_or_email) - conn - |> put_status(:no_content) - |> json("") + json_response(conn, :no_content, "") end defp local_mastodon_root_path(conn) do From 0b728ccc4411677f1117f8e01d6f49aa4476c7ff Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 21 Sep 2020 15:05:46 -0500 Subject: [PATCH 279/460] Pass hackney tls config into email tests, #2101 --- test/user_test.exs | 7 ++++++- .../admin_api/controllers/admin_api_controller_test.exs | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/test/user_test.exs b/test/user_test.exs index 301d8f05e..9cabb501c 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -509,7 +509,12 @@ test "it sends a confirm email" do cng = User.register_changeset(%User{}, @full_user_data) {:ok, registered_user} = User.register(cng) ObanHelpers.perform_all() - assert_email_sent(Pleroma.Emails.UserEmail.account_confirmation_email(registered_user)) + + Pleroma.Emails.UserEmail.account_confirmation_email(registered_user) + # temporary hackney fix until hackney max_connections bug is fixed + # https://git.pleroma.social/pleroma/pleroma/-/issues/2101 + |> Swoosh.Email.put_private(:hackney_options, ssl_options: [versions: [:"tlsv1.2"]]) + |> assert_email_sent() end test "it requires an email, name, nickname and password, bio is optional when account_activation_required is enabled" do diff --git a/test/web/admin_api/controllers/admin_api_controller_test.exs b/test/web/admin_api/controllers/admin_api_controller_test.exs index dbf478edf..f1e9b8938 100644 --- a/test/web/admin_api/controllers/admin_api_controller_test.exs +++ b/test/web/admin_api/controllers/admin_api_controller_test.exs @@ -1927,7 +1927,12 @@ test "it resend emails for two users", %{conn: conn, admin: admin} do }" ObanHelpers.perform_all() - assert_email_sent(Pleroma.Emails.UserEmail.account_confirmation_email(first_user)) + + Pleroma.Emails.UserEmail.account_confirmation_email(first_user) + # temporary hackney fix until hackney max_connections bug is fixed + # https://git.pleroma.social/pleroma/pleroma/-/issues/2101 + |> Swoosh.Email.put_private(:hackney_options, ssl_options: [versions: [:"tlsv1.2"]]) + |> assert_email_sent() end end From 7b2bf381e9513450ac26826b11dfbb19ac75802f Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 21 Sep 2020 16:02:57 -0500 Subject: [PATCH 280/460] Chase the Autolinker rename from !2677 --- config/description.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/description.exs b/config/description.exs index 097e98633..ac3dfbb2b 100644 --- a/config/description.exs +++ b/config/description.exs @@ -2445,7 +2445,7 @@ %{ group: :pleroma, key: Pleroma.Formatter, - label: "Auto Linker", + label: "Linkify", type: :group, description: "Configuration for Pleroma's link formatter which parses mentions, hashtags, and URLs.", From bf181ca96850f3e5baaf8f3dcd6e11b926fcdeeb Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 21 Sep 2020 16:03:22 -0500 Subject: [PATCH 281/460] Fix MastoAPI.AuthControllerTest, json_response(:no_content) --> empty_json_response() --- .../controllers/auth_controller_test.exs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/test/web/mastodon_api/controllers/auth_controller_test.exs b/test/web/mastodon_api/controllers/auth_controller_test.exs index 4fa95fce1..bf2438fe2 100644 --- a/test/web/mastodon_api/controllers/auth_controller_test.exs +++ b/test/web/mastodon_api/controllers/auth_controller_test.exs @@ -61,7 +61,7 @@ test "redirects to the getting-started page when referer is not present", %{conn end test "it returns 204", %{conn: conn} do - assert json_response(conn, :no_content) + assert empty_json_response(conn) end test "it creates a PasswordResetToken record for user", %{user: user} do @@ -91,7 +91,7 @@ test "it returns 204", %{conn: conn} do assert conn |> post("/auth/password?nickname=#{user.nickname}") - |> json_response(:no_content) + |> empty_json_response() ObanHelpers.perform_all() token_record = Repo.get_by(Pleroma.PasswordResetToken, user_id: user.id) @@ -112,7 +112,7 @@ test "it doesn't fail when a user has no email", %{conn: conn} do assert conn |> post("/auth/password?nickname=#{user.nickname}") - |> json_response(:no_content) + |> empty_json_response() end end @@ -125,24 +125,21 @@ test "it doesn't fail when a user has no email", %{conn: conn} do test "it returns 204 when user is not found", %{conn: conn, user: user} do conn = post(conn, "/auth/password?email=nonexisting_#{user.email}") - assert conn - |> json_response(:no_content) + assert empty_json_response(conn) end test "it returns 204 when user is not local", %{conn: conn, user: user} do {:ok, user} = Repo.update(Ecto.Changeset.change(user, local: false)) conn = post(conn, "/auth/password?email=#{user.email}") - assert conn - |> json_response(:no_content) + assert empty_json_response(conn) end test "it returns 204 when user is deactivated", %{conn: conn, user: user} do {:ok, user} = Repo.update(Ecto.Changeset.change(user, deactivated: true, local: true)) conn = post(conn, "/auth/password?email=#{user.email}") - assert conn - |> json_response(:no_content) + assert empty_json_response(conn) end end From 75f6e5e8b7e0408241a633daba7fde8b51dde8ca Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 21 Sep 2020 16:10:31 -0500 Subject: [PATCH 282/460] Add FedSockets config --- installation/pleroma.nginx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/installation/pleroma.nginx b/installation/pleroma.nginx index d301ca615..a3b3394f1 100644 --- a/installation/pleroma.nginx +++ b/installation/pleroma.nginx @@ -63,6 +63,7 @@ server { # the nginx default is 1m, not enough for large media uploads client_max_body_size 16m; + ignore_invalid_headers off; location / { proxy_http_version 1.1; @@ -91,4 +92,17 @@ server { chunked_transfer_encoding on; proxy_pass http://127.0.0.1:4000; } + + location /api/fedsocket/v1 { + proxy_http_version 1.1; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Host $host; + + # The Important Websocket Bits! + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + proxy_request_buffering off; + proxy_pass http://127.0.0.1:4000/api/fedsocket/v1; + } } From 2b553b8f8e7cf01d8530b905c48b97b815098cd9 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 21 Sep 2020 16:11:01 -0500 Subject: [PATCH 283/460] Remove duplicate setting --- installation/pleroma.nginx | 2 -- 1 file changed, 2 deletions(-) diff --git a/installation/pleroma.nginx b/installation/pleroma.nginx index a3b3394f1..ce74f46e1 100644 --- a/installation/pleroma.nginx +++ b/installation/pleroma.nginx @@ -75,8 +75,6 @@ server { # this is explicitly IPv4 since Pleroma.Web.Endpoint binds on IPv4 only # and `localhost.` resolves to [::0] on some systems: see issue #930 proxy_pass http://127.0.0.1:4000; - - client_max_body_size 16m; } location ~ ^/(media|proxy) { From ade7fede7134d0e05c91ef48d52e48e64fd6dd98 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 21 Sep 2020 16:13:45 -0500 Subject: [PATCH 284/460] Most proxy settings can be global --- installation/pleroma.nginx | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/installation/pleroma.nginx b/installation/pleroma.nginx index ce74f46e1..5517e3fc3 100644 --- a/installation/pleroma.nginx +++ b/installation/pleroma.nginx @@ -65,13 +65,13 @@ server { client_max_body_size 16m; ignore_invalid_headers off; - location / { - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $http_host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header Host $http_host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + location / { # this is explicitly IPv4 since Pleroma.Web.Endpoint binds on IPv4 only # and `localhost.` resolves to [::0] on some systems: see issue #930 proxy_pass http://127.0.0.1:4000; @@ -82,7 +82,6 @@ server { slice 1m; proxy_cache_key $host$uri$is_args$args$slice_range; proxy_set_header Range $slice_range; - proxy_http_version 1.1; proxy_cache_valid 200 206 301 304 1h; proxy_cache_lock on; proxy_ignore_client_abort on; @@ -92,14 +91,6 @@ server { } location /api/fedsocket/v1 { - proxy_http_version 1.1; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - - # The Important Websocket Bits! - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "Upgrade"; proxy_request_buffering off; proxy_pass http://127.0.0.1:4000/api/fedsocket/v1; } From 8906f30ba16bdd91ac51ab9d4568c19070c270d5 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 21 Sep 2020 16:19:08 -0500 Subject: [PATCH 285/460] Use an upstream for reverse proxy so future modifications are simplified --- installation/pleroma.nginx | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/installation/pleroma.nginx b/installation/pleroma.nginx index 5517e3fc3..d613befd2 100644 --- a/installation/pleroma.nginx +++ b/installation/pleroma.nginx @@ -9,6 +9,12 @@ proxy_cache_path /tmp/pleroma-media-cache levels=1:2 keys_zone=pleroma_media_cache:10m max_size=10g inactive=720m use_temp_path=off; +# this is explicitly IPv4 since Pleroma.Web.Endpoint binds on IPv4 only +# and `localhost.` resolves to [::0] on some systems: see issue #930 +upstream phoenix { + server 127.0.0.1:4000 max_fails=5 fail_timeout=60s; +} + server { server_name example.tld; @@ -72,9 +78,7 @@ server { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / { - # this is explicitly IPv4 since Pleroma.Web.Endpoint binds on IPv4 only - # and `localhost.` resolves to [::0] on some systems: see issue #930 - proxy_pass http://127.0.0.1:4000; + proxy_pass http://phoenix; } location ~ ^/(media|proxy) { @@ -87,11 +91,11 @@ server { proxy_ignore_client_abort on; proxy_buffering on; chunked_transfer_encoding on; - proxy_pass http://127.0.0.1:4000; + proxy_pass http://phoenix; } location /api/fedsocket/v1 { proxy_request_buffering off; - proxy_pass http://127.0.0.1:4000/api/fedsocket/v1; + proxy_pass http://phoenix/api/fedsocket/v1; } } From e5927e92a641a799f9b4e89466374be3c76c4ef2 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 21 Sep 2020 17:08:49 -0500 Subject: [PATCH 286/460] Fix deprecation warning for welcome message --- lib/pleroma/config/deprecation_warnings.ex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/config/deprecation_warnings.ex b/lib/pleroma/config/deprecation_warnings.ex index 98c4dc9c8..51ddb2889 100644 --- a/lib/pleroma/config/deprecation_warnings.ex +++ b/lib/pleroma/config/deprecation_warnings.ex @@ -83,9 +83,9 @@ def check_welcome_message_config do if use_old_config do Logger.error(""" !!!DEPRECATION WARNING!!! - Your config is using the old namespace for Welcome messages configuration. You need to change to the new namespace: - \n* `config :pleroma, :instance, welcome_user_nickname` is now `config :pleroma, :welcome, :direct_message, :sender_nickname` - \n* `config :pleroma, :instance, welcome_message` is now `config :pleroma, :welcome, :direct_message, :message` + Your config is using the old namespace for Welcome messages configuration. You need to convert to the new namespace. e.g., + \n* `config :pleroma, :instance, welcome_user_nickname` and `config :pleroma, :instance, welcome_message` are now equal to: + \n* `config :pleroma, :welcome, direct_message: [enabled: true, sender_nickname: "NICKNAME", message: "Your welcome message"]`" """) :error From ee3052a2d8fda37e27f31c8d824ce7ac174b993c Mon Sep 17 00:00:00 2001 From: lain Date: Tue, 22 Sep 2020 14:20:19 +0200 Subject: [PATCH 287/460] ActivityPub: Return Announces when filtering by `following`. --- lib/pleroma/web/activity_pub/activity_pub.ex | 12 ++- test/web/activity_pub/activity_pub_test.exs | 80 ++++++++++++++++++++ 2 files changed, 91 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index aacd58d03..eb44cffec 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -790,7 +790,17 @@ defp restrict_replies(query, %{ [activity, object] in query, where: fragment( - "?->>'inReplyTo' is null OR ? && array_remove(?, ?) OR ? = ?", + """ + ?->>'type' != 'Create' -- This isn't a Create + OR ?->>'inReplyTo' is null -- this isn't a reply + OR ? && array_remove(?, ?) -- The recipient is us or one of our friends, + -- unless they are the author (because authors + -- are also part of the recipients). This leads + -- to a bug that self-replies by friends won't + -- show up. + OR ? = ? -- The actor is us + """, + activity.data, object.data, ^[user.ap_id | User.get_cached_user_friends_ap_ids(user)], activity.recipients, diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 7bdad3810..804305a13 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -2177,4 +2177,84 @@ test "does nothing with a clashing nickname and the same ap id" do assert user.nickname == orig_user.nickname end end + + describe "reply filtering" do + test "`following` still contains announcements by friends" do + user = insert(:user) + followed = insert(:user) + not_followed = insert(:user) + + User.follow(user, followed) + + {:ok, followed_post} = CommonAPI.post(followed, %{status: "Hello"}) + + {:ok, not_followed_to_followed} = + CommonAPI.post(not_followed, %{ + status: "Also hello", + in_reply_to_status_id: followed_post.id + }) + + {:ok, retoot} = CommonAPI.repeat(not_followed_to_followed.id, followed) + + params = + %{} + |> Map.put(:type, ["Create", "Announce"]) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:reply_filtering_user, user) + |> Map.put(:reply_visibility, "following") + |> Map.put(:announce_filtering_user, user) + |> Map.put(:user, user) + + activities = + [user.ap_id | User.following(user)] + |> ActivityPub.fetch_activities(params) + + followed_post_id = followed_post.id + retoot_id = retoot.id + + assert [%{id: ^followed_post_id}, %{id: ^retoot_id}] = activities + + assert length(activities) == 2 + end + + # This test is skipped because, while this is the desired behavior, + # there seems to be no good way to achieve it with the method that + # we currently use for detecting to who a reply is directed. + # This is a TODO and should be fixed by a later rewrite of the code + # in question. + @tag skip: true + test "`following` still contains self-replies by friends" do + user = insert(:user) + followed = insert(:user) + not_followed = insert(:user) + + User.follow(user, followed) + + {:ok, followed_post} = CommonAPI.post(followed, %{status: "Hello"}) + {:ok, not_followed_post} = CommonAPI.post(not_followed, %{status: "Also hello"}) + + {:ok, _followed_to_not_followed} = + CommonAPI.post(followed, %{status: "sup", in_reply_to_status_id: not_followed_post.id}) + + {:ok, _followed_self_reply} = + CommonAPI.post(followed, %{status: "Also cofe", in_reply_to_status_id: followed_post.id}) + + params = + %{} + |> Map.put(:type, ["Create", "Announce"]) + |> Map.put(:blocking_user, user) + |> Map.put(:muting_user, user) + |> Map.put(:reply_filtering_user, user) + |> Map.put(:reply_visibility, "following") + |> Map.put(:announce_filtering_user, user) + |> Map.put(:user, user) + + activities = + [user.ap_id | User.following(user)] + |> ActivityPub.fetch_activities(params) + + assert length(activities) == 2 + end + end end From 3174804f3cc2b2c4027331ed2f61d53564692b21 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 22 Sep 2020 07:26:31 -0500 Subject: [PATCH 288/460] Add FreeBSD and alpha sort --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6ca3118fb..7a05b9e48 100644 --- a/README.md +++ b/README.md @@ -18,15 +18,16 @@ If you are running Linux (glibc or musl) on x86/arm, the recommended way to inst ### From Source If your platform is not supported, or you just want to be able to edit the source code easily, you may install Pleroma from source. -- [Debian-based](https://docs-develop.pleroma.social/backend/installation/debian_based_en/) -- [Debian-based (jp)](https://docs-develop.pleroma.social/backend/installation/debian_based_jp/) - [Alpine Linux](https://docs-develop.pleroma.social/backend/installation/alpine_linux_en/) - [Arch Linux](https://docs-develop.pleroma.social/backend/installation/arch_linux_en/) +- [CentOS 7](https://docs-develop.pleroma.social/backend/installation/centos7_en/) +- [Debian-based](https://docs-develop.pleroma.social/backend/installation/debian_based_en/) +- [Debian-based (jp)](https://docs-develop.pleroma.social/backend/installation/debian_based_jp/) +- [FreeBSD](https://docs-develop.pleroma.social/backend/installation/freebsd_en/) - [Gentoo Linux](https://docs-develop.pleroma.social/backend/installation/gentoo_en/) - [NetBSD](https://docs-develop.pleroma.social/backend/installation/netbsd_en/) - [OpenBSD](https://docs-develop.pleroma.social/backend/installation/openbsd_en/) - [OpenBSD (fi)](https://docs-develop.pleroma.social/backend/installation/openbsd_fi/) -- [CentOS 7](https://docs-develop.pleroma.social/backend/installation/centos7_en/) ### OS/Distro packages Currently Pleroma is not packaged by any OS/Distros, but if you want to package it for one, we can guide you through the process on our [community channels](#community-channels). If you want to change default options in your Pleroma package, please **discuss it with us first**. From 0e0ece251af9f85d80968df5b43fe49b85f35434 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Tue, 22 Sep 2020 16:55:40 +0400 Subject: [PATCH 289/460] Filter out internal users by default --- lib/pleroma/user/query.ex | 15 ++++++++++----- test/user/query_test.exs | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 test/user/query_test.exs diff --git a/lib/pleroma/user/query.ex b/lib/pleroma/user/query.ex index d618432ff..193b90d9d 100644 --- a/lib/pleroma/user/query.ex +++ b/lib/pleroma/user/query.ex @@ -47,6 +47,7 @@ defmodule Pleroma.User.Query do is_moderator: boolean(), super_users: boolean(), invisible: boolean(), + internal: boolean(), followers: User.t(), friends: User.t(), recipients_from_activity: [String.t()], @@ -80,7 +81,9 @@ defp base_query do end defp prepare_query(query, criteria) do - Enum.reduce(criteria, query, &compose_query/2) + criteria + |> Map.put_new(:internal, false) + |> Enum.reduce(query, &compose_query/2) end defp compose_query({key, value}, query) @@ -129,14 +132,12 @@ defp compose_query({:external, _}, query), do: location_query(query, false) defp compose_query({:active, _}, query) do User.restrict_deactivated(query) - |> where([u], not is_nil(u.nickname)) |> where([u], u.approval_pending == false) end defp compose_query({:legacy_active, _}, query) do query |> where([u], fragment("not (?->'deactivated' @> 'true')", u.info)) - |> where([u], not is_nil(u.nickname)) end defp compose_query({:deactivated, false}, query) do @@ -145,7 +146,6 @@ defp compose_query({:deactivated, false}, query) do defp compose_query({:deactivated, true}, query) do where(query, [u], u.deactivated == ^true) - |> where([u], not is_nil(u.nickname)) end defp compose_query({:need_approval, _}, query) do @@ -199,10 +199,15 @@ defp compose_query({:limit, limit}, query) do limit(query, ^limit) end + defp compose_query({:internal, false}, query) do + query + |> where([u], not is_nil(u.nickname)) + |> where([u], not like(u.nickname, "internal.%")) + end + defp compose_query(_unsupported_param, query), do: query defp location_query(query, local) do where(query, [u], u.local == ^local) - |> where([u], not is_nil(u.nickname)) end end diff --git a/test/user/query_test.exs b/test/user/query_test.exs new file mode 100644 index 000000000..e2f5c7d81 --- /dev/null +++ b/test/user/query_test.exs @@ -0,0 +1,37 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.User.QueryTest do + use Pleroma.DataCase, async: true + + alias Pleroma.Repo + alias Pleroma.User + alias Pleroma.User.Query + alias Pleroma.Web.ActivityPub.InternalFetchActor + + import Pleroma.Factory + + describe "internal users" do + test "it filters out internal users by default" do + %User{nickname: "internal.fetch"} = InternalFetchActor.get_actor() + + assert [_user] = User |> Repo.all() + assert [] == %{} |> Query.build() |> Repo.all() + end + + test "it filters out users without nickname by default" do + insert(:user, %{nickname: nil}) + + assert [_user] = User |> Repo.all() + assert [] == %{} |> Query.build() |> Repo.all() + end + + test "it returns internal users when enabled" do + %User{nickname: "internal.fetch"} = InternalFetchActor.get_actor() + insert(:user, %{nickname: nil}) + + assert %{internal: true} |> Query.build() |> Repo.aggregate(:count) == 2 + end + end +end From df1eb5cf7ee6d718a28fca3d3715f11ab0e263cb Mon Sep 17 00:00:00 2001 From: lain Date: Tue, 22 Sep 2020 17:17:19 +0200 Subject: [PATCH 290/460] Changelog: Add info about chat pagination fix. --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e61b1d144..e0982b83c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Removed `:managed_config` option. In practice, it was accidentally removed with 2.0.0 release when frontends were switched to a new configuration mechanism, however it was not officially removed until now. +### Fixed +- Add documented-but-missing chat pagination. ## [2.1.2] - 2020-09-17 From 2fc3b46ee7e8ee8c22d4cf0039bbe9755a0e3beb Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 22 Sep 2020 11:13:36 -0500 Subject: [PATCH 291/460] Remove deprecation warning. We were supposed to remove backwards compat for this in 2.1. --- lib/pleroma/config/deprecation_warnings.ex | 26 ---------------------- 1 file changed, 26 deletions(-) diff --git a/lib/pleroma/config/deprecation_warnings.ex b/lib/pleroma/config/deprecation_warnings.ex index 51ddb2889..091d02366 100644 --- a/lib/pleroma/config/deprecation_warnings.ex +++ b/lib/pleroma/config/deprecation_warnings.ex @@ -33,34 +33,8 @@ def check_hellthread_threshold do end end - def mrf_user_allowlist do - config = Config.get(:mrf_user_allowlist) - - if config && Enum.any?(config, fn {k, _} -> is_atom(k) end) do - rewritten = - Enum.reduce(Config.get(:mrf_user_allowlist), Map.new(), fn {k, v}, acc -> - Map.put(acc, to_string(k), v) - end) - - Config.put(:mrf_user_allowlist, rewritten) - - Logger.error(""" - !!!DEPRECATION WARNING!!! - As of Pleroma 2.0.7, the `mrf_user_allowlist` setting changed of format. - Pleroma 2.1 will remove support for the old format. Please change your configuration to match this: - - config :pleroma, :mrf_user_allowlist, #{inspect(rewritten, pretty: true)} - """) - - :error - else - :ok - end - end - def warn do with :ok <- check_hellthread_threshold(), - :ok <- mrf_user_allowlist(), :ok <- check_old_mrf_config(), :ok <- check_media_proxy_whitelist_config(), :ok <- check_welcome_message_config(), From e2dcf039d24b1606c90cea75ef11c79b7677c209 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 22 Sep 2020 11:15:40 -0500 Subject: [PATCH 292/460] Fix gun_pool_options deprecation warning message --- lib/pleroma/config/deprecation_warnings.ex | 2 +- test/config/deprecation_warnings_test.exs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/config/deprecation_warnings.ex b/lib/pleroma/config/deprecation_warnings.ex index 091d02366..4ba6eaa77 100644 --- a/lib/pleroma/config/deprecation_warnings.ex +++ b/lib/pleroma/config/deprecation_warnings.ex @@ -122,7 +122,7 @@ def check_gun_pool_options do if timeout = pool_config[:await_up_timeout] do Logger.warn(""" !!!DEPRECATION WARNING!!! - Your config is using old setting name `await_up_timeout` instead of `connect_timeout`. Setting should work for now, but you are advised to change format to scheme with port to prevent possible issues later. + Your config is using old setting `config :pleroma, :connections_pool, await_up_timeout`. Please change to `config :pleroma, :connections_pool, connect_timeout` to ensure compatibility with future releases. """) Config.put(:connections_pool, Keyword.put_new(pool_config, :connect_timeout, timeout)) diff --git a/test/config/deprecation_warnings_test.exs b/test/config/deprecation_warnings_test.exs index e22052404..7f0d2a298 100644 --- a/test/config/deprecation_warnings_test.exs +++ b/test/config/deprecation_warnings_test.exs @@ -74,7 +74,7 @@ test "await_up_timeout" do assert capture_log(fn -> DeprecationWarnings.check_gun_pool_options() end) =~ - "Your config is using old setting name `await_up_timeout` instead of `connect_timeout`" + "Your config is using old setting `config :pleroma, :connections_pool, await_up_timeout`." end test "pool timeout" do From 25bdf0d0d95bf748f10c43d569640794a8a0d4c7 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 22 Sep 2020 11:19:29 -0500 Subject: [PATCH 293/460] Add test for welcome message format --- test/config/deprecation_warnings_test.exs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/config/deprecation_warnings_test.exs b/test/config/deprecation_warnings_test.exs index 7f0d2a298..e8140f58e 100644 --- a/test/config/deprecation_warnings_test.exs +++ b/test/config/deprecation_warnings_test.exs @@ -66,6 +66,14 @@ test "check_media_proxy_whitelist_config/0" do end) =~ "Your config is using old format (only domain) for MediaProxy whitelist option" end + test "check_welcome_message_config/0" do + clear_config([:instance, :welcome_user_nickname], "LainChan") + + assert capture_log(fn -> + DeprecationWarnings.check_welcome_message_config() + end) =~ "Your config is using the old namespace for Welcome messages configuration." + end + describe "check_gun_pool_options/0" do test "await_up_timeout" do config = Config.get(:connections_pool) From 7775b1540f47f792f0afa7c49a2cf058e2f6470e Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 22 Sep 2020 11:22:15 -0500 Subject: [PATCH 294/460] Add deprecation warning test for check_hellthread_threshold/0 --- test/config/deprecation_warnings_test.exs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/config/deprecation_warnings_test.exs b/test/config/deprecation_warnings_test.exs index e8140f58e..0efc0843c 100644 --- a/test/config/deprecation_warnings_test.exs +++ b/test/config/deprecation_warnings_test.exs @@ -74,6 +74,14 @@ test "check_welcome_message_config/0" do end) =~ "Your config is using the old namespace for Welcome messages configuration." end + test "check_hellthread_threshold/0" do + clear_config([:mrf_hellthread, :threshold], 16) + + assert capture_log(fn -> + DeprecationWarnings.check_hellthread_threshold() + end) =~ "You are using the old configuration mechanism for the hellthread filter." + end + describe "check_gun_pool_options/0" do test "await_up_timeout" do config = Config.get(:connections_pool) From 88653c01c92fffb396e32edad203d18607980c04 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 22 Sep 2020 11:34:51 -0500 Subject: [PATCH 295/460] Add test for check_activity_expiration_config/0 --- test/config/deprecation_warnings_test.exs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/config/deprecation_warnings_test.exs b/test/config/deprecation_warnings_test.exs index 0efc0843c..28355d7eb 100644 --- a/test/config/deprecation_warnings_test.exs +++ b/test/config/deprecation_warnings_test.exs @@ -82,6 +82,14 @@ test "check_hellthread_threshold/0" do end) =~ "You are using the old configuration mechanism for the hellthread filter." end + test "check_activity_expiration_config/0" do + clear_config([Pleroma.ActivityExpiration, :enabled], true) + + assert capture_log(fn -> + DeprecationWarnings.check_activity_expiration_config() + end) =~ "Your config is using old namespace for activity expiration configuration." + end + describe "check_gun_pool_options/0" do test "await_up_timeout" do config = Config.get(:connections_pool) From 8e4f043ac72e4236f5690f34e3bdc7ce288005e6 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Tue, 22 Sep 2020 21:58:30 +0300 Subject: [PATCH 296/460] finland-emojis.zip -> emojis.zip --- test/emoji/pack_test.exs | 8 ++++---- test/fixtures/emojis.zip | Bin 0 -> 1446 bytes test/fixtures/finland-emojis.zip | Bin 460250 -> 0 bytes .../controllers/emoji_file_controller_test.exs | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 test/fixtures/emojis.zip delete mode 100644 test/fixtures/finland-emojis.zip diff --git a/test/emoji/pack_test.exs b/test/emoji/pack_test.exs index 3ec991f0f..70d1eaa1b 100644 --- a/test/emoji/pack_test.exs +++ b/test/emoji/pack_test.exs @@ -37,8 +37,8 @@ defmodule Pleroma.Emoji.PackTest do test "add emojies from zip file", %{pack: pack} do file = %Plug.Upload{ content_type: "application/zip", - filename: "finland-emojis.zip", - path: Path.absname("test/fixtures/finland-emojis.zip") + filename: "emojis.zip", + path: Path.absname("test/fixtures/emojis.zip") } {:ok, updated_pack} = Pack.add_file(pack, nil, nil, file) @@ -58,7 +58,7 @@ test "add emojies from zip file", %{pack: pack} do test "returns error when zip file is bad", %{pack: pack} do file = %Plug.Upload{ content_type: "application/zip", - filename: "finland-emojis.zip", + filename: "emojis.zip", path: Path.absname("test/instance_static/emoji/test_pack/blank.png") } @@ -68,7 +68,7 @@ test "returns error when zip file is bad", %{pack: pack} do test "returns pack when zip file is empty", %{pack: pack} do file = %Plug.Upload{ content_type: "application/zip", - filename: "finland-emojis.zip", + filename: "emojis.zip", path: Path.absname("test/fixtures/empty.zip") } diff --git a/test/fixtures/emojis.zip b/test/fixtures/emojis.zip new file mode 100644 index 0000000000000000000000000000000000000000..d7fc4732bff01cce84c04f8b6908434aa8bbda86 GIT binary patch literal 1446 zcmWIWW@h1H009%9lU`s3lwfBNU@$Z=Fes?d4~^hq&`C0kbau3g{K_c85CGI9!py+H z!4MPM5>Vyn`7;ElDISO=fEcPNDKV)sJ~J;qF+M53La!h%{WZ^r;^$8%JxWSQc<}X0 z0VmU?9)&X}cvM33+vhR`onf?7T<1_#IrXjXgc#2W@dnL@H%n(a@J(Odoy>9k>k}4* z*`19aCq9x(W>ff3^0hef`IHMRcwEAdjV z2Sz4QW?Z>}2N)J$;PBQFM8oq22Rv^Ccr!BDGh+`*2?iC2b_RupEsdrK12FOl7lQ&= zB_k*|X{2+;a$RF&h<@BFF!35=LwVOf5RK0!eiWPbBiRJa2Y4-bbpA8U0$5mJrflS} zaA1U`+0Y0`P=L}oJ_pL7IIsk+A6J^k=U#?bsb?_v;tF~p6#H11VD3du)A;OYV3~H4 lG&?$gc3`Gie0DIrQauQw`|Lp20yKpOSj;jo0091Cqoe=; literal 0 HcmV?d00001 diff --git a/test/fixtures/finland-emojis.zip b/test/fixtures/finland-emojis.zip deleted file mode 100644 index de7242ea11e618d74ff2fc6526f7c65611f20181..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 460250 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

From 8c6ec4c111081b34f68363ce20423e2f338fa2dd Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Sun, 20 Sep 2020 09:51:36 +0300 Subject: [PATCH 304/460] pack routes change --- docs/API/pleroma_api.md | 108 +++++++++--------- lib/pleroma/emoji/pack.ex | 4 +- lib/pleroma/web/router.ex | 16 ++- .../emoji_pack_controller_test.exs | 52 ++++----- 4 files changed, 97 insertions(+), 83 deletions(-) diff --git a/docs/API/pleroma_api.md b/docs/API/pleroma_api.md index 350849687..96fd4da73 100644 --- a/docs/API/pleroma_api.md +++ b/docs/API/pleroma_api.md @@ -378,54 +378,41 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Params: None * Response: JSON, returns a list of Mastodon Conversation entities that were marked as read (200 - healthy, 503 unhealthy). -## `GET /api/pleroma/emoji/packs/import` +## `GET /api/pleroma/emoji/pack?name=:name` -### Imports packs from filesystem +### Get pack.json for the pack * Method `GET` -* Authentication: required -* Params: None -* Response: JSON, returns a list of imported packs. - -## `GET /api/pleroma/emoji/packs/remote` - -### Make request to another instance for packs list - -* Method `GET` -* Authentication: required +* Authentication: not required * Params: - * `url`: url of the instance to get packs from -* Response: JSON with the pack list, hashmap with pack name and pack contents + * `page`: page number for files (default 1) + * `page_size`: page size for files (default 30) +* Response: JSON, pack json with `files`, `files_count` and `pack` keys with 200 status or 404 if the pack does not exist. -## `POST /api/pleroma/emoji/packs/download` +```json +{ + "files": {...}, + "files_count": 0, // emoji count in pack + "pack": {...} +} +``` -### Download pack from another instance - -* Method `POST` -* Authentication: required -* Params: - * `url`: url of the instance to download from - * `name`: pack to download from that instance - * `as`: (*optional*) name how to save pack -* Response: JSON, "ok" with 200 status if the pack was downloaded, or 500 if there were - errors downloading the pack - -## `POST /api/pleroma/emoji/packs/create?name=:name` +## `POST /api/pleroma/emoji/pack?name=:name` ### Creates an empty pack * Method `POST` -* Authentication: required +* Authentication: required (admin) * Params: * `name`: pack name * Response: JSON, "ok" and 200 status or 409 if the pack with that name already exists -## `PATCH /api/pleroma/emoji/packs/update?name=:name` +## `PATCH /api/pleroma/emoji/pack?name=:name` ### Updates (replaces) pack metadata * Method `PATCH` -* Authentication: required +* Authentication: required (admin) * Params: * `name`: pack name * `metadata`: metadata to replace the old one @@ -438,22 +425,54 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Response: JSON, updated "metadata" section of the pack and 200 status or 400 if there was a problem with the new metadata (the error is specified in the "error" part of the response JSON) -## `DELETE /api/pleroma/emoji/packs/delete?name=:name` +## `DELETE /api/pleroma/emoji/pack?name=:name` ### Delete a custom emoji pack * Method `DELETE` -* Authentication: required +* Authentication: required (admin) * Params: * `name`: pack name * Response: JSON, "ok" and 200 status or 500 if there was an error deleting the pack +## `GET /api/pleroma/emoji/packs/import` + +### Imports packs from filesystem + +* Method `GET` +* Authentication: required (admin) +* Params: None +* Response: JSON, returns a list of imported packs. + +## `GET /api/pleroma/emoji/packs/remote` + +### Make request to another instance for packs list + +* Method `GET` +* Authentication: required (admin) +* Params: + * `url`: url of the instance to get packs from +* Response: JSON with the pack list, hashmap with pack name and pack contents + +## `POST /api/pleroma/emoji/packs/download` + +### Download pack from another instance + +* Method `POST` +* Authentication: required (admin) +* Params: + * `url`: url of the instance to download from + * `name`: pack to download from that instance + * `as`: (*optional*) name how to save pack +* Response: JSON, "ok" with 200 status if the pack was downloaded, or 500 if there were + errors downloading the pack + ## `POST /api/pleroma/emoji/packs/files?name=:name` ### Add new file to the pack * Method `POST` -* Authentication: required +* Authentication: required (admin) * Params: * `name`: pack name * `file`: file needs to be uploaded with the multipart request or link to remote file. @@ -466,7 +485,7 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa ### Update emoji file from pack * Method `PATCH` -* Authentication: required +* Authentication: required (admin) * Params: * `name`: pack name * `shortcode`: emoji file shortcode @@ -480,7 +499,7 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa ### Delete emoji file from pack * Method `DELETE` -* Authentication: required +* Authentication: required (admin) * Params: * `name`: pack name * `shortcode`: emoji file shortcode @@ -507,25 +526,6 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa } ``` -## `GET /api/pleroma/emoji/packs/show?name=:name` - -### Get pack.json for the pack - -* Method `GET` -* Authentication: not required -* Params: - * `page`: page number for files (default 1) - * `page_size`: page size for files (default 30) -* Response: JSON, pack json with `files`, `files_count` and `pack` keys with 200 status or 404 if the pack does not exist. - -```json -{ - "files": {...}, - "files_count": 0, // emoji count in pack - "pack": {...} -} -``` - ## `GET /api/pleroma/emoji/packs/archive?name=:name` ### Requests a local pack archive from the instance diff --git a/lib/pleroma/emoji/pack.ex b/lib/pleroma/emoji/pack.ex index 4420eff5a..8f1989ada 100644 --- a/lib/pleroma/emoji/pack.ex +++ b/lib/pleroma/emoji/pack.ex @@ -245,7 +245,7 @@ def download(name, url, as) do with :ok <- validate_shareable_packs_available(uri), {:ok, remote_pack} <- - uri |> URI.merge("/api/pleroma/emoji/packs/show?name=#{name}") |> http_get(), + uri |> URI.merge("/api/pleroma/emoji/pack?name=#{name}") |> http_get(), {:ok, %{sha: sha, url: url} = pack_info} <- fetch_pack_info(remote_pack, uri, name), {:ok, archive} <- download_archive(url, sha), pack <- copy_as(remote_pack, as || name), @@ -524,7 +524,7 @@ defp get_filename(pack, shortcode) do defp http_get(%URI{} = url), do: url |> to_string() |> http_get() defp http_get(url) do - with {:ok, %{body: body}} <- url |> Pleroma.HTTP.get() do + with {:ok, %{body: body}} <- Pleroma.HTTP.get(url, [], pool: :default) do Jason.decode(body) end end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 6f591b12f..707d5e1c4 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -226,6 +226,20 @@ defmodule Pleroma.Web.Router do end scope "/api/pleroma/emoji", Pleroma.Web.PleromaAPI do + scope "/pack" do + pipe_through(:admin_api) + + post("/", EmojiPackController, :create) + patch("/", EmojiPackController, :update) + delete("/", EmojiPackController, :delete) + end + + scope "/pack" do + pipe_through(:api) + + get("/", EmojiPackController, :show) + end + # Modifying packs scope "/packs" do pipe_through(:admin_api) @@ -246,8 +260,8 @@ defmodule Pleroma.Web.Router do # Pack info / downloading scope "/packs" do pipe_through(:api) + get("/", EmojiPackController, :index) - get("/show", EmojiPackController, :show) get("/archive", EmojiPackController, :archive) end end diff --git a/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs b/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs index 95fd78c7e..386ad8634 100644 --- a/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs +++ b/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs @@ -183,10 +183,10 @@ test "shared pack from remote and non shared from fallback-src", %{ %{ method: :get, - url: "https://example.com/api/pleroma/emoji/packs/show?name=test_pack" + url: "https://example.com/api/pleroma/emoji/pack?name=test_pack" } -> conn - |> get("/api/pleroma/emoji/packs/show?name=test_pack") + |> get("/api/pleroma/emoji/pack?name=test_pack") |> json_response_and_validate_schema(200) |> json() @@ -201,10 +201,10 @@ test "shared pack from remote and non shared from fallback-src", %{ %{ method: :get, - url: "https://example.com/api/pleroma/emoji/packs/show?name=test_pack_nonshared" + url: "https://example.com/api/pleroma/emoji/pack?name=test_pack_nonshared" } -> conn - |> get("/api/pleroma/emoji/packs/show?name=test_pack_nonshared") + |> get("/api/pleroma/emoji/pack?name=test_pack_nonshared") |> json_response_and_validate_schema(200) |> json() @@ -228,7 +228,7 @@ test "shared pack from remote and non shared from fallback-src", %{ assert File.exists?("#{@emoji_path}/test_pack2/blank.png") assert admin_conn - |> delete("/api/pleroma/emoji/packs/delete?name=test_pack2") + |> delete("/api/pleroma/emoji/pack?name=test_pack2") |> json_response_and_validate_schema(200) == "ok" refute File.exists?("#{@emoji_path}/test_pack2") @@ -249,7 +249,7 @@ test "shared pack from remote and non shared from fallback-src", %{ assert File.exists?("#{@emoji_path}/test_pack_nonshared2/blank.png") assert admin_conn - |> delete("/api/pleroma/emoji/packs/delete?name=test_pack_nonshared2") + |> delete("/api/pleroma/emoji/pack?name=test_pack_nonshared2") |> json_response_and_validate_schema(200) == "ok" refute File.exists?("#{@emoji_path}/test_pack_nonshared2") @@ -289,7 +289,7 @@ test "checksum fail", %{admin_conn: admin_conn} do %{ method: :get, - url: "https://example.com/api/pleroma/emoji/packs/show?name=pack_bad_sha" + url: "https://example.com/api/pleroma/emoji/pack?name=pack_bad_sha" } -> {:ok, pack} = Pleroma.Emoji.Pack.load_pack("pack_bad_sha") %Tesla.Env{status: 200, body: Jason.encode!(pack)} @@ -326,7 +326,7 @@ test "other error", %{admin_conn: admin_conn} do %{ method: :get, - url: "https://example.com/api/pleroma/emoji/packs/show?name=test_pack" + url: "https://example.com/api/pleroma/emoji/pack?name=test_pack" } -> {:ok, pack} = Pleroma.Emoji.Pack.load_pack("test_pack") %Tesla.Env{status: 200, body: Jason.encode!(pack)} @@ -346,7 +346,7 @@ test "other error", %{admin_conn: admin_conn} do end end - describe "PATCH /api/pleroma/emoji/packs/update?name=:name" do + describe "PATCH /api/pleroma/emoji/pack?name=:name" do setup do pack_file = "#{@emoji_path}/test_pack/pack.json" original_content = File.read!(pack_file) @@ -368,7 +368,7 @@ test "other error", %{admin_conn: admin_conn} do test "for a pack without a fallback source", ctx do assert ctx[:admin_conn] |> put_req_header("content-type", "multipart/form-data") - |> patch("/api/pleroma/emoji/packs/update?name=test_pack", %{ + |> patch("/api/pleroma/emoji/pack?name=test_pack", %{ "metadata" => ctx[:new_data] }) |> json_response_and_validate_schema(200) == ctx[:new_data] @@ -396,7 +396,7 @@ test "for a pack with a fallback source", ctx do assert ctx[:admin_conn] |> put_req_header("content-type", "multipart/form-data") - |> patch("/api/pleroma/emoji/packs/update?name=test_pack", %{metadata: new_data}) + |> patch("/api/pleroma/emoji/pack?name=test_pack", %{metadata: new_data}) |> json_response_and_validate_schema(200) == new_data_with_sha assert Jason.decode!(File.read!(ctx[:pack_file]))["pack"] == new_data_with_sha @@ -416,17 +416,17 @@ test "when the fallback source doesn't have all the files", ctx do assert ctx[:admin_conn] |> put_req_header("content-type", "multipart/form-data") - |> patch("/api/pleroma/emoji/packs/update?name=test_pack", %{metadata: new_data}) + |> patch("/api/pleroma/emoji/pack?name=test_pack", %{metadata: new_data}) |> json_response_and_validate_schema(:bad_request) == %{ "error" => "The fallback archive does not have all files specified in pack.json" } end end - describe "POST/DELETE /api/pleroma/emoji/packs/?name=:name" do + describe "POST/DELETE /api/pleroma/emoji/pack?name=:name" do test "creating and deleting a pack", %{admin_conn: admin_conn} do assert admin_conn - |> post("/api/pleroma/emoji/packs/create?name=test_created") + |> post("/api/pleroma/emoji/pack?name=test_created") |> json_response_and_validate_schema(200) == "ok" assert File.exists?("#{@emoji_path}/test_created/pack.json") @@ -438,7 +438,7 @@ test "creating and deleting a pack", %{admin_conn: admin_conn} do } assert admin_conn - |> delete("/api/pleroma/emoji/packs/delete?name=test_created") + |> delete("/api/pleroma/emoji/pack?name=test_created") |> json_response_and_validate_schema(200) == "ok" refute File.exists?("#{@emoji_path}/test_created/pack.json") @@ -451,7 +451,7 @@ test "if pack exists", %{admin_conn: admin_conn} do File.write!(Path.join(path, "pack.json"), pack_file) assert admin_conn - |> post("/api/pleroma/emoji/packs/create?name=test_created") + |> post("/api/pleroma/emoji/pack?name=test_created") |> json_response_and_validate_schema(:conflict) == %{ "error" => "A pack named \"test_created\" already exists" } @@ -461,7 +461,7 @@ test "if pack exists", %{admin_conn: admin_conn} do test "with empty name", %{admin_conn: admin_conn} do assert admin_conn - |> post("/api/pleroma/emoji/packs/create?name= ") + |> post("/api/pleroma/emoji/pack?name= ") |> json_response_and_validate_schema(:bad_request) == %{ "error" => "pack name cannot be empty" } @@ -470,7 +470,7 @@ test "with empty name", %{admin_conn: admin_conn} do test "deleting nonexisting pack", %{admin_conn: admin_conn} do assert admin_conn - |> delete("/api/pleroma/emoji/packs/delete?name=non_existing") + |> delete("/api/pleroma/emoji/pack?name=non_existing") |> json_response_and_validate_schema(:not_found) == %{ "error" => "Pack non_existing does not exist" } @@ -478,7 +478,7 @@ test "deleting nonexisting pack", %{admin_conn: admin_conn} do test "deleting with empty name", %{admin_conn: admin_conn} do assert admin_conn - |> delete("/api/pleroma/emoji/packs/delete?name= ") + |> delete("/api/pleroma/emoji/pack?name= ") |> json_response_and_validate_schema(:bad_request) == %{ "error" => "pack name cannot be empty" } @@ -526,7 +526,7 @@ test "filesystem import", %{admin_conn: admin_conn, conn: conn} do } end - describe "GET /api/pleroma/emoji/packs/:name" do + describe "GET /api/pleroma/emoji/pack?name=:name" do test "shows pack.json", %{conn: conn} do assert %{ "files" => files, @@ -541,7 +541,7 @@ test "shows pack.json", %{conn: conn} do } } = conn - |> get("/api/pleroma/emoji/packs/show?name=test_pack") + |> get("/api/pleroma/emoji/pack?name=test_pack") |> json_response_and_validate_schema(200) assert files == %{"blank" => "blank.png", "blank2" => "blank2.png"} @@ -551,7 +551,7 @@ test "shows pack.json", %{conn: conn} do "files_count" => 2 } = conn - |> get("/api/pleroma/emoji/packs/show?name=test_pack&page_size=1") + |> get("/api/pleroma/emoji/pack?name=test_pack&page_size=1") |> json_response_and_validate_schema(200) assert files |> Map.keys() |> length() == 1 @@ -561,7 +561,7 @@ test "shows pack.json", %{conn: conn} do "files_count" => 2 } = conn - |> get("/api/pleroma/emoji/packs/show?name=test_pack&page_size=1&page=2") + |> get("/api/pleroma/emoji/pack?name=test_pack&page_size=1&page=2") |> json_response_and_validate_schema(200) assert files |> Map.keys() |> length() == 1 @@ -581,13 +581,13 @@ test "for pack name with special chars", %{conn: conn} do } } = conn - |> get("/api/pleroma/emoji/packs/show?name=blobs.gg") + |> get("/api/pleroma/emoji/pack?name=blobs.gg") |> json_response_and_validate_schema(200) end test "non existing pack", %{conn: conn} do assert conn - |> get("/api/pleroma/emoji/packs/show?name=non_existing") + |> get("/api/pleroma/emoji/pack?name=non_existing") |> json_response_and_validate_schema(:not_found) == %{ "error" => "Pack non_existing does not exist" } @@ -595,7 +595,7 @@ test "non existing pack", %{conn: conn} do test "error name", %{conn: conn} do assert conn - |> get("/api/pleroma/emoji/packs/show?name= ") + |> get("/api/pleroma/emoji/pack?name= ") |> json_response_and_validate_schema(:bad_request) == %{ "error" => "pack name cannot be empty" } From 871fac3e4c9d8b1a138204ac754b2a9633bd9eaa Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 24 Sep 2020 09:41:40 +0300 Subject: [PATCH 305/460] docs update --- docs/API/pleroma_api.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/API/pleroma_api.md b/docs/API/pleroma_api.md index 96fd4da73..3fd141bd2 100644 --- a/docs/API/pleroma_api.md +++ b/docs/API/pleroma_api.md @@ -452,6 +452,8 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Authentication: required (admin) * Params: * `url`: url of the instance to get packs from + * `page`: page number for packs (default 1) + * `page_size`: page size for packs (default 50) * Response: JSON with the pack list, hashmap with pack name and pack contents ## `POST /api/pleroma/emoji/packs/download` From 5d7ec00bedc61e8899941c374604ae5854c62f4c Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 24 Sep 2020 09:42:30 +0300 Subject: [PATCH 306/460] fixes after rebase --- .../pleroma_emoji_file_operation.ex | 2 +- lib/pleroma/web/router.ex | 10 ++--- test/utils_test.exs | 2 +- .../emoji_file_controller_test.exs | 40 +++++++++---------- 4 files changed, 25 insertions(+), 29 deletions(-) diff --git a/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex index efbfce75f..a56641426 100644 --- a/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex +++ b/lib/pleroma/web/api_spec/operations/pleroma_emoji_file_operation.ex @@ -126,7 +126,7 @@ def delete_operation do end defp name_param do - Operation.parameter(:name, :path, :string, "Pack Name", example: "cofe", required: true) + Operation.parameter(:name, :query, :string, "Pack Name", example: "cofe", required: true) end defp files_object do diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 707d5e1c4..e22b31b4c 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -248,13 +248,9 @@ defmodule Pleroma.Web.Router do get("/remote", EmojiPackController, :remote) post("/download", EmojiPackController, :download) - post("/create", EmojiPackController, :create) - patch("/update", EmojiPackController, :update) - delete("/delete", EmojiPackController, :delete) - - post("/files", EmojiFileController, :add_file) - patch("/files", EmojiFileController, :update_file) - delete("/files", EmojiFileController, :delete_file) + post("/files", EmojiFileController, :create) + patch("/files", EmojiFileController, :update) + delete("/files", EmojiFileController, :delete) end # Pack info / downloading diff --git a/test/utils_test.exs b/test/utils_test.exs index 3a730d545..460f7e0b5 100644 --- a/test/utils_test.exs +++ b/test/utils_test.exs @@ -8,7 +8,7 @@ defmodule Pleroma.UtilsTest do describe "tmp_dir/1" do test "returns unique temporary directory" do {:ok, path} = Pleroma.Utils.tmp_dir("emoji") - assert path =~ ~r/\/tmp\/emoji-(.*)-#{:os.getpid()}-(.*)/ + assert path =~ ~r/\/emoji-(.*)-#{:os.getpid()}-(.*)/ File.rm_rf(path) end end diff --git a/test/web/pleroma_api/controllers/emoji_file_controller_test.exs b/test/web/pleroma_api/controllers/emoji_file_controller_test.exs index 39b4e1dac..82de86ee3 100644 --- a/test/web/pleroma_api/controllers/emoji_file_controller_test.exs +++ b/test/web/pleroma_api/controllers/emoji_file_controller_test.exs @@ -29,7 +29,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiFileControllerTest do {:ok, %{admin_conn: admin_conn}} end - describe "POST/PATCH/DELETE /api/pleroma/emoji/packs/:name/files" do + describe "POST/PATCH/DELETE /api/pleroma/emoji/packs/files?name=:name" do setup do pack_file = "#{@emoji_path}/test_pack/pack.json" original_content = File.read!(pack_file) @@ -56,7 +56,7 @@ test "upload zip file with emojies", %{admin_conn: admin_conn} do resp = admin_conn |> put_req_header("content-type", "multipart/form-data") - |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + |> post("/api/pleroma/emoji/packs/files?name=test_pack", %{ file: %Plug.Upload{ content_type: "application/zip", filename: "emojis.zip", @@ -83,7 +83,7 @@ test "upload zip file with emojies", %{admin_conn: admin_conn} do test "create shortcode exists", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") - |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + |> post("/api/pleroma/emoji/packs/files?name=test_pack", %{ shortcode: "blank", filename: "dir/blank.png", file: %Plug.Upload{ @@ -101,7 +101,7 @@ test "don't rewrite old emoji", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") - |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + |> post("/api/pleroma/emoji/packs/files?name=test_pack", %{ shortcode: "blank3", filename: "dir/blank.png", file: %Plug.Upload{ @@ -119,7 +119,7 @@ test "don't rewrite old emoji", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") - |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ + |> patch("/api/pleroma/emoji/packs/files?name=test_pack", %{ shortcode: "blank", new_shortcode: "blank2", new_filename: "dir_2/blank_3.png" @@ -135,7 +135,7 @@ test "rewrite old emoji with force option", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") - |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + |> post("/api/pleroma/emoji/packs/files?name=test_pack", %{ shortcode: "blank3", filename: "dir/blank.png", file: %Plug.Upload{ @@ -153,7 +153,7 @@ test "rewrite old emoji with force option", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") - |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ + |> patch("/api/pleroma/emoji/packs/files?name=test_pack", %{ shortcode: "blank3", new_shortcode: "blank4", new_filename: "dir_2/blank_3.png", @@ -171,7 +171,7 @@ test "rewrite old emoji with force option", %{admin_conn: admin_conn} do test "with empty filename", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") - |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + |> post("/api/pleroma/emoji/packs/files?name=test_pack", %{ shortcode: "blank2", filename: "", file: %Plug.Upload{ @@ -187,7 +187,7 @@ test "with empty filename", %{admin_conn: admin_conn} do test "add file with not loaded pack", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") - |> post("/api/pleroma/emoji/packs/not_loaded/files", %{ + |> post("/api/pleroma/emoji/packs/files?name=not_loaded", %{ shortcode: "blank3", filename: "dir/blank.png", file: %Plug.Upload{ @@ -202,7 +202,7 @@ test "add file with not loaded pack", %{admin_conn: admin_conn} do test "remove file with not loaded pack", %{admin_conn: admin_conn} do assert admin_conn - |> delete("/api/pleroma/emoji/packs/not_loaded/files?shortcode=blank3") + |> delete("/api/pleroma/emoji/packs/files?name=not_loaded&shortcode=blank3") |> json_response_and_validate_schema(:not_found) == %{ "error" => "pack \"not_loaded\" is not found" } @@ -210,7 +210,7 @@ test "remove file with not loaded pack", %{admin_conn: admin_conn} do test "remove file with empty shortcode", %{admin_conn: admin_conn} do assert admin_conn - |> delete("/api/pleroma/emoji/packs/not_loaded/files?shortcode=") + |> delete("/api/pleroma/emoji/packs/files?name=not_loaded&shortcode=") |> json_response_and_validate_schema(:not_found) == %{ "error" => "pack \"not_loaded\" is not found" } @@ -219,7 +219,7 @@ test "remove file with empty shortcode", %{admin_conn: admin_conn} do test "update file with not loaded pack", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") - |> patch("/api/pleroma/emoji/packs/not_loaded/files", %{ + |> patch("/api/pleroma/emoji/packs/files?name=not_loaded", %{ shortcode: "blank4", new_shortcode: "blank3", new_filename: "dir_2/blank_3.png" @@ -232,7 +232,7 @@ test "update file with not loaded pack", %{admin_conn: admin_conn} do test "new with shortcode as file with update", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") - |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + |> post("/api/pleroma/emoji/packs/files?name=test_pack", %{ shortcode: "blank4", filename: "dir/blank.png", file: %Plug.Upload{ @@ -250,7 +250,7 @@ test "new with shortcode as file with update", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") - |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ + |> patch("/api/pleroma/emoji/packs/files?name=test_pack", %{ shortcode: "blank4", new_shortcode: "blank3", new_filename: "dir_2/blank_3.png" @@ -265,7 +265,7 @@ test "new with shortcode as file with update", %{admin_conn: admin_conn} do assert File.exists?("#{@emoji_path}/test_pack/dir_2/blank_3.png") assert admin_conn - |> delete("/api/pleroma/emoji/packs/test_pack/files?shortcode=blank3") + |> delete("/api/pleroma/emoji/packs/files?name=test_pack&shortcode=blank3") |> json_response_and_validate_schema(200) == %{ "blank" => "blank.png", "blank2" => "blank2.png" @@ -287,7 +287,7 @@ test "new with shortcode from url", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") - |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + |> post("/api/pleroma/emoji/packs/files?name=test_pack", %{ shortcode: "blank_url", file: "https://test-blank/blank_url.png" }) @@ -307,7 +307,7 @@ test "new without shortcode", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") - |> post("/api/pleroma/emoji/packs/test_pack/files", %{ + |> post("/api/pleroma/emoji/packs/files?name=test_pack", %{ file: %Plug.Upload{ filename: "shortcode.png", path: "#{Pleroma.Config.get([:instance, :static_dir])}/add/shortcode.png" @@ -322,7 +322,7 @@ test "new without shortcode", %{admin_conn: admin_conn} do test "remove non existing shortcode in pack.json", %{admin_conn: admin_conn} do assert admin_conn - |> delete("/api/pleroma/emoji/packs/test_pack/files?shortcode=blank3") + |> delete("/api/pleroma/emoji/packs/files?name=test_pack&shortcode=blank3") |> json_response_and_validate_schema(:bad_request) == %{ "error" => "Emoji \"blank3\" does not exist" } @@ -331,7 +331,7 @@ test "remove non existing shortcode in pack.json", %{admin_conn: admin_conn} do test "update non existing emoji", %{admin_conn: admin_conn} do assert admin_conn |> put_req_header("content-type", "multipart/form-data") - |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ + |> patch("/api/pleroma/emoji/packs/files?name=test_pack", %{ shortcode: "blank3", new_shortcode: "blank4", new_filename: "dir_2/blank_3.png" @@ -347,7 +347,7 @@ test "update with empty shortcode", %{admin_conn: admin_conn} do } = admin_conn |> put_req_header("content-type", "multipart/form-data") - |> patch("/api/pleroma/emoji/packs/test_pack/files", %{ + |> patch("/api/pleroma/emoji/packs/files?name=test_pack", %{ shortcode: "blank", new_filename: "dir_2/blank_3.png" }) From 727a0556a996a4b990366c6f7ad45f78b0b34c4a Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 24 Sep 2020 09:47:23 +0300 Subject: [PATCH 307/460] fix --- test/emoji_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/emoji_test.exs b/test/emoji_test.exs index b36047578..1dd3c58c6 100644 --- a/test/emoji_test.exs +++ b/test/emoji_test.exs @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.EmojiTest do - use ExUnit.Case, async: true + use ExUnit.Case alias Pleroma.Emoji describe "is_unicode_emoji?/1" do From 3f201475e099aecf0c77ca5396b114433ea58224 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 24 Sep 2020 09:54:10 +0300 Subject: [PATCH 308/460] changelog entry --- CHANGELOG.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46962b6ff..af267face 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Changed +- **Breaking:** Pleroma API: packs and files routes changed. - Renamed `:await_up_timeout` in `:connections_pool` namespace to `:connect_timeout`, old name is deprecated. - Renamed `:timeout` in `pools` namespace to `:recv_timeout`, old name is deprecated. - The `discoverable` field in the `User` struct will now add a NOINDEX metatag to profile pages when false. @@ -14,10 +15,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Minimum lifetime for ephmeral activities changed to 10 minutes and made configurable (`:min_lifetime` option). ### Added + - Media preview proxy (requires media proxy be enabled; see `:media_preview_proxy` config for more details). -- Pleroma API: Importing the mutes users from CSV files. - Experimental websocket-based federation between Pleroma instances. + +
+ API Changes + +- Pleroma API: Importing the mutes users from CSV files. - Admin API: Importing emoji from a zip file +- Pleroma API: Pagination for remote/local packs and emoji. + +
### Removed @@ -120,7 +129,6 @@ switched to a new configuration mechanism, however it was not officially removed - Mastodon API (legacy): Allow query parameters for `/api/v1/domain_blocks`, e.g. `/api/v1/domain_blocks?domain=badposters.zone` - Mastodon API: Make notifications about statuses from muted users and threads read automatically - Pleroma API: `/api/pleroma/captcha` responses now include `seconds_valid` with an integer value. -- Pleroma API: Pagination for remote/local packs and emoji. From aa1f97a5b6904aec38621c9af79a81b5a7b62e30 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 24 Sep 2020 10:46:09 +0300 Subject: [PATCH 309/460] fix for test on mac --- test/utils_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/utils_test.exs b/test/utils_test.exs index 3a730d545..460f7e0b5 100644 --- a/test/utils_test.exs +++ b/test/utils_test.exs @@ -8,7 +8,7 @@ defmodule Pleroma.UtilsTest do describe "tmp_dir/1" do test "returns unique temporary directory" do {:ok, path} = Pleroma.Utils.tmp_dir("emoji") - assert path =~ ~r/\/tmp\/emoji-(.*)-#{:os.getpid()}-(.*)/ + assert path =~ ~r/\/emoji-(.*)-#{:os.getpid()}-(.*)/ File.rm_rf(path) end end From 165961f56dfa20d27869f53777798a8d4ce572f9 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 24 Sep 2020 12:00:39 +0300 Subject: [PATCH 310/460] don't run in async mode --- test/emoji_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/emoji_test.exs b/test/emoji_test.exs index b36047578..1dd3c58c6 100644 --- a/test/emoji_test.exs +++ b/test/emoji_test.exs @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.EmojiTest do - use ExUnit.Case, async: true + use ExUnit.Case alias Pleroma.Emoji describe "is_unicode_emoji?/1" do From 35d62a4a5602913de3a91582aa03d5af9ac7a5b0 Mon Sep 17 00:00:00 2001 From: lain Date: Thu, 24 Sep 2020 11:12:03 +0200 Subject: [PATCH 311/460] CommonAPI test: Add test for polls --- test/web/common_api/common_api_test.exs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index 2eab64e8b..e34f5a49b 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -29,6 +29,23 @@ defmodule Pleroma.Web.CommonAPITest do setup do: clear_config([:instance, :limit]) setup do: clear_config([:instance, :max_pinned_statuses]) + describe "posting polls" do + test "it posts a poll" do + user = insert(:user) + + {:ok, activity} = + CommonAPI.post(user, %{ + status: "who is the best", + poll: %{expires_in: 600, options: ["reimu", "marisa"]} + }) + + object = Object.normalize(activity) + + assert object.data["type"] == "Question" + assert object.data["oneOf"] |> length() == 2 + end + end + describe "blocking" do setup do blocker = insert(:user) From d0078bc40406939cb584847c90b00aad006812e4 Mon Sep 17 00:00:00 2001 From: lain Date: Thu, 24 Sep 2020 15:54:55 +0200 Subject: [PATCH 312/460] User Search: Boost resolved results and exact ap_id matches. --- lib/pleroma/user/search.ex | 45 +++++++++++++++++++++++++++++++++----- test/user_search_test.exs | 19 ++++++++++++++++ 2 files changed, 58 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/user/search.ex b/lib/pleroma/user/search.ex index b8c648672..408295e0c 100644 --- a/lib/pleroma/user/search.ex +++ b/lib/pleroma/user/search.ex @@ -19,11 +19,21 @@ def search(query_string, opts \\ []) do query_string = format_query(query_string) - maybe_resolve(resolve, for_user, query_string) + # If this returns anything, it should bounce to the top + maybe_resolved = maybe_resolve(resolve, for_user, query_string) + maybe_ap_id_match = User.get_cached_by_ap_id(query_string) + + top_user_ids = + case {maybe_resolved, maybe_ap_id_match} do + {{:ok, %User{} = user}, %User{} = other_user} -> [user.id, other_user.id] + {{:ok, %User{} = user}, _} -> [user.id] + {_, %User{} = user} -> [user.id] + _ -> [] + end results = query_string - |> search_query(for_user, following) + |> search_query(for_user, following, top_user_ids) |> Pagination.fetch_paginated(%{"offset" => offset, "limit" => result_limit}, :offset) results @@ -47,7 +57,7 @@ defp format_query(query_string) do end end - defp search_query(query_string, for_user, following) do + defp search_query(query_string, for_user, following, top_user_ids) do for_user |> base_query(following) |> filter_blocked_user(for_user) @@ -56,13 +66,20 @@ defp search_query(query_string, for_user, following) do |> filter_internal_users() |> filter_blocked_domains(for_user) |> fts_search(query_string) + |> select_top_users(top_user_ids) |> trigram_rank(query_string) - |> boost_search_rank(for_user) + |> boost_search_rank(for_user, top_user_ids) |> subquery() |> order_by(desc: :search_rank) |> maybe_restrict_local(for_user) end + defp select_top_users(query, top_user_ids) do + from(u in query, + or_where: u.id in ^top_user_ids + ) + end + defp fts_search(query, query_string) do query_string = to_tsquery(query_string) @@ -180,7 +197,7 @@ defp restrict_local(q), do: where(q, [u], u.local == true) defp local_domain, do: Pleroma.Config.get([Pleroma.Web.Endpoint, :url, :host]) - defp boost_search_rank(query, %User{} = for_user) do + defp boost_search_rank(query, %User{} = for_user, top_user_ids) do friends_ids = User.get_friends_ids(for_user) followers_ids = User.get_followers_ids(for_user) @@ -192,6 +209,7 @@ defp boost_search_rank(query, %User{} = for_user) do CASE WHEN (?) THEN (?) * 1.5 WHEN (?) THEN (?) * 1.3 WHEN (?) THEN (?) * 1.1 + WHEN (?) THEN 9001 ELSE (?) END """, u.id in ^friends_ids and u.id in ^followers_ids, @@ -200,11 +218,26 @@ defp boost_search_rank(query, %User{} = for_user) do u.search_rank, u.id in ^followers_ids, u.search_rank, + u.id in ^top_user_ids, u.search_rank ) } ) end - defp boost_search_rank(query, _for_user), do: query + defp boost_search_rank(query, _for_user, top_user_ids) do + from(u in subquery(query), + select_merge: %{ + search_rank: + fragment( + """ + CASE WHEN (?) THEN 9001 + ELSE (?) END + """, + u.id in ^top_user_ids, + u.search_rank + ) + } + ) + end end diff --git a/test/user_search_test.exs b/test/user_search_test.exs index 8529ce6db..68fda1c53 100644 --- a/test/user_search_test.exs +++ b/test/user_search_test.exs @@ -17,6 +17,25 @@ defmodule Pleroma.UserSearchTest do describe "User.search" do setup do: clear_config([:instance, :limit_to_local_content]) + test "returns a resolved user as the first result" do + Pleroma.Config.put([:instance, :limit_to_local_content], false) + user = insert(:user, %{nickname: "no_relation", ap_id: "https://lain.com/users/lain"}) + _user = insert(:user, %{nickname: "com_user"}) + + [first_user, _second_user] = User.search("https://lain.com/users/lain", resolve: true) + + assert first_user.id == user.id + end + + test "returns a user with matching ap_id as the first result" do + user = insert(:user, %{nickname: "no_relation", ap_id: "https://lain.com/users/lain"}) + _user = insert(:user, %{nickname: "com_user"}) + + [first_user, _second_user] = User.search("https://lain.com/users/lain") + + assert first_user.id == user.id + end + test "excludes invisible users from results" do user = insert(:user, %{nickname: "john t1000"}) insert(:user, %{invisible: true, nickname: "john t800"}) From defca4a8b1e5baa03b308e77bf2386f135b2584d Mon Sep 17 00:00:00 2001 From: lain Date: Thu, 24 Sep 2020 15:56:17 +0200 Subject: [PATCH 313/460] Changelog: Add info about user search. --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f5d01af3..1a1de99a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Changed +- Search: Users are now findable by their urls. - Renamed `:await_up_timeout` in `:connections_pool` namespace to `:connect_timeout`, old name is deprecated. - Renamed `:timeout` in `pools` namespace to `:recv_timeout`, old name is deprecated. - The `discoverable` field in the `User` struct will now add a NOINDEX metatag to profile pages when false. From 7cd662f18c202ee2b099305e990d15a01370d6f9 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Thu, 24 Sep 2020 18:02:50 +0300 Subject: [PATCH 314/460] Added documentation on installation of `ffmpeg` and `ImageMagick` dependencies. --- CHANGELOG.md | 3 ++- docs/installation/alpine_linux_en.md | 9 +++++++++ docs/installation/arch_linux_en.md | 4 +++- docs/installation/debian_based_en.md | 4 +++- docs/installation/debian_based_jp.md | 4 +++- docs/installation/freebsd_en.md | 2 +- docs/installation/gentoo_en.md | 4 +++- docs/installation/netbsd_en.md | 2 +- docs/installation/openbsd_en.md | 5 +++-- docs/installation/openbsd_fi.md | 2 +- docs/installation/otp_en.md | 6 ++++-- 11 files changed, 33 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f5d01af3..3e5f8a504 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,9 +12,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - The `discoverable` field in the `User` struct will now add a NOINDEX metatag to profile pages when false. - Users with the `discoverable` field set to false will not show up in searches. - Minimum lifetime for ephmeral activities changed to 10 minutes and made configurable (`:min_lifetime` option). +- **Breaking:** Introduced dependencies on `ffmpeg` and `ImageMagick` software packages. Please refer to documentation in `docs/installation`. ### Added -- Media preview proxy (requires media proxy be enabled; see `:media_preview_proxy` config for more details). +- Media preview proxy (requires `ffmpeg` and `ImageMagick` be installed and media proxy be enabled; see `:media_preview_proxy` config for more details). - Pleroma API: Importing the mutes users from CSV files. - Experimental websocket-based federation between Pleroma instances. - Admin API: Importing emoji from a zip file diff --git a/docs/installation/alpine_linux_en.md b/docs/installation/alpine_linux_en.md index a5683f18c..0b9f5cdae 100644 --- a/docs/installation/alpine_linux_en.md +++ b/docs/installation/alpine_linux_en.md @@ -13,6 +13,8 @@ It assumes that you have administrative rights, either as root or a user with [s * `erlang-parsetools` * `erlang-xmerl` * `git` +* `ffmpeg` +* `ImageMagick` * Development Tools * `cmake` @@ -56,6 +58,13 @@ sudo apk add erlang erlang-runtime-tools erlang-xmerl elixir ```shell sudo apk add erlang-eldap ``` + +### Install ffmpeg and ImageMagick + +```shell +sudo apk add ffmpeg imagemagick +``` + ### Install PostgreSQL * Install Postgresql server: diff --git a/docs/installation/arch_linux_en.md b/docs/installation/arch_linux_en.md index 7fb69dd60..38bb82432 100644 --- a/docs/installation/arch_linux_en.md +++ b/docs/installation/arch_linux_en.md @@ -10,6 +10,8 @@ This guide will assume that you have administrative rights, either as root or a * `git` * `base-devel` * `cmake` +* `ffmpeg` +* `ImageMagick` #### Optional packages used in this guide @@ -27,7 +29,7 @@ sudo pacman -Syu * Install some of the above mentioned programs: ```shell -sudo pacman -S git base-devel elixir cmake +sudo pacman -S git base-devel elixir cmake ffmpeg imagemagick ``` ### Install PostgreSQL diff --git a/docs/installation/debian_based_en.md b/docs/installation/debian_based_en.md index 60c2f47e5..30ee64c01 100644 --- a/docs/installation/debian_based_en.md +++ b/docs/installation/debian_based_en.md @@ -13,6 +13,8 @@ This guide will assume you are on Debian Stretch. This guide should also work wi * `git` * `build-essential` * `cmake` +* `ffmpeg` +* `ImageMagick` #### Optional packages used in this guide @@ -31,7 +33,7 @@ sudo apt full-upgrade * Install some of the above mentioned programs: ```shell -sudo apt install git build-essential postgresql postgresql-contrib cmake +sudo apt install git build-essential postgresql postgresql-contrib cmake ffmpeg imagemagick ``` ### Install Elixir and Erlang diff --git a/docs/installation/debian_based_jp.md b/docs/installation/debian_based_jp.md index c2dd840d3..219f40525 100644 --- a/docs/installation/debian_based_jp.md +++ b/docs/installation/debian_based_jp.md @@ -17,6 +17,8 @@ - `git` - `build-essential` - `cmake` +- `ffmpeg` +- `ImageMagick` #### このガイドで利用している追加パッケージ @@ -33,7 +35,7 @@ sudo apt full-upgrade * 上記に挙げたパッケージをインストールしておきます。 ``` -sudo apt install git build-essential postgresql postgresql-contrib cmake +sudo apt install git build-essential postgresql postgresql-contrib cmake ffmpeg imagemagick ``` diff --git a/docs/installation/freebsd_en.md b/docs/installation/freebsd_en.md index ca2575d9b..01b410a46 100644 --- a/docs/installation/freebsd_en.md +++ b/docs/installation/freebsd_en.md @@ -7,7 +7,7 @@ This document was written for FreeBSD 12.1, but should be work on future release This assumes the target system has `pkg(8)`. ``` -# pkg install elixir postgresql12-server postgresql12-client postgresql12-contrib git-lite sudo nginx gmake acme.sh cmake +# pkg install elixir postgresql12-server postgresql12-client postgresql12-contrib git-lite sudo nginx gmake acme.sh cmake ffmpeg imagemagick ``` Copy the rc.d scripts to the right directory: diff --git a/docs/installation/gentoo_en.md b/docs/installation/gentoo_en.md index 5a676380c..9a8b54ece 100644 --- a/docs/installation/gentoo_en.md +++ b/docs/installation/gentoo_en.md @@ -29,6 +29,8 @@ Gentoo quite pointedly does not come with a cron daemon installed, and as such i * `dev-lang/elixir` * `dev-vcs/git` * `dev-util/cmake` +* `media-video/ffmpeg` +* `media-gfx/imagemagick` #### Optional ebuilds used in this guide @@ -47,7 +49,7 @@ Gentoo quite pointedly does not come with a cron daemon installed, and as such i * Emerge all required the required and suggested software in one go: ```shell - # emerge --ask dev-db/postgresql dev-lang/elixir dev-vcs/git www-servers/nginx app-crypt/certbot app-crypt/certbot-nginx dev-util/cmake + # emerge --ask dev-db/postgresql dev-lang/elixir dev-vcs/git www-servers/nginx app-crypt/certbot app-crypt/certbot-nginx dev-util/cmake media-video/ffmpeg media-gfx/imagemagick ``` If you would not like to install the optional packages, remove them from this line. diff --git a/docs/installation/netbsd_en.md b/docs/installation/netbsd_en.md index 6ad0de2f6..8cf2e4682 100644 --- a/docs/installation/netbsd_en.md +++ b/docs/installation/netbsd_en.md @@ -10,7 +10,7 @@ Pleroma uses. The `mksh` shell is needed to run the Elixir `mix` script. -`# pkgin install acmesh elixir git-base git-docs mksh nginx postgresql11-server postgresql11-client postgresql11-contrib sudo` +`# pkgin install acmesh elixir git-base git-docs mksh nginx postgresql11-server postgresql11-client postgresql11-contrib sudo ffmpeg4 ImageMagick` You can also build these packages using pkgsrc: ``` diff --git a/docs/installation/openbsd_en.md b/docs/installation/openbsd_en.md index eee452845..277e5ec43 100644 --- a/docs/installation/openbsd_en.md +++ b/docs/installation/openbsd_en.md @@ -10,16 +10,17 @@ The following packages need to be installed: * elixir * gmake - * ImageMagick * git * postgresql-server * postgresql-contrib * cmake + * ffmpeg + * ImageMagick To install them, run the following command (with doas or as root): ``` -pkg_add elixir gmake ImageMagick git postgresql-server postgresql-contrib cmake +pkg_add elixir gmake git postgresql-server postgresql-contrib cmake ffmpeg ImageMagick ``` Pleroma requires a reverse proxy, OpenBSD has relayd in base (and is used in this guide) and packages/ports are available for nginx (www/nginx) and apache (www/apache-httpd). Independently of the reverse proxy, [acme-client(1)](https://man.openbsd.org/acme-client) can be used to get a certificate from Let's Encrypt. diff --git a/docs/installation/openbsd_fi.md b/docs/installation/openbsd_fi.md index b5b5056a9..2cb03e73e 100644 --- a/docs/installation/openbsd_fi.md +++ b/docs/installation/openbsd_fi.md @@ -16,7 +16,7 @@ Matrix-kanava #freenode_#pleroma:matrix.org ovat hyviä paikkoja löytää apua Asenna tarvittava ohjelmisto: -`# pkg_add git elixir gmake postgresql-server-10.3 postgresql-contrib-10.3 cmake` +`# pkg_add git elixir gmake postgresql-server-10.3 postgresql-contrib-10.3 cmake ffmpeg ImageMagick` Luo postgresql-tietokanta: diff --git a/docs/installation/otp_en.md b/docs/installation/otp_en.md index b7e3bb2ac..8fdf6b5b5 100644 --- a/docs/installation/otp_en.md +++ b/docs/installation/otp_en.md @@ -27,17 +27,19 @@ Other than things bundled in the OTP release Pleroma depends on: * PostgreSQL (also utilizes extensions in postgresql-contrib) * nginx (could be swapped with another reverse proxy but this guide covers only it) * certbot (for Let's Encrypt certificates, could be swapped with another ACME client, but this guide covers only it) +* ffmpeg (needed for media preview proxy) +* ImageMagick (needed for media preview proxy) === "Alpine" ``` echo "http://nl.alpinelinux.org/alpine/latest-stable/community" >> /etc/apk/repositories apk update - apk add curl unzip ncurses postgresql postgresql-contrib nginx certbot + apk add curl unzip ncurses postgresql postgresql-contrib nginx certbot ffmpeg imagemagick ``` === "Debian/Ubuntu" ``` - apt install curl unzip libncurses5 postgresql postgresql-contrib nginx certbot + apt install curl unzip libncurses5 postgresql postgresql-contrib nginx certbot ffmpeg imagemagick ``` ## Setup From 935ef21b0285975b08037827a33f32bfcbbff951 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 24 Sep 2020 16:47:34 -0500 Subject: [PATCH 315/460] Use the import --- lib/mix/tasks/pleroma/email.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mix/tasks/pleroma/email.ex b/lib/mix/tasks/pleroma/email.ex index 1f543241a..0e4c87598 100644 --- a/lib/mix/tasks/pleroma/email.ex +++ b/lib/mix/tasks/pleroma/email.ex @@ -6,7 +6,7 @@ defmodule Mix.Tasks.Pleroma.Email do @moduledoc File.read!("docs/administration/CLI_tasks/email.md") def run(["test" | args]) do - Mix.Pleroma.start_pleroma() + start_pleroma() {options, [], []} = OptionParser.parse( From e33360fdb958708661a5bda415b9f06b5e1290d5 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 24 Sep 2020 18:23:47 -0500 Subject: [PATCH 316/460] Cannot use batches with User.try_send_confirmation_email/1 --- lib/mix/tasks/pleroma/email.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mix/tasks/pleroma/email.ex b/lib/mix/tasks/pleroma/email.ex index 0e4c87598..9e989ed46 100644 --- a/lib/mix/tasks/pleroma/email.ex +++ b/lib/mix/tasks/pleroma/email.ex @@ -31,7 +31,7 @@ def run(["resend_confirmation_emails"]) do confirmation_pending: true, invisible: false }) - |> Pleroma.Repo.chunk_stream(500, :batches) + |> Pleroma.Repo.chunk_stream(500) |> Stream.each(&Pleroma.User.try_send_confirmation_email(&1)) |> Stream.run() end From 3bf3db39f5932601798db8fd34523abc1b60dea7 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 24 Sep 2020 18:24:44 -0500 Subject: [PATCH 317/460] Validate emails are sent to the appropriate unconfirmed actors --- test/tasks/email_test.exs | 69 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/test/tasks/email_test.exs b/test/tasks/email_test.exs index c3af7ef68..5393e3573 100644 --- a/test/tasks/email_test.exs +++ b/test/tasks/email_test.exs @@ -6,6 +6,8 @@ defmodule Mix.Tasks.Pleroma.EmailTest do alias Pleroma.Config alias Pleroma.Tests.ObanHelpers + import Pleroma.Factory + setup_all do Mix.shell(Mix.Shell.Process) @@ -17,6 +19,7 @@ defmodule Mix.Tasks.Pleroma.EmailTest do end setup do: clear_config([Pleroma.Emails.Mailer, :enabled], true) + setup do: clear_config([:instance, :account_activation_required], true) describe "pleroma.email test" do test "Sends test email with no given address" do @@ -50,5 +53,71 @@ test "Sends test email with given address" do html_body: ~r/a test email was requested./i ) end + + test "Sends confirmation emails" do + local_user1 = + insert(:user, %{ + confirmation_pending: true, + confirmation_token: "mytoken", + deactivated: false, + email: "local1@pleroma.com", + local: true + }) + + local_user2 = + insert(:user, %{ + confirmation_pending: true, + confirmation_token: "mytoken", + deactivated: false, + email: "local2@pleroma.com", + local: true + }) + + :ok = Mix.Tasks.Pleroma.Email.run(["resend_confirmation_emails"]) + + ObanHelpers.perform_all() + + assert_email_sent(to: {local_user1.name, local_user1.email}) + assert_email_sent(to: {local_user2.name, local_user2.email}) + end + + test "Does not send confirmation email to inappropriate users" do + # confirmed user + insert(:user, %{ + confirmation_pending: false, + confirmation_token: "mytoken", + deactivated: false, + email: "confirmed@pleroma.com", + local: true + }) + + # remote user + insert(:user, %{ + deactivated: false, + email: "remote@not-pleroma.com", + local: false + }) + + # deactivated user = + insert(:user, %{ + deactivated: true, + email: "deactivated@pleroma.com", + local: false + }) + + # invisible user + insert(:user, %{ + deactivated: false, + email: "invisible@pleroma.com", + local: true, + invisible: true + }) + + :ok = Mix.Tasks.Pleroma.Email.run(["resend_confirmation_emails"]) + + ObanHelpers.perform_all() + + refute_email_sent() + end end end From 81faf540b30d0ecf75779e7a5c16f42b7218cec8 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 24 Sep 2020 18:35:20 -0500 Subject: [PATCH 318/460] Add some user feedback --- lib/mix/tasks/pleroma/email.ex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/mix/tasks/pleroma/email.ex b/lib/mix/tasks/pleroma/email.ex index 9e989ed46..9972cb988 100644 --- a/lib/mix/tasks/pleroma/email.ex +++ b/lib/mix/tasks/pleroma/email.ex @@ -25,6 +25,8 @@ def run(["test" | args]) do def run(["resend_confirmation_emails"]) do start_pleroma() + shell_info("Sending emails to all unconfirmed users") + Pleroma.User.Query.build(%{ local: true, deactivated: false, From a8c17ea25a79491328345f5834397eb6821a77f1 Mon Sep 17 00:00:00 2001 From: lain Date: Fri, 25 Sep 2020 08:46:14 +0200 Subject: [PATCH 319/460] User Search: Also find user by uri --- lib/pleroma/user/search.ex | 35 ++++++++++++++++++++++++++++------- test/user_search_test.exs | 15 +++++++++++++++ 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/lib/pleroma/user/search.ex b/lib/pleroma/user/search.ex index 408295e0c..d747bfa52 100644 --- a/lib/pleroma/user/search.ex +++ b/lib/pleroma/user/search.ex @@ -5,6 +5,7 @@ defmodule Pleroma.User.Search do alias Pleroma.Pagination alias Pleroma.User + alias Pleroma.EctoType.ActivityPub.ObjectValidators.Uri, as: UriType import Ecto.Query @limit 20 @@ -21,15 +22,12 @@ def search(query_string, opts \\ []) do # If this returns anything, it should bounce to the top maybe_resolved = maybe_resolve(resolve, for_user, query_string) - maybe_ap_id_match = User.get_cached_by_ap_id(query_string) top_user_ids = - case {maybe_resolved, maybe_ap_id_match} do - {{:ok, %User{} = user}, %User{} = other_user} -> [user.id, other_user.id] - {{:ok, %User{} = user}, _} -> [user.id] - {_, %User{} = user} -> [user.id] - _ -> [] - end + [] + |> maybe_add_resolved(maybe_resolved) + |> maybe_add_ap_id_match(query_string) + |> maybe_add_uri_match(query_string) results = query_string @@ -39,6 +37,29 @@ def search(query_string, opts \\ []) do results end + defp maybe_add_resolved(list, {:ok, %User{} = user}) do + [user.id | list] + end + + defp maybe_add_resolved(list, _), do: list + + defp maybe_add_ap_id_match(list, query) do + if user = User.get_cached_by_ap_id(query) do + [user.id | list] + else + list + end + end + + defp maybe_add_uri_match(list, query) do + with {:ok, query} <- UriType.cast(query), + %User{} = user <- Pleroma.Repo.get_by(User, uri: query) do + [user.id | list] + else + _ -> list + end + end + defp format_query(query_string) do # Strip the beginning @ off if there is a query query_string = String.trim_leading(query_string, "@") diff --git a/test/user_search_test.exs b/test/user_search_test.exs index 68fda1c53..cc14e9741 100644 --- a/test/user_search_test.exs +++ b/test/user_search_test.exs @@ -36,6 +36,21 @@ test "returns a user with matching ap_id as the first result" do assert first_user.id == user.id end + test "returns a user with matching uri as the first result" do + user = + insert(:user, %{ + nickname: "no_relation", + ap_id: "https://lain.com/users/lain", + uri: "https://lain.com/@lain" + }) + + _user = insert(:user, %{nickname: "com_user"}) + + [first_user, _second_user] = User.search("https://lain.com/@lain") + + assert first_user.id == user.id + end + test "excludes invisible users from results" do user = insert(:user, %{nickname: "john t1000"}) insert(:user, %{invisible: true, nickname: "john t800"}) From 1e0f3f8514a42b088ed68ece5f9e339ad829e242 Mon Sep 17 00:00:00 2001 From: lain Date: Fri, 25 Sep 2020 08:56:58 +0200 Subject: [PATCH 320/460] User search: Make uri matches case insensitive. --- .../20200925065249_make_user_ids_ci.exs | 19 +++++++++++++++++++ test/user_search_test.exs | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 priv/repo/migrations/20200925065249_make_user_ids_ci.exs diff --git a/priv/repo/migrations/20200925065249_make_user_ids_ci.exs b/priv/repo/migrations/20200925065249_make_user_ids_ci.exs new file mode 100644 index 000000000..b7305f137 --- /dev/null +++ b/priv/repo/migrations/20200925065249_make_user_ids_ci.exs @@ -0,0 +1,19 @@ +defmodule Pleroma.Repo.Migrations.MakeUserIdsCI do + use Ecto.Migration + + def up do + alter table(:users) do + modify(:uri, :citext) + end + + create(unique_index(:users, :uri)) + end + + def don do + drop(unique_index(:users, :uri)) + + alter table(:users) do + modify(:uri, :text) + end + end +end diff --git a/test/user_search_test.exs b/test/user_search_test.exs index cc14e9741..b99a77b57 100644 --- a/test/user_search_test.exs +++ b/test/user_search_test.exs @@ -41,7 +41,7 @@ test "returns a user with matching uri as the first result" do insert(:user, %{ nickname: "no_relation", ap_id: "https://lain.com/users/lain", - uri: "https://lain.com/@lain" + uri: "https://lain.com/@Lain" }) _user = insert(:user, %{nickname: "com_user"}) From 05b5241314182c5aab2907e27d4c5f46d7617f56 Mon Sep 17 00:00:00 2001 From: lain Date: Fri, 25 Sep 2020 09:12:48 +0200 Subject: [PATCH 321/460] Linter fixes --- lib/pleroma/user/search.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/user/search.ex b/lib/pleroma/user/search.ex index d747bfa52..03f2c552f 100644 --- a/lib/pleroma/user/search.ex +++ b/lib/pleroma/user/search.ex @@ -3,9 +3,10 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.User.Search do + alias Pleroma.EctoType.ActivityPub.ObjectValidators.Uri, as: UriType alias Pleroma.Pagination alias Pleroma.User - alias Pleroma.EctoType.ActivityPub.ObjectValidators.Uri, as: UriType + import Ecto.Query @limit 20 From 8b84ca4901c378d734cd87ae3e4bf72c508a84bf Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 25 Sep 2020 10:37:59 -0500 Subject: [PATCH 322/460] Simplify the value comparison --- lib/mix/tasks/pleroma/user.ex | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/mix/tasks/pleroma/user.ex b/lib/mix/tasks/pleroma/user.ex index d50205600..e06262804 100644 --- a/lib/mix/tasks/pleroma/user.ex +++ b/lib/mix/tasks/pleroma/user.ex @@ -455,11 +455,7 @@ defp set_locked(user, value) do end defp set_confirmed(user, value) do - {:ok, user} = - case value do - true -> User.need_confirmation(user, false) - false -> User.need_confirmation(user, true) - end + {:ok, user} = User.need_confirmation(user, !value) shell_info("Confirmation pending status of #{user.nickname}: #{user.confirmation_pending}") user From 4a30598b9eac9d231546078191ff91b933d63de3 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 25 Sep 2020 12:20:52 -0500 Subject: [PATCH 323/460] Config settings leak and break configdb migration tests when async --- test/config/deprecation_warnings_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/config/deprecation_warnings_test.exs b/test/config/deprecation_warnings_test.exs index 28355d7eb..f81a7b580 100644 --- a/test/config/deprecation_warnings_test.exs +++ b/test/config/deprecation_warnings_test.exs @@ -1,5 +1,5 @@ defmodule Pleroma.Config.DeprecationWarningsTest do - use ExUnit.Case, async: true + use ExUnit.Case use Pleroma.Tests.Helpers import ExUnit.CaptureLog From 93b674b66da31964e838c8632ce8cdd7e722516a Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 25 Sep 2020 12:46:49 -0500 Subject: [PATCH 324/460] Fix test failures for NoOpPolicy describe/0 --- test/web/activity_pub/mrf/mrf_test.exs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/web/activity_pub/mrf/mrf_test.exs b/test/web/activity_pub/mrf/mrf_test.exs index a63b25423..e82c8afa6 100644 --- a/test/web/activity_pub/mrf/mrf_test.exs +++ b/test/web/activity_pub/mrf/mrf_test.exs @@ -61,6 +61,8 @@ test "matches are case-insensitive" do describe "describe/0" do test "it works as expected with noop policy" do + clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.NoOpPolicy]) + expected = %{ mrf_policies: ["NoOpPolicy"], exclusions: false From 4e4f77108207157a49a627edb03951e2f15b62f1 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Sat, 26 Sep 2020 19:32:16 +0300 Subject: [PATCH 325/460] Adjusted MediaProxyControllerTest to gracefully fail on missing dependencies. Installation docs update. Added ffmpeg/imagemagick checks to launch checks (if media preview proxy is enabled). Added documentation on installing optional media / graphics packages (imagemagick, ffmpeg, exiftool). --- docs/installation/alpine_linux_en.md | 18 +++++------ docs/installation/arch_linux_en.md | 13 ++++++-- docs/installation/debian_based_en.md | 13 ++++++-- docs/installation/debian_based_jp.md | 12 +++++-- docs/installation/freebsd_en.md | 8 ++++- docs/installation/gentoo_en.md | 13 ++++++-- docs/installation/netbsd_en.md | 4 +++ docs/installation/openbsd_en.md | 13 ++++++++ docs/installation/openbsd_fi.md | 11 +++++++ .../optional/media_graphics_packages.md | 32 +++++++++++++++++++ docs/installation/otp_en.md | 25 ++++++++++++--- lib/pleroma/application.ex | 18 ++++++++++- lib/pleroma/helpers/media_helper.ex | 12 +++++++ .../media_proxy_controller_test.exs | 15 +++++++++ 14 files changed, 180 insertions(+), 27 deletions(-) create mode 100644 docs/installation/optional/media_graphics_packages.md diff --git a/docs/installation/alpine_linux_en.md b/docs/installation/alpine_linux_en.md index 0b9f5cdae..d89c7f46f 100644 --- a/docs/installation/alpine_linux_en.md +++ b/docs/installation/alpine_linux_en.md @@ -13,8 +13,6 @@ It assumes that you have administrative rights, either as root or a user with [s * `erlang-parsetools` * `erlang-xmerl` * `git` -* `ffmpeg` -* `ImageMagick` * Development Tools * `cmake` @@ -22,6 +20,9 @@ It assumes that you have administrative rights, either as root or a user with [s * `nginx` (preferred, example configs for other reverse proxies can be found in the repo) * `certbot` (or any other ACME client for Let’s Encrypt certificates) +* `ImageMagick` +* `ffmpeg` +* `exiftool` ### Prepare the system @@ -31,7 +32,6 @@ It assumes that you have administrative rights, either as root or a user with [s awk 'NR==2' /etc/apk/repositories | sed 's/main/community/' | tee -a /etc/apk/repositories ``` - * Then update the system, if not already done: ```shell @@ -59,12 +59,6 @@ sudo apk add erlang erlang-runtime-tools erlang-xmerl elixir sudo apk add erlang-eldap ``` -### Install ffmpeg and ImageMagick - -```shell -sudo apk add ffmpeg imagemagick -``` - ### Install PostgreSQL * Install Postgresql server: @@ -85,6 +79,12 @@ sudo /etc/init.d/postgresql start sudo rc-update add postgresql ``` +### Install media / graphics packages (optional, see [`docs/installation/optional/media_graphics_packages.md`](docs/installation/optional/media_graphics_packages.md)) + +```shell +sudo apk add ffmpeg imagemagick exiftool +``` + ### Install PleromaBE * Add a new system user for the Pleroma service: diff --git a/docs/installation/arch_linux_en.md b/docs/installation/arch_linux_en.md index 38bb82432..724b4660a 100644 --- a/docs/installation/arch_linux_en.md +++ b/docs/installation/arch_linux_en.md @@ -10,13 +10,14 @@ This guide will assume that you have administrative rights, either as root or a * `git` * `base-devel` * `cmake` -* `ffmpeg` -* `ImageMagick` #### Optional packages used in this guide * `nginx` (preferred, example configs for other reverse proxies can be found in the repo) * `certbot` (or any other ACME client for Let’s Encrypt certificates) +* `ImageMagick` +* `ffmpeg` +* `exiftool` ### Prepare the system @@ -29,7 +30,7 @@ sudo pacman -Syu * Install some of the above mentioned programs: ```shell -sudo pacman -S git base-devel elixir cmake ffmpeg imagemagick +sudo pacman -S git base-devel elixir cmake ``` ### Install PostgreSQL @@ -54,6 +55,12 @@ sudo -iu postgres initdb -D /var/lib/postgres/data sudo systemctl enable --now postgresql.service ``` +### Install media / graphics packages (optional, see [`docs/installation/optional/media_graphics_packages.md`](docs/installation/optional/media_graphics_packages.md)) + +```shell +sudo pacman -S ffmpeg imagemagick perl-image-exiftool +``` + ### Install PleromaBE * Add a new system user for the Pleroma service: diff --git a/docs/installation/debian_based_en.md b/docs/installation/debian_based_en.md index 30ee64c01..eac499a29 100644 --- a/docs/installation/debian_based_en.md +++ b/docs/installation/debian_based_en.md @@ -13,13 +13,14 @@ This guide will assume you are on Debian Stretch. This guide should also work wi * `git` * `build-essential` * `cmake` -* `ffmpeg` -* `ImageMagick` #### Optional packages used in this guide * `nginx` (preferred, example configs for other reverse proxies can be found in the repo) * `certbot` (or any other ACME client for Let’s Encrypt certificates) +* `ImageMagick` +* `ffmpeg` +* `exiftool` ### Prepare the system @@ -33,7 +34,7 @@ sudo apt full-upgrade * Install some of the above mentioned programs: ```shell -sudo apt install git build-essential postgresql postgresql-contrib cmake ffmpeg imagemagick +sudo apt install git build-essential postgresql postgresql-contrib cmake ``` ### Install Elixir and Erlang @@ -52,6 +53,12 @@ sudo apt update sudo apt install elixir erlang-dev erlang-nox ``` +### Optional packages: [`docs/installation/optional/media_graphics_packages.md`](docs/installation/optional/media_graphics_packages.md) + +```shell +sudo apt install imagemagick ffmpeg libimage-exiftool-perl +``` + ### Install PleromaBE * Add a new system user for the Pleroma service: diff --git a/docs/installation/debian_based_jp.md b/docs/installation/debian_based_jp.md index 219f40525..764afbe1a 100644 --- a/docs/installation/debian_based_jp.md +++ b/docs/installation/debian_based_jp.md @@ -17,13 +17,14 @@ - `git` - `build-essential` - `cmake` -- `ffmpeg` -- `ImageMagick` #### このガイドで利用している追加パッケージ - `nginx` (おすすめです。他のリバースプロキシを使う場合は、参考となる設定をこのリポジトリから探してください) - `certbot` (または何らかのLet's Encrypt向けACMEクライアント) +- `ImageMagick` +- `ffmpeg` +- `exiftool` ### システムを準備する @@ -38,7 +39,6 @@ sudo apt full-upgrade sudo apt install git build-essential postgresql postgresql-contrib cmake ffmpeg imagemagick ``` - ### ElixirとErlangをインストールします * Erlangのリポジトリをダウンロードおよびインストールします。 @@ -53,6 +53,12 @@ sudo apt update sudo apt install elixir erlang-dev erlang-nox ``` +### オプションパッケージ: [`docs/installation/optional/media_graphics_packages.md`](docs/installation/optional/media_graphics_packages.md) + +```shell +sudo apt install imagemagick ffmpeg libimage-exiftool-perl +``` + ### Pleroma BE (バックエンド) をインストールします * Pleroma用に新しいユーザーを作ります。 diff --git a/docs/installation/freebsd_en.md b/docs/installation/freebsd_en.md index 01b410a46..fdcb06c53 100644 --- a/docs/installation/freebsd_en.md +++ b/docs/installation/freebsd_en.md @@ -7,7 +7,7 @@ This document was written for FreeBSD 12.1, but should be work on future release This assumes the target system has `pkg(8)`. ``` -# pkg install elixir postgresql12-server postgresql12-client postgresql12-contrib git-lite sudo nginx gmake acme.sh cmake ffmpeg imagemagick +# pkg install elixir postgresql12-server postgresql12-client postgresql12-contrib git-lite sudo nginx gmake acme.sh cmake ``` Copy the rc.d scripts to the right directory: @@ -26,6 +26,12 @@ Setup the required services to automatically start at boot, using `sysrc(8)`. # service postgresql start ``` +### Install media / graphics packages (optional, see [`docs/installation/optional/media_graphics_packages.md`](docs/installation/optional/media_graphics_packages.md)) + +```shell +# pkg install imagemagick ffmpeg p5-Image-ExifTool +``` + ## Configuring Pleroma Create a user for Pleroma: diff --git a/docs/installation/gentoo_en.md b/docs/installation/gentoo_en.md index 9a8b54ece..638fc4e47 100644 --- a/docs/installation/gentoo_en.md +++ b/docs/installation/gentoo_en.md @@ -29,14 +29,15 @@ Gentoo quite pointedly does not come with a cron daemon installed, and as such i * `dev-lang/elixir` * `dev-vcs/git` * `dev-util/cmake` -* `media-video/ffmpeg` -* `media-gfx/imagemagick` #### Optional ebuilds used in this guide * `www-servers/nginx` (preferred, example configs for other reverse proxies can be found in the repo) * `app-crypt/certbot` (or any other ACME client for Let’s Encrypt certificates) * `app-crypt/certbot-nginx` (nginx certbot plugin that allows use of the all-powerful `--nginx` flag on certbot) +* `media-gfx/imagemagick` +* `media-video/ffmpeg` +* `media-libs/exiftool` ### Prepare the system @@ -49,7 +50,7 @@ Gentoo quite pointedly does not come with a cron daemon installed, and as such i * Emerge all required the required and suggested software in one go: ```shell - # emerge --ask dev-db/postgresql dev-lang/elixir dev-vcs/git www-servers/nginx app-crypt/certbot app-crypt/certbot-nginx dev-util/cmake media-video/ffmpeg media-gfx/imagemagick + # emerge --ask dev-db/postgresql dev-lang/elixir dev-vcs/git www-servers/nginx app-crypt/certbot app-crypt/certbot-nginx dev-util/cmake ``` If you would not like to install the optional packages, remove them from this line. @@ -89,6 +90,12 @@ If you do not plan to make any modifications to your Pleroma instance, cloning d Not only does this make it much easier to deploy changes you make, as you can commit and pull from upstream and all that good stuff from the comfort of your local machine then simply `git pull` on your instance server when you're ready to deploy, it also ensures you are compliant with the Affero General Public Licence that Pleroma is licenced under, which stipulates that all network services provided with modified AGPL code must publish their changes on a publicly available internet service and for free. It also makes it much easier to ask for help from and provide help to your fellow Pleroma admins if your public repo always reflects what you are running because it is part of your deployment procedure. +### Install media / graphics packages (optional, see [`docs/installation/optional/media_graphics_packages.md`](docs/installation/optional/media_graphics_packages.md)) + +```shell +# emerge --ask media-video/ffmpeg media-gfx/imagemagick media-libs/exiftool +``` + ### Install PleromaBE * Add a new system user for the Pleroma service and set up default directories: diff --git a/docs/installation/netbsd_en.md b/docs/installation/netbsd_en.md index 8cf2e4682..d5fa04fdf 100644 --- a/docs/installation/netbsd_en.md +++ b/docs/installation/netbsd_en.md @@ -44,6 +44,10 @@ pgsql=YES First, run `# /etc/rc.d/pgsql start`. Then, `$ sudo -Hu pgsql -g pgsql createdb`. +### Install media / graphics packages (optional, see [`docs/installation/optional/media_graphics_packages.md`](docs/installation/optional/media_graphics_packages.md)) + +`# pkgin install ImageMagick ffmpeg4 p5-Image-ExifTool` + ## Configuring Pleroma Create a user for Pleroma: diff --git a/docs/installation/openbsd_en.md b/docs/installation/openbsd_en.md index 277e5ec43..8092ac379 100644 --- a/docs/installation/openbsd_en.md +++ b/docs/installation/openbsd_en.md @@ -25,6 +25,19 @@ pkg_add elixir gmake git postgresql-server postgresql-contrib cmake ffmpeg Image Pleroma requires a reverse proxy, OpenBSD has relayd in base (and is used in this guide) and packages/ports are available for nginx (www/nginx) and apache (www/apache-httpd). Independently of the reverse proxy, [acme-client(1)](https://man.openbsd.org/acme-client) can be used to get a certificate from Let's Encrypt. +#### Optional software + +Per [`docs/installation/optional/media_graphics_packages.md`](docs/installation/optional/media_graphics_packages.md): + * ImageMagick + * ffmpeg + * exiftool + +To install the above: + +``` +pkg_add ImageMagick ffmpeg p5-Image-ExifTool +``` + #### Creating the pleroma user Pleroma will be run by a dedicated user, \_pleroma. Before creating it, insert the following lines in login.conf: ``` diff --git a/docs/installation/openbsd_fi.md b/docs/installation/openbsd_fi.md index 2cb03e73e..01cf34ab4 100644 --- a/docs/installation/openbsd_fi.md +++ b/docs/installation/openbsd_fi.md @@ -18,6 +18,17 @@ Asenna tarvittava ohjelmisto: `# pkg_add git elixir gmake postgresql-server-10.3 postgresql-contrib-10.3 cmake ffmpeg ImageMagick` +#### Optional software + +[`docs/installation/optional/media_graphics_packages.md`](docs/installation/optional/media_graphics_packages.md): + * ImageMagick + * ffmpeg + * exiftool + +Asenna tarvittava ohjelmisto: + +`# pkg_add ImageMagick ffmpeg p5-Image-ExifTool` + Luo postgresql-tietokanta: `# su - _postgresql` diff --git a/docs/installation/optional/media_graphics_packages.md b/docs/installation/optional/media_graphics_packages.md new file mode 100644 index 000000000..cb3d71188 --- /dev/null +++ b/docs/installation/optional/media_graphics_packages.md @@ -0,0 +1,32 @@ +# Optional software packages needed for specific functionality + +For specific Pleroma functionality (which is disabled by default) some or all of the below packages are required: + * `ImageMagic` + * `ffmpeg` + * `exiftool` + +Please refer to documentation in `docs/installation` on how to install them on specific OS. + +Note: the packages are not required with the current default settings of Pleroma. + +## `ImageMagick` + +`ImageMagick` is a set of tools to create, edit, compose, or convert bitmap images. + +It is required for the following Pleroma features: + * `Pleroma.Upload.Filters.Mogrify`, `Pleroma.Upload.Filters.Mogrifun` upload filters (related config: `Plaroma.Upload/filters` in `config/config.exs`) + * Media preview proxy for still images (related config: `media_preview_proxy/enabled` in `config/config.exs`) + +## `ffmpeg` + +`ffmpeg` is software to record, convert and stream audio and video. + +It is required for the following Pleroma features: + * Media preview proxy for videos (related config: `media_preview_proxy/enabled` in `config/config.exs`) + +## `exiftool` + +`exiftool` is media files metadata reader/writer. + +It is required for the following Pleroma features: + * `Pleroma.Upload.Filters.Exiftool` upload filter (related config: `Plaroma.Upload/filters` in `config/config.exs`) diff --git a/docs/installation/otp_en.md b/docs/installation/otp_en.md index 8fdf6b5b5..f6b05c887 100644 --- a/docs/installation/otp_en.md +++ b/docs/installation/otp_en.md @@ -27,19 +27,36 @@ Other than things bundled in the OTP release Pleroma depends on: * PostgreSQL (also utilizes extensions in postgresql-contrib) * nginx (could be swapped with another reverse proxy but this guide covers only it) * certbot (for Let's Encrypt certificates, could be swapped with another ACME client, but this guide covers only it) -* ffmpeg (needed for media preview proxy) -* ImageMagick (needed for media preview proxy) === "Alpine" ``` echo "http://nl.alpinelinux.org/alpine/latest-stable/community" >> /etc/apk/repositories apk update - apk add curl unzip ncurses postgresql postgresql-contrib nginx certbot ffmpeg imagemagick + apk add curl unzip ncurses postgresql postgresql-contrib nginx certbot ``` === "Debian/Ubuntu" ``` - apt install curl unzip libncurses5 postgresql postgresql-contrib nginx certbot ffmpeg imagemagick + apt install curl unzip libncurses5 postgresql postgresql-contrib nginx certbot + ``` + +### Installing optional packages + +Per [`docs/installation/optional/media_graphics_packages.md`](docs/installation/optional/media_graphics_packages.md): + * ImageMagick + * ffmpeg + * exiftool + +=== "Alpine" + ``` + echo "http://nl.alpinelinux.org/alpine/latest-stable/community" >> /etc/apk/repositories + apk update + apk add imagemagick ffmpeg exiftool + ``` + +=== "Debian/Ubuntu" + ``` + apt install imagemagick ffmpeg libimage-exiftool-perl ``` ## Setup diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 00ec79a2a..d7d8e423e 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -268,7 +268,8 @@ defp check_system_commands do with true <- filter in filters, false <- Pleroma.Utils.command_available?(command_required) do Logger.error( - "#{filter} is specified in list of Pleroma.Upload filters, but the #{command_required} command is not found" + "#{filter} is specified in list of Pleroma.Upload filters, but the " <> + "#{command_required} command is not found" ) end end @@ -276,5 +277,20 @@ defp check_system_commands do check_filter.(Pleroma.Upload.Filters.Exiftool, "exiftool") check_filter.(Pleroma.Upload.Filters.Mogrify, "mogrify") check_filter.(Pleroma.Upload.Filters.Mogrifun, "mogrify") + + with true <- Config.get([:media_preview_proxy, :enabled]), + missing_graphics_tools = Pleroma.Helpers.MediaHelper.missing_dependencies(), + [] <- missing_graphics_tools do + :noop + else + false -> + :noop + + missing_graphics_tools -> + Logger.error( + "The following dependencies required by Media preview proxy " <> + "(which is currently enabled) are not installed: #{inspect(missing_graphics_tools)}" + ) + end end end diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index b6f35a24b..6b799173e 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -9,6 +9,18 @@ defmodule Pleroma.Helpers.MediaHelper do alias Pleroma.HTTP + require Logger + + def missing_dependencies do + Enum.reduce([imagemagick: "convert", ffmpeg: "ffmpeg"], [], fn {sym, executable}, acc -> + if Pleroma.Utils.command_available?(executable) do + acc + else + [sym | acc] + end + end) + end + def image_resize(url, options) do with executable when is_binary(executable) <- System.find_executable("convert"), {:ok, args} <- prepare_image_resize_args(options), diff --git a/test/web/media_proxy/media_proxy_controller_test.exs b/test/web/media_proxy/media_proxy_controller_test.exs index 33e6873f7..e9b584822 100644 --- a/test/web/media_proxy/media_proxy_controller_test.exs +++ b/test/web/media_proxy/media_proxy_controller_test.exs @@ -81,6 +81,15 @@ test "it returns 404 when url is in banned_urls cache", %{conn: conn, url: url} end describe "Media Preview Proxy" do + def assert_dependencies_installed do + missing_dependencies = Pleroma.Helpers.MediaHelper.missing_dependencies() + + assert missing_dependencies == [], + "Error: missing dependencies (please refer to `docs/installation`): #{ + inspect(missing_dependencies) + }" + end + setup do clear_config([:media_proxy, :enabled], true) clear_config([:media_preview_proxy, :enabled], true) @@ -184,6 +193,8 @@ test "with `static=true` and GIF image preview requested, responds with JPEG ima url: url, media_proxy_url: media_proxy_url } do + assert_dependencies_installed() + # Setting a high :min_content_length to ensure this scenario is not affected by its logic clear_config([:media_preview_proxy, :min_content_length], 1_000_000_000) @@ -270,6 +281,8 @@ test "thumbnails PNG images into PNG", %{ url: url, media_proxy_url: media_proxy_url } do + assert_dependencies_installed() + Tesla.Mock.mock(fn %{method: "head", url: ^media_proxy_url} -> %Tesla.Env{status: 200, body: "", headers: [{"content-type", "image/png"}]} @@ -290,6 +303,8 @@ test "thumbnails JPEG images into JPEG", %{ url: url, media_proxy_url: media_proxy_url } do + assert_dependencies_installed() + Tesla.Mock.mock(fn %{method: "head", url: ^media_proxy_url} -> %Tesla.Env{status: 200, body: "", headers: [{"content-type", "image/jpeg"}]} From de993b856bc2145e7c4aaa47767c7edc826798c7 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Mon, 28 Sep 2020 09:16:42 +0300 Subject: [PATCH 326/460] added `force` option to the unfollow operation --- docs/API/admin_api.md | 6 +- lib/mix/tasks/pleroma/relay.ex | 13 +++- lib/pleroma/user.ex | 4 +- lib/pleroma/web/activity_pub/relay.ex | 20 ++++- .../admin_api/controllers/relay_controller.ex | 16 +--- .../operations/admin/relay_operation.ex | 12 ++- test/tasks/relay_test.exs | 74 +++++++++++++++++++ test/web/activity_pub/relay_test.exs | 40 ++++++++++ 8 files changed, 160 insertions(+), 25 deletions(-) diff --git a/docs/API/admin_api.md b/docs/API/admin_api.md index 7992db58f..ddcab1a2c 100644 --- a/docs/API/admin_api.md +++ b/docs/API/admin_api.md @@ -349,9 +349,9 @@ Response: ### Unfollow a Relay -Params: - -* `relay_url` +- Params: + - `relay_url` + - *optional* `force`: forcefully unfollow a relay even when the relay is not available. (default is `false`) Response: diff --git a/lib/mix/tasks/pleroma/relay.ex b/lib/mix/tasks/pleroma/relay.ex index a6d8d6c1c..bb808ca47 100644 --- a/lib/mix/tasks/pleroma/relay.ex +++ b/lib/mix/tasks/pleroma/relay.ex @@ -21,10 +21,19 @@ def run(["follow", target]) do end end - def run(["unfollow", target]) do + def run(["unfollow", target | rest]) do start_pleroma() - with {:ok, _activity} <- Relay.unfollow(target) do + {options, [], []} = + OptionParser.parse( + rest, + strict: [force: :boolean], + aliases: [f: :force] + ) + + force = Keyword.get(options, :force, false) + + with {:ok, _activity} <- Relay.unfollow(target, %{force: force}) do # put this task to sleep to allow the genserver to push out the messages :timer.sleep(500) else diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 03be61ccf..71ace1c34 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -915,9 +915,7 @@ defp do_unfollow(%User{} = follower, %User{} = followed) do FollowingRelationship.unfollow(follower, followed) {:ok, followed} = update_follower_count(followed) - {:ok, follower} = - follower - |> update_following_count() + {:ok, follower} = update_following_count(follower) {:ok, follower, followed} diff --git a/lib/pleroma/web/activity_pub/relay.ex b/lib/pleroma/web/activity_pub/relay.ex index b65710a94..6606e1780 100644 --- a/lib/pleroma/web/activity_pub/relay.ex +++ b/lib/pleroma/web/activity_pub/relay.ex @@ -30,12 +30,16 @@ def follow(target_instance) do end end - @spec unfollow(String.t()) :: {:ok, Activity.t()} | {:error, any()} - def unfollow(target_instance) do + @spec unfollow(String.t(), map()) :: {:ok, Activity.t()} | {:error, any()} + def unfollow(target_instance, opts \\ %{}) do with %User{} = local_user <- get_actor(), - {:ok, %User{} = target_user} <- User.get_or_fetch_by_ap_id(target_instance), + {:ok, target_user} <- fetch_target_user(target_instance, opts), {:ok, activity} <- ActivityPub.unfollow(local_user, target_user) do - User.unfollow(local_user, target_user) + case target_user.id do + nil -> User.update_following_count(local_user) + _ -> User.unfollow(local_user, target_user) + end + Logger.info("relay: unfollowed instance: #{target_instance}: id=#{activity.data["id"]}") {:ok, activity} else @@ -43,6 +47,14 @@ def unfollow(target_instance) do end end + defp fetch_target_user(ap_id, opts) do + case {opts[:force], User.get_or_fetch_by_ap_id(ap_id)} do + {_, {:ok, %User{} = user}} -> {:ok, user} + {true, _} -> {:ok, %User{ap_id: ap_id}} + {_, error} -> error + end + end + @spec publish(any()) :: {:ok, Activity.t()} | {:error, any()} def publish(%Activity{data: %{"type" => "Create"}} = activity) do with %User{} = user <- get_actor(), diff --git a/lib/pleroma/web/admin_api/controllers/relay_controller.ex b/lib/pleroma/web/admin_api/controllers/relay_controller.ex index 95d06dde7..6c19f09f7 100644 --- a/lib/pleroma/web/admin_api/controllers/relay_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/relay_controller.ex @@ -33,11 +33,7 @@ def index(conn, _params) do def follow(%{assigns: %{user: admin}, body_params: %{relay_url: target}} = conn, _) do with {:ok, _message} <- Relay.follow(target) do - ModerationLog.insert_log(%{ - action: "relay_follow", - actor: admin, - target: target - }) + ModerationLog.insert_log(%{action: "relay_follow", actor: admin, target: target}) json(conn, %{actor: target, followed_back: target in Relay.following()}) else @@ -48,13 +44,9 @@ def follow(%{assigns: %{user: admin}, body_params: %{relay_url: target}} = conn, end end - def unfollow(%{assigns: %{user: admin}, body_params: %{relay_url: target}} = conn, _) do - with {:ok, _message} <- Relay.unfollow(target) do - ModerationLog.insert_log(%{ - action: "relay_unfollow", - actor: admin, - target: target - }) + def unfollow(%{assigns: %{user: admin}, body_params: %{relay_url: target} = params} = conn, _) do + with {:ok, _message} <- Relay.unfollow(target, %{force: params[:force]}) do + ModerationLog.insert_log(%{action: "relay_unfollow", actor: admin, target: target}) json(conn, target) else diff --git a/lib/pleroma/web/api_spec/operations/admin/relay_operation.ex b/lib/pleroma/web/api_spec/operations/admin/relay_operation.ex index e06b2d164..f754bb9f5 100644 --- a/lib/pleroma/web/api_spec/operations/admin/relay_operation.ex +++ b/lib/pleroma/web/api_spec/operations/admin/relay_operation.ex @@ -56,7 +56,7 @@ def unfollow_operation do operationId: "AdminAPI.RelayController.unfollow", security: [%{"oAuth" => ["write:follows"]}], parameters: admin_api_params(), - requestBody: request_body("Parameters", relay_url()), + requestBody: request_body("Parameters", relay_unfollow()), responses: %{ 200 => Operation.response("Status", "application/json", %Schema{ @@ -91,4 +91,14 @@ defp relay_url do } } end + + defp relay_unfollow do + %Schema{ + type: :object, + properties: %{ + relay_url: %Schema{type: :string, format: :uri}, + force: %Schema{type: :boolean, default: false} + } + } + end end diff --git a/test/tasks/relay_test.exs b/test/tasks/relay_test.exs index e5225b64c..cf48e7dda 100644 --- a/test/tasks/relay_test.exs +++ b/test/tasks/relay_test.exs @@ -81,6 +81,80 @@ test "relay is unfollowed" do assert undo_activity.data["object"]["id"] == cancelled_activity.data["id"] refute "#{target_instance}/followers" in User.following(local_user) end + + test "unfollow when relay is dead" do + user = insert(:user) + target_instance = user.ap_id + + Mix.Tasks.Pleroma.Relay.run(["follow", target_instance]) + + %User{ap_id: follower_id} = local_user = Relay.get_actor() + target_user = User.get_cached_by_ap_id(target_instance) + follow_activity = Utils.fetch_latest_follow(local_user, target_user) + User.follow(local_user, target_user) + + assert "#{target_instance}/followers" in User.following(local_user) + + Tesla.Mock.mock(fn %{method: :get, url: ^target_instance} -> + %Tesla.Env{status: 404} + end) + + Pleroma.Repo.delete(user) + Cachex.clear(:user_cache) + + Mix.Tasks.Pleroma.Relay.run(["unfollow", target_instance]) + + cancelled_activity = Activity.get_by_ap_id(follow_activity.data["id"]) + assert cancelled_activity.data["state"] == "accept" + + assert [] == + ActivityPub.fetch_activities( + [], + %{ + type: "Undo", + actor_id: follower_id, + skip_preload: true, + invisible_actors: true + } + ) + end + + test "force unfollow when relay is dead" do + user = insert(:user) + target_instance = user.ap_id + + Mix.Tasks.Pleroma.Relay.run(["follow", target_instance]) + + %User{ap_id: follower_id} = local_user = Relay.get_actor() + target_user = User.get_cached_by_ap_id(target_instance) + follow_activity = Utils.fetch_latest_follow(local_user, target_user) + User.follow(local_user, target_user) + + assert "#{target_instance}/followers" in User.following(local_user) + + Tesla.Mock.mock(fn %{method: :get, url: ^target_instance} -> + %Tesla.Env{status: 404} + end) + + Pleroma.Repo.delete(user) + Cachex.clear(:user_cache) + + Mix.Tasks.Pleroma.Relay.run(["unfollow", target_instance, "--force"]) + + cancelled_activity = Activity.get_by_ap_id(follow_activity.data["id"]) + assert cancelled_activity.data["state"] == "cancelled" + + [undo_activity] = + ActivityPub.fetch_activities( + [], + %{type: "Undo", actor_id: follower_id, skip_preload: true, invisible_actors: true} + ) + + assert undo_activity.data["type"] == "Undo" + assert undo_activity.data["actor"] == local_user.ap_id + assert undo_activity.data["object"]["id"] == cancelled_activity.data["id"] + refute "#{target_instance}/followers" in User.following(local_user) + end end describe "mix pleroma.relay list" do diff --git a/test/web/activity_pub/relay_test.exs b/test/web/activity_pub/relay_test.exs index 9d657ac4f..3284980f7 100644 --- a/test/web/activity_pub/relay_test.exs +++ b/test/web/activity_pub/relay_test.exs @@ -63,6 +63,46 @@ test "returns activity" do assert activity.data["to"] == [user.ap_id] refute "#{user.ap_id}/followers" in User.following(service_actor) end + + test "force unfollow when target service is dead" do + user = insert(:user) + user_ap_id = user.ap_id + user_id = user.id + + Tesla.Mock.mock(fn %{method: :get, url: ^user_ap_id} -> + %Tesla.Env{status: 404} + end) + + service_actor = Relay.get_actor() + CommonAPI.follow(service_actor, user) + assert "#{user.ap_id}/followers" in User.following(service_actor) + + assert Pleroma.Repo.get_by( + Pleroma.FollowingRelationship, + follower_id: service_actor.id, + following_id: user_id + ) + + Pleroma.Repo.delete(user) + Cachex.clear(:user_cache) + + assert {:ok, %Activity{} = activity} = Relay.unfollow(user_ap_id, %{force: true}) + + assert refresh_record(service_actor).following_count == 0 + + refute Pleroma.Repo.get_by( + Pleroma.FollowingRelationship, + follower_id: service_actor.id, + following_id: user_id + ) + + assert activity.actor == "#{Pleroma.Web.Endpoint.url()}/relay" + assert user.ap_id in activity.recipients + assert activity.data["type"] == "Undo" + assert activity.data["actor"] == service_actor.ap_id + assert activity.data["to"] == [user_ap_id] + refute "#{user.ap_id}/followers" in User.following(service_actor) + end end describe "publish/1" do From ec2f70cd23ff77a1580650dd629a84f61df1d486 Mon Sep 17 00:00:00 2001 From: lain Date: Mon, 28 Sep 2020 14:14:32 +0200 Subject: [PATCH 327/460] CI: Add ffmpeg --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dc953a929..121e4abfe 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -59,7 +59,7 @@ unit-testing: alias: postgres command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] script: - - apt-get update && apt-get install -y libimage-exiftool-perl + - apt-get update && apt-get install -y libimage-exiftool-perl ffmpeg - mix deps.get - mix ecto.create - mix ecto.migrate @@ -93,7 +93,7 @@ unit-testing-rum: <<: *global_variables RUM_ENABLED: "true" script: - - apt-get update && apt-get install -y libimage-exiftool-perl + - apt-get update && apt-get install -y libimage-exiftool-perl ffmpeg - mix deps.get - mix ecto.create - mix ecto.migrate From 7ac4d1e7ee831cbbda535c00b7dc9aca053183be Mon Sep 17 00:00:00 2001 From: Angelina Filippova Date: Mon, 28 Sep 2020 18:13:45 +0300 Subject: [PATCH 328/460] Remove extra nesting and add labels in `:frontends` setting --- config/description.exs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/config/description.exs b/config/description.exs index ac3dfbb2b..be9cb0a16 100644 --- a/config/description.exs +++ b/config/description.exs @@ -44,11 +44,13 @@ }, %{ key: "git", + label: "Git", type: :string, description: "URL of the git repository of the frontend" }, %{ key: "build_url", + label: "Build URL", type: :string, description: "Either an url to a zip file containing the frontend or a template to build it by inserting the `ref`. The string `${ref}` will be replaced by the configured `ref`.", @@ -56,6 +58,7 @@ }, %{ key: "build_dir", + label: "Build Dir", type: :string, description: "The directory inside the zip file " } @@ -3681,9 +3684,7 @@ type: :map, description: "A map containing available frontends and parameters for their installation.", - children: [ - frontend_options - ] + children: frontend_options } ] }, From 7bc561127da6489862d3b7ea49ebc853c0267729 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 28 Sep 2020 18:15:31 +0300 Subject: [PATCH 329/460] Revert citext user URI migration URI paths are not actually case-insesitive, which caused migration issues on a number of databases. Closes #2188 --- .../20200925065249_make_user_ids_ci.exs | 18 ++++-------------- .../20200928145912_revert_citext_change.exs | 11 +++++++++++ test/user_search_test.exs | 2 +- 3 files changed, 16 insertions(+), 15 deletions(-) create mode 100644 priv/repo/migrations/20200928145912_revert_citext_change.exs diff --git a/priv/repo/migrations/20200925065249_make_user_ids_ci.exs b/priv/repo/migrations/20200925065249_make_user_ids_ci.exs index b7305f137..8ea0f2cf1 100644 --- a/priv/repo/migrations/20200925065249_make_user_ids_ci.exs +++ b/priv/repo/migrations/20200925065249_make_user_ids_ci.exs @@ -1,19 +1,9 @@ defmodule Pleroma.Repo.Migrations.MakeUserIdsCI do use Ecto.Migration - def up do - alter table(:users) do - modify(:uri, :citext) - end - - create(unique_index(:users, :uri)) - end - - def don do - drop(unique_index(:users, :uri)) - - alter table(:users) do - modify(:uri, :text) - end + def change do + # Migration retired, see + # https://git.pleroma.social/pleroma/pleroma/-/issues/2188 + :noop end end diff --git a/priv/repo/migrations/20200928145912_revert_citext_change.exs b/priv/repo/migrations/20200928145912_revert_citext_change.exs new file mode 100644 index 000000000..ab232f607 --- /dev/null +++ b/priv/repo/migrations/20200928145912_revert_citext_change.exs @@ -0,0 +1,11 @@ +defmodule Pleroma.Repo.Migrations.RevertCitextChange do + use Ecto.Migration + + def change do + alter table(:users) do + modify(:uri, :text) + end + + create_if_not_exists(unique_index(:users, :uri)) + end +end diff --git a/test/user_search_test.exs b/test/user_search_test.exs index b99a77b57..cc14e9741 100644 --- a/test/user_search_test.exs +++ b/test/user_search_test.exs @@ -41,7 +41,7 @@ test "returns a user with matching uri as the first result" do insert(:user, %{ nickname: "no_relation", ap_id: "https://lain.com/users/lain", - uri: "https://lain.com/@Lain" + uri: "https://lain.com/@lain" }) _user = insert(:user, %{nickname: "com_user"}) From ba7f9459b4798388eb4e441d096302c018354033 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 28 Sep 2020 18:22:59 -0500 Subject: [PATCH 330/460] Revert Rich Media censorship for sensitive statuses The #NSFW hashtag test was broken anyway. --- lib/pleroma/web/rich_media/helpers.ex | 1 - test/web/rich_media/helpers_test.exs | 35 --------------------------- 2 files changed, 36 deletions(-) diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex index d7a19df4a..d67b594b5 100644 --- a/lib/pleroma/web/rich_media/helpers.ex +++ b/lib/pleroma/web/rich_media/helpers.ex @@ -57,7 +57,6 @@ defp get_tld(host) do def fetch_data_for_object(object) do with true <- Config.get([:rich_media, :enabled]), - false <- object.data["sensitive"] || false, {:ok, page_url} <- HTML.extract_first_external_url_from_object(object), :ok <- validate_page_url(page_url), diff --git a/test/web/rich_media/helpers_test.exs b/test/web/rich_media/helpers_test.exs index 8264a9c41..4b97bd66b 100644 --- a/test/web/rich_media/helpers_test.exs +++ b/test/web/rich_media/helpers_test.exs @@ -64,41 +64,6 @@ test "crawls valid, complete URLs" do Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity) end - test "refuses to crawl URLs from posts marked sensitive" do - user = insert(:user) - - {:ok, activity} = - CommonAPI.post(user, %{ - status: "http://example.com/ogp", - sensitive: true - }) - - %Object{} = object = Object.normalize(activity) - - assert object.data["sensitive"] - - Config.put([:rich_media, :enabled], true) - - assert %{} = Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity) - end - - test "refuses to crawl URLs from posts tagged NSFW" do - user = insert(:user) - - {:ok, activity} = - CommonAPI.post(user, %{ - status: "http://example.com/ogp #nsfw" - }) - - %Object{} = object = Object.normalize(activity) - - assert object.data["sensitive"] - - Config.put([:rich_media, :enabled], true) - - assert %{} = Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity) - end - test "refuses to crawl URLs of private network from posts" do user = insert(:user) From 7d5c3883acafc2c84f65f38dd639d4999f14215a Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Tue, 29 Sep 2020 16:28:06 +0300 Subject: [PATCH 331/460] [#3031] Refactoring: moved system commands checks to ApplicationRequirements. --- lib/pleroma/application.ex | 34 ------------ lib/pleroma/application_requirements.ex | 72 +++++++++++++++++++++++-- 2 files changed, 67 insertions(+), 39 deletions(-) diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index d7d8e423e..e73d89350 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -56,7 +56,6 @@ def start(_type, _args) do Pleroma.ApplicationRequirements.verify!() setup_instrumenters() load_custom_modules() - check_system_commands() Pleroma.Docs.JSON.compile() adapter = Application.get_env(:tesla, :adapter) @@ -260,37 +259,4 @@ defp http_children(Tesla.Adapter.Gun, _) do end defp http_children(_, _), do: [] - - defp check_system_commands do - filters = Config.get([Pleroma.Upload, :filters]) - - check_filter = fn filter, command_required -> - with true <- filter in filters, - false <- Pleroma.Utils.command_available?(command_required) do - Logger.error( - "#{filter} is specified in list of Pleroma.Upload filters, but the " <> - "#{command_required} command is not found" - ) - end - end - - check_filter.(Pleroma.Upload.Filters.Exiftool, "exiftool") - check_filter.(Pleroma.Upload.Filters.Mogrify, "mogrify") - check_filter.(Pleroma.Upload.Filters.Mogrifun, "mogrify") - - with true <- Config.get([:media_preview_proxy, :enabled]), - missing_graphics_tools = Pleroma.Helpers.MediaHelper.missing_dependencies(), - [] <- missing_graphics_tools do - :noop - else - false -> - :noop - - missing_graphics_tools -> - Logger.error( - "The following dependencies required by Media preview proxy " <> - "(which is currently enabled) are not installed: #{inspect(missing_graphics_tools)}" - ) - end - end end diff --git a/lib/pleroma/application_requirements.ex b/lib/pleroma/application_requirements.ex index 16f62b6f5..b977257a3 100644 --- a/lib/pleroma/application_requirements.ex +++ b/lib/pleroma/application_requirements.ex @@ -9,6 +9,9 @@ defmodule Pleroma.ApplicationRequirements do defmodule VerifyError, do: defexception([:message]) + alias Pleroma.Config + alias Pleroma.Helpers.MediaHelper + import Ecto.Query require Logger @@ -16,7 +19,8 @@ defmodule VerifyError, do: defexception([:message]) @spec verify!() :: :ok | VerifyError.t() def verify! do :ok - |> check_confirmation_accounts! + |> check_system_commands!() + |> check_confirmation_accounts!() |> check_migrations_applied!() |> check_welcome_message_config!() |> check_rum!() @@ -48,7 +52,9 @@ def check_confirmation_accounts!(:ok) do if Pleroma.Config.get([:instance, :account_activation_required]) && not Pleroma.Config.get([Pleroma.Emails.Mailer, :enabled]) do Logger.error( - "Account activation enabled, but no Mailer settings enabled.\nPlease set config :pleroma, :instance, account_activation_required: false\nOtherwise setup and enable Mailer." + "Account activation enabled, but no Mailer settings enabled.\n" <> + "Please set config :pleroma, :instance, account_activation_required: false\n" <> + "Otherwise setup and enable Mailer." ) {:error, @@ -81,7 +87,9 @@ def check_migrations_applied!(:ok) do Enum.map(down_migrations, fn {:down, id, name} -> "- #{name} (#{id})\n" end) Logger.error( - "The following migrations were not applied:\n#{down_migrations_text}If you want to start Pleroma anyway, set\nconfig :pleroma, :i_am_aware_this_may_cause_data_loss, disable_migration_check: true" + "The following migrations were not applied:\n#{down_migrations_text}" <> + "If you want to start Pleroma anyway, set\n" <> + "config :pleroma, :i_am_aware_this_may_cause_data_loss, disable_migration_check: true" ) {:error, "Unapplied Migrations detected"} @@ -124,14 +132,22 @@ defp do_check_rum!(setting, migrate) do case {setting, migrate} do {true, false} -> Logger.error( - "Use `RUM` index is enabled, but were not applied migrations for it.\nIf you want to start Pleroma anyway, set\nconfig :pleroma, :database, rum_enabled: false\nOtherwise apply the following migrations:\n`mix ecto.migrate --migrations-path priv/repo/optional_migrations/rum_indexing/`" + "Use `RUM` index is enabled, but were not applied migrations for it.\n" <> + "If you want to start Pleroma anyway, set\n" <> + "config :pleroma, :database, rum_enabled: false\n" <> + "Otherwise apply the following migrations:\n" <> + "`mix ecto.migrate --migrations-path priv/repo/optional_migrations/rum_indexing/`" ) {:error, "Unapplied RUM Migrations detected"} {false, true} -> Logger.error( - "Detected applied migrations to use `RUM` index, but `RUM` isn't enable in settings.\nIf you want to use `RUM`, set\nconfig :pleroma, :database, rum_enabled: true\nOtherwise roll `RUM` migrations back.\n`mix ecto.rollback --migrations-path priv/repo/optional_migrations/rum_indexing/`" + "Detected applied migrations to use `RUM` index, but `RUM` isn't enable in settings.\n" <> + "If you want to use `RUM`, set\n" <> + "config :pleroma, :database, rum_enabled: true\n" <> + "Otherwise roll `RUM` migrations back.\n" <> + "`mix ecto.rollback --migrations-path priv/repo/optional_migrations/rum_indexing/`" ) {:error, "RUM Migrations detected"} @@ -140,4 +156,50 @@ defp do_check_rum!(setting, migrate) do :ok end end + + defp check_system_commands!(:ok) do + filter_commands_statuses = [ + check_filter(Pleroma.Upload.Filters.Exiftool, "exiftool"), + check_filter(Pleroma.Upload.Filters.Mogrify, "mogrify"), + check_filter(Pleroma.Upload.Filters.Mogrifun, "mogrify") + ] + + preview_proxy_commands_status = + if !Config.get([:media_preview_proxy, :enabled]) or + MediaHelper.missing_dependencies() == [] do + true + else + Logger.error( + "The following dependencies required by Media preview proxy " <> + "(which is currently enabled) are not installed: " <> + inspect(MediaHelper.missing_dependencies()) + ) + + false + end + + if Enum.all?([preview_proxy_commands_status | filter_commands_statuses], & &1) do + :ok + else + {:error, + "System commands missing. Check logs and see `docs/installation` for more details."} + end + end + + defp check_system_commands!(result), do: result + + defp check_filter(filter, command_required) do + filters = Config.get([Pleroma.Upload, :filters]) + + if filter in filters and not Pleroma.Utils.command_available?(command_required) do + Logger.error( + "#{filter} is specified in list of Pleroma.Upload filters, but the " <> + "#{command_required} command is not found" + ) + + false + else + true + end + end end From 9a56ec25cb4de1284a03cac156a7664bd65b628f Mon Sep 17 00:00:00 2001 From: lain Date: Tue, 29 Sep 2020 16:24:02 +0200 Subject: [PATCH 332/460] Changelog: Add info about relay unfollowing --- CHANGELOG.md | 1 + docs/API/admin_api.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 80fbc078d..0d3daa60e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Added - Mix tasks for controlling user account confirmation status in bulk (`mix pleroma.user confirm_all` and `mix pleroma.user unconfirm_all`) - Mix task for sending confirmation emails to all unconfirmed users (`mix pleroma.email send_confirmation_mails`) +- Mix task option for force-unfollowing relays ### Changed diff --git a/docs/API/admin_api.md b/docs/API/admin_api.md index ddcab1a2c..7bf13daef 100644 --- a/docs/API/admin_api.md +++ b/docs/API/admin_api.md @@ -351,7 +351,7 @@ Response: - Params: - `relay_url` - - *optional* `force`: forcefully unfollow a relay even when the relay is not available. (default is `false`) + - *optional* `force`: forcefully unfollow a relay even when the relay is not available. (default is `false`) Response: From a24f80badf2c24a12de1e99a429aa23e2b40b40c Mon Sep 17 00:00:00 2001 From: lain Date: Tue, 29 Sep 2020 14:30:18 +0000 Subject: [PATCH 333/460] Apply 1 suggestion(s) to 1 file(s) --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e5f8a504..8b0f72eb3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - **Breaking:** Introduced dependencies on `ffmpeg` and `ImageMagick` software packages. Please refer to documentation in `docs/installation`. ### Added -- Media preview proxy (requires `ffmpeg` and `ImageMagick` be installed and media proxy be enabled; see `:media_preview_proxy` config for more details). +- Media preview proxy (requires `ffmpeg` and `ImageMagick` to be installed and media proxy to be enabled; see `:media_preview_proxy` config for more details). - Pleroma API: Importing the mutes users from CSV files. - Experimental websocket-based federation between Pleroma instances. - Admin API: Importing emoji from a zip file From ae262846389aabfc71c12c2eb903cbe367140184 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Tue, 29 Sep 2020 17:34:49 +0300 Subject: [PATCH 334/460] [#3031] Adjusted changelog entry. --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b0f72eb3..f11585113 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - The `discoverable` field in the `User` struct will now add a NOINDEX metatag to profile pages when false. - Users with the `discoverable` field set to false will not show up in searches. - Minimum lifetime for ephmeral activities changed to 10 minutes and made configurable (`:min_lifetime` option). -- **Breaking:** Introduced dependencies on `ffmpeg` and `ImageMagick` software packages. Please refer to documentation in `docs/installation`. +- Introduced optional dependencies on `ffmpeg`, `ImageMagick`, `exiftool` software packages. Please refer to `docs/installation/optional/media_graphics_packages.md`. ### Added - Media preview proxy (requires `ffmpeg` and `ImageMagick` to be installed and media proxy to be enabled; see `:media_preview_proxy` config for more details). From b3a9ba09ec5867d240c3769ae4c3fbf598f68d92 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 29 Sep 2020 12:16:15 -0500 Subject: [PATCH 335/460] More robust expires_at timestamp processing --- lib/pleroma/user.ex | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 71ace1c34..09ea80793 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -2291,7 +2291,9 @@ def remove_pinnned_activity(user, %Pleroma.Activity{id: id, data: data}) do # if pinned activity was scheduled for deletion, we reschedule it for deletion if data["expires_at"] do - {:ok, expires_at, _} = DateTime.from_iso8601(data["expires_at"]) + # MRF.ActivityExpirationPolicy used UTC timestamps for expires_at in original implementation + {:ok, expires_at} = + data["expires_at"] |> Pleroma.EctoType.ActivityPub.ObjectValidators.DateTime.cast() Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ activity_id: id, From 006b62fd12adadbf698419990ab13bf6f1e901b2 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 29 Sep 2020 21:49:04 +0300 Subject: [PATCH 336/460] OpenAPI CastAndValidate: filter out empty params Closes #2198 --- CHANGELOG.md | 5 +++++ lib/pleroma/web/api_spec/cast_and_validate.ex | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 80fbc078d..983ddd628 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,11 @@ switched to a new configuration mechanism, however it was not officially removed - Add documented-but-missing chat pagination. - Allow sending out emails again. +## Unreleased (Patch) + +### Changed +- API: Empty parameter values for integer parameters are now ignored in non-strict validaton mode. + ## [2.1.2] - 2020-09-17 ### Security diff --git a/lib/pleroma/web/api_spec/cast_and_validate.ex b/lib/pleroma/web/api_spec/cast_and_validate.ex index fbfc27d6f..6d1a7ebbc 100644 --- a/lib/pleroma/web/api_spec/cast_and_validate.ex +++ b/lib/pleroma/web/api_spec/cast_and_validate.ex @@ -115,6 +115,10 @@ defp cast_and_validate(spec, operation, conn, content_type, false = _strict) do %{reason: :unexpected_field, name: name, path: [name]}, params -> Map.delete(params, name) + # Filter out empty params + %{reason: :invalid_type, path: [name_atom], value: ""}, params -> + Map.delete(params, to_string(name_atom)) + %{reason: :invalid_enum, name: nil, path: path, value: value}, params -> path = path |> Enum.reverse() |> tl() |> Enum.reverse() |> list_items_to_string() update_in(params, path, &List.delete(&1, value)) From 0e57f133650ffe3cdd191a49a2c9f0ae6d2e1e54 Mon Sep 17 00:00:00 2001 From: Angelina Filippova Date: Tue, 29 Sep 2020 20:32:55 +0000 Subject: [PATCH 337/460] Apply 1 suggestion(s) to 1 file(s) --- config/description.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/description.exs b/config/description.exs index be9cb0a16..8656e4575 100644 --- a/config/description.exs +++ b/config/description.exs @@ -44,7 +44,7 @@ }, %{ key: "git", - label: "Git", + label: "Git Repository URL" type: :string, description: "URL of the git repository of the frontend" }, From 1b2f7139c87557e63743fb592a7015adaf277f93 Mon Sep 17 00:00:00 2001 From: Angelina Filippova Date: Tue, 29 Sep 2020 20:33:04 +0000 Subject: [PATCH 338/460] Apply 1 suggestion(s) to 1 file(s) --- config/description.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/description.exs b/config/description.exs index 8656e4575..14478a119 100644 --- a/config/description.exs +++ b/config/description.exs @@ -58,7 +58,7 @@ }, %{ key: "build_dir", - label: "Build Dir", + label: "Build directory" type: :string, description: "The directory inside the zip file " } From fe1975064446121a6d1f6c709b1a31c30aaa121a Mon Sep 17 00:00:00 2001 From: Angelina Filippova Date: Wed, 30 Sep 2020 00:49:08 +0300 Subject: [PATCH 339/460] Fix comma typo --- config/description.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/description.exs b/config/description.exs index 14478a119..dd9e46c08 100644 --- a/config/description.exs +++ b/config/description.exs @@ -44,7 +44,7 @@ }, %{ key: "git", - label: "Git Repository URL" + label: "Git Repository URL", type: :string, description: "URL of the git repository of the frontend" }, From d96b8923f631d26469de9264c3e493a69cf605dd Mon Sep 17 00:00:00 2001 From: Angelina Filippova Date: Wed, 30 Sep 2020 00:50:53 +0300 Subject: [PATCH 340/460] Fix typo --- config/description.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/description.exs b/config/description.exs index dd9e46c08..6fa78a5d1 100644 --- a/config/description.exs +++ b/config/description.exs @@ -58,7 +58,7 @@ }, %{ key: "build_dir", - label: "Build directory" + label: "Build directory", type: :string, description: "The directory inside the zip file " } From 90fee49c52799a7d6ad890ecc49d146ab6ad8455 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 30 Sep 2020 14:14:41 +0200 Subject: [PATCH 341/460] User search: Once again, change uri handling. They can indeed be non-unique. --- lib/pleroma/user/search.ex | 5 +++-- .../20200930082320_user_ur_is_index_part_three.exs | 8 ++++++++ test/user_search_test.exs | 6 ++++++ 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 priv/repo/migrations/20200930082320_user_ur_is_index_part_three.exs diff --git a/lib/pleroma/user/search.ex b/lib/pleroma/user/search.ex index 03f2c552f..35a828008 100644 --- a/lib/pleroma/user/search.ex +++ b/lib/pleroma/user/search.ex @@ -54,8 +54,9 @@ defp maybe_add_ap_id_match(list, query) do defp maybe_add_uri_match(list, query) do with {:ok, query} <- UriType.cast(query), - %User{} = user <- Pleroma.Repo.get_by(User, uri: query) do - [user.id | list] + q = from(u in User, where: u.uri == ^query, select: u.id), + users = Pleroma.Repo.all(q) do + users ++ list else _ -> list end diff --git a/priv/repo/migrations/20200930082320_user_ur_is_index_part_three.exs b/priv/repo/migrations/20200930082320_user_ur_is_index_part_three.exs new file mode 100644 index 000000000..816c6526e --- /dev/null +++ b/priv/repo/migrations/20200930082320_user_ur_is_index_part_three.exs @@ -0,0 +1,8 @@ +defmodule Pleroma.Repo.Migrations.UserURIsIndexPartThree do + use Ecto.Migration + + def change do + drop_if_exists(unique_index(:users, :uri)) + create_if_not_exists(index(:users, :uri)) + end +end diff --git a/test/user_search_test.exs b/test/user_search_test.exs index cc14e9741..c4b805005 100644 --- a/test/user_search_test.exs +++ b/test/user_search_test.exs @@ -36,6 +36,12 @@ test "returns a user with matching ap_id as the first result" do assert first_user.id == user.id end + test "doesn't die if two users have the same uri" do + insert(:user, %{uri: "https://gensokyo.2hu/@raymoo"}) + insert(:user, %{uri: "https://gensokyo.2hu/@raymoo"}) + assert [_first_user, _second_user] = User.search("https://gensokyo.2hu/@raymoo") + end + test "returns a user with matching uri as the first result" do user = insert(:user, %{ From 1ae39441e6d516f8f1a0dd3ed47de9d8427477c5 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 30 Sep 2020 14:17:21 +0200 Subject: [PATCH 342/460] Migrations: Nullify old unique index on users.uri --- priv/repo/migrations/20200928145912_revert_citext_change.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priv/repo/migrations/20200928145912_revert_citext_change.exs b/priv/repo/migrations/20200928145912_revert_citext_change.exs index ab232f607..685a98533 100644 --- a/priv/repo/migrations/20200928145912_revert_citext_change.exs +++ b/priv/repo/migrations/20200928145912_revert_citext_change.exs @@ -6,6 +6,6 @@ def change do modify(:uri, :text) end - create_if_not_exists(unique_index(:users, :uri)) + # create_if_not_exists(unique_index(:users, :uri)) end end From cee1883b35b5453782bea1e34ff9cbf1bde52f7c Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 30 Sep 2020 07:53:19 -0500 Subject: [PATCH 343/460] Update Oban to 2.1.0 --- mix.exs | 2 +- mix.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mix.exs b/mix.exs index 18f748672..b9ce8c500 100644 --- a/mix.exs +++ b/mix.exs @@ -122,7 +122,7 @@ defp deps do {:ecto_enum, "~> 1.4"}, {:ecto_sql, "~> 3.4.4"}, {:postgrex, ">= 0.15.5"}, - {:oban, "~> 2.0.0"}, + {:oban, "~> 2.1.0"}, {:gettext, "~> 0.18"}, {:pbkdf2_elixir, "~> 1.2"}, {:bcrypt_elixir, "~> 2.2"}, diff --git a/mix.lock b/mix.lock index adb3f024a..2603f70c0 100644 --- a/mix.lock +++ b/mix.lock @@ -24,11 +24,11 @@ "crypt": {:git, "https://github.com/msantos/crypt.git", "f63a705f92c26955977ee62a313012e309a4d77a", [ref: "f63a705f92c26955977ee62a313012e309a4d77a"]}, "custom_base": {:hex, :custom_base, "0.2.1", "4a832a42ea0552299d81652aa0b1f775d462175293e99dfbe4d7dbaab785a706", [:mix], [], "hexpm", "8df019facc5ec9603e94f7270f1ac73ddf339f56ade76a721eaa57c1493ba463"}, "db_connection": {:hex, :db_connection, "2.2.2", "3bbca41b199e1598245b716248964926303b5d4609ff065125ce98bcd368939e", [:mix], [{:connection, "~> 1.0.2", [hex: :connection, repo: "hexpm", optional: false]}], "hexpm", "642af240d8a8affb93b4ba5a6fcd2bbcbdc327e1a524b825d383711536f8070c"}, - "decimal": {:hex, :decimal, "1.8.1", "a4ef3f5f3428bdbc0d35374029ffcf4ede8533536fa79896dd450168d9acdf3c", [:mix], [], "hexpm", "3cb154b00225ac687f6cbd4acc4b7960027c757a5152b369923ead9ddbca7aec"}, + "decimal": {:hex, :decimal, "2.0.0", "a78296e617b0f5dd4c6caf57c714431347912ffb1d0842e998e9792b5642d697", [:mix], [], "hexpm", "34666e9c55dea81013e77d9d87370fe6cb6291d1ef32f46a1600230b1d44f577"}, "deep_merge": {:hex, :deep_merge, "1.0.0", "b4aa1a0d1acac393bdf38b2291af38cb1d4a52806cf7a4906f718e1feb5ee961", [:mix], [], "hexpm", "ce708e5f094b9cd4e8f2be4f00d2f4250c4095be93f8cd6d018c753894885430"}, "earmark": {:hex, :earmark, "1.4.3", "364ca2e9710f6bff494117dbbd53880d84bebb692dafc3a78eb50aa3183f2bfd", [:mix], [], "hexpm", "8cf8a291ebf1c7b9539e3cddb19e9cef066c2441b1640f13c34c1d3cfc825fec"}, "earmark_parser": {:hex, :earmark_parser, "1.4.10", "6603d7a603b9c18d3d20db69921527f82ef09990885ed7525003c7fe7dc86c56", [:mix], [], "hexpm", "8e2d5370b732385db2c9b22215c3f59c84ac7dda7ed7e544d7c459496ae519c0"}, - "ecto": {:hex, :ecto, "3.4.5", "2bcd262f57b2c888b0bd7f7a28c8a48aa11dc1a2c6a858e45dd8f8426d504265", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "8c6d1d4d524559e9b7a062f0498e2c206122552d63eacff0a6567ffe7a8e8691"}, + "ecto": {:hex, :ecto, "3.4.6", "08f7afad3257d6eb8613309af31037e16c36808dfda5a3cd0cb4e9738db030e4", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "6f13a9e2a62e75c2dcfc7207bfc65645ab387af8360db4c89fee8b5a4bf3f70b"}, "ecto_enum": {:hex, :ecto_enum, "1.4.0", "d14b00e04b974afc69c251632d1e49594d899067ee2b376277efd8233027aec8", [:mix], [{:ecto, ">= 3.0.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "> 3.0.0", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:mariaex, ">= 0.0.0", [hex: :mariaex, repo: "hexpm", optional: true]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "8fb55c087181c2b15eee406519dc22578fa60dd82c088be376d0010172764ee4"}, "ecto_sql": {:hex, :ecto_sql, "3.4.5", "30161f81b167d561a9a2df4329c10ae05ff36eca7ccc84628f2c8b9fa1e43323", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.4.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.3.0 or ~> 0.4.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.0", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "31990c6a3579b36a3c0841d34a94c275e727de8b84f58509da5f1b2032c98ac2"}, "eimp": {:hex, :eimp, "1.0.14", "fc297f0c7e2700457a95a60c7010a5f1dcb768a083b6d53f49cd94ab95a28f22", [:rebar3], [{:p1_utils, "1.0.18", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "501133f3112079b92d9e22da8b88bf4f0e13d4d67ae9c15c42c30bd25ceb83b6"}, @@ -59,7 +59,7 @@ "httpoison": {:hex, :httpoison, "1.6.2", "ace7c8d3a361cebccbed19c283c349b3d26991eff73a1eaaa8abae2e3c8089b6", [:mix], [{:hackney, "~> 1.15 and >= 1.15.2", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "aa2c74bd271af34239a3948779612f87df2422c2fdcfdbcec28d9c105f0773fe"}, "idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "4bdd305eb64e18b0273864920695cb18d7a2021f31a11b9c5fbcd9a253f936e2"}, "inet_cidr": {:hex, :inet_cidr, "1.0.4", "a05744ab7c221ca8e395c926c3919a821eb512e8f36547c062f62c4ca0cf3d6e", [:mix], [], "hexpm", "64a2d30189704ae41ca7dbdd587f5291db5d1dda1414e0774c29ffc81088c1bc"}, - "jason": {:hex, :jason, "1.2.1", "12b22825e22f468c02eb3e4b9985f3d0cb8dc40b9bd704730efa11abd2708c44", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "b659b8571deedf60f79c5a608e15414085fa141344e2716fbd6988a084b5f993"}, + "jason": {:hex, :jason, "1.2.2", "ba43e3f2709fd1aa1dce90aaabfd039d000469c05c56f0b8e31978e03fa39052", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "18a228f5f0058ee183f29f9eae0805c6e59d61c3b006760668d8d18ff0d12179"}, "joken": {:hex, :joken, "2.2.0", "2daa1b12be05184aff7b5ace1d43ca1f81345962285fff3f88db74927c954d3a", [:mix], [{:jose, "~> 1.9", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "b4f92e30388206f869dd25d1af628a1d99d7586e5cf0672f64d4df84c4d2f5e9"}, "jose": {:hex, :jose, "1.10.1", "16d8e460dae7203c6d1efa3f277e25b5af8b659febfc2f2eb4bacf87f128b80a", [:mix, :rebar3], [], "hexpm", "3c7ddc8a9394b92891db7c2771da94bf819834a1a4c92e30857b7d582e2f8257"}, "jumper": {:hex, :jumper, "1.0.1", "3c00542ef1a83532b72269fab9f0f0c82bf23a35e27d278bfd9ed0865cecabff", [:mix], [], "hexpm", "318c59078ac220e966d27af3646026db9b5a5e6703cb2aa3e26bcfaba65b7433"}, @@ -79,7 +79,7 @@ "nimble_parsec": {:hex, :nimble_parsec, "0.6.0", "32111b3bf39137144abd7ba1cce0914533b2d16ef35e8abc5ec8be6122944263", [:mix], [], "hexpm", "27eac315a94909d4dc68bc07a4a83e06c8379237c5ea528a9acff4ca1c873c52"}, "nimble_pool": {:hex, :nimble_pool, "0.1.0", "ffa9d5be27eee2b00b0c634eb649aa27f97b39186fec3c493716c2a33e784ec6", [:mix], [], "hexpm", "343a1eaa620ddcf3430a83f39f2af499fe2370390d4f785cd475b4df5acaf3f9"}, "nodex": {:git, "https://git.pleroma.social/pleroma/nodex", "cb6730f943cfc6aad674c92161be23a8411f15d1", [ref: "cb6730f943cfc6aad674c92161be23a8411f15d1"]}, - "oban": {:hex, :oban, "2.0.0", "e6ce70d94dd46815ec0882a1ffb7356df9a9d5b8a40a64ce5c2536617a447379", [:mix], [{:ecto_sql, ">= 3.4.3", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.14", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "cf574813bd048b98a698aa587c21367d2e06842d4e1b1993dcd6a696e9e633bd"}, + "oban": {:hex, :oban, "2.1.0", "034144686f7e76a102b5d67731f098d98a9e4a52b07c25ad580a01f83a7f1cf5", [:mix], [{:ecto_sql, ">= 3.4.3", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.14", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c6f067fa3b308ed9e0e6beb2b34277c9c4e48bf95338edabd8f4a757a26e04c2"}, "open_api_spex": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/open_api_spex.git", "f296ac0924ba3cf79c7a588c4c252889df4c2edd", [ref: "f296ac0924ba3cf79c7a588c4c252889df4c2edd"]}, "p1_utils": {:hex, :p1_utils, "1.0.18", "3fe224de5b2e190d730a3c5da9d6e8540c96484cf4b4692921d1e28f0c32b01c", [:rebar3], [], "hexpm", "1fc8773a71a15553b179c986b22fbeead19b28fe486c332d4929700ffeb71f88"}, "parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm", "17ef63abde837ad30680ea7f857dd9e7ced9476cdd7b0394432af4bfc241b960"}, @@ -95,7 +95,7 @@ "plug_static_index_html": {:hex, :plug_static_index_html, "1.0.0", "840123d4d3975585133485ea86af73cb2600afd7f2a976f9f5fd8b3808e636a0", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "79fd4fcf34d110605c26560cbae8f23c603ec4158c08298bd4360fdea90bb5cf"}, "poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm", "fec8660eb7733ee4117b85f55799fd3833eb769a6df71ccf8903e8dc5447cfce"}, "poolboy": {:hex, :poolboy, "1.5.2", "392b007a1693a64540cead79830443abf5762f5d30cf50bc95cb2c1aaafa006b", [:rebar3], [], "hexpm", "dad79704ce5440f3d5a3681c8590b9dc25d1a561e8f5a9c995281012860901e3"}, - "postgrex": {:hex, :postgrex, "0.15.5", "aec40306a622d459b01bff890fa42f1430dac61593b122754144ad9033a2152f", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "ed90c81e1525f65a2ba2279dbcebf030d6d13328daa2f8088b9661eb9143af7f"}, + "postgrex": {:hex, :postgrex, "0.15.6", "a464c72010a56e3214fe2b99c1a76faab4c2bb0255cabdef30dea763a3569aa2", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "f99268325ac8f66ffd6c4964faab9e70fbf721234ab2ad238c00f9530b8cdd55"}, "pot": {:hex, :pot, "0.11.0", "61bad869a94534739dd4614a25a619bc5c47b9970e9a0ea5bef4628036fc7a16", [:rebar3], [], "hexpm", "57ee6ee6bdeb639661ffafb9acefe3c8f966e45394de6a766813bb9e1be4e54b"}, "prometheus": {:hex, :prometheus, "4.6.0", "20510f381db1ccab818b4cf2fac5fa6ab5cc91bc364a154399901c001465f46f", [:mix, :rebar3], [], "hexpm", "4905fd2992f8038eccd7aa0cd22f40637ed618c0bed1f75c05aacec15b7545de"}, "prometheus_ecto": {:hex, :prometheus_ecto, "1.4.3", "3dd4da1812b8e0dbee81ea58bb3b62ed7588f2eae0c9e97e434c46807ff82311", [:mix], [{:ecto, "~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:prometheus_ex, "~> 1.1 or ~> 2.0 or ~> 3.0", [hex: :prometheus_ex, repo: "hexpm", optional: false]}], "hexpm", "8d66289f77f913b37eda81fd287340c17e61a447549deb28efc254532b2bed82"}, @@ -120,5 +120,5 @@ "unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm", "1d1848c40487cdb0b30e8ed975e34e025860c02e419cb615d255849f3427439d"}, "unsafe": {:hex, :unsafe, "1.0.1", "a27e1874f72ee49312e0a9ec2e0b27924214a05e3ddac90e91727bc76f8613d8", [:mix], [], "hexpm", "6c7729a2d214806450d29766abc2afaa7a2cbecf415be64f36a6691afebb50e5"}, "web_push_encryption": {:hex, :web_push_encryption, "0.3.0", "598b5135e696fd1404dc8d0d7c0fa2c027244a4e5d5e5a98ba267f14fdeaabc8", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:jose, "~> 1.8", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "f10bdd1afe527ede694749fb77a2f22f146a51b054c7fa541c9fd920fba7c875"}, - "websocket_client": {:git, "https://github.com/jeremyong/websocket_client.git", "9a6f65d05ebf2725d62fb19262b21f1805a59fbf", []} + "websocket_client": {:git, "https://github.com/jeremyong/websocket_client.git", "9a6f65d05ebf2725d62fb19262b21f1805a59fbf", []}, } From 49229107e812d649e66e36e32e238db66b353b0f Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 30 Sep 2020 12:32:54 -0500 Subject: [PATCH 344/460] Make it possible for Varnish logs to contain the true scheme used by clients instead of always reporting http:// --- installation/pleroma.vcl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/installation/pleroma.vcl b/installation/pleroma.vcl index 154747aa6..57b6d17b3 100644 --- a/installation/pleroma.vcl +++ b/installation/pleroma.vcl @@ -1,3 +1,4 @@ +# Recommended varnishncsa logging format: '%h %l %u %t "%m %{X-Forwarded-Proto}i://%{Host}i%U%q %H" %s %b "%{Referer}i" "%{User-agent}i"' vcl 4.1; import std; @@ -14,8 +15,11 @@ acl purge { sub vcl_recv { # Redirect HTTP to HTTPS if (std.port(server.ip) != 443) { + set req.http.X-Forwarded-Proto = "http"; set req.http.x-redir = "https://" + req.http.host + req.url; return (synth(750, "")); + } else { + set req.http.X-Forwarded-Proto = "https"; } # CHUNKED SUPPORT From b3015db841536c26934f43374ed75fb77a11ff68 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 30 Sep 2020 12:49:51 -0500 Subject: [PATCH 345/460] Syntax error --- installation/pleroma.vcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installation/pleroma.vcl b/installation/pleroma.vcl index 57b6d17b3..13dad784c 100644 --- a/installation/pleroma.vcl +++ b/installation/pleroma.vcl @@ -109,7 +109,7 @@ sub vcl_hash { sub vcl_backend_fetch { # Be more lenient for slow servers on the fediverse - if bereq.url ~ "^/proxy/" { + if (bereq.url ~ "^/proxy/") { set bereq.first_byte_timeout = 300s; } From cbdaabad345914e7424e614032056ff86e21142f Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 1 Oct 2020 13:32:11 +0300 Subject: [PATCH 346/460] web push http_client fix --- config/benchmark.exs | 2 -- config/config.exs | 2 +- config/test.exs | 2 -- lib/pleroma/http/web_push.ex | 12 ++++++++++++ lib/pleroma/web/push/impl.ex | 12 ++++++------ test/support/web_push_http_client_mock.ex | 23 ----------------------- test/web/push/impl_test.exs | 22 ++-------------------- 7 files changed, 21 insertions(+), 54 deletions(-) create mode 100644 lib/pleroma/http/web_push.ex delete mode 100644 test/support/web_push_http_client_mock.ex diff --git a/config/benchmark.exs b/config/benchmark.exs index e867253eb..5567ff26e 100644 --- a/config/benchmark.exs +++ b/config/benchmark.exs @@ -59,8 +59,6 @@ "BLH1qVhJItRGCfxgTtONfsOKDc9VRAraXw-3NsmjMngWSh7NxOizN6bkuRA7iLTMPS82PjwJAr3UoK9EC1IFrz4", private_key: "_-XZ0iebPrRfZ_o0-IatTdszYa8VCH1yLN-JauK7HHA" -config :web_push_encryption, :http_client, Pleroma.Web.WebPushHttpClientMock - config :pleroma, Pleroma.ScheduledActivity, daily_user_limit: 2, total_user_limit: 3, diff --git a/config/config.exs b/config/config.exs index 00624bf00..2e6b0796a 100644 --- a/config/config.exs +++ b/config/config.exs @@ -809,7 +809,7 @@ config :ex_aws, http_client: Pleroma.HTTP.ExAws -config :web_push_encryption, http_client: Pleroma.HTTP +config :web_push_encryption, http_client: Pleroma.HTTP.WebPush config :pleroma, :instances_favicons, enabled: false diff --git a/config/test.exs b/config/test.exs index 93a0e2a61..95f860f2f 100644 --- a/config/test.exs +++ b/config/test.exs @@ -83,8 +83,6 @@ "BLH1qVhJItRGCfxgTtONfsOKDc9VRAraXw-3NsmjMngWSh7NxOizN6bkuRA7iLTMPS82PjwJAr3UoK9EC1IFrz4", private_key: "_-XZ0iebPrRfZ_o0-IatTdszYa8VCH1yLN-JauK7HHA" -config :web_push_encryption, :http_client, Pleroma.Web.WebPushHttpClientMock - config :pleroma, Oban, queues: false, crontab: false, diff --git a/lib/pleroma/http/web_push.ex b/lib/pleroma/http/web_push.ex new file mode 100644 index 000000000..78148a12e --- /dev/null +++ b/lib/pleroma/http/web_push.ex @@ -0,0 +1,12 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.HTTP.WebPush do + @moduledoc false + + def post(url, payload, headers) do + list_headers = Map.to_list(headers) + Pleroma.HTTP.post(url, payload, list_headers) + end +end diff --git a/lib/pleroma/web/push/impl.ex b/lib/pleroma/web/push/impl.ex index 16368485e..da535aa68 100644 --- a/lib/pleroma/web/push/impl.ex +++ b/lib/pleroma/web/push/impl.ex @@ -19,7 +19,7 @@ defmodule Pleroma.Web.Push.Impl do @types ["Create", "Follow", "Announce", "Like", "Move"] @doc "Performs sending notifications for user subscriptions" - @spec perform(Notification.t()) :: list(any) | :error + @spec perform(Notification.t()) :: list(any) | :error | {:error, :unknown_type} def perform( %{ activity: %{data: %{"type" => activity_type}} = activity, @@ -64,20 +64,20 @@ def perform(_) do @doc "Push message to web" def push_message(body, sub, api_key, subscription) do case WebPushEncryption.send_web_push(body, sub, api_key) do - {:ok, %{status_code: code}} when 400 <= code and code < 500 -> + {:ok, %{status: code}} when code in 400..499 -> Logger.debug("Removing subscription record") Repo.delete!(subscription) :ok - {:ok, %{status_code: code}} when 200 <= code and code < 300 -> + {:ok, %{status: code}} when code in 200..299 -> :ok - {:ok, %{status_code: code}} -> + {:ok, %{status: code}} -> Logger.error("Web Push Notification failed with code: #{code}") :error - _ -> - Logger.error("Web Push Notification failed with unknown error") + error -> + Logger.error("Web Push Notification failed with #{inspect(error)}") :error end end diff --git a/test/support/web_push_http_client_mock.ex b/test/support/web_push_http_client_mock.ex deleted file mode 100644 index 3cd12957d..000000000 --- a/test/support/web_push_http_client_mock.ex +++ /dev/null @@ -1,23 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.WebPushHttpClientMock do - def get(url, headers \\ [], options \\ []) do - { - res, - %Tesla.Env{status: status} - } = Pleroma.HTTP.request(:get, url, "", headers, options) - - {res, %{status_code: status}} - end - - def post(url, body, headers \\ [], options \\ []) do - { - res, - %Tesla.Env{status: status} - } = Pleroma.HTTP.request(:post, url, body, headers, options) - - {res, %{status_code: status}} - end -end diff --git a/test/web/push/impl_test.exs b/test/web/push/impl_test.exs index c7c17e156..6cab46696 100644 --- a/test/web/push/impl_test.exs +++ b/test/web/push/impl_test.exs @@ -5,6 +5,8 @@ defmodule Pleroma.Web.Push.ImplTest do use Pleroma.DataCase + import Pleroma.Factory + alias Pleroma.Notification alias Pleroma.Object alias Pleroma.User @@ -12,10 +14,6 @@ defmodule Pleroma.Web.Push.ImplTest do alias Pleroma.Web.CommonAPI alias Pleroma.Web.Push.Impl alias Pleroma.Web.Push.Subscription - alias Pleroma.Web.WebPushHttpClientMock - - import Mock - import Pleroma.Factory setup do Tesla.Mock.mock(fn @@ -80,22 +78,6 @@ test "successful message sending" do assert Impl.push_message(@message, @sub, @api_key, %Subscription{}) == :ok end - test_with_mock "uses WebPushHttpClientMock as an HTTP client", WebPushHttpClientMock, - post: fn _, _, _ -> {:ok, %{status_code: 200}} end do - Impl.push_message(@message, @sub, @api_key, %Subscription{}) - assert_called(WebPushHttpClientMock.post("https://example.com/example/1234", :_, :_)) - end - - test_with_mock "uses Pleroma.HTTP as an HTTP client", Pleroma.HTTP, - post: fn _, _, _ -> {:ok, %{status_code: 200}} end do - client = Application.get_env(:web_push_encryption, :http_client) - on_exit(fn -> Application.put_env(:web_push_encryption, :http_client, client) end) - Application.put_env(:web_push_encryption, :http_client, Pleroma.HTTP) - - Impl.push_message(@message, @sub, @api_key, %Subscription{}) - assert_called(Pleroma.HTTP.post("https://example.com/example/1234", :_, :_)) - end - @tag capture_log: true test "fail message sending" do assert Impl.push_message( From 8d093a68a6b54eff232566dfd7f52e9c8682398a Mon Sep 17 00:00:00 2001 From: lain Date: Mon, 5 Oct 2020 13:58:12 +0200 Subject: [PATCH 347/460] Docs: Modify docs so the postgres config is harder to get wrong. --- docs/installation/otp_en.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/installation/otp_en.md b/docs/installation/otp_en.md index f6b05c887..92584d80d 100644 --- a/docs/installation/otp_en.md +++ b/docs/installation/otp_en.md @@ -101,6 +101,8 @@ It is encouraged to check [Optimizing your PostgreSQL performance](../configurat If you are using PostgreSQL 12 or higher, add this to your Ecto database configuration ```elixir +# +config :pleroma, Pleroma.Repo, prepare: :named, parameters: [ plan_cache_mode: "force_custom_plan" From 35ee759e74d0737598311d8e4245168f981812d3 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 5 Oct 2020 11:48:41 -0500 Subject: [PATCH 348/460] Add helper function to convert single IPs into CIDR format if they were not provided that way --- lib/pleroma/plugs/remote_ip.ex | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/plugs/remote_ip.ex b/lib/pleroma/plugs/remote_ip.ex index 0ac9050d0..d1b1f793a 100644 --- a/lib/pleroma/plugs/remote_ip.ex +++ b/lib/pleroma/plugs/remote_ip.ex @@ -47,8 +47,19 @@ defp remote_ip_opts(config) do config |> Keyword.get(:proxies, []) |> Enum.concat(reserved) - |> Enum.map(&InetCidr.parse/1) + |> Enum.map(&maybe_add_cidr/1) {headers, proxies} end + + defp maybe_add_cidr(proxy) when is_binary(proxy) do + proxy = + cond do + "/" in String.codepoints(proxy) -> proxy + InetCidr.v4?(InetCidr.parse_address!(proxy)) -> proxy <> "/32" + InetCidr.v6?(InetCidr.parse_address!(proxy)) -> proxy <> "/128" + end + + InetCidr.parse(proxy) + end end From 21a73ce9f2c577c046e1cd17ef1a2b6636d01585 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 6 Oct 2020 14:54:21 -0500 Subject: [PATCH 349/460] Document the NSFW link preview change --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ae5d0eda..8fc1750d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Changed - **Breaking:** Pleroma Admin API: emoji packs and files routes changed. +- **Breaking:** Sensitive/NSFW statuses no longer disable link previews. - Search: Users are now findable by their urls. - Renamed `:await_up_timeout` in `:connections_pool` namespace to `:connect_timeout`, old name is deprecated. - Renamed `:timeout` in `pools` namespace to `:recv_timeout`, old name is deprecated. From 7aff2b47c56c5b41620445b7d49c429eb1866164 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 6 Oct 2020 15:47:11 -0500 Subject: [PATCH 350/460] Fix docs for default headers used by RemoteIp. We only use X-Forwarded-For by default. --- config/description.exs | 5 +++-- docs/configuration/cheatsheet.md | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/config/description.exs b/config/description.exs index ac3dfbb2b..f6331dd30 100644 --- a/config/description.exs +++ b/config/description.exs @@ -3262,8 +3262,9 @@ %{ key: :headers, type: {:list, :string}, - description: - "A list of strings naming the `req_headers` to use when deriving the `remote_ip`. Order does not matter. Default: `~w[forwarded x-forwarded-for x-client-ip x-real-ip]`." + description: """ + A list of strings naming the `req_headers` to use when deriving the `remote_ip`. Default: `["x-forwarded-for"]`. + """ }, %{ key: :proxies, diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index 42e5fe808..e0194525d 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -426,7 +426,7 @@ This will make Pleroma listen on `127.0.0.1` port `8080` and generate urls start Available options: * `enabled` - Enable/disable the plug. Defaults to `false`. -* `headers` - A list of strings naming the `req_headers` to use when deriving the `remote_ip`. Order does not matter. Defaults to `["x-forwarded-for"]`. +* `headers` - A list of strings naming the `req_headers` to use when deriving the `remote_ip`. Defaults to `["x-forwarded-for"]`. * `proxies` - A list of strings in [CIDR](https://en.wikipedia.org/wiki/CIDR) notation specifying the IPs of known proxies. Defaults to `[]`. * `reserved` - Defaults to [localhost](https://en.wikipedia.org/wiki/Localhost) and [private network](https://en.wikipedia.org/wiki/Private_network). From d43d05005ae4e8b0f069111baee867492d4f0c52 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 6 Oct 2020 17:02:46 -0500 Subject: [PATCH 351/460] Move hardcoded default configuration into config.exs --- config/config.exs | 13 ++++++++++++- lib/pleroma/plugs/remote_ip.ex | 31 +++++++------------------------ test/plugs/remote_ip_test.exs | 24 +++++++++++++++++------- 3 files changed, 36 insertions(+), 32 deletions(-) diff --git a/config/config.exs b/config/config.exs index 2e6b0796a..d53663d36 100644 --- a/config/config.exs +++ b/config/config.exs @@ -677,7 +677,18 @@ config :pleroma, Pleroma.Workers.PurgeExpiredActivity, enabled: true, min_lifetime: 600 -config :pleroma, Pleroma.Plugs.RemoteIp, enabled: true +config :pleroma, Pleroma.Plugs.RemoteIp, + enabled: true, + headers: ["x-forwarded-for"], + proxies: [], + reserved: [ + "127.0.0.0/8", + "::1/128", + "fc00::/7", + "10.0.0.0/8", + "172.16.0.0/12", + "192.168.0.0/16" + ] config :pleroma, :static_fe, enabled: false diff --git a/lib/pleroma/plugs/remote_ip.ex b/lib/pleroma/plugs/remote_ip.ex index d1b1f793a..9487efa5f 100644 --- a/lib/pleroma/plugs/remote_ip.ex +++ b/lib/pleroma/plugs/remote_ip.ex @@ -7,45 +7,28 @@ defmodule Pleroma.Plugs.RemoteIp do This is a shim to call [`RemoteIp`](https://git.pleroma.social/pleroma/remote_ip) but with runtime configuration. """ + alias Pleroma.Config import Plug.Conn @behaviour Plug - @headers ~w[ - x-forwarded-for - ] - - # https://en.wikipedia.org/wiki/Localhost - # https://en.wikipedia.org/wiki/Private_network - @reserved ~w[ - 127.0.0.0/8 - ::1/128 - fc00::/7 - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/16 - ] - def init(_), do: nil def call(%{remote_ip: original_remote_ip} = conn, _) do - config = Pleroma.Config.get(__MODULE__, []) - - if Keyword.get(config, :enabled, false) do - %{remote_ip: new_remote_ip} = conn = RemoteIp.call(conn, remote_ip_opts(config)) + if Config.get([__MODULE__, :enabled]) do + %{remote_ip: new_remote_ip} = conn = RemoteIp.call(conn, remote_ip_opts()) assign(conn, :remote_ip_found, original_remote_ip != new_remote_ip) else conn end end - defp remote_ip_opts(config) do - headers = config |> Keyword.get(:headers, @headers) |> MapSet.new() - reserved = Keyword.get(config, :reserved, @reserved) + defp remote_ip_opts() do + headers = Config.get([__MODULE__, :headers], []) |> MapSet.new() + reserved = Config.get([__MODULE__, :reserved], []) proxies = - config - |> Keyword.get(:proxies, []) + Config.get([__MODULE__, :proxies], []) |> Enum.concat(reserved) |> Enum.map(&maybe_add_cidr/1) diff --git a/test/plugs/remote_ip_test.exs b/test/plugs/remote_ip_test.exs index 752ab32e7..2dd1ac1f8 100644 --- a/test/plugs/remote_ip_test.exs +++ b/test/plugs/remote_ip_test.exs @@ -3,13 +3,27 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Plugs.RemoteIpTest do - use ExUnit.Case, async: true + use ExUnit.Case use Plug.Test alias Pleroma.Plugs.RemoteIp - import Pleroma.Tests.Helpers, only: [clear_config: 1, clear_config: 2] - setup do: clear_config(RemoteIp) + import Pleroma.Tests.Helpers, only: [clear_config: 2] + + setup do: + clear_config(RemoteIp, + enabled: true, + headers: ["x-forwarded-for"], + proxies: [], + reserved: [ + "127.0.0.0/8", + "::1/128", + "fc00::/7", + "10.0.0.0/8", + "172.16.0.0/12", + "192.168.0.0/16" + ] + ) test "disabled" do Pleroma.Config.put(RemoteIp, enabled: false) @@ -25,8 +39,6 @@ test "disabled" do end test "enabled" do - Pleroma.Config.put(RemoteIp, enabled: true) - conn = conn(:get, "/") |> put_req_header("x-forwarded-for", "1.1.1.1") @@ -54,8 +66,6 @@ test "custom headers" do end test "custom proxies" do - Pleroma.Config.put(RemoteIp, enabled: true) - conn = conn(:get, "/") |> put_req_header("x-forwarded-for", "173.245.48.1, 1.1.1.1, 173.245.48.2") From 9783e9cd8023533d05bf78e3db3375102a199fc0 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 6 Oct 2020 17:08:26 -0500 Subject: [PATCH 352/460] Add test for an entry without CIDR format --- test/plugs/remote_ip_test.exs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test/plugs/remote_ip_test.exs b/test/plugs/remote_ip_test.exs index 2dd1ac1f8..849c7fc3d 100644 --- a/test/plugs/remote_ip_test.exs +++ b/test/plugs/remote_ip_test.exs @@ -82,4 +82,15 @@ test "custom proxies" do assert conn.remote_ip == {1, 1, 1, 1} end + + test "proxies set without CIDR format" do + Pleroma.Config.put([RemoteIp, :proxies], ["173.245.48.1"]) + + conn = + conn(:get, "/") + |> put_req_header("x-forwarded-for", "173.245.48.1, 1.1.1.1") + |> RemoteIp.call(nil) + + assert conn.remote_ip == {1, 1, 1, 1} + end end From b8c05f4876b8f48bcd93d7e5d60539101329065a Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 6 Oct 2020 17:21:27 -0500 Subject: [PATCH 353/460] Improve descriptions for reserved and proxies --- config/description.exs | 7 ++++--- docs/configuration/cheatsheet.md | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/config/description.exs b/config/description.exs index f6331dd30..2c7d91ccc 100644 --- a/config/description.exs +++ b/config/description.exs @@ -3270,13 +3270,14 @@ key: :proxies, type: {:list, :string}, description: - "A list of strings in [CIDR](https://en.wikipedia.org/wiki/CIDR) notation specifying the IPs of known proxies. Default: `[]`." + "A list of upstream proxy IP subnets in CIDR notation. Defaults to `[]`. IPv4 entries without a bitmask will be assumed to be /32 and IPv6 /128." }, %{ key: :reserved, type: {:list, :string}, - description: - "Defaults to [localhost](https://en.wikipedia.org/wiki/Localhost) and [private network](https://en.wikipedia.org/wiki/Private_network)." + description: """ + A list of reserved IP subnets in CIDR notation which should be ignored if found in `headers`. Defaults to `["127.0.0.0/8", "::1/128", "fc00::/7", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]` + """ } ] }, diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index e0194525d..22333c4f8 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -427,8 +427,8 @@ Available options: * `enabled` - Enable/disable the plug. Defaults to `false`. * `headers` - A list of strings naming the `req_headers` to use when deriving the `remote_ip`. Defaults to `["x-forwarded-for"]`. -* `proxies` - A list of strings in [CIDR](https://en.wikipedia.org/wiki/CIDR) notation specifying the IPs of known proxies. Defaults to `[]`. -* `reserved` - Defaults to [localhost](https://en.wikipedia.org/wiki/Localhost) and [private network](https://en.wikipedia.org/wiki/Private_network). +* `proxies` - A list of upstream proxy IP subnets in CIDR notation. Defaults to `[]`. IPv4 entries without a bitmask will be assumed to be /32 and IPv6 /128. +* `reserved` - A list of reserved IP subnets in CIDR notation which should be ignored if found in `headers`. Defaults to `["127.0.0.0/8", "::1/128", "fc00::/7", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]`. ### :rate_limit From 7a2ed2fc90dd16a5ef45c4dd44a6e09bba035299 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 6 Oct 2020 17:26:31 -0500 Subject: [PATCH 354/460] Credo --- lib/pleroma/plugs/remote_ip.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/plugs/remote_ip.ex b/lib/pleroma/plugs/remote_ip.ex index 9487efa5f..51cc87ad8 100644 --- a/lib/pleroma/plugs/remote_ip.ex +++ b/lib/pleroma/plugs/remote_ip.ex @@ -23,7 +23,7 @@ def call(%{remote_ip: original_remote_ip} = conn, _) do end end - defp remote_ip_opts() do + defp remote_ip_opts do headers = Config.get([__MODULE__, :headers], []) |> MapSet.new() reserved = Config.get([__MODULE__, :reserved], []) From e08eb4aba07ce843f3f1149b8c70fb6b4d855c44 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 6 Oct 2020 17:29:56 -0500 Subject: [PATCH 355/460] Don't leak internal variables in the docs. They're useless to users. --- config/description.exs | 2 +- docs/configuration/cheatsheet.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/description.exs b/config/description.exs index 2c7d91ccc..71cb5d913 100644 --- a/config/description.exs +++ b/config/description.exs @@ -3263,7 +3263,7 @@ key: :headers, type: {:list, :string}, description: """ - A list of strings naming the `req_headers` to use when deriving the `remote_ip`. Default: `["x-forwarded-for"]`. + A list of strings naming the HTTP headers to use when deriving the true client IP. Default: `["x-forwarded-for"]`. """ }, %{ diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index 22333c4f8..7f1dc0fe6 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -426,7 +426,7 @@ This will make Pleroma listen on `127.0.0.1` port `8080` and generate urls start Available options: * `enabled` - Enable/disable the plug. Defaults to `false`. -* `headers` - A list of strings naming the `req_headers` to use when deriving the `remote_ip`. Defaults to `["x-forwarded-for"]`. +* `headers` - A list of strings naming the HTTP headers to use when deriving the true client IP address. Defaults to `["x-forwarded-for"]`. * `proxies` - A list of upstream proxy IP subnets in CIDR notation. Defaults to `[]`. IPv4 entries without a bitmask will be assumed to be /32 and IPv6 /128. * `reserved` - A list of reserved IP subnets in CIDR notation which should be ignored if found in `headers`. Defaults to `["127.0.0.0/8", "::1/128", "fc00::/7", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]`. From b90eda3d8bfa1faf5bdabce9539b601476abed94 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 6 Oct 2020 17:36:29 -0500 Subject: [PATCH 356/460] Improve description yet again --- config/description.exs | 2 +- docs/configuration/cheatsheet.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/description.exs b/config/description.exs index 71cb5d913..c6916ad14 100644 --- a/config/description.exs +++ b/config/description.exs @@ -3270,7 +3270,7 @@ key: :proxies, type: {:list, :string}, description: - "A list of upstream proxy IP subnets in CIDR notation. Defaults to `[]`. IPv4 entries without a bitmask will be assumed to be /32 and IPv6 /128." + "A list of upstream proxy IP subnets in CIDR notation from which we will parse the content of `headers`. Defaults to `[]`. IPv4 entries without a bitmask will be assumed to be /32 and IPv6 /128." }, %{ key: :reserved, diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index 7f1dc0fe6..ea7dfec98 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -427,7 +427,7 @@ Available options: * `enabled` - Enable/disable the plug. Defaults to `false`. * `headers` - A list of strings naming the HTTP headers to use when deriving the true client IP address. Defaults to `["x-forwarded-for"]`. -* `proxies` - A list of upstream proxy IP subnets in CIDR notation. Defaults to `[]`. IPv4 entries without a bitmask will be assumed to be /32 and IPv6 /128. +* `proxies` - A list of upstream proxy IP subnets in CIDR notation from which we will parse the content of `headers`. Defaults to `[]`. IPv4 entries without a bitmask will be assumed to be /32 and IPv6 /128. * `reserved` - A list of reserved IP subnets in CIDR notation which should be ignored if found in `headers`. Defaults to `["127.0.0.0/8", "::1/128", "fc00::/7", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]`. From d0eca5b12518b0b98ef53003d60b08a78decf35f Mon Sep 17 00:00:00 2001 From: feld Date: Wed, 7 Oct 2020 19:16:53 +0000 Subject: [PATCH 357/460] Apply 2 suggestion(s) to 2 file(s) --- lib/pleroma/plugs/remote_ip.ex | 2 +- test/plugs/remote_ip_test.exs | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/plugs/remote_ip.ex b/lib/pleroma/plugs/remote_ip.ex index 51cc87ad8..987022156 100644 --- a/lib/pleroma/plugs/remote_ip.ex +++ b/lib/pleroma/plugs/remote_ip.ex @@ -43,6 +43,6 @@ defp maybe_add_cidr(proxy) when is_binary(proxy) do InetCidr.v6?(InetCidr.parse_address!(proxy)) -> proxy <> "/128" end - InetCidr.parse(proxy) + InetCidr.parse(proxy, true) end end diff --git a/test/plugs/remote_ip_test.exs b/test/plugs/remote_ip_test.exs index 849c7fc3d..2da9f616b 100644 --- a/test/plugs/remote_ip_test.exs +++ b/test/plugs/remote_ip_test.exs @@ -92,5 +92,18 @@ test "proxies set without CIDR format" do |> RemoteIp.call(nil) assert conn.remote_ip == {1, 1, 1, 1} + + test "proxies set `nonsensical` CIDR" do + Pleroma.Config.put([RemoteIp, :reserved], ["127.0.0.0/8"]) + Pleroma.Config.put([RemoteIp, :proxies], ["10.0.0.3/24"]) + + conn = + conn(:get, "/") + |> put_req_header("x-forwarded-for", "10.0.0.3, 1.1.1.1") + |> RemoteIp.call(nil) + + assert conn.remote_ip == {1, 1, 1, 1} + end + end end From 8bfc5d9a0cf96739a6a73eae3c1d96277da8ae1b Mon Sep 17 00:00:00 2001 From: Maksim Date: Wed, 7 Oct 2020 19:32:09 +0000 Subject: [PATCH 358/460] Apply 1 suggestion(s) to 1 file(s) --- test/plugs/remote_ip_test.exs | 1 + 1 file changed, 1 insertion(+) diff --git a/test/plugs/remote_ip_test.exs b/test/plugs/remote_ip_test.exs index 2da9f616b..5f1b8a539 100644 --- a/test/plugs/remote_ip_test.exs +++ b/test/plugs/remote_ip_test.exs @@ -92,6 +92,7 @@ test "proxies set without CIDR format" do |> RemoteIp.call(nil) assert conn.remote_ip == {1, 1, 1, 1} + end test "proxies set `nonsensical` CIDR" do Pleroma.Config.put([RemoteIp, :reserved], ["127.0.0.0/8"]) From 6ee20eb3285a99fab880150a9dfeebadc46fde76 Mon Sep 17 00:00:00 2001 From: Maksim Date: Wed, 7 Oct 2020 19:32:42 +0000 Subject: [PATCH 359/460] Apply 1 suggestion(s) to 1 file(s) --- test/plugs/remote_ip_test.exs | 1 - 1 file changed, 1 deletion(-) diff --git a/test/plugs/remote_ip_test.exs b/test/plugs/remote_ip_test.exs index 5f1b8a539..b45baf75f 100644 --- a/test/plugs/remote_ip_test.exs +++ b/test/plugs/remote_ip_test.exs @@ -104,7 +104,6 @@ test "proxies set `nonsensical` CIDR" do |> RemoteIp.call(nil) assert conn.remote_ip == {1, 1, 1, 1} - end end end From a702f9fb5bff78c99014838eb8f678c30913bd59 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 7 Oct 2020 15:07:03 -0500 Subject: [PATCH 360/460] Lint --- test/plugs/remote_ip_test.exs | 1 - 1 file changed, 1 deletion(-) diff --git a/test/plugs/remote_ip_test.exs b/test/plugs/remote_ip_test.exs index b45baf75f..6d01c812d 100644 --- a/test/plugs/remote_ip_test.exs +++ b/test/plugs/remote_ip_test.exs @@ -104,6 +104,5 @@ test "proxies set `nonsensical` CIDR" do |> RemoteIp.call(nil) assert conn.remote_ip == {1, 1, 1, 1} - end end From a02ed3920f43b4dd67737e5989f65f3298546ea0 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 8 Oct 2020 15:51:56 -0500 Subject: [PATCH 361/460] Improve backup/restore documentation --- docs/administration/backup.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/administration/backup.md b/docs/administration/backup.md index be57bf74a..10a86c563 100644 --- a/docs/administration/backup.md +++ b/docs/administration/backup.md @@ -5,7 +5,7 @@ 1. Stop the Pleroma service. 2. Go to the working directory of Pleroma (default is `/opt/pleroma`) 3. Run `sudo -Hu postgres pg_dump -d --format=custom -f ` (make sure the postgres user has write access to the destination file) -4. Copy `pleroma.pgdump`, `config/prod.secret.exs` and the `uploads` folder to your backup destination. If you have other modifications, copy those changes too. +4. Copy `pleroma.pgdump`, `config/prod.secret.exs`, `config/setup_db.psql` (if still available) and the `uploads` folder to your backup destination. If you have other modifications, copy those changes too. 5. Restart the Pleroma service. ## Restore/Move @@ -14,11 +14,15 @@ 2. Stop the Pleroma service. 3. Go to the working directory of Pleroma (default is `/opt/pleroma`) 4. Copy the above mentioned files back to their original position. -5. Drop the existing database and recreate an empty one `sudo -Hu postgres psql -c 'DROP DATABASE ;';` `sudo -Hu postgres psql -c 'CREATE DATABASE ;';` -6. Run `sudo -Hu postgres pg_restore -d -v -1 ` -7. If you installed a newer Pleroma version, you should run `mix ecto.migrate`[^1]. This task performs database migrations, if there were any. -8. Restart the Pleroma service. -9. Run `sudo -Hu postgres vacuumdb --all --analyze-in-stages`. This will quickly generate the statistics so that postgres can properly plan queries. +5. Drop the existing database. `sudo -Hu postgres psql -c 'DROP DATABASE ;` +6. Restore the database schema and pleroma postgres role the with the original `setup_db.psql` if you have it: `sudo -Hu postgres psql -f config/setup_db.psql`. + + Alernatively, run the `mix pleroma.instance gen` task again. You can ignore most of the questions, but make the password the same as found in your backup of `config/prod.secret.exs`. Then run the restoration of the pleroma role and schema with of the generated `config/setup_db.psql` as instructed above. You may delete the `config/generated_config.exs` file as it is not needed. + +7. Now restore the Pleroma instance's data into the empty database schema: `sudo -Hu postgres pg_restore -d -v -1 ` +8. If you installed a newer Pleroma version, you should run `mix ecto.migrate`[^1]. This task performs database migrations, if there were any. +9. Restart the Pleroma service. +10. Run `sudo -Hu postgres vacuumdb --all --analyze-in-stages`. This will quickly generate the statistics so that postgres can properly plan queries. [^1]: Prefix with `MIX_ENV=prod` to run it using the production config file. From 5f38e03c8a487da3e9f7f480a684b0dad6a3c086 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 8 Oct 2020 15:54:28 -0500 Subject: [PATCH 362/460] Don't always need to drop --- docs/administration/backup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/administration/backup.md b/docs/administration/backup.md index 10a86c563..1d9b82fcc 100644 --- a/docs/administration/backup.md +++ b/docs/administration/backup.md @@ -14,7 +14,7 @@ 2. Stop the Pleroma service. 3. Go to the working directory of Pleroma (default is `/opt/pleroma`) 4. Copy the above mentioned files back to their original position. -5. Drop the existing database. `sudo -Hu postgres psql -c 'DROP DATABASE ;` +5. Drop the existing database if restoring in-place. `sudo -Hu postgres psql -c 'DROP DATABASE ;` 6. Restore the database schema and pleroma postgres role the with the original `setup_db.psql` if you have it: `sudo -Hu postgres psql -f config/setup_db.psql`. Alernatively, run the `mix pleroma.instance gen` task again. You can ignore most of the questions, but make the password the same as found in your backup of `config/prod.secret.exs`. Then run the restoration of the pleroma role and schema with of the generated `config/setup_db.psql` as instructed above. You may delete the `config/generated_config.exs` file as it is not needed. From e0c5adcc206818e6d135fb5f827017edd0d4044e Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 8 Oct 2020 15:56:37 -0500 Subject: [PATCH 363/460] Syntax error --- docs/administration/backup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/administration/backup.md b/docs/administration/backup.md index 1d9b82fcc..8e5db8c57 100644 --- a/docs/administration/backup.md +++ b/docs/administration/backup.md @@ -14,7 +14,7 @@ 2. Stop the Pleroma service. 3. Go to the working directory of Pleroma (default is `/opt/pleroma`) 4. Copy the above mentioned files back to their original position. -5. Drop the existing database if restoring in-place. `sudo -Hu postgres psql -c 'DROP DATABASE ;` +5. Drop the existing database if restoring in-place. `sudo -Hu postgres psql -c 'DROP DATABASE ;'` 6. Restore the database schema and pleroma postgres role the with the original `setup_db.psql` if you have it: `sudo -Hu postgres psql -f config/setup_db.psql`. Alernatively, run the `mix pleroma.instance gen` task again. You can ignore most of the questions, but make the password the same as found in your backup of `config/prod.secret.exs`. Then run the restoration of the pleroma role and schema with of the generated `config/setup_db.psql` as instructed above. You may delete the `config/generated_config.exs` file as it is not needed. From 1e5fec8d45ac9d16b80986db99abc32ddb7bb87b Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 8 Oct 2020 16:00:42 -0500 Subject: [PATCH 364/460] Ask user to use matching values for database setup --- docs/administration/backup.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/administration/backup.md b/docs/administration/backup.md index 8e5db8c57..b49ff07fb 100644 --- a/docs/administration/backup.md +++ b/docs/administration/backup.md @@ -10,14 +10,14 @@ ## Restore/Move -1. Optionally reinstall Pleroma (either on the same server or on another server if you want to move servers). Try to use the same database name. +1. Optionally reinstall Pleroma (either on the same server or on another server if you want to move servers). 2. Stop the Pleroma service. 3. Go to the working directory of Pleroma (default is `/opt/pleroma`) 4. Copy the above mentioned files back to their original position. 5. Drop the existing database if restoring in-place. `sudo -Hu postgres psql -c 'DROP DATABASE ;'` 6. Restore the database schema and pleroma postgres role the with the original `setup_db.psql` if you have it: `sudo -Hu postgres psql -f config/setup_db.psql`. - Alernatively, run the `mix pleroma.instance gen` task again. You can ignore most of the questions, but make the password the same as found in your backup of `config/prod.secret.exs`. Then run the restoration of the pleroma role and schema with of the generated `config/setup_db.psql` as instructed above. You may delete the `config/generated_config.exs` file as it is not needed. + Alernatively, run the `mix pleroma.instance gen` task again. You can ignore most of the questions, but make the database user, name, and password the same as found in your backup of `config/prod.secret.exs`. Then run the restoration of the pleroma role and schema with of the generated `config/setup_db.psql` as instructed above. You may delete the `config/generated_config.exs` file as it is not needed. 7. Now restore the Pleroma instance's data into the empty database schema: `sudo -Hu postgres pg_restore -d -v -1 ` 8. If you installed a newer Pleroma version, you should run `mix ecto.migrate`[^1]. This task performs database migrations, if there were any. From ec217ca638859d6c4b8071102e7e0546db762990 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 9 Oct 2020 11:18:48 -0500 Subject: [PATCH 365/460] Spelling --- docs/administration/backup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/administration/backup.md b/docs/administration/backup.md index b49ff07fb..cfedf5b58 100644 --- a/docs/administration/backup.md +++ b/docs/administration/backup.md @@ -17,7 +17,7 @@ 5. Drop the existing database if restoring in-place. `sudo -Hu postgres psql -c 'DROP DATABASE ;'` 6. Restore the database schema and pleroma postgres role the with the original `setup_db.psql` if you have it: `sudo -Hu postgres psql -f config/setup_db.psql`. - Alernatively, run the `mix pleroma.instance gen` task again. You can ignore most of the questions, but make the database user, name, and password the same as found in your backup of `config/prod.secret.exs`. Then run the restoration of the pleroma role and schema with of the generated `config/setup_db.psql` as instructed above. You may delete the `config/generated_config.exs` file as it is not needed. + Alternatively, run the `mix pleroma.instance gen` task again. You can ignore most of the questions, but make the database user, name, and password the same as found in your backup of `config/prod.secret.exs`. Then run the restoration of the pleroma role and schema with of the generated `config/setup_db.psql` as instructed above. You may delete the `config/generated_config.exs` file as it is not needed. 7. Now restore the Pleroma instance's data into the empty database schema: `sudo -Hu postgres pg_restore -d -v -1 ` 8. If you installed a newer Pleroma version, you should run `mix ecto.migrate`[^1]. This task performs database migrations, if there were any. From 3ca98878d27478037233a92f72adb3fbade62035 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 9 Oct 2020 17:08:05 -0500 Subject: [PATCH 366/460] Deep link to the user account in AdminFE in account confirmation emails --- lib/pleroma/emails/admin_email.ex | 2 +- test/emails/admin_email_test.exs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/emails/admin_email.ex b/lib/pleroma/emails/admin_email.ex index c27ad1065..8979db2f8 100644 --- a/lib/pleroma/emails/admin_email.ex +++ b/lib/pleroma/emails/admin_email.ex @@ -88,7 +88,7 @@ def new_unapproved_registration(to, account) do html_body = """
#{HTML.strip_tags(account.registration_reason)}
- Visit AdminFE + Visit AdminFE """ new() diff --git a/test/emails/admin_email_test.exs b/test/emails/admin_email_test.exs index e24231e27..155057f3e 100644 --- a/test/emails/admin_email_test.exs +++ b/test/emails/admin_email_test.exs @@ -63,7 +63,7 @@ test "new unapproved registration email" do assert res.html_body == """

New account for review: @#{account.nickname}

Plz let me in
- Visit AdminFE + Visit AdminFE """ end end From 6c61ef14c3f48910c52e17c68fce175682717962 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 12 Oct 2020 11:18:39 -0500 Subject: [PATCH 367/460] Support enabling upload filters during instance gen --- docs/administration/CLI_tasks/instance.md | 3 ++ lib/mix/tasks/pleroma/instance.ex | 64 ++++++++++++++++++++++- priv/templates/sample_config.eex | 4 ++ test/tasks/instance_test.exs | 9 +++- 4 files changed, 77 insertions(+), 3 deletions(-) diff --git a/docs/administration/CLI_tasks/instance.md b/docs/administration/CLI_tasks/instance.md index 989ecc55d..d6913280a 100644 --- a/docs/administration/CLI_tasks/instance.md +++ b/docs/administration/CLI_tasks/instance.md @@ -37,3 +37,6 @@ If any of the options are left unspecified, you will be prompted interactively. - `--static-dir ` - the directory custom public files should be read from (custom emojis, frontend bundle overrides, robots.txt, etc.) - `--listen-ip ` - the ip the app should listen to, defaults to 127.0.0.1 - `--listen-port ` - the port the app should listen to, defaults to 4000 +- `--strip-uploads ` - use ExifTool to strip uploads of sensitive location data +- `--anonymize-uploads ` - randomize uploaded filenames +- `--dedupe-uploads ` - store files based on their hash to reduce data storage requirements if duplicates are uploaded with different filenames diff --git a/lib/mix/tasks/pleroma/instance.ex b/lib/mix/tasks/pleroma/instance.ex index 91440b453..fc21ae062 100644 --- a/lib/mix/tasks/pleroma/instance.ex +++ b/lib/mix/tasks/pleroma/instance.ex @@ -33,7 +33,10 @@ def run(["gen" | rest]) do uploads_dir: :string, static_dir: :string, listen_ip: :string, - listen_port: :string + listen_port: :string, + strip_uploads: :string, + anonymize_uploads: :string, + dedupe_uploads: :string ], aliases: [ o: :output, @@ -158,6 +161,30 @@ def run(["gen" | rest]) do ) |> Path.expand() + strip_uploads = + get_option( + options, + :strip_uploads, + "Do you want to strip location (GPS) data from uploaded images? (y/n)", + "y" + ) === "y" + + anonymize_uploads = + get_option( + options, + :anonymize_uploads, + "Do you want to anonymize the filenames of uploads? (y/n)", + "n" + ) === "y" + + dedupe_uploads = + get_option( + options, + :dedupe_uploads, + "Do you want to deduplicate uploaded files? (y/n)", + "n" + ) === "y" + Config.put([:instance, :static_dir], static_dir) secret = :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64) @@ -188,7 +215,13 @@ def run(["gen" | rest]) do uploads_dir: uploads_dir, rum_enabled: rum_enabled, listen_ip: listen_ip, - listen_port: listen_port + listen_port: listen_port, + upload_filters: + upload_filters(%{ + strip: strip_uploads, + anonymize: anonymize_uploads, + dedupe: dedupe_uploads + }) ) result_psql = @@ -247,4 +280,31 @@ defp write_robots_txt(static_dir, indexable, template_dir) do File.write(robots_txt_path, robots_txt) shell_info("Writing #{robots_txt_path}.") end + + defp upload_filters(filters) when is_map(filters) do + enabled_filters = + if filters.strip do + [Pleroma.Upload.Filter.ExifTool] + else + [] + end + + enabled_filters = + if filters.anonymize do + enabled_filters ++ [Pleroma.Upload.Filter.AnonymizeFilename] + else + enabled_filters + end + + enabled_filters = + if filters.dedupe do + enabled_filters ++ [Pleroma.Upload.Filter.Dedupe] + else + enabled_filters + end + + enabled_filters + end + + defp upload_filters(_), do: [] end diff --git a/priv/templates/sample_config.eex b/priv/templates/sample_config.eex index bc7e37375..cdddc47ea 100644 --- a/priv/templates/sample_config.eex +++ b/priv/templates/sample_config.eex @@ -71,3 +71,7 @@ config :pleroma, Pleroma.Uploaders.Local, uploads: "<%= uploads_dir %>" config :joken, default_signer: "<%= jwt_secret %>" config :pleroma, configurable_from_database: <%= db_configurable? %> + +<%= if Kernel.length(upload_filters) > 0 do +"config :pleroma, Pleroma.Upload, filters: #{inspect(upload_filters)}" +end %> diff --git a/test/tasks/instance_test.exs b/test/tasks/instance_test.exs index 3b4c041d9..914ccb10a 100644 --- a/test/tasks/instance_test.exs +++ b/test/tasks/instance_test.exs @@ -63,7 +63,13 @@ test "running gen" do "--uploads-dir", "test/uploads", "--static-dir", - "./test/../test/instance/static/" + "./test/../test/instance/static/", + "--strip-uploads", + "y", + "--dedupe-uploads", + "n", + "--anonymize-uploads", + "n" ]) end @@ -82,6 +88,7 @@ test "running gen" do assert generated_config =~ "password: \"dbpass\"" assert generated_config =~ "configurable_from_database: true" assert generated_config =~ "http: [ip: {127, 0, 0, 1}, port: 4000]" + assert generated_config =~ "filters: [Pleroma.Upload.Filter.ExifTool]" assert File.read!(tmp_path() <> "setup.psql") == generated_setup_psql() assert File.exists?(Path.expand("./test/instance/static/robots.txt")) end From 8539e386c3f00537f120487e717ec7b25fe6c572 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 12 Oct 2020 12:00:50 -0500 Subject: [PATCH 368/460] Add missing Copyright headers --- lib/mix/tasks/pleroma/count_statuses.ex | 4 ++++ lib/mix/tasks/pleroma/digest.ex | 4 ++++ lib/mix/tasks/pleroma/docs.ex | 4 ++++ lib/mix/tasks/pleroma/email.ex | 4 ++++ lib/mix/tasks/pleroma/notification_settings.ex | 4 ++++ lib/pleroma/config/oban.ex | 4 ++++ lib/pleroma/docs/generator.ex | 4 ++++ lib/pleroma/docs/json.ex | 4 ++++ lib/pleroma/docs/markdown.ex | 4 ++++ lib/pleroma/emoji/pack.ex | 4 ++++ lib/pleroma/gun/connection_pool.ex | 4 ++++ lib/pleroma/gun/connection_pool/reclaimer.ex | 4 ++++ lib/pleroma/gun/connection_pool/worker.ex | 4 ++++ lib/pleroma/gun/connection_pool/worker_supervisor.ex | 4 ++++ lib/pleroma/http/adapter_helper/default.ex | 4 ++++ lib/pleroma/http/adapter_helper/hackney.ex | 4 ++++ lib/pleroma/jwt.ex | 4 ++++ lib/pleroma/moderation_log.ex | 4 ++++ lib/pleroma/plugs/rate_limiter/limiter_supervisor.ex | 4 ++++ lib/pleroma/plugs/rate_limiter/supervisor.ex | 4 ++++ lib/pleroma/telemetry/logger.ex | 4 ++++ lib/pleroma/web/activity_pub/builder.ex | 4 ++++ lib/pleroma/web/activity_pub/side_effects.ex | 4 ++++ lib/pleroma/web/mailer/subscription_controller.ex | 4 ++++ .../web/pleroma_api/controllers/emoji_file_controller.ex | 4 ++++ .../web/pleroma_api/controllers/emoji_pack_controller.ex | 4 ++++ lib/pleroma/web/rich_media/parsers/ttl/aws_signed_url.ex | 4 ++++ lib/pleroma/web/rich_media/parsers/ttl/ttl.ex | 4 ++++ lib/pleroma/web/views/email_view.ex | 4 ++++ lib/pleroma/web/views/mailer/subscription_view.ex | 4 ++++ test/activity/ir/topics_test.exs | 4 ++++ test/config/deprecation_warnings_test.exs | 4 ++++ test/docs/generator_test.exs | 4 ++++ test/fixtures/config/temp.secret.exs | 4 ++++ test/mfa/backup_codes_test.exs | 4 ++++ test/mfa/totp_test.exs | 4 ++++ test/migrations/20200716195806_autolinker_to_linkify_test.exs | 4 ++++ .../20200722185515_fix_malformed_formatter_config_test.exs | 4 ++++ test/migrations/20200724133313_move_welcome_settings_test.exs | 4 ++++ test/migrations/20200802170532_fix_legacy_tags_test.exs | 4 ++++ test/safe_jsonb_set_test.exs | 4 ++++ test/tasks/digest_test.exs | 4 ++++ test/tasks/email_test.exs | 4 ++++ test/tasks/emoji_test.exs | 4 ++++ test/web/activity_pub/mrf/mrf_test.exs | 4 ++++ .../activity_pub/object_validators/types/date_time_test.exs | 4 ++++ .../activity_pub/object_validators/types/recipients_test.exs | 4 ++++ test/web/chat_channel_test.exs | 4 ++++ test/web/media_proxy/invalidation_test.exs | 4 ++++ test/web/media_proxy/invalidations/http_test.exs | 4 ++++ test/web/media_proxy/invalidations/script_test.exs | 4 ++++ .../controllers/two_factor_authentication_controller_test.exs | 4 ++++ test/web/static_fe/static_fe_controller_test.exs | 4 ++++ 53 files changed, 212 insertions(+) diff --git a/lib/mix/tasks/pleroma/count_statuses.ex b/lib/mix/tasks/pleroma/count_statuses.ex index e1e8195dd..8761d8f17 100644 --- a/lib/mix/tasks/pleroma/count_statuses.ex +++ b/lib/mix/tasks/pleroma/count_statuses.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Mix.Tasks.Pleroma.CountStatuses do @shortdoc "Re-counts statuses for all users" diff --git a/lib/mix/tasks/pleroma/digest.ex b/lib/mix/tasks/pleroma/digest.ex index 3595f912d..cac148b88 100644 --- a/lib/mix/tasks/pleroma/digest.ex +++ b/lib/mix/tasks/pleroma/digest.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Mix.Tasks.Pleroma.Digest do use Mix.Task import Mix.Pleroma diff --git a/lib/mix/tasks/pleroma/docs.ex b/lib/mix/tasks/pleroma/docs.ex index 6088fc71d..ad5c37fc9 100644 --- a/lib/mix/tasks/pleroma/docs.ex +++ b/lib/mix/tasks/pleroma/docs.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Mix.Tasks.Pleroma.Docs do use Mix.Task import Mix.Pleroma diff --git a/lib/mix/tasks/pleroma/email.ex b/lib/mix/tasks/pleroma/email.ex index 9972cb988..bc5facc09 100644 --- a/lib/mix/tasks/pleroma/email.ex +++ b/lib/mix/tasks/pleroma/email.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Mix.Tasks.Pleroma.Email do use Mix.Task import Mix.Pleroma diff --git a/lib/mix/tasks/pleroma/notification_settings.ex b/lib/mix/tasks/pleroma/notification_settings.ex index 00f5ba7bf..f99275de1 100644 --- a/lib/mix/tasks/pleroma/notification_settings.ex +++ b/lib/mix/tasks/pleroma/notification_settings.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Mix.Tasks.Pleroma.NotificationSettings do @shortdoc "Enable&Disable privacy option for push notifications" @moduledoc """ diff --git a/lib/pleroma/config/oban.ex b/lib/pleroma/config/oban.ex index 9f601b1a3..8e0351d52 100644 --- a/lib/pleroma/config/oban.ex +++ b/lib/pleroma/config/oban.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Config.Oban do require Logger diff --git a/lib/pleroma/docs/generator.ex b/lib/pleroma/docs/generator.ex index a671a6278..a70f83b73 100644 --- a/lib/pleroma/docs/generator.ex +++ b/lib/pleroma/docs/generator.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Docs.Generator do @callback process(keyword()) :: {:ok, String.t()} diff --git a/lib/pleroma/docs/json.ex b/lib/pleroma/docs/json.ex index feeb4320e..13618b509 100644 --- a/lib/pleroma/docs/json.ex +++ b/lib/pleroma/docs/json.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Docs.JSON do @behaviour Pleroma.Docs.Generator @external_resource "config/description.exs" diff --git a/lib/pleroma/docs/markdown.ex b/lib/pleroma/docs/markdown.ex index da3f20f43..eac0789a6 100644 --- a/lib/pleroma/docs/markdown.ex +++ b/lib/pleroma/docs/markdown.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Docs.Markdown do @behaviour Pleroma.Docs.Generator diff --git a/lib/pleroma/emoji/pack.ex b/lib/pleroma/emoji/pack.ex index 8f1989ada..0670f29f1 100644 --- a/lib/pleroma/emoji/pack.ex +++ b/lib/pleroma/emoji/pack.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Emoji.Pack do @derive {Jason.Encoder, only: [:files, :pack, :files_count]} defstruct files: %{}, diff --git a/lib/pleroma/gun/connection_pool.ex b/lib/pleroma/gun/connection_pool.ex index f34602b73..e322f192a 100644 --- a/lib/pleroma/gun/connection_pool.ex +++ b/lib/pleroma/gun/connection_pool.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Gun.ConnectionPool do @registry __MODULE__ diff --git a/lib/pleroma/gun/connection_pool/reclaimer.ex b/lib/pleroma/gun/connection_pool/reclaimer.ex index cea800882..241e8b04f 100644 --- a/lib/pleroma/gun/connection_pool/reclaimer.ex +++ b/lib/pleroma/gun/connection_pool/reclaimer.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Gun.ConnectionPool.Reclaimer do use GenServer, restart: :temporary diff --git a/lib/pleroma/gun/connection_pool/worker.ex b/lib/pleroma/gun/connection_pool/worker.ex index bf57e9e5f..b71816bed 100644 --- a/lib/pleroma/gun/connection_pool/worker.ex +++ b/lib/pleroma/gun/connection_pool/worker.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Gun.ConnectionPool.Worker do alias Pleroma.Gun use GenServer, restart: :temporary diff --git a/lib/pleroma/gun/connection_pool/worker_supervisor.ex b/lib/pleroma/gun/connection_pool/worker_supervisor.ex index 39615c956..4c23bcbd9 100644 --- a/lib/pleroma/gun/connection_pool/worker_supervisor.ex +++ b/lib/pleroma/gun/connection_pool/worker_supervisor.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Gun.ConnectionPool.WorkerSupervisor do @moduledoc "Supervisor for pool workers. Does not do anything except enforce max connection limit" diff --git a/lib/pleroma/http/adapter_helper/default.ex b/lib/pleroma/http/adapter_helper/default.ex index e13441316..8567a616b 100644 --- a/lib/pleroma/http/adapter_helper/default.ex +++ b/lib/pleroma/http/adapter_helper/default.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.HTTP.AdapterHelper.Default do alias Pleroma.HTTP.AdapterHelper diff --git a/lib/pleroma/http/adapter_helper/hackney.ex b/lib/pleroma/http/adapter_helper/hackney.ex index ef84553c1..ff60513fd 100644 --- a/lib/pleroma/http/adapter_helper/hackney.ex +++ b/lib/pleroma/http/adapter_helper/hackney.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.HTTP.AdapterHelper.Hackney do @behaviour Pleroma.HTTP.AdapterHelper diff --git a/lib/pleroma/jwt.ex b/lib/pleroma/jwt.ex index 10102ff5d..faeb77781 100644 --- a/lib/pleroma/jwt.ex +++ b/lib/pleroma/jwt.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.JWT do use Joken.Config diff --git a/lib/pleroma/moderation_log.ex b/lib/pleroma/moderation_log.ex index 47036a6f6..38a863443 100644 --- a/lib/pleroma/moderation_log.ex +++ b/lib/pleroma/moderation_log.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.ModerationLog do use Ecto.Schema diff --git a/lib/pleroma/plugs/rate_limiter/limiter_supervisor.ex b/lib/pleroma/plugs/rate_limiter/limiter_supervisor.ex index 884268d96..0bf5aadfb 100644 --- a/lib/pleroma/plugs/rate_limiter/limiter_supervisor.ex +++ b/lib/pleroma/plugs/rate_limiter/limiter_supervisor.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Plugs.RateLimiter.LimiterSupervisor do use DynamicSupervisor diff --git a/lib/pleroma/plugs/rate_limiter/supervisor.ex b/lib/pleroma/plugs/rate_limiter/supervisor.ex index 9672f7876..ce196df52 100644 --- a/lib/pleroma/plugs/rate_limiter/supervisor.ex +++ b/lib/pleroma/plugs/rate_limiter/supervisor.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Plugs.RateLimiter.Supervisor do use Supervisor diff --git a/lib/pleroma/telemetry/logger.ex b/lib/pleroma/telemetry/logger.ex index 197b1d091..003079cf3 100644 --- a/lib/pleroma/telemetry/logger.ex +++ b/lib/pleroma/telemetry/logger.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Telemetry.Logger do @moduledoc "Transforms Pleroma telemetry events to logs" diff --git a/lib/pleroma/web/activity_pub/builder.ex b/lib/pleroma/web/activity_pub/builder.ex index 9a7b7d9de..298aff6b7 100644 --- a/lib/pleroma/web/activity_pub/builder.ex +++ b/lib/pleroma/web/activity_pub/builder.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.ActivityPub.Builder do @moduledoc """ This module builds the objects. Meant to be used for creating local objects. diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index b9a83a544..2eec0ce86 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.ActivityPub.SideEffects do @moduledoc """ This module looks at an inserted object and executes the side effects that it diff --git a/lib/pleroma/web/mailer/subscription_controller.ex b/lib/pleroma/web/mailer/subscription_controller.ex index 478a83518..ace44afd1 100644 --- a/lib/pleroma/web/mailer/subscription_controller.ex +++ b/lib/pleroma/web/mailer/subscription_controller.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.Mailer.SubscriptionController do use Pleroma.Web, :controller diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex index 71c53df1d..7c0345094 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.PleromaAPI.EmojiFileController do use Pleroma.Web, :controller diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex index 6696f8b92..a0e5c739a 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.PleromaAPI.EmojiPackController do use Pleroma.Web, :controller diff --git a/lib/pleroma/web/rich_media/parsers/ttl/aws_signed_url.ex b/lib/pleroma/web/rich_media/parsers/ttl/aws_signed_url.ex index c5aaea2d4..15109d28d 100644 --- a/lib/pleroma/web/rich_media/parsers/ttl/aws_signed_url.ex +++ b/lib/pleroma/web/rich_media/parsers/ttl/aws_signed_url.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl do @behaviour Pleroma.Web.RichMedia.Parser.TTL diff --git a/lib/pleroma/web/rich_media/parsers/ttl/ttl.ex b/lib/pleroma/web/rich_media/parsers/ttl/ttl.ex index 6b3ec6d30..13511888c 100644 --- a/lib/pleroma/web/rich_media/parsers/ttl/ttl.ex +++ b/lib/pleroma/web/rich_media/parsers/ttl/ttl.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.RichMedia.Parser.TTL do @callback ttl(Map.t(), String.t()) :: {:ok, Integer.t()} | {:error, String.t()} end diff --git a/lib/pleroma/web/views/email_view.ex b/lib/pleroma/web/views/email_view.ex index 6b0fbe61e..bcdee6571 100644 --- a/lib/pleroma/web/views/email_view.ex +++ b/lib/pleroma/web/views/email_view.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.EmailView do use Pleroma.Web, :view import Phoenix.HTML diff --git a/lib/pleroma/web/views/mailer/subscription_view.ex b/lib/pleroma/web/views/mailer/subscription_view.ex index fc3d20816..4562a9d6c 100644 --- a/lib/pleroma/web/views/mailer/subscription_view.ex +++ b/lib/pleroma/web/views/mailer/subscription_view.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.Mailer.SubscriptionView do use Pleroma.Web, :view end diff --git a/test/activity/ir/topics_test.exs b/test/activity/ir/topics_test.exs index 14a6e6b71..4ddcea1ec 100644 --- a/test/activity/ir/topics_test.exs +++ b/test/activity/ir/topics_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Activity.Ir.TopicsTest do use Pleroma.DataCase diff --git a/test/config/deprecation_warnings_test.exs b/test/config/deprecation_warnings_test.exs index f81a7b580..02ada1aab 100644 --- a/test/config/deprecation_warnings_test.exs +++ b/test/config/deprecation_warnings_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Config.DeprecationWarningsTest do use ExUnit.Case use Pleroma.Tests.Helpers diff --git a/test/docs/generator_test.exs b/test/docs/generator_test.exs index b32918a69..43877244d 100644 --- a/test/docs/generator_test.exs +++ b/test/docs/generator_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Docs.GeneratorTest do use ExUnit.Case, async: true alias Pleroma.Docs.Generator diff --git a/test/fixtures/config/temp.secret.exs b/test/fixtures/config/temp.secret.exs index fa8c7c7e8..621bc8cf6 100644 --- a/test/fixtures/config/temp.secret.exs +++ b/test/fixtures/config/temp.secret.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + use Mix.Config config :pleroma, :first_setting, key: "value", key2: [Pleroma.Repo] diff --git a/test/mfa/backup_codes_test.exs b/test/mfa/backup_codes_test.exs index 7bc01b36b..41adb1e96 100644 --- a/test/mfa/backup_codes_test.exs +++ b/test/mfa/backup_codes_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.MFA.BackupCodesTest do use Pleroma.DataCase diff --git a/test/mfa/totp_test.exs b/test/mfa/totp_test.exs index 50153d208..9edb6fd54 100644 --- a/test/mfa/totp_test.exs +++ b/test/mfa/totp_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.MFA.TOTPTest do use Pleroma.DataCase diff --git a/test/migrations/20200716195806_autolinker_to_linkify_test.exs b/test/migrations/20200716195806_autolinker_to_linkify_test.exs index 250d11c61..84f520fe4 100644 --- a/test/migrations/20200716195806_autolinker_to_linkify_test.exs +++ b/test/migrations/20200716195806_autolinker_to_linkify_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Repo.Migrations.AutolinkerToLinkifyTest do use Pleroma.DataCase import Pleroma.Factory diff --git a/test/migrations/20200722185515_fix_malformed_formatter_config_test.exs b/test/migrations/20200722185515_fix_malformed_formatter_config_test.exs index d3490478e..61528599a 100644 --- a/test/migrations/20200722185515_fix_malformed_formatter_config_test.exs +++ b/test/migrations/20200722185515_fix_malformed_formatter_config_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Repo.Migrations.FixMalformedFormatterConfigTest do use Pleroma.DataCase import Pleroma.Factory diff --git a/test/migrations/20200724133313_move_welcome_settings_test.exs b/test/migrations/20200724133313_move_welcome_settings_test.exs index 739f24547..53d05a55a 100644 --- a/test/migrations/20200724133313_move_welcome_settings_test.exs +++ b/test/migrations/20200724133313_move_welcome_settings_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Repo.Migrations.MoveWelcomeSettingsTest do use Pleroma.DataCase import Pleroma.Factory diff --git a/test/migrations/20200802170532_fix_legacy_tags_test.exs b/test/migrations/20200802170532_fix_legacy_tags_test.exs index 3b4dee407..432055e45 100644 --- a/test/migrations/20200802170532_fix_legacy_tags_test.exs +++ b/test/migrations/20200802170532_fix_legacy_tags_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Repo.Migrations.FixLegacyTagsTest do alias Pleroma.User use Pleroma.DataCase diff --git a/test/safe_jsonb_set_test.exs b/test/safe_jsonb_set_test.exs index 748540570..8b1274545 100644 --- a/test/safe_jsonb_set_test.exs +++ b/test/safe_jsonb_set_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.SafeJsonbSetTest do use Pleroma.DataCase diff --git a/test/tasks/digest_test.exs b/test/tasks/digest_test.exs index 0b444c86d..69dccb745 100644 --- a/test/tasks/digest_test.exs +++ b/test/tasks/digest_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Mix.Tasks.Pleroma.DigestTest do use Pleroma.DataCase diff --git a/test/tasks/email_test.exs b/test/tasks/email_test.exs index 5393e3573..9523aefd8 100644 --- a/test/tasks/email_test.exs +++ b/test/tasks/email_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Mix.Tasks.Pleroma.EmailTest do use Pleroma.DataCase diff --git a/test/tasks/emoji_test.exs b/test/tasks/emoji_test.exs index 499f098c2..0fb8603ac 100644 --- a/test/tasks/emoji_test.exs +++ b/test/tasks/emoji_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Mix.Tasks.Pleroma.EmojiTest do use ExUnit.Case, async: true diff --git a/test/web/activity_pub/mrf/mrf_test.exs b/test/web/activity_pub/mrf/mrf_test.exs index e82c8afa6..e8cdde2e1 100644 --- a/test/web/activity_pub/mrf/mrf_test.exs +++ b/test/web/activity_pub/mrf/mrf_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.ActivityPub.MRFTest do use ExUnit.Case, async: true use Pleroma.Tests.Helpers diff --git a/test/web/activity_pub/object_validators/types/date_time_test.exs b/test/web/activity_pub/object_validators/types/date_time_test.exs index 43be8e936..10310c801 100644 --- a/test/web/activity_pub/object_validators/types/date_time_test.exs +++ b/test/web/activity_pub/object_validators/types/date_time_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.ActivityPub.ObjectValidators.Types.DateTimeTest do alias Pleroma.EctoType.ActivityPub.ObjectValidators.DateTime use Pleroma.DataCase diff --git a/test/web/activity_pub/object_validators/types/recipients_test.exs b/test/web/activity_pub/object_validators/types/recipients_test.exs index 053916bdd..c09265f0d 100644 --- a/test/web/activity_pub/object_validators/types/recipients_test.exs +++ b/test/web/activity_pub/object_validators/types/recipients_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.ObjectValidators.Types.RecipientsTest do alias Pleroma.EctoType.ActivityPub.ObjectValidators.Recipients use Pleroma.DataCase diff --git a/test/web/chat_channel_test.exs b/test/web/chat_channel_test.exs index f18f3a212..32170873d 100644 --- a/test/web/chat_channel_test.exs +++ b/test/web/chat_channel_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.ChatChannelTest do use Pleroma.Web.ChannelCase alias Pleroma.Web.ChatChannel diff --git a/test/web/media_proxy/invalidation_test.exs b/test/web/media_proxy/invalidation_test.exs index 926ae74ca..aa1435ac0 100644 --- a/test/web/media_proxy/invalidation_test.exs +++ b/test/web/media_proxy/invalidation_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.MediaProxy.InvalidationTest do use ExUnit.Case use Pleroma.Tests.Helpers diff --git a/test/web/media_proxy/invalidations/http_test.exs b/test/web/media_proxy/invalidations/http_test.exs index a1bef5237..13d081325 100644 --- a/test/web/media_proxy/invalidations/http_test.exs +++ b/test/web/media_proxy/invalidations/http_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.MediaProxy.Invalidation.HttpTest do use ExUnit.Case alias Pleroma.Web.MediaProxy.Invalidation diff --git a/test/web/media_proxy/invalidations/script_test.exs b/test/web/media_proxy/invalidations/script_test.exs index 51833ab18..692cbb2df 100644 --- a/test/web/media_proxy/invalidations/script_test.exs +++ b/test/web/media_proxy/invalidations/script_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.MediaProxy.Invalidation.ScriptTest do use ExUnit.Case alias Pleroma.Web.MediaProxy.Invalidation diff --git a/test/web/pleroma_api/controllers/two_factor_authentication_controller_test.exs b/test/web/pleroma_api/controllers/two_factor_authentication_controller_test.exs index d23d08a00..22988c881 100644 --- a/test/web/pleroma_api/controllers/two_factor_authentication_controller_test.exs +++ b/test/web/pleroma_api/controllers/two_factor_authentication_controller_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.PleromaAPI.TwoFactorAuthenticationControllerTest do use Pleroma.Web.ConnCase diff --git a/test/web/static_fe/static_fe_controller_test.exs b/test/web/static_fe/static_fe_controller_test.exs index 1598bf675..f819a1e52 100644 --- a/test/web/static_fe/static_fe_controller_test.exs +++ b/test/web/static_fe/static_fe_controller_test.exs @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.StaticFE.StaticFEControllerTest do use Pleroma.Web.ConnCase From 6ec1b1615b2e63aed468960201ee234969befc42 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 12 Oct 2020 12:23:20 -0500 Subject: [PATCH 369/460] Further improvements --- docs/administration/backup.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/administration/backup.md b/docs/administration/backup.md index cfedf5b58..5f279ab97 100644 --- a/docs/administration/backup.md +++ b/docs/administration/backup.md @@ -14,7 +14,7 @@ 2. Stop the Pleroma service. 3. Go to the working directory of Pleroma (default is `/opt/pleroma`) 4. Copy the above mentioned files back to their original position. -5. Drop the existing database if restoring in-place. `sudo -Hu postgres psql -c 'DROP DATABASE ;'` +5. Drop the existing database and user if restoring in-place. `sudo -Hu postgres psql -c 'DROP DATABASE ;';` `sudo -Hu postgres psql -c 'DROP USER ;'` 6. Restore the database schema and pleroma postgres role the with the original `setup_db.psql` if you have it: `sudo -Hu postgres psql -f config/setup_db.psql`. Alternatively, run the `mix pleroma.instance gen` task again. You can ignore most of the questions, but make the database user, name, and password the same as found in your backup of `config/prod.secret.exs`. Then run the restoration of the pleroma role and schema with of the generated `config/setup_db.psql` as instructed above. You may delete the `config/generated_config.exs` file as it is not needed. @@ -23,6 +23,7 @@ 8. If you installed a newer Pleroma version, you should run `mix ecto.migrate`[^1]. This task performs database migrations, if there were any. 9. Restart the Pleroma service. 10. Run `sudo -Hu postgres vacuumdb --all --analyze-in-stages`. This will quickly generate the statistics so that postgres can properly plan queries. +11. If setting up on a new server configure Nginx by using the `installation/pleroma.nginx` config sample or reference the Pleroma installation guide for your OS which contains the Nginx configuration instructions. [^1]: Prefix with `MIX_ENV=prod` to run it using the production config file. @@ -35,6 +36,6 @@ 3. Disable pleroma from systemd `systemctl disable pleroma` 4. Remove the files and folders you created during installation (see installation guide). This includes the pleroma, nginx and systemd files and folders. 5. Reload nginx now that the configuration is removed `systemctl reload nginx` -6. Remove the database and database user `sudo -Hu postgres psql -c 'DROP DATABASE ;';` `sudo -Hu postgres psql -c 'DROP USER ;';` +6. Remove the database and database user `sudo -Hu postgres psql -c 'DROP DATABASE ;';` `sudo -Hu postgres psql -c 'DROP USER ;'` 7. Remove the system user `userdel pleroma` 8. Remove the dependencies that you don't need anymore (see installation guide). Make sure you don't remove packages that are still needed for other software that you have running! From c4fae2611ff4da7c418de236fa643021ddc778c8 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 9 Oct 2020 11:26:51 -0500 Subject: [PATCH 370/460] Switch Majic to a copy hosted in our GitLab --- mix.exs | 3 ++- mix.lock | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/mix.exs b/mix.exs index c6e94aff7..427329d38 100644 --- a/mix.exs +++ b/mix.exs @@ -188,7 +188,8 @@ defp deps do git: "https://git.pleroma.social/pleroma/elixir-libraries/elixir-captcha.git", ref: "e0f16822d578866e186a0974d65ad58cddc1e2ab"}, {:restarter, path: "./restarter"}, - {:majic, git: "https://github.com/hrefhref/majic", branch: "develop"}, + {:majic, + git: "https://git.pleroma.social/pleroma/elixir-libraries/majic", branch: "develop"}, {:open_api_spex, git: "https://git.pleroma.social/pleroma/elixir-libraries/open_api_spex.git", ref: "f296ac0924ba3cf79c7a588c4c252889df4c2edd"}, diff --git a/mix.lock b/mix.lock index 73d84d7cc..1f2885440 100644 --- a/mix.lock +++ b/mix.lock @@ -32,7 +32,7 @@ "ecto_enum": {:hex, :ecto_enum, "1.4.0", "d14b00e04b974afc69c251632d1e49594d899067ee2b376277efd8233027aec8", [:mix], [{:ecto, ">= 3.0.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "> 3.0.0", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:mariaex, ">= 0.0.0", [hex: :mariaex, repo: "hexpm", optional: true]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "8fb55c087181c2b15eee406519dc22578fa60dd82c088be376d0010172764ee4"}, "ecto_sql": {:hex, :ecto_sql, "3.4.5", "30161f81b167d561a9a2df4329c10ae05ff36eca7ccc84628f2c8b9fa1e43323", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.4.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.3.0 or ~> 0.4.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.0", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "31990c6a3579b36a3c0841d34a94c275e727de8b84f58509da5f1b2032c98ac2"}, "eimp": {:hex, :eimp, "1.0.14", "fc297f0c7e2700457a95a60c7010a5f1dcb768a083b6d53f49cd94ab95a28f22", [:rebar3], [{:p1_utils, "1.0.18", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "501133f3112079b92d9e22da8b88bf4f0e13d4d67ae9c15c42c30bd25ceb83b6"}, - "elixir_make": {:hex, :elixir_make, "0.6.0", "38349f3e29aff4864352084fc736fa7fa0f2995a819a737554f7ebd28b85aaab", [:mix], [], "hexpm", "d522695b93b7f0b4c0fcb2dfe73a6b905b1c301226a5a55cb42e5b14d509e050"}, + "elixir_make": {:hex, :elixir_make, "0.6.1", "8faa29a5597faba999aeeb72bbb9c91694ef8068f0131192fb199f98d32994ef", [:mix], [], "hexpm", "35d33270680f8d839a4003c3e9f43afb595310a592405a00afc12de4c7f55a18"}, "esshd": {:hex, :esshd, "0.1.1", "d4dd4c46698093a40a56afecce8a46e246eb35463c457c246dacba2e056f31b5", [:mix], [], "hexpm", "d73e341e3009d390aa36387dc8862860bf9f874c94d9fd92ade2926376f49981"}, "eternal": {:hex, :eternal, "1.2.1", "d5b6b2499ba876c57be2581b5b999ee9bdf861c647401066d3eeed111d096bc4", [:mix], [], "hexpm", "b14f1dc204321429479c569cfbe8fb287541184ed040956c8862cb7a677b8406"}, "ex2ms": {:hex, :ex2ms, "1.5.0", "19e27f9212be9a96093fed8cdfbef0a2b56c21237196d26760f11dfcfae58e97", [:mix], [], "hexpm"}, @@ -65,7 +65,7 @@ "jumper": {:hex, :jumper, "1.0.1", "3c00542ef1a83532b72269fab9f0f0c82bf23a35e27d278bfd9ed0865cecabff", [:mix], [], "hexpm", "318c59078ac220e966d27af3646026db9b5a5e6703cb2aa3e26bcfaba65b7433"}, "libring": {:hex, :libring, "1.4.0", "41246ba2f3fbc76b3971f6bce83119dfec1eee17e977a48d8a9cfaaf58c2a8d6", [:mix], [], "hexpm"}, "linkify": {:hex, :linkify, "0.2.0", "2518bbbea21d2caa9d372424e1ad845b640c6630e2d016f1bd1f518f9ebcca28", [:mix], [], "hexpm", "b8ca8a68b79e30b7938d6c996085f3db14939f29538a59ca5101988bb7f917f6"}, - "majic": {:git, "https://github.com/hrefhref/majic", "51ecea6458c4b2fbc98272ce5ab2951f2c0d46cc", [branch: "develop"]}, + "majic": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/majic", "4c692e544b28d1f5e543fb8a44be090f8cd96f80", [branch: "develop"]}, "makeup": {:hex, :makeup, "1.0.3", "e339e2f766d12e7260e6672dd4047405963c5ec99661abdc432e6ec67d29ef95", [:mix], [{:nimble_parsec, "~> 0.5", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "2e9b4996d11832947731f7608fed7ad2f9443011b3b479ae288011265cdd3dad"}, "makeup_elixir": {:hex, :makeup_elixir, "0.14.1", "4f0e96847c63c17841d42c08107405a005a2680eb9c7ccadfd757bd31dabccfb", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "f2438b1a80eaec9ede832b5c41cd4f373b38fd7aa33e3b22d9db79e640cbde11"}, "meck": {:hex, :meck, "0.8.13", "ffedb39f99b0b99703b8601c6f17c7f76313ee12de6b646e671e3188401f7866", [:rebar3], [], "hexpm", "d34f013c156db51ad57cc556891b9720e6a1c1df5fe2e15af999c84d6cebeb1a"}, From 83ae45b000261d3e03a4b554064350a5ead172c3 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 12 Oct 2020 18:49:37 -0500 Subject: [PATCH 371/460] Preload `/api/pleroma/frontend_configurations`, fixes #1932 --- lib/pleroma/web/preload/instance.ex | 9 +++++++++ .../web/twitter_api/controllers/util_controller.ex | 6 +----- lib/pleroma/web/twitter_api/views/util_view.ex | 6 ++++++ test/web/preload/instance_test.exs | 8 ++++++++ 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/lib/pleroma/web/preload/instance.ex b/lib/pleroma/web/preload/instance.ex index 50d1f3382..cc6f8cf99 100644 --- a/lib/pleroma/web/preload/instance.ex +++ b/lib/pleroma/web/preload/instance.ex @@ -7,11 +7,13 @@ defmodule Pleroma.Web.Preload.Providers.Instance do alias Pleroma.Web.MastodonAPI.InstanceView alias Pleroma.Web.Nodeinfo.Nodeinfo alias Pleroma.Web.Preload.Providers.Provider + alias Pleroma.Web.TwitterAPI.UtilView @behaviour Provider @instance_url "/api/v1/instance" @panel_url "/instance/panel.html" @nodeinfo_url "/nodeinfo/2.0.json" + @fe_config_url "/api/pleroma/frontend_configurations" @impl Provider def generate_terms(_params) do @@ -19,6 +21,7 @@ def generate_terms(_params) do |> build_info_tag() |> build_panel_tag() |> build_nodeinfo_tag() + |> build_fe_config_tag() end defp build_info_tag(acc) do @@ -47,4 +50,10 @@ defp build_nodeinfo_tag(acc) do Map.put(acc, @nodeinfo_url, nodeinfo_data) end end + + defp build_fe_config_tag(acc) do + fe_data = UtilView.render("frontend_configurations.json", %{}) + + Map.put(acc, @fe_config_url, fe_data) + end end diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex index 70b0fbd54..6d827846d 100644 --- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex @@ -74,11 +74,7 @@ def notifications_read(%{assigns: %{user: user}} = conn, %{"id" => notification_ end def frontend_configurations(conn, _params) do - config = - Config.get(:frontend_configurations, %{}) - |> Enum.into(%{}) - - json(conn, config) + render(conn, "frontend_configurations.json") end def emoji(conn, _params) do diff --git a/lib/pleroma/web/twitter_api/views/util_view.ex b/lib/pleroma/web/twitter_api/views/util_view.ex index d3bdb4f62..98eea1d18 100644 --- a/lib/pleroma/web/twitter_api/views/util_view.ex +++ b/lib/pleroma/web/twitter_api/views/util_view.ex @@ -5,6 +5,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilView do use Pleroma.Web, :view import Phoenix.HTML.Form + alias Pleroma.Config alias Pleroma.Web def status_net_config(instance) do @@ -19,4 +20,9 @@ def status_net_config(instance) do """ end + + def render("frontend_configurations.json", _) do + Config.get(:frontend_configurations, %{}) + |> Enum.into(%{}) + end end diff --git a/test/web/preload/instance_test.exs b/test/web/preload/instance_test.exs index a46f28312..8493f2a94 100644 --- a/test/web/preload/instance_test.exs +++ b/test/web/preload/instance_test.exs @@ -45,4 +45,12 @@ test "it renders the node_info", %{"/nodeinfo/2.0.json" => nodeinfo} do assert metadata.private == false assert metadata.suggestions == %{enabled: false} end + + test "it renders the frontend configurations", %{ + "/api/pleroma/frontend_configurations" => fe_configs + } do + assert %{ + pleroma_fe: %{background: "/images/city.jpg", logo: "/static/logo.png"} + } = fe_configs + end end From eea879eb362d3310d4fe047fb6412b69dd8711fe Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 13 Oct 2020 07:51:48 -0500 Subject: [PATCH 372/460] Update AdminFE build to latest develop --- .../{app.07a1f8db.css => app.6fb984d1.css} | 2 +- priv/static/adminfe/chunk-0171.aa11eafe.css | 1 - priv/static/adminfe/chunk-03c5.f59788cf.css | 1 + priv/static/adminfe/chunk-0598.d8f2b478.css | 1 - priv/static/adminfe/chunk-0f09.66ca2a61.css | 1 - ...e.b7aa5351.css => chunk-176e.a3c8376d.css} | 0 priv/static/adminfe/chunk-19e2.934ad654.css | 1 - priv/static/adminfe/chunk-28f8.0aae6427.css | 1 - priv/static/adminfe/chunk-2d97.82cbb623.css | 1 - priv/static/adminfe/chunk-3221.0ef79c67.css | 1 - priv/static/adminfe/chunk-3365.201aa8e6.css | 1 + priv/static/adminfe/chunk-342d.e342722b.css | 1 + priv/static/adminfe/chunk-39ad.ba67c97f.css | 1 - priv/static/adminfe/chunk-3ba2.63b1228d.css | 1 - priv/static/adminfe/chunk-4eb4.b72d16c3.css | 1 - priv/static/adminfe/chunk-521f.b745ee5d.css | 1 + priv/static/adminfe/chunk-546f.692d1ab2.css | 1 + priv/static/adminfe/chunk-565e.8c036a6e.css | 1 - priv/static/adminfe/chunk-60a9.7b5b9559.css | 1 - ...e.b2e16b59.css => chunk-654d.94689c39.css} | 0 priv/static/adminfe/chunk-68ea.81e11186.css | 1 - ....7633295f.css => chunk-68ea9.dac85813.css} | 0 ...1.0e9e6d27.css => chunk-6e81.1c0f2da2.css} | 0 priv/static/adminfe/chunk-6e81.7e5babfc.css | 1 - priv/static/adminfe/chunk-6e8c.ef26acfd.css | 1 - priv/static/adminfe/chunk-7503.cc089ee4.css | 1 - ...8.29be65e2.css => chunk-7c6b.365cbeda.css} | 0 priv/static/adminfe/chunk-7c6b.b529c720.css | 1 - ...4.665332db.css => chunk-850d.cc4f0ac6.css} | 2 +- priv/static/adminfe/chunk-9043.3f527a93.css | 1 - priv/static/adminfe/chunk-97e2.9f9fab0f.css | 1 - priv/static/adminfe/chunk-9a72.786caeb3.css | 1 - priv/static/adminfe/chunk-9d55.e2cb1409.css | 1 + ...343b725.css => chunk-commons.c0eb3eb7.css} | 0 ...8.3c37d6af.css => chunk-d34d.b0dd6fb4.css} | 0 priv/static/adminfe/chunk-d892.56863b19.css | 1 - .../adminfe/chunk-elementUI.40545a1f.css | 1 - .../adminfe/chunk-elementUI.f77689d7.css | 1 + priv/static/adminfe/chunk-f625.25a6a4ae.css | 1 + ...s.0380664d.css => chunk-libs.5cf7f50a.css} | 0 priv/static/adminfe/index.html | 2 +- priv/static/adminfe/static/js/app.1df22cde.js | 2 - .../adminfe/static/js/app.1df22cde.js.map | 1 - priv/static/adminfe/static/js/app.69891fda.js | 2 + .../adminfe/static/js/app.69891fda.js.map | 1 + .../adminfe/static/js/chunk-0171.9e927b8a.js | 2 - .../static/js/chunk-0171.9e927b8a.js.map | 1 - .../adminfe/static/js/chunk-03c5.1c694c49.js | 2 + .../static/js/chunk-03c5.1c694c49.js.map | 1 + .../adminfe/static/js/chunk-16d0.6ce78978.js | 2 - .../static/js/chunk-16d0.6ce78978.js.map | 1 - .../adminfe/static/js/chunk-16d0.fef0ce65.js | 2 + .../static/js/chunk-16d0.fef0ce65.js.map | 1 + .../static/js/chunk-176e.5c19378d.js.map | 1 - ...76e.5c19378d.js => chunk-176e.be050aba.js} | 4 +- .../static/js/chunk-176e.be050aba.js.map | 1 + .../adminfe/static/js/chunk-2d97.079e9e64.js | 2 - .../static/js/chunk-2d97.079e9e64.js.map | 1 - .../adminfe/static/js/chunk-3365.b73c30a8.js | 2 + .../static/js/chunk-3365.b73c30a8.js.map | 1 + .../adminfe/static/js/chunk-342d.479e01dd.js | 2 + .../static/js/chunk-342d.479e01dd.js.map | 1 + .../adminfe/static/js/chunk-40a4.5dc0e299.js | 2 - .../static/js/chunk-40a4.5dc0e299.js.map | 1 - .../adminfe/static/js/chunk-5118.7c48ad58.js | 2 - .../static/js/chunk-5118.7c48ad58.js.map | 1 - .../adminfe/static/js/chunk-521f.748b331d.js | 2 + .../static/js/chunk-521f.748b331d.js.map | 1 + .../adminfe/static/js/chunk-546f.81668ba7.js | 2 + .../static/js/chunk-546f.81668ba7.js.map | 1 + .../adminfe/static/js/chunk-565e.e1555105.js | 2 - .../static/js/chunk-565e.e1555105.js.map | 1 - .../adminfe/static/js/chunk-60a9.22fe45f3.js | 2 - .../static/js/chunk-60a9.22fe45f3.js.map | 1 - ...54e.38dd4b85.js => chunk-654d.653b067f.js} | 4 +- .../static/js/chunk-654d.653b067f.js.map | 1 + .../static/js/chunk-654e.38dd4b85.js.map | 1 - .../adminfe/static/js/chunk-68ea.0dae7e55.js | 2 - .../static/js/chunk-68ea.0dae7e55.js.map | 1 - .../adminfe/static/js/chunk-68ea.6d56674a.js | 26 ++ .../static/js/chunk-68ea.6d56674a.js.map | 1 + .../adminfe/static/js/chunk-68ea9.9821cd6a.js | 2 + .../static/js/chunk-68ea9.9821cd6a.js.map | 1 + ...e81.6043af74.js => chunk-6e81.ebe9039f.js} | 2 +- ...af74.js.map => chunk-6e81.ebe9039f.js.map} | 2 +- .../adminfe/static/js/chunk-6e8c.2aa335e0.js | 2 - .../static/js/chunk-6e8c.2aa335e0.js.map | 1 - .../adminfe/static/js/chunk-7503.278e0031.js | 2 - .../static/js/chunk-7503.278e0031.js.map | 1 - .../adminfe/static/js/chunk-7c6b.1ebeb0e4.js | 2 - .../static/js/chunk-7c6b.1ebeb0e4.js.map | 1 - .../adminfe/static/js/chunk-7c6b.56a14571.js | 2 + .../static/js/chunk-7c6b.56a14571.js.map | 1 + .../adminfe/static/js/chunk-850d.3e6102c2.js | 2 + .../static/js/chunk-850d.3e6102c2.js.map | 1 + .../adminfe/static/js/chunk-97e2.c51fe6b0.js | 2 - .../static/js/chunk-97e2.c51fe6b0.js.map | 1 - .../adminfe/static/js/chunk-9a72.41e843cd.js | 2 - .../static/js/chunk-9a72.41e843cd.js.map | 1 - .../adminfe/static/js/chunk-9d55.7af22f45.js | 2 + .../static/js/chunk-9d55.7af22f45.js.map | 1 + .../static/js/chunk-commons.51fe2926.js.map | 1 - ....51fe2926.js => chunk-commons.a6002038.js} | 4 +- .../static/js/chunk-commons.a6002038.js.map | 1 + .../adminfe/static/js/chunk-d34d.0f06fe76.js | 2 + .../static/js/chunk-d34d.0f06fe76.js.map | 1 + .../adminfe/static/js/chunk-d55e.f9bab96d.js | 270 ++++++++++++++++++ .../static/js/chunk-d55e.f9bab96d.js.map | 1 + .../adminfe/static/js/chunk-df62.6c5105a6.js | 2 - .../static/js/chunk-df62.6c5105a6.js.map | 1 - .../static/js/chunk-elementUI.21957ec8.js | 2 + .../static/js/chunk-elementUI.21957ec8.js.map | 1 + .../static/js/chunk-elementUI.8e5c404c.js | 2 - .../static/js/chunk-elementUI.8e5c404c.js.map | 1 - .../adminfe/static/js/chunk-f625.29237434.js | 2 + .../static/js/chunk-f625.29237434.js.map | 1 + .../adminfe/static/js/chunk-libs.32ea9181.js | 73 +++++ .../static/js/chunk-libs.32ea9181.js.map | 1 + .../adminfe/static/js/chunk-libs.f842b12e.js | 73 ----- .../static/js/chunk-libs.f842b12e.js.map | 1 - .../static/adminfe/static/js/oAJy.2d5429b2.js | 2 + .../adminfe/static/js/oAJy.2d5429b2.js.map | 1 + .../static/adminfe/static/js/oAJy.840fb1c2.js | 2 - .../adminfe/static/js/oAJy.840fb1c2.js.map | 1 - .../adminfe/static/js/runtime.04c4fa2f.js | 2 - .../adminfe/static/js/runtime.04c4fa2f.js.map | 1 - .../adminfe/static/js/runtime.8f631d12.js | 2 + .../adminfe/static/js/runtime.8f631d12.js.map | 1 + 128 files changed, 442 insertions(+), 164 deletions(-) rename priv/static/adminfe/{app.07a1f8db.css => app.6fb984d1.css} (55%) delete mode 100644 priv/static/adminfe/chunk-0171.aa11eafe.css create mode 100644 priv/static/adminfe/chunk-03c5.f59788cf.css delete mode 100644 priv/static/adminfe/chunk-0598.d8f2b478.css delete mode 100644 priv/static/adminfe/chunk-0f09.66ca2a61.css rename priv/static/adminfe/{chunk-176e.b7aa5351.css => chunk-176e.a3c8376d.css} (100%) delete mode 100644 priv/static/adminfe/chunk-19e2.934ad654.css delete mode 100644 priv/static/adminfe/chunk-28f8.0aae6427.css delete mode 100644 priv/static/adminfe/chunk-2d97.82cbb623.css delete mode 100644 priv/static/adminfe/chunk-3221.0ef79c67.css create mode 100644 priv/static/adminfe/chunk-3365.201aa8e6.css create mode 100644 priv/static/adminfe/chunk-342d.e342722b.css delete mode 100644 priv/static/adminfe/chunk-39ad.ba67c97f.css delete mode 100644 priv/static/adminfe/chunk-3ba2.63b1228d.css delete mode 100644 priv/static/adminfe/chunk-4eb4.b72d16c3.css create mode 100644 priv/static/adminfe/chunk-521f.b745ee5d.css create mode 100644 priv/static/adminfe/chunk-546f.692d1ab2.css delete mode 100644 priv/static/adminfe/chunk-565e.8c036a6e.css delete mode 100644 priv/static/adminfe/chunk-60a9.7b5b9559.css rename priv/static/adminfe/{chunk-654e.b2e16b59.css => chunk-654d.94689c39.css} (100%) delete mode 100644 priv/static/adminfe/chunk-68ea.81e11186.css rename priv/static/adminfe/{chunk-68ea.7633295f.css => chunk-68ea9.dac85813.css} (100%) rename priv/static/adminfe/{chunk-6e81.0e9e6d27.css => chunk-6e81.1c0f2da2.css} (100%) delete mode 100644 priv/static/adminfe/chunk-6e81.7e5babfc.css delete mode 100644 priv/static/adminfe/chunk-6e8c.ef26acfd.css delete mode 100644 priv/static/adminfe/chunk-7503.cc089ee4.css rename priv/static/adminfe/{chunk-0778.29be65e2.css => chunk-7c6b.365cbeda.css} (100%) delete mode 100644 priv/static/adminfe/chunk-7c6b.b529c720.css rename priv/static/adminfe/{chunk-40a4.665332db.css => chunk-850d.cc4f0ac6.css} (84%) delete mode 100644 priv/static/adminfe/chunk-9043.3f527a93.css delete mode 100644 priv/static/adminfe/chunk-97e2.9f9fab0f.css delete mode 100644 priv/static/adminfe/chunk-9a72.786caeb3.css create mode 100644 priv/static/adminfe/chunk-9d55.e2cb1409.css rename priv/static/adminfe/{chunk-commons.a343b725.css => chunk-commons.c0eb3eb7.css} (100%) rename priv/static/adminfe/{chunk-6198.3c37d6af.css => chunk-d34d.b0dd6fb4.css} (100%) delete mode 100644 priv/static/adminfe/chunk-d892.56863b19.css delete mode 100644 priv/static/adminfe/chunk-elementUI.40545a1f.css create mode 100644 priv/static/adminfe/chunk-elementUI.f77689d7.css create mode 100644 priv/static/adminfe/chunk-f625.25a6a4ae.css rename priv/static/adminfe/{chunk-libs.0380664d.css => chunk-libs.5cf7f50a.css} (100%) delete mode 100644 priv/static/adminfe/static/js/app.1df22cde.js delete mode 100644 priv/static/adminfe/static/js/app.1df22cde.js.map create mode 100644 priv/static/adminfe/static/js/app.69891fda.js create mode 100644 priv/static/adminfe/static/js/app.69891fda.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-0171.9e927b8a.js delete mode 100644 priv/static/adminfe/static/js/chunk-0171.9e927b8a.js.map create mode 100644 priv/static/adminfe/static/js/chunk-03c5.1c694c49.js create mode 100644 priv/static/adminfe/static/js/chunk-03c5.1c694c49.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-16d0.6ce78978.js delete mode 100644 priv/static/adminfe/static/js/chunk-16d0.6ce78978.js.map create mode 100644 priv/static/adminfe/static/js/chunk-16d0.fef0ce65.js create mode 100644 priv/static/adminfe/static/js/chunk-16d0.fef0ce65.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-176e.5c19378d.js.map rename priv/static/adminfe/static/js/{chunk-176e.5c19378d.js => chunk-176e.be050aba.js} (59%) create mode 100644 priv/static/adminfe/static/js/chunk-176e.be050aba.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-2d97.079e9e64.js delete mode 100644 priv/static/adminfe/static/js/chunk-2d97.079e9e64.js.map create mode 100644 priv/static/adminfe/static/js/chunk-3365.b73c30a8.js create mode 100644 priv/static/adminfe/static/js/chunk-3365.b73c30a8.js.map create mode 100644 priv/static/adminfe/static/js/chunk-342d.479e01dd.js create mode 100644 priv/static/adminfe/static/js/chunk-342d.479e01dd.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-40a4.5dc0e299.js delete mode 100644 priv/static/adminfe/static/js/chunk-40a4.5dc0e299.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-5118.7c48ad58.js delete mode 100644 priv/static/adminfe/static/js/chunk-5118.7c48ad58.js.map create mode 100644 priv/static/adminfe/static/js/chunk-521f.748b331d.js create mode 100644 priv/static/adminfe/static/js/chunk-521f.748b331d.js.map create mode 100644 priv/static/adminfe/static/js/chunk-546f.81668ba7.js create mode 100644 priv/static/adminfe/static/js/chunk-546f.81668ba7.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-565e.e1555105.js delete mode 100644 priv/static/adminfe/static/js/chunk-565e.e1555105.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-60a9.22fe45f3.js delete mode 100644 priv/static/adminfe/static/js/chunk-60a9.22fe45f3.js.map rename priv/static/adminfe/static/js/{chunk-654e.38dd4b85.js => chunk-654d.653b067f.js} (58%) create mode 100644 priv/static/adminfe/static/js/chunk-654d.653b067f.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-654e.38dd4b85.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-68ea.0dae7e55.js delete mode 100644 priv/static/adminfe/static/js/chunk-68ea.0dae7e55.js.map create mode 100644 priv/static/adminfe/static/js/chunk-68ea.6d56674a.js create mode 100644 priv/static/adminfe/static/js/chunk-68ea.6d56674a.js.map create mode 100644 priv/static/adminfe/static/js/chunk-68ea9.9821cd6a.js create mode 100644 priv/static/adminfe/static/js/chunk-68ea9.9821cd6a.js.map rename priv/static/adminfe/static/js/{chunk-6e81.6043af74.js => chunk-6e81.ebe9039f.js} (97%) rename priv/static/adminfe/static/js/{chunk-6e81.6043af74.js.map => chunk-6e81.ebe9039f.js.map} (98%) delete mode 100644 priv/static/adminfe/static/js/chunk-6e8c.2aa335e0.js delete mode 100644 priv/static/adminfe/static/js/chunk-6e8c.2aa335e0.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-7503.278e0031.js delete mode 100644 priv/static/adminfe/static/js/chunk-7503.278e0031.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-7c6b.1ebeb0e4.js delete mode 100644 priv/static/adminfe/static/js/chunk-7c6b.1ebeb0e4.js.map create mode 100644 priv/static/adminfe/static/js/chunk-7c6b.56a14571.js create mode 100644 priv/static/adminfe/static/js/chunk-7c6b.56a14571.js.map create mode 100644 priv/static/adminfe/static/js/chunk-850d.3e6102c2.js create mode 100644 priv/static/adminfe/static/js/chunk-850d.3e6102c2.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-97e2.c51fe6b0.js delete mode 100644 priv/static/adminfe/static/js/chunk-97e2.c51fe6b0.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-9a72.41e843cd.js delete mode 100644 priv/static/adminfe/static/js/chunk-9a72.41e843cd.js.map create mode 100644 priv/static/adminfe/static/js/chunk-9d55.7af22f45.js create mode 100644 priv/static/adminfe/static/js/chunk-9d55.7af22f45.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-commons.51fe2926.js.map rename priv/static/adminfe/static/js/{chunk-commons.51fe2926.js => chunk-commons.a6002038.js} (89%) create mode 100644 priv/static/adminfe/static/js/chunk-commons.a6002038.js.map create mode 100644 priv/static/adminfe/static/js/chunk-d34d.0f06fe76.js create mode 100644 priv/static/adminfe/static/js/chunk-d34d.0f06fe76.js.map create mode 100644 priv/static/adminfe/static/js/chunk-d55e.f9bab96d.js create mode 100644 priv/static/adminfe/static/js/chunk-d55e.f9bab96d.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-df62.6c5105a6.js delete mode 100644 priv/static/adminfe/static/js/chunk-df62.6c5105a6.js.map create mode 100644 priv/static/adminfe/static/js/chunk-elementUI.21957ec8.js create mode 100644 priv/static/adminfe/static/js/chunk-elementUI.21957ec8.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-elementUI.8e5c404c.js delete mode 100644 priv/static/adminfe/static/js/chunk-elementUI.8e5c404c.js.map create mode 100644 priv/static/adminfe/static/js/chunk-f625.29237434.js create mode 100644 priv/static/adminfe/static/js/chunk-f625.29237434.js.map create mode 100644 priv/static/adminfe/static/js/chunk-libs.32ea9181.js create mode 100644 priv/static/adminfe/static/js/chunk-libs.32ea9181.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-libs.f842b12e.js delete mode 100644 priv/static/adminfe/static/js/chunk-libs.f842b12e.js.map create mode 100644 priv/static/adminfe/static/js/oAJy.2d5429b2.js create mode 100644 priv/static/adminfe/static/js/oAJy.2d5429b2.js.map delete mode 100644 priv/static/adminfe/static/js/oAJy.840fb1c2.js delete mode 100644 priv/static/adminfe/static/js/oAJy.840fb1c2.js.map delete mode 100644 priv/static/adminfe/static/js/runtime.04c4fa2f.js delete mode 100644 priv/static/adminfe/static/js/runtime.04c4fa2f.js.map create mode 100644 priv/static/adminfe/static/js/runtime.8f631d12.js create mode 100644 priv/static/adminfe/static/js/runtime.8f631d12.js.map diff --git a/priv/static/adminfe/app.07a1f8db.css b/priv/static/adminfe/app.6fb984d1.css similarity index 55% rename from priv/static/adminfe/app.07a1f8db.css rename to priv/static/adminfe/app.6fb984d1.css index 9d74d13dc..f1c191c2e 100644 --- a/priv/static/adminfe/app.07a1f8db.css +++ b/priv/static/adminfe/app.6fb984d1.css @@ -1 +1 @@ -.fade-enter-active,.fade-leave-active{-webkit-transition:opacity .28s;transition:opacity .28s}.fade-enter,.fade-leave-active{opacity:0}.fade-transform-enter-active,.fade-transform-leave-active{-webkit-transition:all .5s;transition:all .5s}.fade-transform-enter{opacity:0;-webkit-transform:translateX(-30px);transform:translateX(-30px)}.fade-transform-leave-to{opacity:0;-webkit-transform:translateX(30px);transform:translateX(30px)}.breadcrumb-enter-active,.breadcrumb-leave-active{-webkit-transition:all .5s;transition:all .5s}.breadcrumb-enter,.breadcrumb-leave-active{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}.breadcrumb-move{-webkit-transition:all .5s;transition:all .5s}.breadcrumb-leave-active{position:absolute}.el-breadcrumb__inner,.el-breadcrumb__inner a{font-weight:400!important}.el-upload input[type=file]{display:none!important}.el-upload__input{display:none}.cell .el-tag{margin-right:0}.small-padding .cell{padding-left:5px;padding-right:5px}.fixed-width .el-button--mini{padding:7px 10px;width:60px}.status-col .cell{padding:0 10px;text-align:center}.status-col .cell .el-tag{margin-right:0}.el-dialog{-webkit-transform:none;transform:none;left:0;position:relative;margin:0 auto}.article-textarea textarea{padding-right:40px;resize:none;border-radius:0;border:none;border-bottom:1px solid #bfcbd9}.upload-container .el-upload{width:100%}.upload-container .el-upload .el-upload-dragger{width:100%;height:200px}.el-dropdown-menu a{display:block}#app .main-container{min-height:100%;-webkit-transition:margin-left .28s;transition:margin-left .28s;margin-left:180px;position:relative}#app .sidebar-container{-webkit-transition:width .28s;transition:width .28s;width:180px!important;height:100%;position:fixed;font-size:0;top:0;bottom:0;left:0;z-index:5000;overflow:hidden}#app .sidebar-container .horizontal-collapse-transition{-webkit-transition:width 0s ease-in-out,padding-left 0s ease-in-out,padding-right 0s ease-in-out;transition:width 0s ease-in-out,padding-left 0s ease-in-out,padding-right 0s ease-in-out}#app .sidebar-container .scrollbar-wrapper{overflow-x:hidden!important}#app .sidebar-container .scrollbar-wrapper .el-scrollbar__view{height:100%}#app .sidebar-container .el-scrollbar__bar.is-vertical{right:0}#app .sidebar-container .is-horizontal{display:none}#app .sidebar-container a{display:inline-block;width:100%;overflow:hidden}#app .sidebar-container .svg-icon{margin-right:16px}#app .sidebar-container .el-menu{border:none;height:100%;width:100%!important}#app .sidebar-container .el-submenu__title:hover,#app .sidebar-container .submenu-title-noDropdown:hover{background-color:#263445!important}#app .sidebar-container .is-active>.el-submenu__title{color:#f4f4f5!important}#app .sidebar-container .el-submenu .el-menu-item,#app .sidebar-container .nest-menu .el-submenu>.el-submenu__title{min-width:180px!important;background-color:#1f2d3d!important}#app .sidebar-container .el-submenu .el-menu-item:hover,#app .sidebar-container .nest-menu .el-submenu>.el-submenu__title:hover{background-color:#001528!important}#app .hideSidebar .sidebar-container{width:36px!important}#app .hideSidebar .main-container{margin-left:36px}#app .hideSidebar .submenu-title-noDropdown{padding-left:10px!important;position:relative}#app .hideSidebar .submenu-title-noDropdown .el-tooltip{padding:0 10px!important}#app .hideSidebar .el-submenu{overflow:hidden}#app .hideSidebar .el-submenu>.el-submenu__title{padding-left:10px!important}#app .hideSidebar .el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}#app .hideSidebar .el-menu--collapse .el-submenu>.el-submenu__title>span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}#app .el-menu--collapse .el-menu .el-submenu{min-width:180px!important}#app .mobile .main-container{margin-left:0}#app .mobile .sidebar-container{-webkit-transition:-webkit-transform .28s;transition:-webkit-transform .28s;transition:transform .28s;transition:transform .28s,-webkit-transform .28s;width:180px!important}#app .mobile.hideSidebar .sidebar-container{pointer-events:none;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transform:translate3d(-180px,0,0);transform:translate3d(-180px,0,0)}#app .withoutAnimation .main-container,#app .withoutAnimation .sidebar-container{-webkit-transition:none;transition:none}.el-menu--vertical>.el-menu .svg-icon{margin-right:16px}.el-menu--vertical .el-menu-item:hover,.el-menu--vertical .nest-menu .el-submenu>.el-submenu__title:hover{background-color:#263445!important}.blue-btn{background:#324157}.blue-btn:hover{color:#324157}.blue-btn:hover:after,.blue-btn:hover:before{background:#324157}.light-blue-btn{background:#3a71a8}.light-blue-btn:hover{color:#3a71a8}.light-blue-btn:hover:after,.light-blue-btn:hover:before{background:#3a71a8}.red-btn{background:#c03639}.red-btn:hover{color:#c03639}.red-btn:hover:after,.red-btn:hover:before{background:#c03639}.pink-btn{background:#e65d6e}.pink-btn:hover{color:#e65d6e}.pink-btn:hover:after,.pink-btn:hover:before{background:#e65d6e}.green-btn{background:#30b08f}.green-btn:hover{color:#30b08f}.green-btn:hover:after,.green-btn:hover:before{background:#30b08f}.tiffany-btn{background:#4ab7bd}.tiffany-btn:hover{color:#4ab7bd}.tiffany-btn:hover:after,.tiffany-btn:hover:before{background:#4ab7bd}.yellow-btn{background:#fec171}.yellow-btn:hover{color:#fec171}.yellow-btn:hover:after,.yellow-btn:hover:before{background:#fec171}.pan-btn{font-size:14px;color:#fff;padding:14px 36px;border-radius:8px;border:none;outline:none;-webkit-transition:all .6s ease;transition:all .6s ease;position:relative;display:inline-block}.pan-btn:hover{background:#fff}.pan-btn:hover:after,.pan-btn:hover:before{width:100%;-webkit-transition:all .6s ease;transition:all .6s ease}.pan-btn:after,.pan-btn:before{content:"";position:absolute;top:0;right:0;height:2px;width:0;-webkit-transition:all .4s ease;transition:all .4s ease}.pan-btn:after{right:inherit;top:inherit;left:0;bottom:0}.custom-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;color:#fff;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;padding:10px 15px;font-size:14px;border-radius:4px}body{height:100%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;background:#fff;color:#000}label{font-weight:700}html{-webkit-box-sizing:border-box;box-sizing:border-box}#app,html{height:100%}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}.no-padding{padding:0!important}.padding-content{padding:4px 0}a:active,a:focus{outline:none}a,a:focus,a:hover{cursor:pointer;color:inherit;text-decoration:none}div:focus{outline:none}.fr{float:right}.fl{float:left}.pr-5{padding-right:5px}.pl-5{padding-left:5px}.block{display:block}.pointer{cursor:pointer}.inlineBlock{display:block}.clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}code{background:#eef1f6;padding:15px 16px;margin-bottom:20px;display:block;line-height:36px;font-size:15px;font-family:Source Sans Pro,Helvetica Neue,Arial,sans-serif}code a{color:#337ab7;cursor:pointer}code a:hover{color:#20a0ff}.warn-content{background:rgba(66,185,131,.1);border-radius:2px;padding:1rem;line-height:1.6rem;word-spacing:.05rem}.warn-content a{color:#42b983;font-weight:600}.app-container{padding:20px}.components-container{margin:30px 50px;position:relative}.pagination-container{margin-top:30px}.text-center{text-align:center}.sub-navbar{height:50px;line-height:50px;position:relative;width:100%;text-align:right;padding-right:20px;-webkit-transition:position .6s ease;transition:position .6s ease;background:-webkit-gradient(linear,left top,right top,from(#20b6f9),color-stop(0,#20b6f9),color-stop(100%,#2178f1),to(#2178f1));background:linear-gradient(90deg,#20b6f9,#20b6f9 0,#2178f1 100%,#2178f1 0)}.sub-navbar .subtitle{font-size:20px;color:#fff}.sub-navbar.deleted,.sub-navbar.draft{background:#d0d0d0}.link-type,.link-type:focus{color:#337ab7;cursor:pointer}.link-type:focus:hover,.link-type:hover{color:#20a0ff}.filter-container{padding-bottom:10px}.filter-container .filter-item{display:inline-block;vertical-align:middle;margin-bottom:10px}.multiselect{line-height:16px}.multiselect--active{z-index:1000!important}.hamburger[data-v-69c6c5c4]{display:inline-block;vertical-align:middle;width:20px;height:20px}.hamburger.is-active[data-v-69c6c5c4]{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.navbar[data-v-28de7ff2]{height:50px;overflow:hidden}.navbar .hamburger-container[data-v-28de7ff2]{line-height:46px;height:100%;float:left;cursor:pointer;-webkit-transition:background .3s;transition:background .3s}.navbar .hamburger-container[data-v-28de7ff2]:hover{background:rgba(0,0,0,.025)}.navbar .breadcrumb-container[data-v-28de7ff2]{float:left}.navbar .errLog-container[data-v-28de7ff2]{display:inline-block;vertical-align:top}.navbar .right-menu[data-v-28de7ff2]{float:right;height:100%;line-height:50px}.navbar .right-menu[data-v-28de7ff2]:focus{outline:none}.navbar .right-menu .right-menu-item[data-v-28de7ff2]{display:inline-block;padding:0 15px;height:100%;font-size:18px;color:#5a5e66;vertical-align:text-bottom}.navbar .right-menu .right-menu-item.hover-effect[data-v-28de7ff2]{cursor:pointer;-webkit-transition:background .3s;transition:background .3s}.navbar .right-menu .right-menu-item.hover-effect[data-v-28de7ff2]:hover{background:rgba(0,0,0,.025)}.navbar .right-menu .avatar-container .avatar-wrapper[data-v-28de7ff2]{margin-top:5px;position:relative}.navbar .right-menu .avatar-container .avatar-wrapper .user-avatar[data-v-28de7ff2]{cursor:pointer;width:40px;height:40px;border-radius:10px}.navbar .right-menu .avatar-container .avatar-wrapper .el-icon-caret-bottom[data-v-28de7ff2]{cursor:pointer;position:absolute;right:-20px;top:25px;font-size:12px}.count-badge[data-v-52140d98]{margin-left:5px;height:48px}.scroll-container[data-v-591d6778]{white-space:nowrap;position:relative;overflow:hidden;width:100%}.scroll-container[data-v-591d6778] .el-scrollbar__bar{bottom:0}.scroll-container[data-v-591d6778] .el-scrollbar__wrap{height:49px}.tags-view-container[data-v-e1cdb714]{height:34px;width:100%;background:#fff;border-bottom:1px solid #d8dce5;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.12),0 0 3px 0 rgba(0,0,0,.04);box-shadow:0 1px 3px 0 rgba(0,0,0,.12),0 0 3px 0 rgba(0,0,0,.04)}.tags-view-container .tags-view-wrapper .tags-view-item[data-v-e1cdb714]{display:inline-block;position:relative;cursor:pointer;height:26px;line-height:26px;border:1px solid #d8dce5;color:#495060;background:#fff;padding:0 8px;font-size:12px;margin-left:5px;margin-top:4px}.tags-view-container .tags-view-wrapper .tags-view-item[data-v-e1cdb714]:first-of-type{margin-left:15px}.tags-view-container .tags-view-wrapper .tags-view-item[data-v-e1cdb714]:last-of-type{margin-right:15px}.tags-view-container .tags-view-wrapper .tags-view-item.active[data-v-e1cdb714]{background-color:#42b983;color:#fff;border-color:#42b983}.tags-view-container .tags-view-wrapper .tags-view-item.active[data-v-e1cdb714]:before{content:"";background:#fff;display:inline-block;width:8px;height:8px;border-radius:50%;position:relative;margin-right:2px}.tags-view-container .contextmenu[data-v-e1cdb714]{margin:0;background:#fff;z-index:100;position:absolute;list-style-type:none;padding:5px 0;border-radius:4px;font-size:12px;font-weight:400;color:#333;-webkit-box-shadow:2px 2px 3px 0 rgba(0,0,0,.3);box-shadow:2px 2px 3px 0 rgba(0,0,0,.3)}.tags-view-container .contextmenu li[data-v-e1cdb714]{margin:0;padding:7px 16px;cursor:pointer}.tags-view-container .contextmenu li[data-v-e1cdb714]:hover{background:#eee}.tags-view-wrapper .tags-view-item .el-icon-close{width:16px;height:16px;vertical-align:2px;border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.tags-view-wrapper .tags-view-item .el-icon-close:before{-webkit-transform:scale(.6);transform:scale(.6);display:inline-block;vertical-align:-3px}.tags-view-wrapper .tags-view-item .el-icon-close:hover{background-color:#b4bccc;color:#fff}.app-main[data-v-f852c4f2]{min-height:calc(100vh - 84px);width:100%;position:relative;overflow:hidden}.app-wrapper[data-v-767d264f]{position:relative;height:100%;width:100%}.app-wrapper[data-v-767d264f]:after{content:"";display:table;clear:both}.app-wrapper.mobile.openSidebar[data-v-767d264f]{position:fixed;top:0}.drawer-bg[data-v-767d264f]{background:#000;opacity:.3;width:100%;top:0;height:100%;position:absolute;z-index:999}.svg-icon[data-v-17178ffc]{width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden} \ No newline at end of file +.fade-enter-active,.fade-leave-active{-webkit-transition:opacity .28s;transition:opacity .28s}.fade-enter,.fade-leave-active{opacity:0}.fade-transform-enter-active,.fade-transform-leave-active{-webkit-transition:all .5s;transition:all .5s}.fade-transform-enter{opacity:0;-webkit-transform:translateX(-30px);transform:translateX(-30px)}.fade-transform-leave-to{opacity:0;-webkit-transform:translateX(30px);transform:translateX(30px)}.breadcrumb-enter-active,.breadcrumb-leave-active{-webkit-transition:all .5s;transition:all .5s}.breadcrumb-enter,.breadcrumb-leave-active{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}.breadcrumb-move{-webkit-transition:all .5s;transition:all .5s}.breadcrumb-leave-active{position:absolute}.el-breadcrumb__inner,.el-breadcrumb__inner a{font-weight:400!important}.el-upload input[type=file]{display:none!important}.el-upload__input{display:none}.cell .el-tag{margin-right:0}.small-padding .cell{padding-left:5px;padding-right:5px}.fixed-width .el-button--mini{padding:7px 10px;width:60px}.status-col .cell{padding:0 10px;text-align:center}.status-col .cell .el-tag{margin-right:0}.el-dialog{-webkit-transform:none;transform:none;left:0;position:relative;margin:0 auto}.article-textarea textarea{padding-right:40px;resize:none;border-radius:0;border:none;border-bottom:1px solid #bfcbd9}.upload-container .el-upload{width:100%}.upload-container .el-upload .el-upload-dragger{width:100%;height:200px}.el-dropdown-menu a{display:block}#app .main-container{min-height:100%;-webkit-transition:margin-left .28s;transition:margin-left .28s;margin-left:180px;position:relative}#app .sidebar-container{-webkit-transition:width .28s;transition:width .28s;width:180px!important;height:100%;position:fixed;font-size:0;top:0;bottom:0;left:0;z-index:5000;overflow:hidden}#app .sidebar-container .horizontal-collapse-transition{-webkit-transition:width 0s ease-in-out,padding-left 0s ease-in-out,padding-right 0s ease-in-out;transition:width 0s ease-in-out,padding-left 0s ease-in-out,padding-right 0s ease-in-out}#app .sidebar-container .scrollbar-wrapper{overflow-x:hidden!important}#app .sidebar-container .scrollbar-wrapper .el-scrollbar__view{height:100%}#app .sidebar-container .el-scrollbar__bar.is-vertical{right:0}#app .sidebar-container .is-horizontal{display:none}#app .sidebar-container a{display:inline-block;width:100%;overflow:hidden}#app .sidebar-container .svg-icon{margin-right:16px}#app .sidebar-container .el-menu{border:none;height:100%;width:100%!important}#app .sidebar-container .el-submenu__title:hover,#app .sidebar-container .submenu-title-noDropdown:hover{background-color:#263445!important}#app .sidebar-container .is-active>.el-submenu__title{color:#f4f4f5!important}#app .sidebar-container .el-submenu .el-menu-item,#app .sidebar-container .nest-menu .el-submenu>.el-submenu__title{min-width:180px!important;background-color:#1f2d3d!important}#app .sidebar-container .el-submenu .el-menu-item:hover,#app .sidebar-container .nest-menu .el-submenu>.el-submenu__title:hover{background-color:#001528!important}#app .hideSidebar .sidebar-container{width:36px!important}#app .hideSidebar .main-container{margin-left:36px}#app .hideSidebar .submenu-title-noDropdown{padding-left:10px!important;position:relative}#app .hideSidebar .submenu-title-noDropdown .el-tooltip{padding:0 10px!important}#app .hideSidebar .el-submenu{overflow:hidden}#app .hideSidebar .el-submenu>.el-submenu__title{padding-left:10px!important}#app .hideSidebar .el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}#app .hideSidebar .el-menu--collapse .el-submenu>.el-submenu__title>span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}#app .el-menu--collapse .el-menu .el-submenu{min-width:180px!important}#app .mobile .main-container{margin-left:0}#app .mobile .sidebar-container{-webkit-transition:-webkit-transform .28s;transition:-webkit-transform .28s;transition:transform .28s;transition:transform .28s,-webkit-transform .28s;width:180px!important}#app .mobile.hideSidebar .sidebar-container{pointer-events:none;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transform:translate3d(-180px,0,0);transform:translate3d(-180px,0,0)}#app .withoutAnimation .main-container,#app .withoutAnimation .sidebar-container{-webkit-transition:none;transition:none}.el-menu--vertical>.el-menu .svg-icon{margin-right:16px}.el-menu--vertical .el-menu-item:hover,.el-menu--vertical .nest-menu .el-submenu>.el-submenu__title:hover{background-color:#263445!important}.blue-btn{background:#324157}.blue-btn:hover{color:#324157}.blue-btn:hover:after,.blue-btn:hover:before{background:#324157}.light-blue-btn{background:#3a71a8}.light-blue-btn:hover{color:#3a71a8}.light-blue-btn:hover:after,.light-blue-btn:hover:before{background:#3a71a8}.red-btn{background:#c03639}.red-btn:hover{color:#c03639}.red-btn:hover:after,.red-btn:hover:before{background:#c03639}.pink-btn{background:#e65d6e}.pink-btn:hover{color:#e65d6e}.pink-btn:hover:after,.pink-btn:hover:before{background:#e65d6e}.green-btn{background:#30b08f}.green-btn:hover{color:#30b08f}.green-btn:hover:after,.green-btn:hover:before{background:#30b08f}.tiffany-btn{background:#4ab7bd}.tiffany-btn:hover{color:#4ab7bd}.tiffany-btn:hover:after,.tiffany-btn:hover:before{background:#4ab7bd}.yellow-btn{background:#fec171}.yellow-btn:hover{color:#fec171}.yellow-btn:hover:after,.yellow-btn:hover:before{background:#fec171}.pan-btn{font-size:14px;color:#fff;padding:14px 36px;border-radius:8px;border:none;outline:none;-webkit-transition:all .6s ease;transition:all .6s ease;position:relative;display:inline-block}.pan-btn:hover{background:#fff}.pan-btn:hover:after,.pan-btn:hover:before{width:100%;-webkit-transition:all .6s ease;transition:all .6s ease}.pan-btn:after,.pan-btn:before{content:"";position:absolute;top:0;right:0;height:2px;width:0;-webkit-transition:all .4s ease;transition:all .4s ease}.pan-btn:after{right:inherit;top:inherit;left:0;bottom:0}.custom-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;color:#fff;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;padding:10px 15px;font-size:14px;border-radius:4px}body{height:100%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;background:#fff;color:#000}label{font-weight:700}html{-webkit-box-sizing:border-box;box-sizing:border-box}#app,html{height:100%}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}.no-padding{padding:0!important}.padding-content{padding:4px 0}a:active,a:focus{outline:none}a,a:focus,a:hover{cursor:pointer;color:inherit;text-decoration:none}div:focus{outline:none}.fr{float:right}.fl{float:left}.pr-5{padding-right:5px}.pl-5{padding-left:5px}.block{display:block}.pointer{cursor:pointer}.inlineBlock{display:block}.clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}code{background:#eef1f6;padding:15px 16px;display:block;line-height:36px;font-size:15px;font-family:Source Sans Pro,Helvetica Neue,Arial,sans-serif}code a{color:#337ab7;cursor:pointer}code a:hover{color:#20a0ff}.warn-content{background:rgba(66,185,131,.1);border-radius:2px;padding:1rem;line-height:1.6rem;word-spacing:.05rem}.warn-content a{color:#42b983;font-weight:600}.app-container{padding:20px}.components-container{margin:30px 50px;position:relative}.pagination-container{margin-top:30px}.text-center{text-align:center}.sub-navbar{height:50px;line-height:50px;position:relative;width:100%;text-align:right;padding-right:20px;-webkit-transition:position .6s ease;transition:position .6s ease;background:-webkit-gradient(linear,left top,right top,from(#20b6f9),color-stop(0,#20b6f9),color-stop(100%,#2178f1),to(#2178f1));background:linear-gradient(90deg,#20b6f9,#20b6f9 0,#2178f1 100%,#2178f1 0)}.sub-navbar .subtitle{font-size:20px;color:#fff}.sub-navbar.deleted,.sub-navbar.draft{background:#d0d0d0}.link-type,.link-type:focus{color:#337ab7;cursor:pointer}.link-type:focus:hover,.link-type:hover{color:#20a0ff}.filter-container{padding-bottom:10px}.filter-container .filter-item{display:inline-block;vertical-align:middle;margin-bottom:10px}.multiselect{line-height:16px}.multiselect--active{z-index:1000!important}.hamburger[data-v-69c6c5c4]{display:inline-block;vertical-align:middle;width:20px;height:20px}.hamburger.is-active[data-v-69c6c5c4]{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.navbar[data-v-28de7ff2]{height:50px;overflow:hidden}.navbar .hamburger-container[data-v-28de7ff2]{line-height:46px;height:100%;float:left;cursor:pointer;-webkit-transition:background .3s;transition:background .3s}.navbar .hamburger-container[data-v-28de7ff2]:hover{background:rgba(0,0,0,.025)}.navbar .breadcrumb-container[data-v-28de7ff2]{float:left}.navbar .errLog-container[data-v-28de7ff2]{display:inline-block;vertical-align:top}.navbar .right-menu[data-v-28de7ff2]{float:right;height:100%;line-height:50px}.navbar .right-menu[data-v-28de7ff2]:focus{outline:none}.navbar .right-menu .right-menu-item[data-v-28de7ff2]{display:inline-block;padding:0 15px;height:100%;font-size:18px;color:#5a5e66;vertical-align:text-bottom}.navbar .right-menu .right-menu-item.hover-effect[data-v-28de7ff2]{cursor:pointer;-webkit-transition:background .3s;transition:background .3s}.navbar .right-menu .right-menu-item.hover-effect[data-v-28de7ff2]:hover{background:rgba(0,0,0,.025)}.navbar .right-menu .avatar-container .avatar-wrapper[data-v-28de7ff2]{margin-top:5px;position:relative}.navbar .right-menu .avatar-container .avatar-wrapper .user-avatar[data-v-28de7ff2]{cursor:pointer;width:40px;height:40px;border-radius:10px}.navbar .right-menu .avatar-container .avatar-wrapper .el-icon-caret-bottom[data-v-28de7ff2]{cursor:pointer;position:absolute;right:-20px;top:25px;font-size:12px}.count-badge[data-v-52140d98]{margin-left:5px;height:48px}.scroll-container[data-v-591d6778]{white-space:nowrap;position:relative;overflow:hidden;width:100%}.scroll-container[data-v-591d6778] .el-scrollbar__bar{bottom:0}.scroll-container[data-v-591d6778] .el-scrollbar__wrap{height:49px}.tags-view-container[data-v-e1cdb714]{height:34px;width:100%;background:#fff;border-bottom:1px solid #d8dce5;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.12),0 0 3px 0 rgba(0,0,0,.04);box-shadow:0 1px 3px 0 rgba(0,0,0,.12),0 0 3px 0 rgba(0,0,0,.04)}.tags-view-container .tags-view-wrapper .tags-view-item[data-v-e1cdb714]{display:inline-block;position:relative;cursor:pointer;height:26px;line-height:26px;border:1px solid #d8dce5;color:#495060;background:#fff;padding:0 8px;font-size:12px;margin-left:5px;margin-top:4px}.tags-view-container .tags-view-wrapper .tags-view-item[data-v-e1cdb714]:first-of-type{margin-left:15px}.tags-view-container .tags-view-wrapper .tags-view-item[data-v-e1cdb714]:last-of-type{margin-right:15px}.tags-view-container .tags-view-wrapper .tags-view-item.active[data-v-e1cdb714]{background-color:#42b983;color:#fff;border-color:#42b983}.tags-view-container .tags-view-wrapper .tags-view-item.active[data-v-e1cdb714]:before{content:"";background:#fff;display:inline-block;width:8px;height:8px;border-radius:50%;position:relative;margin-right:2px}.tags-view-container .contextmenu[data-v-e1cdb714]{margin:0;background:#fff;z-index:100;position:absolute;list-style-type:none;padding:5px 0;border-radius:4px;font-size:12px;font-weight:400;color:#333;-webkit-box-shadow:2px 2px 3px 0 rgba(0,0,0,.3);box-shadow:2px 2px 3px 0 rgba(0,0,0,.3)}.tags-view-container .contextmenu li[data-v-e1cdb714]{margin:0;padding:7px 16px;cursor:pointer}.tags-view-container .contextmenu li[data-v-e1cdb714]:hover{background:#eee}.tags-view-wrapper .tags-view-item .el-icon-close{width:16px;height:16px;vertical-align:2px;border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.tags-view-wrapper .tags-view-item .el-icon-close:before{-webkit-transform:scale(.6);transform:scale(.6);display:inline-block;vertical-align:-3px}.tags-view-wrapper .tags-view-item .el-icon-close:hover{background-color:#b4bccc;color:#fff}.app-main[data-v-f852c4f2]{min-height:calc(100vh - 84px);width:100%;position:relative;overflow:hidden}.app-wrapper[data-v-767d264f]{position:relative;height:100%;width:100%}.app-wrapper[data-v-767d264f]:after{content:"";display:table;clear:both}.app-wrapper.mobile.openSidebar[data-v-767d264f]{position:fixed;top:0}.drawer-bg[data-v-767d264f]{background:#000;opacity:.3;width:100%;top:0;height:100%;position:absolute;z-index:999}.svg-icon[data-v-17178ffc]{width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-0171.aa11eafe.css b/priv/static/adminfe/chunk-0171.aa11eafe.css deleted file mode 100644 index 45340d06b..000000000 --- a/priv/static/adminfe/chunk-0171.aa11eafe.css +++ /dev/null @@ -1 +0,0 @@ -.select-field[data-v-377d5068]{width:350px}@media only screen and (max-width:480px){.select-field[data-v-377d5068]{width:100%;margin-bottom:5px}}.el-dialog__body{padding:20px}.create-account-form-item{margin-bottom:20px}.create-account-form-item-without-margin{margin-bottom:0}@media only screen and (max-width:480px){.create-user-dialog{width:85%}.create-account-form-item{margin-bottom:20px}.el-dialog__body{padding:20px}}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided.actor-type-dropdown:before{margin:0;height:0}.el-dropdown-menu--small .actor-type-dropdown{padding:0}.actor-type-select{width:100%}.actor-type-select input{border-color:transparent;color:#606266}.actor-type-select .el-input__inner:hover{border-color:transparent;background-color:#ecf5ff}.actor-type-select .el-input.is-focus{border-color:transparent}.actor-type-select .el-input__suffix-inner{pointer-events:none}.actor-type-select .el-input.is-active .el-input__inner,.actor-type-select .el-input.is-focus .el-input__inner,.actor-type-select .el-input__inner:focus,.actor-type-select .el-select .el-input__inner:focus{border-color:transparent}.moderate-user-button{text-align:left;width:350px;padding:10px}.moderate-user-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.moderate-user-button{width:100%}}.actions-button{text-align:left;width:350px;padding:10px}.actions-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 15px 10px}.actions-container .el-dropdown{margin-left:10px}.active-tag{color:#409eff;font-weight:700}.active-tag .el-icon-check{color:#409eff;float:right;margin:7px 0 0 15px}.el-dropdown-link:hover{cursor:pointer;color:#409eff}.create-account>.el-icon-plus{margin-right:5px}.password-reset-token{margin:0 0 14px}.password-reset-token-dialog{width:50%}.reason-tooltip{max-width:450px}.reset-password-link{text-decoration:underline}.users-header-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.users-container h1{margin:10px 0 0 15px;height:40px}.users-container .cell{word-break:break-word}.users-container .el-table__row:hover{cursor:pointer}.users-container .pagination{margin:25px 0;text-align:center}.users-container .reboot-button{margin:0 15px 0 0;padding:10px;width:145px}.users-container .search{width:350px;float:right;margin-left:10px}.users-container .filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px}.users-container .user-count{color:grey;font-size:28px}@media only screen and (max-width:480px){.password-reset-token-dialog{width:85%}.users-container h1{margin:0}.users-container .actions-button{width:100%}.users-container .actions-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0 10px 7px}.users-container .el-icon-arrow-down{font-size:12px}.users-container .search{width:100%;margin-left:0}.users-container .filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0 10px}.users-container .el-table__row .el-tag{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:30px;margin-bottom:4px;font-weight:700}.users-container .reboot-button{margin:0}.users-container .users-header-container{margin:7px 10px 12px}.users-container .user-count{color:grey;font-size:22px}}@media only screen and (max-width:801px) and (min-width:481px){.actions-button,.search{width:49%}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-03c5.f59788cf.css b/priv/static/adminfe/chunk-03c5.f59788cf.css new file mode 100644 index 000000000..863f6f4f4 --- /dev/null +++ b/priv/static/adminfe/chunk-03c5.f59788cf.css @@ -0,0 +1 @@ +h1[data-v-4ee576de]{margin:0}.enable-mediaproxy-container[data-v-4ee576de]{margin:10px 15px}.enable-mediaproxy-container button[data-v-4ee576de]{font-size:16px}.expl[data-v-4ee576de]{color:#666;font-size:13px;line-height:22px;margin:5px 0 0;overflow-wrap:break-word;overflow:hidden;text-overflow:ellipsis}.banned-urls-table[data-v-4ee576de]{margin-top:15px;margin-bottom:15px}.evict-button[data-v-4ee576de]{margin-left:15px}.media-proxy-cache-header[data-v-4ee576de]{margin-left:15px;margin-top:22px;font-weight:500}.media-proxy-cache-header-container[data-v-4ee576de]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:10px 15px}.pagination[data-v-4ee576de]{margin:25px 0;text-align:center}.remove-url-button[data-v-4ee576de]{width:150px}.url-input[data-v-4ee576de]{margin-right:15px}.url-input-container[data-v-4ee576de]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;margin:15px 15px 5px}.url-input-expl[data-v-4ee576de]{margin-left:15px}@media only screen and (max-width:480px){.url-input[data-v-4ee576de]{width:100%;margin-bottom:5px}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-0598.d8f2b478.css b/priv/static/adminfe/chunk-0598.d8f2b478.css deleted file mode 100644 index 9b84800d0..000000000 --- a/priv/static/adminfe/chunk-0598.d8f2b478.css +++ /dev/null @@ -1 +0,0 @@ -.status-card{margin-bottom:10px;cursor:pointer}.status-card .account{line-height:26px;font-size:13px;color:#606266}.status-card .account:hover{text-decoration:underline}.status-card .deactivated{color:grey;line-height:28px;vertical-align:middle}.status-card .image{width:20%}.status-card .image img{width:100%}.status-card .router-link{text-decoration:none}.status-card .show-more-button{margin-left:5px}.status-card .status-account{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.status-card .status-avatar-img{display:inline-block;width:15px;height:15px;margin-right:5px}.status-card .status-account-name{display:inline-block;margin:0;font-size:15px;font-weight:500}.status-card .status-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.status-card .status-card-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.status-card .status-checkbox{margin-right:7px}.status-card .status-content{font-size:15px;line-height:26px}.status-card .status-created-at{font-size:13px;color:#606266}.status-card .status-deleted{font-style:italic;margin-top:3px}.status-card .status-footer,.status-card .status-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.status-card .status-tags{display:inline}.status-card .status-without-content{font-style:italic}@media only screen and (max-width:480px){.el-message{min-width:80%}.el-message-box{width:80%}.status-card .el-card__header{padding:10px 17px}.status-card .el-tag{margin:3px 0}.status-card .status-account-container{margin-bottom:5px}.status-card .status-actions-button{margin:3px 0}.status-card .status-actions{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.status-card .status-footer{margin-top:10px}.status-card .status-footer,.status-card .status-header{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.status-card .status-header{display:-webkit-box;display:-ms-flexbox;display:flex}}.moderate-user-button{text-align:left;width:350px;padding:10px}.moderate-user-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.moderate-user-button{width:100%}}.security-settings-container{display:-webkit-box;display:-ms-flexbox;display:flex}.security-settings-container label{width:15%;height:36px}.security-settings-modal .el-dialog__body{padding-top:10px}.security-settings-modal .el-form-item,.security-settings-modal .password-alert{margin-bottom:15px}.security-settings-modal .password-input{margin-bottom:0}.security-settings-submit-button{float:right}@media (max-width:800px){.security-settings-modal .el-dialog{width:90%}}.security-settings-modal .el-alert .el-alert__description{word-break:break-word;font-size:1em}.security-settings-modal .form-text{display:block;margin-top:.25rem;color:#909399}header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;margin:22px 0;padding-left:15px}header h1{margin:0 0 0 10px}table{margin:10px 0 0 15px}table .name-col{width:150px}.avatar-name-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.avatar-name-container .el-icon-top-right{font-size:2em;line-height:36px;color:#606266}.invalid{color:grey}.el-table--border:after,.el-table--group:after,.el-table:before{background-color:transparent}.image{width:20%}.image img{width:100%}.invalid-user-tag{font-size:14px;width:inherit;height:auto;text-align:center;word-wrap:break-word;white-space:normal}.left-header-container{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.no-statuses{margin-left:28px;color:#606266}.password-reset-token{margin:0 0 14px}.password-reset-token-dialog{width:50%}.poll ul{list-style-type:none;padding:0;width:30%}.reboot-button{padding:10px;margin-left:10px}.recent-statuses-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:67%}.recent-statuses-header{margin-top:10px}.reset-password-link{text-decoration:underline}.security-setting-button{margin-top:20px;width:100%}.statuses{padding:0 20px 0 0}.show-private{width:200px;text-align:left;line-height:67px;margin-right:20px}.show-private-statuses{margin-left:28px;margin-bottom:20px}.recent-statuses{margin-left:28px}.user-page-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:22px 15px 22px 20px;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.user-page-header h1{display:inline}.user-profile-card{margin:0 20px;width:30%;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.user-profile-container{display:-webkit-box;display:-ms-flexbox;display:flex}.user-profile-table{margin:0;width:inherit}.user-profile-tag{margin:0 4px 4px 0}@media only screen and (max-width:480px){.avatar-name-container{margin-bottom:10px}.el-timeline-item__wrapper{padding-left:18px}.password-reset-token-dialog{width:85%}.recent-statuses{margin:20px 10px 15px}.recent-statuses-container{width:100%;margin:0}.show-private-statuses{margin:0 10px 20px}.status-container{margin:0 10px}.statuses{padding-right:10px;margin-left:8px}.user-page-header{padding:0;margin:7px 15px 15px 10px}.user-page-header-container .el-dropdown{width:95%;margin:0 15px 15px 10px}.user-profile-card{margin:0 10px;width:95%}.user-profile-card td{width:80px}.user-profile-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media only screen and (max-width:801px) and (min-width:481px){.recent-statuses{margin:20px 10px 15px 0}.recent-statuses-container{width:97%;margin:0 20px}.show-private-statuses{margin:0 10px 20px 0}.user-page-header{padding:0;margin:7px 15px 20px 20px}.user-profile-card{margin:0 20px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.user-profile-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-0f09.66ca2a61.css b/priv/static/adminfe/chunk-0f09.66ca2a61.css deleted file mode 100644 index b580e0699..000000000 --- a/priv/static/adminfe/chunk-0f09.66ca2a61.css +++ /dev/null @@ -1 +0,0 @@ -.actions-button[data-v-2d9f3c5e]{text-align:left;width:350px;padding:10px}.actions-button-container[data-v-2d9f3c5e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-dropdown[data-v-2d9f3c5e]{float:right}.el-icon-edit[data-v-2d9f3c5e]{margin-right:5px}.tag-container[data-v-2d9f3c5e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tag-text[data-v-2d9f3c5e]{padding-right:20px}.no-hover[data-v-2d9f3c5e]:hover{color:#606266;background-color:#fff;cursor:auto} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-176e.b7aa5351.css b/priv/static/adminfe/chunk-176e.a3c8376d.css similarity index 100% rename from priv/static/adminfe/chunk-176e.b7aa5351.css rename to priv/static/adminfe/chunk-176e.a3c8376d.css diff --git a/priv/static/adminfe/chunk-19e2.934ad654.css b/priv/static/adminfe/chunk-19e2.934ad654.css deleted file mode 100644 index 4fd86df25..000000000 --- a/priv/static/adminfe/chunk-19e2.934ad654.css +++ /dev/null @@ -1 +0,0 @@ -.select-field[data-v-06df454a]{width:350px}@media only screen and (max-width:480px){.select-field[data-v-06df454a]{width:100%;margin-bottom:5px}}.el-dialog__body{padding:20px}.create-account-form-item{margin-bottom:20px}.create-account-form-item-without-margin{margin-bottom:0}@media only screen and (max-width:480px){.create-user-dialog{width:85%}.create-account-form-item{margin-bottom:20px}.el-dialog__body{padding:20px}}.moderate-user-button{text-align:left;width:350px;padding:10px}.moderate-user-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.moderate-user-button{width:100%}}.actions-button{text-align:left;width:350px;padding:10px}.actions-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 15px 10px}.actions-container .el-dropdown{margin-left:10px}.active-tag{color:#409eff;font-weight:700}.active-tag .el-icon-check{color:#409eff;float:right;margin:7px 0 0 15px}.el-dropdown-link:hover{cursor:pointer;color:#409eff}.create-account>.el-icon-plus{margin-right:5px}.password-reset-token{margin:0 0 14px}.password-reset-token-dialog{width:50%}.reset-password-link{text-decoration:underline}.users-header-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.users-container h1{margin:10px 0 0 15px;height:40px}.users-container .el-table__row:hover{cursor:pointer}.users-container .pagination{margin:25px 0;text-align:center}.users-container .reboot-button{margin:0 15px 0 0;padding:10px;width:145px}.users-container .search{width:350px;float:right;margin-left:10px}.users-container .filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px}.users-container .user-count{color:grey;font-size:28px}@media only screen and (max-width:480px){.password-reset-token-dialog{width:85%}.users-container h1{margin:0}.users-container .actions-button{width:100%}.users-container .actions-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0 10px 7px}.users-container .el-icon-arrow-down{font-size:12px}.users-container .search{width:100%;margin-left:0}.users-container .filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0 10px}.users-container .el-table__row .el-tag{width:30px;display:inline-block;margin-bottom:4px;font-weight:700}.users-container .el-table__row .el-tag.el-tag--danger,.users-container .el-table__row .el-tag.el-tag--success{padding-left:8px}.users-container .reboot-button{margin:0}.users-container .users-header-container{margin:7px 10px 12px}.users-container .user-count{color:grey;font-size:22px}}@media only screen and (max-width:801px) and (min-width:481px){.actions-button,.search{width:49%}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-28f8.0aae6427.css b/priv/static/adminfe/chunk-28f8.0aae6427.css deleted file mode 100644 index e811b3260..000000000 --- a/priv/static/adminfe/chunk-28f8.0aae6427.css +++ /dev/null @@ -1 +0,0 @@ -.image-upload-area .input-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.image-upload-area .input-file{z-index:100;position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.image-upload-area .image-button-group{margin-top:20px}.image-upload-area .image-button-group .upload-button,.image-upload-area .image-upload-wrapper{position:relative}.image-upload-area .image-upload-wrapper .image-upload-overlay{border-radius:5px}.image-upload-area .image-upload-wrapper .image-upload-overlay,.image-upload-area .image-upload-wrapper .image-upload-overlay .caption{-webkit-transition:-webkit-box-shadow .1s;transition:-webkit-box-shadow .1s;transition:box-shadow .1s;transition:box-shadow .1s,-webkit-box-shadow .1s}.image-upload-area .image-upload-wrapper .image-upload-overlay .caption{visibility:hidden;position:absolute;top:0;bottom:0;right:0;left:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-weight:700;font-size:10px;text-transform:uppercase;color:#fff;z-index:9}.image-upload-area .image-upload-wrapper .image-upload-overlay .uploaded-image{border-radius:5px;-webkit-box-shadow:0 2px 10px 0 rgba(0,0,0,.1);box-shadow:0 2px 10px 0 rgba(0,0,0,.1)}.image-upload-area .image-upload-wrapper .image-upload-overlay:hover{visibility:visible;cursor:pointer;border-radius:5px}.image-upload-area .image-upload-wrapper .image-upload-overlay:hover .el-image__error{visibility:hidden}.image-upload-area .image-upload-wrapper .image-upload-overlay:hover .caption{visibility:visible;-webkit-box-shadow:0 2px 10px 0 rgba(0,0,0,.1),inset 0 0 120px 25px rgba(0,0,0,.8);box-shadow:0 2px 10px 0 rgba(0,0,0,.1),inset 0 0 120px 25px rgba(0,0,0,.8);border-radius:5px}a{text-decoration:underline}.center-label label{text-align:center}.center-label label span{float:left}.code{background-color:rgba(173,190,214,.48);border-radius:3px;font-family:monospace;padding:0 3px}.delete-setting-button{margin-left:5px}.description-container{overflow-wrap:break-word}.description-container .el-form-item__content{line-height:20px}.divider{margin:0 0 18px}.divider.thick-line{height:2px}.docs-search-container{float:right;margin-right:30px}.editable-keyword-container{width:100%}.el-form-item .rate-limit{margin-right:0}.el-input-group__prepend{padding-left:10px;padding-right:10px}.el-tabs__header{z-index:2002}.esshd-list{margin:0}.expl,.expl>p{color:#666;font-size:13px;line-height:22px;margin:5px 0 0;overflow-wrap:break-word;overflow:hidden;text-overflow:ellipsis}.expl>p code,.expl code{display:inline;line-height:22px;font-size:13px;padding:2px 3px}.follow-relay{width:350px;margin-right:7px}.form-container{margin-bottom:80px}.grouped-settings-header{margin:0 0 14px}.highlight{background-color:#e6e6e6}.icons-button-container{width:100%;margin-bottom:10px}.icons-button-desc{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;margin-left:5px}.icon-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:95%}.icon-values-container{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 10px 10px 0}.icon-key-input{width:30%;margin-right:8px}.icon-minus-button{width:36px;height:36px}.icon-value-input{width:70%;margin-left:8px}.icons-container,.input-container{display:-webkit-box;display:-ms-flexbox;display:flex}.input-container{-webkit-box-align:start;-ms-flex-align:start;align-items:start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.input-container .el-form-item{margin-right:30px;width:100%}.input-container .el-select,.keyword-container{width:100%}label{overflow:hidden;text-overflow:ellipsis}.label-font{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700}.limit-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.limit-expl{margin-left:10px}.limit-input{width:47%;margin:0 0 5px 1%}.line{width:100%;height:0;border:1px solid #eee;margin-bottom:18px}.mascot{margin-bottom:15px}.mascot-container{width:100%}.mascot-input{margin-bottom:7px}.mascot-name-container{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:7px}.mascot-name-input{margin-right:10px}.multiple-select-container{width:100%}.name-input{width:30%;margin-right:8px}.no-top-margin{margin-top:0}.no-top-margin p{margin-right:30px}.pattern-input{width:20%;margin-right:8px}.proxy-url-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px;width:100%}.proxy-url-host-input{width:35%;margin-right:8px}.proxy-url-value-input{width:35%;margin-left:8px;margin-right:10px}.prune-options{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.prune-options .el-radio{margin-top:11px}.rate-limit .el-form-item__content{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.rate-limit-container{width:100%}.rate-limit-content{width:70%}.rate-limit-label{float:right}.rate-limit-label-container{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;width:30%;margin-right:10px}.reboot-button{width:145px;text-align:left;padding:10px;float:right;margin:0 30px 0 0}.reboot-button-container{width:100%;position:fixed;top:60px;right:0;z-index:2000}.relays-container{margin:0 15px}.replacement-input{width:80%;margin-left:8px;margin-right:10px}.scale-input{width:47%;margin:0 1% 5px 0}.setting-input{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.setting-label{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;line-height:20px;margin:0 0 14px}.settings-container{max-width:1824px;margin:auto}.settings-container .el-tabs{margin-top:20px}.settings-delete-button{margin-left:5px}.settings-docs-button{width:163px;text-align:left;padding:10px}.settings-header{margin:10px 15px 15px}.header-sidebar-opened{max-width:1585px}.header-sidebar-closed{max-width:1728px}.settings-header-container{height:87px}.settings-search-input{width:350px;margin-left:5px}.single-input{margin-right:10px}.socks5-checkbox{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;margin-left:10px}.socks5-checkbox-container{width:40%;height:36px;margin-right:5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ssl-tls-opts{margin:36px 0 0}.submit-button{float:right;margin:0 30px 22px 0}.submit-button-container{width:100%;position:fixed;bottom:0;right:0;z-index:2000}.switch-input{height:36px}.text{line-height:20px;margin-right:15px}.upload-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.value-input{width:70%;margin-left:8px;margin-right:10px}@media only screen and (min-width:1824px){.header-sidebar-closed{max-width:1772px}.header-sidebar-opened{max-width:1630px}.reboot-button-container{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}.reboot-sidebar-opened{max-width:1630px}.reboot-sidebar-closed{max-width:1772px}.sidebar-closed{max-width:1586px}.sidebar-opened{max-width:1442px}.submit-button-container{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}}@media only screen and (max-width:480px){.crontab,.crontab label{width:100%}.delete-setting-button{margin:4px 0 0 5px;height:28px}.delete-setting-button-container{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p{line-height:18px;margin:0 5px 7px 15px}.description>p code{display:inline;line-height:18px;padding:2px 3px;font-size:14px}.description-container{margin:0 15px 22px}.divider{margin:0 0 10px}.divider .thick-line{height:2px}.follow-relay{width:70%;margin-right:5px}.follow-relay input{width:100%}.follow-relay-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}h1{font-size:24px}.input{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container{width:100%}.input-container .el-form-item:first-child{margin:0;padding:0 15px 10px}.input-container .el-form-item.crontab-container:first-child{margin:0;padding:0}.input-container .el-form-item:first-child .mascot-form-item,.input-container .el-form-item:first-child .rate-limit{padding:0}.input-container .settings-delete-button{margin-top:4px;float:right}.input-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.label-with-margin{margin-left:15px}.limit-input{width:45%}.nav-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px}.proxy-url-input{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-bottom:0}.proxy-url-host-input{width:100%;margin-bottom:5px}.proxy-url-value-input{width:100%;margin-left:0}.prune-options{height:80px}.prune-options,.rate-limit .el-form-item__content{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.rate-limit-content{width:100%}.rate-limit-label{float:left}.rate-limit-label-container{width:100%}.reboot-button{margin:0 15px 0 0}.reboot-button-container{top:57px}.scale-input{width:45%}.settings-header{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;display:inline-block;margin:10px 15px 15px}.docs-search-container{float:right}.settings-search-input{width:100%;margin-left:0}.settings-search-input-container{margin:0 15px 15px}.settings-menu{width:163px;margin-right:5px}.socks5-checkbox-container{width:100%}.submit-button{margin:0 15px 22px 0}.el-input__inner{padding:0 5px}.el-form-item__label:not(.no-top-margin){padding-bottom:5px;line-height:22px;margin-top:7px;width:100%}.el-form-item__label:not(.no-top-margin) span{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.el-message{min-width:80%}.el-select__tags{overflow:hidden}.expl,.expl>p{line-height:16px}.icon-key-input{width:40%;margin-right:4px}.icon-minus-button{width:28px;height:28px;margin-top:4px}.icon-values-container{margin:0 7px 7px 0}.icon-value-input{width:60%;margin-left:4px}.icons-button-container{line-height:24px}.line{margin-bottom:10px}.mascot-form-item .el-form-item__label:not(.no-top-margin){margin:0;padding:0}.mascot-container{margin-bottom:5px}.name-input{width:40%;margin-right:5px}p.expl{line-height:20px}.pattern-input{width:40%;margin-right:4px}.relays-container{margin:0 10px}.replacement-input{width:60%;margin-left:4px;margin-right:5px}.settings-header-container{height:45px}.value-input{width:60%;margin-left:5px;margin-right:8px}}@media only screen and (max-width:818px) and (min-width:481px){.delete-setting-button{margin:4px 0 0 10px;height:28px}.delete-setting-button-container{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p{line-height:18px;margin:0 15px 10px 0}.icon-minus-button{width:28px;height:28px;margin-top:4px}.input{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container .el-form-item__label span{margin-left:10px}.input-row,.nav-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.nav-container{height:36px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px 30px 15px 15px}.rate-limit-content{width:65%}.rate-limit-label-container{width:35%}.settings-delete-button{float:right}.settings-header-container{height:36px}.settings-search-input{width:250px;margin:0 0 15px 15px}}a[data-v-82f78b3e]{text-decoration:underline}.center-label label[data-v-82f78b3e]{text-align:center}.center-label label span[data-v-82f78b3e]{float:left}.code[data-v-82f78b3e]{background-color:rgba(173,190,214,.48);border-radius:3px;font-family:monospace;padding:0 3px}.delete-setting-button[data-v-82f78b3e]{margin-left:5px}.description-container[data-v-82f78b3e]{overflow-wrap:break-word}.description-container .el-form-item__content[data-v-82f78b3e]{line-height:20px}.divider[data-v-82f78b3e]{margin:0 0 18px}.divider.thick-line[data-v-82f78b3e]{height:2px}.docs-search-container[data-v-82f78b3e]{float:right;margin-right:30px}.editable-keyword-container[data-v-82f78b3e]{width:100%}.el-form-item .rate-limit[data-v-82f78b3e]{margin-right:0}.el-input-group__prepend[data-v-82f78b3e]{padding-left:10px;padding-right:10px}.el-tabs__header[data-v-82f78b3e]{z-index:2002}.esshd-list[data-v-82f78b3e]{margin:0}.expl>p[data-v-82f78b3e],.expl[data-v-82f78b3e]{color:#666;font-size:13px;line-height:22px;margin:5px 0 0;overflow-wrap:break-word;overflow:hidden;text-overflow:ellipsis}.expl>p code[data-v-82f78b3e],.expl code[data-v-82f78b3e]{display:inline;line-height:22px;font-size:13px;padding:2px 3px}.follow-relay[data-v-82f78b3e]{width:350px;margin-right:7px}.form-container[data-v-82f78b3e]{margin-bottom:80px}.grouped-settings-header[data-v-82f78b3e]{margin:0 0 14px}.highlight[data-v-82f78b3e]{background-color:#e6e6e6}.icons-button-container[data-v-82f78b3e]{width:100%;margin-bottom:10px}.icons-button-desc[data-v-82f78b3e]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;margin-left:5px}.icon-container[data-v-82f78b3e]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:95%}.icon-values-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 10px 10px 0}.icon-key-input[data-v-82f78b3e]{width:30%;margin-right:8px}.icon-minus-button[data-v-82f78b3e]{width:36px;height:36px}.icon-value-input[data-v-82f78b3e]{width:70%;margin-left:8px}.icons-container[data-v-82f78b3e],.input-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex}.input-container[data-v-82f78b3e]{-webkit-box-align:start;-ms-flex-align:start;align-items:start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.input-container .el-form-item[data-v-82f78b3e]{margin-right:30px;width:100%}.input-container .el-select[data-v-82f78b3e],.keyword-container[data-v-82f78b3e]{width:100%}label[data-v-82f78b3e]{overflow:hidden;text-overflow:ellipsis}.label-font[data-v-82f78b3e]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700}.limit-button-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.limit-expl[data-v-82f78b3e]{margin-left:10px}.limit-input[data-v-82f78b3e]{width:47%;margin:0 0 5px 1%}.line[data-v-82f78b3e]{width:100%;height:0;border:1px solid #eee;margin-bottom:18px}.mascot[data-v-82f78b3e]{margin-bottom:15px}.mascot-container[data-v-82f78b3e]{width:100%}.mascot-input[data-v-82f78b3e]{margin-bottom:7px}.mascot-name-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:7px}.mascot-name-input[data-v-82f78b3e]{margin-right:10px}.multiple-select-container[data-v-82f78b3e]{width:100%}.name-input[data-v-82f78b3e]{width:30%;margin-right:8px}.no-top-margin[data-v-82f78b3e]{margin-top:0}.no-top-margin p[data-v-82f78b3e]{margin-right:30px}.pattern-input[data-v-82f78b3e]{width:20%;margin-right:8px}.proxy-url-input[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px;width:100%}.proxy-url-host-input[data-v-82f78b3e]{width:35%;margin-right:8px}.proxy-url-value-input[data-v-82f78b3e]{width:35%;margin-left:8px;margin-right:10px}.prune-options[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.prune-options .el-radio[data-v-82f78b3e]{margin-top:11px}.rate-limit .el-form-item__content[data-v-82f78b3e]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.rate-limit-container[data-v-82f78b3e]{width:100%}.rate-limit-content[data-v-82f78b3e]{width:70%}.rate-limit-label[data-v-82f78b3e]{float:right}.rate-limit-label-container[data-v-82f78b3e]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;width:30%;margin-right:10px}.reboot-button[data-v-82f78b3e]{width:145px;text-align:left;padding:10px;float:right;margin:0 30px 0 0}.reboot-button-container[data-v-82f78b3e]{width:100%;position:fixed;top:60px;right:0;z-index:2000}.relays-container[data-v-82f78b3e]{margin:0 15px}.replacement-input[data-v-82f78b3e]{width:80%;margin-left:8px;margin-right:10px}.scale-input[data-v-82f78b3e]{width:47%;margin:0 1% 5px 0}.setting-input[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.setting-label[data-v-82f78b3e]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;line-height:20px;margin:0 0 14px}.settings-container[data-v-82f78b3e]{max-width:1824px;margin:auto}.settings-container .el-tabs[data-v-82f78b3e]{margin-top:20px}.settings-delete-button[data-v-82f78b3e]{margin-left:5px}.settings-docs-button[data-v-82f78b3e]{width:163px;text-align:left;padding:10px}.settings-header[data-v-82f78b3e]{margin:10px 15px 15px}.header-sidebar-opened[data-v-82f78b3e]{max-width:1585px}.header-sidebar-closed[data-v-82f78b3e]{max-width:1728px}.settings-header-container[data-v-82f78b3e]{height:87px}.settings-search-input[data-v-82f78b3e]{width:350px;margin-left:5px}.single-input[data-v-82f78b3e]{margin-right:10px}.socks5-checkbox[data-v-82f78b3e]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;margin-left:10px}.socks5-checkbox-container[data-v-82f78b3e]{width:40%;height:36px;margin-right:5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ssl-tls-opts[data-v-82f78b3e]{margin:36px 0 0}.submit-button[data-v-82f78b3e]{float:right;margin:0 30px 22px 0}.submit-button-container[data-v-82f78b3e]{width:100%;position:fixed;bottom:0;right:0;z-index:2000}.switch-input[data-v-82f78b3e]{height:36px}.text[data-v-82f78b3e]{line-height:20px;margin-right:15px}.upload-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.value-input[data-v-82f78b3e]{width:70%;margin-left:8px;margin-right:10px}@media only screen and (min-width:1824px){.header-sidebar-closed[data-v-82f78b3e]{max-width:1772px}.header-sidebar-opened[data-v-82f78b3e]{max-width:1630px}.reboot-button-container[data-v-82f78b3e]{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}.reboot-sidebar-opened[data-v-82f78b3e]{max-width:1630px}.reboot-sidebar-closed[data-v-82f78b3e]{max-width:1772px}.sidebar-closed[data-v-82f78b3e]{max-width:1586px}.sidebar-opened[data-v-82f78b3e]{max-width:1442px}.submit-button-container[data-v-82f78b3e]{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}}@media only screen and (max-width:480px){.crontab[data-v-82f78b3e],.crontab label[data-v-82f78b3e]{width:100%}.delete-setting-button[data-v-82f78b3e]{margin:4px 0 0 5px;height:28px}.delete-setting-button-container[data-v-82f78b3e]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p[data-v-82f78b3e]{line-height:18px;margin:0 5px 7px 15px}.description>p code[data-v-82f78b3e]{display:inline;line-height:18px;padding:2px 3px;font-size:14px}.description-container[data-v-82f78b3e]{margin:0 15px 22px}.divider[data-v-82f78b3e]{margin:0 0 10px}.divider .thick-line[data-v-82f78b3e]{height:2px}.follow-relay[data-v-82f78b3e]{width:70%;margin-right:5px}.follow-relay input[data-v-82f78b3e]{width:100%}.follow-relay-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}h1[data-v-82f78b3e]{font-size:24px}.input[data-v-82f78b3e]{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container[data-v-82f78b3e]{width:100%}.input-container .el-form-item[data-v-82f78b3e]:first-child{margin:0;padding:0 15px 10px}.input-container .el-form-item.crontab-container[data-v-82f78b3e]:first-child{margin:0;padding:0}.input-container .el-form-item:first-child .mascot-form-item[data-v-82f78b3e],.input-container .el-form-item:first-child .rate-limit[data-v-82f78b3e]{padding:0}.input-container .settings-delete-button[data-v-82f78b3e]{margin-top:4px;float:right}.input-row[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.label-with-margin[data-v-82f78b3e]{margin-left:15px}.limit-input[data-v-82f78b3e]{width:45%}.nav-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px}.proxy-url-input[data-v-82f78b3e]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-bottom:0}.proxy-url-host-input[data-v-82f78b3e]{width:100%;margin-bottom:5px}.proxy-url-value-input[data-v-82f78b3e]{width:100%;margin-left:0}.prune-options[data-v-82f78b3e]{height:80px}.prune-options[data-v-82f78b3e],.rate-limit .el-form-item__content[data-v-82f78b3e]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.rate-limit-content[data-v-82f78b3e]{width:100%}.rate-limit-label[data-v-82f78b3e]{float:left}.rate-limit-label-container[data-v-82f78b3e]{width:100%}.reboot-button[data-v-82f78b3e]{margin:0 15px 0 0}.reboot-button-container[data-v-82f78b3e]{top:57px}.scale-input[data-v-82f78b3e]{width:45%}.settings-header[data-v-82f78b3e]{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;display:inline-block;margin:10px 15px 15px}.docs-search-container[data-v-82f78b3e]{float:right}.settings-search-input[data-v-82f78b3e]{width:100%;margin-left:0}.settings-search-input-container[data-v-82f78b3e]{margin:0 15px 15px}.settings-menu[data-v-82f78b3e]{width:163px;margin-right:5px}.socks5-checkbox-container[data-v-82f78b3e]{width:100%}.submit-button[data-v-82f78b3e]{margin:0 15px 22px 0}.el-input__inner[data-v-82f78b3e]{padding:0 5px}.el-form-item__label[data-v-82f78b3e]:not(.no-top-margin){padding-bottom:5px;line-height:22px;margin-top:7px;width:100%}.el-form-item__label:not(.no-top-margin) span[data-v-82f78b3e]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.el-message[data-v-82f78b3e]{min-width:80%}.el-select__tags[data-v-82f78b3e]{overflow:hidden}.expl>p[data-v-82f78b3e],.expl[data-v-82f78b3e]{line-height:16px}.icon-key-input[data-v-82f78b3e]{width:40%;margin-right:4px}.icon-minus-button[data-v-82f78b3e]{width:28px;height:28px;margin-top:4px}.icon-values-container[data-v-82f78b3e]{margin:0 7px 7px 0}.icon-value-input[data-v-82f78b3e]{width:60%;margin-left:4px}.icons-button-container[data-v-82f78b3e]{line-height:24px}.line[data-v-82f78b3e]{margin-bottom:10px}.mascot-form-item .el-form-item__label[data-v-82f78b3e]:not(.no-top-margin){margin:0;padding:0}.mascot-container[data-v-82f78b3e]{margin-bottom:5px}.name-input[data-v-82f78b3e]{width:40%;margin-right:5px}p.expl[data-v-82f78b3e]{line-height:20px}.pattern-input[data-v-82f78b3e]{width:40%;margin-right:4px}.relays-container[data-v-82f78b3e]{margin:0 10px}.replacement-input[data-v-82f78b3e]{width:60%;margin-left:4px;margin-right:5px}.settings-header-container[data-v-82f78b3e]{height:45px}.value-input[data-v-82f78b3e]{width:60%;margin-left:5px;margin-right:8px}}@media only screen and (max-width:818px) and (min-width:481px){.delete-setting-button[data-v-82f78b3e]{margin:4px 0 0 10px;height:28px}.delete-setting-button-container[data-v-82f78b3e]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p[data-v-82f78b3e]{line-height:18px;margin:0 15px 10px 0}.icon-minus-button[data-v-82f78b3e]{width:28px;height:28px;margin-top:4px}.input[data-v-82f78b3e]{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container .el-form-item__label span[data-v-82f78b3e]{margin-left:10px}.input-row[data-v-82f78b3e],.nav-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.nav-container[data-v-82f78b3e]{height:36px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px 30px 15px 15px}.rate-limit-content[data-v-82f78b3e]{width:65%}.rate-limit-label-container[data-v-82f78b3e]{width:35%}.settings-delete-button[data-v-82f78b3e]{float:right}.settings-header-container[data-v-82f78b3e]{height:36px}.settings-search-input[data-v-82f78b3e]{width:250px;margin:0 0 15px 15px}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-2d97.82cbb623.css b/priv/static/adminfe/chunk-2d97.82cbb623.css deleted file mode 100644 index f6e28e1fb..000000000 --- a/priv/static/adminfe/chunk-2d97.82cbb623.css +++ /dev/null @@ -1 +0,0 @@ -.actions-button[data-v-9bd813c8]{text-align:left;width:350px;padding:10px}.actions-button-container[data-v-9bd813c8]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-dropdown[data-v-9bd813c8]{float:right}.el-icon-edit[data-v-9bd813c8]{margin-right:5px}.tag-container[data-v-9bd813c8]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tag-text[data-v-9bd813c8]{padding-right:20px}.no-hover[data-v-9bd813c8]:hover{color:#606266;background-color:#fff;cursor:auto} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-3221.0ef79c67.css b/priv/static/adminfe/chunk-3221.0ef79c67.css deleted file mode 100644 index bd64e939a..000000000 --- a/priv/static/adminfe/chunk-3221.0ef79c67.css +++ /dev/null @@ -1 +0,0 @@ -h1[data-v-8208195e]{margin:0}.expl[data-v-8208195e]{color:#666;font-size:13px;line-height:22px;margin:5px 0 0;overflow-wrap:break-word;overflow:hidden;text-overflow:ellipsis}.banned-urls-table[data-v-8208195e]{margin-top:15px;margin-bottom:15px}.evict-button[data-v-8208195e]{margin-left:15px}.media-proxy-cache-header[data-v-8208195e]{margin-left:15px;margin-top:22px;font-weight:500}.media-proxy-cache-header-container[data-v-8208195e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:10px 15px}.remove-url-button[data-v-8208195e]{width:150px}.url-input[data-v-8208195e]{margin-right:15px}.url-input-container[data-v-8208195e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;margin:15px 15px 5px}.url-input-expl[data-v-8208195e]{margin-left:15px}@media only screen and (max-width:480px){.url-input[data-v-8208195e]{width:100%;margin-bottom:5px}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-3365.201aa8e6.css b/priv/static/adminfe/chunk-3365.201aa8e6.css new file mode 100644 index 000000000..e5024d666 --- /dev/null +++ b/priv/static/adminfe/chunk-3365.201aa8e6.css @@ -0,0 +1 @@ +.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided.actor-type-dropdown:before{margin:0;height:0}.el-dropdown-menu--small .actor-type-dropdown{padding:0}.actor-type-select{width:100%}.actor-type-select input{border-color:transparent;color:#606266}.actor-type-select .el-input__inner:hover{border-color:transparent;background-color:#ecf5ff}.actor-type-select .el-input.is-focus{border-color:transparent}.actor-type-select .el-input__suffix-inner{pointer-events:none}.actor-type-select .el-input.is-active .el-input__inner,.actor-type-select .el-input.is-focus .el-input__inner,.actor-type-select .el-input__inner:focus,.actor-type-select .el-select .el-input__inner:focus{border-color:transparent}.moderate-user-button{text-align:left;width:350px;padding:10px}.moderate-user-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.moderation-dropdown-menu{width:350px}@media only screen and (max-width:480px){.moderate-user-button{width:100%}.moderation-dropdown-menu{width:auto}}.avatar-name-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.avatar-name-container .el-icon-top-right{font-size:2em;line-height:36px;color:#606266}.avatar-name-header{display:-webkit-box;display:-ms-flexbox;display:flex;height:40px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.invalid{color:grey}.no-statuses{margin-left:28px;color:#606266}.password-reset-token{margin:0 0 14px}.password-reset-token-dialog{width:50%}.reboot-button{padding:10px;margin-left:6px}.recent-statuses-container-show{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.recent-statuses-container-show .el-timeline-item,.recent-statuses-container-show .recent-statuses{margin-left:20px}.recent-statuses-container-show .show-private-statuses{margin-left:20px;margin-bottom:20px}.reset-password-link{text-decoration:underline}.router-link{text-decoration:none}.status-container{margin:0 15px 0 20px}.statuses{padding:0 20px 0 0}.user-page-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:22px 15px 22px 20px;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.user-page-header h1{display:inline;margin:0 0 0 10px}@media only screen and (min-width:1824px){.status-show-container{max-width:1824px;margin:auto}}@media only screen and (max-width:480px){.avatar-name-container{margin-bottom:10px}.el-timeline-item__wrapper{padding-left:18px}.left-header-container{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.password-reset-token-dialog{width:85%}.recent-statuses{margin:20px 10px 15px}.recent-statuses-container-show{width:100%;margin:0 0 0 10px}.recent-statuses-container-show .el-timeline-item,.recent-statuses-container-show .recent-statuses{margin-left:0}.recent-statuses-container-show .show-private-statuses{margin:0 10px 20px 0}.status-card .el-card__body{padding:15px}.status-container{margin:0 10px}.statuses{padding-right:10px;margin-left:0}.statuses .el-timeline-item__wrapper{margin-right:10px}.user-page-header{padding:0;margin:7px 15px 5px 10px}.status-page-header-container{width:100%}.status-page-header-container .el-dropdown{width:-webkit-fill-available;width:-moz-available;width:stretch;margin:0 10px 15px}}@media only screen and (max-width:801px) and (min-width:481px){.recent-statuses-container-show{width:97%;margin:0 20px}.recent-statuses-container-show .el-timeline-item{margin-left:2px}.recent-statuses-container-show .recent-statuses{margin:20px 10px 15px 0}.recent-statuses-container-show .show-private-statuses,.show-private-statuses{margin:0 10px 20px 0}.user-page-header{padding:0;margin:7px 15px 20px 20px}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-342d.e342722b.css b/priv/static/adminfe/chunk-342d.e342722b.css new file mode 100644 index 000000000..b0fd8dcb3 --- /dev/null +++ b/priv/static/adminfe/chunk-342d.e342722b.css @@ -0,0 +1 @@ +.select-field[data-v-377d5068]{width:350px}@media only screen and (max-width:480px){.select-field[data-v-377d5068]{width:100%;margin-bottom:5px}}.el-dialog__body{padding:20px}.create-account-form-item{margin-bottom:20px}.create-account-form-item-without-margin{margin-bottom:0}@media only screen and (max-width:480px){.create-user-dialog{width:85%}.create-account-form-item{margin-bottom:20px}.el-dialog__body{padding:20px}}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided.actor-type-dropdown:before{margin:0;height:0}.el-dropdown-menu--small .actor-type-dropdown{padding:0}.actor-type-select{width:100%}.actor-type-select input{border-color:transparent;color:#606266}.actor-type-select .el-input__inner:hover{border-color:transparent;background-color:#ecf5ff}.actor-type-select .el-input.is-focus{border-color:transparent}.actor-type-select .el-input__suffix-inner{pointer-events:none}.actor-type-select .el-input.is-active .el-input__inner,.actor-type-select .el-input.is-focus .el-input__inner,.actor-type-select .el-input__inner:focus,.actor-type-select .el-select .el-input__inner:focus{border-color:transparent}.moderate-user-button{text-align:left;width:350px;padding:10px}.moderate-user-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.moderation-dropdown-menu{width:350px}@media only screen and (max-width:480px){.moderate-user-button{width:100%}.moderation-dropdown-menu{width:auto}}.actions-button{text-align:left;width:350px;padding:10px}.actions-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 15px 10px}.actions-container .el-dropdown{margin-left:10px}.active-tag{color:#409eff;font-weight:700}.active-tag .el-icon-check{color:#409eff;float:right;margin:7px 0 0 15px}.active-tag.is-disabled .el-icon-check{color:#bbb}.el-dropdown-link:hover{cursor:pointer;color:#409eff}.create-account>.el-icon-plus{margin-right:5px}.password-reset-token{margin:0 0 14px}.password-reset-token-dialog{width:50%}.reason-tooltip{max-width:450px}.reset-password-link{text-decoration:underline}.users-header-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.users-container h1{margin:10px 0 0 15px;height:40px}.users-container .cell{word-break:break-word}.users-container .el-table__row:hover{cursor:pointer}.users-container .pagination{margin:25px 0;text-align:center}.users-container .reboot-button{margin:0 15px 0 0;padding:10px;width:145px}.users-container .search{width:350px;float:right;margin-left:10px}.users-container .filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px}.users-container .user-count{color:grey;font-size:28px}@media only screen and (max-width:480px){.password-reset-token-dialog{width:85%}.users-container h1{margin:0}.users-container .actions-button{width:100%}.users-container .actions-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0 10px 7px}.users-container .el-icon-arrow-down{font-size:12px}.users-container .search{width:100%;margin-left:0}.users-container .filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0 10px}.users-container .el-table__row .el-tag{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:30px;margin-bottom:4px;font-weight:700}.users-container .reboot-button{margin:0}.users-container .users-header-container{margin:7px 10px 12px}.users-container .user-count{color:grey;font-size:22px}}@media only screen and (max-width:801px) and (min-width:481px){.actions-button,.search{width:49%}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-39ad.ba67c97f.css b/priv/static/adminfe/chunk-39ad.ba67c97f.css deleted file mode 100644 index 778a932cf..000000000 --- a/priv/static/adminfe/chunk-39ad.ba67c97f.css +++ /dev/null @@ -1 +0,0 @@ -.status-card{margin-bottom:10px;cursor:pointer}.status-card .account{line-height:26px;font-size:13px;color:#606266}.status-card .account:hover{text-decoration:underline}.status-card .deactivated{color:grey;line-height:28px;vertical-align:middle}.status-card .image{width:20%}.status-card .image img{width:100%}.status-card .router-link{text-decoration:none}.status-card .show-more-button{margin-left:5px}.status-card .status-account{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.status-card .status-avatar-img{display:inline-block;width:15px;height:15px;margin-right:5px}.status-card .status-account-name{display:inline-block;margin:0;font-size:15px;font-weight:500}.status-card .status-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.status-card .status-card-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.status-card .status-checkbox{margin-right:7px}.status-card .status-content{font-size:15px;line-height:26px}.status-card .status-created-at{font-size:13px;color:#606266}.status-card .status-deleted{font-style:italic;margin-top:3px}.status-card .status-footer,.status-card .status-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.status-card .status-tags{display:inline}.status-card .status-without-content{font-style:italic}@media only screen and (max-width:480px){.el-message{min-width:80%}.el-message-box{width:80%}.status-card .el-card__header{padding:10px 17px}.status-card .el-tag{margin:3px 0}.status-card .status-account-container{margin-bottom:5px}.status-card .status-actions-button{margin:3px 0}.status-card .status-actions{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.status-card .status-footer{margin-top:10px}.status-card .status-footer,.status-card .status-header{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.status-card .status-header{display:-webkit-box;display:-ms-flexbox;display:flex}}.moderate-user-button{text-align:left;width:350px;padding:10px}.moderate-user-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.moderate-user-button{width:100%}}.avatar-name-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.avatar-name-container .el-icon-top-right{font-size:2em;line-height:36px;color:#606266}.avatar-name-header{display:-webkit-box;display:-ms-flexbox;display:flex;height:40px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.invalid{color:grey}.no-statuses{margin-left:28px;color:#606266}.password-reset-token{margin:0 0 14px}.password-reset-token-dialog{width:50%}.reboot-button{padding:10px;margin-left:6px}.recent-statuses-container-show{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.recent-statuses-container-show .el-timeline-item,.recent-statuses-container-show .recent-statuses{margin-left:20px}.recent-statuses-container-show .show-private-statuses{margin-left:20px;margin-bottom:20px}.reset-password-link{text-decoration:underline}.router-link{text-decoration:none}.status-container{margin:0 15px 0 20px}.statuses{padding:0 20px 0 0}.user-page-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:22px 15px 22px 20px;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.user-page-header h1{display:inline;margin:0 0 0 10px}@media only screen and (min-width:1824px){.status-show-container{max-width:1824px;margin:auto}}@media only screen and (max-width:480px){.avatar-name-container{margin-bottom:10px}.el-timeline-item__wrapper{padding-left:18px}.left-header-container{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.password-reset-token-dialog{width:85%}.recent-statuses{margin:20px 10px 15px}.recent-statuses-container-show{width:100%;margin:0 0 0 10px}.recent-statuses-container-show .el-timeline-item,.recent-statuses-container-show .recent-statuses{margin-left:0}.recent-statuses-container-show .show-private-statuses{margin:0 10px 20px 0}.status-card .el-card__body{padding:15px}.status-container{margin:0 10px}.statuses{padding-right:10px;margin-left:0}.statuses .el-timeline-item__wrapper{margin-right:10px}.user-page-header{padding:0;margin:7px 15px 5px 10px}.status-page-header-container{width:100%}.status-page-header-container .el-dropdown{width:-webkit-fill-available;width:-moz-available;width:stretch;margin:0 10px 15px}}@media only screen and (max-width:801px) and (min-width:481px){.recent-statuses-container-show{width:97%;margin:0 20px}.recent-statuses-container-show .el-timeline-item{margin-left:2px}.recent-statuses-container-show .recent-statuses{margin:20px 10px 15px 0}.recent-statuses-container-show .show-private-statuses,.show-private-statuses{margin:0 10px 20px 0}.user-page-header{padding:0;margin:7px 15px 20px 20px}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-3ba2.63b1228d.css b/priv/static/adminfe/chunk-3ba2.63b1228d.css deleted file mode 100644 index b375f08d5..000000000 --- a/priv/static/adminfe/chunk-3ba2.63b1228d.css +++ /dev/null @@ -1 +0,0 @@ -a{text-decoration:underline}.note-header{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;height:40px}.note-actor{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.note-actor-name{margin:0;height:28px}.note-avatar-img{width:15px;height:15px;margin-right:5px}.note-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.note-card{margin-bottom:15px}.note-content,.note-header{font-size:15px}.note-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:28px;font-weight:500}@media only screen and (max-width:480px){.el-card__header{padding:10px 17px}.note-header{height:65px}.note-actor{margin-bottom:5px}.note-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}}.status-card{margin-bottom:10px;cursor:pointer}.status-card .account{line-height:26px;font-size:13px;color:#606266}.status-card .account:hover{text-decoration:underline}.status-card .deactivated{color:grey;line-height:28px;vertical-align:middle}.status-card .image{width:20%}.status-card .image img{width:100%}.status-card .router-link{text-decoration:none}.status-card .show-more-button{margin-left:5px}.status-card .status-account{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.status-card .status-avatar-img{display:inline-block;width:15px;height:15px;margin-right:5px}.status-card .status-account-name{display:inline-block;margin:0;font-size:15px;font-weight:500}.status-card .status-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.status-card .status-card-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.status-card .status-checkbox{margin-right:7px}.status-card .status-content{font-size:15px;line-height:26px}.status-card .status-created-at{font-size:13px;color:#606266}.status-card .status-deleted{font-style:italic;margin-top:3px}.status-card .status-footer,.status-card .status-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.status-card .status-tags{display:inline}.status-card .status-without-content{font-style:italic}@media only screen and (max-width:480px){.el-message{min-width:80%}.el-message-box{width:80%}.status-card .el-card__header{padding:10px 17px}.status-card .el-tag{margin:3px 0}.status-card .status-account-container{margin-bottom:5px}.status-card .status-actions-button{margin:3px 0}.status-card .status-actions{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.status-card .status-footer{margin-top:10px}.status-card .status-footer,.status-card .status-header{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.status-card .status-header{display:-webkit-box;display:-ms-flexbox;display:flex}}h4{margin:0;height:17px}.account{line-height:26px;font-size:13px;color:#606266}.account:hover{text-decoration:underline}.avatar-img{vertical-align:bottom;width:15px;height:15px}.divider{margin:15px 0}.deactivated{color:grey}.el-card__body{padding:17px}.el-card__header{background-color:#fafafa;padding:10px 20px}.el-collapse{border-bottom:none}.el-collapse-item__header{height:46px;font-size:14px}.el-collapse-item__content{padding-bottom:7px}.el-icon-arrow-right{margin-right:6px}.id{color:grey;margin-top:6px}.line{width:100%;height:0;border:.5px solid #ebeef5;margin:15px 0}.new-note p{font-size:14px;font-weight:500;height:17px;margin:13px 0 7px}.note{-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.1);box-shadow:0 2px 5px 0 rgba(0,0,0,.1);margin-bottom:10px}.no-notes{font-style:italic;color:grey}.report .report-header-container{height:40px}.report-account,.report .report-header-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.report-account{-webkit-box-flex:2;-ms-flex-positive:2;flex-grow:2}.report-account-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.report-account-name{font-size:15px;font-weight:500}.report-row-key{font-size:14px;font-weight:500;padding-right:5px}.report-title{margin:0}.report-note-form{margin:15px 0 0}.report-post-note{margin:5px 0 0;text-align:right}.reports-pagination{margin:25px 0;text-align:center}.reports-timeline{margin:30px 45px 45px 19px;padding:0}.router-link{text-decoration:none}.reported-statuses{margin-top:15px}.submit-button{display:block;margin:7px 0 17px auto}.timestamp{margin:0;font-style:italic;color:grey}@media only screen and (max-width:480px){.report .report-header-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;height:auto}.report .id{margin:6px 0 0}.report .report-actions-button,.report .report-tag{margin:3px 0 6px}.report .title-container{margin-bottom:7px}.reports-timeline{margin:20px 10px}.reports-timeline .el-timeline-item__wrapper{padding-left:20px}}.select-field[data-v-5ab7c15a]{width:350px}@media only screen and (max-width:480px){.select-field[data-v-5ab7c15a]{width:100%;margin-bottom:5px}}@media only screen and (max-width:801px) and (min-width:481px){.select-field[data-v-5ab7c15a]{width:50%}}.reports-container .reboot-button[data-v-fa601560]{padding:10px;margin:0;width:145px}.reports-container .reports-filter-container[data-v-fa601560]{margin:15px 45px 22px 15px;padding-bottom:0}.reports-container .reports-filter-container[data-v-fa601560],.reports-container .reports-header-container[data-v-fa601560]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.reports-container .reports-header-container[data-v-fa601560]{margin:10px 15px}.reports-container h1[data-v-fa601560]{margin:0}.reports-container .no-reports-message[data-v-fa601560]{color:grey;margin-left:19px}.reports-container .report-count[data-v-fa601560]{color:grey;font-size:28px}@media only screen and (max-width:480px){.reports-container h1[data-v-fa601560]{margin:7px 10px 15px}.reports-container .reboot-button[data-v-fa601560]{margin:0 0 5px 10px;width:145px}.reports-container .report-count[data-v-fa601560]{font-size:22px}.reports-container .reports-filter-container[data-v-fa601560]{margin:0 10px}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-4eb4.b72d16c3.css b/priv/static/adminfe/chunk-4eb4.b72d16c3.css deleted file mode 100644 index 1ecdec162..000000000 --- a/priv/static/adminfe/chunk-4eb4.b72d16c3.css +++ /dev/null @@ -1 +0,0 @@ -.status-card{margin-bottom:10px;cursor:pointer}.status-card .account{line-height:26px;font-size:13px;color:#606266}.status-card .account:hover{text-decoration:underline}.status-card .deactivated{color:grey;line-height:28px;vertical-align:middle}.status-card .image{width:20%}.status-card .image img{width:100%}.status-card .router-link{text-decoration:none}.status-card .show-more-button{margin-left:5px}.status-card .status-account{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.status-card .status-avatar-img{display:inline-block;width:15px;height:15px;margin-right:5px}.status-card .status-account-name{display:inline-block;margin:0;font-size:15px;font-weight:500}.status-card .status-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.status-card .status-card-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.status-card .status-checkbox{margin-right:7px}.status-card .status-content{font-size:15px;line-height:26px}.status-card .status-created-at{font-size:13px;color:#606266}.status-card .status-deleted{font-style:italic;margin-top:3px}.status-card .status-footer,.status-card .status-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.status-card .status-tags{display:inline}.status-card .status-without-content{font-style:italic}@media only screen and (max-width:480px){.el-message{min-width:80%}.el-message-box{width:80%}.status-card .el-card__header{padding:10px 17px}.status-card .el-tag{margin:3px 0}.status-card .status-account-container{margin-bottom:5px}.status-card .status-actions-button{margin:3px 0}.status-card .status-actions{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.status-card .status-footer{margin-top:10px}.status-card .status-footer,.status-card .status-header{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.status-card .status-header{display:-webkit-box;display:-ms-flexbox;display:flex}}.statuses-container{padding:0 15px}.statuses-container h1{margin:10px 0 15px}.statuses-container .status-container{margin:0 0 10px}.statuses-header-container .el-button.is-plain:focus,.statuses-header-container .el-button.is-plain:hover{border-color:#dcdfe6;color:#606266;cursor:default}.checkbox-container{margin-bottom:15px}.filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:22px 0 15px}.reboot-button{padding:10px;margin:0;width:145px}.select-instance{width:396px}.statuses-header,.statuses-header-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.statuses-pagination{padding:15px 0;text-align:center}@media only screen and (max-width:480px){.checkbox-container{margin-bottom:10px}.filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:10px 0}.select-field{width:100%;margin-bottom:5px}.select-instance{width:100%}.statuses-header-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.statuses-header-container .el-button-group{width:100%}.statuses-header-container .el-button{padding:10px 6.5px;width:50%}.statuses-header-container .el-button-group>.el-button:first-child{border-bottom-left-radius:0}.statuses-header-container .el-button-group>.el-button:not(:first-child):not(:last-child).private-button{border-top-right-radius:4px}.statuses-header-container .el-button-group>.el-button:not(:first-child):not(:last-child).public-button{border-bottom-left-radius:4px;border-top:#fff}.statuses-header-container .el-button-group>.el-button:last-child{border-top-right-radius:0;border-top:#fff}.statuses-header-container .reboot-button{margin:10px 0 0}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-521f.b745ee5d.css b/priv/static/adminfe/chunk-521f.b745ee5d.css new file mode 100644 index 000000000..7e8ffb651 --- /dev/null +++ b/priv/static/adminfe/chunk-521f.b745ee5d.css @@ -0,0 +1 @@ +.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided.actor-type-dropdown:before{margin:0;height:0}.el-dropdown-menu--small .actor-type-dropdown{padding:0}.actor-type-select{width:100%}.actor-type-select input{border-color:transparent;color:#606266}.actor-type-select .el-input__inner:hover{border-color:transparent;background-color:#ecf5ff}.actor-type-select .el-input.is-focus{border-color:transparent}.actor-type-select .el-input__suffix-inner{pointer-events:none}.actor-type-select .el-input.is-active .el-input__inner,.actor-type-select .el-input.is-focus .el-input__inner,.actor-type-select .el-input__inner:focus,.actor-type-select .el-select .el-input__inner:focus{border-color:transparent}.moderate-user-button{text-align:left;width:350px;padding:10px}.moderate-user-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.moderation-dropdown-menu{width:350px}@media only screen and (max-width:480px){.moderate-user-button{width:100%}.moderation-dropdown-menu{width:auto}}.security-settings-container{display:-webkit-box;display:-ms-flexbox;display:flex}.security-settings-container label{width:15%;height:36px}.security-settings-modal .el-dialog__body{padding-top:10px}.security-settings-modal .el-form-item,.security-settings-modal .password-alert{margin-bottom:15px}.security-settings-modal .password-input{margin-bottom:0}.security-settings-submit-button{float:right}@media (max-width:800px){.security-settings-modal .el-dialog{width:90%}}.security-settings-modal .el-alert .el-alert__description{word-break:break-word;font-size:1em}.security-settings-modal .form-text{display:block;margin-top:.25rem;color:#909399}header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;margin:22px 0;padding-left:15px}header h1{margin:0 0 0 10px}table{margin:10px 0 0 15px}table .name-col{width:150px}.avatar-name-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.avatar-name-container .el-icon-top-right{font-size:2em;line-height:36px;color:#606266}.invalid{color:grey}.el-table--border:after,.el-table--group:after,.el-table:before{background-color:transparent}.image{width:20%}.image img{width:100%}.invalid-user-tag{font-size:14px;width:inherit;height:auto;text-align:center;word-wrap:break-word;white-space:normal}.left-header-container{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.no-statuses{margin-left:28px;color:#606266}.password-reset-token{margin:0 0 14px}.password-reset-token-dialog{width:50%}.poll ul{list-style-type:none;padding:0;width:30%}.reboot-button{padding:10px;margin-left:10px}.recent-statuses-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:67%}.recent-statuses-header{margin-top:10px}.reset-password-link{text-decoration:underline}.security-setting-button{margin-top:20px;width:100%}.statuses{padding:0 20px 0 0}.show-private{width:200px;text-align:left;line-height:67px;margin-right:20px}.show-private-statuses{margin-left:28px;margin-bottom:20px}.recent-statuses{margin-left:28px}.user-page-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:22px 15px 22px 20px;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.user-page-header h1{display:inline}.user-profile-card{margin:0 20px;width:30%;min-width:300px;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.user-profile-container{display:-webkit-box;display:-ms-flexbox;display:flex}.user-profile-table{margin:0;width:inherit}.user-profile-tag{margin:0 4px 4px 0}.reason-label{color:#878d99;font-weight:700;margin:5px 0}@media only screen and (max-width:480px){.avatar-name-container{margin-bottom:10px}.el-timeline-item__wrapper{padding-left:18px}.password-reset-token-dialog{width:85%}.recent-statuses{margin:20px 10px 15px}.recent-statuses-container{width:100%;margin:0}.show-private-statuses{margin:0 10px 20px}.status-container{margin:0 10px}.statuses{padding-right:10px;margin-left:8px}.user-page-header{padding:0;margin:7px 15px 15px 10px}.user-page-header-container .el-dropdown{width:95%;margin:0 15px 15px 10px}.user-profile-card{margin:0 10px;width:95%}.user-profile-card td{width:80px}.user-profile-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media only screen and (max-width:801px) and (min-width:481px){.recent-statuses{margin:20px 10px 15px 0}.recent-statuses-container{width:97%;margin:0 20px}.show-private-statuses{margin:0 10px 20px 0}.user-page-header{padding:0;margin:7px 15px 20px 20px}.user-profile-card{margin:0 20px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.user-profile-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-546f.692d1ab2.css b/priv/static/adminfe/chunk-546f.692d1ab2.css new file mode 100644 index 000000000..5fcb223d8 --- /dev/null +++ b/priv/static/adminfe/chunk-546f.692d1ab2.css @@ -0,0 +1 @@ +.copy-popover{width:330px}.copy-to-local-pack-button{margin-top:15px;float:right}.emoji-buttons{place-self:center;min-width:200px}.emoji-container-grid{display:grid;grid-template-columns:75px 1fr 1fr 200px;grid-column-gap:15px;margin-bottom:10px}.emoji-preview-img{max-width:100%;place-self:center}.emoji-info{place-self:center}.copy-pack-container{place-self:center stretch}.copy-pack-select{width:100%}.remote-emoji-container-grid{display:grid;grid-template-columns:75px 1fr 1fr 160px;grid-column-gap:15px;margin-bottom:10px}@media only screen and (max-width:480px){.emoji-container-flex{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border:1px solid #dcdfe6;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;padding:15px;margin:0 15px 15px 0}.emoji-info,.emoji-preview-img{margin-bottom:10px}.emoji-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100%}.emoji-buttons button{padding:10px 5px;width:47%}}@media only screen and (max-width:801px) and (min-width:481px){.emoji-container-grid{grid-column-gap:10px}.emoji-buttons .el-button+.el-button{margin-left:5px}.remote-emoji-container-grid{grid-column-gap:10px}}.add-new-emoji{height:36px;font-size:14px;font-weight:700;color:#606266}.text{line-height:20px;margin-right:15px}.upload-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.upload-button{margin-left:10px}.upload-file-url{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.new-emoji-uploader-form label.el-form-item__label{padding:0}}.emoji-table-head{color:#909399;font-size:14px;font-weight:700}.download-archive{width:250px}.download-pack-button-container{width:265px}.download-pack-button-container .el-link,.download-pack-button-container .el-link span,.download-pack-button-container .el-link span .download-archive{width:inherit}.download-shared-pack{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.download-shared-pack-button{margin-left:10px}.el-collapse-item__content{padding-bottom:0}.el-collapse-item__header{height:36px;font-size:14px;font-weight:700;color:#606266}.emoji-pack-card{margin-top:5px}.emoji-pack-metadata .el-form-item{margin-bottom:10px}.files-pagination{margin:25px 0;text-align:center}.has-background .el-collapse-item__header{background:#f6f6f6}.no-background .el-collapse-item__header{background:#fff}.pack-button-container{margin:0 0 18px 120px}.save-pack-button-container{margin-bottom:8px;width:265px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.delete-pack-button{width:45%}.download-pack-button-container{width:100%}.download-shared-pack{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.download-shared-pack-button{margin-left:0;margin-top:10px;padding:10px}.pack-button-container{width:100%;margin:0 0 22px}.remote-pack-metadata .el-form-item__content{line-height:24px;margin-top:4px}.save-pack-button{width:54%}.save-pack-button-container{margin-bottom:8px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.save-pack-button-container button{padding:10px 5px}.save-pack-button-container .el-button+.el-button{margin-left:3px}}.create-pack{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.create-pack-button{margin-left:10px}.emoji-header-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:0 15px 22px}.emoji-name-warning{color:#666;font-size:13px;line-height:22px;margin:5px 0 0;overflow-wrap:break-word;overflow:hidden;text-overflow:ellipsis}.emoji-packs-header-button-container{display:-webkit-box;display:-ms-flexbox;display:flex}.emoji-packs-form{margin-top:15px}.emoji-packs-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:10px 15px 15px}.emoji-packs-tabs{margin:0 15px 15px}.import-pack-button{margin-left:10px;width:30%;max-width:700px}h1{margin:0}.line{width:100%;height:0;border:1px solid #eee;margin-bottom:22px}.pagination{margin:25px 0;text-align:center}.reboot-button{padding:10px;margin:0;width:145px}@media only screen and (min-width:1824px){.emoji-packs{max-width:1824px;margin:auto}}@media only screen and (max-width:480px){.create-pack{height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.create-pack-button{margin-left:0}.divider{margin:15px 0}.el-message{min-width:80%}.el-message-box{width:80%}.emoji-header-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.emoji-packs-form{margin:0 7px}.emoji-packs-form label{padding-right:8px}.emoji-packs-form .el-form-item{margin-bottom:15px}.emoji-packs-header{margin:15px}.emoji-packs-header-button-container{height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.emoji-packs-header-button-container .el-button+.el-button{margin:7px 0 0;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.import-pack-button{width:90%}.reload-emoji-button{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-565e.8c036a6e.css b/priv/static/adminfe/chunk-565e.8c036a6e.css deleted file mode 100644 index c126f246e..000000000 --- a/priv/static/adminfe/chunk-565e.8c036a6e.css +++ /dev/null @@ -1 +0,0 @@ -.image-upload-area .input-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.image-upload-area .input-file{z-index:100;position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.image-upload-area .image-button-group{margin-top:20px}.image-upload-area .image-button-group .upload-button,.image-upload-area .image-upload-wrapper{position:relative}.image-upload-area .image-upload-wrapper .image-upload-overlay{border-radius:5px}.image-upload-area .image-upload-wrapper .image-upload-overlay,.image-upload-area .image-upload-wrapper .image-upload-overlay .caption{-webkit-transition:-webkit-box-shadow .1s;transition:-webkit-box-shadow .1s;transition:box-shadow .1s;transition:box-shadow .1s,-webkit-box-shadow .1s}.image-upload-area .image-upload-wrapper .image-upload-overlay .caption{visibility:hidden;position:absolute;top:0;bottom:0;right:0;left:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-weight:700;font-size:10px;text-transform:uppercase;color:#fff;z-index:9}.image-upload-area .image-upload-wrapper .image-upload-overlay .uploaded-image{border-radius:5px;-webkit-box-shadow:0 2px 10px 0 rgba(0,0,0,.1);box-shadow:0 2px 10px 0 rgba(0,0,0,.1)}.image-upload-area .image-upload-wrapper .image-upload-overlay:hover{visibility:visible;cursor:pointer;border-radius:5px}.image-upload-area .image-upload-wrapper .image-upload-overlay:hover .el-image__error{visibility:hidden}.image-upload-area .image-upload-wrapper .image-upload-overlay:hover .caption{visibility:visible;-webkit-box-shadow:0 2px 10px 0 rgba(0,0,0,.1),inset 0 0 120px 25px rgba(0,0,0,.8);box-shadow:0 2px 10px 0 rgba(0,0,0,.1),inset 0 0 120px 25px rgba(0,0,0,.8);border-radius:5px}a{text-decoration:underline}.center-label label{text-align:center}.center-label label span{float:left}.code{background-color:rgba(173,190,214,.48);border-radius:3px;font-family:monospace;padding:0 3px}.delete-setting-button{margin-left:5px}.description-container{overflow-wrap:break-word}.description-container .el-form-item__content{line-height:20px}.divider{margin:0 0 18px}.divider.thick-line{height:2px}.docs-search-container{float:right;margin-right:30px}.editable-keyword-container{width:100%}.el-form-item .rate-limit{margin-right:0}.el-input-group__prepend{padding-left:10px;padding-right:10px}.el-tabs__header{z-index:2002}.email-address-input{width:50%;margin-right:10px}.esshd-list{margin:0}.expl,.expl>p{color:#666;font-size:13px;line-height:22px;margin:5px 0 0;overflow-wrap:break-word;overflow:hidden;text-overflow:ellipsis}.expl>p code,.expl code{display:inline;line-height:22px;font-size:13px;padding:2px 3px}.follow-relay{width:350px;margin-right:7px}.form-container{margin-bottom:80px}.grouped-settings-header{margin:0 0 14px}.highlight{background-color:#e6e6e6}.icons-button-container{width:100%;margin-bottom:10px}.icons-button-desc{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;margin-left:5px}.icon-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:95%}.icon-values-container{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 10px 10px 0}.icon-key-input{width:30%;margin-right:8px}.icon-minus-button{width:36px;height:36px}.icon-value-input{width:70%;margin-left:8px}.icons-container,.input-container{display:-webkit-box;display:-ms-flexbox;display:flex}.input-container{-webkit-box-align:start;-ms-flex-align:start;align-items:start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.input-container .el-form-item{margin-right:30px;width:100%}.input-container .el-select,.keyword-container{width:100%}label{overflow:hidden;text-overflow:ellipsis}.label-font{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700}.limit-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.limit-expl{margin-left:10px}.limit-input{width:47%;margin:0 0 5px 1%}.line{width:100%;height:0;border:1px solid #eee;margin-bottom:18px}.mascot{margin-bottom:15px}.mascot-container{width:100%}.mascot-input{margin-bottom:7px}.mascot-name-container{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:7px}.mascot-name-input{margin-right:10px}.multiple-select-container{width:100%}.name-input{width:30%;margin-right:8px}.nickname-input{width:50%}.no-top-margin{margin-top:0}.no-top-margin p{margin-right:30px}.pattern-input{width:20%;margin-right:8px}.proxy-url-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px;width:100%}.proxy-url-host-input{width:35%;margin-right:8px}.proxy-url-value-input{width:35%;margin-left:8px;margin-right:10px}.prune-options{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.prune-options .el-radio{margin-top:11px}.rate-limit .el-form-item__content{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.rate-limit-container{width:100%}.rate-limit-content{width:70%}.rate-limit-label{float:right}.rate-limit-label-container{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;width:30%;margin-right:10px}.reboot-button{width:145px;text-align:left;padding:10px;float:right;margin:0 30px 0 0}.reboot-button-container{width:100%;position:fixed;top:60px;right:0;z-index:2000}.relays-container{margin:0 15px}.replacement-input{width:80%;margin-left:8px;margin-right:10px}.sender-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px;width:100%}.scale-input{width:47%;margin:0 1% 5px 0}.setting-input{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.setting-label{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;line-height:20px;margin:0 0 14px}.settings-container{max-width:1824px;margin:auto}.settings-container .el-tabs{margin-top:20px}.settings-delete-button{margin-left:5px}.settings-docs-button{min-width:163px;text-align:left;padding:10px}.settings-header{margin:10px 15px 15px}.header-sidebar-opened{max-width:1585px}.header-sidebar-closed{max-width:1728px}.settings-header-container{height:87px}.settings-search-input{width:350px;margin-left:5px}.single-input{margin-right:10px}.socks5-checkbox{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;margin-left:10px}.socks5-checkbox-container{width:40%;height:36px;margin-right:5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ssl-tls-opts{margin:36px 0 0}.submit-button{float:right;margin:0 30px 22px 0}.submit-button-container{width:100%;position:fixed;bottom:0;right:0;z-index:2000}.switch-input{height:36px}.text{line-height:20px;margin-right:15px}.upload-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.value-input{width:70%;margin-left:8px;margin-right:10px}@media only screen and (min-width:1824px){.header-sidebar-closed{max-width:1772px}.header-sidebar-opened{max-width:1630px}.reboot-button-container{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}.reboot-sidebar-opened{max-width:1630px}.reboot-sidebar-closed{max-width:1772px}.sidebar-closed{max-width:1586px}.sidebar-opened{max-width:1442px}.submit-button-container{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}}@media only screen and (max-width:480px){.crontab,.crontab label{width:100%}.delete-setting-button{margin:4px 0 0 5px;height:28px}.delete-setting-button-container{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p{line-height:18px;margin:0 5px 7px 15px}.description>p code{display:inline;line-height:18px;padding:2px 3px;font-size:14px}.description-container{margin:0 15px 22px}.divider{margin:0 0 10px}.divider .thick-line{height:2px}.follow-relay{width:75%;margin-right:5px}.follow-relay input{width:100%}.follow-relay-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:0 5px}h1{font-size:24px}.input{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container{width:100%}.input-container .el-form-item:first-child{margin:0;padding:0 15px 10px}.input-container .el-form-item.crontab-container:first-child{margin:0;padding:0}.input-container .el-form-item:first-child .mascot-form-item,.input-container .el-form-item:first-child .rate-limit{padding:0}.input-container .settings-delete-button{margin-top:4px;float:right}.input-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.label-with-margin{margin-left:15px}.limit-input{width:45%}.nav-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px}.proxy-url-input{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-bottom:0}.proxy-url-host-input{width:100%;margin-bottom:5px}.proxy-url-value-input{width:100%;margin-left:0}.prune-options{height:80px}.prune-options,.rate-limit .el-form-item__content{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.rate-limit-content{width:100%}.rate-limit-label{float:left}.rate-limit-label-container{width:100%}.reboot-button{margin:0 15px 0 0}.reboot-button-container{top:57px}.scale-input{width:45%}.settings-header{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;display:inline-block;margin:10px 15px 15px}.docs-search-container{float:right}.settings-search-input{width:100%;margin-left:0}.settings-search-input-container{margin:0 15px 15px}.settings-menu{width:163px;margin-right:5px}.socks5-checkbox-container{width:100%}.submit-button{margin:0 15px 22px 0}.el-input__inner{padding:0 5px}.el-form-item__label:not(.no-top-margin){padding-bottom:5px;line-height:22px;margin-top:7px;width:100%;pointer-events:none}.el-form-item__label:not(.no-top-margin) span{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.el-form-item__label:not(.no-top-margin) button{pointer-events:auto}.el-message{min-width:80%}.el-message-box{width:80%}.el-select__tags{overflow:hidden}.expl,.expl>p{line-height:16px}.icon-key-input{width:40%;margin-right:4px}.icon-minus-button{width:28px;height:28px;margin-top:4px}.icon-values-container{margin:0 7px 7px 0}.icon-value-input{width:60%;margin-left:4px}.icons-button-container{line-height:24px}.line{margin-bottom:10px}.mascot-form-item .el-form-item__label:not(.no-top-margin){margin:0;padding:0}.mascot-container{margin-bottom:5px}.name-input{width:40%;margin-right:5px}p.expl{line-height:20px}.pattern-input{width:40%;margin-right:4px}.relays-container{margin:0 10px}.replacement-input{width:60%;margin-left:4px;margin-right:5px}.settings-header-container{height:45px}.value-input{width:60%;margin-left:5px;margin-right:8px}}@media only screen and (max-width:818px) and (min-width:481px){.delete-setting-button{margin:4px 0 0 10px;height:28px}.delete-setting-button-container{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p{line-height:18px;margin:0 15px 10px 0}.icon-minus-button{width:28px;height:28px;margin-top:4px}.input{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container .el-form-item__label span{margin-left:10px}.input-row,.nav-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.nav-container{height:36px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px 30px 15px 15px}.rate-limit-content{width:65%}.rate-limit-label-container{width:35%}.settings-delete-button{float:right}.settings-header-container{height:36px}.settings-search-input{width:250px;margin:0 0 15px 15px}}a[data-v-82f78b3e]{text-decoration:underline}.center-label label[data-v-82f78b3e]{text-align:center}.center-label label span[data-v-82f78b3e]{float:left}.code[data-v-82f78b3e]{background-color:rgba(173,190,214,.48);border-radius:3px;font-family:monospace;padding:0 3px}.delete-setting-button[data-v-82f78b3e]{margin-left:5px}.description-container[data-v-82f78b3e]{overflow-wrap:break-word}.description-container .el-form-item__content[data-v-82f78b3e]{line-height:20px}.divider[data-v-82f78b3e]{margin:0 0 18px}.divider.thick-line[data-v-82f78b3e]{height:2px}.docs-search-container[data-v-82f78b3e]{float:right;margin-right:30px}.editable-keyword-container[data-v-82f78b3e]{width:100%}.el-form-item .rate-limit[data-v-82f78b3e]{margin-right:0}.el-input-group__prepend[data-v-82f78b3e]{padding-left:10px;padding-right:10px}.el-tabs__header[data-v-82f78b3e]{z-index:2002}.email-address-input[data-v-82f78b3e]{width:50%;margin-right:10px}.esshd-list[data-v-82f78b3e]{margin:0}.expl>p[data-v-82f78b3e],.expl[data-v-82f78b3e]{color:#666;font-size:13px;line-height:22px;margin:5px 0 0;overflow-wrap:break-word;overflow:hidden;text-overflow:ellipsis}.expl>p code[data-v-82f78b3e],.expl code[data-v-82f78b3e]{display:inline;line-height:22px;font-size:13px;padding:2px 3px}.follow-relay[data-v-82f78b3e]{width:350px;margin-right:7px}.form-container[data-v-82f78b3e]{margin-bottom:80px}.grouped-settings-header[data-v-82f78b3e]{margin:0 0 14px}.highlight[data-v-82f78b3e]{background-color:#e6e6e6}.icons-button-container[data-v-82f78b3e]{width:100%;margin-bottom:10px}.icons-button-desc[data-v-82f78b3e]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;margin-left:5px}.icon-container[data-v-82f78b3e]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:95%}.icon-values-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 10px 10px 0}.icon-key-input[data-v-82f78b3e]{width:30%;margin-right:8px}.icon-minus-button[data-v-82f78b3e]{width:36px;height:36px}.icon-value-input[data-v-82f78b3e]{width:70%;margin-left:8px}.icons-container[data-v-82f78b3e],.input-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex}.input-container[data-v-82f78b3e]{-webkit-box-align:start;-ms-flex-align:start;align-items:start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.input-container .el-form-item[data-v-82f78b3e]{margin-right:30px;width:100%}.input-container .el-select[data-v-82f78b3e],.keyword-container[data-v-82f78b3e]{width:100%}label[data-v-82f78b3e]{overflow:hidden;text-overflow:ellipsis}.label-font[data-v-82f78b3e]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700}.limit-button-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.limit-expl[data-v-82f78b3e]{margin-left:10px}.limit-input[data-v-82f78b3e]{width:47%;margin:0 0 5px 1%}.line[data-v-82f78b3e]{width:100%;height:0;border:1px solid #eee;margin-bottom:18px}.mascot[data-v-82f78b3e]{margin-bottom:15px}.mascot-container[data-v-82f78b3e]{width:100%}.mascot-input[data-v-82f78b3e]{margin-bottom:7px}.mascot-name-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:7px}.mascot-name-input[data-v-82f78b3e]{margin-right:10px}.multiple-select-container[data-v-82f78b3e]{width:100%}.name-input[data-v-82f78b3e]{width:30%;margin-right:8px}.nickname-input[data-v-82f78b3e]{width:50%}.no-top-margin[data-v-82f78b3e]{margin-top:0}.no-top-margin p[data-v-82f78b3e]{margin-right:30px}.pattern-input[data-v-82f78b3e]{width:20%;margin-right:8px}.proxy-url-input[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px;width:100%}.proxy-url-host-input[data-v-82f78b3e]{width:35%;margin-right:8px}.proxy-url-value-input[data-v-82f78b3e]{width:35%;margin-left:8px;margin-right:10px}.prune-options[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.prune-options .el-radio[data-v-82f78b3e]{margin-top:11px}.rate-limit .el-form-item__content[data-v-82f78b3e]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.rate-limit-container[data-v-82f78b3e]{width:100%}.rate-limit-content[data-v-82f78b3e]{width:70%}.rate-limit-label[data-v-82f78b3e]{float:right}.rate-limit-label-container[data-v-82f78b3e]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;width:30%;margin-right:10px}.reboot-button[data-v-82f78b3e]{width:145px;text-align:left;padding:10px;float:right;margin:0 30px 0 0}.reboot-button-container[data-v-82f78b3e]{width:100%;position:fixed;top:60px;right:0;z-index:2000}.relays-container[data-v-82f78b3e]{margin:0 15px}.replacement-input[data-v-82f78b3e]{width:80%;margin-left:8px;margin-right:10px}.sender-input[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px;width:100%}.scale-input[data-v-82f78b3e]{width:47%;margin:0 1% 5px 0}.setting-input[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.setting-label[data-v-82f78b3e]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;line-height:20px;margin:0 0 14px}.settings-container[data-v-82f78b3e]{max-width:1824px;margin:auto}.settings-container .el-tabs[data-v-82f78b3e]{margin-top:20px}.settings-delete-button[data-v-82f78b3e]{margin-left:5px}.settings-docs-button[data-v-82f78b3e]{min-width:163px;text-align:left;padding:10px}.settings-header[data-v-82f78b3e]{margin:10px 15px 15px}.header-sidebar-opened[data-v-82f78b3e]{max-width:1585px}.header-sidebar-closed[data-v-82f78b3e]{max-width:1728px}.settings-header-container[data-v-82f78b3e]{height:87px}.settings-search-input[data-v-82f78b3e]{width:350px;margin-left:5px}.single-input[data-v-82f78b3e]{margin-right:10px}.socks5-checkbox[data-v-82f78b3e]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;margin-left:10px}.socks5-checkbox-container[data-v-82f78b3e]{width:40%;height:36px;margin-right:5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ssl-tls-opts[data-v-82f78b3e]{margin:36px 0 0}.submit-button[data-v-82f78b3e]{float:right;margin:0 30px 22px 0}.submit-button-container[data-v-82f78b3e]{width:100%;position:fixed;bottom:0;right:0;z-index:2000}.switch-input[data-v-82f78b3e]{height:36px}.text[data-v-82f78b3e]{line-height:20px;margin-right:15px}.upload-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.value-input[data-v-82f78b3e]{width:70%;margin-left:8px;margin-right:10px}@media only screen and (min-width:1824px){.header-sidebar-closed[data-v-82f78b3e]{max-width:1772px}.header-sidebar-opened[data-v-82f78b3e]{max-width:1630px}.reboot-button-container[data-v-82f78b3e]{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}.reboot-sidebar-opened[data-v-82f78b3e]{max-width:1630px}.reboot-sidebar-closed[data-v-82f78b3e]{max-width:1772px}.sidebar-closed[data-v-82f78b3e]{max-width:1586px}.sidebar-opened[data-v-82f78b3e]{max-width:1442px}.submit-button-container[data-v-82f78b3e]{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}}@media only screen and (max-width:480px){.crontab[data-v-82f78b3e],.crontab label[data-v-82f78b3e]{width:100%}.delete-setting-button[data-v-82f78b3e]{margin:4px 0 0 5px;height:28px}.delete-setting-button-container[data-v-82f78b3e]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p[data-v-82f78b3e]{line-height:18px;margin:0 5px 7px 15px}.description>p code[data-v-82f78b3e]{display:inline;line-height:18px;padding:2px 3px;font-size:14px}.description-container[data-v-82f78b3e]{margin:0 15px 22px}.divider[data-v-82f78b3e]{margin:0 0 10px}.divider .thick-line[data-v-82f78b3e]{height:2px}.follow-relay[data-v-82f78b3e]{width:75%;margin-right:5px}.follow-relay input[data-v-82f78b3e]{width:100%}.follow-relay-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:0 5px}h1[data-v-82f78b3e]{font-size:24px}.input[data-v-82f78b3e]{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container[data-v-82f78b3e]{width:100%}.input-container .el-form-item[data-v-82f78b3e]:first-child{margin:0;padding:0 15px 10px}.input-container .el-form-item.crontab-container[data-v-82f78b3e]:first-child{margin:0;padding:0}.input-container .el-form-item:first-child .mascot-form-item[data-v-82f78b3e],.input-container .el-form-item:first-child .rate-limit[data-v-82f78b3e]{padding:0}.input-container .settings-delete-button[data-v-82f78b3e]{margin-top:4px;float:right}.input-row[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.label-with-margin[data-v-82f78b3e]{margin-left:15px}.limit-input[data-v-82f78b3e]{width:45%}.nav-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px}.proxy-url-input[data-v-82f78b3e]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-bottom:0}.proxy-url-host-input[data-v-82f78b3e]{width:100%;margin-bottom:5px}.proxy-url-value-input[data-v-82f78b3e]{width:100%;margin-left:0}.prune-options[data-v-82f78b3e]{height:80px}.prune-options[data-v-82f78b3e],.rate-limit .el-form-item__content[data-v-82f78b3e]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.rate-limit-content[data-v-82f78b3e]{width:100%}.rate-limit-label[data-v-82f78b3e]{float:left}.rate-limit-label-container[data-v-82f78b3e]{width:100%}.reboot-button[data-v-82f78b3e]{margin:0 15px 0 0}.reboot-button-container[data-v-82f78b3e]{top:57px}.scale-input[data-v-82f78b3e]{width:45%}.settings-header[data-v-82f78b3e]{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;display:inline-block;margin:10px 15px 15px}.docs-search-container[data-v-82f78b3e]{float:right}.settings-search-input[data-v-82f78b3e]{width:100%;margin-left:0}.settings-search-input-container[data-v-82f78b3e]{margin:0 15px 15px}.settings-menu[data-v-82f78b3e]{width:163px;margin-right:5px}.socks5-checkbox-container[data-v-82f78b3e]{width:100%}.submit-button[data-v-82f78b3e]{margin:0 15px 22px 0}.el-input__inner[data-v-82f78b3e]{padding:0 5px}.el-form-item__label[data-v-82f78b3e]:not(.no-top-margin){padding-bottom:5px;line-height:22px;margin-top:7px;width:100%;pointer-events:none}.el-form-item__label:not(.no-top-margin) span[data-v-82f78b3e]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.el-form-item__label:not(.no-top-margin) button[data-v-82f78b3e]{pointer-events:auto}.el-message[data-v-82f78b3e]{min-width:80%}.el-message-box[data-v-82f78b3e]{width:80%}.el-select__tags[data-v-82f78b3e]{overflow:hidden}.expl>p[data-v-82f78b3e],.expl[data-v-82f78b3e]{line-height:16px}.icon-key-input[data-v-82f78b3e]{width:40%;margin-right:4px}.icon-minus-button[data-v-82f78b3e]{width:28px;height:28px;margin-top:4px}.icon-values-container[data-v-82f78b3e]{margin:0 7px 7px 0}.icon-value-input[data-v-82f78b3e]{width:60%;margin-left:4px}.icons-button-container[data-v-82f78b3e]{line-height:24px}.line[data-v-82f78b3e]{margin-bottom:10px}.mascot-form-item .el-form-item__label[data-v-82f78b3e]:not(.no-top-margin){margin:0;padding:0}.mascot-container[data-v-82f78b3e]{margin-bottom:5px}.name-input[data-v-82f78b3e]{width:40%;margin-right:5px}p.expl[data-v-82f78b3e]{line-height:20px}.pattern-input[data-v-82f78b3e]{width:40%;margin-right:4px}.relays-container[data-v-82f78b3e]{margin:0 10px}.replacement-input[data-v-82f78b3e]{width:60%;margin-left:4px;margin-right:5px}.settings-header-container[data-v-82f78b3e]{height:45px}.value-input[data-v-82f78b3e]{width:60%;margin-left:5px;margin-right:8px}}@media only screen and (max-width:818px) and (min-width:481px){.delete-setting-button[data-v-82f78b3e]{margin:4px 0 0 10px;height:28px}.delete-setting-button-container[data-v-82f78b3e]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p[data-v-82f78b3e]{line-height:18px;margin:0 15px 10px 0}.icon-minus-button[data-v-82f78b3e]{width:28px;height:28px;margin-top:4px}.input[data-v-82f78b3e]{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container .el-form-item__label span[data-v-82f78b3e]{margin-left:10px}.input-row[data-v-82f78b3e],.nav-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.nav-container[data-v-82f78b3e]{height:36px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px 30px 15px 15px}.rate-limit-content[data-v-82f78b3e]{width:65%}.rate-limit-label-container[data-v-82f78b3e]{width:35%}.settings-delete-button[data-v-82f78b3e]{float:right}.settings-header-container[data-v-82f78b3e]{height:36px}.settings-search-input[data-v-82f78b3e]{width:250px;margin:0 0 15px 15px}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-60a9.7b5b9559.css b/priv/static/adminfe/chunk-60a9.7b5b9559.css deleted file mode 100644 index d45d79f4c..000000000 --- a/priv/static/adminfe/chunk-60a9.7b5b9559.css +++ /dev/null @@ -1 +0,0 @@ -h1[data-v-039e6dbb]{margin:0}.expl[data-v-039e6dbb]{color:#666;font-size:13px;line-height:22px;margin:5px 0 0;overflow-wrap:break-word;overflow:hidden;text-overflow:ellipsis}.banned-urls-table[data-v-039e6dbb]{margin-top:15px;margin-bottom:15px}.evict-button[data-v-039e6dbb]{margin-left:15px}.media-proxy-cache-header[data-v-039e6dbb]{margin-left:15px;margin-top:22px;font-weight:500}.media-proxy-cache-header-container[data-v-039e6dbb]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:10px 15px}.pagination[data-v-039e6dbb]{margin:25px 0;text-align:center}.remove-url-button[data-v-039e6dbb]{width:150px}.url-input[data-v-039e6dbb]{margin-right:15px}.url-input-container[data-v-039e6dbb]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;margin:15px 15px 5px}.url-input-expl[data-v-039e6dbb]{margin-left:15px}@media only screen and (max-width:480px){.url-input[data-v-039e6dbb]{width:100%;margin-bottom:5px}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-654e.b2e16b59.css b/priv/static/adminfe/chunk-654d.94689c39.css similarity index 100% rename from priv/static/adminfe/chunk-654e.b2e16b59.css rename to priv/static/adminfe/chunk-654d.94689c39.css diff --git a/priv/static/adminfe/chunk-68ea.81e11186.css b/priv/static/adminfe/chunk-68ea.81e11186.css deleted file mode 100644 index 30bf7de23..000000000 --- a/priv/static/adminfe/chunk-68ea.81e11186.css +++ /dev/null @@ -1 +0,0 @@ -.wscn-http404-container[data-v-1d6b2d2a]{-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;top:40%;left:50%}.wscn-http404[data-v-1d6b2d2a]{position:relative;width:1200px;padding:0 50px;overflow:hidden}.wscn-http404 .pic-404[data-v-1d6b2d2a]{position:relative;float:left;width:600px;overflow:hidden}.wscn-http404 .pic-404__parent[data-v-1d6b2d2a]{width:100%}.wscn-http404 .pic-404__child[data-v-1d6b2d2a]{position:absolute}.wscn-http404 .pic-404__child.left[data-v-1d6b2d2a]{width:80px;top:17px;left:220px;opacity:0;-webkit-animation-name:cloudLeft-data-v-1d6b2d2a;animation-name:cloudLeft-data-v-1d6b2d2a;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-delay:1s;animation-delay:1s}.wscn-http404 .pic-404__child.mid[data-v-1d6b2d2a]{width:46px;top:10px;left:420px;opacity:0;-webkit-animation-name:cloudMid-data-v-1d6b2d2a;animation-name:cloudMid-data-v-1d6b2d2a;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-delay:1.2s;animation-delay:1.2s}.wscn-http404 .pic-404__child.right[data-v-1d6b2d2a]{width:62px;top:100px;left:500px;opacity:0;-webkit-animation-name:cloudRight-data-v-1d6b2d2a;animation-name:cloudRight-data-v-1d6b2d2a;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-delay:1s;animation-delay:1s}@-webkit-keyframes cloudLeft-data-v-1d6b2d2a{0%{top:17px;left:220px;opacity:0}20%{top:33px;left:188px;opacity:1}80%{top:81px;left:92px;opacity:1}to{top:97px;left:60px;opacity:0}}@keyframes cloudLeft-data-v-1d6b2d2a{0%{top:17px;left:220px;opacity:0}20%{top:33px;left:188px;opacity:1}80%{top:81px;left:92px;opacity:1}to{top:97px;left:60px;opacity:0}}@-webkit-keyframes cloudMid-data-v-1d6b2d2a{0%{top:10px;left:420px;opacity:0}20%{top:40px;left:360px;opacity:1}70%{top:130px;left:180px;opacity:1}to{top:160px;left:120px;opacity:0}}@keyframes cloudMid-data-v-1d6b2d2a{0%{top:10px;left:420px;opacity:0}20%{top:40px;left:360px;opacity:1}70%{top:130px;left:180px;opacity:1}to{top:160px;left:120px;opacity:0}}@-webkit-keyframes cloudRight-data-v-1d6b2d2a{0%{top:100px;left:500px;opacity:0}20%{top:120px;left:460px;opacity:1}80%{top:180px;left:340px;opacity:1}to{top:200px;left:300px;opacity:0}}@keyframes cloudRight-data-v-1d6b2d2a{0%{top:100px;left:500px;opacity:0}20%{top:120px;left:460px;opacity:1}80%{top:180px;left:340px;opacity:1}to{top:200px;left:300px;opacity:0}}.wscn-http404 .bullshit[data-v-1d6b2d2a]{position:relative;float:left;width:300px;padding:30px 0;overflow:hidden}.wscn-http404 .bullshit__oops[data-v-1d6b2d2a]{font-size:32px;line-height:40px;color:#1482f0;margin-bottom:20px;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.wscn-http404 .bullshit__headline[data-v-1d6b2d2a],.wscn-http404 .bullshit__oops[data-v-1d6b2d2a]{font-weight:700;opacity:0;-webkit-animation-name:slideUp-data-v-1d6b2d2a;animation-name:slideUp-data-v-1d6b2d2a;-webkit-animation-duration:.5s;animation-duration:.5s}.wscn-http404 .bullshit__headline[data-v-1d6b2d2a]{font-size:20px;line-height:24px;color:#222;margin-bottom:10px;-webkit-animation-delay:.1s;animation-delay:.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.wscn-http404 .bullshit__info[data-v-1d6b2d2a]{font-size:13px;line-height:21px;color:grey;margin-bottom:30px;-webkit-animation-delay:.2s;animation-delay:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.wscn-http404 .bullshit__info[data-v-1d6b2d2a],.wscn-http404 .bullshit__return-home[data-v-1d6b2d2a]{opacity:0;-webkit-animation-name:slideUp-data-v-1d6b2d2a;animation-name:slideUp-data-v-1d6b2d2a;-webkit-animation-duration:.5s;animation-duration:.5s}.wscn-http404 .bullshit__return-home[data-v-1d6b2d2a]{display:block;float:left;width:165px;height:36px;background:#1482f0;border-radius:100px;text-align:center;color:#fff;font-size:14px;line-height:36px;cursor:pointer;-webkit-animation-delay:.3s;animation-delay:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes slideUp-data-v-1d6b2d2a{0%{-webkit-transform:translateY(60px);transform:translateY(60px);opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes slideUp-data-v-1d6b2d2a{0%{-webkit-transform:translateY(60px);transform:translateY(60px);opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-68ea.7633295f.css b/priv/static/adminfe/chunk-68ea9.dac85813.css similarity index 100% rename from priv/static/adminfe/chunk-68ea.7633295f.css rename to priv/static/adminfe/chunk-68ea9.dac85813.css diff --git a/priv/static/adminfe/chunk-6e81.0e9e6d27.css b/priv/static/adminfe/chunk-6e81.1c0f2da2.css similarity index 100% rename from priv/static/adminfe/chunk-6e81.0e9e6d27.css rename to priv/static/adminfe/chunk-6e81.1c0f2da2.css diff --git a/priv/static/adminfe/chunk-6e81.7e5babfc.css b/priv/static/adminfe/chunk-6e81.7e5babfc.css deleted file mode 100644 index da819ca09..000000000 --- a/priv/static/adminfe/chunk-6e81.7e5babfc.css +++ /dev/null @@ -1 +0,0 @@ -.errPage-container[data-v-ab9be52c]{width:800px;max-width:100%;margin:100px auto}.errPage-container .pan-back-btn[data-v-ab9be52c]{background:#008489;color:#fff;border:none!important}.errPage-container .pan-gif[data-v-ab9be52c]{margin:0 auto;display:block}.errPage-container .pan-img[data-v-ab9be52c]{display:block;margin:0 auto;width:100%}.errPage-container .text-jumbo[data-v-ab9be52c]{font-size:60px;font-weight:700;color:#484848}.errPage-container .list-unstyled[data-v-ab9be52c]{font-size:14px}.errPage-container .list-unstyled li[data-v-ab9be52c]{padding-bottom:5px}.errPage-container .list-unstyled a[data-v-ab9be52c]{color:#008489;text-decoration:none}.errPage-container .list-unstyled a[data-v-ab9be52c]:hover{text-decoration:underline} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-6e8c.ef26acfd.css b/priv/static/adminfe/chunk-6e8c.ef26acfd.css deleted file mode 100644 index 76f698880..000000000 --- a/priv/static/adminfe/chunk-6e8c.ef26acfd.css +++ /dev/null @@ -1 +0,0 @@ -.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided.actor-type-dropdown:before{margin:0;height:0}.el-dropdown-menu--small .actor-type-dropdown{padding:0}.actor-type-select{width:100%}.actor-type-select input{border-color:transparent;color:#606266}.actor-type-select .el-input__inner:hover{border-color:transparent;background-color:#ecf5ff}.actor-type-select .el-input.is-focus{border-color:transparent}.actor-type-select .el-input__suffix-inner{pointer-events:none}.actor-type-select .el-input.is-active .el-input__inner,.actor-type-select .el-input.is-focus .el-input__inner,.actor-type-select .el-input__inner:focus,.actor-type-select .el-select .el-input__inner:focus{border-color:transparent}.moderate-user-button{text-align:left;width:350px;padding:10px}.moderate-user-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.moderate-user-button{width:100%}}.security-settings-container{display:-webkit-box;display:-ms-flexbox;display:flex}.security-settings-container label{width:15%;height:36px}.security-settings-modal .el-dialog__body{padding-top:10px}.security-settings-modal .el-form-item,.security-settings-modal .password-alert{margin-bottom:15px}.security-settings-modal .password-input{margin-bottom:0}.security-settings-submit-button{float:right}@media (max-width:800px){.security-settings-modal .el-dialog{width:90%}}.security-settings-modal .el-alert .el-alert__description{word-break:break-word;font-size:1em}.security-settings-modal .form-text{display:block;margin-top:.25rem;color:#909399}header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;margin:22px 0;padding-left:15px}header h1{margin:0 0 0 10px}table{margin:10px 0 0 15px}table .name-col{width:150px}.avatar-name-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.avatar-name-container .el-icon-top-right{font-size:2em;line-height:36px;color:#606266}.invalid{color:grey}.el-table--border:after,.el-table--group:after,.el-table:before{background-color:transparent}.image{width:20%}.image img{width:100%}.invalid-user-tag{font-size:14px;width:inherit;height:auto;text-align:center;word-wrap:break-word;white-space:normal}.left-header-container{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.no-statuses{margin-left:28px;color:#606266}.password-reset-token{margin:0 0 14px}.password-reset-token-dialog{width:50%}.poll ul{list-style-type:none;padding:0;width:30%}.reboot-button{padding:10px;margin-left:10px}.recent-statuses-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:67%}.recent-statuses-header{margin-top:10px}.reset-password-link{text-decoration:underline}.security-setting-button{margin-top:20px;width:100%}.statuses{padding:0 20px 0 0}.show-private{width:200px;text-align:left;line-height:67px;margin-right:20px}.show-private-statuses{margin-left:28px;margin-bottom:20px}.recent-statuses{margin-left:28px}.user-page-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:22px 15px 22px 20px;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.user-page-header h1{display:inline}.user-profile-card{margin:0 20px;width:30%;min-width:300px;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.user-profile-container{display:-webkit-box;display:-ms-flexbox;display:flex}.user-profile-table{margin:0;width:inherit}.user-profile-tag{margin:0 4px 4px 0}.reason-label{color:#878d99;font-weight:700;margin:5px 0}@media only screen and (max-width:480px){.avatar-name-container{margin-bottom:10px}.el-timeline-item__wrapper{padding-left:18px}.password-reset-token-dialog{width:85%}.recent-statuses{margin:20px 10px 15px}.recent-statuses-container{width:100%;margin:0}.show-private-statuses{margin:0 10px 20px}.status-container{margin:0 10px}.statuses{padding-right:10px;margin-left:8px}.user-page-header{padding:0;margin:7px 15px 15px 10px}.user-page-header-container .el-dropdown{width:95%;margin:0 15px 15px 10px}.user-profile-card{margin:0 10px;width:95%}.user-profile-card td{width:80px}.user-profile-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}@media only screen and (max-width:801px) and (min-width:481px){.recent-statuses{margin:20px 10px 15px 0}.recent-statuses-container{width:97%;margin:0 20px}.show-private-statuses{margin:0 10px 20px 0}.user-page-header{padding:0;margin:7px 15px 20px 20px}.user-profile-card{margin:0 20px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.user-profile-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-7503.cc089ee4.css b/priv/static/adminfe/chunk-7503.cc089ee4.css deleted file mode 100644 index cc1e824b8..000000000 --- a/priv/static/adminfe/chunk-7503.cc089ee4.css +++ /dev/null @@ -1 +0,0 @@ -.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided.actor-type-dropdown:before{margin:0;height:0}.el-dropdown-menu--small .actor-type-dropdown{padding:0}.actor-type-select{width:100%}.actor-type-select input{border-color:transparent;color:#606266}.actor-type-select .el-input__inner:hover{border-color:transparent;background-color:#ecf5ff}.actor-type-select .el-input.is-focus{border-color:transparent}.actor-type-select .el-input__suffix-inner{pointer-events:none}.actor-type-select .el-input.is-active .el-input__inner,.actor-type-select .el-input.is-focus .el-input__inner,.actor-type-select .el-input__inner:focus,.actor-type-select .el-select .el-input__inner:focus{border-color:transparent}.moderate-user-button{text-align:left;width:350px;padding:10px}.moderate-user-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.moderate-user-button{width:100%}}.avatar-name-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.avatar-name-container .el-icon-top-right{font-size:2em;line-height:36px;color:#606266}.avatar-name-header{display:-webkit-box;display:-ms-flexbox;display:flex;height:40px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.invalid{color:grey}.no-statuses{margin-left:28px;color:#606266}.password-reset-token{margin:0 0 14px}.password-reset-token-dialog{width:50%}.reboot-button{padding:10px;margin-left:6px}.recent-statuses-container-show{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.recent-statuses-container-show .el-timeline-item,.recent-statuses-container-show .recent-statuses{margin-left:20px}.recent-statuses-container-show .show-private-statuses{margin-left:20px;margin-bottom:20px}.reset-password-link{text-decoration:underline}.router-link{text-decoration:none}.status-container{margin:0 15px 0 20px}.statuses{padding:0 20px 0 0}.user-page-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:22px 15px 22px 20px;padding:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.user-page-header h1{display:inline;margin:0 0 0 10px}@media only screen and (min-width:1824px){.status-show-container{max-width:1824px;margin:auto}}@media only screen and (max-width:480px){.avatar-name-container{margin-bottom:10px}.el-timeline-item__wrapper{padding-left:18px}.left-header-container{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.password-reset-token-dialog{width:85%}.recent-statuses{margin:20px 10px 15px}.recent-statuses-container-show{width:100%;margin:0 0 0 10px}.recent-statuses-container-show .el-timeline-item,.recent-statuses-container-show .recent-statuses{margin-left:0}.recent-statuses-container-show .show-private-statuses{margin:0 10px 20px 0}.status-card .el-card__body{padding:15px}.status-container{margin:0 10px}.statuses{padding-right:10px;margin-left:0}.statuses .el-timeline-item__wrapper{margin-right:10px}.user-page-header{padding:0;margin:7px 15px 5px 10px}.status-page-header-container{width:100%}.status-page-header-container .el-dropdown{width:-webkit-fill-available;width:-moz-available;width:stretch;margin:0 10px 15px}}@media only screen and (max-width:801px) and (min-width:481px){.recent-statuses-container-show{width:97%;margin:0 20px}.recent-statuses-container-show .el-timeline-item{margin-left:2px}.recent-statuses-container-show .recent-statuses{margin:20px 10px 15px 0}.recent-statuses-container-show .show-private-statuses,.show-private-statuses{margin:0 10px 20px 0}.user-page-header{padding:0;margin:7px 15px 20px 20px}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-0778.29be65e2.css b/priv/static/adminfe/chunk-7c6b.365cbeda.css similarity index 100% rename from priv/static/adminfe/chunk-0778.29be65e2.css rename to priv/static/adminfe/chunk-7c6b.365cbeda.css diff --git a/priv/static/adminfe/chunk-7c6b.b529c720.css b/priv/static/adminfe/chunk-7c6b.b529c720.css deleted file mode 100644 index 9d730019a..000000000 --- a/priv/static/adminfe/chunk-7c6b.b529c720.css +++ /dev/null @@ -1 +0,0 @@ -.invites-container .actions-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px}.invites-container .create-invite-token{text-align:left;width:350px;padding:10px}.invites-container .create-new-token-dialog{width:50%}.invites-container .create-new-token-dialog a{margin-bottom:3px}.invites-container .create-new-token-dialog .el-card__body{padding:10px 20px}.invites-container .el-dialog__body{padding:5px 20px 0}.invites-container h1{margin:0}.invites-container .icon{margin-right:5px}.invites-container .invite-token-table{width:100%;margin:0 15px}.invites-container .invite-via-email{text-align:left;width:350px;padding:10px}.invites-container .invite-via-email-dialog{width:50%}.invites-container .invites-header-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:10px 15px}.invites-container .info{color:#666;font-size:13px;line-height:22px;margin:0 0 10px}.invites-container .new-token-card .el-form-item{margin:0}.invites-container .reboot-button{padding:10px;margin:0;width:145px}@media only screen and (max-width:480px){.invites-container .actions-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px 10px 7px}.invites-container .cell{padding:0}.invites-container .create-invite-token{width:100%}.invites-container .create-new-token-dialog{width:85%}.invites-container .el-date-editor{width:150px}.invites-container .el-dialog__body{padding:5px 15px 0}.invites-container h1{margin:0}.invites-container .invite-token-table{width:100%;margin:0 5px;font-size:12px;font-weight:500}.invites-container .invite-via-email{width:100%;margin:10px 0 0}.invites-container .invite-via-email-dialog{width:85%}.invites-container .invites-header-container{margin:0 10px}.invites-container .info{margin:0 0 10px 5px}.invites-container th .cell{padding:0}.create-invite-token,.invite-via-email{width:100%}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-40a4.665332db.css b/priv/static/adminfe/chunk-850d.cc4f0ac6.css similarity index 84% rename from priv/static/adminfe/chunk-40a4.665332db.css rename to priv/static/adminfe/chunk-850d.cc4f0ac6.css index 83fefcb55..1cb2ead63 100644 --- a/priv/static/adminfe/chunk-40a4.665332db.css +++ b/priv/static/adminfe/chunk-850d.cc4f0ac6.css @@ -1 +1 @@ -a{text-decoration:underline}.note-header{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;height:40px}.note-actor{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.note-actor-name{margin:0;height:28px}.note-avatar-img{width:15px;height:15px;margin-right:5px}.note-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.note-card{margin-bottom:15px}.note-content,.note-header{font-size:15px}.note-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:28px;font-weight:500}@media only screen and (max-width:480px){.el-card__header{padding:10px 17px}.note-header{height:65px}.note-actor{margin-bottom:5px}.note-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}}h4{margin:0;height:17px}.account{line-height:26px;font-size:13px;color:#606266}.account:hover{text-decoration:underline}.avatar-img{vertical-align:bottom;width:15px;height:15px}.divider{margin:15px 0}.deactivated{color:grey}.el-card__body{padding:17px}.el-card__header{background-color:#fafafa;padding:10px 20px}.el-collapse{border-bottom:none}.el-collapse-item__header{height:46px;font-size:14px}.el-collapse-item__content{padding-bottom:7px}.el-icon-arrow-right{margin-right:6px}.id{color:grey;margin-top:6px}.line{width:100%;height:0;border:.5px solid #ebeef5;margin:15px 0}.new-note p{font-size:14px;font-weight:500;height:17px;margin:13px 0 7px}.note{-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.1);box-shadow:0 2px 5px 0 rgba(0,0,0,.1);margin-bottom:10px}.no-notes{font-style:italic;color:grey}.report .report-header-container{height:40px}.report-account,.report .report-header-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.report-account{-webkit-box-flex:2;-ms-flex-positive:2;flex-grow:2}.report-account-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.report-account-name{font-size:15px;font-weight:500}.report-row-key{font-size:14px;font-weight:500;padding-right:5px}.report-title{margin:0}.report-note-form{margin:15px 0 0}.report-post-note{margin:5px 0 0;text-align:right}.reports-pagination{margin:25px 0;text-align:center}.reports-timeline{margin:30px 45px 45px 19px;padding:0}.router-link{text-decoration:none}.reported-statuses{margin-top:15px}.submit-button{display:block;margin:7px 0 17px auto}.timestamp{margin:0;font-style:italic;color:grey}@media only screen and (max-width:480px){.report .report-header-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;height:auto}.report .id{margin:6px 0 0}.report .report-actions-button,.report .report-tag{margin:3px 0 6px}.report .title-container{margin-bottom:7px}.reports-timeline{margin:20px 10px}.reports-timeline .el-timeline-item__wrapper{padding-left:20px}}.select-field[data-v-5ab7c15a]{width:350px}@media only screen and (max-width:480px){.select-field[data-v-5ab7c15a]{width:100%;margin-bottom:5px}}@media only screen and (max-width:801px) and (min-width:481px){.select-field[data-v-5ab7c15a]{width:50%}}.reports-container .reboot-button[data-v-fa601560]{padding:10px;margin:0;width:145px}.reports-container .reports-filter-container[data-v-fa601560]{margin:15px 45px 22px 15px;padding-bottom:0}.reports-container .reports-filter-container[data-v-fa601560],.reports-container .reports-header-container[data-v-fa601560]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.reports-container .reports-header-container[data-v-fa601560]{margin:10px 15px}.reports-container h1[data-v-fa601560]{margin:0}.reports-container .no-reports-message[data-v-fa601560]{color:grey;margin-left:19px}.reports-container .report-count[data-v-fa601560]{color:grey;font-size:28px}@media only screen and (max-width:480px){.reports-container h1[data-v-fa601560]{margin:7px 10px 15px}.reports-container .reboot-button[data-v-fa601560]{margin:0 0 5px 10px;width:145px}.reports-container .report-count[data-v-fa601560]{font-size:22px}.reports-container .reports-filter-container[data-v-fa601560]{margin:0 10px}} \ No newline at end of file +a{text-decoration:underline}.note-header{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;height:40px}.note-actor{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.note-actor-name{margin:0;height:28px}.note-avatar-img{width:15px;height:15px;margin-right:5px}.note-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.note-card{margin-bottom:15px}.note-content,.note-header{font-size:15px}.note-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:28px;font-weight:500}@media only screen and (max-width:480px){.el-card__header{padding:10px 17px}.note-header{height:65px}.note-actor{margin-bottom:5px}.note-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}}h4{margin:0;height:17px}.account{line-height:26px;font-size:13px;color:#606266}.account:hover{text-decoration:underline}.avatar-img{vertical-align:bottom;width:15px;height:15px}.divider{margin:15px 0}.deactivated{color:grey}.el-card__body{padding:17px}.el-card__header{background-color:#fafafa;padding:10px 20px}.el-collapse{border-bottom:none}.el-collapse-item__header{height:46px;font-size:14px}.el-collapse-item__content{padding-bottom:7px}.el-icon-arrow-right{margin-right:6px}.id{color:grey;margin-top:6px}.line{width:100%;height:0;border:.5px solid #ebeef5;margin:15px 0}.new-note p{font-size:14px;font-weight:500;height:17px;margin:13px 0 7px}.note{-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.1);box-shadow:0 2px 5px 0 rgba(0,0,0,.1);margin-bottom:10px}.no-notes{font-style:italic;color:grey}.report .report-header-container{height:40px}.report-account,.report .report-header-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.report-account{-webkit-box-flex:2;-ms-flex-positive:2;flex-grow:2}.report-account-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.report-account-name{font-size:15px;font-weight:500}.report-row-key{font-size:14px;font-weight:500;padding-right:5px}.report-title{margin:0}.report-note-form{margin:15px 0 0}.report-post-note{margin:5px 0 0;text-align:right}.reports-pagination{margin:25px 0;text-align:center}.reports-timeline{margin:30px 45px 45px 19px;padding:0}.router-link{text-decoration:none}.reported-statuses{margin-top:15px}.submit-button{display:block;margin:7px 0 17px auto}.timestamp{margin:0;font-style:italic;color:grey}@media only screen and (max-width:480px){.report .report-header-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;height:auto}.report .id{margin:6px 0 0}.report .report-actions-button,.report .report-tag{margin:3px 0 6px}.report .title-container{margin-bottom:7px}.reports-timeline{margin:20px 10px}.reports-timeline .el-timeline-item__wrapper{padding-left:20px}}.select-field[data-v-5ab7c15a]{width:350px}@media only screen and (max-width:480px){.select-field[data-v-5ab7c15a]{width:100%;margin-bottom:5px}}@media only screen and (max-width:801px) and (min-width:481px){.select-field[data-v-5ab7c15a]{width:50%}}.reports-container .reboot-button[data-v-6ac87f34]{padding:10px;margin:0;width:145px}.reports-container .reports-filter-container[data-v-6ac87f34]{margin:15px 45px 22px 15px;padding-bottom:0}.reports-container .reports-filter-container[data-v-6ac87f34],.reports-container .reports-header-container[data-v-6ac87f34]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.reports-container .reports-header-container[data-v-6ac87f34]{margin:10px 15px}.reports-container h1[data-v-6ac87f34]{margin:0}.reports-container .no-reports-message[data-v-6ac87f34]{color:grey;margin-left:19px}.reports-container .report-count[data-v-6ac87f34]{color:grey;font-size:28px}@media only screen and (max-width:480px){.reports-container h1[data-v-6ac87f34]{margin:7px 10px 15px}.reports-container .reboot-button[data-v-6ac87f34]{margin:0 0 5px 10px;width:145px}.reports-container .report-count[data-v-6ac87f34]{font-size:22px}.reports-container .reports-filter-container[data-v-6ac87f34]{margin:0 10px}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-9043.3f527a93.css b/priv/static/adminfe/chunk-9043.3f527a93.css deleted file mode 100644 index d3b7604aa..000000000 --- a/priv/static/adminfe/chunk-9043.3f527a93.css +++ /dev/null @@ -1 +0,0 @@ -.copy-popover{width:330px}.copy-to-local-pack-button{margin-top:15px;float:right}.emoji-buttons{place-self:center;min-width:200px}.emoji-container-grid{display:grid;grid-template-columns:75px auto auto 200px;grid-column-gap:15px;margin-bottom:10px}.emoji-preview-img{max-width:100%;place-self:center}.emoji-info{place-self:center}.copy-pack-container{place-self:center stretch}.copy-pack-select{width:100%}.remote-emoji-container-grid{display:grid;grid-template-columns:75px auto auto 160px;grid-column-gap:15px;margin-bottom:10px}@media only screen and (max-width:480px){.emoji-container-flex{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border:1px solid #dcdfe6;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;padding:15px;margin:0 15px 15px 0}.emoji-info,.emoji-preview-img{margin-bottom:10px}.emoji-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100%}.emoji-buttons button{padding:10px 5px;width:47%}}@media only screen and (max-width:801px) and (min-width:481px){.emoji-container-grid{grid-column-gap:10px}.emoji-buttons .el-button+.el-button{margin-left:5px}.remote-emoji-container-grid{grid-column-gap:10px}}.add-new-emoji{height:36px;font-size:14px;font-weight:700;color:#606266}.text{line-height:20px;margin-right:15px}.upload-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.upload-button{margin-left:10px}.upload-file-url{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.new-emoji-uploader-form label.el-form-item__label{padding:0}}.files-pagination{margin:25px 0;text-align:center}.download-archive{width:250px}.download-pack-button-container{width:265px}.download-pack-button-container .el-link,.download-pack-button-container .el-link span,.download-pack-button-container .el-link span .download-archive{width:inherit}.download-shared-pack{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.download-shared-pack-button{margin-left:10px}.el-collapse-item__content{padding-bottom:0}.el-collapse-item__header{height:36px;font-size:14px;font-weight:700;color:#606266}.emoji-pack-card{margin-top:5px}.emoji-pack-metadata .el-form-item{margin-bottom:10px}.has-background .el-collapse-item__header{background:#f6f6f6}.no-background .el-collapse-item__header{background:#fff}.pack-button-container{margin:0 0 18px 120px}.save-pack-button-container{margin-bottom:8px;width:265px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.delete-pack-button{width:45%}.download-pack-button-container{width:100%}.download-shared-pack{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.download-shared-pack-button{margin-left:0;margin-top:10px;padding:10px}.pack-button-container{width:100%;margin:0 0 22px}.remote-pack-metadata .el-form-item__content{line-height:24px;margin-top:4px}.save-pack-button{width:54%}.save-pack-button-container{margin-bottom:8px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.save-pack-button-container button{padding:10px 5px}.save-pack-button-container .el-button+.el-button{margin-left:3px}}.create-pack{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.create-pack-button{margin-left:10px}.emoji-header-container{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:0 15px 22px}.emoji-header-container,.emoji-packs-header-button-container{display:-webkit-box;display:-ms-flexbox;display:flex}.emoji-packs-form{margin-top:15px}.emoji-packs-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:10px 15px 15px}.emoji-packs-tabs{margin:0 15px 15px}.import-pack-button{margin-left:10px;width:30%;max-width:700px}h1{margin:0}.line{width:100%;height:0;border:1px solid #eee;margin-bottom:22px}.pagination{margin:25px 0;text-align:center}.reboot-button{padding:10px;margin:0;width:145px}@media only screen and (min-width:1824px){.emoji-packs{max-width:1824px;margin:auto}}@media only screen and (max-width:480px){.create-pack{height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.create-pack-button{margin-left:0}.divider{margin:15px 0}.el-message{min-width:80%}.el-message-box{width:80%}.emoji-header-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.emoji-packs-form{margin:0 7px}.emoji-packs-form label{padding-right:8px}.emoji-packs-form .el-form-item{margin-bottom:15px}.emoji-packs-header{margin:15px}.emoji-packs-header-button-container{height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.emoji-packs-header-button-container .el-button+.el-button{margin:7px 0 0;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.import-pack-button{width:90%}.reload-emoji-button{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-97e2.9f9fab0f.css b/priv/static/adminfe/chunk-97e2.9f9fab0f.css deleted file mode 100644 index d3b7604aa..000000000 --- a/priv/static/adminfe/chunk-97e2.9f9fab0f.css +++ /dev/null @@ -1 +0,0 @@ -.copy-popover{width:330px}.copy-to-local-pack-button{margin-top:15px;float:right}.emoji-buttons{place-self:center;min-width:200px}.emoji-container-grid{display:grid;grid-template-columns:75px auto auto 200px;grid-column-gap:15px;margin-bottom:10px}.emoji-preview-img{max-width:100%;place-self:center}.emoji-info{place-self:center}.copy-pack-container{place-self:center stretch}.copy-pack-select{width:100%}.remote-emoji-container-grid{display:grid;grid-template-columns:75px auto auto 160px;grid-column-gap:15px;margin-bottom:10px}@media only screen and (max-width:480px){.emoji-container-flex{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border:1px solid #dcdfe6;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;padding:15px;margin:0 15px 15px 0}.emoji-info,.emoji-preview-img{margin-bottom:10px}.emoji-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100%}.emoji-buttons button{padding:10px 5px;width:47%}}@media only screen and (max-width:801px) and (min-width:481px){.emoji-container-grid{grid-column-gap:10px}.emoji-buttons .el-button+.el-button{margin-left:5px}.remote-emoji-container-grid{grid-column-gap:10px}}.add-new-emoji{height:36px;font-size:14px;font-weight:700;color:#606266}.text{line-height:20px;margin-right:15px}.upload-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.upload-button{margin-left:10px}.upload-file-url{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.new-emoji-uploader-form label.el-form-item__label{padding:0}}.files-pagination{margin:25px 0;text-align:center}.download-archive{width:250px}.download-pack-button-container{width:265px}.download-pack-button-container .el-link,.download-pack-button-container .el-link span,.download-pack-button-container .el-link span .download-archive{width:inherit}.download-shared-pack{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.download-shared-pack-button{margin-left:10px}.el-collapse-item__content{padding-bottom:0}.el-collapse-item__header{height:36px;font-size:14px;font-weight:700;color:#606266}.emoji-pack-card{margin-top:5px}.emoji-pack-metadata .el-form-item{margin-bottom:10px}.has-background .el-collapse-item__header{background:#f6f6f6}.no-background .el-collapse-item__header{background:#fff}.pack-button-container{margin:0 0 18px 120px}.save-pack-button-container{margin-bottom:8px;width:265px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media only screen and (max-width:480px){.delete-pack-button{width:45%}.download-pack-button-container{width:100%}.download-shared-pack{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.download-shared-pack-button{margin-left:0;margin-top:10px;padding:10px}.pack-button-container{width:100%;margin:0 0 22px}.remote-pack-metadata .el-form-item__content{line-height:24px;margin-top:4px}.save-pack-button{width:54%}.save-pack-button-container{margin-bottom:8px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.save-pack-button-container button{padding:10px 5px}.save-pack-button-container .el-button+.el-button{margin-left:3px}}.create-pack{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.create-pack-button{margin-left:10px}.emoji-header-container{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:0 15px 22px}.emoji-header-container,.emoji-packs-header-button-container{display:-webkit-box;display:-ms-flexbox;display:flex}.emoji-packs-form{margin-top:15px}.emoji-packs-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:10px 15px 15px}.emoji-packs-tabs{margin:0 15px 15px}.import-pack-button{margin-left:10px;width:30%;max-width:700px}h1{margin:0}.line{width:100%;height:0;border:1px solid #eee;margin-bottom:22px}.pagination{margin:25px 0;text-align:center}.reboot-button{padding:10px;margin:0;width:145px}@media only screen and (min-width:1824px){.emoji-packs{max-width:1824px;margin:auto}}@media only screen and (max-width:480px){.create-pack{height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.create-pack-button{margin-left:0}.divider{margin:15px 0}.el-message{min-width:80%}.el-message-box{width:80%}.emoji-header-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.emoji-packs-form{margin:0 7px}.emoji-packs-form label{padding-right:8px}.emoji-packs-form .el-form-item{margin-bottom:15px}.emoji-packs-header{margin:15px}.emoji-packs-header-button-container{height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.emoji-packs-header-button-container .el-button+.el-button{margin:7px 0 0;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.import-pack-button{width:90%}.reload-emoji-button{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-9a72.786caeb3.css b/priv/static/adminfe/chunk-9a72.786caeb3.css deleted file mode 100644 index c0074e6f7..000000000 --- a/priv/static/adminfe/chunk-9a72.786caeb3.css +++ /dev/null @@ -1 +0,0 @@ -@supports (-webkit-mask:none) and (not (cater-color:#fff)){.login-container .el-input input{color:#fff}.login-container .el-input input:first-line{color:#eee}}.login-container .el-input{display:inline-block;height:47px;width:85%}.login-container .el-input input{background:transparent;border:0;-webkit-appearance:none;border-radius:0;padding:12px 5px 12px 15px;color:#eee;height:47px;caret-color:#fff}.login-container .el-input input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #283443 inset!important;-webkit-text-fill-color:#fff!important}.login-container .el-form-item{border:1px solid hsla(0,0%,100%,.1);background:rgba(0,0,0,.1);border-radius:5px;color:#454545}.login-container .login-button{width:100%;margin:0 0 10px}.login-container .omit-host-note{color:#596f8c;font-size:.8em;font-style:italic;margin:-20px 0 15px;padding:3px 0 0 15px}.login-container[data-v-5bb13616]{min-height:100%;width:100%;background-color:#2d3a4b;overflow:hidden}.login-container .login-form[data-v-5bb13616]{position:relative;width:520px;max-width:100%;padding:160px 35px 0;margin:0 auto;overflow:hidden}.login-container .tips[data-v-5bb13616]{font-size:14px;color:#fff;margin-bottom:10px}.login-container .tips span[data-v-5bb13616]:first-of-type{margin-right:16px}.login-container .svg-container[data-v-5bb13616]{padding:6px 5px 6px 15px;color:#889aa4;vertical-align:middle;width:30px;display:inline-block}.login-container .title-container[data-v-5bb13616]{position:relative}.login-container .title-container .title[data-v-5bb13616]{font-size:26px;color:#eee;margin:0 auto 40px;text-align:center;font-weight:700}.login-container .title-container .set-language[data-v-5bb13616]{color:#fff;position:absolute;top:3px;font-size:18px;right:0;cursor:pointer}.login-container .show-pwd[data-v-5bb13616]{position:absolute;right:10px;top:7px;font-size:16px;color:#889aa4;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.login-container .thirdparty-button[data-v-5bb13616]{position:absolute;right:0;bottom:6px} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-9d55.e2cb1409.css b/priv/static/adminfe/chunk-9d55.e2cb1409.css new file mode 100644 index 000000000..13537842a --- /dev/null +++ b/priv/static/adminfe/chunk-9d55.e2cb1409.css @@ -0,0 +1 @@ +.editor{position:relative;border-radius:4px;border:1px solid #dcdfe6;padding:10px}.editor__content{overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;padding-left:10px}.editor__content *{caret-color:currentColor}.editor__content pre{border-radius:5px;font-size:.8rem;overflow-x:auto}.editor__content pre code{display:block}.editor__content p code{border-radius:5px;font-size:.8rem;font-weight:700}.editor__content ol,.editor__content ul{padding-left:1rem}.editor__content li>ol,.editor__content li>p,.editor__content li>ul{margin:0}.editor__content a{color:inherit}.editor__content blockquote{border-left:3px solid rgba(0,0,0,.1);color:rgba(0,0,0,.8);padding-left:.8rem;font-style:italic}.editor__content blockquote p{margin:0}.editor__content img{max-width:100%;border-radius:3px}.editor__content table{border-collapse:collapse;table-layout:fixed;width:100%;margin:0;overflow:hidden}.editor__content table td,.editor__content table th{min-width:1em;border:2px solid #ddd;padding:3px 5px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.editor__content table td>*,.editor__content table th>*{margin-bottom:0}.editor__content table th{font-weight:700;text-align:left}.editor__content table .selectedCell:after{z-index:2;position:absolute;content:"";left:0;right:0;top:0;bottom:0;background:rgba(200,200,255,.4);pointer-events:none}.editor__content table .column-resize-handle{position:absolute;right:-2px;top:0;bottom:0;width:4px;z-index:20;background-color:#adf;pointer-events:none}.editor__content .tableWrapper{margin:1em 0;overflow-x:auto}.editor__content .resize-cursor{cursor:ew-resize;cursor:col-resize}.editor-form-item{margin-right:30px}.menubar{margin-bottom:1rem;-webkit-transition:visibility .2s .4s,opacity .2s .4s;transition:visibility .2s .4s,opacity .2s .4s}.menubar.is-hidden{visibility:hidden;opacity:0}.menubar.is-focused{visibility:visible;opacity:1;-webkit-transition:visibility .2s,opacity .2s;transition:visibility .2s,opacity .2s}.menubar__button{font-weight:700;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;background:transparent;border:0;color:#000;padding:.2rem .5rem;margin-right:.2rem;border-radius:3px;cursor:pointer}.menubar__button:hover{background-color:rgba(0,0,0,.05)}.menubar__button.is-active{background-color:rgba(0,0,0,.1)}.menubar span.menubar__button{font-size:13.3333px}.image-upload-area .input-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.image-upload-area .input-file{z-index:100;position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.image-upload-area .image-button-group{margin-top:20px}.image-upload-area .image-button-group .upload-button,.image-upload-area .image-upload-wrapper{position:relative}.image-upload-area .image-upload-wrapper .image-upload-overlay{border-radius:5px}.image-upload-area .image-upload-wrapper .image-upload-overlay,.image-upload-area .image-upload-wrapper .image-upload-overlay .caption{-webkit-transition:-webkit-box-shadow .1s;transition:-webkit-box-shadow .1s;transition:box-shadow .1s;transition:box-shadow .1s,-webkit-box-shadow .1s}.image-upload-area .image-upload-wrapper .image-upload-overlay .caption{visibility:hidden;position:absolute;top:0;bottom:0;right:0;left:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-weight:700;font-size:10px;text-transform:uppercase;color:#fff;z-index:9}.image-upload-area .image-upload-wrapper .image-upload-overlay .uploaded-image{border-radius:5px;-webkit-box-shadow:0 2px 10px 0 rgba(0,0,0,.1);box-shadow:0 2px 10px 0 rgba(0,0,0,.1)}.image-upload-area .image-upload-wrapper .image-upload-overlay:hover{visibility:visible;cursor:pointer;border-radius:5px}.image-upload-area .image-upload-wrapper .image-upload-overlay:hover .el-image__error{visibility:hidden}.image-upload-area .image-upload-wrapper .image-upload-overlay:hover .caption{visibility:visible;-webkit-box-shadow:0 2px 10px 0 rgba(0,0,0,.1),inset 0 0 120px 25px rgba(0,0,0,.8);box-shadow:0 2px 10px 0 rgba(0,0,0,.1),inset 0 0 120px 25px rgba(0,0,0,.8);border-radius:5px}a{text-decoration:underline}.center-label label{text-align:center}.center-label label span{float:left}.code{background-color:rgba(173,190,214,.48);border-radius:3px;font-family:monospace;padding:0 3px}.delete-setting-button{margin-left:5px}.description-container{overflow-wrap:break-word}.description-container .el-form-item__content{line-height:20px}.divider{margin:0 0 18px}.divider.thick-line{height:2px}.docs-search-container{float:right;margin-right:30px}.editable-keyword-container{width:100%}.el-form-item .rate-limit{margin-right:0}.el-input-group__prepend{padding-left:10px;padding-right:10px}.el-tabs__header{z-index:2002}.email-address-input{width:50%;margin-right:10px}.esshd-list{margin:0}.expl,.expl>p{color:#666;font-size:13px;line-height:22px;margin:5px 0 0;overflow-wrap:break-word;overflow:hidden;text-overflow:ellipsis}.expl>p code,.expl code{display:inline;line-height:22px;font-size:13px;padding:2px 3px}.follow-relay{width:350px;margin-right:7px}.form-container{margin-bottom:80px}.grouped-settings-header{margin:0 0 14px}.highlight{background-color:#e6e6e6}.icons-button-container{width:100%;margin-bottom:10px}.icons-button-desc{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;margin-left:5px}.icon-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:95%}.icon-values-container{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 10px 10px 0}.icon-key-input{width:30%;margin-right:8px}.icon-minus-button{width:36px;height:36px}.icon-value-input{width:70%;margin-left:8px}.icons-container,.input-container{display:-webkit-box;display:-ms-flexbox;display:flex}.input-container{-webkit-box-align:start;-ms-flex-align:start;align-items:start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.input-container .el-form-item{margin-right:30px;width:100%}.input-container .el-select,.keyword-container{width:100%}label{overflow:hidden;text-overflow:ellipsis}.label-font{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700}.limit-button-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.limit-expl{margin-left:10px}.limit-input{width:47%;margin:0 0 5px 1%}.line{width:100%;height:0;border:1px solid #eee;margin-bottom:18px}.mascot{margin-bottom:15px}.mascot-container{width:100%}.mascot-input{margin-bottom:7px}.mascot-name-container{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:7px}.mascot-name-input{margin-right:10px}.multiple-select-container{width:100%}.name-input{width:30%;margin-right:8px}.nickname-input{width:50%}.no-top-margin{margin-top:0}.no-top-margin p{margin-right:30px}.pattern-input{width:20%;margin-right:8px}.proxy-url-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px;width:100%}.proxy-url-host-input{width:35%;margin-right:8px}.proxy-url-value-input{width:35%;margin-left:8px;margin-right:10px}.prune-options{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.prune-options .el-radio{margin-top:11px}.rate-limit .el-form-item__content{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.rate-limit-container{width:100%}.rate-limit-content{width:70%}.rate-limit-label{float:right}.rate-limit-label-container{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;width:30%;margin-right:10px}.reboot-button{width:145px;text-align:left;padding:10px;float:right;margin:0 30px 0 0}.reboot-button-container{width:100%;position:fixed;top:60px;right:0;z-index:2000}.relays-container{margin:0 15px}.replacement-input{width:80%;margin-left:8px;margin-right:10px}.sender-input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px;width:100%}.scale-input{width:47%;margin:0 1% 5px 0}.setting-input{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.setting-label{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;line-height:20px;margin:0 0 14px}.settings-container{max-width:1824px;margin:auto}.settings-container .el-tabs{margin-top:20px}.settings-delete-button{margin-left:5px}.settings-docs-button{min-width:163px;text-align:left;padding:10px}.settings-header{margin:10px 15px 15px}.header-sidebar-opened{max-width:1585px}.header-sidebar-closed{max-width:1728px}.settings-header-container{height:87px}.settings-search-input{width:350px;margin-left:5px}.single-input{margin-right:10px}.socks5-checkbox{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;margin-left:10px}.socks5-checkbox-container{width:40%;height:36px;margin-right:5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ssl-tls-opts{margin:36px 0 0}.submit-button{float:right;margin:0 30px 22px 0}.submit-button-container{width:100%;position:fixed;bottom:0;right:0;z-index:2000}.switch-input{height:36px}.text{line-height:20px;margin-right:15px}.upload-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.value-input{width:70%;margin-left:8px;margin-right:10px}@media only screen and (min-width:1824px){.header-sidebar-closed{max-width:1772px}.header-sidebar-opened{max-width:1630px}.reboot-button-container{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}.reboot-sidebar-opened{max-width:1630px}.reboot-sidebar-closed{max-width:1772px}.sidebar-closed{max-width:1586px}.sidebar-opened{max-width:1442px}.submit-button-container{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}}@media only screen and (max-width:480px){.crontab,.crontab label{width:100%}.delete-setting-button{margin:4px 0 0 5px;height:28px}.delete-setting-button-container{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p{line-height:18px;margin:0 5px 7px 15px}.description>p code{display:inline;line-height:18px;padding:2px 3px;font-size:14px}.description-container{margin:0 15px 22px}.divider{margin:0 0 10px}.divider .thick-line{height:2px}.follow-relay{width:75%;margin-right:5px}.follow-relay input{width:100%}.follow-relay-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:0 5px}h1{font-size:24px}.input{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container{width:100%}.input-container .el-form-item:first-child{margin:0;padding:0 15px 10px}.input-container .el-form-item.crontab-container:first-child{margin:0;padding:0}.input-container .el-form-item:first-child .mascot-form-item,.input-container .el-form-item:first-child .rate-limit{padding:0}.input-container .settings-delete-button{margin-top:4px;float:right}.input-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.label-with-margin{margin-left:15px}.limit-input{width:45%}.nav-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px}.proxy-url-input{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-bottom:0}.proxy-url-host-input{width:100%;margin-bottom:5px}.proxy-url-value-input{width:100%;margin-left:0}.prune-options{height:80px}.prune-options,.rate-limit .el-form-item__content{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.rate-limit-content{width:100%}.rate-limit-label{float:left}.rate-limit-label-container{width:100%}.reboot-button{margin:0 15px 0 0}.reboot-button-container{top:57px}.scale-input{width:45%}.settings-header{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;display:inline-block;margin:10px 15px 15px}.docs-search-container{float:right}.settings-search-input{width:100%;margin-left:0}.settings-search-input-container{margin:0 15px 15px}.settings-menu{width:163px;margin-right:5px}.socks5-checkbox-container{width:100%}.submit-button{margin:0 15px 22px 0}.el-input__inner{padding:0 5px}.el-form-item__label:not(.no-top-margin){padding-bottom:5px;line-height:22px;margin-top:7px;width:100%;pointer-events:none}.el-form-item__label:not(.no-top-margin) span{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.el-form-item__label:not(.no-top-margin) button{pointer-events:auto}.el-message{min-width:80%}.el-message-box{width:80%}.el-select__tags{overflow:hidden}.expl,.expl>p{line-height:16px}.icon-key-input{width:40%;margin-right:4px}.icon-minus-button{width:28px;height:28px;margin-top:4px}.icon-values-container{margin:0 7px 7px 0}.icon-value-input{width:60%;margin-left:4px}.icons-button-container{line-height:24px}.line{margin-bottom:10px}.mascot-form-item .el-form-item__label:not(.no-top-margin){margin:0;padding:0}.mascot-container{margin-bottom:5px}.name-input{width:40%;margin-right:5px}p.expl{line-height:20px}.pattern-input{width:40%;margin-right:4px}.relays-container{margin:0 10px}.replacement-input{width:60%;margin-left:4px;margin-right:5px}.settings-header-container{height:45px}.value-input{width:60%;margin-left:5px;margin-right:8px}}@media only screen and (max-width:818px) and (min-width:481px){.delete-setting-button{margin:4px 0 0 10px;height:28px}.delete-setting-button-container{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p{line-height:18px;margin:0 15px 10px 0}.icon-minus-button{width:28px;height:28px;margin-top:4px}.input{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container .el-form-item__label span{margin-left:10px}.input-row,.nav-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.nav-container{height:36px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px 30px 15px 15px}.rate-limit-content{width:65%}.rate-limit-label-container{width:35%}.settings-delete-button{float:right}.settings-header-container{height:36px}.settings-search-input{width:250px;margin:0 0 15px 15px}}a[data-v-82f78b3e]{text-decoration:underline}.center-label label[data-v-82f78b3e]{text-align:center}.center-label label span[data-v-82f78b3e]{float:left}.code[data-v-82f78b3e]{background-color:rgba(173,190,214,.48);border-radius:3px;font-family:monospace;padding:0 3px}.delete-setting-button[data-v-82f78b3e]{margin-left:5px}.description-container[data-v-82f78b3e]{overflow-wrap:break-word}.description-container .el-form-item__content[data-v-82f78b3e]{line-height:20px}.divider[data-v-82f78b3e]{margin:0 0 18px}.divider.thick-line[data-v-82f78b3e]{height:2px}.docs-search-container[data-v-82f78b3e]{float:right;margin-right:30px}.editable-keyword-container[data-v-82f78b3e]{width:100%}.el-form-item .rate-limit[data-v-82f78b3e]{margin-right:0}.el-input-group__prepend[data-v-82f78b3e]{padding-left:10px;padding-right:10px}.el-tabs__header[data-v-82f78b3e]{z-index:2002}.email-address-input[data-v-82f78b3e]{width:50%;margin-right:10px}.esshd-list[data-v-82f78b3e]{margin:0}.expl>p[data-v-82f78b3e],.expl[data-v-82f78b3e]{color:#666;font-size:13px;line-height:22px;margin:5px 0 0;overflow-wrap:break-word;overflow:hidden;text-overflow:ellipsis}.expl>p code[data-v-82f78b3e],.expl code[data-v-82f78b3e]{display:inline;line-height:22px;font-size:13px;padding:2px 3px}.follow-relay[data-v-82f78b3e]{width:350px;margin-right:7px}.form-container[data-v-82f78b3e]{margin-bottom:80px}.grouped-settings-header[data-v-82f78b3e]{margin:0 0 14px}.highlight[data-v-82f78b3e]{background-color:#e6e6e6}.icons-button-container[data-v-82f78b3e]{width:100%;margin-bottom:10px}.icons-button-desc[data-v-82f78b3e]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;margin-left:5px}.icon-container[data-v-82f78b3e]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:95%}.icon-values-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 10px 10px 0}.icon-key-input[data-v-82f78b3e]{width:30%;margin-right:8px}.icon-minus-button[data-v-82f78b3e]{width:36px;height:36px}.icon-value-input[data-v-82f78b3e]{width:70%;margin-left:8px}.icons-container[data-v-82f78b3e],.input-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex}.input-container[data-v-82f78b3e]{-webkit-box-align:start;-ms-flex-align:start;align-items:start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.input-container .el-form-item[data-v-82f78b3e]{margin-right:30px;width:100%}.input-container .el-select[data-v-82f78b3e],.keyword-container[data-v-82f78b3e]{width:100%}label[data-v-82f78b3e]{overflow:hidden;text-overflow:ellipsis}.label-font[data-v-82f78b3e]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700}.limit-button-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.limit-expl[data-v-82f78b3e]{margin-left:10px}.limit-input[data-v-82f78b3e]{width:47%;margin:0 0 5px 1%}.line[data-v-82f78b3e]{width:100%;height:0;border:1px solid #eee;margin-bottom:18px}.mascot[data-v-82f78b3e]{margin-bottom:15px}.mascot-container[data-v-82f78b3e]{width:100%}.mascot-input[data-v-82f78b3e]{margin-bottom:7px}.mascot-name-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:7px}.mascot-name-input[data-v-82f78b3e]{margin-right:10px}.multiple-select-container[data-v-82f78b3e]{width:100%}.name-input[data-v-82f78b3e]{width:30%;margin-right:8px}.nickname-input[data-v-82f78b3e]{width:50%}.no-top-margin[data-v-82f78b3e]{margin-top:0}.no-top-margin p[data-v-82f78b3e]{margin-right:30px}.pattern-input[data-v-82f78b3e]{width:20%;margin-right:8px}.proxy-url-input[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px;width:100%}.proxy-url-host-input[data-v-82f78b3e]{width:35%;margin-right:8px}.proxy-url-value-input[data-v-82f78b3e]{width:35%;margin-left:8px;margin-right:10px}.prune-options[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.prune-options .el-radio[data-v-82f78b3e]{margin-top:11px}.rate-limit .el-form-item__content[data-v-82f78b3e]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.rate-limit-container[data-v-82f78b3e]{width:100%}.rate-limit-content[data-v-82f78b3e]{width:70%}.rate-limit-label[data-v-82f78b3e]{float:right}.rate-limit-label-container[data-v-82f78b3e]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;width:30%;margin-right:10px}.reboot-button[data-v-82f78b3e]{width:145px;text-align:left;padding:10px;float:right;margin:0 30px 0 0}.reboot-button-container[data-v-82f78b3e]{width:100%;position:fixed;top:60px;right:0;z-index:2000}.relays-container[data-v-82f78b3e]{margin:0 15px}.replacement-input[data-v-82f78b3e]{width:80%;margin-left:8px;margin-right:10px}.sender-input[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px;width:100%}.scale-input[data-v-82f78b3e]{width:47%;margin:0 1% 5px 0}.setting-input[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.setting-label[data-v-82f78b3e]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;line-height:20px;margin:0 0 14px}.settings-container[data-v-82f78b3e]{max-width:1824px;margin:auto}.settings-container .el-tabs[data-v-82f78b3e]{margin-top:20px}.settings-delete-button[data-v-82f78b3e]{margin-left:5px}.settings-docs-button[data-v-82f78b3e]{min-width:163px;text-align:left;padding:10px}.settings-header[data-v-82f78b3e]{margin:10px 15px 15px}.header-sidebar-opened[data-v-82f78b3e]{max-width:1585px}.header-sidebar-closed[data-v-82f78b3e]{max-width:1728px}.settings-header-container[data-v-82f78b3e]{height:87px}.settings-search-input[data-v-82f78b3e]{width:350px;margin-left:5px}.single-input[data-v-82f78b3e]{margin-right:10px}.socks5-checkbox[data-v-82f78b3e]{font-size:14px;color:#606266;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei;font-weight:700;margin-left:10px}.socks5-checkbox-container[data-v-82f78b3e]{width:40%;height:36px;margin-right:5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ssl-tls-opts[data-v-82f78b3e]{margin:36px 0 0}.submit-button[data-v-82f78b3e]{float:right;margin:0 30px 22px 0}.submit-button-container[data-v-82f78b3e]{width:100%;position:fixed;bottom:0;right:0;z-index:2000}.switch-input[data-v-82f78b3e]{height:36px}.text[data-v-82f78b3e]{line-height:20px;margin-right:15px}.upload-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.value-input[data-v-82f78b3e]{width:70%;margin-left:8px;margin-right:10px}@media only screen and (min-width:1824px){.header-sidebar-closed[data-v-82f78b3e]{max-width:1772px}.header-sidebar-opened[data-v-82f78b3e]{max-width:1630px}.reboot-button-container[data-v-82f78b3e]{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}.reboot-sidebar-opened[data-v-82f78b3e]{max-width:1630px}.reboot-sidebar-closed[data-v-82f78b3e]{max-width:1772px}.sidebar-closed[data-v-82f78b3e]{max-width:1586px}.sidebar-opened[data-v-82f78b3e]{max-width:1442px}.submit-button-container[data-v-82f78b3e]{width:100%;max-width:inherit;margin-left:auto;margin-right:auto;right:auto}}@media only screen and (max-width:480px){.crontab[data-v-82f78b3e],.crontab label[data-v-82f78b3e]{width:100%}.delete-setting-button[data-v-82f78b3e]{margin:4px 0 0 5px;height:28px}.delete-setting-button-container[data-v-82f78b3e]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p[data-v-82f78b3e]{line-height:18px;margin:0 5px 7px 15px}.description>p code[data-v-82f78b3e]{display:inline;line-height:18px;padding:2px 3px;font-size:14px}.description-container[data-v-82f78b3e]{margin:0 15px 22px}.divider[data-v-82f78b3e]{margin:0 0 10px}.divider .thick-line[data-v-82f78b3e]{height:2px}.follow-relay[data-v-82f78b3e]{width:75%;margin-right:5px}.follow-relay input[data-v-82f78b3e]{width:100%}.follow-relay-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:0 5px}h1[data-v-82f78b3e]{font-size:24px}.input[data-v-82f78b3e]{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container[data-v-82f78b3e]{width:100%}.input-container .el-form-item[data-v-82f78b3e]:first-child{margin:0;padding:0 15px 10px}.input-container .el-form-item.crontab-container[data-v-82f78b3e]:first-child{margin:0;padding:0}.input-container .el-form-item:first-child .mascot-form-item[data-v-82f78b3e],.input-container .el-form-item:first-child .rate-limit[data-v-82f78b3e]{padding:0}.input-container .settings-delete-button[data-v-82f78b3e]{margin-top:4px;float:right}.input-row[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.label-with-margin[data-v-82f78b3e]{margin-left:15px}.limit-input[data-v-82f78b3e]{width:45%}.nav-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px}.proxy-url-input[data-v-82f78b3e]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-bottom:0}.proxy-url-host-input[data-v-82f78b3e]{width:100%;margin-bottom:5px}.proxy-url-value-input[data-v-82f78b3e]{width:100%;margin-left:0}.prune-options[data-v-82f78b3e]{height:80px}.prune-options[data-v-82f78b3e],.rate-limit .el-form-item__content[data-v-82f78b3e]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.rate-limit-content[data-v-82f78b3e]{width:100%}.rate-limit-label[data-v-82f78b3e]{float:left}.rate-limit-label-container[data-v-82f78b3e]{width:100%}.reboot-button[data-v-82f78b3e]{margin:0 15px 0 0}.reboot-button-container[data-v-82f78b3e]{top:57px}.scale-input[data-v-82f78b3e]{width:45%}.settings-header[data-v-82f78b3e]{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;display:inline-block;margin:10px 15px 15px}.docs-search-container[data-v-82f78b3e]{float:right}.settings-search-input[data-v-82f78b3e]{width:100%;margin-left:0}.settings-search-input-container[data-v-82f78b3e]{margin:0 15px 15px}.settings-menu[data-v-82f78b3e]{width:163px;margin-right:5px}.socks5-checkbox-container[data-v-82f78b3e]{width:100%}.submit-button[data-v-82f78b3e]{margin:0 15px 22px 0}.el-input__inner[data-v-82f78b3e]{padding:0 5px}.el-form-item__label[data-v-82f78b3e]:not(.no-top-margin){padding-bottom:5px;line-height:22px;margin-top:7px;width:100%;pointer-events:none}.el-form-item__label:not(.no-top-margin) span[data-v-82f78b3e]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.el-form-item__label:not(.no-top-margin) button[data-v-82f78b3e]{pointer-events:auto}.el-message[data-v-82f78b3e]{min-width:80%}.el-message-box[data-v-82f78b3e]{width:80%}.el-select__tags[data-v-82f78b3e]{overflow:hidden}.expl>p[data-v-82f78b3e],.expl[data-v-82f78b3e]{line-height:16px}.icon-key-input[data-v-82f78b3e]{width:40%;margin-right:4px}.icon-minus-button[data-v-82f78b3e]{width:28px;height:28px;margin-top:4px}.icon-values-container[data-v-82f78b3e]{margin:0 7px 7px 0}.icon-value-input[data-v-82f78b3e]{width:60%;margin-left:4px}.icons-button-container[data-v-82f78b3e]{line-height:24px}.line[data-v-82f78b3e]{margin-bottom:10px}.mascot-form-item .el-form-item__label[data-v-82f78b3e]:not(.no-top-margin){margin:0;padding:0}.mascot-container[data-v-82f78b3e]{margin-bottom:5px}.name-input[data-v-82f78b3e]{width:40%;margin-right:5px}p.expl[data-v-82f78b3e]{line-height:20px}.pattern-input[data-v-82f78b3e]{width:40%;margin-right:4px}.relays-container[data-v-82f78b3e]{margin:0 10px}.replacement-input[data-v-82f78b3e]{width:60%;margin-left:4px;margin-right:5px}.settings-header-container[data-v-82f78b3e]{height:45px}.value-input[data-v-82f78b3e]{width:60%;margin-left:5px;margin-right:8px}}@media only screen and (max-width:818px) and (min-width:481px){.delete-setting-button[data-v-82f78b3e]{margin:4px 0 0 10px;height:28px}.delete-setting-button-container[data-v-82f78b3e]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.description>p[data-v-82f78b3e]{line-height:18px;margin:0 15px 10px 0}.icon-minus-button[data-v-82f78b3e]{width:28px;height:28px;margin-top:4px}.input[data-v-82f78b3e]{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.input-container .el-form-item__label span[data-v-82f78b3e]{margin-left:10px}.input-row[data-v-82f78b3e],.nav-container[data-v-82f78b3e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.nav-container[data-v-82f78b3e]{height:36px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px 30px 15px 15px}.rate-limit-content[data-v-82f78b3e]{width:65%}.rate-limit-label-container[data-v-82f78b3e]{width:35%}.settings-delete-button[data-v-82f78b3e]{float:right}.settings-header-container[data-v-82f78b3e]{height:36px}.settings-search-input[data-v-82f78b3e]{width:250px;margin:0 0 15px 15px}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-commons.a343b725.css b/priv/static/adminfe/chunk-commons.c0eb3eb7.css similarity index 100% rename from priv/static/adminfe/chunk-commons.a343b725.css rename to priv/static/adminfe/chunk-commons.c0eb3eb7.css diff --git a/priv/static/adminfe/chunk-6198.3c37d6af.css b/priv/static/adminfe/chunk-d34d.b0dd6fb4.css similarity index 100% rename from priv/static/adminfe/chunk-6198.3c37d6af.css rename to priv/static/adminfe/chunk-d34d.b0dd6fb4.css diff --git a/priv/static/adminfe/chunk-d892.56863b19.css b/priv/static/adminfe/chunk-d892.56863b19.css deleted file mode 100644 index 483d88545..000000000 --- a/priv/static/adminfe/chunk-d892.56863b19.css +++ /dev/null @@ -1 +0,0 @@ -.router-link{text-decoration:none}.moderation-log-container[data-v-60b585cf]{margin:0 15px}h1[data-v-60b585cf]{margin:0}.el-timeline[data-v-60b585cf]{margin:25px 45px 0 0;padding:0}.moderation-log-date-panel[data-v-60b585cf]{width:350px}.moderation-log-header-container[data-v-60b585cf]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:10px 0 15px}.moderation-log-header-container[data-v-60b585cf],.moderation-log-nav-container[data-v-60b585cf]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.moderation-log-search[data-v-60b585cf]{width:350px}.moderation-log-user-select[data-v-60b585cf]{margin:0 0 20px;width:350px}.reboot-button[data-v-60b585cf]{padding:10px;margin:0;width:145px}.search-container[data-v-60b585cf]{text-align:right}.pagination[data-v-60b585cf]{text-align:center}@media only screen and (max-width:480px){h1[data-v-60b585cf]{font-size:24px}.moderation-log-date-panel[data-v-60b585cf]{width:100%}.moderation-log-user-select[data-v-60b585cf]{margin:0 0 10px;width:55%}.moderation-log-search[data-v-60b585cf]{width:40%}}@media only screen and (max-width:801px) and (min-width:481px){.moderation-log-date-panel[data-v-60b585cf]{width:55%}.moderation-log-user-select[data-v-60b585cf]{margin:0 0 10px;width:55%}.moderation-log-search[data-v-60b585cf]{width:40%}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-elementUI.40545a1f.css b/priv/static/adminfe/chunk-elementUI.40545a1f.css deleted file mode 100644 index c802d3a40..000000000 --- a/priv/static/adminfe/chunk-elementUI.40545a1f.css +++ /dev/null @@ -1 +0,0 @@ -.el-pagination--small .arrow.disabled,.el-table--hidden,.el-table .hidden-columns,.el-table td.is-hidden>*,.el-table th.is-hidden>*{visibility:hidden}.el-input__suffix,.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing),.el-message__closeBtn:focus,.el-message__content:focus,.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing),.el-rate:active,.el-rate:focus,.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing),.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}@font-face{font-family:element-icons;src:url(static/fonts/element-icons.535877f.woff) format("woff"),url(static/fonts/element-icons.732389d.ttf) format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\E6A0"}.el-icon-ice-cream-square:before{content:"\E6A3"}.el-icon-lollipop:before{content:"\E6A4"}.el-icon-potato-strips:before{content:"\E6A5"}.el-icon-milk-tea:before{content:"\E6A6"}.el-icon-ice-drink:before{content:"\E6A7"}.el-icon-ice-tea:before{content:"\E6A9"}.el-icon-coffee:before{content:"\E6AA"}.el-icon-orange:before{content:"\E6AB"}.el-icon-pear:before{content:"\E6AC"}.el-icon-apple:before{content:"\E6AD"}.el-icon-cherry:before{content:"\E6AE"}.el-icon-watermelon:before{content:"\E6AF"}.el-icon-grape:before{content:"\E6B0"}.el-icon-refrigerator:before{content:"\E6B1"}.el-icon-goblet-square-full:before{content:"\E6B2"}.el-icon-goblet-square:before{content:"\E6B3"}.el-icon-goblet-full:before{content:"\E6B4"}.el-icon-goblet:before{content:"\E6B5"}.el-icon-cold-drink:before{content:"\E6B6"}.el-icon-coffee-cup:before{content:"\E6B8"}.el-icon-water-cup:before{content:"\E6B9"}.el-icon-hot-water:before{content:"\E6BA"}.el-icon-ice-cream:before{content:"\E6BB"}.el-icon-dessert:before{content:"\E6BC"}.el-icon-sugar:before{content:"\E6BD"}.el-icon-tableware:before{content:"\E6BE"}.el-icon-burger:before{content:"\E6BF"}.el-icon-knife-fork:before{content:"\E6C1"}.el-icon-fork-spoon:before{content:"\E6C2"}.el-icon-chicken:before{content:"\E6C3"}.el-icon-food:before{content:"\E6C4"}.el-icon-dish-1:before{content:"\E6C5"}.el-icon-dish:before{content:"\E6C6"}.el-icon-moon-night:before{content:"\E6EE"}.el-icon-moon:before{content:"\E6F0"}.el-icon-cloudy-and-sunny:before{content:"\E6F1"}.el-icon-partly-cloudy:before{content:"\E6F2"}.el-icon-cloudy:before{content:"\E6F3"}.el-icon-sunny:before{content:"\E6F6"}.el-icon-sunset:before{content:"\E6F7"}.el-icon-sunrise-1:before{content:"\E6F8"}.el-icon-sunrise:before{content:"\E6F9"}.el-icon-heavy-rain:before{content:"\E6FA"}.el-icon-lightning:before{content:"\E6FB"}.el-icon-light-rain:before{content:"\E6FC"}.el-icon-wind-power:before{content:"\E6FD"}.el-icon-baseball:before{content:"\E712"}.el-icon-soccer:before{content:"\E713"}.el-icon-football:before{content:"\E715"}.el-icon-basketball:before{content:"\E716"}.el-icon-ship:before{content:"\E73F"}.el-icon-truck:before{content:"\E740"}.el-icon-bicycle:before{content:"\E741"}.el-icon-mobile-phone:before{content:"\E6D3"}.el-icon-service:before{content:"\E6D4"}.el-icon-key:before{content:"\E6E2"}.el-icon-unlock:before{content:"\E6E4"}.el-icon-lock:before{content:"\E6E5"}.el-icon-watch:before{content:"\E6FE"}.el-icon-watch-1:before{content:"\E6FF"}.el-icon-timer:before{content:"\E702"}.el-icon-alarm-clock:before{content:"\E703"}.el-icon-map-location:before{content:"\E704"}.el-icon-delete-location:before{content:"\E705"}.el-icon-add-location:before{content:"\E706"}.el-icon-location-information:before{content:"\E707"}.el-icon-location-outline:before{content:"\E708"}.el-icon-location:before{content:"\E79E"}.el-icon-place:before{content:"\E709"}.el-icon-discover:before{content:"\E70A"}.el-icon-first-aid-kit:before{content:"\E70B"}.el-icon-trophy-1:before{content:"\E70C"}.el-icon-trophy:before{content:"\E70D"}.el-icon-medal:before{content:"\E70E"}.el-icon-medal-1:before{content:"\E70F"}.el-icon-stopwatch:before{content:"\E710"}.el-icon-mic:before{content:"\E711"}.el-icon-copy-document:before{content:"\E718"}.el-icon-full-screen:before{content:"\E719"}.el-icon-switch-button:before{content:"\E71B"}.el-icon-aim:before{content:"\E71C"}.el-icon-crop:before{content:"\E71D"}.el-icon-odometer:before{content:"\E71E"}.el-icon-time:before{content:"\E71F"}.el-icon-bangzhu:before{content:"\E724"}.el-icon-close-notification:before{content:"\E726"}.el-icon-microphone:before{content:"\E727"}.el-icon-turn-off-microphone:before{content:"\E728"}.el-icon-position:before{content:"\E729"}.el-icon-postcard:before{content:"\E72A"}.el-icon-message:before{content:"\E72B"}.el-icon-chat-line-square:before{content:"\E72D"}.el-icon-chat-dot-square:before{content:"\E72E"}.el-icon-chat-dot-round:before{content:"\E72F"}.el-icon-chat-square:before{content:"\E730"}.el-icon-chat-line-round:before{content:"\E731"}.el-icon-chat-round:before{content:"\E732"}.el-icon-set-up:before{content:"\E733"}.el-icon-turn-off:before{content:"\E734"}.el-icon-open:before{content:"\E735"}.el-icon-connection:before{content:"\E736"}.el-icon-link:before{content:"\E737"}.el-icon-cpu:before{content:"\E738"}.el-icon-thumb:before{content:"\E739"}.el-icon-female:before{content:"\E73A"}.el-icon-male:before{content:"\E73B"}.el-icon-guide:before{content:"\E73C"}.el-icon-news:before{content:"\E73E"}.el-icon-price-tag:before{content:"\E744"}.el-icon-discount:before{content:"\E745"}.el-icon-wallet:before{content:"\E747"}.el-icon-coin:before{content:"\E748"}.el-icon-money:before{content:"\E749"}.el-icon-bank-card:before{content:"\E74A"}.el-icon-box:before{content:"\E74B"}.el-icon-present:before{content:"\E74C"}.el-icon-sell:before{content:"\E6D5"}.el-icon-sold-out:before{content:"\E6D6"}.el-icon-shopping-bag-2:before{content:"\E74D"}.el-icon-shopping-bag-1:before{content:"\E74E"}.el-icon-shopping-cart-2:before{content:"\E74F"}.el-icon-shopping-cart-1:before{content:"\E750"}.el-icon-shopping-cart-full:before{content:"\E751"}.el-icon-smoking:before{content:"\E752"}.el-icon-no-smoking:before{content:"\E753"}.el-icon-house:before{content:"\E754"}.el-icon-table-lamp:before{content:"\E755"}.el-icon-school:before{content:"\E756"}.el-icon-office-building:before{content:"\E757"}.el-icon-toilet-paper:before{content:"\E758"}.el-icon-notebook-2:before{content:"\E759"}.el-icon-notebook-1:before{content:"\E75A"}.el-icon-files:before{content:"\E75B"}.el-icon-collection:before{content:"\E75C"}.el-icon-receiving:before{content:"\E75D"}.el-icon-suitcase-1:before{content:"\E760"}.el-icon-suitcase:before{content:"\E761"}.el-icon-film:before{content:"\E763"}.el-icon-collection-tag:before{content:"\E765"}.el-icon-data-analysis:before{content:"\E766"}.el-icon-pie-chart:before{content:"\E767"}.el-icon-data-board:before{content:"\E768"}.el-icon-data-line:before{content:"\E76D"}.el-icon-reading:before{content:"\E769"}.el-icon-magic-stick:before{content:"\E76A"}.el-icon-coordinate:before{content:"\E76B"}.el-icon-mouse:before{content:"\E76C"}.el-icon-brush:before{content:"\E76E"}.el-icon-headset:before{content:"\E76F"}.el-icon-umbrella:before{content:"\E770"}.el-icon-scissors:before{content:"\E771"}.el-icon-mobile:before{content:"\E773"}.el-icon-attract:before{content:"\E774"}.el-icon-monitor:before{content:"\E775"}.el-icon-search:before{content:"\E778"}.el-icon-takeaway-box:before{content:"\E77A"}.el-icon-paperclip:before{content:"\E77D"}.el-icon-printer:before{content:"\E77E"}.el-icon-document-add:before{content:"\E782"}.el-icon-document:before{content:"\E785"}.el-icon-document-checked:before{content:"\E786"}.el-icon-document-copy:before{content:"\E787"}.el-icon-document-delete:before{content:"\E788"}.el-icon-document-remove:before{content:"\E789"}.el-icon-tickets:before{content:"\E78B"}.el-icon-folder-checked:before{content:"\E77F"}.el-icon-folder-delete:before{content:"\E780"}.el-icon-folder-remove:before{content:"\E781"}.el-icon-folder-add:before{content:"\E783"}.el-icon-folder-opened:before{content:"\E784"}.el-icon-folder:before{content:"\E78A"}.el-icon-edit-outline:before{content:"\E764"}.el-icon-edit:before{content:"\E78C"}.el-icon-date:before{content:"\E78E"}.el-icon-c-scale-to-original:before{content:"\E7C6"}.el-icon-view:before{content:"\E6CE"}.el-icon-loading:before{content:"\E6CF"}.el-icon-rank:before{content:"\E6D1"}.el-icon-sort-down:before{content:"\E7C4"}.el-icon-sort-up:before{content:"\E7C5"}.el-icon-sort:before{content:"\E6D2"}.el-icon-finished:before{content:"\E6CD"}.el-icon-refresh-left:before{content:"\E6C7"}.el-icon-refresh-right:before{content:"\E6C8"}.el-icon-refresh:before{content:"\E6D0"}.el-icon-video-play:before{content:"\E7C0"}.el-icon-video-pause:before{content:"\E7C1"}.el-icon-d-arrow-right:before{content:"\E6DC"}.el-icon-d-arrow-left:before{content:"\E6DD"}.el-icon-arrow-up:before{content:"\E6E1"}.el-icon-arrow-down:before{content:"\E6DF"}.el-icon-arrow-right:before{content:"\E6E0"}.el-icon-arrow-left:before{content:"\E6DE"}.el-icon-top-right:before{content:"\E6E7"}.el-icon-top-left:before{content:"\E6E8"}.el-icon-top:before{content:"\E6E6"}.el-icon-bottom:before{content:"\E6EB"}.el-icon-right:before{content:"\E6E9"}.el-icon-back:before{content:"\E6EA"}.el-icon-bottom-right:before{content:"\E6EC"}.el-icon-bottom-left:before{content:"\E6ED"}.el-icon-caret-top:before{content:"\E78F"}.el-icon-caret-bottom:before{content:"\E790"}.el-icon-caret-right:before{content:"\E791"}.el-icon-caret-left:before{content:"\E792"}.el-icon-d-caret:before{content:"\E79A"}.el-icon-share:before{content:"\E793"}.el-icon-menu:before{content:"\E798"}.el-icon-s-grid:before{content:"\E7A6"}.el-icon-s-check:before{content:"\E7A7"}.el-icon-s-data:before{content:"\E7A8"}.el-icon-s-opportunity:before{content:"\E7AA"}.el-icon-s-custom:before{content:"\E7AB"}.el-icon-s-claim:before{content:"\E7AD"}.el-icon-s-finance:before{content:"\E7AE"}.el-icon-s-comment:before{content:"\E7AF"}.el-icon-s-flag:before{content:"\E7B0"}.el-icon-s-marketing:before{content:"\E7B1"}.el-icon-s-shop:before{content:"\E7B4"}.el-icon-s-open:before{content:"\E7B5"}.el-icon-s-management:before{content:"\E7B6"}.el-icon-s-ticket:before{content:"\E7B7"}.el-icon-s-release:before{content:"\E7B8"}.el-icon-s-home:before{content:"\E7B9"}.el-icon-s-promotion:before{content:"\E7BA"}.el-icon-s-operation:before{content:"\E7BB"}.el-icon-s-unfold:before{content:"\E7BC"}.el-icon-s-fold:before{content:"\E7A9"}.el-icon-s-platform:before{content:"\E7BD"}.el-icon-s-order:before{content:"\E7BE"}.el-icon-s-cooperation:before{content:"\E7BF"}.el-icon-bell:before{content:"\E725"}.el-icon-message-solid:before{content:"\E799"}.el-icon-video-camera:before{content:"\E772"}.el-icon-video-camera-solid:before{content:"\E796"}.el-icon-camera:before{content:"\E779"}.el-icon-camera-solid:before{content:"\E79B"}.el-icon-download:before{content:"\E77C"}.el-icon-upload2:before{content:"\E77B"}.el-icon-upload:before{content:"\E7C3"}.el-icon-picture-outline-round:before{content:"\E75F"}.el-icon-picture-outline:before{content:"\E75E"}.el-icon-picture:before{content:"\E79F"}.el-icon-close:before{content:"\E6DB"}.el-icon-check:before{content:"\E6DA"}.el-icon-plus:before{content:"\E6D9"}.el-icon-minus:before{content:"\E6D8"}.el-icon-help:before{content:"\E73D"}.el-icon-s-help:before{content:"\E7B3"}.el-icon-circle-close:before{content:"\E78D"}.el-icon-circle-check:before{content:"\E720"}.el-icon-circle-plus-outline:before{content:"\E723"}.el-icon-remove-outline:before{content:"\E722"}.el-icon-zoom-out:before{content:"\E776"}.el-icon-zoom-in:before{content:"\E777"}.el-icon-error:before{content:"\E79D"}.el-icon-success:before{content:"\E79C"}.el-icon-circle-plus:before{content:"\E7A0"}.el-icon-remove:before{content:"\E7A2"}.el-icon-info:before{content:"\E7A1"}.el-icon-question:before{content:"\E7A4"}.el-icon-warning-outline:before{content:"\E6C9"}.el-icon-warning:before{content:"\E7A3"}.el-icon-goods:before{content:"\E7C2"}.el-icon-s-goods:before{content:"\E7B2"}.el-icon-star-off:before{content:"\E717"}.el-icon-star-on:before{content:"\E797"}.el-icon-more-outline:before{content:"\E6CC"}.el-icon-more:before{content:"\E794"}.el-icon-phone-outline:before{content:"\E6CB"}.el-icon-phone:before{content:"\E795"}.el-icon-user:before{content:"\E6E3"}.el-icon-user-solid:before{content:"\E7A5"}.el-icon-setting:before{content:"\E6CA"}.el-icon-s-tools:before{content:"\E7AC"}.el-icon-delete:before{content:"\E6D7"}.el-icon-delete-solid:before{content:"\E7C9"}.el-icon-eleme:before{content:"\E7C7"}.el-icon-platform-eleme:before{content:"\E7CA"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes rotating{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination:after,.el-pagination:before{display:table;content:""}.el-pagination:after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#409eff}.el-pagination button:disabled{color:#c0c4cc;background-color:#fff;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:50% no-repeat #fff;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#c0c4cc;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .more:before,.el-pagination--small li.more:before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#409eff}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#c0c4cc}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#409eff}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#409eff;color:#fff}.el-dialog,.el-pager li{background:#fff;-webkit-box-sizing:border-box}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-ms-user-select:none;user-select:none;list-style:none;font-size:0}.el-date-table,.el-pager,.el-table th{-webkit-user-select:none;-moz-user-select:none}.el-pager .more:before{line-height:30px}.el-pager li{padding:0 4px;font-size:13px;min-width:35.5px;height:28px;line-height:28px;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center}.el-menu--collapse .el-menu .el-submenu,.el-menu--popup{min-width:200px}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#c0c4cc}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#409eff}.el-pager li.active{color:#409eff;cursor:default}@-webkit-keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{to{opacity:0}}.el-dialog{position:relative;margin:0 auto 50px;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);-webkit-box-sizing:border-box;box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#409eff}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:10px 20px 20px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #e4e7ed;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff}.el-dropdown-menu,.el-menu--collapse .el-submenu .el-menu{z-index:10;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#f5f7fa}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#fff}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button:before{content:"";position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:hsla(0,0%,100%,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default:before{background:rgba(220,223,230,.5)}.el-dropdown .el-dropdown__caret-button:hover:before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown-menu{position:absolute;top:0;left:0;padding:10px 0;margin:5px 0;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#606266;cursor:pointer;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#ecf5ff;color:#66b1ff}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #ebeef5}.el-dropdown-menu__item--divided:before{content:"";height:6px;display:block;margin:0 -20px;background-color:#fff}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:1px solid #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0}.el-menu,.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu:after,.el-menu:before{display:table;content:""}.el-menu:after{clear:both}.el-menu.el-menu--horizontal{border-bottom:1px solid #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #409eff;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #409eff;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;border:1px solid #e4e7ed;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;position:relative;-webkit-box-sizing:border-box;white-space:nowrap;list-style:none}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;transform:none}.el-menu--popup{z-index:100;border:none;padding:5px 0;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#ecf5ff}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#409eff}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#ecf5ff}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#ecf5ff}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#409eff}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio-button__inner,.el-radio-group{display:inline-block;line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.el-radio-group{font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{white-space:nowrap;background:#fff;border:1px solid #dcdfe6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#409eff}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#409eff;border-color:#409eff;-webkit-box-shadow:-1px 0 0 0 #409eff;box-shadow:-1px 0 0 0 #409eff}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#f2f6fc}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-popover,.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){-webkit-box-shadow:0 0 2px 2px #409eff;box-shadow:0 0 2px 2px #409eff}.el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#409eff}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #dcdfe6;outline:0;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#dcdfe6;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#fff}.el-switch.is-checked .el-switch__core{border-color:#409eff;background-color:#409eff}.el-switch.is-checked .el-switch__core:after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #e4e7ed;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#409eff;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected:after{position:absolute;right:20px;font-family:element-icons;content:"\E6DA";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#f5f7fa}.el-select-dropdown__item.selected{color:#409eff;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type):after{content:"";position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#e4e7ed}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#c0c4cc}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#409eff}.el-select .el-input .el-select__caret{color:#c0c4cc;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotate(180deg);transform:rotate(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotate(0);transform:rotate(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotate(180deg);transform:rotate(180deg);border-radius:100%;color:#c0c4cc;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#e4e7ed}.el-select .el-input.is-focus .el-input__inner{border-color:#409eff}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#c0c4cc;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select .el-tag__close{margin-top:-2px}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5}.el-select .el-tag__close.el-icon-close{background-color:#c0c4cc;right:-7px;top:0;color:#fff}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#fff}.el-select .el-tag__close.el-icon-close:before{display:block;-webkit-transform:translateY(.5px);transform:translateY(.5px)}.el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table--mini,.el-table--small,.el-table__expand-icon{font-size:12px}.el-table__empty-block{min-height:60px;text-align:center;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit td.gutter,.el-table--fit th.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th{background:#f5f7fa}.el-table th,.el-table tr{background-color:#fff}.el-table td,.el-table th{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table td.is-center,.el-table th.is-center{text-align:center}.el-table td.is-right,.el-table th.is-right{text-align:right}.el-table td.gutter,.el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table--medium td,.el-table--medium th{padding:10px 0}.el-table--small td,.el-table--small th{padding:8px 0}.el-table--mini td,.el-table--mini th{padding:6px 0}.el-table--border td:first-child .cell,.el-table--border th:first-child .cell,.el-table .cell{padding-left:10px}.el-table tr input[type=checkbox]{margin:0}.el-table td,.el-table th.is-leaf{border-bottom:1px solid #ebeef5}.el-table th.is-sortable{cursor:pointer}.el-table th{overflow:hidden;-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-table th>.cell{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th>.cell.highlight{color:#409eff}.el-table th.required>div:before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-table td.gutter{width:0}.el-table .cell{-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #ebeef5}.el-table--border:after,.el-table--group:after,.el-table:before{content:"";position:absolute;background-color:#ebeef5;z-index:1}.el-table--border:after,.el-table--group:after{top:0;right:0;width:1px;height:100%}.el-table:before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border td,.el-table--border th,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #ebeef5}.el-table--border th,.el-table--border th.gutter:last-of-type,.el-table__fixed-right-patch{border-bottom:1px solid #ebeef5}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right:before,.el-table__fixed:before{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#ebeef5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#fff}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td{border-top:1px solid #ebeef5;background-color:#f5f7fa;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td{border-top:1px solid #ebeef5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td,.el-table__header-wrapper tbody td{background-color:#f5f7fa;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-picker-panel,.el-table-filter{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #ebeef5}.el-table .caret-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#c0c4cc;top:5px}.el-table .sort-caret.descending{border-top-color:#c0c4cc;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#409eff}.el-table .descending .sort-caret.descending{border-top-color:#409eff}.el-table .hidden-columns{position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td{background:#fafafa}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td{background-color:#ecf5ff}.el-table__body tr.hover-row.current-row>td,.el-table__body tr.hover-row.el-table__row--striped.current-row>td,.el-table__body tr.hover-row.el-table__row--striped>td,.el-table__body tr.hover-row>td{background-color:#f5f7fa}.el-table__body tr.current-row>td{background-color:#ecf5ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #ebeef5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.el-table--enable-row-transition .el-table__body td{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#f5f7fa}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #ebeef5;border-radius:2px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.el-date-table td,.el-date-table td div{height:30px;-webkit-box-sizing:border-box}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#ecf5ff;color:#66b1ff}.el-table-filter__list-item.is-active{background-color:#409eff;color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #ebeef5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div,.el-date-table td.in-range div,.el-date-table td.in-range div:hover{background-color:#f2f6fc}.el-table-filter__bottom button:hover{color:#409eff}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;padding:4px 0;text-align:center;cursor:pointer;position:relative}.el-date-table td,.el-date-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-table td div{padding:3px 0}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#c0c4cc}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#409eff;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#fff}.el-date-table td.available:hover{color:#409eff}.el-date-table td.current:not(.disabled) span{color:#fff;background-color:#409eff}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#fff}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#409eff}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#f5f7fa;opacity:1;cursor:not-allowed;color:#c0c4cc}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#f2f6fc;border-radius:15px}.el-date-table td.selected div:hover{background-color:#f2f6fc}.el-date-table td.selected span{background-color:#409eff;color:#fff;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:1px solid #ebeef5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-month-table td.today .cell{color:#409eff;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#fff}.el-month-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-month-table td.disabled .cell:hover{color:#c0c4cc}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#409eff}.el-month-table td.in-range div,.el-month-table td.in-range div:hover{background-color:#f2f6fc}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#fff}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#fff;background-color:#409eff}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#409eff}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#409eff;font-weight:700}.el-year-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-year-table td.disabled .cell:hover{color:#c0c4cc}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#409eff}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:1px solid #ebeef5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#409eff}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#409eff;font-weight:700}.time-select-item.disabled{color:#e4e7ed;cursor:not-allowed}.time-select-item:hover{background-color:#f5f7fa;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#c0c4cc;float:left;line-height:32px}.el-date-editor .el-range-input,.el-date-editor .el-range-separator{height:100%;margin:0;text-align:center;display:inline-block;font-size:14px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;padding:0;width:39%;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input:-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::placeholder{color:#c0c4cc}.el-date-editor .el-range-separator{padding:0 5px;line-height:32px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#c0c4cc;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active,.el-range-editor.is-active:hover{border-color:#409eff}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#e4e7ed}.el-range-editor.is-disabled input{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input:-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::placeholder{color:#c0c4cc}.el-range-editor.is-disabled .el-range-separator{color:#c0c4cc}.el-picker-panel{color:#606266;border:1px solid #e4e7ed;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.el-picker-panel,.el-popover,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#409eff}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#409eff}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#409eff}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#409eff}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#c0c4cc;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #e4e7ed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;user-select:none;-webkit-box-sizing:content-box;box-sizing:content-box}.el-slider__button,.el-slider__button-wrapper,.el-time-panel{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content:after,.el-time-panel__content:before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #e4e7ed;border-bottom:1px solid #e4e7ed}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds:after{left:66.66667%}.el-time-panel__content.has-seconds:before{padding-left:33.33333%}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#409eff}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #e4e7ed}.el-popover{position:absolute;background:#fff;min-width:150px;border:1px solid #ebeef5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#fff;border-radius:4px;border:1px solid #ebeef5;font-size:18px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper:after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#f56c6c}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#409eff}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.el-message-box__status:before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67c23a}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#e6a23c}.el-message-box__status.el-icon-error{color:#f56c6c}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#f56c6c;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{display:table;content:""}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#c0c4cc}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner.is-link,.el-breadcrumb__inner a{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner.is-link:hover,.el-breadcrumb__inner a:hover{color:#409eff;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item:after,.el-form-item:before{display:table;content:""}.el-form-item:after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content:after,.el-form-item__content:before{display:table;content:""}.el-form-item__content:after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#f56c6c;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:"*";color:#f56c6c;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#f56c6c}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#409eff;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.el-collapse-item__arrow,.el-tabs__nav{-webkit-transition:-webkit-transform .3s}.el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8);transform:scale(.8)}.el-tabs__new-tab:hover{color:#409eff}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#e4e7ed;z-index:1}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after,.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:-webkit-transform .3s;-webkit-transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.el-tabs__nav.is-stretch>*{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){-webkit-box-shadow:0 0 2px 2px #409eff inset;box-shadow:inset 0 0 2px 2px #409eff;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#c0c4cc;color:#fff}.el-tabs__item.is-active{color:#409eff}.el-tabs__item:hover{color:#409eff;cursor:pointer}.el-tabs__item.is-disabled{color:#c0c4cc;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #e4e7ed}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #e4e7ed;border-bottom:none;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #e4e7ed;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--border-card{background:#fff;border:1px solid #dcdfe6;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#409eff;background-color:#fff;border-right-color:#dcdfe6;border-left-color:#dcdfe6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#409eff}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#c0c4cc}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #dcdfe6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{right:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border:1px solid #e4e7ed;border-bottom:none;border-left:none;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #e4e7ed;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:none;border-top:1px solid #e4e7ed;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #e4e7ed;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #e4e7ed}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #e4e7ed;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:none;border-top:1px solid #e4e7ed;border-left:1px solid #fff}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #e4e7ed;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.el-tree{position:relative;cursor:default;background:#fff;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#409eff}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#f5f7fa}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#409eff;color:#fff}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#f5f7fa}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#c0c4cc;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#c0c4cc}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#c0c4cc}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#fff}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67c23a}.el-alert--success.is-light .el-alert__description{color:#67c23a}.el-alert--success.is-dark{background-color:#67c23a;color:#fff}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#fff}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#e6a23c}.el-alert--warning.is-light .el-alert__description{color:#e6a23c}.el-alert--warning.is-dark{background-color:#e6a23c;color:#fff}.el-alert--error.is-light{background-color:#fef0f0;color:#f56c6c}.el-alert--error.is-light .el-alert__description{color:#f56c6c}.el-alert--error.is-dark{background-color:#f56c6c;color:#fff}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active{opacity:0}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67c23a}.el-notification .el-icon-error{color:#f56c6c}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#e6a23c}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#409eff}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#409eff}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #dcdfe6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #dcdfe6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#e4e7ed;color:#e4e7ed}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#e4e7ed;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #dcdfe6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #dcdfe6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow:after{content:" ";border-width:5px}.el-progress-bar__inner:after,.el-row:after,.el-row:before,.el-slider:after,.el-slider:before,.el-slider__button-wrapper:after,.el-upload-cover:after{content:""}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow:after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow:after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow:after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow:after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow:after{border-right-color:#fff}.el-slider:after,.el-slider:before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper:after{vertical-align:middle;display:inline-block}.el-slider:after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#e4e7ed;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button{border-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);transform:scale(1);cursor:not-allowed}.el-slider__button-wrapper,.el-slider__stop{-webkit-transform:translateX(-50%);position:absolute}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#409eff;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;z-index:1001;top:-15px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:normal}.el-slider__button-wrapper:after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #409eff;background-color:#fff;border-radius:50%;-webkit-transition:.2s;transition:.2s;user-select:none}.el-image-viewer__btn,.el-slider__button,.el-step__icon-inner{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{height:6px;width:6px;border-radius:100%;background-color:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px}.el-slider.is-vertical .el-slider__button-wrapper,.el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #dcdfe6;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#c0c4cc}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#409eff}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:hsla(0,0%,100%,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-2,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-pull-10,.el-col-pull-11,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-push-0,.el-col-push-1,.el-col-push-2,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-row{position:relative}.el-loading-spinner .el-loading-text{color:#409eff;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#409eff;stroke-linecap:round}.el-loading-spinner i{color:#409eff}@-webkit-keyframes loading-rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loading-rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{-webkit-box-sizing:border-box;box-sizing:border-box}.el-row:after,.el-row:before{display:table}.el-row:after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-upload--picture-card,.el-upload-dragger{-webkit-box-sizing:border-box;cursor:pointer}.el-col-0{width:0}.el-col-offset-0{margin-left:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}@-webkit-keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#409eff;color:#409eff}.el-upload:focus .el-upload-dragger{border-color:#409eff}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:360px;height:180px;text-align:center;position:relative;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#c0c4cc;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #dcdfe6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#409eff;font-style:normal}.el-upload-dragger:hover{border-color:#409eff}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #409eff}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67c23a}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#409eff}.el-upload-list__item:hover{background-color:#f5f7fa}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#409eff;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;-webkit-transition:color .3s;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#409eff}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#fff}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover:after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress-bar,.el-progress-bar__inner:after,.el-progress-bar__innerText,.el-spinner{display:inline-block;vertical-align:middle}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67c23a}.el-progress.is-success .el-progress__text{color:#67c23a}.el-progress.is-warning .el-progress-bar__inner{background-color:#e6a23c}.el-progress.is-warning .el-progress__text{color:#e6a23c}.el-progress.is-exception .el-progress-bar__inner{background-color:#f56c6c}.el-progress.is-exception .el-progress__text{color:#f56c6c}.el-progress-bar{padding-right:50px;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#ebeef5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#409eff;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.el-card,.el-message{border-radius:4px;overflow:hidden}.el-progress-bar__inner:after{height:100%}.el-progress-bar__innerText{color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,transform .4s,top .4s;transition:opacity .3s,transform .4s,top .4s,-webkit-transform .4s;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67c23a}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#e6a23c}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#f56c6c}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#c0c4cc;font-size:16px}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67c23a}.el-message .el-icon-error{color:#f56c6c}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#e6a23c}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#f56c6c;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#409eff}.el-badge__content--success{background-color:#67c23a}.el-badge__content--warning{background-color:#e6a23c}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#f56c6c}.el-card{border:1px solid #ebeef5;background-color:#fff;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#c0c4cc;-webkit-transition:.3s;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-webkit-box;display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:-webkit-box;display:-ms-flexbox;display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#f5f7fa}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#c0c4cc;border-color:#c0c4cc}.el-step__head.is-success{color:#67c23a;border-color:#67c23a}.el-step__head.is-error{color:#f56c6c;border-color:#f56c6c}.el-step__head.is-finish{color:#409eff;border-color:#409eff}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;-webkit-transition:.15s ease-out;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#c0c4cc}.el-step__line-inner{display:block;border:1px solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#c0c4cc}.el-step__title.is-success{color:#67c23a}.el-step__title.is-error{color:#f56c6c}.el-step__title.is-finish{color:#409eff}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#c0c4cc}.el-step__description.is-success{color:#67c23a}.el-step__description.is-error{color:#f56c6c}.el-step__description.is-finish{color:#409eff}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:-webkit-box;display:-ms-flexbox;display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{content:"";display:inline-block;position:absolute;height:15px;width:1px;background:#c0c4cc}.el-step.is-simple .el-step__arrow:before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#c0c4cc;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.el-carousel__item,.el-carousel__mask{height:100%;top:0;left:0;position:absolute}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item--card,.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#fff;opacity:.24;-webkit-transition:.2s;transition:.2s}.el-fade-in-enter,.el-fade-in-leave-active,.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active,.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-enter-active,.el-fade-in-leave-active,.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1);transform:scale(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45);transform:scale(.45)}.collapse-transition{-webkit-transition:height .3s ease-in-out,padding-top .3s ease-in-out,padding-bottom .3s ease-in-out;transition:height .3s ease-in-out,padding-top .3s ease-in-out,padding-bottom .3s ease-in-out}.horizontal-collapse-transition{-webkit-transition:width .3s ease-in-out,padding-left .3s ease-in-out,padding-right .3s ease-in-out;transition:width .3s ease-in-out,padding-left .3s ease-in-out,padding-right .3s ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #ebeef5;border-bottom:1px solid #ebeef5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:48px;line-height:48px;background-color:#fff;color:#303133;cursor:pointer;border-bottom:1px solid #ebeef5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:-webkit-transform .3s;-webkit-transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#409eff}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#fff;overflow:hidden;box-sizing:border-box;border-bottom:1px solid #ebeef5}.el-cascader__tags,.el-collapse-item__wrap,.el-tag{-webkit-box-sizing:border-box}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,.03));filter:drop-shadow(0 2px 12px rgba(0,0,0,.03))}.el-popper .popper__arrow:after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow:after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-tag{background-color:#ecf5ff;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#409eff;border:1px solid #d9ecff;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#409eff}.el-tag .el-tag__close{color:#409eff}.el-tag .el-tag__close:hover{color:#fff;background-color:#409eff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67c23a}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close:before{display:block}.el-tag--dark{background-color:#409eff;color:#fff}.el-tag--dark,.el-tag--dark.is-hit{border-color:#409eff}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#66b1ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67c23a}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d8ff;color:#409eff}.el-tag--plain.is-hit{border-color:#409eff}.el-tag--plain .el-tag__close{color:#409eff}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#409eff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#c0c4cc}.el-cascader .el-input .el-input__inner:focus,.el-cascader .el-input.is-focus .el-input__inner{border-color:#409eff}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#c0c4cc}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#fff;border:1px solid #e4e7ed;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:normal;text-align:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__tags .el-tag{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{-webkit-box-flex:0;-ms-flex:none;flex:none;background-color:#c0c4cc;color:#fff}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#f5f7fa}.el-cascader__suggestion-item.is-checked{color:#409eff;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#c0c4cc}.el-cascader__search-input{-webkit-box-flex:1;-ms-flex:1;flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__search-input::-webkit-input-placeholder{color:#c0c4cc}.el-cascader__search-input:-ms-input-placeholder{color:#c0c4cc}.el-cascader__search-input::-ms-input-placeholder{color:#c0c4cc}.el-cascader__search-input::placeholder{color:#c0c4cc}.el-color-predefine{font-size:12px;margin-top:8px;width:280px}.el-color-predefine,.el-color-predefine__colors{display:-webkit-box;display:-ms-flexbox;display:flex}.el-color-predefine__colors{-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{-webkit-box-shadow:0 0 3px 2px #409eff;box-shadow:0 0 3px 2px #409eff}.el-color-predefine__color-selector>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,color-stop(0,red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,color-stop(0,red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(hsla(0,0%,100%,0)));background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(transparent));background:linear-gradient(0deg,#000,transparent)}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,color-stop(0,hsla(0,0%,100%,0)),to(#fff));background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,#fff);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,color-stop(0,hsla(0,0%,100%,0)),to(#fff));background:linear-gradient(180deg,hsla(0,0%,100%,0) 0,#fff)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#409eff;border-color:#409eff}.el-color-dropdown__link-btn{cursor:pointer;color:#409eff;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#409eff,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:hsla(0,0%,100%,.7)}.el-color-picker__trigger{display:inline-block;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;cursor:pointer}.el-color-picker__color,.el-color-picker__trigger{-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-color-picker__color{display:block;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty,.el-color-picker__icon{top:50%;left:50%;font-size:12px;position:absolute}.el-color-picker__empty{color:#999}.el-color-picker__empty,.el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{display:inline-block;width:100%;color:#fff;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner:-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#409eff}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:normal;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__prefix,.el-input__suffix{position:absolute;top:0;-webkit-transition:all .3s;height:100%;color:#c0c4cc;text-align:center}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner:-ms-input-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#409eff;outline:0}.el-input__suffix{right:5px;-webkit-transition:all .3s;transition:all .3s}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{left:5px}.el-input__icon,.el-input__prefix{-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-link,.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--prepend .el-input__inner,.el-input-group__append{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#fff;background-color:#409eff;font-size:0}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #dcdfe6;background-color:#f5f7fa;color:#c0c4cc}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-transfer-panel{border:1px solid #ebeef5;border-radius:4px;overflow:hidden;background:#fff;display:inline-block;vertical-align:middle;width:200px;max-height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block}.el-transfer-panel__item+.el-transfer-panel__item{margin-left:0;display:block!important}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#409eff}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#f5f7fa;margin:0;padding-left:15px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-divider__text,.el-link{font-weight:500;font-size:14px}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#fff;margin:0;padding:0;border-top:1px solid #ebeef5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-container,.el-timeline-item__node{display:-webkit-box;display:-ms-flexbox}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner:after{height:6px;width:3px;left:4px}.el-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:0}.el-container.is-vertical,.el-drawer{-webkit-box-orient:vertical;-webkit-box-direction:normal}.el-aside,.el-header{-webkit-box-sizing:border-box}.el-container.is-vertical{-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.el-header{padding:0 20px}.el-aside,.el-header{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside{overflow:auto}.el-footer,.el-main{-webkit-box-sizing:border-box}.el-main{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow:auto;padding:20px}.el-footer,.el-main{-webkit-box-sizing:border-box;box-sizing:border-box}.el-footer{padding:0 20px;-ms-flex-negative:0;flex-shrink:0}.el-timeline{margin:0;font-size:14px;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #e4e7ed}.el-timeline-item__icon{color:#fff;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#e4e7ed;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image__error,.el-timeline-item__dot{display:-webkit-box;display:-ms-flexbox}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#409eff}.el-timeline-item__node--success{background-color:#67c23a}.el-timeline-item__node--warning{background-color:#e6a23c}.el-timeline-item__node--danger{background-color:#f56c6c}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;padding:0}.el-link.is-underline:hover:after{content:"";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #409eff}.el-link.el-link--default:after,.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:#409eff}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#409eff}.el-link.el-link--default.is-disabled{color:#c0c4cc}.el-link.el-link--primary{color:#409eff}.el-link.el-link--primary:hover{color:#66b1ff}.el-link.el-link--primary.is-disabled{color:#a0cfff}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:#f56c6c}.el-link.el-link--danger{color:#f56c6c}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:#67c23a}.el-link.el-link--success{color:#67c23a}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:#e6a23c}.el-link.el-link--warning{color:#e6a23c}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-divider{background-color:#dcdfe6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#fff;padding:0 20px;color:#303133}.el-image__error,.el-image__placeholder{background:#f5f7fa}.el-divider__text.is-left{left:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-divider__text.is-center{left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:block}.el-image__error{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px;color:#c0c4cc;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;opacity:.8;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;user-select:none}.el-button,.el-checkbox,.el-image-viewer__btn{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:40px}.el-image-viewer__canvas{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.el-image-viewer__next,.el-image-viewer__prev{top:50%;width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{-webkit-animation:viewer-fade-in .3s;animation:viewer-fade-in .3s}.viewer-fade-leave-active{-webkit-animation:viewer-fade-out .3s;animation:viewer-fade-out .3s}@-webkit-keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@-webkit-keyframes viewer-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes viewer-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button:focus,.el-button:hover{color:#409eff;border-color:#c6e2ff;background-color:#ecf5ff}.el-button:active{color:#3a8ee6;border-color:#3a8ee6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#409eff;color:#409eff}.el-button.is-active,.el-button.is-plain:active{color:#3a8ee6;border-color:#3a8ee6}.el-button.is-plain:active{background:#fff;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:hsla(0,0%,100%,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#409eff;border-color:#409eff}.el-button--primary:focus,.el-button--primary:hover{background:#66b1ff;border-color:#66b1ff;color:#fff}.el-button--primary.is-active,.el-button--primary:active{background:#3a8ee6;border-color:#3a8ee6;color:#fff}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#a0cfff;border-color:#a0cfff}.el-button--primary.is-plain{color:#409eff;background:#ecf5ff;border-color:#b3d8ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#409eff;border-color:#409eff;color:#fff}.el-button--primary.is-plain:active{background:#3a8ee6;border-color:#3a8ee6;color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8cc5ff;background-color:#ecf5ff;border-color:#d9ecff}.el-button--success{color:#fff;background-color:#67c23a;border-color:#67c23a}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#fff}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#fff}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67c23a;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67c23a;border-color:#67c23a;color:#fff}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--text,.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--mini,.el-button--small{font-size:12px;border-radius:3px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small,.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{color:#409eff;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#66b1ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3a8ee6;background-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group:after,.el-button-group:before{display:table;content:""}.el-button-group:after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--primary:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--primary:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--success:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--success:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--warning:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--warning:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--info:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--info:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-calendar{background-color:#fff}.el-calendar__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #ebeef5}.el-backtop,.el-page-header{display:-webkit-box;display:-ms-flexbox}.el-calendar__title{color:#000;-ms-flex-item-align:center;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#c0c4cc}.el-backtop,.el-calendar-table td.is-today{color:#409eff}.el-calendar-table td{border-bottom:1px solid #ebeef5;border-right:1px solid #ebeef5;vertical-align:top;-webkit-transition:background-color .2s ease;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#f2f8fe}.el-calendar-table tr:first-child td{border-top:1px solid #ebeef5}.el-calendar-table tr td:first-child{border-left:1px solid #ebeef5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#f2f8fe}.el-backtop{position:fixed;background-color:#fff;width:40px;height:40px;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:20px;-webkit-box-shadow:0 0 6px rgba(0,0,0,.12);box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#f2f6fc}.el-page-header{line-height:24px}.el-page-header,.el-page-header__left{display:-webkit-box;display:-ms-flexbox;display:flex}.el-page-header__left{cursor:pointer;margin-right:40px;position:relative}.el-page-header__left:after{content:"";position:absolute;width:1px;height:16px;right:-20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:#dcdfe6}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;-ms-flex-item-align:center;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-size:14px;cursor:pointer;user-select:none;margin-right:30px}.el-checkbox,.el-checkbox-button__inner,.el-radio{font-weight:500;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#409eff}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#409eff;border-color:#409eff}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner:after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#409eff}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#409eff}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{content:"";position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#409eff}.el-checkbox__inner:after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{display:inline-block;position:relative}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button__inner{line-height:1;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#409eff}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-radio,.el-radio__input{line-height:1;outline:0;white-space:nowrap}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#409eff;border-color:#409eff;-webkit-box-shadow:-1px 0 0 0 #8cc5ff;box-shadow:-1px 0 0 0 #8cc5ff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#409eff}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#409eff}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-radio,.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio{color:#606266;cursor:pointer;margin-right:30px}.el-cascader-node>.el-radio,.el-radio:last-child{margin-right:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#409eff}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio__input{cursor:pointer;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner:after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#409eff;background:#409eff}.el-radio__input.is-checked .el-radio__inner:after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#409eff}.el-radio__input.is-focus .el-radio__inner{border-color:#409eff}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#409eff}.el-radio__inner:after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #409eff;box-shadow:0 0 2px 2px #409eff}.el-radio__label{font-size:14px;padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity .34s ease-out;transition:opacity .34s ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:background-color .3s;transition:background-color .3s}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity .12s ease-out;transition:opacity .12s ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:4px;font-size:14px}.el-cascader-panel.is-bordered{border:1px solid #e4e7ed;border-radius:4px}.el-cascader-menu{min-width:180px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;border-right:1px solid #e4e7ed}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;-webkit-box-sizing:border-box;box-sizing:border-box}.el-avatar,.el-drawer{-webkit-box-sizing:border-box;overflow:hidden}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;color:#c0c4cc}.el-cascader-node{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#409eff;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#f5f7fa}.el-cascader-node.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;color:#fff;background:#c0c4cc;width:40px;height:40px;line-height:40px;font-size:14px}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-drawer,.el-drawer__header{display:-webkit-box;display:-ms-flexbox}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}.el-drawer.btt,.el-drawer.ttb,.el-drawer__container{left:0;right:0;width:100%}.el-drawer.ltr,.el-drawer.rtl,.el-drawer__container{top:0;bottom:0;height:100%}@-webkit-keyframes el-drawer-fade-in{0%{opacity:0}to{opacity:1}}@keyframes el-drawer-fade-in{0%{opacity:0}to{opacity:1}}@-webkit-keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%);transform:translate(100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%);transform:translate(100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@-webkit-keyframes rtl-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translate(100%);transform:translate(100%)}}@keyframes rtl-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translate(100%);transform:translate(100%)}}@-webkit-keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%);transform:translate(-100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%);transform:translate(-100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@-webkit-keyframes ltr-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translate(-100%);transform:translate(-100%)}}@keyframes ltr-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translate(-100%);transform:translate(-100%)}}@-webkit-keyframes ttb-drawer-in{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@keyframes ttb-drawer-in{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@-webkit-keyframes ttb-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes ttb-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@-webkit-keyframes btt-drawer-in{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@keyframes btt-drawer-in{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@-webkit-keyframes btt-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes btt-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translateY(100%);transform:translateY(100%)}}.el-drawer{position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.el-drawer.rtl{-webkit-animation:rtl-drawer-out .3s;animation:rtl-drawer-out .3s;right:0}.el-drawer__open .el-drawer.rtl{-webkit-animation:rtl-drawer-in .3s 1ms;animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{-webkit-animation:ltr-drawer-out .3s;animation:ltr-drawer-out .3s;left:0}.el-drawer__open .el-drawer.ltr{-webkit-animation:ltr-drawer-in .3s 1ms;animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{-webkit-animation:ttb-drawer-out .3s;animation:ttb-drawer-out .3s;top:0}.el-drawer__open .el-drawer.ttb{-webkit-animation:ttb-drawer-in .3s 1ms;animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{-webkit-animation:btt-drawer-out .3s;animation:btt-drawer-out .3s;bottom:0}.el-drawer__open .el-drawer.btt{-webkit-animation:btt-drawer-in .3s 1ms;animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#72767b;display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:32px;padding:20px 20px 0}.el-drawer__header>:first-child,.el-drawer__title{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__title{margin:0;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__body>*{-webkit-box-sizing:border-box;box-sizing:border-box}.el-drawer__container{position:relative}.el-drawer-fade-enter-active{-webkit-animation:el-drawer-fade-in .3s;animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-popconfirm__main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-elementUI.f77689d7.css b/priv/static/adminfe/chunk-elementUI.f77689d7.css new file mode 100644 index 000000000..01bdb7fd5 --- /dev/null +++ b/priv/static/adminfe/chunk-elementUI.f77689d7.css @@ -0,0 +1 @@ +.el-pagination--small .arrow.disabled,.el-table--hidden,.el-table .hidden-columns,.el-table td.is-hidden>*,.el-table th.is-hidden>*{visibility:hidden}.el-input__suffix,.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing),.el-message__closeBtn:focus,.el-message__content:focus,.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing),.el-rate:active,.el-rate:focus,.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing),.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}@font-face{font-family:element-icons;src:url(static/fonts/element-icons.535877f.woff) format("woff"),url(static/fonts/element-icons.732389d.ttf) format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\E6A0"}.el-icon-ice-cream-square:before{content:"\E6A3"}.el-icon-lollipop:before{content:"\E6A4"}.el-icon-potato-strips:before{content:"\E6A5"}.el-icon-milk-tea:before{content:"\E6A6"}.el-icon-ice-drink:before{content:"\E6A7"}.el-icon-ice-tea:before{content:"\E6A9"}.el-icon-coffee:before{content:"\E6AA"}.el-icon-orange:before{content:"\E6AB"}.el-icon-pear:before{content:"\E6AC"}.el-icon-apple:before{content:"\E6AD"}.el-icon-cherry:before{content:"\E6AE"}.el-icon-watermelon:before{content:"\E6AF"}.el-icon-grape:before{content:"\E6B0"}.el-icon-refrigerator:before{content:"\E6B1"}.el-icon-goblet-square-full:before{content:"\E6B2"}.el-icon-goblet-square:before{content:"\E6B3"}.el-icon-goblet-full:before{content:"\E6B4"}.el-icon-goblet:before{content:"\E6B5"}.el-icon-cold-drink:before{content:"\E6B6"}.el-icon-coffee-cup:before{content:"\E6B8"}.el-icon-water-cup:before{content:"\E6B9"}.el-icon-hot-water:before{content:"\E6BA"}.el-icon-ice-cream:before{content:"\E6BB"}.el-icon-dessert:before{content:"\E6BC"}.el-icon-sugar:before{content:"\E6BD"}.el-icon-tableware:before{content:"\E6BE"}.el-icon-burger:before{content:"\E6BF"}.el-icon-knife-fork:before{content:"\E6C1"}.el-icon-fork-spoon:before{content:"\E6C2"}.el-icon-chicken:before{content:"\E6C3"}.el-icon-food:before{content:"\E6C4"}.el-icon-dish-1:before{content:"\E6C5"}.el-icon-dish:before{content:"\E6C6"}.el-icon-moon-night:before{content:"\E6EE"}.el-icon-moon:before{content:"\E6F0"}.el-icon-cloudy-and-sunny:before{content:"\E6F1"}.el-icon-partly-cloudy:before{content:"\E6F2"}.el-icon-cloudy:before{content:"\E6F3"}.el-icon-sunny:before{content:"\E6F6"}.el-icon-sunset:before{content:"\E6F7"}.el-icon-sunrise-1:before{content:"\E6F8"}.el-icon-sunrise:before{content:"\E6F9"}.el-icon-heavy-rain:before{content:"\E6FA"}.el-icon-lightning:before{content:"\E6FB"}.el-icon-light-rain:before{content:"\E6FC"}.el-icon-wind-power:before{content:"\E6FD"}.el-icon-baseball:before{content:"\E712"}.el-icon-soccer:before{content:"\E713"}.el-icon-football:before{content:"\E715"}.el-icon-basketball:before{content:"\E716"}.el-icon-ship:before{content:"\E73F"}.el-icon-truck:before{content:"\E740"}.el-icon-bicycle:before{content:"\E741"}.el-icon-mobile-phone:before{content:"\E6D3"}.el-icon-service:before{content:"\E6D4"}.el-icon-key:before{content:"\E6E2"}.el-icon-unlock:before{content:"\E6E4"}.el-icon-lock:before{content:"\E6E5"}.el-icon-watch:before{content:"\E6FE"}.el-icon-watch-1:before{content:"\E6FF"}.el-icon-timer:before{content:"\E702"}.el-icon-alarm-clock:before{content:"\E703"}.el-icon-map-location:before{content:"\E704"}.el-icon-delete-location:before{content:"\E705"}.el-icon-add-location:before{content:"\E706"}.el-icon-location-information:before{content:"\E707"}.el-icon-location-outline:before{content:"\E708"}.el-icon-location:before{content:"\E79E"}.el-icon-place:before{content:"\E709"}.el-icon-discover:before{content:"\E70A"}.el-icon-first-aid-kit:before{content:"\E70B"}.el-icon-trophy-1:before{content:"\E70C"}.el-icon-trophy:before{content:"\E70D"}.el-icon-medal:before{content:"\E70E"}.el-icon-medal-1:before{content:"\E70F"}.el-icon-stopwatch:before{content:"\E710"}.el-icon-mic:before{content:"\E711"}.el-icon-copy-document:before{content:"\E718"}.el-icon-full-screen:before{content:"\E719"}.el-icon-switch-button:before{content:"\E71B"}.el-icon-aim:before{content:"\E71C"}.el-icon-crop:before{content:"\E71D"}.el-icon-odometer:before{content:"\E71E"}.el-icon-time:before{content:"\E71F"}.el-icon-bangzhu:before{content:"\E724"}.el-icon-close-notification:before{content:"\E726"}.el-icon-microphone:before{content:"\E727"}.el-icon-turn-off-microphone:before{content:"\E728"}.el-icon-position:before{content:"\E729"}.el-icon-postcard:before{content:"\E72A"}.el-icon-message:before{content:"\E72B"}.el-icon-chat-line-square:before{content:"\E72D"}.el-icon-chat-dot-square:before{content:"\E72E"}.el-icon-chat-dot-round:before{content:"\E72F"}.el-icon-chat-square:before{content:"\E730"}.el-icon-chat-line-round:before{content:"\E731"}.el-icon-chat-round:before{content:"\E732"}.el-icon-set-up:before{content:"\E733"}.el-icon-turn-off:before{content:"\E734"}.el-icon-open:before{content:"\E735"}.el-icon-connection:before{content:"\E736"}.el-icon-link:before{content:"\E737"}.el-icon-cpu:before{content:"\E738"}.el-icon-thumb:before{content:"\E739"}.el-icon-female:before{content:"\E73A"}.el-icon-male:before{content:"\E73B"}.el-icon-guide:before{content:"\E73C"}.el-icon-news:before{content:"\E73E"}.el-icon-price-tag:before{content:"\E744"}.el-icon-discount:before{content:"\E745"}.el-icon-wallet:before{content:"\E747"}.el-icon-coin:before{content:"\E748"}.el-icon-money:before{content:"\E749"}.el-icon-bank-card:before{content:"\E74A"}.el-icon-box:before{content:"\E74B"}.el-icon-present:before{content:"\E74C"}.el-icon-sell:before{content:"\E6D5"}.el-icon-sold-out:before{content:"\E6D6"}.el-icon-shopping-bag-2:before{content:"\E74D"}.el-icon-shopping-bag-1:before{content:"\E74E"}.el-icon-shopping-cart-2:before{content:"\E74F"}.el-icon-shopping-cart-1:before{content:"\E750"}.el-icon-shopping-cart-full:before{content:"\E751"}.el-icon-smoking:before{content:"\E752"}.el-icon-no-smoking:before{content:"\E753"}.el-icon-house:before{content:"\E754"}.el-icon-table-lamp:before{content:"\E755"}.el-icon-school:before{content:"\E756"}.el-icon-office-building:before{content:"\E757"}.el-icon-toilet-paper:before{content:"\E758"}.el-icon-notebook-2:before{content:"\E759"}.el-icon-notebook-1:before{content:"\E75A"}.el-icon-files:before{content:"\E75B"}.el-icon-collection:before{content:"\E75C"}.el-icon-receiving:before{content:"\E75D"}.el-icon-suitcase-1:before{content:"\E760"}.el-icon-suitcase:before{content:"\E761"}.el-icon-film:before{content:"\E763"}.el-icon-collection-tag:before{content:"\E765"}.el-icon-data-analysis:before{content:"\E766"}.el-icon-pie-chart:before{content:"\E767"}.el-icon-data-board:before{content:"\E768"}.el-icon-data-line:before{content:"\E76D"}.el-icon-reading:before{content:"\E769"}.el-icon-magic-stick:before{content:"\E76A"}.el-icon-coordinate:before{content:"\E76B"}.el-icon-mouse:before{content:"\E76C"}.el-icon-brush:before{content:"\E76E"}.el-icon-headset:before{content:"\E76F"}.el-icon-umbrella:before{content:"\E770"}.el-icon-scissors:before{content:"\E771"}.el-icon-mobile:before{content:"\E773"}.el-icon-attract:before{content:"\E774"}.el-icon-monitor:before{content:"\E775"}.el-icon-search:before{content:"\E778"}.el-icon-takeaway-box:before{content:"\E77A"}.el-icon-paperclip:before{content:"\E77D"}.el-icon-printer:before{content:"\E77E"}.el-icon-document-add:before{content:"\E782"}.el-icon-document:before{content:"\E785"}.el-icon-document-checked:before{content:"\E786"}.el-icon-document-copy:before{content:"\E787"}.el-icon-document-delete:before{content:"\E788"}.el-icon-document-remove:before{content:"\E789"}.el-icon-tickets:before{content:"\E78B"}.el-icon-folder-checked:before{content:"\E77F"}.el-icon-folder-delete:before{content:"\E780"}.el-icon-folder-remove:before{content:"\E781"}.el-icon-folder-add:before{content:"\E783"}.el-icon-folder-opened:before{content:"\E784"}.el-icon-folder:before{content:"\E78A"}.el-icon-edit-outline:before{content:"\E764"}.el-icon-edit:before{content:"\E78C"}.el-icon-date:before{content:"\E78E"}.el-icon-c-scale-to-original:before{content:"\E7C6"}.el-icon-view:before{content:"\E6CE"}.el-icon-loading:before{content:"\E6CF"}.el-icon-rank:before{content:"\E6D1"}.el-icon-sort-down:before{content:"\E7C4"}.el-icon-sort-up:before{content:"\E7C5"}.el-icon-sort:before{content:"\E6D2"}.el-icon-finished:before{content:"\E6CD"}.el-icon-refresh-left:before{content:"\E6C7"}.el-icon-refresh-right:before{content:"\E6C8"}.el-icon-refresh:before{content:"\E6D0"}.el-icon-video-play:before{content:"\E7C0"}.el-icon-video-pause:before{content:"\E7C1"}.el-icon-d-arrow-right:before{content:"\E6DC"}.el-icon-d-arrow-left:before{content:"\E6DD"}.el-icon-arrow-up:before{content:"\E6E1"}.el-icon-arrow-down:before{content:"\E6DF"}.el-icon-arrow-right:before{content:"\E6E0"}.el-icon-arrow-left:before{content:"\E6DE"}.el-icon-top-right:before{content:"\E6E7"}.el-icon-top-left:before{content:"\E6E8"}.el-icon-top:before{content:"\E6E6"}.el-icon-bottom:before{content:"\E6EB"}.el-icon-right:before{content:"\E6E9"}.el-icon-back:before{content:"\E6EA"}.el-icon-bottom-right:before{content:"\E6EC"}.el-icon-bottom-left:before{content:"\E6ED"}.el-icon-caret-top:before{content:"\E78F"}.el-icon-caret-bottom:before{content:"\E790"}.el-icon-caret-right:before{content:"\E791"}.el-icon-caret-left:before{content:"\E792"}.el-icon-d-caret:before{content:"\E79A"}.el-icon-share:before{content:"\E793"}.el-icon-menu:before{content:"\E798"}.el-icon-s-grid:before{content:"\E7A6"}.el-icon-s-check:before{content:"\E7A7"}.el-icon-s-data:before{content:"\E7A8"}.el-icon-s-opportunity:before{content:"\E7AA"}.el-icon-s-custom:before{content:"\E7AB"}.el-icon-s-claim:before{content:"\E7AD"}.el-icon-s-finance:before{content:"\E7AE"}.el-icon-s-comment:before{content:"\E7AF"}.el-icon-s-flag:before{content:"\E7B0"}.el-icon-s-marketing:before{content:"\E7B1"}.el-icon-s-shop:before{content:"\E7B4"}.el-icon-s-open:before{content:"\E7B5"}.el-icon-s-management:before{content:"\E7B6"}.el-icon-s-ticket:before{content:"\E7B7"}.el-icon-s-release:before{content:"\E7B8"}.el-icon-s-home:before{content:"\E7B9"}.el-icon-s-promotion:before{content:"\E7BA"}.el-icon-s-operation:before{content:"\E7BB"}.el-icon-s-unfold:before{content:"\E7BC"}.el-icon-s-fold:before{content:"\E7A9"}.el-icon-s-platform:before{content:"\E7BD"}.el-icon-s-order:before{content:"\E7BE"}.el-icon-s-cooperation:before{content:"\E7BF"}.el-icon-bell:before{content:"\E725"}.el-icon-message-solid:before{content:"\E799"}.el-icon-video-camera:before{content:"\E772"}.el-icon-video-camera-solid:before{content:"\E796"}.el-icon-camera:before{content:"\E779"}.el-icon-camera-solid:before{content:"\E79B"}.el-icon-download:before{content:"\E77C"}.el-icon-upload2:before{content:"\E77B"}.el-icon-upload:before{content:"\E7C3"}.el-icon-picture-outline-round:before{content:"\E75F"}.el-icon-picture-outline:before{content:"\E75E"}.el-icon-picture:before{content:"\E79F"}.el-icon-close:before{content:"\E6DB"}.el-icon-check:before{content:"\E6DA"}.el-icon-plus:before{content:"\E6D9"}.el-icon-minus:before{content:"\E6D8"}.el-icon-help:before{content:"\E73D"}.el-icon-s-help:before{content:"\E7B3"}.el-icon-circle-close:before{content:"\E78D"}.el-icon-circle-check:before{content:"\E720"}.el-icon-circle-plus-outline:before{content:"\E723"}.el-icon-remove-outline:before{content:"\E722"}.el-icon-zoom-out:before{content:"\E776"}.el-icon-zoom-in:before{content:"\E777"}.el-icon-error:before{content:"\E79D"}.el-icon-success:before{content:"\E79C"}.el-icon-circle-plus:before{content:"\E7A0"}.el-icon-remove:before{content:"\E7A2"}.el-icon-info:before{content:"\E7A1"}.el-icon-question:before{content:"\E7A4"}.el-icon-warning-outline:before{content:"\E6C9"}.el-icon-warning:before{content:"\E7A3"}.el-icon-goods:before{content:"\E7C2"}.el-icon-s-goods:before{content:"\E7B2"}.el-icon-star-off:before{content:"\E717"}.el-icon-star-on:before{content:"\E797"}.el-icon-more-outline:before{content:"\E6CC"}.el-icon-more:before{content:"\E794"}.el-icon-phone-outline:before{content:"\E6CB"}.el-icon-phone:before{content:"\E795"}.el-icon-user:before{content:"\E6E3"}.el-icon-user-solid:before{content:"\E7A5"}.el-icon-setting:before{content:"\E6CA"}.el-icon-s-tools:before{content:"\E7AC"}.el-icon-delete:before{content:"\E6D7"}.el-icon-delete-solid:before{content:"\E7C9"}.el-icon-eleme:before{content:"\E7C7"}.el-icon-platform-eleme:before{content:"\E7CA"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes rotating{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination:after,.el-pagination:before{display:table;content:""}.el-pagination:after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#409eff}.el-pagination button:disabled{color:#c0c4cc;background-color:#fff;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:50% no-repeat #fff;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#c0c4cc;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .more:before,.el-pagination--small li.more:before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#409eff}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#c0c4cc}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#409eff}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#409eff;color:#fff}.el-dialog,.el-pager li{background:#fff;-webkit-box-sizing:border-box}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-ms-user-select:none;user-select:none;list-style:none;font-size:0}.el-date-table,.el-pager,.el-table th{-webkit-user-select:none;-moz-user-select:none}.el-pager .more:before{line-height:30px}.el-pager li{padding:0 4px;font-size:13px;min-width:35.5px;height:28px;line-height:28px;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center}.el-menu--collapse .el-menu .el-submenu,.el-menu--popup{min-width:200px}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#c0c4cc}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#409eff}.el-pager li.active{color:#409eff;cursor:default}@-webkit-keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{to{opacity:0}}.el-dialog{position:relative;margin:0 auto 50px;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);-webkit-box-sizing:border-box;box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#409eff}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:10px 20px 20px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #e4e7ed;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff}.el-dropdown-menu,.el-menu--collapse .el-submenu .el-menu{z-index:10;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#f5f7fa}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#fff}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button:before{content:"";position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:hsla(0,0%,100%,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default:before{background:rgba(220,223,230,.5)}.el-dropdown .el-dropdown__caret-button:hover:before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown-menu{position:absolute;top:0;left:0;padding:10px 0;margin:5px 0;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#606266;cursor:pointer;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#ecf5ff;color:#66b1ff}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #ebeef5}.el-dropdown-menu__item--divided:before{content:"";height:6px;display:block;margin:0 -20px;background-color:#fff}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:1px solid #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0}.el-menu,.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu:after,.el-menu:before{display:table;content:""}.el-menu:after{clear:both}.el-menu.el-menu--horizontal{border-bottom:1px solid #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #409eff;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #409eff;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;border:1px solid #e4e7ed;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;position:relative;-webkit-box-sizing:border-box;white-space:nowrap;list-style:none}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;transform:none}.el-menu--popup{z-index:100;border:none;padding:5px 0;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#ecf5ff}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#409eff}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#ecf5ff}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#ecf5ff}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#409eff}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio-button__inner,.el-radio-group{display:inline-block;line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.el-radio-group{font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{white-space:nowrap;background:#fff;border:1px solid #dcdfe6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#409eff}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#409eff;border-color:#409eff;-webkit-box-shadow:-1px 0 0 0 #409eff;box-shadow:-1px 0 0 0 #409eff}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#f2f6fc}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-popover,.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){-webkit-box-shadow:0 0 2px 2px #409eff;box-shadow:0 0 2px 2px #409eff}.el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#409eff}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #dcdfe6;outline:0;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#dcdfe6;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#fff}.el-switch.is-checked .el-switch__core{border-color:#409eff;background-color:#409eff}.el-switch.is-checked .el-switch__core:after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #e4e7ed;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#409eff;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected:after{position:absolute;right:20px;font-family:element-icons;content:"\E6DA";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#f5f7fa}.el-select-dropdown__item.selected{color:#409eff;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type):after{content:"";position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#e4e7ed}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#c0c4cc}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#409eff}.el-select .el-input .el-select__caret{color:#c0c4cc;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotate(180deg);transform:rotate(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotate(0);transform:rotate(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotate(180deg);transform:rotate(180deg);border-radius:100%;color:#c0c4cc;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#e4e7ed}.el-select .el-input.is-focus .el-input__inner{border-color:#409eff}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#c0c4cc;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select .el-tag__close{margin-top:-2px}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5}.el-select .el-tag__close.el-icon-close{background-color:#c0c4cc;right:-7px;top:0;color:#fff}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#fff}.el-select .el-tag__close.el-icon-close:before{display:block;-webkit-transform:translateY(.5px);transform:translateY(.5px)}.el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table--mini,.el-table--small,.el-table__expand-icon{font-size:12px}.el-table__empty-block{min-height:60px;text-align:center;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit td.gutter,.el-table--fit th.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th{background:#f5f7fa}.el-table th,.el-table tr{background-color:#fff}.el-table td,.el-table th{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table td.is-center,.el-table th.is-center{text-align:center}.el-table td.is-right,.el-table th.is-right{text-align:right}.el-table td.gutter,.el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table--medium td,.el-table--medium th{padding:10px 0}.el-table--small td,.el-table--small th{padding:8px 0}.el-table--mini td,.el-table--mini th{padding:6px 0}.el-table--border td:first-child .cell,.el-table--border th:first-child .cell,.el-table .cell{padding-left:10px}.el-table tr input[type=checkbox]{margin:0}.el-table td,.el-table th.is-leaf{border-bottom:1px solid #ebeef5}.el-table th.is-sortable{cursor:pointer}.el-table th{overflow:hidden;-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-table th>.cell{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th>.cell.highlight{color:#409eff}.el-table th.required>div:before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-table td.gutter{width:0}.el-table .cell{-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #ebeef5}.el-table--border:after,.el-table--group:after,.el-table:before{content:"";position:absolute;background-color:#ebeef5;z-index:1}.el-table--border:after,.el-table--group:after{top:0;right:0;width:1px;height:100%}.el-table:before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border td,.el-table--border th,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #ebeef5}.el-table--border th,.el-table--border th.gutter:last-of-type,.el-table__fixed-right-patch{border-bottom:1px solid #ebeef5}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right:before,.el-table__fixed:before{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#ebeef5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#fff}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td{border-top:1px solid #ebeef5;background-color:#f5f7fa;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td{border-top:1px solid #ebeef5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td,.el-table__header-wrapper tbody td{background-color:#f5f7fa;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-picker-panel,.el-table-filter{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #ebeef5}.el-table .caret-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#c0c4cc;top:5px}.el-table .sort-caret.descending{border-top-color:#c0c4cc;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#409eff}.el-table .descending .sort-caret.descending{border-top-color:#409eff}.el-table .hidden-columns{position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td{background:#fafafa}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td{background-color:#ecf5ff}.el-table__body tr.hover-row.current-row>td,.el-table__body tr.hover-row.el-table__row--striped.current-row>td,.el-table__body tr.hover-row.el-table__row--striped>td,.el-table__body tr.hover-row>td{background-color:#f5f7fa}.el-table__body tr.current-row>td{background-color:#ecf5ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #ebeef5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.el-table--enable-row-transition .el-table__body td{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#f5f7fa}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #ebeef5;border-radius:2px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.el-date-table td,.el-date-table td div{height:30px;-webkit-box-sizing:border-box}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#ecf5ff;color:#66b1ff}.el-table-filter__list-item.is-active{background-color:#409eff;color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #ebeef5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div,.el-date-table td.in-range div,.el-date-table td.in-range div:hover{background-color:#f2f6fc}.el-table-filter__bottom button:hover{color:#409eff}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;padding:4px 0;text-align:center;cursor:pointer;position:relative}.el-date-table td,.el-date-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-table td div{padding:3px 0}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#c0c4cc}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#409eff;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#fff}.el-date-table td.available:hover{color:#409eff}.el-date-table td.current:not(.disabled) span{color:#fff;background-color:#409eff}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#fff}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#409eff}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#f5f7fa;opacity:1;cursor:not-allowed;color:#c0c4cc}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#f2f6fc;border-radius:15px}.el-date-table td.selected div:hover{background-color:#f2f6fc}.el-date-table td.selected span{background-color:#409eff;color:#fff;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:1px solid #ebeef5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-month-table td.today .cell{color:#409eff;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#fff}.el-month-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-month-table td.disabled .cell:hover{color:#c0c4cc}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#409eff}.el-month-table td.in-range div,.el-month-table td.in-range div:hover{background-color:#f2f6fc}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#fff}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#fff;background-color:#409eff}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#409eff}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#409eff;font-weight:700}.el-year-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-year-table td.disabled .cell:hover{color:#c0c4cc}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#409eff}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:1px solid #ebeef5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#409eff}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#409eff;font-weight:700}.time-select-item.disabled{color:#e4e7ed;cursor:not-allowed}.time-select-item:hover{background-color:#f5f7fa;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#c0c4cc;float:left;line-height:32px}.el-date-editor .el-range-input,.el-date-editor .el-range-separator{height:100%;margin:0;text-align:center;display:inline-block;font-size:14px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;padding:0;width:39%;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input:-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-moz-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::placeholder{color:#c0c4cc}.el-date-editor .el-range-separator{padding:0 5px;line-height:32px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#c0c4cc;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active,.el-range-editor.is-active:hover{border-color:#409eff}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#e4e7ed}.el-range-editor.is-disabled input{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input:-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-moz-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::placeholder{color:#c0c4cc}.el-range-editor.is-disabled .el-range-separator{color:#c0c4cc}.el-picker-panel{color:#606266;border:1px solid #e4e7ed;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.el-picker-panel,.el-popover,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#409eff}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#409eff}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#409eff}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#409eff}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#c0c4cc;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #e4e7ed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;user-select:none;-webkit-box-sizing:content-box;box-sizing:content-box}.el-slider__button,.el-slider__button-wrapper,.el-time-panel{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content:after,.el-time-panel__content:before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #e4e7ed;border-bottom:1px solid #e4e7ed}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds:after{left:66.66667%}.el-time-panel__content.has-seconds:before{padding-left:33.33333%}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#409eff}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #e4e7ed}.el-popover{position:absolute;background:#fff;min-width:150px;border:1px solid #ebeef5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#fff;border-radius:4px;border:1px solid #ebeef5;font-size:18px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper:after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#f56c6c}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#409eff}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.el-message-box__status:before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67c23a}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#e6a23c}.el-message-box__status.el-icon-error{color:#f56c6c}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#f56c6c;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{display:table;content:""}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#c0c4cc}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner.is-link,.el-breadcrumb__inner a{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner.is-link:hover,.el-breadcrumb__inner a:hover{color:#409eff;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item:after,.el-form-item:before{display:table;content:""}.el-form-item:after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content:after,.el-form-item__content:before{display:table;content:""}.el-form-item__content:after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#f56c6c;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:"*";color:#f56c6c;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#f56c6c}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#409eff;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.el-collapse-item__arrow,.el-tabs__nav{-webkit-transition:-webkit-transform .3s}.el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8);transform:scale(.8)}.el-tabs__new-tab:hover{color:#409eff}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#e4e7ed;z-index:1}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after,.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:-webkit-transform .3s;-webkit-transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.el-tabs__nav.is-stretch>*{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){-webkit-box-shadow:0 0 2px 2px #409eff inset;box-shadow:inset 0 0 2px 2px #409eff;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#c0c4cc;color:#fff}.el-tabs__item.is-active{color:#409eff}.el-tabs__item:hover{color:#409eff;cursor:pointer}.el-tabs__item.is-disabled{color:#c0c4cc;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #e4e7ed}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #e4e7ed;border-bottom:none;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #e4e7ed;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--border-card{background:#fff;border:1px solid #dcdfe6;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#409eff;background-color:#fff;border-right-color:#dcdfe6;border-left-color:#dcdfe6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#409eff}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#c0c4cc}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #dcdfe6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{right:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border:1px solid #e4e7ed;border-bottom:none;border-left:none;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #e4e7ed;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:none;border-top:1px solid #e4e7ed;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #e4e7ed;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #e4e7ed}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #e4e7ed;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:none;border-top:1px solid #e4e7ed;border-left:1px solid #fff}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #e4e7ed;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.el-tree{position:relative;cursor:default;background:#fff;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#409eff}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#f5f7fa}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#409eff;color:#fff}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#f5f7fa}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#c0c4cc;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#c0c4cc}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#c0c4cc}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#fff}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67c23a}.el-alert--success.is-light .el-alert__description{color:#67c23a}.el-alert--success.is-dark{background-color:#67c23a;color:#fff}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#fff}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#e6a23c}.el-alert--warning.is-light .el-alert__description{color:#e6a23c}.el-alert--warning.is-dark{background-color:#e6a23c;color:#fff}.el-alert--error.is-light{background-color:#fef0f0;color:#f56c6c}.el-alert--error.is-light .el-alert__description{color:#f56c6c}.el-alert--error.is-dark{background-color:#f56c6c;color:#fff}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active{opacity:0}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67c23a}.el-notification .el-icon-error{color:#f56c6c}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#e6a23c}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#409eff}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#409eff}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #dcdfe6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #dcdfe6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#e4e7ed;color:#e4e7ed}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#e4e7ed;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #dcdfe6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #dcdfe6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow:after{content:" ";border-width:5px}.el-progress-bar__inner:after,.el-row:after,.el-row:before,.el-slider:after,.el-slider:before,.el-slider__button-wrapper:after,.el-upload-cover:after{content:""}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow:after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow:after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow:after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow:after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow:after{border-right-color:#fff}.el-slider:after,.el-slider:before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper:after{vertical-align:middle;display:inline-block}.el-slider:after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#e4e7ed;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button{border-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);transform:scale(1);cursor:not-allowed}.el-slider__button-wrapper,.el-slider__stop{-webkit-transform:translateX(-50%);position:absolute}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#409eff;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;z-index:1001;top:-15px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:normal}.el-slider__button-wrapper:after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #409eff;background-color:#fff;border-radius:50%;-webkit-transition:.2s;transition:.2s;user-select:none}.el-image-viewer__btn,.el-slider__button,.el-step__icon-inner{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{height:6px;width:6px;border-radius:100%;background-color:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px}.el-slider.is-vertical .el-slider__button-wrapper,.el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #dcdfe6;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#c0c4cc}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#409eff}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:hsla(0,0%,100%,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-2,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-pull-10,.el-col-pull-11,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-push-0,.el-col-push-1,.el-col-push-2,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-row{position:relative}.el-loading-spinner .el-loading-text{color:#409eff;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#409eff;stroke-linecap:round}.el-loading-spinner i{color:#409eff}@-webkit-keyframes loading-rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loading-rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{-webkit-box-sizing:border-box;box-sizing:border-box}.el-row:after,.el-row:before{display:table}.el-row:after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-upload--picture-card,.el-upload-dragger{-webkit-box-sizing:border-box;cursor:pointer}.el-col-0{width:0}.el-col-offset-0{margin-left:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}@-webkit-keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#409eff;color:#409eff}.el-upload:focus .el-upload-dragger{border-color:#409eff}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:360px;height:180px;text-align:center;position:relative;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#c0c4cc;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #dcdfe6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#409eff;font-style:normal}.el-upload-dragger:hover{border-color:#409eff}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #409eff}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67c23a}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#409eff}.el-upload-list__item:hover{background-color:#f5f7fa}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#409eff;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;-webkit-transition:color .3s;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#409eff}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#fff}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover:after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress-bar,.el-progress-bar__inner:after,.el-progress-bar__innerText,.el-spinner{display:inline-block;vertical-align:middle}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67c23a}.el-progress.is-success .el-progress__text{color:#67c23a}.el-progress.is-warning .el-progress-bar__inner{background-color:#e6a23c}.el-progress.is-warning .el-progress__text{color:#e6a23c}.el-progress.is-exception .el-progress-bar__inner{background-color:#f56c6c}.el-progress.is-exception .el-progress__text{color:#f56c6c}.el-progress-bar{padding-right:50px;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#ebeef5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#409eff;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.el-card,.el-message{border-radius:4px;overflow:hidden}.el-progress-bar__inner:after{height:100%}.el-progress-bar__innerText{color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,transform .4s,top .4s;transition:opacity .3s,transform .4s,top .4s,-webkit-transform .4s;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67c23a}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#e6a23c}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#f56c6c}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#c0c4cc;font-size:16px}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67c23a}.el-message .el-icon-error{color:#f56c6c}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#e6a23c}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#f56c6c;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#409eff}.el-badge__content--success{background-color:#67c23a}.el-badge__content--warning{background-color:#e6a23c}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#f56c6c}.el-card{border:1px solid #ebeef5;background-color:#fff;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#c0c4cc;-webkit-transition:.3s;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-webkit-box;display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:-webkit-box;display:-ms-flexbox;display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#f5f7fa}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#c0c4cc;border-color:#c0c4cc}.el-step__head.is-success{color:#67c23a;border-color:#67c23a}.el-step__head.is-error{color:#f56c6c;border-color:#f56c6c}.el-step__head.is-finish{color:#409eff;border-color:#409eff}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;-webkit-transition:.15s ease-out;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#c0c4cc}.el-step__line-inner{display:block;border:1px solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#c0c4cc}.el-step__title.is-success{color:#67c23a}.el-step__title.is-error{color:#f56c6c}.el-step__title.is-finish{color:#409eff}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#c0c4cc}.el-step__description.is-success{color:#67c23a}.el-step__description.is-error{color:#f56c6c}.el-step__description.is-finish{color:#409eff}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:-webkit-box;display:-ms-flexbox;display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{content:"";display:inline-block;position:absolute;height:15px;width:1px;background:#c0c4cc}.el-step.is-simple .el-step__arrow:before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#c0c4cc;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.el-carousel__item,.el-carousel__mask{height:100%;top:0;left:0;position:absolute}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item--card,.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#fff;opacity:.24;-webkit-transition:.2s;transition:.2s}.el-fade-in-enter,.el-fade-in-leave-active,.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active,.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-enter-active,.el-fade-in-leave-active,.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1);transform:scale(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45);transform:scale(.45)}.collapse-transition{-webkit-transition:height .3s ease-in-out,padding-top .3s ease-in-out,padding-bottom .3s ease-in-out;transition:height .3s ease-in-out,padding-top .3s ease-in-out,padding-bottom .3s ease-in-out}.horizontal-collapse-transition{-webkit-transition:width .3s ease-in-out,padding-left .3s ease-in-out,padding-right .3s ease-in-out;transition:width .3s ease-in-out,padding-left .3s ease-in-out,padding-right .3s ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #ebeef5;border-bottom:1px solid #ebeef5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:48px;line-height:48px;background-color:#fff;color:#303133;cursor:pointer;border-bottom:1px solid #ebeef5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:-webkit-transform .3s;-webkit-transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#409eff}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#fff;overflow:hidden;box-sizing:border-box;border-bottom:1px solid #ebeef5}.el-cascader__tags,.el-collapse-item__wrap,.el-tag{-webkit-box-sizing:border-box}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,.03));filter:drop-shadow(0 2px 12px rgba(0,0,0,.03))}.el-popper .popper__arrow:after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow:after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-tag{background-color:#ecf5ff;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#409eff;border:1px solid #d9ecff;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#409eff}.el-tag .el-tag__close{color:#409eff}.el-tag .el-tag__close:hover{color:#fff;background-color:#409eff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67c23a}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close:before{display:block}.el-tag--dark{background-color:#409eff;color:#fff}.el-tag--dark,.el-tag--dark.is-hit{border-color:#409eff}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#66b1ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67c23a}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d8ff;color:#409eff}.el-tag--plain.is-hit{border-color:#409eff}.el-tag--plain .el-tag__close{color:#409eff}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#409eff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#c0c4cc}.el-cascader .el-input .el-input__inner:focus,.el-cascader .el-input.is-focus .el-input__inner{border-color:#409eff}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#c0c4cc}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#fff;border:1px solid #e4e7ed;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:normal;text-align:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__tags .el-tag{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{-webkit-box-flex:0;-ms-flex:none;flex:none;background-color:#c0c4cc;color:#fff}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#f5f7fa}.el-cascader__suggestion-item.is-checked{color:#409eff;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#c0c4cc}.el-cascader__search-input{-webkit-box-flex:1;-ms-flex:1;flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__search-input::-webkit-input-placeholder{color:#c0c4cc}.el-cascader__search-input:-ms-input-placeholder{color:#c0c4cc}.el-cascader__search-input::-ms-input-placeholder{color:#c0c4cc}.el-cascader__search-input::-moz-placeholder{color:#c0c4cc}.el-cascader__search-input::placeholder{color:#c0c4cc}.el-color-predefine{font-size:12px;margin-top:8px;width:280px}.el-color-predefine,.el-color-predefine__colors{display:-webkit-box;display:-ms-flexbox;display:flex}.el-color-predefine__colors{-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{-webkit-box-shadow:0 0 3px 2px #409eff;box-shadow:0 0 3px 2px #409eff}.el-color-predefine__color-selector>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,color-stop(0,red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,color-stop(0,red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(hsla(0,0%,100%,0)));background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(transparent));background:linear-gradient(0deg,#000,transparent)}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,color-stop(0,hsla(0,0%,100%,0)),to(#fff));background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,#fff);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,color-stop(0,hsla(0,0%,100%,0)),to(#fff));background:linear-gradient(180deg,hsla(0,0%,100%,0) 0,#fff)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#409eff;border-color:#409eff}.el-color-dropdown__link-btn{cursor:pointer;color:#409eff;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#409eff,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:hsla(0,0%,100%,.7)}.el-color-picker__trigger{display:inline-block;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;cursor:pointer}.el-color-picker__color,.el-color-picker__trigger{-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-color-picker__color{display:block;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty,.el-color-picker__icon{top:50%;left:50%;font-size:12px;position:absolute}.el-color-picker__empty{color:#999}.el-color-picker__empty,.el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{display:inline-block;width:100%;color:#fff;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner:-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#409eff}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:normal;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__prefix,.el-input__suffix{position:absolute;top:0;-webkit-transition:all .3s;height:100%;color:#c0c4cc;text-align:center}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner:-ms-input-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#409eff;outline:0}.el-input__suffix{right:5px;-webkit-transition:all .3s;transition:all .3s}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{left:5px}.el-input__icon,.el-input__prefix{-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-link,.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--prepend .el-input__inner,.el-input-group__append{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#fff;background-color:#409eff;font-size:0}.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #dcdfe6;background-color:#f5f7fa;color:#c0c4cc}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer-panel{border:1px solid #ebeef5;border-radius:4px;overflow:hidden;background:#fff;display:inline-block;vertical-align:middle;width:200px;max-height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block!important}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#409eff}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#f5f7fa;margin:0;padding-left:15px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-divider__text,.el-link{font-weight:500;font-size:14px}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#fff;margin:0;padding:0;border-top:1px solid #ebeef5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-container,.el-timeline-item__node{display:-webkit-box;display:-ms-flexbox}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner:after{height:6px;width:3px;left:4px}.el-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:0}.el-container.is-vertical,.el-drawer{-webkit-box-orient:vertical;-webkit-box-direction:normal}.el-aside,.el-header{-webkit-box-sizing:border-box}.el-container.is-vertical{-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.el-header{padding:0 20px}.el-aside,.el-header{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside{overflow:auto}.el-footer,.el-main{-webkit-box-sizing:border-box}.el-main{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow:auto;padding:20px}.el-footer,.el-main{-webkit-box-sizing:border-box;box-sizing:border-box}.el-footer{padding:0 20px;-ms-flex-negative:0;flex-shrink:0}.el-timeline{margin:0;font-size:14px;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #e4e7ed}.el-timeline-item__icon{color:#fff;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#e4e7ed;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image__error,.el-timeline-item__dot{display:-webkit-box;display:-ms-flexbox}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#409eff}.el-timeline-item__node--success{background-color:#67c23a}.el-timeline-item__node--warning{background-color:#e6a23c}.el-timeline-item__node--danger{background-color:#f56c6c}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;padding:0}.el-link.is-underline:hover:after{content:"";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #409eff}.el-link.el-link--default:after,.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:#409eff}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#409eff}.el-link.el-link--default.is-disabled{color:#c0c4cc}.el-link.el-link--primary{color:#409eff}.el-link.el-link--primary:hover{color:#66b1ff}.el-link.el-link--primary.is-disabled{color:#a0cfff}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:#f56c6c}.el-link.el-link--danger{color:#f56c6c}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:#67c23a}.el-link.el-link--success{color:#67c23a}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:#e6a23c}.el-link.el-link--warning{color:#e6a23c}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-divider{background-color:#dcdfe6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#fff;padding:0 20px;color:#303133}.el-image__error,.el-image__placeholder{background:#f5f7fa}.el-divider__text.is-left{left:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-divider__text.is-center{left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:block}.el-image__error{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px;color:#c0c4cc;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;opacity:.8;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;user-select:none}.el-button,.el-checkbox,.el-image-viewer__btn{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:40px}.el-image-viewer__canvas{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.el-image-viewer__next,.el-image-viewer__prev{top:50%;width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{-webkit-animation:viewer-fade-in .3s;animation:viewer-fade-in .3s}.viewer-fade-leave-active{-webkit-animation:viewer-fade-out .3s;animation:viewer-fade-out .3s}@-webkit-keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@-webkit-keyframes viewer-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes viewer-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button:focus,.el-button:hover{color:#409eff;border-color:#c6e2ff;background-color:#ecf5ff}.el-button:active{color:#3a8ee6;border-color:#3a8ee6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#409eff;color:#409eff}.el-button.is-active,.el-button.is-plain:active{color:#3a8ee6;border-color:#3a8ee6}.el-button.is-plain:active{background:#fff;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:hsla(0,0%,100%,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#409eff;border-color:#409eff}.el-button--primary:focus,.el-button--primary:hover{background:#66b1ff;border-color:#66b1ff;color:#fff}.el-button--primary.is-active,.el-button--primary:active{background:#3a8ee6;border-color:#3a8ee6;color:#fff}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#a0cfff;border-color:#a0cfff}.el-button--primary.is-plain{color:#409eff;background:#ecf5ff;border-color:#b3d8ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#409eff;border-color:#409eff;color:#fff}.el-button--primary.is-plain:active{background:#3a8ee6;border-color:#3a8ee6;color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8cc5ff;background-color:#ecf5ff;border-color:#d9ecff}.el-button--success{color:#fff;background-color:#67c23a;border-color:#67c23a}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#fff}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#fff}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67c23a;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67c23a;border-color:#67c23a;color:#fff}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--text,.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--mini,.el-button--small{font-size:12px;border-radius:3px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small,.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{color:#409eff;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#66b1ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3a8ee6;background-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group:after,.el-button-group:before{display:table;content:""}.el-button-group:after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--primary:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--primary:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--success:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--success:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--warning:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--warning:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--info:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--info:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-calendar{background-color:#fff}.el-calendar__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #ebeef5}.el-backtop,.el-page-header{display:-webkit-box;display:-ms-flexbox}.el-calendar__title{color:#000;-ms-flex-item-align:center;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#c0c4cc}.el-backtop,.el-calendar-table td.is-today{color:#409eff}.el-calendar-table td{border-bottom:1px solid #ebeef5;border-right:1px solid #ebeef5;vertical-align:top;-webkit-transition:background-color .2s ease;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#f2f8fe}.el-calendar-table tr:first-child td{border-top:1px solid #ebeef5}.el-calendar-table tr td:first-child{border-left:1px solid #ebeef5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#f2f8fe}.el-backtop{position:fixed;background-color:#fff;width:40px;height:40px;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:20px;-webkit-box-shadow:0 0 6px rgba(0,0,0,.12);box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#f2f6fc}.el-page-header{line-height:24px}.el-page-header,.el-page-header__left{display:-webkit-box;display:-ms-flexbox;display:flex}.el-page-header__left{cursor:pointer;margin-right:40px;position:relative}.el-page-header__left:after{content:"";position:absolute;width:1px;height:16px;right:-20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:#dcdfe6}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;-ms-flex-item-align:center;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-size:14px;cursor:pointer;user-select:none;margin-right:30px}.el-checkbox,.el-checkbox-button__inner,.el-radio{font-weight:500;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#409eff}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#409eff;border-color:#409eff}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner:after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#409eff}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#409eff}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{content:"";position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#409eff}.el-checkbox__inner:after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{display:inline-block;position:relative}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button__inner{line-height:1;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#409eff}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-radio,.el-radio__input{line-height:1;outline:0;white-space:nowrap}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#409eff;border-color:#409eff;-webkit-box-shadow:-1px 0 0 0 #8cc5ff;box-shadow:-1px 0 0 0 #8cc5ff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#409eff}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#409eff}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-radio,.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio{color:#606266;cursor:pointer;margin-right:30px}.el-cascader-node>.el-radio,.el-radio:last-child{margin-right:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#409eff}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio__input{cursor:pointer;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner:after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#409eff;background:#409eff}.el-radio__input.is-checked .el-radio__inner:after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#409eff}.el-radio__input.is-focus .el-radio__inner{border-color:#409eff}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#409eff}.el-radio__inner:after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #409eff;box-shadow:0 0 2px 2px #409eff}.el-radio__label{font-size:14px;padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity .34s ease-out;transition:opacity .34s ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:background-color .3s;transition:background-color .3s}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity .12s ease-out;transition:opacity .12s ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:4px;font-size:14px}.el-cascader-panel.is-bordered{border:1px solid #e4e7ed;border-radius:4px}.el-cascader-menu{min-width:180px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;border-right:1px solid #e4e7ed}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;-webkit-box-sizing:border-box;box-sizing:border-box}.el-avatar,.el-drawer{-webkit-box-sizing:border-box;overflow:hidden}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;color:#c0c4cc}.el-cascader-node{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#409eff;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#f5f7fa}.el-cascader-node.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;color:#fff;background:#c0c4cc;width:40px;height:40px;line-height:40px;font-size:14px}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-drawer,.el-drawer__header{display:-webkit-box;display:-ms-flexbox}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}.el-drawer.btt,.el-drawer.ttb,.el-drawer__container{left:0;right:0;width:100%}.el-drawer.ltr,.el-drawer.rtl,.el-drawer__container{top:0;bottom:0;height:100%}@-webkit-keyframes el-drawer-fade-in{0%{opacity:0}to{opacity:1}}@keyframes el-drawer-fade-in{0%{opacity:0}to{opacity:1}}@-webkit-keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%);transform:translate(100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%);transform:translate(100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@-webkit-keyframes rtl-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translate(100%);transform:translate(100%)}}@keyframes rtl-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translate(100%);transform:translate(100%)}}@-webkit-keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%);transform:translate(-100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%);transform:translate(-100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@-webkit-keyframes ltr-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translate(-100%);transform:translate(-100%)}}@keyframes ltr-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translate(-100%);transform:translate(-100%)}}@-webkit-keyframes ttb-drawer-in{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@keyframes ttb-drawer-in{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@-webkit-keyframes ttb-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes ttb-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@-webkit-keyframes btt-drawer-in{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@keyframes btt-drawer-in{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translate(0);transform:translate(0)}}@-webkit-keyframes btt-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes btt-drawer-out{0%{-webkit-transform:translate(0);transform:translate(0)}to{-webkit-transform:translateY(100%);transform:translateY(100%)}}.el-drawer{position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.el-drawer.rtl{-webkit-animation:rtl-drawer-out .3s;animation:rtl-drawer-out .3s;right:0}.el-drawer__open .el-drawer.rtl{-webkit-animation:rtl-drawer-in .3s 1ms;animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{-webkit-animation:ltr-drawer-out .3s;animation:ltr-drawer-out .3s;left:0}.el-drawer__open .el-drawer.ltr{-webkit-animation:ltr-drawer-in .3s 1ms;animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{-webkit-animation:ttb-drawer-out .3s;animation:ttb-drawer-out .3s;top:0}.el-drawer__open .el-drawer.ttb{-webkit-animation:ttb-drawer-in .3s 1ms;animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{-webkit-animation:btt-drawer-out .3s;animation:btt-drawer-out .3s;bottom:0}.el-drawer__open .el-drawer.btt{-webkit-animation:btt-drawer-in .3s 1ms;animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#72767b;display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:32px;padding:20px 20px 0}.el-drawer__header>:first-child,.el-drawer__title{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__title{margin:0;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__body>*{-webkit-box-sizing:border-box;box-sizing:border-box}.el-drawer__container{position:relative}.el-drawer-fade-enter-active{-webkit-animation:el-drawer-fade-in .3s;animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-popconfirm__main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-f625.25a6a4ae.css b/priv/static/adminfe/chunk-f625.25a6a4ae.css new file mode 100644 index 000000000..ac26ef0f5 --- /dev/null +++ b/priv/static/adminfe/chunk-f625.25a6a4ae.css @@ -0,0 +1 @@ +.actions-button[data-v-794b0bb8]{text-align:left;width:350px;padding:10px}.actions-button-container[data-v-794b0bb8]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-dropdown[data-v-794b0bb8]{float:right}.el-icon-edit[data-v-794b0bb8]{margin-right:5px}.tag-container[data-v-794b0bb8]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tag-text[data-v-794b0bb8]{padding-right:20px}.no-hover[data-v-794b0bb8]:hover{color:#606266;background-color:#fff;cursor:auto} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-libs.0380664d.css b/priv/static/adminfe/chunk-libs.5cf7f50a.css similarity index 100% rename from priv/static/adminfe/chunk-libs.0380664d.css rename to priv/static/adminfe/chunk-libs.5cf7f50a.css diff --git a/priv/static/adminfe/index.html b/priv/static/adminfe/index.html index 0500424b6..d6b9b22b8 100644 --- a/priv/static/adminfe/index.html +++ b/priv/static/adminfe/index.html @@ -1 +1 @@ -Admin FE
\ No newline at end of file +Admin FE
\ No newline at end of file diff --git a/priv/static/adminfe/static/js/app.1df22cde.js b/priv/static/adminfe/static/js/app.1df22cde.js deleted file mode 100644 index 00a5fbcd3..000000000 --- a/priv/static/adminfe/static/js/app.1df22cde.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["app"],{"+aF5":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-pdf",use:"icon-pdf-usage",viewBox:"0 0 1024 1024",content:''});o.a.add(i);t.default=i},"0Fbn":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-people",use:"icon-people-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"1+ww":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-eye-open",use:"icon-eye-open-usage",viewBox:"0 0 1024 1024",content:''});o.a.add(i);t.default=i},"18BR":function(e,t,n){"use strict";var a=n("CzPo");n.n(a).a},"28eg":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-exit-fullscreen",use:"icon-exit-fullscreen-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"3PhE":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-nested",use:"icon-nested-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"5TQQ":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-theme",use:"icon-theme-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"6xvN":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-form",use:"icon-form-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"94Jb":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-dashboard",use:"icon-dashboard-usage",viewBox:"0 0 128 100",content:''});o.a.add(i);t.default=i},"9NTF":function(e,t,n){},"9i3r":function(e,t,n){"use strict";n.d(t,"a",function(){return a});var a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"localhost";return e.match(/https?:\/\//)?e:function(e){return e.startsWith("localhost:")||e.startsWith("127.0.0.1:")}(e)?"http://".concat(e):"https://".concat(e)}},CzPo:function(e,t,n){},EqXK:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-shopping",use:"icon-shopping-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},F3lI:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-bug",use:"icon-bug-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"F9+T":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-international",use:"icon-international-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},FDDl:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-qq",use:"icon-qq-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},GPBF:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-link",use:"icon-link-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},HIWW:function(e,t,n){"use strict";var a=n("MoCq");n.n(a).a},Hnev:function(e,t,n){"use strict";var a=n("UqWv");n.n(a).a},ICep:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-guide 2",use:"icon-guide 2-usage",viewBox:"0 0 1000 1000",content:''});o.a.add(i);t.default=i},JYDz:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-language",use:"icon-language-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},Kcm3:function(e,t,n){},Kj24:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-password",use:"icon-password-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},LxGF:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-peoples",use:"icon-peoples-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},MEYL:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-money",use:"icon-money-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},MMMJ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-example",use:"icon-example-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},MoCq:function(e,t,n){},MokB:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-list",use:"icon-list-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},P8iQ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-settings",use:"icon-settings-usage",viewBox:"0 0 490.2 490.2",content:'\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n'});o.a.add(i);t.default=i},"R/8a":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-message",use:"icon-message-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},"R/Hx":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-table",use:"icon-table-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},SZWj:function(e,t,n){"use strict";var a=n("Xm3t");n.n(a).a},TfVu:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-eye",use:"icon-eye-usage",viewBox:"0 0 128 64",content:''});o.a.add(i);t.default=i},Tfa4:function(e,t,n){},"Uf/o":function(e,t,n){var a={"./404.svg":"oUrx","./bug.svg":"F3lI","./chart.svg":"yCkv","./clipboard.svg":"vDVG","./component.svg":"VtY+","./dashboard.svg":"94Jb","./documentation.svg":"kPu2","./drag.svg":"m7++","./edit.svg":"qkZ8","./email.svg":"y7eQ","./example.svg":"MMMJ","./excel.svg":"ZZmv","./exit-fullscreen.svg":"28eg","./eye-open.svg":"1+ww","./eye.svg":"TfVu","./form.svg":"6xvN","./fullscreen.svg":"mSHS","./guide 2.svg":"ICep","./guide.svg":"ZoO1","./icon.svg":"nZHn","./international.svg":"F9+T","./language.svg":"JYDz","./link.svg":"GPBF","./list.svg":"MokB","./lock.svg":"qwAt","./message.svg":"R/8a","./money.svg":"MEYL","./nested.svg":"3PhE","./password.svg":"Kj24","./pdf.svg":"+aF5","./people.svg":"0Fbn","./peoples.svg":"LxGF","./qq.svg":"FDDl","./search.svg":"jo2x","./settings.svg":"P8iQ","./shopping.svg":"EqXK","./size.svg":"hkRB","./star.svg":"cIpu","./tab.svg":"j7e1","./table.svg":"R/Hx","./theme.svg":"5TQQ","./tree.svg":"k80C","./user.svg":"s7Vf","./wechat.svg":"gNoN","./zip.svg":"iqZD"};function r(e){var t=s(e);return n(t)}function s(e){if(!n.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}r.keys=function(){return Object.keys(a)},r.resolve=s,e.exports=r,r.id="Uf/o"},UqWv:function(e,t,n){},"VtY+":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-component",use:"icon-component-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},Vtdi:function(e,t,n){"use strict";n.r(t);var a={};n.r(a),n.d(a,"parseTime",function(){return Re}),n.d(a,"formatTime",function(){return Pe}),n.d(a,"timeAgo",function(){return xa}),n.d(a,"numberFormatter",function(){return Sa}),n.d(a,"toThousandFilter",function(){return Ea});var r=n("Kw5r"),s=n("p46w"),o=n.n(s),i=(n("9d8Q"),n("XJYT")),c=n.n(i),u=(n("D66Q"),n("sg+I"),{name:"App"}),l=n("KHd+"),p=Object(l.a)(u,function(){var e=this.$createElement,t=this._self._c||e;return t("div",{attrs:{id:"app"}},[t("router-view")],1)},[],!1,null,null,null);p.options.__file="App.vue";var d=p.exports,h=n("L2JU"),m=n("o0o1"),f=n.n(m),v=n("yXPU"),g=n.n(v),w=n("t3Un"),b=n("X4fA"),y=n("9i3r");function T(e,t){return x.apply(this,arguments)}function x(){return(x=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/need_reboot",method:"get",headers:k(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function S(e,t){return E.apply(this,arguments)}function E(){return(E=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/restart",method:"get",headers:k(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var k=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},_={state:{sidebar:{opened:!o.a.get("sidebarStatus")||!!+o.a.get("sidebarStatus"),withoutAnimation:!1},device:"desktop",language:o.a.get("language")||"en",needReboot:!1,size:o.a.get("size")||"medium",invitesEnabled:!1},mutations:{TOGGLE_SIDEBAR:function(e){e.sidebar.opened=!e.sidebar.opened,e.sidebar.withoutAnimation=!1,e.sidebar.opened?o.a.set("sidebarStatus",1):o.a.set("sidebarStatus",0)},CLOSE_SIDEBAR:function(e,t){o.a.set("sidebarStatus",0),e.sidebar.opened=!1,e.sidebar.withoutAnimation=t},TOGGLE_DEVICE:function(e,t){e.device=t},SET_INVITES_ENABLED:function(e,t){e.invitesEnabled=t},SET_LANGUAGE:function(e,t){e.language=t,o.a.set("language",t)},TOGGLE_REBOOT:function(e,t){e.needReboot=t},SET_SIZE:function(e,t){e.size=t,o.a.set("size",t)}},actions:{closeSideBar:function(e,t){(0,e.commit)("CLOSE_SIDEBAR",t.withoutAnimation)},NeedReboot:function(){var e=g()(f.a.mark(function e(t){var n,a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,e.next=3,T(a.authHost,a.token);case 3:r=e.sent,n("TOGGLE_REBOOT",r.data.need_reboot);case 5:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),RestartApplication:function(){var e=g()(f.a.mark(function e(t){var n,a;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,e.next=3,S(a.authHost,a.token);case 3:n("TOGGLE_REBOOT",!1);case 4:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),SetInvitesEnabled:function(e,t){(0,e.commit)("SET_INVITES_ENABLED",t)},setLanguage:function(e,t){(0,e.commit)("SET_LANGUAGE",t)},setSize:function(e,t){(0,e.commit)("SET_SIZE",t)},toggleDevice:function(e,t){(0,e.commit)("TOGGLE_DEVICE",t)},toggleSideBar:function(e){(0,e.commit)("TOGGLE_SIDEBAR")}}},A=n("cDf5"),O=n.n(A),L=n("QILm"),I=n.n(L),C=n("lSNA"),R=n.n(C),P=n("MVZn"),D=n.n(P),U=n("mm8V"),j=n("mSNy");function z(e){var t=function(e,t){if("object"!==O()(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,t||"default");if("object"!==O()(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===O()(t)?t:String(t)}var V={state:{activeTab:"",currentFilesPage:1,currentPage:1,filesPageSize:30,localPackFilesCount:0,localPacks:{},localPacksCount:0,pageSize:50,remoteInstance:"",remotePacks:{}},mutations:{SET_ACTIVE_TAB:function(e,t){e.activeTab=t},SET_FILES_COUNT:function(e,t){e.localPackFilesCount=t},SET_FILES_PAGE:function(e,t){e.currentFilesPage=t},SET_LOCAL_PACKS:function(e,t){e.localPacks=t},SET_LOCAL_PACKS_COUNT:function(e,t){e.localPacksCount=t},SET_PACK_FILES:function(e,t){var n=t.name,a=t.files;e.localPacks=D()({},e.localPacks,R()({},n,D()({},e.localPacks[n],{files:a})))},SET_PAGE:function(e,t){e.currentPage=t},SET_REMOTE_INSTANCE:function(e,t){e.remoteInstance=t},SET_REMOTE_PACKS:function(e,t){e.remotePacks=t},UPDATE_LOCAL_PACK_VAL:function(e,t){var n=t.name,a=t.key,s=t.value;r.default.set(e.localPacks[n].pack,a,s)},UPDATE_LOCAL_PACK_PACK:function(e,t){var n=t.name,a=t.pack;e.localPacks[n].pack=a},UPDATE_LOCAL_PACK_FILES:function(e,t){var n=t.name,a=t.files;r.default.set(e.localPacks[n],"files",a)}},actions:{AddNewEmojiFile:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,c,u,l;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=n.packName,o=n.file,c=n.shortcode,u=n.filename,e.prev=2,e.next=5,Object(U.a)(s,o,c,u,r.authHost,r.token);case 5:l=e.sent,e.next=11;break;case 8:return e.prev=8,e.t0=e.catch(2),e.abrupt("return");case 11:Object(i.Message)({message:"".concat(j.a.t("settings.successfullyUpdated")," ").concat(s," ").concat(j.a.t("settings.metadatLowerCase")),type:"success",duration:5e3}),a("UPDATE_LOCAL_PACK_FILES",{name:s,files:l.data});case 13:case"end":return e.stop()}},e,null,[[2,8]])}));return function(t,n){return e.apply(this,arguments)}}(),DeleteEmojiFile:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,c,u,l,p;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,o=t.state,c=n.packName,u=n.shortcode,l=o.localPacks[c].files,l[u],p=I()(l,[u].map(z)),a("UPDATE_LOCAL_PACK_FILES",{name:c,files:p}),e.prev=4,e.next=7,Object(U.d)(c,u,s.authHost,s.token);case 7:e.next=12;break;case 9:return e.prev=9,e.t0=e.catch(4),e.abrupt("return");case 12:Object(i.Message)({message:"".concat(j.a.t("settings.successfullyUpdated")," ").concat(c," ").concat(j.a.t("settings.metadatLowerCase")),type:"success",duration:5e3}),0===Object.keys(p).length&&o.currentFilesPage>1?r("FetchSinglePack",{name:c,page:o.currentFilesPage-1}):r("FetchSinglePack",{name:c,page:o.currentFilesPage});case 14:case"end":return e.stop()}},e,null,[[4,9]])}));return function(t,n){return e.apply(this,arguments)}}(),CreatePack:function(){var e=g()(f.a.mark(function e(t,n){var a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.getters,r=n.name,e.next=4,Object(U.c)(a.authHost,a.token,r);case 4:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),DeletePack:function(){var e=g()(f.a.mark(function e(t,n){var a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.getters,r=n.name,e.next=4,Object(U.e)(a.authHost,a.token,r);case 4:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),DownloadFrom:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.getters,r=n.instanceAddress,s=n.packName,o=n.as,e.next=4,Object(U.f)(r,s,o,a.authHost,a.token);case 4:"ok"===e.sent.data&&Object(i.Message)({message:"".concat(j.a.t("settings.successfullyDownloaded")," ").concat(s),type:"success",duration:5e3});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchLocalEmojiPacks:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=t.state,e.next=3,Object(U.i)(n,s.pageSize,r.authHost,r.token);case 3:o=e.sent,i=o.data,c=i.packs,u=i.count,l=Object.keys(c).reduce(function(e,t){var n=c[t],a=(n.files,I()(n,["files"]));return e[t]=a,e},{}),a("SET_LOCAL_PACKS",l),a("SET_LOCAL_PACKS_COUNT",u),a("SET_PAGE",n);case 10:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchSinglePack:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l,p;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.getters,r=t.commit,s=t.state,o=n.name,i=n.page,e.next=4,Object(U.g)(o,i,s.filesPageSize,a.authHost,a.token);case 4:c=e.sent,u=c.data,l=u.files,p=u.files_count,r("SET_PACK_FILES",{name:o,files:l}),r("SET_FILES_COUNT",p),r("SET_FILES_PAGE",i);case 10:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ImportFromFS:function(){var e=g()(f.a.mark(function e(t){var n,a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.getters,e.next=3,Object(U.h)(n.authHost,n.token);case 3:200===(a=e.sent).status&&(r=a.data.length>0?"".concat(j.a.t("settings.successfullyImported")," ").concat(a.data):j.a.t("settings.nowNewPacksToImport"),Object(i.Message)({message:r,type:"success",duration:5e3}));case 5:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),ReloadEmoji:function(){var e=g()(f.a.mark(function e(t){var n;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.getters,e.next=3,Object(U.k)(n.authHost,n.token);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),SavePackMetadata:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=t.state,o=n.packName,e.next=4,Object(U.l)(r.authHost,r.token,o,s.localPacks[o].pack);case 4:200===(c=e.sent).status&&(Object(i.Message)({message:"".concat(j.a.t("settings.successfullyUpdated")," ").concat(o," ").concat(j.a.t("settings.metadatLowerCase")),type:"success",duration:5e3}),a("UPDATE_LOCAL_PACK_PACK",{name:o,pack:c.data}));case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SetActiveTab:function(e,t){(0,e.commit)("SET_ACTIVE_TAB",t)},SetRemoteEmojiPacks:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=n.remoteInstance,e.next=4,Object(U.j)(r.authHost,r.token,s);case 4:o=e.sent,i=o.data,a("SET_REMOTE_INSTANCE",s),a("SET_REMOTE_PACKS",i.packs);case 8:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SetRemoteInstance:function(e,t){(0,e.commit)("SET_REMOTE_INSTANCE",t)},UpdateEmojiFile:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,c,u,l,p,d,h;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,o=t.state,c=n.packName,u=n.shortcode,l=n.newShortcode,p=n.newFilename,d=n.force,h=Object.keys(o.localPacks[c].files).reduce(function(e,t){return t===u?e[l]=p:e[t]=o.localPacks[c].files[t],e},{}),a("UPDATE_LOCAL_PACK_FILES",{name:c,files:h}),e.prev=4,e.next=7,Object(U.m)(c,u,l,p,d,s.authHost,s.token);case 7:e.next=12;break;case 9:return e.prev=9,e.t0=e.catch(4),e.abrupt("return");case 12:Object(i.Message)({message:"".concat(j.a.t("settings.successfullyUpdated")," ").concat(c," ").concat(j.a.t("settings.metadatLowerCase")),type:"success",duration:5e3}),r("FetchSinglePack",{name:c,page:o.currentFilesPage});case 14:case"end":return e.stop()}},e,null,[[4,9]])}));return function(t,n){return e.apply(this,arguments)}}(),UpdateLocalPackVal:function(){var e=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:(0,t.commit)("UPDATE_LOCAL_PACK_VAL",n);case 2:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}},M={state:{logs:[]},mutations:{ADD_ERROR_LOG:function(e,t){e.logs.push(t)}},actions:{addErrorLog:function(e,t){(0,e.commit)("ADD_ERROR_LOG",t)}}},H={sidebar:function(e){return e.app.sidebar},language:function(e){return e.app.language},size:function(e){return e.app.size},device:function(e){return e.app.device},visitedViews:function(e){return e.tagsView.visitedViews},cachedViews:function(e){return e.tagsView.cachedViews},token:function(e){return e.user.token},avatar:function(e){return e.user.avatar},name:function(e){return e.user.name},introduction:function(e){return e.user.introduction},status:function(e){return e.user.status},roles:function(e){return e.user.roles},setting:function(e){return e.user.setting},permission_routers:function(e){return e.permission.routers},addRouters:function(e){return e.permission.addRouters},errorLogs:function(e){return e.errorLog.logs},users:function(e){return e.users.fetchedUsers},authHost:function(e){return e.user.authHost},settings:function(e){return e.settings}};function B(e,t,n,a){return N.apply(this,arguments)}function N(){return(N=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/invite_token",method:"post",headers:W(r),data:n&&n.length>0?{max_use:t,expires_at:n}:{max_use:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function F(e,t,n,a){return G.apply(this,arguments)}function G(){return(G=g()(f.a.mark(function e(t,n,a,r){var s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s=n.length>0?{email:t,name:n}:{email:t},e.next=3,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/email_invite",method:"post",headers:W(r),data:s});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Y(e,t){return $.apply(this,arguments)}function $(){return($=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/users/invites",method:"get",headers:W(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function q(e,t,n){return K.apply(this,arguments)}function K(){return(K=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/revoke_invite",method:"post",headers:W(a),data:{token:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var W=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},Z={state:{inviteTokens:[],loading:!1,newToken:{}},mutations:{SET_LOADING:function(e,t){e.loading=t},SET_NEW_TOKEN:function(e,t){e.newToken=t},SET_TOKENS:function(e,t){e.inviteTokens=t}},actions:{FetchInviteTokens:function(){var e=g()(f.a.mark(function e(t){var n,a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,n("SET_LOADING",!0),e.next=4,Y(a.authHost,a.token);case 4:r=e.sent,n("SET_TOKENS",r.data.invites.reverse()),n("SET_LOADING",!1);case 7:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),GenerateInviteToken:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,o=n.maxUse,i=n.expiresAt,e.prev=2,e.next=5,B(o,i,s.authHost,s.token);case 5:c=e.sent,u=c.data,a("SET_NEW_TOKEN",{token:u.token,maxUse:u.max_use,expiresAt:u.expires_at}),e.next=13;break;case 10:return e.prev=10,e.t0=e.catch(2),e.abrupt("return");case 13:r("FetchInviteTokens");case 14:case"end":return e.stop()}},e,null,[[2,10]])}));return function(t,n){return e.apply(this,arguments)}}(),InviteUserViaEmail:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.commit,t.dispatch,a=t.getters,r=n.email,s=n.name,e.prev=2,e.next=5,F(r,s,a.authHost,a.token);case 5:e.next=10;break;case 7:return e.prev=7,e.t0=e.catch(2),e.abrupt("return");case 10:Object(i.Message)({message:j.a.t("invites.emailSent"),type:"success",duration:5e3});case 11:case"end":return e.stop()}},e,null,[[2,7]])}));return function(t,n){return e.apply(this,arguments)}}(),RemoveNewToken:function(e){(0,e.commit)("SET_NEW_TOKEN",{})},RevokeToken:function(){var e=g()(f.a.mark(function e(t,n){var a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.commit,a=t.dispatch,r=t.getters,e.prev=1,e.next=4,q(n,r.authHost,r.token);case 4:e.next=9;break;case 6:return e.prev=6,e.t0=e.catch(1),e.abrupt("return");case 9:a("FetchInviteTokens");case 10:case"end":return e.stop()}},e,null,[[1,6]])}));return function(t,n){return e.apply(this,arguments)}}()}};function Q(e,t,n,a){return J.apply(this,arguments)}function J(){return(J=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/media_proxy_caches?page=".concat(t,"&page_size=").concat(n),method:"get",headers:se(r)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function X(e,t,n,a){return ee.apply(this,arguments)}function ee(){return(ee=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/media_proxy_caches/purge",method:"post",headers:se(r),data:{urls:t,ban:n}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function te(e,t,n){return ne.apply(this,arguments)}function ne(){return(ne=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/media_proxy_caches/delete",method:"post",headers:se(a),data:{urls:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function ae(e,t,n,a,r){return re.apply(this,arguments)}function re(){return(re=g()(f.a.mark(function e(t,n,a,r,s){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(r),url:"/api/pleroma/admin/media_proxy_caches?query=".concat(t,"&page=").concat(n,"&page_size=").concat(a),method:"get",headers:se(s)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var se=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},oe={state:{bannedUrls:[],currentPage:1,loading:!1,pageSize:50,totalUrlsCount:0},mutations:{SET_BANNED_URLS:function(e,t){e.bannedUrls=t.map(function(e){return{url:e}})},SET_TOTAL_URLS_COUNT:function(e,t){e.totalUrlsCount=t},SET_LOADING:function(e,t){e.loading=t},SET_PAGE:function(e,t){e.currentPage=t}},actions:{ListBannedUrls:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=t.state,o=n.page,a("SET_LOADING",!0),e.next=5,Q(o,s.pageSize,r.authHost,r.token);case 5:i=e.sent,a("SET_BANNED_URLS",i.data.urls),a("SET_TOTAL_URLS_COUNT",i.data.count),a("SET_PAGE",o),a("SET_LOADING",!1);case 10:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),PurgeUrls:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=t.state,o=n.urls,c=n.ban,e.next=4,X(o,c,r.authHost,r.token);case 4:Object(i.Message)({message:j.a.t("mediaProxyCache.evictedMessage"),type:"success",duration:5e3}),c&&a("ListBannedUrls",{page:s.currentPage});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),RemoveBannedUrls:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=t.state,e.next=3,te(n,r.authHost,r.token);case 3:a("ListBannedUrls",{page:s.currentPage});case 4:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SearchUrls:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.commit,r=t.dispatch,s=t.getters,o=t.state,i=n.query,c=n.page,0!==i.length){e.next=7;break}a("SET_SEARCH_QUERY",i),r("ListBannedUrls",{page:c}),e.next=16;break;case 7:return a("SET_LOADING",!0),a("SET_SEARCH_QUERY",i),e.next=11,ae(i,c,o.pageSize,s.authHost,s.token);case 11:u=e.sent,a("SET_BANNED_URLS",u.data.urls),a("SET_TOTAL_URLS_COUNT",u.data.count),a("SET_PAGE",c),a("SET_LOADING",!1);case 16:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}},ie=n("LvDl"),ce=n.n(ie);function ue(e,t,n){return le.apply(this,arguments)}function le(){return(le=g()(f.a.mark(function e(t,n,a){var r,s,o=arguments;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.length>3&&void 0!==o[3]?o[3]:1,s=new URLSearchParams(ce.a.omitBy(D()({},a,{page:r}),ce.a.isUndefined)).toString(),e.next=4,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/moderation_log?".concat(s),method:"get",headers:fe(n)});case 4:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}function pe(e,t){return de.apply(this,arguments)}function de(){return(de=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/users?filters=is_admin",method:"get",headers:fe(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function he(e,t){return me.apply(this,arguments)}function me(){return(me=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/users?filters=is_moderator",method:"get",headers:fe(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var fe=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},ve={state:{fetchedLog:[],logItemsCount:0,admins:[],moderators:[],logLoading:!0,adminsLoading:!0},mutations:{SET_LOG_LOADING:function(e,t){e.logLoading=t},SET_ADMINS_LOADING:function(e,t){e.adminsLoading=t},SET_MODERATION_LOG:function(e,t){e.fetchedLog=t},SET_MODERATION_LOG_COUNT:function(e,t){e.logItemsCount=t},SET_ADMINS:function(e,t){e.admins=t},SET_MODERATORS:function(e,t){e.moderators=t}},actions:{FetchModerationLog:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s,o=arguments;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,r=o.length>1&&void 0!==o[1]?o[1]:{},e.next=4,ue(a.authHost,a.token,r);case 4:s=e.sent,n("SET_MODERATION_LOG",s.data.items),n("SET_MODERATION_LOG_COUNT",s.data.total),n("SET_LOG_LOADING",!1);case 8:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),FetchAdmins:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,e.next=3,pe(a.authHost,a.token);case 3:return r=e.sent,e.next=6,he(a.authHost,a.token);case 6:s=e.sent,n("SET_ADMINS",r.data),n("SET_MODERATORS",s.data),n("SET_ADMINS_LOADING",!1);case 10:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}()}},ge=n("RIqP"),we=n.n(ge);function be(e,t){return ye.apply(this,arguments)}function ye(){return(ye=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/v1/instance/peers",method:"get",headers:Te(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var Te=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},xe={state:{fetchedPeers:[],loading:!0},mutations:{SET_PEERS:function(e,t){e.fetchedPeers=t},SET_LOADING:function(e,t){e.loading=t}},actions:{FetchPeers:function(){var e=g()(f.a.mark(function e(t){var n,a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,e.next=3,be(a.authHost,a.token);case 3:r=e.sent,n("SET_PEERS",we()(r.data).sort()),n("SET_LOADING",!1);case 6:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}()}},Se=n("jE9Z"),Ee={name:"Hamburger",props:{isActive:{type:Boolean,default:!1},toggleClick:{type:Function,default:null}}},ke=(n("18BR"),Object(l.a)(Ee,function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticStyle:{padding:"0 15px"},on:{click:this.toggleClick}},[t("svg",{staticClass:"hamburger",class:{"is-active":this.isActive},attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:"64",height:"64"}},[t("path",{attrs:{d:"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z"}})])])},[],!1,null,"69c6c5c4",null));ke.options.__file="index.vue";var _e={components:{Hamburger:ke.exports},computed:D()({},Object(h.b)(["sidebar","name","avatar","device"])),methods:{toggleSideBar:function(){this.$store.dispatch("toggleSideBar")},logout:function(){this.$store.dispatch("LogOut").then(function(){location.reload()})}}},Ae=(n("fhHp"),Object(l.a)(_e,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"navbar"},[n("hamburger",{staticClass:"hamburger-container",attrs:{"toggle-click":e.toggleSideBar,"is-active":e.sidebar.opened}}),e._v(" "),n("div",{staticClass:"right-menu"},[n("el-dropdown",{staticClass:"avatar-container right-menu-item hover-effect",attrs:{trigger:"click"}},[n("div",{staticClass:"avatar-wrapper"},[n("img",{staticClass:"user-avatar",attrs:{src:e.avatar+"?imageView2/1/w/80/h/80"}})]),e._v(" "),n("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[n("el-dropdown-item",[n("span",{staticStyle:{display:"block"},on:{click:e.logout}},[e._v(e._s(e.$t("navbar.logOut")))])])],1)],1)],1)],1)},[],!1,null,"28de7ff2",null));Ae.options.__file="Navbar.vue";var Oe=Ae.exports,Le=n("33yf"),Ie=n.n(Le);function Ce(e){return this.$te("route."+e)?this.$t("route."+e):e}function Re(e,t){if(0===arguments.length)return null;var n,a=t||"{y}-{m}-{d} {h}:{i}:{s}";"object"===O()(e)?n=e:("string"==typeof e&&/^[0-9]+$/.test(e)&&(e=parseInt(e)),"number"==typeof e&&10===e.toString().length&&(e*=1e3),n=new Date(e));var r={y:n.getFullYear(),m:n.getMonth()+1,d:n.getDate(),h:n.getHours(),i:n.getMinutes(),s:n.getSeconds(),a:n.getDay()};return a.replace(/{(y|m|d|h|i|s|a)+}/g,function(e,t){var n=r[t];return"a"===t?["日","一","二","三","四","五","六"][n]:(e.length>0&&n<10&&(n="0"+n),n||0)})}function Pe(e,t){e=1e3*+e;var n=new Date(e),a=(Date.now()-n)/1e3;return a<30?"刚刚":a<3600?Math.ceil(a/60)+"分钟前":a<86400?Math.ceil(a/3600)+"小时前":a<172800?"1天前":t?Re(e,t):n.getMonth()+1+"月"+n.getDate()+"日"+n.getHours()+"时"+n.getMinutes()+"分"}function De(e){return/^(https?:|mailto:|tel:)/.test(e)}var Ue={name:"Item",props:{count:{type:String,default:null},icon:{type:String,default:""},title:{type:String,default:""}}},je=(n("zEvO"),Object(l.a)(Ue,function(){var e=this.$createElement,t=this._self._c||e;return t("span",[t("svg-icon",{attrs:{"icon-class":this.icon}}),this._v(" "),t("span",{attrs:{slot:"title"},slot:"title"},[this._v(this._s(this.title))]),this._v(" "),t("el-badge",{staticClass:"count-badge",attrs:{value:this.count,type:"primary"}})],1)},[],!1,null,"52140d98",null));je.options.__file="Item.vue";var ze=je.exports,Ve={props:{to:{type:String,required:!0}},methods:{linkProps:function(e){return De(e)?{is:"a",href:e,target:"_blank",rel:"noopener"}:{is:"router-link",to:e}}}},Me=Object(l.a)(Ve,function(){var e=this.$createElement;return(this._self._c||e)("component",this._b({},"component",this.linkProps(this.to),!1),[this._t("default")],2)},[],!1,null,null,null);Me.options.__file="Link.vue";var He=Me.exports,Be=n("ZhIB"),Ne=n.n(Be),Fe={name:"SidebarItem",components:{Item:ze,AppLink:He},mixins:[{computed:{device:function(){return this.$store.state.app.device}},mounted:function(){this.fixBugIniOS()},methods:{fixBugIniOS:function(){var e=this,t=this.$refs.subMenu;if(t){var n=t.handleMouseleave;t.handleMouseleave=function(t){"mobile"!==e.device&&n(t)}}}}}],props:{item:{type:Object,required:!0},isNest:{type:Boolean,default:!1},basePath:{type:String,default:""}},data:function(){return{onlyOneChild:null}},computed:{invitesEnabled:function(){return"/invites"!==this.basePath||this.$store.state.app.invitesEnabled},normalizedReportsCount:function(){return Ne()(this.$store.state.reports.openReportsCount).format("0a")}},methods:{hasOneShowingChild:function(e,t){var n=this,a=e.filter(function(e){return!e.hidden&&(n.onlyOneChild=e,!0)});return 1===a.length||0===a.length&&(this.onlyOneChild=D()({},t,{path:"",noShowingChildren:!0}),!0)},resolvePath:function(e){return this.isExternalLink(e)?e:Ie.a.resolve(this.basePath,e)},showCount:function(e){return"/reports"===e.path},isExternalLink:function(e){return De(e)},generateTitle:Ce}},Ge=Object(l.a)(Fe,function(){var e=this,t=e.$createElement,n=e._self._c||t;return!e.item.hidden&&e.item.children&&e.invitesEnabled?n("div",{staticClass:"menu-wrapper"},[!e.hasOneShowingChild(e.item.children,e.item)||e.onlyOneChild.children&&!e.onlyOneChild.noShowingChildren||e.item.alwaysShow?n("el-submenu",{ref:"subMenu",attrs:{index:e.resolvePath(e.item.path)}},[n("template",{slot:"title"},[e.item.meta?n("item",{attrs:{count:e.showCount(e.item)?e.normalizedReportsCount:null,icon:e.item.meta.icon,title:e.generateTitle(e.item.meta.title)}}):e._e()],1),e._v(" "),e._l(e.item.children,function(t){return[t.hidden?e._e():[t.children&&t.children.length>0?n("sidebar-item",{key:t.path,staticClass:"nest-menu",attrs:{"is-nest":!0,item:t,"base-path":e.resolvePath(t.path)}}):n("app-link",{key:t.name,attrs:{to:e.resolvePath(t.path)}},[n("el-menu-item",{attrs:{index:e.resolvePath(t.path)}},[t.meta?n("item",{attrs:{count:e.showCount(e.item)?e.normalizedReportsCount:null,icon:t.meta.icon,title:e.generateTitle(t.meta.title)}}):e._e()],1)],1)]]})],2):[n("app-link",{attrs:{to:e.resolvePath(e.onlyOneChild.path)}},[n("el-menu-item",{class:{"submenu-title-noDropdown":!e.isNest},attrs:{index:e.resolvePath(e.onlyOneChild.path)}},[e.onlyOneChild.meta?n("item",{attrs:{count:e.showCount(e.item)?e.normalizedReportsCount:null,icon:e.onlyOneChild.meta.icon||e.item.meta.icon,title:e.generateTitle(e.onlyOneChild.meta.title)}}):e._e()],1)],1)]],2):e._e()},[],!1,null,null,null);Ge.options.__file="SidebarItem.vue";var Ye=Ge.exports,$e=n("zx4i"),qe=n.n($e),Ke={components:{SidebarItem:Ye},computed:D()({},Object(h.b)(["permission_routers","sidebar"]),{variables:function(){return qe.a},isCollapse:function(){return!this.sidebar.opened}}),mounted:function(){this.$store.dispatch("FetchOpenReportsCount")}},We=Object(l.a)(Ke,function(){var e=this.$createElement,t=this._self._c||e;return t("el-scrollbar",{attrs:{"wrap-class":"scrollbar-wrapper"}},[t("el-menu",{attrs:{"default-active":this.$route.path,collapse:this.isCollapse,"background-color":this.variables.menuBg,"text-color":this.variables.menuText,"active-text-color":this.variables.menuActiveText,mode:"vertical"}},this._l(this.permission_routers,function(e){return t("sidebar-item",{key:e.path,attrs:{item:e,"base-path":e.path}})}),1)],1)},[],!1,null,null,null);We.options.__file="index.vue";var Ze=We.exports,Qe={name:"ScrollPane",data:function(){return{left:0}},methods:{handleScroll:function(e){var t=e.wheelDelta||40*-e.deltaY,n=this.$refs.scrollContainer.$refs.wrap;n.scrollLeft=n.scrollLeft+t/4},moveToTarget:function(e){var t=this.$refs.scrollContainer.$el.offsetWidth,n=this.$refs.scrollContainer.$refs.wrap,a=this.$parent.$refs.tag,r=null,s=null;if(a.length>0&&(r=a[0],s=a[a.length-1]),r===e)n.scrollLeft=0;else if(s===e)n.scrollLeft=n.scrollWidth-t;else{var o=a.findIndex(function(t){return t===e}),i=a[o-1],c=a[o+1],u=c.$el.offsetLeft+c.$el.offsetWidth+4,l=i.$el.offsetLeft-4;u>n.scrollLeft+t?n.scrollLeft=u-t:l1&&void 0!==arguments[1]?arguments[1]:"/",a=[];return e.forEach(function(e){if(e.meta&&e.meta.affix&&a.push({path:Ie.a.resolve(n,e.path),name:e.name,meta:D()({},e.meta)}),e.children){var r=t.filterAffixTags(e.children,e.path);r.length>=1&&(a=[].concat(we()(a),we()(r)))}}),a},initTags:function(){var e=this.affixTags=this.filterAffixTags(this.routers),t=!0,n=!1,a=void 0;try{for(var r,s=e[Symbol.iterator]();!(t=(r=s.next()).done);t=!0){var o=r.value;o.name&&this.$store.dispatch("addVisitedView",o)}}catch(e){n=!0,a=e}finally{try{t||null==s.return||s.return()}finally{if(n)throw a}}},addTags:function(){return this.$route.name&&this.$store.dispatch("addView",this.$route),!1},moveToCurrentTag:function(){var e=this,t=this.$refs.tag;this.$nextTick(function(){var n=!0,a=!1,r=void 0;try{for(var s,o=t[Symbol.iterator]();!(n=(s=o.next()).done);n=!0){var i=s.value;if(i.to.path===e.$route.path){e.$refs.scrollPane.moveToTarget(i),i.to.fullPath!==e.$route.fullPath&&e.$store.dispatch("updateVisitedView",e.$route);break}}}catch(e){a=!0,r=e}finally{try{n||null==o.return||o.return()}finally{if(a)throw r}}})},refreshSelectedTag:function(e){var t=this;this.$store.dispatch("delCachedView",e).then(function(){var n=e.fullPath;t.$nextTick(function(){t.$router.replace({path:"/redirect"+n})})})},closeSelectedTag:function(e){var t=this;this.$store.dispatch("delView",e).then(function(n){var a=n.visitedViews;t.isActive(e)&&t.toLastView(a)})},closeOthersTags:function(){var e=this;this.$router.push(this.selectedTag),this.$store.dispatch("delOthersViews",this.selectedTag).then(function(){e.moveToCurrentTag()})},closeAllTags:function(e){var t=this;this.$store.dispatch("delAllViews").then(function(n){var a=n.visitedViews;t.affixTags.some(function(t){return t.path===e.path})||t.toLastView(a)})},toLastView:function(e){var t=e.slice(-1)[0];t?this.$router.push(t):this.$router.push("/")},openMenu:function(e,t){var n=this.$el.getBoundingClientRect().left,a=this.$el.offsetWidth-105,r=t.clientX-n+15;this.left=r>a?a:r,this.top=t.clientY,this.visible=!0,this.selectedTag=e},closeMenu:function(){this.visible=!1}}},et=(n("Hnev"),n("Yymj"),Object(l.a)(Xe,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"tags-view-container"},[n("scroll-pane",{ref:"scrollPane",staticClass:"tags-view-wrapper"},e._l(e.visitedViews,function(t){return n("router-link",{key:t.path,ref:"tag",refInFor:!0,staticClass:"tags-view-item",class:e.isActive(t)?"active":"",attrs:{to:{path:t.path,query:t.query,fullPath:t.fullPath},tag:"span"},nativeOn:{mouseup:function(n){return"button"in n&&1!==n.button?null:e.closeSelectedTag(t)},contextmenu:function(n){return n.preventDefault(),e.openMenu(t,n)}}},[e._v("\n "+e._s(e.generateTitle(t.title))+"\n "),t.meta.affix?e._e():n("span",{staticClass:"el-icon-close",on:{click:function(n){return n.preventDefault(),n.stopPropagation(),e.closeSelectedTag(t)}}})])}),1),e._v(" "),n("ul",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"contextmenu",style:{left:e.left+"px",top:e.top+"px"}},[n("li",{on:{click:function(t){return e.refreshSelectedTag(e.selectedTag)}}},[e._v(e._s(e.$t("tagsView.refresh")))]),e._v(" "),e.selectedTag.meta&&e.selectedTag.meta.affix?e._e():n("li",{on:{click:function(t){return e.closeSelectedTag(e.selectedTag)}}},[e._v(e._s(e.$t("tagsView.close")))]),e._v(" "),n("li",{on:{click:e.closeOthersTags}},[e._v(e._s(e.$t("tagsView.closeOthers")))]),e._v(" "),n("li",{on:{click:function(t){return e.closeAllTags(e.selectedTag)}}},[e._v(e._s(e.$t("tagsView.closeAll")))])])],1)},[],!1,null,"e1cdb714",null));et.options.__file="TagsView.vue";var tt=et.exports,nt={name:"AppMain",computed:{cachedViews:function(){return this.$store.state.tagsView.cachedViews},key:function(){return this.$route.fullPath}}},at=(n("Z+gY"),Object(l.a)(nt,function(){var e=this.$createElement,t=this._self._c||e;return t("section",{staticClass:"app-main"},[t("transition",{attrs:{name:"fade-transform",mode:"out-in"}},[t("keep-alive",{attrs:{include:this.cachedViews}},[t("router-view",{key:this.key})],1)],1)],1)},[],!1,null,"f852c4f2",null));at.options.__file="AppMain.vue";var rt=at.exports,st=document.body,ot={name:"Layout",components:{Navbar:Oe,Sidebar:Ze,AppMain:rt,TagsView:tt},mixins:[{watch:{$route:function(e){"mobile"===this.device&&this.sidebar.opened&&va.dispatch("closeSideBar",{withoutAnimation:!1})}},beforeMount:function(){window.addEventListener("resize",this.resizeHandler)},mounted:function(){var e=this.isMobile(),t=this.isTablet();(e||t)&&(va.dispatch("toggleDevice",e?"mobile":"tablet"),va.dispatch("closeSideBar",{withoutAnimation:!0}))},methods:{isMobile:function(){return st.getBoundingClientRect().width-3<480},isTablet:function(){var e=st.getBoundingClientRect();return e.width-3<801&&e.width-3>480},resizeHandler:function(){if(!document.hidden){var e=this.isMobile(),t=this.isTablet();e||t?(va.dispatch("toggleDevice",e?"mobile":"tablet"),va.dispatch("closeSideBar",{withoutAnimation:!0})):va.dispatch("toggleDevice","desktop")}}}}],computed:{sidebar:function(){return this.$store.state.app.sidebar},device:function(){return this.$store.state.app.device},classObj:function(){return{hideSidebar:!this.sidebar.opened,openSidebar:this.sidebar.opened,withoutAnimation:this.sidebar.withoutAnimation,mobile:"mobile"===this.device}}},methods:{handleClickOutside:function(){this.$store.dispatch("closeSideBar",{withoutAnimation:!1})}}},it=(n("SZWj"),Object(l.a)(ot,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"app-wrapper",class:e.classObj},["mobile"===e.device&&e.sidebar.opened?n("div",{staticClass:"drawer-bg",on:{click:e.handleClickOutside}}):e._e(),e._v(" "),n("sidebar",{staticClass:"sidebar-container"}),e._v(" "),n("div",{staticClass:"main-container"},[n("navbar"),e._v(" "),n("app-main")],1)],1)},[],!1,null,"767d264f",null));it.options.__file="Layout.vue";var ct=it.exports;r.default.use(Se.a);var ut=[""]||!1,lt=ut.includes("settings"),pt={path:"/settings",component:ct,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-5118"),n.e("chunk-565e")]).then(n.bind(null,"YcIK"))},name:"Settings",meta:{title:"settings",icon:"settings",noCache:!0}}]},dt=ut.includes("statuses"),ht={path:"/statuses",component:ct,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-df62"),n.e("chunk-2d97"),n.e("chunk-176e")]).then(n.bind(null,"FtQ1"))},name:"Statuses",meta:{title:"statuses",icon:"form",noCache:!0}}]},mt=ut.includes("reports"),ft={path:"/reports",component:ct,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-df62"),n.e("chunk-40a4")]).then(n.bind(null,"cEOe"))},name:"Reports",meta:{title:"reports",icon:"documentation",noCache:!0}}]},vt=ut.includes("invites"),gt={path:"/invites",component:ct,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-7c6b")]).then(n.bind(null,"HMof"))},name:"Invites",meta:{title:"invites",icon:"guide",noCache:!0}}]},wt=ut.includes("emoji-packs"),bt={path:"/emoji_packs",component:ct,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-97e2")]).then(n.bind(null,"26YS"))},name:"Emoji Packs",meta:{title:"emoji-packs",icon:"eye-open",noCache:!0}}]},yt=ut.includes("moderation-log"),Tt={path:"/moderation_log",component:ct,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-df62"),n.e("chunk-654e")]).then(n.bind(null,"CmY0"))},name:"Moderation Log",meta:{title:"moderationLog",icon:"list",noCache:!0}}]},xt=ut.includes("media-proxy-cache"),St={path:"/media_proxy_cache",component:ct,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-60a9")]).then(n.bind(null,"mAEd"))},name:"MediaProxy Cache",meta:{title:"mediaProxyCache",icon:"example",noCache:!0}}]},Et=[{path:"/redirect",component:ct,hidden:!0,children:[{path:"/redirect/:path*",component:function(){return n.e("7zzA").then(n.bind(null,"7zzA"))}}]},{path:"/login-pleroma",component:function(){return Promise.all([n.e("oAJy"),n.e("chunk-16d0")]).then(n.bind(null,"iRgq"))},hidden:!0},{path:"/login",component:function(){return Promise.all([n.e("oAJy"),n.e("chunk-9a72")]).then(n.bind(null,"ntYl"))},hidden:!0},{path:"/auth-redirect",component:function(){return n.e("JEtC").then(n.bind(null,"JEtC"))},hidden:!0},{path:"/404",component:function(){return n.e("chunk-68ea").then(n.bind(null,"/eX4"))},hidden:!0},{path:"/401",component:function(){return n.e("chunk-6e81").then(n.bind(null,"UUO+"))},hidden:!0},{path:"",component:ct,redirect:"/users/index"}],kt=new Se.a({scrollBehavior:function(){return{y:0}},routes:Et}),_t=[{path:"/users",component:ct,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-2d97"),n.e("chunk-0171")]).then(n.bind(null,"RGjw"))},name:"Users",meta:{title:"users",icon:"peoples",noCache:!0}}]}].concat(we()(dt?[]:[ht]),we()(mt?[]:[ft]),we()(vt?[]:[gt]),we()(wt?[]:[bt]),we()(yt?[]:[Tt]),we()(xt?[]:[St]),we()(lt?[]:[pt]),[{path:"/users/:id",component:ct,children:[{path:"",name:"UsersShow",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-df62"),n.e("chunk-6e8c")]).then(n.bind(null,"4bFr"))}}],hidden:!0},{path:"/statuses/:id",component:ct,children:[{path:"",name:"StatusShow",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-df62"),n.e("chunk-7503")]).then(n.bind(null,"rwwt"))}}],hidden:!0},{path:"*",redirect:"/404",hidden:!0}]);var At={state:{routers:[],addRouters:[]},mutations:{SET_ROUTERS:function(e,t){e.addRouters=t,e.routers=Et.concat(t)}},actions:{GenerateRoutes:function(e,t){var n=e.commit;return new Promise(function(e){var a,r=t.roles;a=r.includes("admin")?_t:function e(t,n){var a=[];return t.forEach(function(t){var r=D()({},t);(function(e,t){return!t.meta||!t.meta.roles||e.some(function(e){return t.meta.roles.includes(e)})})(n,r)&&(r.children&&(r.children=e(r.children,n)),a.push(r))}),a}(_t,r),n("SET_ROUTERS",a),e()})}}};function Ot(e,t){return Lt.apply(this,arguments)}function Lt(){return(Lt=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/relay",method:"get",headers:Dt(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function It(e,t,n){return Ct.apply(this,arguments)}function Ct(){return(Ct=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/relay",method:"post",headers:Dt(a),data:{relay_url:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Rt(e,t,n){return Pt.apply(this,arguments)}function Pt(){return(Pt=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/relay",method:"delete",headers:Dt(a),data:{relay_url:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var Dt=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},Ut={state:{fetchedRelays:[],loading:!0},mutations:{SET_LOADING:function(e,t){e.loading=t},SET_RELAYS:function(e,t){e.fetchedRelays=t},ADD_RELAY:function(e,t){e.fetchedRelays=[].concat(we()(e.fetchedRelays),[{actor:t}])},DELETE_RELAY:function(e,t){e.fetchedRelays=e.fetchedRelays.filter(function(e){return e.actor!==t})}},actions:{FetchRelays:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,n("SET_LOADING",!0),e.next=4,Ot(a.authHost,a.token);case 4:r=e.sent,s=r.data,n("SET_RELAYS",s.relays),n("SET_LOADING",!1);case 8:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),AddRelay:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,a("ADD_RELAY",n),e.prev=2,e.next=5,It(n,s.authHost,s.token);case 5:e.next=10;break;case 7:return e.prev=7,e.t0=e.catch(2),e.abrupt("return");case 10:return e.prev=10,r("FetchRelays"),e.finish(10);case 13:case"end":return e.stop()}},e,null,[[2,7,10,13]])}));return function(t,n){return e.apply(this,arguments)}}(),DeleteRelay:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,a("DELETE_RELAY",n),e.prev=2,e.next=5,Rt(n,s.authHost,s.token);case 5:e.next=10;break;case 7:return e.prev=7,e.t0=e.catch(2),e.abrupt("return");case 10:return e.prev=10,r("FetchRelays"),e.finish(10);case 13:case"end":return e.stop()}},e,null,[[2,7,10,13]])}));return function(t,n){return e.apply(this,arguments)}}()}};function jt(e,t,n){return zt.apply(this,arguments)}function zt(){return(zt=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/reports",method:"patch",headers:Nt(a),data:{reports:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Vt(e,t,n,a,r){return Mt.apply(this,arguments)}function Mt(){return(Mt=g()(f.a.mark(function e(t,n,a,r,s){var o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.length>0?"/api/pleroma/admin/reports?state=".concat(t,"&page=").concat(n,"&page_size=").concat(a):"/api/pleroma/admin/reports?page=".concat(n,"&page_size=").concat(a),e.next=3,Object(w.a)({baseURL:Object(y.a)(r),url:o,method:"get",headers:Nt(s)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ht(){return(Ht=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/reports/".concat(n,"/notes"),method:"post",headers:Nt(r),data:{content:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Bt(){return(Bt=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/reports/".concat(n,"/notes/").concat(t),method:"delete",headers:Nt(r)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var Nt=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},Ft={state:{currentPage:1,fetchedReports:[],loading:!0,openReportsCount:0,pageSize:50,stateFilter:"",totalReportsCount:0},mutations:{SET_LAST_REPORT_ID:function(e,t){e.idOfLastReport=t},SET_LOADING:function(e,t){e.loading=t},SET_OPEN_REPORTS_COUNT:function(e,t){e.openReportsCount=t},SET_PAGE:function(e,t){e.currentPage=t},SET_REPORTS:function(e,t){e.fetchedReports=t},SET_REPORTS_COUNT:function(e,t){e.totalReportsCount=t},SET_REPORTS_FILTER:function(e,t){e.stateFilter=t}},actions:{ChangeReportState:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.commit,r=t.dispatch,s=t.getters,o=t.state,jt(n,s.authHost,s.token),i=o.fetchedReports.map(function(e){return n.map(function(e){return e.id}).includes(e.id)?D()({},e,{state:n[0].state}):e}),a("SET_REPORTS",i),r("FetchOpenReportsCount");case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ClearFetchedReports:function(e){(0,e.commit)("SET_REPORTS",[])},FetchReports:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=t.state,a("SET_LOADING",!0),e.next=4,Vt(s.stateFilter,n,s.pageSize,r.authHost,r.token);case 4:o=e.sent,i=o.data,a("SET_REPORTS",i.reports),a("SET_REPORTS_COUNT",i.total),a("SET_PAGE",n),a("SET_LOADING",!1);case 10:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchOpenReportsCount:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,r=t.state,n("SET_LOADING",!0),e.next=4,Vt("open",r.currentPage,r.pageSize,a.authHost,a.token);case 4:s=e.sent,o=s.data,n("SET_OPEN_REPORTS_COUNT",o.total),n("SET_LOADING",!1);case 8:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),SetReportsFilter:function(e,t){(0,e.commit)("SET_REPORTS_FILTER",t)},CreateReportNote:function(e,t){var n=e.commit,a=e.getters,r=e.state,s=e.rootState,o=t.content,i=t.reportID;!function(e,t,n,a){Ht.apply(this,arguments)}(o,i,a.authHost,a.token);var c={user:{avatar:s.user.avatar,nickname:s.user.name,id:s.user.id},content:o,created_at:(new Date).getTime()};n("SET_REPORTS",r.fetchedReports.map(function(e){return e.id===i&&(e.notes=[].concat(we()(e.notes),[c])),e}))},DeleteReportNote:function(e,t){var n=e.commit,a=e.getters,r=e.state,s=t.noteID,o=t.reportID;!function(e,t,n,a){Bt.apply(this,arguments)}(s,o,a.authHost,a.token),n("SET_REPORTS",r.fetchedReports.map(function(e){return e.id===o&&(e.notes=e.notes.filter(function(e){return e.id!==s})),e}))}}};function Gt(e,t){return Yt.apply(this,arguments)}function Yt(){return(Yt=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/config/descriptions",method:"get",headers:Jt(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function $t(e,t){return qt.apply(this,arguments)}function qt(){return(qt=g()(f.a.mark(function e(t,n){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/config",method:"get",headers:Jt(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Kt(e,t,n){return Wt.apply(this,arguments)}function Wt(){return(Wt=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/config",method:"post",headers:Jt(a),data:{configs:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Zt(e,t,n){return Qt.apply(this,arguments)}function Qt(){return(Qt=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/config",method:"post",headers:Jt(a),data:{configs:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var Jt=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},Xt=n("h74u");function en(e){var t=function(e,t){if("object"!==O()(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,t||"default");if("object"!==O()(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===O()(t)?t:String(t)}var tn={state:{activeTab:"instance",configDisabled:!0,db:{},description:[],loading:!0,searchData:{},settings:{},updatedSettings:{}},mutations:{CLEAR_UPDATED_SETTINGS:function(e){e.updatedSettings={}},REMOVE_SETTING_FROM_UPDATED:function(e,t){var n=t.group,a=t.key,r=t.subkeys;if(ce.a.get(e.updatedSettings,[n,a,r[0]])){var s=e.updatedSettings[n][a],o=(s[r[0]],I()(s,[r[0]].map(en)));e.updatedSettings=o}},SET_ACTIVE_TAB:function(e,t){e.activeTab=t},SET_DESCRIPTION:function(e,t){e.description=t},SET_LOADING:function(e,t){e.loading=t},SET_SEARCH:function(e,t){e.searchData=t},SET_SETTINGS:function(e,t){var n=t.reduce(function(e,t){var n=t.group,a=t.key,r=t.value,s=Object(Xt.f)(a,r)?{value:Object(Xt.c)(a,r)}:Object(Xt.d)(r,a);return e[n]=e[n]?D()({},e[n],R()({},a,s)):R()({},a,s),e},{}),a=t.reduce(function(e,t){var n=t.group,a=t.key,r=t.db;return r&&(e[n]=e[n]?D()({},e[n],R()({},a,r)):R()({},a,r)),e},{});e.settings=n,e.db=a},TOGGLE_TABS:function(e,t){e.configDisabled=t},UPDATE_SETTINGS:function(e,t){var n=t.group,a=t.key,r=t.input,s=t.value,o=t.type,i=!e.updatedSettings[n]||"Pleroma.Emails.Mailer"===a&&":adapter"===r?R()({},a,R()({},r,[o,s])):R()({},a,D()({},e.updatedSettings[n][a],R()({},r,[o,s])));e.updatedSettings[n]=D()({},e.updatedSettings[n],i)},UPDATE_STATE:function(e,t){var n=t.group,a=t.key,r=t.input,s=t.value,o="Pleroma.Emails.Mailer"===a&&":adapter"===r?R()({},a,R()({},r,s)):R()({},a,D()({},e.settings[n][a],R()({},r,s)));e.settings[n]=D()({},e.settings[n],o)}},actions:{FetchSettings:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,n("SET_LOADING",!0),e.prev=2,e.next=5,$t(a.authHost,a.token);case 5:return r=e.sent,e.next=8,Gt(a.authHost,a.token);case 8:s=e.sent,n("SET_DESCRIPTION",s.data),o=Object(Xt.a)(s.data),n("SET_SEARCH",o),n("SET_SETTINGS",r.data.configs),e.next=21;break;case 15:return e.prev=15,e.t0=e.catch(2),n("TOGGLE_TABS",!0),n("SET_ACTIVE_TAB","relays"),n("SET_LOADING",!1),e.abrupt("return");case 21:n("TOGGLE_TABS",!1),n("SET_LOADING",!1);case 23:case"end":return e.stop()}},e,null,[[2,15]])}));return function(t){return e.apply(this,arguments)}}(),RemoveSetting:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,e.next=3,Zt(n,r.authHost,r.token);case 3:return e.next=5,$t(r.authHost,r.token);case 5:s=e.sent,o=n[0],i=o.group,c=o.key,u=o.subkeys,a("SET_SETTINGS",s.data.configs),a("TOGGLE_REBOOT",s.data.need_reboot),a("REMOVE_SETTING_FROM_UPDATED",{group:i,key:c,subkeys:u||[]});case 10:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SetActiveTab:function(e,t){(0,e.commit)("SET_ACTIVE_TAB",t)},SubmitChanges:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.getters,a=t.commit,r=t.state,s=Object.keys(r.updatedSettings).reduce(function(e,t){return[].concat(we()(e),we()(Object(Xt.g)(t,r.updatedSettings[t],r.settings)))},[]),e.next=4,Kt(s,n.authHost,n.token);case 4:return e.next=6,$t(n.authHost,n.token);case 6:o=e.sent,a("SET_SETTINGS",o.data.configs),a("TOGGLE_REBOOT",o.data.need_reboot),a("CLEAR_UPDATED_SETTINGS");case 10:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),UpdateSettings:function(e,t){var n=e.commit,a=t.group,r=t.key,s=t.input,o=t.value,i=t.type;n("UPDATE_SETTINGS",r?{group:a,key:r,input:s,value:o,type:i}:{group:a,key:s,input:"_value",value:o,type:i})},UpdateState:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l,p;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.commit,r=t.getters,s=t.state,o=n.group,i=n.key,c=n.input,u=n.value,"Pleroma.Emails.Mailer"!==i||":adapter"!==c){e.next=8;break}return l=Object.keys(s.settings[o][i]).filter(function(e){return":adapter"!==e}),e.next=6,Zt([{group:o,key:i,delete:!0,subkeys:l}],r.authHost,r.token);case 6:e.next=12;break;case 8:if("Pleroma.Upload"!==i||":uploader"!==c){e.next=12;break}return p="Pleroma.Uploaders.Local"===u?"Pleroma.Uploaders.S3":"Pleroma.Uploaders.Local",e.next=12,Zt([{group:o,key:p,delete:!0}],r.authHost,r.token);case 12:a("UPDATE_STATE",i?{group:o,key:i,input:c,value:u}:{group:o,key:c,input:"value",value:u});case 13:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}};function nn(e,t,n,a,r){return an.apply(this,arguments)}function an(){return(an=g()(f.a.mark(function e(t,n,a,r,s){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(r),url:"/api/pleroma/admin/statuses/".concat(t),method:"put",headers:fn(s),data:{sensitive:n,visibility:a}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function rn(e,t,n){return sn.apply(this,arguments)}function sn(){return(sn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/statuses/".concat(t),method:"delete",headers:fn(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function on(e,t,n){return cn.apply(this,arguments)}function cn(){return(cn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/statuses/".concat(t),method:"get",headers:fn(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function un(e){return ln.apply(this,arguments)}function ln(){return(ln=g()(f.a.mark(function e(t){var n,a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.godmode,a=t.localOnly,r=t.authHost,s=t.token,o=t.pageSize,i=t.page,e.next=3,Object(w.a)({baseURL:Object(y.a)(r),url:"/api/pleroma/admin/statuses?godmode=".concat(n,"&local_only=").concat(a,"&page=").concat(i,"&page_size=").concat(o),method:"get",headers:fn(s)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function pn(e,t,n){return dn.apply(this,arguments)}function dn(){return(dn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:t?"/api/pleroma/admin/stats?instance=".concat(t):"/api/pleroma/admin/stats",method:"get",headers:fn(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function hn(e){return mn.apply(this,arguments)}function mn(){return(mn=g()(f.a.mark(function e(t){var n,a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.instance,a=t.authHost,r=t.token,s=t.pageSize,o=t.page,e.next=3,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/instances/".concat(n,"/statuses?page=").concat(o,"&page_size=").concat(s),method:"get",headers:fn(r)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}var fn=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},vn={state:{fetchedStatus:{},fetchedStatuses:[],loading:!1,statusAuthor:{},statusesByInstance:{selectedInstance:"",showLocal:!1,showPrivate:!1,page:1,pageSize:20,buttonLoading:!1,allLoaded:!1},statusVisibility:{}},mutations:{CHANGE_GODMODE_CHECKBOX_VALUE:function(e,t){e.statusesByInstance.showPrivate=t},CHANGE_LOCAL_CHECKBOX_VALUE:function(e,t){e.statusesByInstance.showLocal=t},CHANGE_PAGE:function(e,t){e.statusesByInstance.page=t},CHANGE_SELECTED_INSTANCE:function(e,t){e.statusesByInstance.selectedInstance=t},SET_STATUS:function(e,t){e.fetchedStatus=t},SET_STATUSES_BY_INSTANCE:function(e,t){e.fetchedStatuses=t},PUSH_STATUSES:function(e,t){e.fetchedStatuses=[].concat(we()(e.fetchedStatuses),we()(t))},SET_ALL_LOADED:function(e,t){e.statusesByInstance.allLoaded=t},SET_BUTTON_LOADING:function(e,t){e.statusesByInstance.buttonLoading=t},SET_LOADING:function(e,t){e.loading=t},SET_STATUS_VISIBILITY:function(e,t){e.statusVisibility=t},SET_STATUS_AUTHOR:function(e,t){e.statusAuthor=t}},actions:{ChangeStatusScope:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l,p;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=n.statusId,o=n.isSensitive,i=n.visibility,c=n.reportCurrentPage,u=n.userId,l=n.godmode,p=n.fetchStatusesByInstance,e.next=4,nn(s,o,i,r.authHost,r.token);case 4:0!==c?a("FetchReports",c):u.length>0?a("FetchUserStatuses",{userId:u,godmode:l}):p?a("FetchStatusesByInstance"):a("FetchStatusAfterUserModeration",s);case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ClearState:function(e){var t=e.commit;t("CHANGE_SELECTED_INSTANCE",""),t("SET_STATUSES_BY_INSTANCE",[]),t("CHANGE_LOCAL_CHECKBOX_VALUE",!1),t("CHANGE_GODMODE_CHECKBOX_VALUE",!1),t("SET_ALL_LOADED",!1),t("CHANGE_PAGE",1)},DeleteStatus:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=n.statusId,o=n.reportCurrentPage,i=n.userId,c=n.godmode,u=n.fetchStatusesByInstance,e.next=4,rn(s,r.authHost,r.token);case 4:0!==o?a("FetchReports",o):i.length>0?a("FetchUserStatuses",{userId:i,godmode:c}):u&&a("FetchStatusesByInstance");case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchStatus:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,o=t.state,a("SET_LOADING",!0),e.next=4,on(n,s.authHost,s.token);case 4:i=e.sent,a("SET_STATUS",i.data),a("SET_STATUS_AUTHOR",i.data.account),a("SET_LOADING",!1),r("FetchUserStatuses",{userId:o.fetchedStatus.account.id,godmode:!1});case 9:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchStatusAfterUserModeration:function(e,t){var n=e.commit,a=e.dispatch,r=e.getters;e.state;n("SET_LOADING",!0),on(t,r.authHost,r.token).then(function(e){return a("SetStatus",e.data)}),n("SET_LOADING",!1)},FetchStatusesCount:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,a("SET_LOADING",!0),e.next=4,pn(n,r.authHost,r.token);case 4:s=e.sent,o=s.data,a("SET_STATUS_VISIBILITY",o.status_visibility),a("SET_LOADING",!1);case 8:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchStatusesByInstance:function(){var e=g()(f.a.mark(function e(t){var n,a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.commit,a=t.dispatch,r=t.getters,s=t.state,o=t.rootState,n("SET_LOADING",!0),a("FetchStatusesCount",s.statusesByInstance.selectedInstance),""!==s.statusesByInstance.selectedInstance){e.next=7;break}n("SET_STATUSES_BY_INSTANCE",[]),e.next=19;break;case 7:if(s.statusesByInstance.selectedInstance!==o.user.authHost){e.next=13;break}return e.next=10,un({godmode:s.statusesByInstance.showPrivate,localOnly:s.statusesByInstance.showLocal,authHost:r.authHost,token:r.token,pageSize:s.statusesByInstance.pageSize,page:s.statusesByInstance.page});case 10:e.t0=e.sent,e.next=16;break;case 13:return e.next=15,hn({instance:s.statusesByInstance.selectedInstance,authHost:r.authHost,token:r.token,pageSize:s.statusesByInstance.pageSize,page:s.statusesByInstance.page});case 15:e.t0=e.sent;case 16:i=e.t0,n("SET_STATUSES_BY_INSTANCE",i.data),i.data.lengthThis user doesn`t have admin rights. Try another credentials or see the docs to find out how to make this user an admin'),t("SET_NAME",r.username),t("SET_ID",r.id),t("SET_AVATAR",r.avatar),t("SET_INTRODUCTION",""),e(n)}).catch(function(e){a(e)})})},LogOut:function(e){var t=e.commit;t("SET_TOKEN",""),t("SET_ROLES",[]),Object(b.d)(),Object(b.c)()},FedLogOut:function(e){var t=e.commit;return new Promise(function(e){t("SET_TOKEN",""),Object(b.d)(),Object(b.c)(),e()})},LoginByPleromaFE:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.commit,r=t.dispatch,s=n.token,a("SET_TOKEN",s),Object(b.f)(s),a("SET_AUTH_HOST",window.location.host),Object(b.e)(window.location.host),r("GetUserInfo");case 7:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}};function _n(e,t,n){return An.apply(this,arguments)}function An(){return(An=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/activate",method:"patch",headers:pa(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function On(e,t,n,a){return Ln.apply(this,arguments)}function Ln(){return(Ln=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/permission_group/".concat(n),method:"post",headers:pa(r),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function In(e,t,n,a,r){return Cn.apply(this,arguments)}function Cn(){return(Cn=g()(f.a.mark(function e(t,n,a,r,s){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(r),url:"/api/pleroma/admin/users",method:"post",headers:pa(s),data:{users:[{nickname:t,email:n,password:a}]}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Rn(e,t,n){return Pn.apply(this,arguments)}function Pn(){return(Pn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/deactivate",method:"patch",headers:pa(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Dn(e,t,n,a){return Un.apply(this,arguments)}function Un(){return(Un=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/permission_group/".concat(n),method:"delete",headers:pa(r),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function jn(e,t,n){return zn.apply(this,arguments)}function zn(){return(zn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users",method:"delete",headers:pa(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Vn(e,t,n){return Mn.apply(this,arguments)}function Mn(){return(Mn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/disable_mfa",method:"put",headers:pa(a),data:{nickname:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Hn(e,t,n){return Bn.apply(this,arguments)}function Bn(){return(Bn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/".concat(t),method:"get",headers:pa(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Nn(e,t,n){return Fn.apply(this,arguments)}function Fn(){return(Fn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/".concat(t,"/credentials"),method:"get",headers:pa(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Gn(e,t,n,a){return Yn.apply(this,arguments)}function Yn(){return(Yn=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/".concat(t,"/credentials"),method:"patch",headers:pa(r),data:n});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function $n(e,t,n){return qn.apply(this,arguments)}function qn(){return(qn=g()(f.a.mark(function e(t,n,a){var r,s=arguments;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=s.length>3&&void 0!==s[3]?s[3]:1,e.next=3,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users?page=".concat(r,"&filters=").concat(t),method:"get",headers:pa(a)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Kn(e,t,n){return Wn.apply(this,arguments)}function Wn(){return(Wn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/".concat(t,"/password_reset"),method:"get",headers:pa(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Zn(e,t,n){return Qn.apply(this,arguments)}function Qn(){return(Qn=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/force_password_reset",method:"patch",headers:pa(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Jn(e,t,n,a){return Xn.apply(this,arguments)}function Xn(){return(Xn=g()(f.a.mark(function e(t,n,a,r){var s,o=arguments;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s=o.length>4&&void 0!==o[4]?o[4]:1,e.next=3,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users?query=".concat(t,"&page=").concat(s,"&filters=").concat(n),method:"get",headers:pa(r)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function ea(e,t,n,a){return ta.apply(this,arguments)}function ta(){return(ta=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/tag",method:"put",headers:pa(r),data:{nicknames:t,tags:n}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function na(e,t,n,a){return aa.apply(this,arguments)}function aa(){return(aa=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/tag",method:"delete",headers:pa(r),data:{nicknames:t,tags:n}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function ra(){return(ra=g()(f.a.mark(function e(t,n,a,r){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/".concat(t,"/statuses?godmode=").concat(a),method:"get",headers:pa(r)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function sa(e,t,n){return oa.apply(this,arguments)}function oa(){return(oa=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/approve",method:"patch",headers:pa(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function ia(e,t,n){return ca.apply(this,arguments)}function ca(){return(ca=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/confirm_email",method:"patch",headers:pa(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function ua(e,t,n){return la.apply(this,arguments)}function la(){return(la=g()(f.a.mark(function e(t,n,a){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(w.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/resend_confirmation_email",method:"patch",headers:pa(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var pa=function(e){return e?{Authorization:"Bearer ".concat(Object(b.b)())}:{}},da={state:{statuses:[],statusesLoading:!0,user:{},userCredentials:{},userProfileLoading:!0},mutations:{SET_STATUSES:function(e,t){e.statuses=t},SET_STATUSES_LOADING:function(e,t){e.statusesLoading=t},SET_USER:function(e,t){e.user=t},SET_USER_PROFILE_LOADING:function(e,t){e.userProfileLoading=t},SET_USER_CREDENTIALS:function(e,t){e.userCredentials=t}},actions:{FetchUserProfile:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,o=n.userId,i=n.godmode,a("SET_USER_PROFILE_LOADING",!0),e.next=5,Hn(o,s.authHost,s.token);case 5:c=e.sent,a("SET_USER",c.data),a("SET_USER_PROFILE_LOADING",!1),r("FetchUserStatuses",{userId:o,godmode:i});case 9:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchUserStatuses:function(e,t){var n=e.commit,a=e.dispatch,r=e.getters,s=t.userId,o=t.godmode;n("SET_STATUSES_LOADING",!0),function(e,t,n,a){return ra.apply(this,arguments)}(s,r.authHost,o,r.token).then(function(e){return a("SetStatuses",e.data)}),n("SET_STATUSES_LOADING",!1)},FetchUserCredentials:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,s=n.nickname,e.next=4,Nn(s,r.authHost,r.token);case 4:o=e.sent,a("SET_USER_CREDENTIALS",o.data);case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SetStatuses:function(e,t){(0,e.commit)("SET_STATUSES",t)},UpdateUserCredentials:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=n.nickname,o=n.credentials,e.next=4,Gn(s,o,r.authHost,r.token);case 4:a("FetchUserCredentials",{nickname:s});case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}},ha={state:{fetchedUsers:[],loading:!0,searchQuery:"",totalUsersCount:0,currentPage:1,pageSize:50,filters:{local:!1,external:!1,active:!1,need_approval:!1,deactivated:!1},passwordResetToken:{token:"",link:""}},mutations:{SET_USERS:function(e,t){e.fetchedUsers=t},SET_LOADING:function(e,t){e.loading=t},SWAP_USERS:function(e,t){var n=t.reduce(function(e,t){return e.filter(function(e){return e.id!==t.id})},e.fetchedUsers);if(0!==e.fetchedUsers.length){var a=[].concat(we()(n),we()(t));e.fetchedUsers=a.filter(function(e){return e.nickname&&e.id}).sort(function(e,t){return e.nickname.localeCompare(t.nickname)}).concat(a.filter(function(e){return!e.nickname||!e.id}))}},SET_COUNT:function(e,t){e.totalUsersCount=t},SET_PAGE:function(e,t){e.currentPage=t},SET_PAGE_SIZE:function(e,t){e.pageSize=t},SET_PASSWORD_RESET_TOKEN:function(e,t){var n=t.token,a=t.link;e.passwordResetToken.token=n,e.passwordResetToken.link=a},SET_SEARCH_QUERY:function(e,t){e.searchQuery=t},SET_USERS_FILTERS:function(e,t){e.filters=t}},actions:{ActivateUsers:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n._userId,i=s.map(function(e){return D()({},e,{deactivated:!1})}),c=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:i,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,_n(c,r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:o});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ApplyChanges:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.state,o=n.updatedUsers,i=n.callApiFn,c=n.userId,u=n.statusId,a("SWAP_USERS",o),e.prev=3,e.next=6,i();case 6:e.next=11;break;case 8:return e.prev=8,e.t0=e.catch(3),e.abrupt("return");case 11:return e.prev=11,r("SearchUsers",{query:s.searchQuery,page:s.currentPage}),e.finish(11);case 14:u?r("FetchStatusAfterUserModeration",u):c&&r("FetchUserProfile",{userId:c,godmode:!1}),r("SuccessMessage");case 16:case"end":return e.stop()}},e,null,[[3,8,11,14]])}));return function(t,n){return e.apply(this,arguments)}}(),AddRight:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n.right,i=n._userId,c=n._statusId,u=s.map(function(e){return e.local?D()({},e,{roles:D()({},e.roles,R()({},o,!0))}):e}),l=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:u,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,On(l,o,r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:i,statusId:c});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),AddTag:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n.tag,i=n._userId,c=n._statusId,u=s.map(function(e){return D()({},e,{tags:[].concat(we()(e.tags),[o])})}),l=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:u,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,ea(l,[o],r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:i,statusId:c});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ApproveUsersAccount:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n._userId,i=n._statusId,c=s.map(function(e){return D()({},e,{approval_pending:!1})}),u=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:c,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,sa(u,r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:o,statusId:i});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ClearUsersState:function(e){var t=e.commit;t("SET_SEARCH_QUERY",""),t("SET_USERS_FILTERS",{local:!1,external:!1,active:!1,need_approval:!1,deactivated:!1})},ClearFilters:function(){var e=g()(f.a.mark(function e(t){var n,a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=t.commit,a=t.dispatch,r=t.state,n("CLEAR_USERS_FILTERS"),a("SearchUsers",{query:r.searchQuery,page:1});case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),ConfirmUsersEmail:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n._userId,i=n._statusId,c=s.map(function(e){return D()({},e,{confirmation_pending:!1})}),u=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:c,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,ia(u,r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:o,statusId:i});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),CreateNewAccount:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=t.state,o=n.nickname,i=n.email,c=n.password,e.prev=2,e.next=5,In(o,i,c,r.authHost,r.token);case 5:e.next=10;break;case 7:return e.prev=7,e.t0=e.catch(2),e.abrupt("return");case 10:return e.prev=10,a("SearchUsers",{query:s.searchQuery,page:s.currentPage}),e.finish(10);case 13:a("SuccessMessage");case 14:case"end":return e.stop()}},e,null,[[2,7,10,13]])}));return function(t,n){return e.apply(this,arguments)}}(),DeactivateUsers:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n._userId,i=s.map(function(e){return D()({},e,{deactivated:!0})}),c=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:i,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Rn(c,r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:o});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),DisableMfa:function(){var e=g()(f.a.mark(function e(t,n){var a,r;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,e.prev=1,e.next=4,Vn(n,r.authHost,r.token);case 4:e.next=9;break;case 6:return e.prev=6,e.t0=e.catch(1),e.abrupt("return");case 9:a("SuccessMessage");case 10:case"end":return e.stop()}},e,null,[[1,6]])}));return function(t,n){return e.apply(this,arguments)}}(),DeleteRight:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n.right,i=n._userId,c=n._statusId,u=s.map(function(e){return e.local?D()({},e,{roles:D()({},e.roles,R()({},o,!1))}):e}),l=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:u,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Dn(l,o,r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:i,statusId:c});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),DeleteUsers:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,t.state,o=n.users,i=n._userId,c=o.map(function(e){return e.nickname}),e.prev=3,e.next=6,jn(c,s.authHost,s.token);case 6:e.next=11;break;case 8:return e.prev=8,e.t0=e.catch(3),e.abrupt("return");case 11:u=o.map(function(e){return D()({},e,{deactivated:!0})}),a("SWAP_USERS",u),i&&r("FetchUserProfile",{userId:i,godmode:!1}),r("SuccessMessage");case 15:case"end":return e.stop()}},e,null,[[3,8]])}));return function(t,n){return e.apply(this,arguments)}}(),FetchUsers:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,s=t.getters,o=t.state,i=n.page,a("SET_LOADING",!0),c=Object.keys(o.filters).filter(function(e){return o.filters[e]}).join(),e.next=6,$n(c,s.authHost,s.token,i);case 6:return u=e.sent,e.next=9,r("GetNodeInfo");case 9:ma(a,i,u.data);case 10:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),GetPasswordResetToken:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,e.next=3,Kn(n,r.authHost,r.token);case 3:s=e.sent,o=s.data,a("SET_PASSWORD_RESET_TOKEN",o);case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),RemovePasswordToken:function(e){(0,e.commit)("SET_PASSWORD_RESET_TOKEN",{link:"",token:""})},RemoveTag:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.users,o=n.tag,i=n._userId,c=n._statusId,u=s.map(function(e){return D()({},e,{tags:e.tags.filter(function(e){return e!==o})})}),l=s.map(function(e){return e.nickname}),a("ApplyChanges",{updatedUsers:u,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,na(l,[o],r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:i,statusId:c});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),RequirePasswordReset:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=n.map(function(e){return e.nickname}),e.prev=2,e.next=5,Zn(s,r.authHost,r.token);case 5:e.next=10;break;case 7:return e.prev=7,e.t0=e.catch(2),e.abrupt("return");case 10:a("SuccessMessage");case 11:case"end":return e.stop()}},e,null,[[2,7]])}));return function(t,n){return e.apply(this,arguments)}}(),ResendConfirmationEmail:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,s=n.map(function(e){return e.nickname}),e.prev=2,e.next=5,ua(s,r.authHost,r.token);case 5:e.next=10;break;case 7:return e.prev=7,e.t0=e.catch(2),e.abrupt("return");case 10:a("SuccessMessage");case 11:case"end":return e.stop()}},e,null,[[2,7]])}));return function(t,n){return e.apply(this,arguments)}}(),SearchUsers:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.commit,r=t.dispatch,s=t.state,o=t.getters,i=n.query,c=n.page,0!==i.length){e.next=7;break}a("SET_SEARCH_QUERY",i),r("FetchUsers",{page:c}),e.next=14;break;case 7:return a("SET_LOADING",!0),a("SET_SEARCH_QUERY",i),u=Object.keys(s.filters).filter(function(e){return s.filters[e]}).join(),e.next=12,Jn(i,u,o.authHost,o.token,c);case 12:l=e.sent,ma(a,c,l.data);case 14:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SuccessMessage:function(){i.Message.success({message:j.a.t("users.completed"),duration:5e3})},ToggleUsersFilter:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.commit,r=t.dispatch,s=t.state,o={local:!1,external:!1,active:!1,need_approval:!1,deactivated:!1},i=D()({},o,n),a("SET_USERS_FILTERS",i),r("SearchUsers",{query:s.searchQuery,page:1});case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),UpdateActorType:function(){var e=g()(f.a.mark(function e(t,n){var a,r,s,o,i,c,u,l;return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.dispatch,r=t.getters,s=n.user,o=n.type,i=n._userId,c=n._statusId,u=[D()({},s,{actor_type:o})],l={actor_type:o},a("ApplyChanges",{updatedUsers:u,callApiFn:function(){var e=g()(f.a.mark(function e(){return f.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Gn(s.nickname,l,r.authHost,r.token);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),userId:i,statusId:c});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}},ma=function(e,t,n){var a=n.users,r=n.count,s=n.page_size;e("SET_USERS",a),e("SET_COUNT",r),e("SET_PAGE",t),e("SET_PAGE_SIZE",s),e("SET_LOADING",!1)},fa=ha;r.default.use(h.a);var va=new h.a.Store({modules:{app:_,errorLog:M,emojiPacks:V,invites:Z,mediaProxyCache:oe,moderationLog:ve,peers:xe,permission:At,relays:Ut,reports:Ft,settings:tn,status:vn,tagsView:bn,user:kn,userProfile:da,users:fa},getters:H}),ga=n("zT9a");r.default.component("svg-icon",ga.a);!function(e){e.keys().map(e)}(n("Uf/o")),r.default.config.errorHandler=function(e,t,n,a){r.default.nextTick(function(){va.dispatch("addErrorLog",{err:e,vm:t,info:n,url:window.location.href}),console.error(e,n)})};var wa=n("Mj6V"),ba=n.n(wa);n("pdi6");ba.a.configure({showSpinner:!1});var ya=["/login","/auth-redirect","/login-pleroma"];function Ta(e,t){return 1===e?e+t:e+t+"s"}function xa(e){var t=Date.now()/1e3-Number(e);return t<3600?Ta(~~(t/60)," minute"):t<86400?Ta(~~(t/3600)," hour"):Ta(~~(t/86400)," day")}function Sa(e,t){for(var n=[{value:1e18,symbol:"E"},{value:1e15,symbol:"P"},{value:1e12,symbol:"T"},{value:1e9,symbol:"G"},{value:1e6,symbol:"M"},{value:1e3,symbol:"k"}],a=0;a=n[a].value)return(e/n[a].value+.1).toFixed(t).replace(/\.0+$|(\.[0-9]*[1-9])0+$/,"$1")+n[a].symbol;return e.toString()}function Ea(e){return(+e||0).toString().replace(/^-?\d+/g,function(e){return e.replace(/(?=(?!\b)(\d{3})+$)/g,",")})}kt.beforeEach(function(e,t,n){ba.a.start(),Object(b.b)()?"/login"===e.path?(n({path:"/"}),ba.a.done()):0===va.getters.roles.length?va.dispatch("GetUserInfo").then(function(t){var a=t.data.pleroma.is_admin?["admin"]:[];va.dispatch("GenerateRoutes",{roles:a}).then(function(){kt.addRoutes(va.getters.addRouters),n(D()({},e,{replace:!0}))})}).catch(function(e){va.dispatch("FedLogOut").then(function(){Object(i.Message)({dangerouslyUseHTMLString:!0,message:e,type:"error",duration:1e4}),n({path:"/"})})}):function(e,t){return e.indexOf("admin")>=0||!t||e.some(function(e){return t.indexOf(e)>=0})}(va.getters.roles,e.meta.roles)?n():n({path:"/401",replace:!0,query:{noGoBack:!0}}):-1!==ya.indexOf(e.path)?n():(n("/login?redirect=".concat(e.path)),ba.a.done())}),kt.afterEach(function(){ba.a.done()}),r.default.use(c.a,{size:o.a.get("size")||"medium",i18n:function(e,t){return j.a.t(e,t)}}),Object.keys(a).forEach(function(e){r.default.filter(e,a[e])}),r.default.config.productionTip=!1,new r.default({el:"#app",router:kt,store:va,i18n:j.a,render:function(e){return e(d)}})},X4fA:function(e,t,n){"use strict";n.d(t,"b",function(){return i}),n.d(t,"f",function(){return c}),n.d(t,"d",function(){return u}),n.d(t,"a",function(){return l}),n.d(t,"e",function(){return p}),n.d(t,"c",function(){return d});var a=n("p46w"),r=n.n(a),s="Admin-Token",o="Auth-Host";function i(){return r.a.get(s)}function c(e){return r.a.set(s,e)}function u(){return r.a.remove(s)}function l(){return r.a.get(o)}function p(e){return r.a.set(o,e)}function d(){return r.a.remove(o)}},Xm3t:function(e,t,n){},Yymj:function(e,t,n){"use strict";var a=n("jf83");n.n(a).a},"Z+gY":function(e,t,n){"use strict";var a=n("Kcm3");n.n(a).a},ZZmv:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-excel",use:"icon-excel-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},ZoO1:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-guide",use:"icon-guide-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},cIpu:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-star",use:"icon-star-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},fhHp:function(e,t,n){"use strict";var a=n("lt0h");n.n(a).a},gNoN:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-wechat",use:"icon-wechat-usage",viewBox:"0 0 128 110",content:''});o.a.add(i);t.default=i},h74u:function(e,t,n){"use strict";n.d(t,"b",function(){return g}),n.d(t,"c",function(){return b}),n.d(t,"d",function(){return y}),n.d(t,"e",function(){return E}),n.d(t,"f",function(){return _}),n.d(t,"g",function(){return A}),n.d(t,"a",function(){return L});var a=n("RIqP"),r=n.n(a),s=n("cDf5"),o=n.n(s),i=n("lSNA"),c=n.n(i),u=n("MVZn"),l=n.n(u),p=n("J4zp"),d=n.n(p),h=n("SA+Z"),m=n.n(h),f=n("LvDl"),v=n.n(f),g=function(e){return"true"===e||"false"!==e&&e},w=function(e,t,n){if("state"===e)return v.a.get(t,n);var a=m()(n),r=a[0],s=a.slice(1),o=t[r];if(0!==s.length&&o){return function e(t,n){var a=m()(n),r=a[0],s=a.slice(1);return 0===n.length?t:e(t[1][r],s)}(o,s)}return o||!1},b=function(e,t){if(":backends"===e){var n=t.findIndex(function(e){return"object"===o()(e)&&e.tuple.includes(":ex_syslogger")});return t.map(function(e,t){return t===n?":ex_syslogger":e})}return":args"===e&&"string"==typeof t?[t]:t},y=function e(t,n){return t.reduce(function(t,a){return":rate_limit"===n?t[a.tuple[0]]=Array.isArray(a.tuple[1])?a.tuple[1].map(function(e){return e.tuple}):a.tuple[1].tuple:":mascots"===a.tuple[0]?t[a.tuple[0]]=a.tuple[1].reduce(function(e,t){return[].concat(r()(e),[c()({},t.tuple[0],l()({},t.tuple[1],{id:"f".concat((~~(1e8*Math.random())).toString(16))}))])},[]):!Array.isArray(a.tuple[1])||":groups"!==a.tuple[0]&&":replace"!==a.tuple[0]&&":retries"!==a.tuple[0]&&":headers"!==a.tuple[0]&&":crontab"!==a.tuple[0]?":icons"===a.tuple[0]?t[a.tuple[0]]=a.tuple[1].map(function(e){return Object.keys(e).map(function(t){return{key:t,value:e[t],id:"f".concat((~~(1e8*Math.random())).toString(16))}})},[]):":prune"===a.tuple[0]?t[a.tuple[0]]=":disabled"===a.tuple[1]?[a.tuple[1]]:a.tuple[1].tuple:":proxy_url"===a.tuple[0]||":sender"===a.tuple[0]?t[a.tuple[0]]=x(a.tuple[0],a.tuple[1]):":args"===a.tuple[0]?t[a.tuple[0]]=b(a.tuple[0],a.tuple[1]):Array.isArray(a.tuple[1])&&"object"===o()(a.tuple[1][0])&&!Array.isArray(a.tuple[1][0])&&a.tuple[1][0].tuple?t[a.tuple[0]]=e(a.tuple[1],a.tuple[0]):Array.isArray(a.tuple[1])?t[a.tuple[0]]=a.tuple[1]:":ip"===a.tuple[0]?t[a.tuple[0]]=a.tuple[1].tuple.join("."):a.tuple[1]&&"object"===o()(a.tuple[1])?":params"===a.tuple[0]||":match_actor"===a.tuple[0]?t[a.tuple[0]]=Object.keys(a.tuple[1]).reduce(function(e,t){return[].concat(r()(e),[c()({},t,{value:a.tuple[1][t],id:"f".concat((~~(1e8*Math.random())).toString(16))})])},[]):t[a.tuple[0]]=T(a.tuple[1]):t[a.tuple[0]]=a.tuple[1]:":crontab"===a.tuple[0]?t[a.tuple[0]]=a.tuple[1].reduce(function(e,t){return[].concat(r()(e),[c()({},t.tuple[1],{value:t.tuple[0],id:"f".concat((~~(1e8*Math.random())).toString(16))})])},[]):t[a.tuple[0]]=a.tuple[1].reduce(function(e,t){return[].concat(r()(e),[c()({},t.tuple[0],{value:t.tuple[1],id:"f".concat((~~(1e8*Math.random())).toString(16))})])},[]),t},{})},T=function(e){return Object.keys(e).reduce(function(t,n){return t[n]=e[n],t},{})},x=function(e,t){if(":proxy_url"===e){if(t&&!Array.isArray(t)&&"object"===o()(t)&&3===t.tuple.length&&":socks5"===t.tuple[0]){var n=d()(t.tuple,3);return{socks5:!0,host:n[1],port:n[2]}}if("string"==typeof t){var a=t.split(":"),r=d()(a,2);return{socks5:!1,host:r[0],port:r[1]}}return{socks5:!1,host:null,port:null}}if(":sender"===e){if("string"==typeof t)return{email:t};if(t&&"object"===o()(t)&&2===t.tuple.length){var s=d()(t.tuple,2);return{nickname:s[0],email:s[1]}}}},S=function(e,t){return"atom"===e&&t.length>0||Array.isArray(e)&&e.includes("boolean")&&e.includes("atom")&&"string"==typeof t},E=function e(t,n,a,s,o,i,u){var p=m()(o),d=p[0],h=d.key,f=d.type,v=p.slice(1),g=[a,s].concat(r()(o.reverse().map(function(e){return e.key}).slice(0,-1))),b=k("state",i,g)?l()({},w("state",i[a][s],o.map(function(e){return e.key}).slice(0,-1)),c()({},h,t)):c()({},h,t),y=k("updatedSettings",u,g)?l()({},w("updatedSettings",u[a][s],o.map(function(e){return e.key}).slice(0,-1))[1],c()({},h,[f,n])):c()({},h,[f,n]);return":mime"===a&&":types"===o[0].key&&(b=i[a][o[0].key]?l()({},i[a][o[0].key].value,b):b,y=i[a][o[0].key]?l()({},Object.keys(i[a][o[0].key].value).reduce(function(e,t){return l()({},e,c()({},t,[f,i[a][o[0].key].value[t]]))},{}),y):y),1===v.length?{valueForState:b,valueForUpdatedSettings:y,setting:v[0]}:e(b,y,a,s,v,i,u)},k=function(e,t,n){if("state"===e)return v.a.get(t,n);var a=m()(n),r=a[0],s=a[1],o=a[2],i=a.slice(3),c=v.a.get(t,[r,s,o]);if(0!==i.length&&c){return function e(t,n){if(0===n.length)return!0;var a=m()(n),r=a[0],s=a.slice(1);return!!t[1][r]&&e(t[1][r],s)}(c,i)}return c||!1},_=function(e,t){var n=Array.isArray(t)&&t.length>0&&t.every(function(e){return"object"!==o()(e)});return":meta"===e||":types"===e||":backends"===e||":compiled_template_engines"===e||":compiled_format_encoders"===e||"string"==typeof t||"number"==typeof t||"boolean"==typeof t||null===t||n},A=function(e,t,n){return Object.keys(t).map(function(a){return t[a]._value?{group:e,key:a,value:function(e,t){var n=d()(t,2),a=n[0],r=n[1];if(S(a,r))return":".concat(r);if(":backends"===e){var s=r.findIndex(function(e){return":ex_syslogger"===e}),o=r.slice();return-1!==s&&(o[s]={tuple:["ExSyslogger",":ex_syslogger"]}),o}return":types"===e?Object.keys(r).reduce(function(e,t){return l()({},e,c()({},t,r[t][1]))},{}):r}(a,t[a]._value)}:{group:e,key:a,value:O(t[a],n[e][a])}})},O=function e(t,n){return Object.keys(t).map(function(a){var r=d()(t[a],2),s=r[0],o=r[1];if("keyword"===s||Array.isArray(s)&&(s.includes("keyword")||s.includes("tuple")&&s.includes("list")))return{tuple:[a,e(o,n)]};if(S(s,o))return{tuple:[a,":".concat(o)]};if(s.includes("tuple")&&(s.includes("string")||s.includes("atom")))return"string"==typeof o?{tuple:[a,o]}:{tuple:[a,{tuple:o}]};if("reversed_tuple"===s)return{tuple:[o,a]};if("map"===s){var i=Object.keys(o).reduce(function(e,t){return e[t]=o[t][1],e},{});return{tuple:[a,l()({},n[a],i)]}}return s.includes("map")?{tuple:[a,Object.keys(o).reduce(function(e,t){return e[t]=o[t][1],e},{})]}:":ip"===a?{tuple:[a,{tuple:o.split(".").map(function(e){return parseInt(e,10)})}]}:{tuple:[a,o]}})},L=function(e){return e.reduce(function(e,t){var n=v.a.compact([t.key,t.label,t.description]).map(function(e){return e.toLowerCase()}),a={label:t.label,key:t.key||t.group,groupKey:t.key||t.group,groupLabel:t.label,search:n};if(t.children){var s=t.key||":pleroma"!==t.group?[].concat(r()(e),[a]):e;return[].concat(r()(s),r()(function e(t,n,a){return t.reduce(function(t,s){var o=v.a.compact([s.key,s.label,s.description]).map(function(e){return e.toLowerCase()}),i={label:s.label,key:s.key||s.group,groupKey:a,groupLabel:n,search:o};if(s.children){var c=[].concat(r()(t),[i]);return[].concat(r()(c),r()(e(s.children,n,a)))}return[].concat(r()(t),[i])},[])}(t.children,t.label,t.key||t.group)))}return t.key||":pleroma"!==t.group?[].concat(r()(e),[a]):e},[])}},hkRB:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-size",use:"icon-size-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},iqZD:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-zip",use:"icon-zip-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},j7e1:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-tab",use:"icon-tab-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},jf83:function(e,t,n){},jo2x:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-search",use:"icon-search-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},k80C:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-tree",use:"icon-tree-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},kPu2:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-documentation",use:"icon-documentation-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},lt0h:function(e,t,n){},"m7++":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-drag",use:"icon-drag-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},mDMp:function(e,t,n){"use strict";var a=n("Tfa4");n.n(a).a},mSHS:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-fullscreen",use:"icon-fullscreen-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},mSNy:function(e,t,n){"use strict";var a=n("MVZn"),r=n.n(a),s=n("Kw5r"),o=n("qSUR"),i=n("p46w"),c=n.n(i),u=n("stYL"),l=n.n(u),p=n("8NkQ"),d=n.n(p),h=n("PtZe"),m=n.n(h);s.default.use(o.a);var f={en:r()({},{route:{dashboard:"Dashboard",introduction:"Introduction",documentation:"Documentation",guide:"Guide",permission:"Permission",pagePermission:"Page Permission",directivePermission:"Directive Permission",icons:"Icons",components:"Components",componentIndex:"Introduction",markdown:"Markdown",jsonEditor:"JSON Editor",dndList:"Dnd List",splitPane:"SplitPane",avatarUpload:"Avatar Upload",dropzone:"Dropzone",sticky:"Sticky",countTo:"CountTo",componentMixin:"Mixin",backToTop:"BackToTop",dragDialog:"Drag Dialog",dragSelect:"Drag Select",dragKanban:"Drag Kanban",charts:"Charts",keyboardChart:"Keyboard Chart",lineChart:"Line Chart",mixChart:"Mix Chart",example:"Example",nested:"Nested Routes",menu1:"Menu 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menu 2",Table:"Table",dynamicTable:"Dynamic Table",dragTable:"Drag Table",inlineEditTable:"Inline Edit",complexTable:"Complex Table",treeTable:"Tree Table",customTreeTable:"Custom TreeTable",tab:"Tab",form:"Form",createArticle:"Create Article",editArticle:"Edit Article",articleList:"Article List",errorPages:"Error Pages",page401:"401",page404:"404",errorLog:"Error Log",excel:"Excel",exportExcel:"Export Excel",selectExcel:"Export Selected",uploadExcel:"Upload Excel",zip:"Zip",pdf:"PDF",exportZip:"Export Zip",theme:"Theme",clipboardDemo:"Clipboard",i18n:"I18n",externalLink:"External Link",users:"Users",reports:"Reports",invites:"Invites",statuses:"Statuses",settings:"Settings",moderationLog:"Moderation Log",mediaProxyCache:"MediaProxy Cache","emoji-packs":"Emoji packs"},navbar:{logOut:"Log Out",dashboard:"Dashboard",github:"Github",theme:"Theme",size:"Global Size"},login:{title:"Login Form",logIn:"Log in",logInViaPleromaFE:"Log in via PleromaFE",username:"username@host",password:"password",omitHostname:"omit hostname if Pleroma is located on this domain",errorMessage:"Username must contain username and host, e.g. john@pleroma.social",any:"any",thirdparty:"Or connect with",pleromaFELoginFailed:"Failed to login via PleromaFE, please login with username/password",pleromaFELoginSucceed:"Logged in via PleromaFE"},mediaProxyCache:{mediaProxyCache:"MediaProxy Cache",ban:"Ban",url:"URL",evict:"Evict",evictedMessage:"This URL was evicted",actions:"Actions",remove:"Remove from Cachex",evictObjectsHeader:"Evict object from the MediaProxy cache",listBannedUrlsHeader:"List of all banned MediaProxy URLs",multipleInput:"You can enter a single URL or several comma separated links",removeSelected:"Remove Selected"},documentation:{documentation:"Documentation",github:"Github Repository"},permission:{roles:"Your roles",switchRoles:"Switch roles",tips:"In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if."},guide:{description:"The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ",button:"Show Guide"},components:{documentation:"Documentation",dropzoneTips:"Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version."},table:{dynamicTips1:"Fixed header, sorted by header order",dynamicTips2:"Not fixed header, sorted by click order",dragTips1:"The default order",dragTips2:"The after dragging order",title:"Title",importance:"Imp",type:"Type",remark:"Remark",search:"Search",add:"Add",export:"Export",reviewer:"reviewer",id:"ID",date:"Date",author:"Author",readings:"Readings",status:"Status",actions:"Actions",edit:"Edit",publish:"Publish",draft:"Draft",delete:"Delete",cancel:"Cancel",confirm:"Confirm",unfollow:"Unfollow"},errorLog:{tips:"Please click the bug icon in the upper right corner",description:"Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.",documentation:"Document introduction"},excel:{export:"Export",selectedExport:"Export Selected Items",placeholder:"Please enter the file name(default excel-list)"},zip:{export:"Export",placeholder:"Please enter the file name(default file)"},pdf:{tips:"Here we use window.print() to implement the feature of downloading pdf."},theme:{change:"Change Theme",documentation:"Theme documentation",tips:"Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details."},tagsView:{refresh:"Refresh",close:"Close",closeOthers:"Close Others",closeAll:"Close All"},users:{users:"Users",localUsersOnly:"Local users only",search:"Search",id:"ID",name:"Name",status:"Status",local:"Local",external:"External",deactivated:"Deactivated",active:"Active",unapproved:"Pending",unconfirmed:"Unconfirmed",actions:"Actions",activate:"Activate",deactivate:"Deactivate",admin:"Admin",moderator:"Moderator",moderation:"Moderation",revokeAdmin:"Revoke Admin",grantAdmin:"Grant Admin",revokeModerator:"Revoke Moderator",grantModerator:"Grant Moderator",activateAccount:"Activate Account",activateAccounts:"Activate Accounts",deactivateAccount:"Deactivate Account",deactivateAccounts:"Deactivate Accounts",deleteAccount:"Delete Account",deleteAccounts:"Delete Accounts",forceNsfw:"Force posts to be NSFW",stripMedia:"Force posts to not have media",forceUnlisted:"Force posts to be unlisted",sandbox:"Force posts to be followers-only",disableRemoteSubscription:"Disallow following user from remote instances",disableRemoteSubscriptionForMultiple:"Disallow following users from remote instances",disableAnySubscription:"Disallow following user at all",disableAnySubscriptionForMultiple:"Disallow following users at all",requirePasswordReset:"Require password reset on next login",disableMfa:"Disable multi-factor authentication",selectUsers:"Select users to apply actions to multiple users",moderateUser:"Moderate user",moderateUsers:"Moderate multiple users",createAccount:"Create new account",apply:"Apply",remove:"Remove",grantRightConfirmation:"Are you sure you want to grant {right} rights to all selected users?",revokeRightConfirmation:"Are you sure you want to revoke {right} rights from all selected users?",activateMultipleUsersConfirmation:"Are you sure you want to activate accounts of all selected users?",deactivateMultipleUsersConfirmation:"Are you sure you want to deactivate accounts of all selected users?",deleteUserConfirmation:"Are you sure you want to delete this account? This action cannot be undone.",rejectAccountConfirmation:"Are you sure you want to reject this account? This account will be deleted and it cannot be undone.",deleteMultipleUsersConfirmation:"Are you sure you want to delete accounts of all selected users? This action cannot be undone.",addTagForMultipleUsersConfirmation:"Are you sure you want to apply tag to all selected users?",removeTagFromMultipleUsersConfirmation:"Are you sure you want to remove tag from all selected users?",requirePasswordResetConfirmation:"Are you sure you want to require password reset for all selected users?",approveAccountsConfirmation:"Are you sure you want to approve accounts for all selected users?",rejectAccountsConfirmation:"Are you sure you want to reject accounts for all selected users? These accounts will be deleted and it cannot be undone.",confirmAccountsConfirmation:"Are you sure you want to confirm emails for all selected users?",resendEmailConfirmation:"Are you sure you want to resend confirmation email for all selected users?",mailerMustBeEnabled:"To require user's password reset you must enable mailer.",ok:"Okay",completed:"Completed",cancel:"Cancel",canceled:"Canceled",username:"Username",email:"E-mail",password:"Password",create:"Create",submitFormError:"There are invalid values in the form. Please fix them before continuing.",emptyEmailError:"Please input the e-mail",invalidEmailError:"Please input valid e-mail",emptyPasswordError:"Please input the password",emptyNicknameError:"Please input the username",invalidNicknameError:'Username can include "a-z", "A-Z" and "0-9" characters',getPasswordResetToken:"Get password reset token",passwordResetTokenCreated:"Password reset token was created",accountCreated:"New account was created!",approveAccount:"Approve account",approveAccounts:"Approve accounts",unapprovedAccount:"User account is pending approval",unconfirmedEmail:"User didn't confirm the email",confirmAccount:"Confirm account",confirmAccounts:"Confirm accounts",rejectAccount:"Reject account",rejectAccounts:"Reject accounts",resendConfirmation:"Resend confirmation email",invalidAccount:"This account has invalid nickname and can't be modified",invalidNickname:"invalid nickname",passwordResetTokenGenerated:"Password reset token was generated:",linkToResetPassword:"You can also use this link to reset password:",registrationReason:"Registration Reason",service:"Service",person:"Person"},statuses:{statuses:"Statuses",instanceFilter:"Instance filter",loadMore:"Load more",noInstances:"No other instances found",onlyLocalStatuses:"Show only local statuses",showPrivateStatuses:"Show private statuses",direct:"Direct",private:"Private",public:"Public",unlisted:"Unlisted",openStatusInInstance:"Open status in instance"},userProfile:{tags:"Tags",moderator:"Moderator",admin:"Admin",local:"Local",external:"External",accountType:"Account Type",actorType:"Actor Type",nickname:"Nickname",recentStatuses:"Recent Statuses",roles:"Roles",active:"Active",status:"Status",reason:"Registration Reason",deactivated:"Deactivated",pending:"Pending",noStatuses:"No statuses to show",openAccountInInstance:"Open account in instance",securitySettings:{email:"Email",password:"Password",securitySettings:"Security settings",passwordChangeWarning1:"Setting a new password will cause the user to be signed out from any client they have used before.",passwordChangeWarning2:"When the user signs in with this password, they will be asked to set a new one.",passwordLengthNotice:"Make sure it's at least {minLength} characters long.",inputNewEmail:"Input new email",inputNewPassword:"Input new password",passwordUpdated:"The password has been updated",emailUpdated:"The email has been updated",success:"Success",submit:"Submit",close:"Close"}},usersFilter:{inputPlaceholder:"Select filter",byAccountType:"By account type",local:"Local",external:"External",byStatus:"By status",active:"Active",pending:"Pending Approval",deactivated:"Deactivated"},reports:{reports:"Reports",report:"Report",reply:"Reply",from:"From",showNotes:"Show notes",newNote:"New note",submit:"Submit",confirmMsg:"Are you sure you want to delete this note?",delete:"Delete",cancel:"Cancel",deleteCompleted:"Delete comleted",deleteCanceled:"Delete canceled",noNotes:"No notes to display",changeState:"Change report's state",changeAllReports:"Change all reports",changeScope:"Change scope",moderateUser:"Moderate user",resolve:"Resolve",reopen:"Reopen",close:"Close",resolveAll:"Resolve all",reopenAll:"Reopen all",closeAll:"Close all",addSensitive:"Add Sensitive flag",removeSensitive:"Remove Sensitive flag",public:"Make status public",private:"Make status private",unlisted:"Make status unlisted",sensitive:"Sensitive",deleteStatus:"Delete status",reportOn:"Report on",reportsOn:"Reports on",id:"ID",account:"Account",actor:"Actor",actors:"Actors",content:"Content",reportedStatus:"Reported status",statusDeleted:"This status has been deleted",leaveNote:"Leave a note",postNote:"Send",deleteNote:"Delete",notFound:"account not found"},reportsFilter:{inputPlaceholder:"Select filter",open:"Open",closed:"Closed",resolved:"Resolved"},moderationLog:{moderationLog:"Moderation Log"},settings:{settings:"Settings",instance:"Instance",upload:"Upload",mailer:"Mailer",linkFormatter:"Link Formatter",logger:"Logger",activityPub:"ActivityPub",auth:"Authentication",captcha:"Captcha",frontend:"Frontend",http:"HTTP",mrf:"MRF",mediaProxy:"Media Proxy",metadata:"Metadata",gopher:"Gopher",jobQueue:"Job queue",webPush:"Web push encryption",esshd:"BBS / SSH access",rateLimiters:"Rate limiters",other:"Other",relays:"Relays",follow:"Follow",followRelay:"Follow new relay",followedBack:"Followed Back",instanceUrl:"Instance URL",success:"Settings changed successfully!",description:"Description",removeFromDB:"Remove setting from the DB",successfullyDownloaded:"Successfully downloaded",successfullyImported:"Successfully imported",nowNewPacksToImport:"No new packs to import",successfullyUpdated:"Successfully updated",metadatLowerCase:"metadata",files:"files",successfullyRemoved:"Setting removed successfully!",seeDocs:"See Documentation",instanceReboot:"Reboot Instance",restartApp:"You must restart the instance to apply settings",restartSuccess:"Instance rebooted successfully!",removeSettingConfirmation:"Are you sure you want to remove this setting's value from the database?",changeImage:"Change image",uploadImage:"Upload image",remove:"Remove"},invites:{inviteTokens:"Invite tokens",createInviteToken:"Generate invite token",pickDate:"Pick a date",maxUse:"Max use",expiresAt:"Expires at",tokenCreated:"Invite token was created",token:"Token",inviteLink:"Invite link",uses:"Uses",used:"Used",cancel:"Cancel",create:"Create",revoke:"Revoke",id:"ID",actions:"Actions",active:"Active",inviteUserViaEmail:"Invite user via email",sendRegistration:"Send registration invite via email",email:"Email",name:"Name",emptyEmailError:"Please input the e-mail",invalidEmailError:"Please input valid e-mail",emailSent:"Invite was sent",submitFormError:"There are invalid values in the form. Please fix them before continuing.",inviteViaEmailAlert:"To send invite via email make sure to enable `invites_enabled` and disable `registrations_open`"},emoji:{emojiPacks:"Emoji packs",reloaded:"Emoji reloaded successfully!",refreshed:"Emoji refreshed successfully!",importEmojiTooltip:"Importing from the filesystem will scan the directories and import those without pack.json but with emoji.txt or without neither",reloadEmoji:"Reload emoji",importPacks:"Import packs from the server filesystem",localPacks:"Local packs",refreshLocalPacks:"Refresh local packs",createLocalPack:"Create a new local pack",remotePacks:"Remote packs",remoteInstanceAddress:"Remote instance address",refreshRemote:"Refresh remote packs",sharePack:"Share pack",required:"required",homepage:"Homepage",description:"Description",packs:"Packs",license:"License",shortcode:"Shortcode",fallbackSrc:"Fallback source",fallbackSrcSha:"Fallback source SHA",saveMetadata:"Save metadata",deletePack:"Delete pack",downloadPack:"Download pack",downloadPackArchive:"Download pack archive",addNewEmoji:"Add new emoji to the pack",manageEmoji:"Manage existing emoji",thisWillDownload:"This will download the",downloadToCurrentInstance:"pack to the current instance under the name",canBeChanged:"can be changed below",willBeUsable:"It will then be usable and shareable from the current instance",downloadAsOptional:"Download as (optional)",downloadSharedPack:"Download shared pack to current instance",downloadSharedPackMobile:"Download pack to instance",optional:"optional",uploadFile:"Upload a file",url:"URL",clickToUpload:"Click to upload",upload:"Upload",customFilename:"Custom filename",customFilenameDesc:"Custom file name (optional)",file:"File",localPack:"Local pack",leaveEmptyShortcode:"leave empty to use the same shortcode",leaveEmptyFilename:"leave empty to use the same filename",update:"Update",remove:"Remove",selectLocalPack:"Select the local pack to copy to",specifyShortcode:"Specify a custom shortcode",specifyFilename:"Specify a custom filename",copy:"Copy",copyToLocalPack:"Copy to local pack",emptyPack:"This emoji pack is empty"}},l.a),zh:r()({},{route:{dashboard:"首页",introduction:"简述",documentation:"文档",guide:"引导页",permission:"权限测试页",pagePermission:"页面权限",directivePermission:"指令权限",icons:"图标",components:"组件",componentIndex:"介绍",markdown:"Markdown",jsonEditor:"JSON编辑器",dndList:"列表拖拽",splitPane:"Splitpane",avatarUpload:"头像上传",dropzone:"Dropzone",sticky:"Sticky",countTo:"CountTo",componentMixin:"小组件",backToTop:"返回顶部",dragDialog:"拖拽 Dialog",dragSelect:"拖拽 Select",dragKanban:"可拖拽看板",charts:"图表",keyboardChart:"键盘图表",lineChart:"折线图",mixChart:"混合图表",example:"综合实例",nested:"路由嵌套",menu1:"菜单1","menu1-1":"菜单1-1","menu1-2":"菜单1-2","menu1-2-1":"菜单1-2-1","menu1-2-2":"菜单1-2-2","menu1-3":"菜单1-3",menu2:"菜单2",Table:"Table",dynamicTable:"动态Table",dragTable:"拖拽Table",inlineEditTable:"Table内编辑",complexTable:"综合Table",treeTable:"树形表格",customTreeTable:"自定义树表",tab:"Tab",form:"表单",createArticle:"创建文章",editArticle:"编辑文章",articleList:"文章列表",errorPages:"错误页面",page401:"401",page404:"404",errorLog:"错误日志",excel:"Excel",exportExcel:"Export Excel",selectExcel:"Export Selected",uploadExcel:"Upload Excel",zip:"Zip",pdf:"PDF",exportZip:"Export Zip",theme:"换肤",clipboardDemo:"Clipboard",i18n:"国际化",externalLink:"外链"},navbar:{logOut:"退出登录",dashboard:"首页",github:"项目地址",theme:"换肤",size:"布局大小"},login:{title:"系统登录",logIn:"登录",username:"账号",password:"密码",any:"随便填",thirdparty:"第三方登录",thirdpartyTips:"本地不能模拟,请结合自己业务进行模拟!!!"},documentation:{documentation:"文档",github:"Github 地址"},permission:{roles:"你的权限",switchRoles:"切换权限",tips:"在某些情况下,不适合使用 v-permission。例如:Element-UI 的 Tab 组件或 el-table-column 以及其它动态渲染 dom 的场景。你只能通过手动设置 v-if 来实现。"},guide:{description:"引导页对于一些第一次进入项目的人很有用,你可以简单介绍下项目的功能。本 Demo 是基于",button:"打开引导"},components:{documentation:"文档",dropzoneTips:"由于我司业务有特殊需求,而且要传七牛 所以没用第三方,选择了自己封装。代码非常的简单,具体代码你可以在这里看到 @/components/element-ui/Dropzone",stickyTips:"当页面滚动到预设的位置会吸附在顶部",backToTopTips1:"页面滚动到指定位置会在右下角出现返回顶部按钮",backToTopTips2:"可自定义按钮的样式、show/hide、出现的高度、返回的位置 如需文字提示,可在外部使用Element的el-tooltip元素",imageUploadTips:"由于我在使用时它只有vue@1版本,而且和mockjs不兼容,所以自己改造了一下,如果大家要使用的话,优先还是使用官方版本。"},table:{dynamicTips1:"固定表头, 按照表头顺序排序",dynamicTips2:"不固定表头, 按照点击顺序排序",dragTips1:"默认顺序",dragTips2:"拖拽后顺序",title:"标题",importance:"重要性",type:"类型",remark:"点评",search:"搜索",add:"添加",export:"导出",reviewer:"审核人",id:"序号",date:"时间",author:"作者",readings:"阅读数",status:"状态",actions:"操作",edit:"编辑",publish:"发布",draft:"草稿",delete:"删除",cancel:"取 消",confirm:"确 定"},errorLog:{tips:"请点击右上角bug小图标",description:"现在的管理后台基本都是spa的形式了,它增强了用户体验,但同时也会增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在 Vue 官网提供了一个方法来捕获处理异常,你可以在其中进行错误处理或者异常上报。",documentation:"文档介绍"},excel:{export:"导出",selectedExport:"导出已选择项",placeholder:"请输入文件名(默认excel-list)"},zip:{export:"导出",placeholder:"请输入文件名(默认file)"},pdf:{tips:"这里使用 window.print() 来实现下载pdf的功能"},theme:{change:"换肤",documentation:"换肤文档",tips:"Tips: 它区别于 navbar 上的 theme-pick, 是两种不同的换肤方法,各自有不同的应用场景,具体请参考文档。"},tagsView:{refresh:"刷新",close:"关闭",closeOthers:"关闭其它",closeAll:"关闭所有"}},d.a),es:r()({},{route:{dashboard:"Panel de control",introduction:"Introducción",documentation:"Documentación",guide:"Guía",permission:"Permisos",pagePermission:"Permisos de la página",directivePermission:"Permisos de la directiva",icons:"Iconos",components:"Componentes",componentIndex:"Introducción",markdown:"Markdown",jsonEditor:"Editor JSON",dndList:"Lista Dnd",splitPane:"Panel dividido",avatarUpload:"Subir avatar",dropzone:"Subir ficheros",sticky:"Sticky",countTo:"CountTo",componentMixin:"Mixin",backToTop:"Ir arriba",dragDialog:"Drag Dialog",dragSelect:"Drag Select",dragKanban:"Drag Kanban",charts:"Gráficos",keyboardChart:"Keyboard Chart",lineChart:"Gráfico de líneas",mixChart:"Mix Chart",example:"Ejemplo",nested:"Rutas anidadass",menu1:"Menu 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menu 2",Table:"Tabla",dynamicTable:"Tabla dinámica",dragTable:"Arrastrar tabla",inlineEditTable:"Editor",complexTable:"Complex Table",treeTable:"Tree Table",customTreeTable:"Custom TreeTable",tab:"Pestaña",form:"Formulario",createArticle:"Crear artículo",editArticle:"Editar artículo",articleList:"Listado de artículos",errorPages:"Páginas de error",page401:"401",page404:"404",errorLog:"Registro de errores",excel:"Excel",exportExcel:"Exportar a Excel",selectExcel:"Export seleccionado",uploadExcel:"Subir Excel",zip:"Zip",pdf:"PDF",exportZip:"Exportar a Zip",theme:"Tema",clipboardDemo:"Clipboard",i18n:"I18n",externalLink:"Enlace externo"},navbar:{logOut:"Salir",dashboard:"Panel de control",github:"Github",theme:"Tema",size:"Tamaño global"},login:{title:"Formulario de acceso",logIn:"Acceso",username:"Usuario",password:"Contraseña",any:"nada",thirdparty:"Conectar con",thirdpartyTips:"No se puede simular en local, así que combine su propia simulación de negocios. ! !"},documentation:{documentation:"Documentación",github:"Repositorio Github"},permission:{roles:"Tus permisos",switchRoles:"Cambiar permisos",tips:"In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if."},guide:{description:"The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ",button:"Ver guía"},components:{documentation:"Documentación",dropzoneTips:"Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version."},table:{dynamicTips1:"Fixed header, sorted by header order",dynamicTips2:"Not fixed header, sorted by click order",dragTips1:"Orden por defecto",dragTips2:"The after dragging order",title:"Título",importance:"Importancia",type:"Tipo",remark:"Remark",search:"Buscar",add:"Añadir",export:"Exportar",reviewer:"reviewer",id:"ID",date:"Fecha",author:"Autor",readings:"Lector",status:"Estado",actions:"Acciones",edit:"Editar",publish:"Publicar",draft:"Draft",delete:"Eliminar",cancel:"Cancelar",confirm:"Confirmar"},errorLog:{tips:"Please click the bug icon in the upper right corner",description:"Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.",documentation:"Documento de introducción"},excel:{export:"Exportar",selectedExport:"Exportar seleccionados",placeholder:"Por favor escribe un nombre de fichero"},zip:{export:"Exportar",placeholder:"Por favor escribe un nombre de fichero"},pdf:{tips:"Here we use window.print() to implement the feature of downloading pdf."},theme:{change:"Cambiar tema",documentation:"Documentación del tema",tips:"Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details."},tagsView:{refresh:"Actualizar",close:"Cerrar",closeOthers:"Cerrar otros",closeAll:"Cerrar todos"}},m.a),oc:r()({},{route:{dashboard:"Tablèu de bòrd",introduction:"Introduccion",documentation:"Documentacion",guide:"Guida",permission:"Autorizacions",pagePermission:"Pagina d’autorizacion",directivePermission:"Politica d’autorizacion",icons:"Icònas",components:"Compausants",componentIndex:"Introduccion",markdown:"Markdown",jsonEditor:"JSON Editor",dndList:"Dnd List",splitPane:"SplitPane",avatarUpload:"Mandadís d’avatar",dropzone:"Dropzone",sticky:"Sticky",countTo:"CountTo",componentMixin:"Mixin",backToTop:"BackToTop",dragDialog:"Drag Dialog",dragSelect:"Drag Select",dragKanban:"Drag Kanban",charts:"Charts",keyboardChart:"Keyboard Chart",lineChart:"Line Chart",mixChart:"Mix Chart",example:"Exemple",nested:"Rotas imbricadas",menu1:"Menú 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menú 2",Table:"Tablèu",dynamicTable:"Tablèu dinamic",dragTable:"Drag Table",inlineEditTable:"Inline Edit",complexTable:"Tablèu complèx",treeTable:"Arborescéncia",customTreeTable:"Arborescéncia personalizada",tab:"Onglet",form:"Formulari",createArticle:"Crear un article",editArticle:"Modificar l’article",articleList:"Lista d’articles",errorPages:"Paginas d’error",page401:"401",page404:"404",errorLog:"Jornal d’error",excel:"Excel",exportExcel:"Exportacion Excel",selectExcel:"Exportar los seleccionats",uploadExcel:"Importacion Excel",zip:"Zip",pdf:"PDF",exportZip:"Exportacion Zip",theme:"Tèma",clipboardDemo:"Clipboard",i18n:"I18n",externalLink:"Ligams extèrnes",users:"Utilizaires"},navbar:{logOut:"Desconnexion",dashboard:"Tablèu de bòrd",github:"Github",theme:"Tèma",size:"Talha totala"},login:{title:"Formulari de connexion",logIn:"Se connectar",username:"Nom d’’utilizaire",password:"Senhal",any:"qual que siá",thirdparty:"O se connectar amb",thirdpartyTips:"Pòt pas èsser simulat en local, doncas montatz vòstra pròpria simulacion ! ! !"},documentation:{documentation:"Documentacion",github:"Repertòri Github"},permission:{roles:"Vòstres ròtles",switchRoles:"Cambiar de ròtle",tips:"Dins qualques cases es pas de bon far d’utilizar v-permission, coma element d’onglet compausant, el-table-column o d’autres renduts dom asincròns que pòdon pas que foncionar amb un parametratge manual de v-if."},guide:{description:"La pagina de guida es utila pel monde que dintran dins lo projècte pel primièr còp. Podètz presentar en un mot las foncionalitats del projèctes. La demo es fondada sus ",button:"Mostrar la guida"},components:{documentation:"Documentacion",dropzoneTips:"Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version."},table:{dynamicTips1:"Bandièra fixa, triada per òrdre de bandièra",dynamicTips2:"Bandièra pas fixa, triada per òrdre de clic",dragTips1:"L’’òrdre per defaut",dragTips2:"L’’òrdre aprèp lisar-depausar",title:"Títol",importance:"Imp",type:"Tipe",remark:"Remarca",search:"Recercar",add:"Ajustar",export:"Exportar",reviewer:"examinator",id:"ID",date:"Data",author:"Autor",readings:"Lecturas",status:"Estatuts",actions:"Accions",edit:"Modificar",publish:"Publicar",draft:"Ensag",delete:"Suprimir",cancel:"Anullar",confirm:"Confirmar"},errorLog:{tips:"Mercés de clicar l’’icòna del babau amont a man drecha",description:"Ara que lo sistèma de gestion es coma un spa, melhora l’experiéncia dels utilizaire mas aumenta tanben lo risc de problèmas sus la pagina, una pichona negligéncia pòt menar a un blocatge complèt de la pagina. Urosament Vue fornís de manièras per gerir las excepcions, trobar las errors o senhalar las excepcions.",documentation:"Presentacion del document"},excel:{export:"Exportar",selectedExport:"Exportar los elements seleccionats",placeholder:"Mercés de picar lo nom de fichièr (per defaut excel-list)"},zip:{export:"Exportar",placeholder:"Mercés de picar lo nom de fichièr (per defaut file)"},pdf:{tips:"Aquí utilizam window.print() per prepausar lo telecargament de pdf."},theme:{change:"Cambiar lo tèma",documentation:"Documentacion dels tèmas",tips:"Astúcia : es diferent del theme-pick de la barra de navigacion, i a dos metòdes de personalizacion, caduna amb un biais de far diferent. Referiscam a la documentacion per mai de detalhs."},tagsView:{refresh:"Actualizar",close:"Tampar",closeOthers:"Tampar los autres",closeAll:"Los tampar totes"}})},v=new o.a({locale:c.a.get("language")||"en",messages:f});t.a=v},mm8V:function(e,t,n){"use strict";n.d(t,"a",function(){return l}),n.d(t,"b",function(){return d}),n.d(t,"c",function(){return h}),n.d(t,"d",function(){return f}),n.d(t,"e",function(){return g}),n.d(t,"f",function(){return b}),n.d(t,"g",function(){return T}),n.d(t,"h",function(){return S}),n.d(t,"i",function(){return k}),n.d(t,"j",function(){return A}),n.d(t,"k",function(){return L}),n.d(t,"l",function(){return C}),n.d(t,"m",function(){return P});var a=n("o0o1"),r=n.n(a),s=n("yXPU"),o=n.n(s),i=n("t3Un"),c=n("X4fA"),u=n("9i3r");function l(e,t,n,a,r,s){return p.apply(this,arguments)}function p(){return(p=o()(r.a.mark(function e(t,n,a,s,o,c){var l;return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return l=new FormData,""!==s.trim()&&l.set("filename",s),""!==a.trim()&&l.set("shortcode",a),l.set("file",n),e.next=6,Object(i.a)({baseURL:Object(u.a)(o),url:"/api/pleroma/emoji/packs/".concat(t,"/files"),method:"post",headers:U(c),data:l});case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}},e)}))).apply(this,arguments)}function d(e,t,n){return"".concat(Object(u.a)(e),"/emoji/").concat(t,"/").concat(n)}function h(e,t,n){return m.apply(this,arguments)}function m(){return(m=o()(r.a.mark(function e(t,n,a){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/".concat(a),method:"post",headers:U(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function f(e,t,n,a){return v.apply(this,arguments)}function v(){return(v=o()(r.a.mark(function e(t,n,a,s){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(a),url:"/api/pleroma/emoji/packs/".concat(t,"/files?shortcode=").concat(n),method:"delete",headers:U(s)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function g(e,t,n){return w.apply(this,arguments)}function w(){return(w=o()(r.a.mark(function e(t,n,a){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/".concat(a),method:"delete",headers:U(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function b(e,t,n,a,r){return y.apply(this,arguments)}function y(){return(y=o()(r.a.mark(function e(t,n,a,s,o){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(s),url:"/api/pleroma/emoji/packs/download",method:"post",headers:U(o),data:""===a.trim()?{url:Object(u.a)(t),name:n}:{url:Object(u.a)(t),name:n,as:a},timeout:0});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function T(e,t,n,a,r){return x.apply(this,arguments)}function x(){return(x=o()(r.a.mark(function e(t,n,a,s,o){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(s),url:"/api/pleroma/emoji/packs/".concat(t,"?page=").concat(n,"&page_size=").concat(a),method:"get",headers:U(o)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function S(e,t){return E.apply(this,arguments)}function E(){return(E=o()(r.a.mark(function e(t,n){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/import",method:"get",headers:U(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function k(e,t,n,a){return _.apply(this,arguments)}function _(){return(_=o()(r.a.mark(function e(t,n,a,s){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(a),url:"/api/pleroma/emoji/packs?page=".concat(t,"&page_size=").concat(n),method:"get",headers:U(s)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function A(e,t,n){return O.apply(this,arguments)}function O(){return(O=o()(r.a.mark(function e(t,n,a){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/remote?url=".concat(Object(u.a)(a)),method:"get",headers:U(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function L(e,t){return I.apply(this,arguments)}function I(){return(I=o()(r.a.mark(function e(t,n){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/admin/reload_emoji",method:"post",headers:U(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function C(e,t,n,a){return R.apply(this,arguments)}function R(){return(R=o()(r.a.mark(function e(t,n,a,s){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/".concat(a),method:"patch",headers:U(n),data:{metadata:s},timeout:0});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function P(e,t,n,a,r,s,o){return D.apply(this,arguments)}function D(){return(D=o()(r.a.mark(function e(t,n,a,s,o,c,l){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(c),url:"/api/pleroma/emoji/packs/".concat(t,"/files"),method:"patch",headers:U(l),data:{shortcode:n,new_shortcode:a,new_filename:s,force:o}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var U=function(e){return e?{Authorization:"Bearer ".concat(Object(c.b)())}:{}}},nZHn:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-icon",use:"icon-icon-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},oUrx:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-404",use:"icon-404-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},qkZ8:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-edit",use:"icon-edit-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},qwAt:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-lock",use:"icon-lock-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},s7Vf:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-user",use:"icon-user-usage",viewBox:"0 0 130 130",content:''});o.a.add(i);t.default=i},"sg+I":function(e,t,n){e.exports={menuText:"#bfcbd9",menuActiveText:"#409EFF",subMenuActiveText:"#f4f4f5",menuBg:"#304156",menuHover:"#263445",subMenuBg:"#1f2d3d",subMenuHover:"#001528",sideBarWidth:"180px"}},t3Un:function(e,t,n){"use strict";var a=n("vDqi"),r=n.n(a),s=n("XJYT"),o=r.a.create({timeout:6e4});o.interceptors.response.use(function(e){return e},function(e){var t;if(console.log("Error ".concat(e)),e.response){var n=e.response.data.error?e.response.data.error:e.response.data;t=e.response.headers["content-type"].includes("application/json")?"".concat(e.message," - ").concat(n):"".concat(e.message)}else t=e;return Object(s.Message)({message:t,type:"error",duration:5e3}),Promise.reject(e)}),t.a=o},vDVG:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-clipboard",use:"icon-clipboard-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},y7eQ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-email",use:"icon-email-usage",viewBox:"0 0 128 96",content:''});o.a.add(i);t.default=i},yCkv:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),s=n("IaFt"),o=n.n(s),i=new r.a({id:"icon-chart",use:"icon-chart-usage",viewBox:"0 0 128 128",content:''});o.a.add(i);t.default=i},zEvO:function(e,t,n){"use strict";var a=n("9NTF");n.n(a).a},zT9a:function(e,t,n){"use strict";var a={name:"SvgIcon",props:{iconClass:{type:String,required:!0},className:{type:String,default:""}},computed:{iconName:function(){return"#icon-".concat(this.iconClass)},svgClass:function(){return this.className?"svg-icon "+this.className:"svg-icon"}}},r=(n("mDMp"),n("KHd+")),s=Object(r.a)(a,function(){var e=this.$createElement,t=this._self._c||e;return t("svg",this._g({class:this.svgClass,attrs:{"aria-hidden":"true"}},this.$listeners),[t("use",{attrs:{"xlink:href":this.iconName}})])},[],!1,null,"17178ffc",null);s.options.__file="index.vue";t.a=s.exports},zx4i:function(e,t,n){e.exports={menuText:"#bfcbd9",menuActiveText:"#409EFF",subMenuActiveText:"#f4f4f5",menuBg:"#304156",menuHover:"#263445",subMenuBg:"#1f2d3d",subMenuHover:"#001528",sideBarWidth:"180px"}}},[["Vtdi","runtime","chunk-elementUI","chunk-libs"]]]); -//# sourceMappingURL=app.1df22cde.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/app.1df22cde.js.map b/priv/static/adminfe/static/js/app.1df22cde.js.map deleted file mode 100644 index 4f6ad8e95..000000000 --- a/priv/static/adminfe/static/js/app.1df22cde.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/icons/svg/pdf.svg","webpack:///./src/icons/svg/people.svg","webpack:///./src/icons/svg/eye-open.svg","webpack:///./src/components/element-ui/Hamburger/index.vue?8f92","webpack:///./src/icons/svg/exit-fullscreen.svg","webpack:///./src/icons/svg/nested.svg","webpack:///./src/icons/svg/theme.svg","webpack:///./src/icons/svg/form.svg","webpack:///./src/icons/svg/dashboard.svg","webpack:///./src/api/utils.js","webpack:///./src/icons/svg/shopping.svg","webpack:///./src/icons/svg/bug.svg","webpack:///./src/icons/svg/international.svg","webpack:///./src/icons/svg/qq.svg","webpack:///./src/icons/svg/link.svg","webpack:///./src/components/element-ui/ScrollPane/index.vue?8407","webpack:///./src/views/layout/components/TagsView.vue?6ab0","webpack:///./src/icons/svg/guide 2.svg","webpack:///./src/icons/svg/language.svg","webpack:///./src/icons/svg/password.svg","webpack:///./src/icons/svg/peoples.svg","webpack:///./src/icons/svg/money.svg","webpack:///./src/icons/svg/example.svg","webpack:///./src/icons/svg/list.svg","webpack:///./src/icons/svg/settings.svg","webpack:///./src/icons/svg/message.svg","webpack:///./src/icons/svg/table.svg","webpack:///./src/views/layout/Layout.vue?d1f6","webpack:///./src/icons/svg/eye.svg","webpack:///./src/icons/svg sync nonrecursive \\.svg$","webpack:///./src/icons/svg/component.svg","webpack:///./src/App.vue?9edb","webpack:///src/App.vue","webpack:///./src/App.vue","webpack:///./src/App.vue?1e50","webpack:///./src/api/app.js","webpack:///./src/store/modules/app.js","webpack:///./src/store/modules/emojiPacks.js","webpack:///./src/store/modules/errorLog.js","webpack:///./src/store/getters.js","webpack:///./src/api/invites.js","webpack:///./src/store/modules/invites.js","webpack:///./src/api/mediaProxyCache.js","webpack:///./src/store/modules/mediaProxyCache.js","webpack:///./src/api/moderationLog.js","webpack:///./src/store/modules/moderationLog.js","webpack:///./src/api/peers.js","webpack:///./src/store/modules/peers.js","webpack:///./src/components/element-ui/Hamburger/index.vue?1751","webpack:///src/components/element-ui/Hamburger/index.vue","webpack:///./src/components/element-ui/Hamburger/index.vue","webpack:///./src/components/element-ui/Hamburger/index.vue?78c1","webpack:///./src/views/layout/components/Navbar.vue?138b","webpack:///src/views/layout/components/Navbar.vue","webpack:///./src/views/layout/components/Navbar.vue","webpack:///./src/views/layout/components/Navbar.vue?b672","webpack:///./src/utils/i18n.js","webpack:///./src/utils/index.js","webpack:///./src/views/layout/components/Sidebar/Item.vue?9f99","webpack:///./src/views/layout/components/Sidebar/Item.vue?425b","webpack:///src/views/layout/components/Sidebar/Item.vue","webpack:///./src/views/layout/components/Sidebar/Item.vue","webpack:///./src/views/layout/components/Sidebar/Link.vue?a99f","webpack:///src/views/layout/components/Sidebar/Link.vue","webpack:///./src/views/layout/components/Sidebar/Link.vue","webpack:///./src/views/layout/components/Sidebar/Link.vue?d88c","webpack:///./src/views/layout/components/Sidebar/SidebarItem.vue?f0b2","webpack:///src/views/layout/components/Sidebar/SidebarItem.vue","webpack:///./src/views/layout/components/Sidebar/FixiOSBug.js","webpack:///./src/views/layout/components/Sidebar/SidebarItem.vue","webpack:///./src/views/layout/components/Sidebar/SidebarItem.vue?e550","webpack:///./src/views/layout/components/Sidebar/index.vue?3b50","webpack:///src/views/layout/components/Sidebar/index.vue","webpack:///./src/views/layout/components/Sidebar/index.vue","webpack:///./src/views/layout/components/Sidebar/index.vue?d021","webpack:///./src/components/element-ui/ScrollPane/index.vue?a39e","webpack:///src/components/element-ui/ScrollPane/index.vue","webpack:///./src/components/element-ui/ScrollPane/index.vue","webpack:///./src/components/element-ui/ScrollPane/index.vue?7344","webpack:///./src/views/layout/components/TagsView.vue?f016","webpack:///src/views/layout/components/TagsView.vue","webpack:///./src/views/layout/components/TagsView.vue","webpack:///./src/views/layout/components/TagsView.vue?d863","webpack:///./src/views/layout/components/AppMain.vue?4460","webpack:///src/views/layout/components/AppMain.vue","webpack:///./src/views/layout/components/AppMain.vue","webpack:///./src/views/layout/components/AppMain.vue?367b","webpack:///./src/views/layout/mixin/ResizeHandler.js","webpack:///./src/views/layout/Layout.vue?de6d","webpack:///src/views/layout/Layout.vue","webpack:///./src/views/layout/Layout.vue","webpack:///./src/views/layout/Layout.vue?9516","webpack:///./src/router/index.js","webpack:///./src/store/modules/permission.js","webpack:///./src/api/relays.js","webpack:///./src/store/modules/relays.js","webpack:///./src/api/reports.js","webpack:///./src/store/modules/reports.js","webpack:///./src/api/settings.js","webpack:///./src/store/modules/settings.js","webpack:///./src/api/status.js","webpack:///./src/store/modules/status.js","webpack:///./src/store/modules/tagsView.js","webpack:///./src/api/login.js","webpack:///./src/api/nodeInfo.js","webpack:///./src/store/modules/user.js","webpack:///./src/api/users.js","webpack:///./src/store/modules/userProfile.js","webpack:///./src/store/modules/users.js","webpack:///./src/store/index.js","webpack:///./src/icons/index.js","webpack:///./src/errorLog.js","webpack:///./src/permission.js","webpack:///./src/filters/index.js","webpack:///./src/main.js","webpack:///./src/utils/auth.js","webpack:///./src/views/layout/components/TagsView.vue?da45","webpack:///./src/views/layout/components/AppMain.vue?2c3a","webpack:///./src/icons/svg/excel.svg","webpack:///./src/icons/svg/guide.svg","webpack:///./src/icons/svg/star.svg","webpack:///./src/views/layout/components/Navbar.vue?a40e","webpack:///./src/icons/svg/wechat.svg","webpack:///./src/store/modules/normalizers.js","webpack:///./src/icons/svg/size.svg","webpack:///./src/icons/svg/zip.svg","webpack:///./src/icons/svg/tab.svg","webpack:///./src/icons/svg/search.svg","webpack:///./src/icons/svg/tree.svg","webpack:///./src/icons/svg/documentation.svg","webpack:///./src/icons/svg/drag.svg","webpack:///./src/components/element-ui/SvgIcon/index.vue?928c","webpack:///./src/icons/svg/fullscreen.svg","webpack:///./src/lang/index.js","webpack:///./src/lang/en.js","webpack:///./src/lang/zh.js","webpack:///./src/lang/es.js","webpack:///./src/lang/oc.js","webpack:///./src/api/emojiPacks.js","webpack:///./src/icons/svg/icon.svg","webpack:///./src/icons/svg/404.svg","webpack:///./src/icons/svg/edit.svg","webpack:///./src/icons/svg/lock.svg","webpack:///./src/icons/svg/user.svg","webpack:///./src/styles/index.scss","webpack:///./src/utils/request.js","webpack:///./src/icons/svg/clipboard.svg","webpack:///./src/icons/svg/email.svg","webpack:///./src/icons/svg/chart.svg","webpack:///./src/views/layout/components/Sidebar/Item.vue?895e","webpack:///./src/components/element-ui/SvgIcon/index.vue?8767","webpack:///./src/components/element-ui/SvgIcon/index.vue?c01f","webpack:///src/components/element-ui/SvgIcon/index.vue","webpack:///./src/components/element-ui/SvgIcon/index.vue","webpack:///./src/styles/variables.scss"],"names":["__webpack_require__","r","__webpack_exports__","svg_baker_runtime_browser_symbol__WEBPACK_IMPORTED_MODULE_0__","svg_baker_runtime_browser_symbol__WEBPACK_IMPORTED_MODULE_0___default","n","svg_sprite_loader_runtime_browser_sprite_build__WEBPACK_IMPORTED_MODULE_1__","svg_sprite_loader_runtime_browser_sprite_build__WEBPACK_IMPORTED_MODULE_1___default","symbol","a","id","use","viewBox","content","add","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_69c6c5c4_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","d","baseName","instanceName","arguments","length","undefined","match","startsWith","isLocalhost","concat","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_591d6778_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_TagsView_vue_vue_type_style_index_0_id_e1cdb714_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Layout_vue_vue_type_style_index_0_id_767d264f_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","map","./404.svg","./bug.svg","./chart.svg","./clipboard.svg","./component.svg","./dashboard.svg","./documentation.svg","./drag.svg","./edit.svg","./email.svg","./example.svg","./excel.svg","./exit-fullscreen.svg","./eye-open.svg","./eye.svg","./form.svg","./fullscreen.svg","./guide 2.svg","./guide.svg","./icon.svg","./international.svg","./language.svg","./link.svg","./list.svg","./lock.svg","./message.svg","./money.svg","./nested.svg","./password.svg","./pdf.svg","./people.svg","./peoples.svg","./qq.svg","./search.svg","./settings.svg","./shopping.svg","./size.svg","./star.svg","./tab.svg","./table.svg","./theme.svg","./tree.svg","./user.svg","./wechat.svg","./zip.svg","webpackContext","req","webpackContextResolve","o","e","Error","code","keys","Object","resolve","module","exports","src_Appvue_type_script_lang_js_","name","component","componentNormalizer","_h","this","$createElement","_c","_self","attrs","options","__file","App","needReboot","_x","_x2","_needReboot","apply","_callee","authHost","token","regenerator_default","wrap","_context","prev","next","request","baseURL","url","method","headers","authHeaders","abrupt","sent","stop","restartApp","_x3","_x4","_restartApp","_callee2","_context2","Authorization","getToken","app","state","sidebar","opened","Cookies","get","withoutAnimation","device","language","size","invitesEnabled","mutations","TOGGLE_SIDEBAR","set","CLOSE_SIDEBAR","TOGGLE_DEVICE","SET_INVITES_ENABLED","SET_LANGUAGE","TOGGLE_REBOOT","SET_SIZE","actions","closeSideBar","_ref","_ref2","commit","NeedReboot","_NeedReboot","asyncToGenerator_default","mark","_ref3","getters","response","data","RestartApplication","_RestartApplication","_ref4","SetInvitesEnabled","_ref5","setLanguage","_ref6","setSize","_ref7","toggleDevice","_ref8","toggleSideBar","_ref9","emojiPacks","activeTab","currentFilesPage","currentPage","filesPageSize","localPackFilesCount","localPacks","localPacksCount","pageSize","remoteInstance","remotePacks","SET_ACTIVE_TAB","tab","SET_FILES_COUNT","count","SET_FILES_PAGE","page","SET_LOCAL_PACKS","packs","SET_LOCAL_PACKS_COUNT","SET_PACK_FILES","files","objectSpread_default","defineProperty_default","SET_PAGE","SET_REMOTE_INSTANCE","SET_REMOTE_PACKS","UPDATE_LOCAL_PACK_VAL","key","value","Vue","UPDATE_LOCAL_PACK_PACK","pack","UPDATE_LOCAL_PACK_FILES","AddNewEmojiFile","_AddNewEmojiFile","packName","file","shortcode","filename","result","addNewEmojiFile","t0","Message","message","i18n","t","type","duration","DeleteEmojiFile","_DeleteEmojiFile","dispatch","_state$localPacks$pac","updatedPackFiles","objectWithoutProperties_default","_toPropertyKey","deleteEmojiFile","CreatePack","_CreatePack","_callee3","_ref10","_context3","createPack","_x5","_x6","DeletePack","_DeletePack","_callee4","_ref11","_ref12","_context4","deletePack","_x7","_x8","DownloadFrom","_DownloadFrom","_callee5","_ref13","_ref14","instanceAddress","as","_context5","downloadFrom","_x9","_x10","FetchLocalEmojiPacks","_FetchLocalEmojiPacks","_callee6","_ref15","_ref16","updatedPacks","_context6","listPacks","reduce","acc","_packs$packName","_x11","_x12","FetchSinglePack","_FetchSinglePack","_callee7","_ref17","_ref18","_ref19","files_count","_context7","fetchPack","_x13","_x14","ImportFromFS","_ImportFromFS","_callee8","_ref20","_context8","importFromFS","status","_x15","ReloadEmoji","_ReloadEmoji","_callee9","_ref21","_context9","reloadEmoji","_x16","SavePackMetadata","_SavePackMetadata","_callee10","_ref22","_ref23","_context10","savePackMetadata","_x17","_x18","SetActiveTab","_ref24","SetRemoteEmojiPacks","_SetRemoteEmojiPacks","_callee11","_ref25","_ref26","_ref27","_context11","listRemotePacks","_x19","_x20","SetRemoteInstance","_ref28","instance","UpdateEmojiFile","_UpdateEmojiFile","_callee12","_ref29","_ref30","newShortcode","newFilename","force","_context12","el","updateEmojiFile","_x21","_x22","UpdateLocalPackVal","_UpdateLocalPackVal","_callee13","_ref31","args","_context13","_x23","_x24","errorLog","logs","ADD_ERROR_LOG","log","push","addErrorLog","visitedViews","tagsView","cachedViews","user","avatar","introduction","roles","setting","permission_routers","permission","routers","addRouters","errorLogs","users","fetchedUsers","settings","generateInviteToken","_generateInviteToken","max_use","expires_at","inviteViaEmail","_inviteViaEmail","email","listInviteTokens","_listInviteTokens","revokeToken","_revokeToken","tokenToRevoke","invites","inviteTokens","loading","newToken","SET_LOADING","SET_NEW_TOKEN","SET_TOKENS","tokens","FetchInviteTokens","_FetchInviteTokens","reverse","GenerateInviteToken","_GenerateInviteToken","maxUse","expiresAt","InviteUserViaEmail","_InviteUserViaEmail","RemoveNewToken","RevokeToken","_RevokeToken","listBannedUrls","_listBannedUrls","purgeUrls","_purgeUrls","urls","ban","removeBannedUrls","_removeBannedUrls","searchBannedUrls","_searchBannedUrls","query","mediaProxyCache","bannedUrls","totalUrlsCount","SET_BANNED_URLS","SET_TOTAL_URLS_COUNT","ListBannedUrls","_ListBannedUrls","PurgeUrls","_PurgeUrls","RemoveBannedUrls","_RemoveBannedUrls","SearchUrls","_SearchUrls","fetchLog","_fetchLog","params","normalizedParams","_args","URLSearchParams","_","omitBy","isUndefined","toString","fetchAdmins","_fetchAdmins","fetchModerators","_fetchModerators","moderationLog","fetchedLog","logItemsCount","admins","moderators","logLoading","adminsLoading","SET_LOG_LOADING","SET_ADMINS_LOADING","SET_MODERATION_LOG","SET_MODERATION_LOG_COUNT","SET_ADMINS","SET_MODERATORS","FetchModerationLog","_FetchModerationLog","opts","items","total","FetchAdmins","_FetchAdmins","adminsResponse","moderatorsResponse","fetchPeers","_fetchPeers","peers","fetchedPeers","SET_PEERS","FetchPeers","_FetchPeers","toConsumableArray_default","sort","element_ui_Hamburgervue_type_script_lang_js_","props","isActive","Boolean","default","toggleClick","Function","Hamburger_component","staticStyle","padding","on","click","staticClass","class","is-active","xmlns","width","height","components_Navbarvue_type_script_lang_js_","components","Hamburger","computed","vuex_esm","methods","$store","logout","then","location","reload","Navbar_component","_vm","toggle-click","_v","trigger","src","slot","display","_s","$t","Navbar","generateTitle","title","$te","parseTime","time","cFormat","date","format","typeof_default","test","parseInt","Date","formatObj","y","getFullYear","m","getMonth","getDate","h","getHours","i","getMinutes","s","getSeconds","getDay","replace","formatTime","option","diff","now","Math","ceil","isExternal","path","Sidebar_Itemvue_type_script_lang_js_","String","icon","Item_component","icon-class","Item","Sidebar_Linkvue_type_script_lang_js_","to","required","linkProps","is","href","target","rel","Link_component","_b","_t","Link","Sidebar_SidebarItemvue_type_script_lang_js_","AppLink","mixins","mounted","fixBugIniOS","_this","$subMenu","$refs","subMenu","handleMouseleave","item","isNest","basePath","onlyOneChild","normalizedReportsCount","numeral_default","reports","openReportsCount","hasOneShowingChild","children","parent","showingChildren","filter","hidden","noShowingChildren","resolvePath","routePath","isExternalLink","path_browserify_default","showCount","SidebarItem_component","alwaysShow","ref","index","meta","_e","_l","child","is-nest","base-path","submenu-title-noDropdown","SidebarItem","components_Sidebarvue_type_script_lang_js_","variables","variables_default","isCollapse","Sidebar_component","wrap-class","default-active","$route","collapse","background-color","menuBg","text-color","menuText","active-text-color","menuActiveText","mode","route","Sidebar","element_ui_ScrollPanevue_type_script_lang_js_","left","handleScroll","eventDelta","wheelDelta","deltaY","$scrollWrapper","scrollContainer","scrollLeft","moveToTarget","currentTag","$containerWidth","$el","offsetWidth","tagList","$parent","tag","firstTag","lastTag","scrollWidth","currentIndex","findIndex","prevTag","nextTag","afterNextTagOffsetLeft","offsetLeft","beforePrevTagOffsetLeft","ScrollPane_component","vertical","nativeOn","wheel","$event","preventDefault","components_TagsViewvue_type_script_lang_js_","ScrollPane","visible","top","selectedTag","affixTags","watch","addTags","moveToCurrentTag","document","body","addEventListener","closeMenu","removeEventListener","initTags","filterAffixTags","routes","tags","forEach","affix","tempTags","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","done","err","return","_this2","$nextTick","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","scrollPane","fullPath","refreshSelectedTag","view","_this3","$router","closeSelectedTag","_this4","toLastView","closeOthersTags","_this5","closeAllTags","_this6","some","latestView","slice","openMenu","getBoundingClientRect","maxLeft","clientX","clientY","TagsView_component","refInFor","mouseup","button","contextmenu","stopPropagation","directives","rawName","expression","style","TagsView","components_AppMainvue_type_script_lang_js_","AppMain_component","include","AppMain","layout_Layoutvue_type_script_lang_js_","store","beforeMount","window","resizeHandler","isMobile","isTablet","rect","classObj","hideSidebar","openSidebar","mobile","handleClickOutside","Layout_component","Layout","Router","disabledFeatures","process","settingsDisabled","includes","Promise","all","bind","noCache","statusesDisabled","statuses","reportsDisabled","invitesDisabled","emojiPacksDisabled","moderationLogDisabled","mediaProxyCacheDisabled","constantRouterMap","redirect","router","scrollBehavior","asyncRouterMap","SET_ROUTERS","GenerateRoutes","accessedRouters","filterAsyncRouter","res","tmp","role","hasPermission","fetchRelays","_fetchRelays","addRelay","_addRelay","relay_url","deleteRelay","_deleteRelay","relays","fetchedRelays","SET_RELAYS","ADD_RELAY","relay","actor","DELETE_RELAY","fetchedRelay","FetchRelays","_FetchRelays","AddRelay","_AddRelay","finish","DeleteRelay","_DeleteRelay","changeState","_changeState","fetchReports","_fetchReports","reportID","noteID","fetchedReports","stateFilter","totalReportsCount","SET_LAST_REPORT_ID","idOfLastReport","SET_OPEN_REPORTS_COUNT","SET_REPORTS","SET_REPORTS_COUNT","SET_REPORTS_FILTER","ChangeReportState","_ChangeReportState","reportsData","updatedReports","report","ClearFetchedReports","FetchReports","_FetchReports","FetchOpenReportsCount","_FetchOpenReportsCount","SetReportsFilter","CreateReportNote","rootState","_createNote","createNote","optimisticNote","nickname","created_at","getTime","notes","DeleteReportNote","_deleteNote","deleteNote","note","fetchDescription","_fetchDescription","fetchSettings","_fetchSettings","updateSettings","_updateSettings","configs","removeSettings","_removeSettings","configDisabled","db","description","searchData","updatedSettings","CLEAR_UPDATED_SETTINGS","REMOVE_SETTING_FROM_UPDATED","group","subkeys","_state$updatedSetting","settings_toPropertyKey","SET_DESCRIPTION","SET_SEARCH","searchObject","SET_SETTINGS","newSettings","parsedValue","valueHasTuples","parseNonTuples","parseTuples","newDbSettings","TOGGLE_TABS","UPDATE_SETTINGS","input","updatedSetting","UPDATE_STATE","updatedState","FetchSettings","_FetchSettings","formSearchObject","RemoveSetting","_RemoveSetting","_configs$","need_reboot","SubmitChanges","_SubmitChanges","wrapUpdatedSettings","UpdateSettings","UpdateState","_UpdateState","deletedKey","delete","changeStatusScope","_changeStatusScope","sensitive","visibility","deleteStatus","_deleteStatus","fetchStatus","_fetchStatus","fetchStatuses","_fetchStatuses","godmode","localOnly","fetchStatusesCount","_fetchStatusesCount","fetchStatusesByInstance","_fetchStatusesByInstance","fetchedStatus","fetchedStatuses","statusAuthor","statusesByInstance","selectedInstance","showLocal","showPrivate","buttonLoading","allLoaded","statusVisibility","CHANGE_GODMODE_CHECKBOX_VALUE","CHANGE_LOCAL_CHECKBOX_VALUE","CHANGE_PAGE","CHANGE_SELECTED_INSTANCE","SET_STATUS","SET_STATUSES_BY_INSTANCE","PUSH_STATUSES","SET_ALL_LOADED","SET_BUTTON_LOADING","SET_STATUS_VISIBILITY","SET_STATUS_AUTHOR","ChangeStatusScope","_ChangeStatusScope","statusId","isSensitive","reportCurrentPage","userId","ClearState","DeleteStatus","_DeleteStatus","FetchStatus","_FetchStatus","account","FetchStatusAfterUserModeration","FetchStatusesCount","_FetchStatusesCount","status_visibility","FetchStatusesByInstance","_FetchStatusesByInstance","FetchStatusesPageByInstance","_FetchStatusesPageByInstance","HandleGodmodeCheckboxChange","HandleLocalCheckboxChange","HandleFilterChange","HandlePageChange","SetStatus","ADD_VISITED_VIEW","v","assign","ADD_CACHED_VIEW","DEL_VISITED_VIEW","entries","_step$value","slicedToArray_default","splice","DEL_CACHED_VIEW","indexOf","DEL_OTHERS_VISITED_VIEWS","DEL_OTHERS_CACHED_VIEWS","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","DEL_ALL_VISITED_VIEWS","DEL_ALL_CACHED_VIEWS","UPDATE_VISITED_VIEW","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step4","_iterator4","addView","addVisitedView","addCachedView","delView","delVisitedView","delCachedView","delOthersViews","delOthersVisitedViews","delOthersCachedViews","delAllViews","delAllVisitedViews","delAllCachedViews","updateVisitedView","loginByUsername","_loginByUsername","username","password","appsRequest","client_name","random","redirect_uris","origin","scopes","client_id","client_secret","grant_type","getUserInfo","getNodeInfo","_getNodeInfo","getAuthHost","articlePlatform","nodeInfo","SET_CODE","SET_TOKEN","SET_INTRODUCTION","SET_SETTING","SET_NAME","SET_AVATAR","SET_ROLES","SET_ID","SET_AUTH_HOST","SET_NODE_INFO","LoginByUsername","reject","access_token","setToken","setAuthHost","catch","error","GetNodeInfo","_GetNodeInfo","metadata","GetUserInfo","pleroma","is_admin","LogOut","removeToken","removeAuthHost","FedLogOut","LoginByPleromaFE","_LoginByPleromaFE","host","activateUsers","_activateUsers","nicknames","addRight","_addRight","right","createNewAccount","_createNewAccount","deactivateUsers","_deactivateUsers","deleteRight","_deleteRight","deleteUsers","_deleteUsers","disableMfa","_x25","_disableMfa","fetchUser","_x26","_x27","_x28","_fetchUser","fetchUserCredentials","_x29","_x30","_x31","_fetchUserCredentials","updateUserCredentials","_x32","_x33","_x34","_x35","_updateUserCredentials","credentials","fetchUsers","_x36","_x37","_x38","_fetchUsers","filters","_args11","getPasswordResetToken","_x39","_x40","_x41","_getPasswordResetToken","forcePasswordReset","_x42","_x43","_x44","_forcePasswordReset","searchUsers","_x45","_x46","_x47","_x48","_searchUsers","_callee14","_args14","_context14","tagUser","_x49","_x50","_x51","_x52","_tagUser","_callee15","_context15","untagUser","_x53","_x54","_x55","_x56","_untagUser","_callee16","_context16","_callee17","_context17","approveUserAccount","_x61","_x62","_x63","_approveUserAccount","_callee18","_context18","confirmUserEmail","_x64","_x65","_x66","_confirmUserEmail","_callee19","_context19","resendConfirmationEmail","_x67","_x68","_x69","_resendConfirmationEmail","_callee20","_context20","userProfile","statusesLoading","userCredentials","userProfileLoading","SET_STATUSES","SET_STATUSES_LOADING","SET_USER","SET_USER_PROFILE_LOADING","SET_USER_CREDENTIALS","FetchUserProfile","_FetchUserProfile","userResponse","FetchUserStatuses","_x57","_x58","_x59","_x60","_fetchUserStatuses","fetchUserStatuses","FetchUserCredentials","_FetchUserCredentials","SetStatuses","UpdateUserCredentials","_UpdateUserCredentials","searchQuery","totalUsersCount","local","external","active","need_approval","deactivated","passwordResetToken","link","SET_USERS","SWAP_USERS","usersWithoutSwapped","u","updatedUsers","b","localeCompare","SET_COUNT","SET_PAGE_SIZE","SET_PASSWORD_RESET_TOKEN","SET_SEARCH_QUERY","SET_USERS_FILTERS","ActivateUsers","_ActivateUsers","_userId","callApiFn","ApplyChanges","_ApplyChanges","AddRight","_AddRight","_statusId","AddTag","_AddTag","ApproveUsersAccount","_ApproveUsersAccount","approval_pending","ClearUsersState","ClearFilters","_ClearFilters","ConfirmUsersEmail","_ConfirmUsersEmail","confirmation_pending","CreateNewAccount","_CreateNewAccount","DeactivateUsers","_DeactivateUsers","DisableMfa","_DisableMfa","DeleteRight","_DeleteRight","DeleteUsers","_DeleteUsers","usersNicknames","FetchUsers","_FetchUsers","_ref32","_ref33","join","loadUsers","GetPasswordResetToken","_GetPasswordResetToken","_callee21","_ref34","_ref35","_context21","RemovePasswordToken","_ref36","RemoveTag","_RemoveTag","_callee23","_ref37","_ref38","_context23","userTag","_ref39","_callee22","_context22","RequirePasswordReset","_RequirePasswordReset","_callee24","_ref40","_context24","ResendConfirmationEmail","_ResendConfirmationEmail","_callee25","_ref41","_context25","SearchUsers","_SearchUsers","_callee26","_ref42","_ref43","_context26","SuccessMessage","success","ToggleUsersFilter","_ToggleUsersFilter","_callee27","_ref44","defaultFilters","currentFilters","_context27","UpdateActorType","_UpdateActorType","_callee29","_ref45","_ref46","_context29","actor_type","_ref47","_callee28","_context28","_ref48","page_size","Vuex","Store","modules","SvgIcon","requireContext","requireAll","require","config","errorHandler","vm","info","nextTick","console","NProgress","configure","showSpinner","whiteList","pluralize","label","timeAgo","between","Number","numberFormatter","num","digits","si","toFixed","toThousandFilter","beforeEach","from","start","addRoutes","dangerouslyUseHTMLString","permissionRoles","noGoBack","afterEach","Element","productionTip","render","js_cookie__WEBPACK_IMPORTED_MODULE_0__","js_cookie__WEBPACK_IMPORTED_MODULE_0___default","TokenKey","AuthHostKey","remove","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_TagsView_vue_vue_type_style_index_1_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_AppMain_vue_vue_type_style_index_0_id_f852c4f2_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Navbar_vue_vue_type_style_index_0_id_28de7ff2_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","getBooleanValue","getCurrentValue","_path","_babel_runtime_helpers_toArray__WEBPACK_IMPORTED_MODULE_5___default","firstSettingName","restKeys","firstSegment","secondSegment","_keys","element","rest","_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1___default","tuple","tuples","accum","Array","isArray","mascot","_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default","_babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_3___default","parseStringOrTupleValue","parseObject","object","_value$tuple","_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_4___default","socks5","port","_value$split","split","_value$split2","_value$tuple2","prependWithСolon","processNested","valueForState","valueForUpdatedSettings","parentKey","parents","_parents","_parents$","otherParents","updatedValueForState","valueExists","updatedValueForUpdatedSettings","_path2","_keys2","valueIsArrayOfNonObjects","every","currentState","_value","updatedArray","getValueWithoutKey","wrapValues","_settings$setting","mapValue","searchArray","compact","toLowerCase","resultObject","groupKey","groupLabel","search","updatedAcc","parseNestedSettings","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_17178ffc_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","VueI18n","messages","en","dashboard","documentation","guide","pagePermission","directivePermission","icons","componentIndex","markdown","jsonEditor","dndList","splitPane","avatarUpload","dropzone","sticky","countTo","componentMixin","backToTop","dragDialog","dragSelect","dragKanban","charts","keyboardChart","lineChart","mixChart","example","nested","menu1","menu1-1","menu1-2","menu1-2-1","menu1-2-2","menu1-3","menu2","Table","dynamicTable","dragTable","inlineEditTable","complexTable","treeTable","customTreeTable","form","createArticle","editArticle","articleList","errorPages","page401","page404","excel","exportExcel","selectExcel","uploadExcel","zip","pdf","exportZip","theme","clipboardDemo","externalLink","emoji-packs","navbar","logOut","github","login","logIn","logInViaPleromaFE","omitHostname","errorMessage","any","thirdparty","pleromaFELoginFailed","pleromaFELoginSucceed","evict","evictedMessage","evictObjectsHeader","listBannedUrlsHeader","multipleInput","removeSelected","switchRoles","tips","dropzoneTips","stickyTips","backToTopTips1","backToTopTips2","imageUploadTips","table","dynamicTips1","dynamicTips2","dragTips1","dragTips2","importance","remark","export","reviewer","author","readings","edit","publish","draft","cancel","confirm","unfollow","selectedExport","placeholder","change","refresh","close","closeOthers","closeAll","localUsersOnly","unapproved","unconfirmed","activate","deactivate","admin","moderator","moderation","revokeAdmin","grantAdmin","revokeModerator","grantModerator","activateAccount","activateAccounts","deactivateAccount","deactivateAccounts","deleteAccount","deleteAccounts","forceNsfw","stripMedia","forceUnlisted","sandbox","disableRemoteSubscription","disableRemoteSubscriptionForMultiple","disableAnySubscription","disableAnySubscriptionForMultiple","requirePasswordReset","selectUsers","moderateUser","moderateUsers","createAccount","grantRightConfirmation","revokeRightConfirmation","activateMultipleUsersConfirmation","deactivateMultipleUsersConfirmation","deleteUserConfirmation","rejectAccountConfirmation","deleteMultipleUsersConfirmation","addTagForMultipleUsersConfirmation","removeTagFromMultipleUsersConfirmation","requirePasswordResetConfirmation","approveAccountsConfirmation","rejectAccountsConfirmation","confirmAccountsConfirmation","resendEmailConfirmation","mailerMustBeEnabled","ok","completed","canceled","create","submitFormError","emptyEmailError","invalidEmailError","emptyPasswordError","emptyNicknameError","invalidNicknameError","passwordResetTokenCreated","accountCreated","approveAccount","approveAccounts","unapprovedAccount","unconfirmedEmail","confirmAccount","confirmAccounts","rejectAccount","rejectAccounts","resendConfirmation","invalidAccount","invalidNickname","passwordResetTokenGenerated","linkToResetPassword","registrationReason","service","person","instanceFilter","loadMore","noInstances","onlyLocalStatuses","showPrivateStatuses","direct","private","public","unlisted","openStatusInInstance","accountType","actorType","recentStatuses","reason","pending","noStatuses","openAccountInInstance","securitySettings","passwordChangeWarning1","passwordChangeWarning2","passwordLengthNotice","inputNewEmail","inputNewPassword","passwordUpdated","emailUpdated","submit","usersFilter","inputPlaceholder","byAccountType","byStatus","reply","showNotes","newNote","confirmMsg","deleteCompleted","deleteCanceled","noNotes","changeAllReports","changeScope","reopen","resolveAll","reopenAll","addSensitive","removeSensitive","reportOn","reportsOn","actors","reportedStatus","statusDeleted","leaveNote","postNote","notFound","reportsFilter","open","closed","resolved","upload","mailer","linkFormatter","logger","activityPub","auth","captcha","frontend","http","mrf","mediaProxy","gopher","jobQueue","webPush","esshd","rateLimiters","other","follow","followRelay","followedBack","instanceUrl","removeFromDB","successfullyDownloaded","successfullyImported","nowNewPacksToImport","successfullyUpdated","metadatLowerCase","successfullyRemoved","seeDocs","instanceReboot","restartSuccess","removeSettingConfirmation","changeImage","uploadImage","createInviteToken","pickDate","tokenCreated","inviteLink","uses","used","revoke","inviteUserViaEmail","sendRegistration","emailSent","inviteViaEmailAlert","emoji","reloaded","refreshed","importEmojiTooltip","importPacks","refreshLocalPacks","createLocalPack","remoteInstanceAddress","refreshRemote","sharePack","homepage","license","fallbackSrc","fallbackSrcSha","saveMetadata","downloadPack","downloadPackArchive","addNewEmoji","manageEmoji","thisWillDownload","downloadToCurrentInstance","canBeChanged","willBeUsable","downloadAsOptional","downloadSharedPack","downloadSharedPackMobile","optional","uploadFile","clickToUpload","customFilename","customFilenameDesc","localPack","leaveEmptyShortcode","leaveEmptyFilename","update","selectLocalPack","specifyShortcode","specifyFilename","copy","copyToLocalPack","emptyPack","elementEnLocale","zh","thirdpartyTips","elementZhLocale","es","elementEsLocale","oc","locale","_addNewEmojiFile","_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","FormData","trim","addressOfEmojiInPack","_createPack","_deleteEmojiFile","_deletePack","_downloadFrom","timeout","_fetchPack","_importFromFS","_listPacks","_listRemotePacks","_reloadEmoji","_savePackMetadata","_updateEmojiFile","new_shortcode","new_filename","subMenuActiveText","menuHover","subMenuBg","subMenuHover","sideBarWidth","axios__WEBPACK_IMPORTED_MODULE_0__","axios__WEBPACK_IMPORTED_MODULE_0___default","element_ui__WEBPACK_IMPORTED_MODULE_1__","axios","interceptors","edata","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Item_vue_vue_type_style_index_0_id_52140d98_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","element_ui_SvgIconvue_type_script_lang_js_","iconClass","className","iconName","svgClass","_g","aria-hidden","$listeners","xlink:href"],"mappings":"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","file":"static/js/app.1df22cde.js","sourcesContent":["import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-pdf\",\n \"use\": \"icon-pdf-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-people\",\n \"use\": \"icon-people-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-eye-open\",\n \"use\": \"icon-eye-open-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=69c6c5c4&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=69c6c5c4&scoped=true&lang=css&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-exit-fullscreen\",\n \"use\": \"icon-exit-fullscreen-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-nested\",\n \"use\": \"icon-nested-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-theme\",\n \"use\": \"icon-theme-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-form\",\n \"use\": \"icon-form-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-dashboard\",\n \"use\": \"icon-dashboard-usage\",\n \"viewBox\": \"0 0 128 100\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","const isLocalhost = (instanceName) =>\n instanceName.startsWith('localhost:') || instanceName.startsWith('127.0.0.1:')\n\nexport const baseName = (instanceName = 'localhost') => {\n if (instanceName.match(/https?:\\/\\//)) {\n return instanceName\n } else {\n return isLocalhost(instanceName) ? `http://${instanceName}` : `https://${instanceName}`\n }\n}\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-shopping\",\n \"use\": \"icon-shopping-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-bug\",\n \"use\": \"icon-bug-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-international\",\n \"use\": \"icon-international-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-qq\",\n \"use\": \"icon-qq-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-link\",\n \"use\": \"icon-link-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=591d6778&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=591d6778&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=0&id=e1cdb714&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=0&id=e1cdb714&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-guide 2\",\n \"use\": \"icon-guide 2-usage\",\n \"viewBox\": \"0 0 1000 1000\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-language\",\n \"use\": \"icon-language-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-password\",\n \"use\": \"icon-password-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-peoples\",\n \"use\": \"icon-peoples-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-money\",\n \"use\": \"icon-money-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-example\",\n \"use\": \"icon-example-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-list\",\n \"use\": \"icon-list-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-settings\",\n \"use\": \"icon-settings-usage\",\n \"viewBox\": \"0 0 490.2 490.2\",\n \"content\": \"\\r\\n\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-message\",\n \"use\": \"icon-message-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-table\",\n \"use\": \"icon-table-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=style&index=0&id=767d264f&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=style&index=0&id=767d264f&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-eye\",\n \"use\": \"icon-eye-usage\",\n \"viewBox\": \"0 0 128 64\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","var map = {\n\t\"./404.svg\": \"oUrx\",\n\t\"./bug.svg\": \"F3lI\",\n\t\"./chart.svg\": \"yCkv\",\n\t\"./clipboard.svg\": \"vDVG\",\n\t\"./component.svg\": \"VtY+\",\n\t\"./dashboard.svg\": \"94Jb\",\n\t\"./documentation.svg\": \"kPu2\",\n\t\"./drag.svg\": \"m7++\",\n\t\"./edit.svg\": \"qkZ8\",\n\t\"./email.svg\": \"y7eQ\",\n\t\"./example.svg\": \"MMMJ\",\n\t\"./excel.svg\": \"ZZmv\",\n\t\"./exit-fullscreen.svg\": \"28eg\",\n\t\"./eye-open.svg\": \"1+ww\",\n\t\"./eye.svg\": \"TfVu\",\n\t\"./form.svg\": \"6xvN\",\n\t\"./fullscreen.svg\": \"mSHS\",\n\t\"./guide 2.svg\": \"ICep\",\n\t\"./guide.svg\": \"ZoO1\",\n\t\"./icon.svg\": \"nZHn\",\n\t\"./international.svg\": \"F9+T\",\n\t\"./language.svg\": \"JYDz\",\n\t\"./link.svg\": \"GPBF\",\n\t\"./list.svg\": \"MokB\",\n\t\"./lock.svg\": \"qwAt\",\n\t\"./message.svg\": \"R/8a\",\n\t\"./money.svg\": \"MEYL\",\n\t\"./nested.svg\": \"3PhE\",\n\t\"./password.svg\": \"Kj24\",\n\t\"./pdf.svg\": \"+aF5\",\n\t\"./people.svg\": \"0Fbn\",\n\t\"./peoples.svg\": \"LxGF\",\n\t\"./qq.svg\": \"FDDl\",\n\t\"./search.svg\": \"jo2x\",\n\t\"./settings.svg\": \"P8iQ\",\n\t\"./shopping.svg\": \"EqXK\",\n\t\"./size.svg\": \"hkRB\",\n\t\"./star.svg\": \"cIpu\",\n\t\"./tab.svg\": \"j7e1\",\n\t\"./table.svg\": \"R/Hx\",\n\t\"./theme.svg\": \"5TQQ\",\n\t\"./tree.svg\": \"k80C\",\n\t\"./user.svg\": \"s7Vf\",\n\t\"./wechat.svg\": \"gNoN\",\n\t\"./zip.svg\": \"iqZD\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"Uf/o\";","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-component\",\n \"use\": \"icon-component-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../node_modules/babel-loader/lib/index.js?cacheDirectory!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js?cacheDirectory!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=6b42edcf&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"App.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function needReboot(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/need_reboot`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function restartApp(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/restart`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import Cookies from 'js-cookie'\nimport { needReboot, restartApp } from '@/api/app'\n\nconst app = {\n state: {\n sidebar: {\n opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true,\n withoutAnimation: false\n },\n device: 'desktop',\n language: Cookies.get('language') || 'en',\n needReboot: false,\n size: Cookies.get('size') || 'medium',\n invitesEnabled: false\n },\n mutations: {\n TOGGLE_SIDEBAR: state => {\n state.sidebar.opened = !state.sidebar.opened\n state.sidebar.withoutAnimation = false\n if (state.sidebar.opened) {\n Cookies.set('sidebarStatus', 1)\n } else {\n Cookies.set('sidebarStatus', 0)\n }\n },\n CLOSE_SIDEBAR: (state, withoutAnimation) => {\n Cookies.set('sidebarStatus', 0)\n state.sidebar.opened = false\n state.sidebar.withoutAnimation = withoutAnimation\n },\n TOGGLE_DEVICE: (state, device) => {\n state.device = device\n },\n SET_INVITES_ENABLED: (state, invitesEnabled) => {\n state.invitesEnabled = invitesEnabled\n },\n SET_LANGUAGE: (state, language) => {\n state.language = language\n Cookies.set('language', language)\n },\n TOGGLE_REBOOT: (state, needReboot) => {\n state.needReboot = needReboot\n },\n SET_SIZE: (state, size) => {\n state.size = size\n Cookies.set('size', size)\n }\n },\n actions: {\n closeSideBar({ commit }, { withoutAnimation }) {\n commit('CLOSE_SIDEBAR', withoutAnimation)\n },\n async NeedReboot({ commit, getters }) {\n const response = await needReboot(getters.authHost, getters.token)\n commit('TOGGLE_REBOOT', response.data['need_reboot'])\n },\n async RestartApplication({ commit, getters }) {\n await restartApp(getters.authHost, getters.token)\n commit('TOGGLE_REBOOT', false)\n },\n SetInvitesEnabled({ commit }, invitesEnabled) {\n commit('SET_INVITES_ENABLED', invitesEnabled)\n },\n setLanguage({ commit }, language) {\n commit('SET_LANGUAGE', language)\n },\n setSize({ commit }, size) {\n commit('SET_SIZE', size)\n },\n toggleDevice({ commit }, device) {\n commit('TOGGLE_DEVICE', device)\n },\n toggleSideBar({ commit }) {\n commit('TOGGLE_SIDEBAR')\n }\n }\n}\n\nexport default app\n","import {\n addNewEmojiFile,\n createPack,\n deleteEmojiFile,\n deletePack,\n downloadFrom,\n fetchPack,\n importFromFS,\n listPacks,\n listRemotePacks,\n reloadEmoji,\n savePackMetadata,\n updateEmojiFile\n} from '@/api/emojiPacks'\nimport i18n from '@/lang'\nimport { Message } from 'element-ui'\n\nimport Vue from 'vue'\n\nconst emojiPacks = {\n state: {\n activeTab: '',\n currentFilesPage: 1,\n currentPage: 1,\n filesPageSize: 30,\n localPackFilesCount: 0,\n localPacks: {},\n localPacksCount: 0,\n pageSize: 50,\n remoteInstance: '',\n remotePacks: {}\n },\n mutations: {\n SET_ACTIVE_TAB: (state, tab) => {\n state.activeTab = tab\n },\n SET_FILES_COUNT: (state, count) => {\n state.localPackFilesCount = count\n },\n SET_FILES_PAGE: (state, page) => {\n state.currentFilesPage = page\n },\n SET_LOCAL_PACKS: (state, packs) => {\n state.localPacks = packs\n },\n SET_LOCAL_PACKS_COUNT: (state, count) => {\n state.localPacksCount = count\n },\n SET_PACK_FILES: (state, { name, files }) => {\n state.localPacks = { ...state.localPacks, [name]: { ...state.localPacks[name], files }}\n },\n SET_PAGE: (state, page) => {\n state.currentPage = page\n },\n SET_REMOTE_INSTANCE: (state, name) => {\n state.remoteInstance = name\n },\n SET_REMOTE_PACKS: (state, packs) => {\n state.remotePacks = packs\n },\n UPDATE_LOCAL_PACK_VAL: (state, { name, key, value }) => {\n Vue.set(state.localPacks[name]['pack'], key, value)\n },\n UPDATE_LOCAL_PACK_PACK: (state, { name, pack }) => {\n state.localPacks[name]['pack'] = pack\n },\n UPDATE_LOCAL_PACK_FILES: (state, { name, files }) => {\n // Use vue.set in case \"files\" was null\n Vue.set(\n state.localPacks[name],\n 'files',\n files\n )\n }\n },\n actions: {\n async AddNewEmojiFile({ commit, getters }, { packName, file, shortcode, filename }) {\n let result\n try {\n result = await addNewEmojiFile(packName, file, shortcode, filename, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n Message({\n message: `${i18n.t('settings.successfullyUpdated')} ${packName} ${i18n.t('settings.metadatLowerCase')}`,\n type: 'success',\n duration: 5 * 1000\n })\n\n commit('UPDATE_LOCAL_PACK_FILES', { name: packName, files: result.data })\n },\n async DeleteEmojiFile({ commit, dispatch, getters, state }, { packName, shortcode }) {\n const { [shortcode]: value, ...updatedPackFiles } = state.localPacks[packName].files\n commit('UPDATE_LOCAL_PACK_FILES', { name: packName, files: updatedPackFiles })\n\n try {\n await deleteEmojiFile(packName, shortcode, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n Message({\n message: `${i18n.t('settings.successfullyUpdated')} ${packName} ${i18n.t('settings.metadatLowerCase')}`,\n type: 'success',\n duration: 5 * 1000\n })\n if (Object.keys(updatedPackFiles).length === 0 && state.currentFilesPage > 1) {\n dispatch('FetchSinglePack', { name: packName, page: state.currentFilesPage - 1 })\n } else {\n dispatch('FetchSinglePack', { name: packName, page: state.currentFilesPage })\n }\n },\n async CreatePack({ getters }, { name }) {\n await createPack(getters.authHost, getters.token, name)\n },\n async DeletePack({ getters }, { name }) {\n await deletePack(getters.authHost, getters.token, name)\n },\n async DownloadFrom({ getters }, { instanceAddress, packName, as }) {\n const result = await downloadFrom(instanceAddress, packName, as, getters.authHost, getters.token)\n\n if (result.data === 'ok') {\n Message({\n message: `${i18n.t('settings.successfullyDownloaded')} ${packName}`,\n type: 'success',\n duration: 5 * 1000\n })\n }\n },\n async FetchLocalEmojiPacks({ commit, getters, state }, page) {\n const { data } = await listPacks(page, state.pageSize, getters.authHost, getters.token)\n const { packs, count } = data\n const updatedPacks = Object.keys(packs).reduce((acc, packName) => {\n const { files, ...pack } = packs[packName]\n acc[packName] = pack\n return acc\n }, {})\n commit('SET_LOCAL_PACKS', updatedPacks)\n commit('SET_LOCAL_PACKS_COUNT', count)\n commit('SET_PAGE', page)\n },\n async FetchSinglePack({ getters, commit, state }, { name, page }) {\n const { data } = await fetchPack(name, page, state.filesPageSize, getters.authHost, getters.token)\n const { files, files_count } = data\n commit('SET_PACK_FILES', { name, files })\n commit('SET_FILES_COUNT', files_count)\n commit('SET_FILES_PAGE', page)\n },\n async ImportFromFS({ getters }) {\n const result = await importFromFS(getters.authHost, getters.token)\n\n if (result.status === 200) {\n const message = result.data.length > 0\n ? `${i18n.t('settings.successfullyImported')} ${result.data}`\n : i18n.t('settings.nowNewPacksToImport')\n\n Message({\n message,\n type: 'success',\n duration: 5 * 1000\n })\n }\n },\n async ReloadEmoji({ getters }) {\n await reloadEmoji(getters.authHost, getters.token)\n },\n async SavePackMetadata({ commit, getters, state }, { packName }) {\n const result =\n await savePackMetadata(\n getters.authHost,\n getters.token,\n packName,\n state.localPacks[packName]['pack']\n )\n\n if (result.status === 200) {\n Message({\n message: `${i18n.t('settings.successfullyUpdated')} ${packName} ${i18n.t('settings.metadatLowerCase')}`,\n type: 'success',\n duration: 5 * 1000\n })\n\n commit('UPDATE_LOCAL_PACK_PACK', { name: packName, pack: result.data })\n }\n },\n SetActiveTab({ commit }, activeTab) {\n commit('SET_ACTIVE_TAB', activeTab)\n },\n async SetRemoteEmojiPacks({ commit, getters }, { remoteInstance }) {\n const { data } = await listRemotePacks(getters.authHost, getters.token, remoteInstance)\n\n commit('SET_REMOTE_INSTANCE', remoteInstance)\n commit('SET_REMOTE_PACKS', data.packs)\n },\n SetRemoteInstance({ commit }, instance) {\n commit('SET_REMOTE_INSTANCE', instance)\n },\n async UpdateEmojiFile({ commit, dispatch, getters, state }, { packName, shortcode, newShortcode, newFilename, force }) {\n const updatedPackFiles = Object.keys(state.localPacks[packName].files).reduce((acc, el) => {\n if (el === shortcode) {\n acc[newShortcode] = newFilename\n } else {\n acc[el] = state.localPacks[packName].files[el]\n }\n return acc\n }, {})\n commit('UPDATE_LOCAL_PACK_FILES', { name: packName, files: updatedPackFiles })\n\n try {\n await updateEmojiFile(packName, shortcode, newShortcode, newFilename, force, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n Message({\n message: `${i18n.t('settings.successfullyUpdated')} ${packName} ${i18n.t('settings.metadatLowerCase')}`,\n type: 'success',\n duration: 5 * 1000\n })\n\n dispatch('FetchSinglePack', { name: packName, page: state.currentFilesPage })\n },\n async UpdateLocalPackVal({ commit }, args) {\n commit('UPDATE_LOCAL_PACK_VAL', args)\n }\n }\n}\n\nexport default emojiPacks\n","const errorLog = {\n state: {\n logs: []\n },\n mutations: {\n ADD_ERROR_LOG: (state, log) => {\n state.logs.push(log)\n }\n },\n actions: {\n addErrorLog({ commit }, log) {\n commit('ADD_ERROR_LOG', log)\n }\n }\n}\n\nexport default errorLog\n","const getters = {\n sidebar: state => state.app.sidebar,\n language: state => state.app.language,\n size: state => state.app.size,\n device: state => state.app.device,\n visitedViews: state => state.tagsView.visitedViews,\n cachedViews: state => state.tagsView.cachedViews,\n token: state => state.user.token,\n avatar: state => state.user.avatar,\n name: state => state.user.name,\n introduction: state => state.user.introduction,\n status: state => state.user.status,\n roles: state => state.user.roles,\n setting: state => state.user.setting,\n permission_routers: state => state.permission.routers,\n addRouters: state => state.permission.addRouters,\n errorLogs: state => state.errorLog.logs,\n users: state => state.users.fetchedUsers,\n authHost: state => state.user.authHost,\n settings: state => state.settings\n}\nexport default getters\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function generateInviteToken(max_use, expires_at, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/invite_token`,\n method: 'post',\n headers: authHeaders(token),\n data: expires_at && expires_at.length > 0 ? { max_use, expires_at } : { max_use }\n })\n}\n\nexport async function inviteViaEmail(email, name, authHost, token) {\n const data = name.length > 0 ? { email, name } : { email }\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/email_invite',\n method: 'post',\n headers: authHeaders(token),\n data\n })\n}\n\nexport async function listInviteTokens(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/invites`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function revokeToken(tokenToRevoke, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/revoke_invite`,\n method: 'post',\n headers: authHeaders(token),\n data: { token: tokenToRevoke }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { generateInviteToken, inviteViaEmail, listInviteTokens, revokeToken } from '@/api/invites'\nimport { Message } from 'element-ui'\nimport i18n from '@/lang'\n\nconst invites = {\n state: {\n inviteTokens: [],\n loading: false,\n newToken: {}\n },\n mutations: {\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_NEW_TOKEN: (state, token) => {\n state.newToken = token\n },\n SET_TOKENS: (state, tokens) => {\n state.inviteTokens = tokens\n }\n },\n actions: {\n async FetchInviteTokens({ commit, getters }) {\n commit('SET_LOADING', true)\n const response = await listInviteTokens(getters.authHost, getters.token)\n commit('SET_TOKENS', response.data.invites.reverse())\n commit('SET_LOADING', false)\n },\n async GenerateInviteToken({ commit, dispatch, getters }, { maxUse, expiresAt }) {\n try {\n const { data } = await generateInviteToken(maxUse, expiresAt, getters.authHost, getters.token)\n commit('SET_NEW_TOKEN', { token: data.token, maxUse: data.max_use, expiresAt: data.expires_at })\n } catch (_e) {\n return\n }\n dispatch('FetchInviteTokens')\n },\n async InviteUserViaEmail({ commit, dispatch, getters }, { email, name }) {\n try {\n await inviteViaEmail(email, name, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n Message({\n message: i18n.t('invites.emailSent'),\n type: 'success',\n duration: 5 * 1000\n })\n },\n RemoveNewToken({ commit }) {\n commit('SET_NEW_TOKEN', {})\n },\n async RevokeToken({ commit, dispatch, getters }, token) {\n try {\n await revokeToken(token, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n dispatch('FetchInviteTokens')\n }\n }\n}\n\nexport default invites\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function listBannedUrls(page, pageSize, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/media_proxy_caches?page=${page}&page_size=${pageSize}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function purgeUrls(urls, ban, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/media_proxy_caches/purge`,\n method: 'post',\n headers: authHeaders(token),\n data: { urls, ban }\n })\n}\n\nexport async function removeBannedUrls(urls, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/media_proxy_caches/delete`,\n method: 'post',\n headers: authHeaders(token),\n data: { urls }\n })\n}\n\nexport async function searchBannedUrls(query, page, pageSize, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/media_proxy_caches?query=${query}&page=${page}&page_size=${pageSize}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { listBannedUrls, purgeUrls, removeBannedUrls, searchBannedUrls } from '@/api/mediaProxyCache'\nimport { Message } from 'element-ui'\nimport i18n from '@/lang'\n\nconst mediaProxyCache = {\n state: {\n bannedUrls: [],\n currentPage: 1,\n loading: false,\n pageSize: 50,\n totalUrlsCount: 0\n },\n mutations: {\n SET_BANNED_URLS: (state, urls) => {\n state.bannedUrls = urls.map(el => { return { url: el } })\n },\n SET_TOTAL_URLS_COUNT: (state, count) => {\n state.totalUrlsCount = count\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_PAGE: (state, page) => {\n state.currentPage = page\n }\n },\n actions: {\n async ListBannedUrls({ commit, getters, state }, { page }) {\n commit('SET_LOADING', true)\n const response = await listBannedUrls(page, state.pageSize, getters.authHost, getters.token)\n commit('SET_BANNED_URLS', response.data.urls)\n commit('SET_TOTAL_URLS_COUNT', response.data.count)\n commit('SET_PAGE', page)\n commit('SET_LOADING', false)\n },\n async PurgeUrls({ dispatch, getters, state }, { urls, ban }) {\n await purgeUrls(urls, ban, getters.authHost, getters.token)\n Message({\n message: i18n.t('mediaProxyCache.evictedMessage'),\n type: 'success',\n duration: 5 * 1000\n })\n if (ban) {\n dispatch('ListBannedUrls', { page: state.currentPage })\n }\n },\n async RemoveBannedUrls({ dispatch, getters, state }, urls) {\n await removeBannedUrls(urls, getters.authHost, getters.token)\n dispatch('ListBannedUrls', { page: state.currentPage })\n },\n async SearchUrls({ commit, dispatch, getters, state }, { query, page }) {\n if (query.length === 0) {\n commit('SET_SEARCH_QUERY', query)\n dispatch('ListBannedUrls', { page })\n } else {\n commit('SET_LOADING', true)\n commit('SET_SEARCH_QUERY', query)\n\n const response = await searchBannedUrls(query, page, state.pageSize, getters.authHost, getters.token)\n commit('SET_BANNED_URLS', response.data.urls)\n commit('SET_TOTAL_URLS_COUNT', response.data.count)\n commit('SET_PAGE', page)\n commit('SET_LOADING', false)\n }\n }\n }\n}\n\nexport default mediaProxyCache\n","import _ from 'lodash'\n\nimport request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function fetchLog(authHost, token, params, page = 1) {\n const normalizedParams = new URLSearchParams(\n _.omitBy({ ...params, page }, _.isUndefined)\n ).toString()\n\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/moderation_log?${normalizedParams}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchAdmins(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?filters=is_admin`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchModerators(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?filters=is_moderator`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchLog, fetchAdmins, fetchModerators } from '@/api/moderationLog'\n\nconst moderationLog = {\n state: {\n fetchedLog: [],\n logItemsCount: 0,\n admins: [],\n moderators: [],\n logLoading: true,\n adminsLoading: true\n },\n mutations: {\n SET_LOG_LOADING: (state, status) => {\n state.logLoading = status\n },\n SET_ADMINS_LOADING: (state, status) => {\n state.adminsLoading = status\n },\n SET_MODERATION_LOG: (state, log) => {\n state.fetchedLog = log\n },\n SET_MODERATION_LOG_COUNT: (state, count) => {\n state.logItemsCount = count\n },\n SET_ADMINS: (state, admins) => {\n state.admins = admins\n },\n SET_MODERATORS: (state, moderators) => {\n state.moderators = moderators\n }\n },\n actions: {\n async FetchModerationLog({ commit, getters }, opts = {}) {\n const response = await fetchLog(getters.authHost, getters.token, opts)\n\n commit('SET_MODERATION_LOG', response.data.items)\n commit('SET_MODERATION_LOG_COUNT', response.data.total)\n commit('SET_LOG_LOADING', false)\n },\n async FetchAdmins({ commit, getters }) {\n const adminsResponse = await fetchAdmins(getters.authHost, getters.token)\n const moderatorsResponse = await fetchModerators(getters.authHost, getters.token)\n\n commit('SET_ADMINS', adminsResponse.data)\n commit('SET_MODERATORS', moderatorsResponse.data)\n commit('SET_ADMINS_LOADING', false)\n }\n }\n}\n\nexport default moderationLog\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function fetchPeers(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/v1/instance/peers`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchPeers } from '@/api/peers'\n\nconst peers = {\n state: {\n fetchedPeers: [],\n loading: true\n },\n\n mutations: {\n SET_PEERS: (state, peers) => {\n state.fetchedPeers = peers\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n }\n },\n\n actions: {\n async FetchPeers({ commit, getters }) {\n const peers = await fetchPeers(getters.authHost, getters.token)\n\n commit('SET_PEERS', [...peers.data].sort())\n commit('SET_LOADING', false)\n }\n }\n}\n\nexport default peers\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=69c6c5c4&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=69c6c5c4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"69c6c5c4\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"padding\":\"0 15px\"},on:{\"click\":_vm.toggleClick}},[_c('svg',{staticClass:\"hamburger\",class:{'is-active':_vm.isActive},attrs:{\"viewBox\":\"0 0 1024 1024\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"64\",\"height\":\"64\"}},[_c('path',{attrs:{\"d\":\"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z\"}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Navbar.vue?vue&type=template&id=28de7ff2&scoped=true&\"\nimport script from \"./Navbar.vue?vue&type=script&lang=js&\"\nexport * from \"./Navbar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navbar.vue?vue&type=style&index=0&id=28de7ff2&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"28de7ff2\",\n null\n \n)\n\ncomponent.options.__file = \"Navbar.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"navbar\"},[_c('hamburger',{staticClass:\"hamburger-container\",attrs:{\"toggle-click\":_vm.toggleSideBar,\"is-active\":_vm.sidebar.opened}}),_vm._v(\" \"),_c('div',{staticClass:\"right-menu\"},[_c('el-dropdown',{staticClass:\"avatar-container right-menu-item hover-effect\",attrs:{\"trigger\":\"click\"}},[_c('div',{staticClass:\"avatar-wrapper\"},[_c('img',{staticClass:\"user-avatar\",attrs:{\"src\":_vm.avatar+'?imageView2/1/w/80/h/80'}})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',[_c('span',{staticStyle:{\"display\":\"block\"},on:{\"click\":_vm.logout}},[_vm._v(_vm._s(_vm.$t('navbar.logOut')))])])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// translate router.meta.title, be used in breadcrumb sidebar tagsview\nexport function generateTitle(title) {\n const hasKey = this.$te('route.' + title)\n\n if (hasKey) {\n // $t :this method from vue-i18n, inject in @/lang/index.js\n const translatedTitle = this.$t('route.' + title)\n\n return translatedTitle\n }\n return title\n}\n","/**\n * Created by jiachenpan on 16/11/18.\n */\n\nexport function parseTime(time, cFormat) {\n if (arguments.length === 0) {\n return null\n }\n const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n let date\n if (typeof time === 'object') {\n date = time\n } else {\n if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {\n time = parseInt(time)\n }\n if ((typeof time === 'number') && (time.toString().length === 10)) {\n time = time * 1000\n }\n date = new Date(time)\n }\n const formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n }\n const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n let value = formatObj[key]\n // Note: getDay() returns 0 on Sunday\n if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }\n if (result.length > 0 && value < 10) {\n value = '0' + value\n }\n return value || 0\n })\n return time_str\n}\n\nexport function formatTime(time, option) {\n time = +time * 1000\n const d = new Date(time)\n const now = Date.now()\n\n const diff = (now - d) / 1000\n\n if (diff < 30) {\n return '刚刚'\n } else if (diff < 3600) {\n // less 1 hour\n return Math.ceil(diff / 60) + '分钟前'\n } else if (diff < 3600 * 24) {\n return Math.ceil(diff / 3600) + '小时前'\n } else if (diff < 3600 * 24 * 2) {\n return '1天前'\n }\n if (option) {\n return parseTime(time, option)\n } else {\n return (\n d.getMonth() +\n 1 +\n '月' +\n d.getDate() +\n '日' +\n d.getHours() +\n '时' +\n d.getMinutes() +\n '分'\n )\n }\n}\n\n// 格式化时间\nexport function getQueryObject(url) {\n url = url == null ? window.location.href : url\n const search = url.substring(url.lastIndexOf('?') + 1)\n const obj = {}\n const reg = /([^?&=]+)=([^?&=]*)/g\n search.replace(reg, (rs, $1, $2) => {\n const name = decodeURIComponent($1)\n let val = decodeURIComponent($2)\n val = String(val)\n obj[name] = val\n return rs\n })\n return obj\n}\n\n/**\n *get getByteLen\n * @param {Sting} val input value\n * @returns {number} output value\n */\nexport function getByteLen(val) {\n let len = 0\n for (let i = 0; i < val.length; i++) {\n if (val[i].match(/[^\\x00-\\xff]/gi) != null) {\n len += 1\n } else {\n len += 0.5\n }\n }\n return Math.floor(len)\n}\n\nexport function cleanArray(actual) {\n const newArray = []\n for (let i = 0; i < actual.length; i++) {\n if (actual[i]) {\n newArray.push(actual[i])\n }\n }\n return newArray\n}\n\nexport function param(json) {\n if (!json) return ''\n return cleanArray(\n Object.keys(json).map(key => {\n if (json[key] === undefined) return ''\n return encodeURIComponent(key) + '=' + encodeURIComponent(json[key])\n })\n ).join('&')\n}\n\nexport function param2Obj(url) {\n const search = url.split('?')[1]\n if (!search) {\n return {}\n }\n return JSON.parse(\n '{\"' +\n decodeURIComponent(search)\n .replace(/\"/g, '\\\\\"')\n .replace(/&/g, '\",\"')\n .replace(/=/g, '\":\"') +\n '\"}'\n )\n}\n\nexport function html2Text(val) {\n const div = document.createElement('div')\n div.innerHTML = val\n return div.textContent || div.innerText\n}\n\nexport function objectMerge(target, source) {\n /* Merges two objects,\n giving the last one precedence */\n\n if (typeof target !== 'object') {\n target = {}\n }\n if (Array.isArray(source)) {\n return source.slice()\n }\n Object.keys(source).forEach(property => {\n const sourceProperty = source[property]\n if (typeof sourceProperty === 'object') {\n target[property] = objectMerge(target[property], sourceProperty)\n } else {\n target[property] = sourceProperty\n }\n })\n return target\n}\n\nexport function toggleClass(element, className) {\n if (!element || !className) {\n return\n }\n let classString = element.className\n const nameIndex = classString.indexOf(className)\n if (nameIndex === -1) {\n classString += '' + className\n } else {\n classString =\n classString.substr(0, nameIndex) +\n classString.substr(nameIndex + className.length)\n }\n element.className = classString\n}\n\nexport const pickerOptions = [\n {\n text: '今天',\n onClick(picker) {\n const end = new Date()\n const start = new Date(new Date().toDateString())\n end.setTime(start.getTime())\n picker.$emit('pick', [start, end])\n }\n },\n {\n text: '最近一周',\n onClick(picker) {\n const end = new Date(new Date().toDateString())\n const start = new Date()\n start.setTime(end.getTime() - 3600 * 1000 * 24 * 7)\n picker.$emit('pick', [start, end])\n }\n },\n {\n text: '最近一个月',\n onClick(picker) {\n const end = new Date(new Date().toDateString())\n const start = new Date()\n start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)\n picker.$emit('pick', [start, end])\n }\n },\n {\n text: '最近三个月',\n onClick(picker) {\n const end = new Date(new Date().toDateString())\n const start = new Date()\n start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)\n picker.$emit('pick', [start, end])\n }\n }\n]\n\nexport function getTime(type) {\n if (type === 'start') {\n return new Date().getTime() - 3600 * 1000 * 24 * 90\n } else {\n return new Date(new Date().toDateString())\n }\n}\n\nexport function debounce(func, wait, immediate) {\n let timeout, args, context, timestamp, result\n\n const later = function() {\n // 据上一次触发时间间隔\n const last = +new Date() - timestamp\n\n // 上次被包装函数被调用时间间隔last小于设定时间间隔wait\n if (last < wait && last > 0) {\n timeout = setTimeout(later, wait - last)\n } else {\n timeout = null\n // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用\n if (!immediate) {\n result = func.apply(context, args)\n if (!timeout) context = args = null\n }\n }\n }\n\n return function(...args) {\n context = this\n timestamp = +new Date()\n const callNow = immediate && !timeout\n // 如果延时不存在,重新设定延时\n if (!timeout) timeout = setTimeout(later, wait)\n if (callNow) {\n result = func.apply(context, args)\n context = args = null\n }\n\n return result\n }\n}\n\n/**\n * This is just a simple version of deep copy\n * Has a lot of edge cases bug\n * If you want to use a perfect deep copy, use lodash's _.cloneDeep\n */\nexport function deepClone(source) {\n if (!source && typeof source !== 'object') {\n throw new Error('error arguments', 'shallowClone')\n }\n const targetObj = source.constructor === Array ? [] : {}\n Object.keys(source).forEach(keys => {\n if (source[keys] && typeof source[keys] === 'object') {\n targetObj[keys] = deepClone(source[keys])\n } else {\n targetObj[keys] = source[keys]\n }\n })\n return targetObj\n}\n\nexport function uniqueArr(arr) {\n return Array.from(new Set(arr))\n}\n\nexport function isExternal(path) {\n return /^(https?:|mailto:|tel:)/.test(path)\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('svg-icon',{attrs:{\"icon-class\":_vm.icon}}),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"title\"},slot:\"title\"},[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),_c('el-badge',{staticClass:\"count-badge\",attrs:{\"value\":_vm.count,\"type\":\"primary\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Item.vue?vue&type=template&id=52140d98&scoped=true&\"\nimport script from \"./Item.vue?vue&type=script&lang=js&\"\nexport * from \"./Item.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Item.vue?vue&type=style&index=0&id=52140d98&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"52140d98\",\n null\n \n)\n\ncomponent.options.__file = \"Item.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Link.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Link.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Link.vue?vue&type=template&id=4dde2217&\"\nimport script from \"./Link.vue?vue&type=script&lang=js&\"\nexport * from \"./Link.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Link.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('component',_vm._b({},'component',_vm.linkProps(_vm.to),false),[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=script&lang=js&\"","\n\n\n","export default {\n computed: {\n device() {\n return this.$store.state.app.device\n }\n },\n mounted() {\n // In order to fix the click on menu on the ios device will trigger the mouseleave bug\n // https://github.com/PanJiaChen/vue-element-admin/issues/1135\n this.fixBugIniOS()\n },\n methods: {\n fixBugIniOS() {\n const $subMenu = this.$refs.subMenu\n if ($subMenu) {\n const handleMouseleave = $subMenu.handleMouseleave\n $subMenu.handleMouseleave = (e) => {\n if (this.device === 'mobile') {\n return\n }\n handleMouseleave(e)\n }\n }\n }\n }\n}\n","import { render, staticRenderFns } from \"./SidebarItem.vue?vue&type=template&id=20c4709e&\"\nimport script from \"./SidebarItem.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarItem.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SidebarItem.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.item.hidden && _vm.item.children && _vm.invitesEnabled)?_c('div',{staticClass:\"menu-wrapper\"},[(_vm.hasOneShowingChild(_vm.item.children,_vm.item) && (!_vm.onlyOneChild.children||_vm.onlyOneChild.noShowingChildren)&&!_vm.item.alwaysShow)?[_c('app-link',{attrs:{\"to\":_vm.resolvePath(_vm.onlyOneChild.path)}},[_c('el-menu-item',{class:{'submenu-title-noDropdown':!_vm.isNest},attrs:{\"index\":_vm.resolvePath(_vm.onlyOneChild.path)}},[(_vm.onlyOneChild.meta)?_c('item',{attrs:{\"count\":_vm.showCount(_vm.item) ? _vm.normalizedReportsCount : null,\"icon\":_vm.onlyOneChild.meta.icon||_vm.item.meta.icon,\"title\":_vm.generateTitle(_vm.onlyOneChild.meta.title)}}):_vm._e()],1)],1)]:_c('el-submenu',{ref:\"subMenu\",attrs:{\"index\":_vm.resolvePath(_vm.item.path)}},[_c('template',{slot:\"title\"},[(_vm.item.meta)?_c('item',{attrs:{\"count\":_vm.showCount(_vm.item) ? _vm.normalizedReportsCount : null,\"icon\":_vm.item.meta.icon,\"title\":_vm.generateTitle(_vm.item.meta.title)}}):_vm._e()],1),_vm._v(\" \"),_vm._l((_vm.item.children),function(child){return [(!child.hidden)?[(child.children&&child.children.length>0)?_c('sidebar-item',{key:child.path,staticClass:\"nest-menu\",attrs:{\"is-nest\":true,\"item\":child,\"base-path\":_vm.resolvePath(child.path)}}):_c('app-link',{key:child.name,attrs:{\"to\":_vm.resolvePath(child.path)}},[_c('el-menu-item',{attrs:{\"index\":_vm.resolvePath(child.path)}},[(child.meta)?_c('item',{attrs:{\"count\":_vm.showCount(_vm.item) ? _vm.normalizedReportsCount : null,\"icon\":child.meta.icon,\"title\":_vm.generateTitle(child.meta.title)}}):_vm._e()],1)],1)]:_vm._e()]})],2)],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=d15499de&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-scrollbar',{attrs:{\"wrap-class\":\"scrollbar-wrapper\"}},[_c('el-menu',{attrs:{\"default-active\":_vm.$route.path,\"collapse\":_vm.isCollapse,\"background-color\":_vm.variables.menuBg,\"text-color\":_vm.variables.menuText,\"active-text-color\":_vm.variables.menuActiveText,\"mode\":\"vertical\"}},_vm._l((_vm.permission_routers),function(route){return _c('sidebar-item',{key:route.path,attrs:{\"item\":route,\"base-path\":route.path}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=591d6778&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=591d6778&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"591d6778\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-scrollbar',{ref:\"scrollContainer\",staticClass:\"scroll-container\",attrs:{\"vertical\":false},nativeOn:{\"wheel\":function($event){$event.preventDefault();return _vm.handleScroll($event)}}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./TagsView.vue?vue&type=template&id=e1cdb714&scoped=true&\"\nimport script from \"./TagsView.vue?vue&type=script&lang=js&\"\nexport * from \"./TagsView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TagsView.vue?vue&type=style&index=0&id=e1cdb714&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\nimport style1 from \"./TagsView.vue?vue&type=style&index=1&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e1cdb714\",\n null\n \n)\n\ncomponent.options.__file = \"TagsView.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tags-view-container\"},[_c('scroll-pane',{ref:\"scrollPane\",staticClass:\"tags-view-wrapper\"},_vm._l((_vm.visitedViews),function(tag){return _c('router-link',{key:tag.path,ref:\"tag\",refInFor:true,staticClass:\"tags-view-item\",class:_vm.isActive(tag)?'active':'',attrs:{\"to\":{ path: tag.path, query: tag.query, fullPath: tag.fullPath },\"tag\":\"span\"},nativeOn:{\"mouseup\":function($event){if('button' in $event && $event.button !== 1){ return null; }return _vm.closeSelectedTag(tag)},\"contextmenu\":function($event){$event.preventDefault();return _vm.openMenu(tag,$event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.generateTitle(tag.title))+\"\\n \"),(!tag.meta.affix)?_c('span',{staticClass:\"el-icon-close\",on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.closeSelectedTag(tag)}}}):_vm._e()])}),1),_vm._v(\" \"),_c('ul',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"contextmenu\",style:({left:_vm.left+'px',top:_vm.top+'px'})},[_c('li',{on:{\"click\":function($event){return _vm.refreshSelectedTag(_vm.selectedTag)}}},[_vm._v(_vm._s(_vm.$t('tagsView.refresh')))]),_vm._v(\" \"),(!(_vm.selectedTag.meta&&_vm.selectedTag.meta.affix))?_c('li',{on:{\"click\":function($event){return _vm.closeSelectedTag(_vm.selectedTag)}}},[_vm._v(_vm._s(_vm.$t('tagsView.close')))]):_vm._e(),_vm._v(\" \"),_c('li',{on:{\"click\":_vm.closeOthersTags}},[_vm._v(_vm._s(_vm.$t('tagsView.closeOthers')))]),_vm._v(\" \"),_c('li',{on:{\"click\":function($event){return _vm.closeAllTags(_vm.selectedTag)}}},[_vm._v(_vm._s(_vm.$t('tagsView.closeAll')))])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n","import { render, staticRenderFns } from \"./AppMain.vue?vue&type=template&id=f852c4f2&scoped=true&\"\nimport script from \"./AppMain.vue?vue&type=script&lang=js&\"\nexport * from \"./AppMain.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppMain.vue?vue&type=style&index=0&id=f852c4f2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f852c4f2\",\n null\n \n)\n\ncomponent.options.__file = \"AppMain.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"app-main\"},[_c('transition',{attrs:{\"name\":\"fade-transform\",\"mode\":\"out-in\"}},[_c('keep-alive',{attrs:{\"include\":_vm.cachedViews}},[_c('router-view',{key:_vm.key})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import store from '@/store'\n\nconst { body } = document\nconst mobileWidth = 480\nconst tabletWidth = 801\nconst ratio = 3\n\nexport default {\n watch: {\n $route(route) {\n if (this.device === 'mobile' && this.sidebar.opened) {\n store.dispatch('closeSideBar', { withoutAnimation: false })\n }\n }\n },\n beforeMount() {\n window.addEventListener('resize', this.resizeHandler)\n },\n mounted() {\n const isMobile = this.isMobile()\n const isTablet = this.isTablet()\n if (isMobile || isTablet) {\n store.dispatch('toggleDevice', isMobile ? 'mobile' : 'tablet')\n store.dispatch('closeSideBar', { withoutAnimation: true })\n }\n },\n methods: {\n isMobile() {\n const rect = body.getBoundingClientRect()\n return rect.width - ratio < mobileWidth\n },\n isTablet() {\n const rect = body.getBoundingClientRect()\n return rect.width - ratio < tabletWidth && rect.width - ratio > mobileWidth\n },\n resizeHandler() {\n if (!document.hidden) {\n const isMobile = this.isMobile()\n const isTablet = this.isTablet()\n\n if (isMobile || isTablet) {\n store.dispatch('toggleDevice', isMobile ? 'mobile' : 'tablet')\n store.dispatch('closeSideBar', { withoutAnimation: true })\n } else {\n store.dispatch('toggleDevice', 'desktop')\n }\n }\n }\n }\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Layout.vue?vue&type=template&id=767d264f&scoped=true&\"\nimport script from \"./Layout.vue?vue&type=script&lang=js&\"\nexport * from \"./Layout.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Layout.vue?vue&type=style&index=0&id=767d264f&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"767d264f\",\n null\n \n)\n\ncomponent.options.__file = \"Layout.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app-wrapper\",class:_vm.classObj},[(_vm.device==='mobile'&&_vm.sidebar.opened)?_c('div',{staticClass:\"drawer-bg\",on:{\"click\":_vm.handleClickOutside}}):_vm._e(),_vm._v(\" \"),_c('sidebar',{staticClass:\"sidebar-container\"}),_vm._v(\" \"),_c('div',{staticClass:\"main-container\"},[_c('navbar'),_vm._v(\" \"),_c('app-main')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport Router from 'vue-router'\n\nVue.use(Router)\n\n/* Layout */\nimport Layout from '@/views/layout/Layout'\n\nconst disabledFeatures = process.env.DISABLED_FEATURES || []\nconst settingsDisabled = disabledFeatures.includes('settings')\nconst settings = {\n path: '/settings',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/settings/index'),\n name: 'Settings',\n meta: { title: 'settings', icon: 'settings', noCache: true }\n }\n ]\n}\n\nconst statusesDisabled = disabledFeatures.includes('statuses')\nconst statuses = {\n path: '/statuses',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/statuses/index'),\n name: 'Statuses',\n meta: { title: 'statuses', icon: 'form', noCache: true }\n }\n ]\n}\n\nconst reportsDisabled = disabledFeatures.includes('reports')\nconst reports = {\n path: '/reports',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/reports/index'),\n name: 'Reports',\n meta: { title: 'reports', icon: 'documentation', noCache: true }\n }\n ]\n}\n\nconst invitesDisabled = disabledFeatures.includes('invites')\nconst invites = {\n path: '/invites',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/invites/index'),\n name: 'Invites',\n meta: { title: 'invites', icon: 'guide', noCache: true }\n }\n ]\n}\n\nconst emojiPacksDisabled = disabledFeatures.includes('emoji-packs')\nconst emojiPacks = {\n path: '/emoji_packs',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/emojiPacks/index'),\n name: 'Emoji Packs',\n meta: { title: 'emoji-packs', icon: 'eye-open', noCache: true }\n }\n ]\n}\n\nconst moderationLogDisabled = disabledFeatures.includes('moderation-log')\nconst moderationLog = {\n path: '/moderation_log',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/moderation_log/index'),\n name: 'Moderation Log',\n meta: { title: 'moderationLog', icon: 'list', noCache: true }\n }\n ]\n}\n\nconst mediaProxyCacheDisabled = disabledFeatures.includes('media-proxy-cache')\nconst mediaProxyCache = {\n path: '/media_proxy_cache',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/mediaProxyCache/index'),\n name: 'MediaProxy Cache',\n meta: { title: 'mediaProxyCache', icon: 'example', noCache: true }\n }\n ]\n}\n\nexport const constantRouterMap = [\n {\n path: '/redirect',\n component: Layout,\n hidden: true,\n children: [\n {\n path: '/redirect/:path*',\n component: () => import('@/views/redirect/index')\n }\n ]\n },\n {\n path: '/login-pleroma',\n component: () => import('@/views/login/pleroma'),\n hidden: true\n },\n {\n path: '/login',\n component: () => import('@/views/login/index'),\n hidden: true\n },\n {\n path: '/auth-redirect',\n component: () => import('@/views/login/authredirect'),\n hidden: true\n },\n {\n path: '/404',\n component: () => import('@/views/errorPage/404'),\n hidden: true\n },\n {\n path: '/401',\n component: () => import('@/views/errorPage/401'),\n hidden: true\n },\n {\n path: '',\n component: Layout,\n redirect: '/users/index'\n }\n]\n\nexport default new Router({\n // mode: 'history', // require service support\n scrollBehavior: () => ({ y: 0 }),\n routes: constantRouterMap\n})\n\nexport const asyncRouterMap = [\n {\n path: '/users',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/users/index'),\n name: 'Users',\n meta: { title: 'users', icon: 'peoples', noCache: true }\n }\n ]\n },\n ...(statusesDisabled ? [] : [statuses]),\n ...(reportsDisabled ? [] : [reports]),\n ...(invitesDisabled ? [] : [invites]),\n ...(emojiPacksDisabled ? [] : [emojiPacks]),\n ...(moderationLogDisabled ? [] : [moderationLog]),\n ...(mediaProxyCacheDisabled ? [] : [mediaProxyCache]),\n ...(settingsDisabled ? [] : [settings]),\n {\n path: '/users/:id',\n component: Layout,\n children: [\n {\n path: '',\n name: 'UsersShow',\n component: () => import('@/views/users/show')\n }\n ],\n hidden: true\n },\n {\n path: '/statuses/:id',\n component: Layout,\n children: [\n {\n path: '',\n name: 'StatusShow',\n component: () => import('@/views/statuses/show')\n }\n ],\n hidden: true\n },\n { path: '*', redirect: '/404', hidden: true }\n]\n","import { asyncRouterMap, constantRouterMap } from '@/router'\n\n/**\n * 通过meta.role判断是否与当前用户权限匹配\n * @param roles\n * @param route\n */\nfunction hasPermission(roles, route) {\n if (route.meta && route.meta.roles) {\n return roles.some(role => route.meta.roles.includes(role))\n } else {\n return true\n }\n}\n\n/**\n * 递归过滤异步路由表,返回符合用户角色权限的路由表\n * @param routes asyncRouterMap\n * @param roles\n */\nfunction filterAsyncRouter(routes, roles) {\n const res = []\n\n routes.forEach(route => {\n const tmp = { ...route }\n if (hasPermission(roles, tmp)) {\n if (tmp.children) {\n tmp.children = filterAsyncRouter(tmp.children, roles)\n }\n res.push(tmp)\n }\n })\n\n return res\n}\n\nconst permission = {\n state: {\n routers: [],\n addRouters: []\n },\n mutations: {\n SET_ROUTERS: (state, routers) => {\n state.addRouters = routers\n state.routers = constantRouterMap.concat(routers)\n }\n },\n actions: {\n GenerateRoutes({ commit }, data) {\n return new Promise(resolve => {\n const { roles } = data\n let accessedRouters\n if (roles.includes('admin')) {\n accessedRouters = asyncRouterMap\n } else {\n accessedRouters = filterAsyncRouter(asyncRouterMap, roles)\n }\n commit('SET_ROUTERS', accessedRouters)\n resolve()\n })\n }\n }\n}\n\nexport default permission\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function fetchRelays(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/relay',\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function addRelay(relay_url, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/relay',\n method: 'post',\n headers: authHeaders(token),\n data: { relay_url }\n })\n}\n\nexport async function deleteRelay(relay_url, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/relay',\n method: 'delete',\n headers: authHeaders(token),\n data: { relay_url }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchRelays, addRelay, deleteRelay } from '@/api/relays'\n\nconst relays = {\n state: {\n fetchedRelays: [],\n loading: true\n },\n mutations: {\n SET_LOADING: (state, loading) => {\n state.loading = loading\n },\n SET_RELAYS: (state, relays) => {\n state.fetchedRelays = relays\n },\n ADD_RELAY: (state, relay) => {\n state.fetchedRelays = [...state.fetchedRelays, { actor: relay }]\n },\n DELETE_RELAY: (state, relay) => {\n state.fetchedRelays = state.fetchedRelays.filter(fetchedRelay => fetchedRelay.actor !== relay)\n }\n },\n actions: {\n async FetchRelays({ commit, getters }) {\n commit('SET_LOADING', true)\n\n const { data } = await fetchRelays(getters.authHost, getters.token)\n commit('SET_RELAYS', data.relays)\n commit('SET_LOADING', false)\n },\n async AddRelay({ commit, dispatch, getters }, relay) {\n commit('ADD_RELAY', relay)\n\n try {\n await addRelay(relay, getters.authHost, getters.token)\n } catch (_e) {\n return\n } finally {\n dispatch('FetchRelays')\n }\n },\n async DeleteRelay({ commit, dispatch, getters }, relay) {\n commit('DELETE_RELAY', relay)\n\n try {\n await deleteRelay(relay, getters.authHost, getters.token)\n } catch (_e) {\n return\n } finally {\n dispatch('FetchRelays')\n }\n }\n }\n}\n\nexport default relays\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function changeState(reports, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/reports`,\n method: 'patch',\n headers: authHeaders(token),\n data: { reports }\n })\n}\n\nexport async function fetchReports(filter, page, pageSize, authHost, token) {\n const url = filter.length > 0\n ? `/api/pleroma/admin/reports?state=${filter}&page=${page}&page_size=${pageSize}`\n : `/api/pleroma/admin/reports?page=${page}&page_size=${pageSize}`\n return await request({\n baseURL: baseName(authHost),\n url,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function createNote(content, reportID, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/reports/${reportID}/notes`,\n method: `post`,\n headers: authHeaders(token),\n data: { content }\n })\n}\n\nexport async function deleteNote(noteID, reportID, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/reports/${reportID}/notes/${noteID}`,\n method: `delete`,\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { changeState, fetchReports, createNote, deleteNote } from '@/api/reports'\n\nconst reports = {\n state: {\n currentPage: 1,\n fetchedReports: [],\n loading: true,\n openReportsCount: 0,\n pageSize: 50,\n stateFilter: '',\n totalReportsCount: 0\n },\n mutations: {\n SET_LAST_REPORT_ID: (state, id) => {\n state.idOfLastReport = id\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_OPEN_REPORTS_COUNT: (state, total) => {\n state.openReportsCount = total\n },\n SET_PAGE: (state, page) => {\n state.currentPage = page\n },\n SET_REPORTS: (state, reports) => {\n state.fetchedReports = reports\n },\n SET_REPORTS_COUNT: (state, total) => {\n state.totalReportsCount = total\n },\n SET_REPORTS_FILTER: (state, filter) => {\n state.stateFilter = filter\n }\n },\n actions: {\n async ChangeReportState({ commit, dispatch, getters, state }, reportsData) {\n changeState(reportsData, getters.authHost, getters.token)\n\n const updatedReports = state.fetchedReports.map(report => {\n const updatedReportsIds = reportsData.map(({ id }) => id)\n return updatedReportsIds.includes(report.id) ? { ...report, state: reportsData[0].state } : report\n })\n\n commit('SET_REPORTS', updatedReports)\n dispatch('FetchOpenReportsCount')\n },\n ClearFetchedReports({ commit }) {\n commit('SET_REPORTS', [])\n },\n async FetchReports({ commit, getters, state }, page) {\n commit('SET_LOADING', true)\n const { data } = await fetchReports(state.stateFilter, page, state.pageSize, getters.authHost, getters.token)\n\n commit('SET_REPORTS', data.reports)\n commit('SET_REPORTS_COUNT', data.total)\n commit('SET_PAGE', page)\n commit('SET_LOADING', false)\n },\n async FetchOpenReportsCount({ commit, getters, state }) {\n commit('SET_LOADING', true)\n const { data } = await fetchReports('open', state.currentPage, state.pageSize, getters.authHost, getters.token)\n\n commit('SET_OPEN_REPORTS_COUNT', data.total)\n commit('SET_LOADING', false)\n },\n SetReportsFilter({ commit }, filter) {\n commit('SET_REPORTS_FILTER', filter)\n },\n CreateReportNote({ commit, getters, state, rootState }, { content, reportID }) {\n createNote(content, reportID, getters.authHost, getters.token)\n\n const optimisticNote = {\n user: {\n avatar: rootState.user.avatar,\n nickname: rootState.user.name,\n id: rootState.user.id\n },\n content: content,\n created_at: new Date().getTime()\n }\n\n const updatedReports = state.fetchedReports.map(report => {\n if (report.id === reportID) {\n report.notes = [...report.notes, optimisticNote]\n }\n\n return report\n })\n\n commit('SET_REPORTS', updatedReports)\n },\n DeleteReportNote({ commit, getters, state }, { noteID, reportID }) {\n deleteNote(noteID, reportID, getters.authHost, getters.token)\n\n const updatedReports = state.fetchedReports.map(report => {\n if (report.id === reportID) {\n report.notes = report.notes.filter(note => note.id !== noteID)\n }\n\n return report\n })\n\n commit('SET_REPORTS', updatedReports)\n }\n }\n}\n\nexport default reports\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function fetchDescription(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/config/descriptions`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchSettings(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/config`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function updateSettings(configs, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/config`,\n method: 'post',\n headers: authHeaders(token),\n data: { configs }\n })\n}\n\nexport async function removeSettings(configs, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/config`,\n method: 'post',\n headers: authHeaders(token),\n data: { configs }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchDescription, fetchSettings, removeSettings, updateSettings } from '@/api/settings'\nimport { formSearchObject, parseNonTuples, parseTuples, valueHasTuples, wrapUpdatedSettings } from './normalizers'\nimport _ from 'lodash'\n\nconst settings = {\n state: {\n activeTab: 'instance',\n configDisabled: true,\n db: {},\n description: [],\n loading: true,\n searchData: {},\n settings: {},\n updatedSettings: {}\n },\n mutations: {\n CLEAR_UPDATED_SETTINGS: (state) => {\n state.updatedSettings = {}\n },\n REMOVE_SETTING_FROM_UPDATED: (state, { group, key, subkeys }) => {\n if (_.get(state.updatedSettings, [group, key, subkeys[0]])) {\n const { [subkeys[0]]: value, ...updatedSettings } = state.updatedSettings[group][key]\n state.updatedSettings = updatedSettings\n }\n },\n SET_ACTIVE_TAB: (state, tab) => {\n state.activeTab = tab\n },\n SET_DESCRIPTION: (state, data) => {\n state.description = data\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_SEARCH: (state, searchObject) => {\n state.searchData = searchObject\n },\n SET_SETTINGS: (state, data) => {\n const newSettings = data.reduce((acc, { group, key, value }) => {\n const parsedValue = valueHasTuples(key, value)\n ? { value: parseNonTuples(key, value) }\n : parseTuples(value, key)\n acc[group] = acc[group] ? { ...acc[group], [key]: parsedValue } : { [key]: parsedValue }\n return acc\n }, {})\n\n const newDbSettings = data.reduce((acc, { group, key, db }) => {\n if (db) {\n acc[group] = acc[group] ? { ...acc[group], [key]: db } : { [key]: db }\n }\n return acc\n }, {})\n\n state.settings = newSettings\n state.db = newDbSettings\n },\n TOGGLE_TABS: (state, status) => {\n state.configDisabled = status\n },\n UPDATE_SETTINGS: (state, { group, key, input, value, type }) => {\n const updatedSetting = !state.updatedSettings[group] || (key === 'Pleroma.Emails.Mailer' && input === ':adapter')\n ? { [key]: { [input]: [type, value] }}\n : { [key]: { ...state.updatedSettings[group][key], ...{ [input]: [type, value] }}}\n state.updatedSettings[group] = { ...state.updatedSettings[group], ...updatedSetting }\n },\n UPDATE_STATE: (state, { group, key, input, value }) => {\n const updatedState = key === 'Pleroma.Emails.Mailer' && input === ':adapter'\n ? { [key]: { [input]: value }}\n : { [key]: { ...state.settings[group][key], ...{ [input]: value }}}\n state.settings[group] = { ...state.settings[group], ...updatedState }\n }\n },\n actions: {\n async FetchSettings({ commit, getters }) {\n commit('SET_LOADING', true)\n try {\n const response = await fetchSettings(getters.authHost, getters.token)\n const description = await fetchDescription(getters.authHost, getters.token)\n commit('SET_DESCRIPTION', description.data)\n const searchObject = formSearchObject(description.data)\n commit('SET_SEARCH', searchObject)\n commit('SET_SETTINGS', response.data.configs)\n } catch (_e) {\n commit('TOGGLE_TABS', true)\n commit('SET_ACTIVE_TAB', 'relays')\n commit('SET_LOADING', false)\n return\n }\n commit('TOGGLE_TABS', false)\n commit('SET_LOADING', false)\n },\n async RemoveSetting({ commit, getters }, configs) {\n await removeSettings(configs, getters.authHost, getters.token)\n const response = await fetchSettings(getters.authHost, getters.token)\n const { group, key, subkeys } = configs[0]\n commit('SET_SETTINGS', response.data.configs)\n commit('TOGGLE_REBOOT', response.data.need_reboot)\n commit('REMOVE_SETTING_FROM_UPDATED', { group, key, subkeys: subkeys || [] })\n },\n SetActiveTab({ commit }, tab) {\n commit('SET_ACTIVE_TAB', tab)\n },\n async SubmitChanges({ getters, commit, state }) {\n const configs = Object.keys(state.updatedSettings).reduce((acc, group) => {\n return [...acc, ...wrapUpdatedSettings(group, state.updatedSettings[group], state.settings)]\n }, [])\n\n await updateSettings(configs, getters.authHost, getters.token)\n const response = await fetchSettings(getters.authHost, getters.token)\n commit('SET_SETTINGS', response.data.configs)\n commit('TOGGLE_REBOOT', response.data.need_reboot)\n commit('CLEAR_UPDATED_SETTINGS')\n },\n UpdateSettings({ commit }, { group, key, input, value, type }) {\n key\n ? commit('UPDATE_SETTINGS', { group, key, input, value, type })\n : commit('UPDATE_SETTINGS', { group, key: input, input: '_value', value, type })\n },\n async UpdateState({ commit, getters, state }, { group, key, input, value }) {\n if (key === 'Pleroma.Emails.Mailer' && input === ':adapter') {\n const subkeys = Object.keys(state.settings[group][key]).filter(el => el !== ':adapter')\n await removeSettings([{ group, key, delete: true, subkeys }], getters.authHost, getters.token)\n } else if (key === 'Pleroma.Upload' && input === ':uploader') {\n const deletedKey = value === 'Pleroma.Uploaders.Local' ? 'Pleroma.Uploaders.S3' : 'Pleroma.Uploaders.Local'\n await removeSettings([{ group, key: deletedKey, delete: true }], getters.authHost, getters.token)\n }\n key\n ? commit('UPDATE_STATE', { group, key, input, value })\n : commit('UPDATE_STATE', { group, key: input, input: 'value', value })\n }\n }\n}\n\nexport default settings\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function changeStatusScope(id, sensitive, visibility, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/statuses/${id}`,\n method: 'put',\n headers: authHeaders(token),\n data: { sensitive, visibility }\n })\n}\n\nexport async function deleteStatus(id, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/statuses/${id}`,\n method: 'delete',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchStatus(id, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/statuses/${id}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchStatuses({ godmode, localOnly, authHost, token, pageSize, page }) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/statuses?godmode=${godmode}&local_only=${localOnly}&page=${page}&page_size=${pageSize}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchStatusesCount(instance, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: instance ? `/api/pleroma/admin/stats?instance=${instance}` : `/api/pleroma/admin/stats`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchStatusesByInstance({ instance, authHost, token, pageSize, page }) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/instances/${instance}/statuses?page=${page}&page_size=${pageSize}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { changeStatusScope, deleteStatus, fetchStatus, fetchStatuses, fetchStatusesCount, fetchStatusesByInstance } from '@/api/status'\n\nconst status = {\n state: {\n fetchedStatus: {},\n fetchedStatuses: [],\n loading: false,\n statusAuthor: {},\n statusesByInstance: {\n selectedInstance: '',\n showLocal: false,\n showPrivate: false,\n page: 1,\n pageSize: 20,\n buttonLoading: false,\n allLoaded: false\n },\n statusVisibility: {}\n },\n mutations: {\n CHANGE_GODMODE_CHECKBOX_VALUE: (state, value) => {\n state.statusesByInstance.showPrivate = value\n },\n CHANGE_LOCAL_CHECKBOX_VALUE: (state, value) => {\n state.statusesByInstance.showLocal = value\n },\n CHANGE_PAGE: (state, page) => {\n state.statusesByInstance.page = page\n },\n CHANGE_SELECTED_INSTANCE: (state, instance) => {\n state.statusesByInstance.selectedInstance = instance\n },\n SET_STATUS: (state, status) => {\n state.fetchedStatus = status\n },\n SET_STATUSES_BY_INSTANCE: (state, statuses) => {\n state.fetchedStatuses = statuses\n },\n PUSH_STATUSES: (state, statuses) => {\n state.fetchedStatuses = [...state.fetchedStatuses, ...statuses]\n },\n SET_ALL_LOADED: (state, status) => {\n state.statusesByInstance.allLoaded = status\n },\n SET_BUTTON_LOADING: (state, status) => {\n state.statusesByInstance.buttonLoading = status\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_STATUS_VISIBILITY: (state, visibility) => {\n state.statusVisibility = visibility\n },\n SET_STATUS_AUTHOR: (state, user) => {\n state.statusAuthor = user\n }\n },\n actions: {\n async ChangeStatusScope({ dispatch, getters }, { statusId, isSensitive, visibility, reportCurrentPage, userId, godmode, fetchStatusesByInstance }) {\n await changeStatusScope(statusId, isSensitive, visibility, getters.authHost, getters.token)\n if (reportCurrentPage !== 0) { // called from Reports\n dispatch('FetchReports', reportCurrentPage)\n } else if (userId.length > 0) { // called from User profile\n dispatch('FetchUserStatuses', { userId, godmode })\n } else if (fetchStatusesByInstance) { // called from Statuses by Instance\n dispatch('FetchStatusesByInstance')\n } else { // called from Status show page\n dispatch('FetchStatusAfterUserModeration', statusId)\n }\n },\n ClearState({ commit }) {\n commit('CHANGE_SELECTED_INSTANCE', '')\n commit('SET_STATUSES_BY_INSTANCE', [])\n commit('CHANGE_LOCAL_CHECKBOX_VALUE', false)\n commit('CHANGE_GODMODE_CHECKBOX_VALUE', false)\n commit('SET_ALL_LOADED', false)\n commit('CHANGE_PAGE', 1)\n },\n async DeleteStatus({ dispatch, getters }, { statusId, reportCurrentPage, userId, godmode, fetchStatusesByInstance }) {\n await deleteStatus(statusId, getters.authHost, getters.token)\n if (reportCurrentPage !== 0) { // called from Reports\n dispatch('FetchReports', reportCurrentPage)\n } else if (userId.length > 0) { // called from User profile\n dispatch('FetchUserStatuses', { userId, godmode })\n } else if (fetchStatusesByInstance) { // called from Statuses by Instance\n dispatch('FetchStatusesByInstance')\n }\n },\n async FetchStatus({ commit, dispatch, getters, state }, id) {\n commit('SET_LOADING', true)\n const status = await fetchStatus(id, getters.authHost, getters.token)\n\n commit('SET_STATUS', status.data)\n commit('SET_STATUS_AUTHOR', status.data.account)\n commit('SET_LOADING', false)\n dispatch('FetchUserStatuses', { userId: state.fetchedStatus.account.id, godmode: false })\n },\n FetchStatusAfterUserModeration({ commit, dispatch, getters, state }, id) {\n commit('SET_LOADING', true)\n fetchStatus(id, getters.authHost, getters.token)\n .then(status => dispatch('SetStatus', status.data))\n commit('SET_LOADING', false)\n },\n async FetchStatusesCount({ commit, getters }, instance) {\n commit('SET_LOADING', true)\n const { data } = await fetchStatusesCount(instance, getters.authHost, getters.token)\n commit('SET_STATUS_VISIBILITY', data.status_visibility)\n commit('SET_LOADING', false)\n },\n async FetchStatusesByInstance({ commit, dispatch, getters, state, rootState }) {\n commit('SET_LOADING', true)\n dispatch('FetchStatusesCount', state.statusesByInstance.selectedInstance)\n if (state.statusesByInstance.selectedInstance === '') {\n commit('SET_STATUSES_BY_INSTANCE', [])\n } else {\n const statuses = state.statusesByInstance.selectedInstance === rootState.user.authHost\n ? await fetchStatuses(\n {\n godmode: state.statusesByInstance.showPrivate,\n localOnly: state.statusesByInstance.showLocal,\n authHost: getters.authHost,\n token: getters.token,\n pageSize: state.statusesByInstance.pageSize,\n page: state.statusesByInstance.page\n })\n : await fetchStatusesByInstance(\n {\n instance: state.statusesByInstance.selectedInstance,\n authHost: getters.authHost,\n token: getters.token,\n pageSize: state.statusesByInstance.pageSize,\n page: state.statusesByInstance.page\n })\n commit('SET_STATUSES_BY_INSTANCE', statuses.data)\n if (statuses.data.length < state.statusesByInstance.pageSize) {\n commit('SET_ALL_LOADED', true)\n }\n }\n commit('SET_LOADING', false)\n },\n async FetchStatusesPageByInstance({ commit, getters, rootState, state }) {\n commit('SET_BUTTON_LOADING', true)\n const statuses = state.statusesByInstance.selectedInstance === rootState.user.authHost\n ? await fetchStatuses(\n {\n godmode: state.statusesByInstance.showPrivate,\n localOnly: state.statusesByInstance.showLocal,\n authHost: getters.authHost,\n token: getters.token,\n pageSize: state.statusesByInstance.pageSize,\n page: state.statusesByInstance.page\n })\n : await fetchStatusesByInstance(\n {\n instance: state.statusesByInstance.selectedInstance,\n authHost: getters.authHost,\n token: getters.token,\n pageSize: state.statusesByInstance.pageSize,\n page: state.statusesByInstance.page\n })\n commit('PUSH_STATUSES', statuses.data)\n commit('SET_BUTTON_LOADING', false)\n if (statuses.data.length < state.statusesByInstance.pageSize) {\n commit('SET_ALL_LOADED', true)\n }\n },\n HandleGodmodeCheckboxChange({ commit, dispatch }, value) {\n dispatch('HandlePageChange', 1)\n commit('SET_ALL_LOADED', false)\n\n commit('CHANGE_GODMODE_CHECKBOX_VALUE', value)\n dispatch('FetchStatusesByInstance')\n },\n HandleLocalCheckboxChange({ commit, dispatch }, value) {\n dispatch('HandlePageChange', 1)\n commit('SET_ALL_LOADED', false)\n\n commit('CHANGE_LOCAL_CHECKBOX_VALUE', value)\n dispatch('FetchStatusesByInstance')\n },\n HandleFilterChange({ commit }, instance) {\n commit('CHANGE_SELECTED_INSTANCE', instance)\n commit('SET_ALL_LOADED', false)\n },\n HandlePageChange({ commit }, page) {\n commit('CHANGE_PAGE', page)\n },\n SetStatus({ commit }, status) {\n commit('SET_STATUS', status)\n commit('SET_STATUS_AUTHOR', status.account)\n }\n }\n}\n\nexport default status\n","const tagsView = {\n state: {\n visitedViews: [],\n cachedViews: []\n },\n mutations: {\n ADD_VISITED_VIEW: (state, view) => {\n if (state.visitedViews.some(v => v.path === view.path)) return\n state.visitedViews.push(\n Object.assign({}, view, {\n title: view.meta.title || 'no-name'\n })\n )\n },\n ADD_CACHED_VIEW: (state, view) => {\n if (state.cachedViews.includes(view.name)) return\n if (!view.meta.noCache) {\n state.cachedViews.push(view.name)\n }\n },\n\n DEL_VISITED_VIEW: (state, view) => {\n for (const [i, v] of state.visitedViews.entries()) {\n if (v.path === view.path) {\n state.visitedViews.splice(i, 1)\n break\n }\n }\n },\n DEL_CACHED_VIEW: (state, view) => {\n for (const i of state.cachedViews) {\n if (i === view.name) {\n const index = state.cachedViews.indexOf(i)\n state.cachedViews.splice(index, 1)\n break\n }\n }\n },\n\n DEL_OTHERS_VISITED_VIEWS: (state, view) => {\n state.visitedViews = state.visitedViews.filter(v => {\n return v.meta.affix || v.path === view.path\n })\n },\n DEL_OTHERS_CACHED_VIEWS: (state, view) => {\n for (const i of state.cachedViews) {\n if (i === view.name) {\n const index = state.cachedViews.indexOf(i)\n state.cachedViews = state.cachedViews.slice(index, index + 1)\n break\n }\n }\n },\n\n DEL_ALL_VISITED_VIEWS: state => {\n // keep affix tags\n const affixTags = state.visitedViews.filter(tag => tag.meta.affix)\n state.visitedViews = affixTags\n },\n DEL_ALL_CACHED_VIEWS: state => {\n state.cachedViews = []\n },\n\n UPDATE_VISITED_VIEW: (state, view) => {\n for (let v of state.visitedViews) {\n if (v.path === view.path) {\n v = Object.assign(v, view)\n break\n }\n }\n }\n\n },\n actions: {\n addView({ dispatch }, view) {\n dispatch('addVisitedView', view)\n dispatch('addCachedView', view)\n },\n addVisitedView({ commit }, view) {\n commit('ADD_VISITED_VIEW', view)\n },\n addCachedView({ commit }, view) {\n commit('ADD_CACHED_VIEW', view)\n },\n\n delView({ dispatch, state }, view) {\n return new Promise(resolve => {\n dispatch('delVisitedView', view)\n dispatch('delCachedView', view)\n resolve({\n visitedViews: [...state.visitedViews],\n cachedViews: [...state.cachedViews]\n })\n })\n },\n delVisitedView({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_VISITED_VIEW', view)\n resolve([...state.visitedViews])\n })\n },\n delCachedView({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_CACHED_VIEW', view)\n resolve([...state.cachedViews])\n })\n },\n\n delOthersViews({ dispatch, state }, view) {\n return new Promise(resolve => {\n dispatch('delOthersVisitedViews', view)\n dispatch('delOthersCachedViews', view)\n resolve({\n visitedViews: [...state.visitedViews],\n cachedViews: [...state.cachedViews]\n })\n })\n },\n delOthersVisitedViews({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_OTHERS_VISITED_VIEWS', view)\n resolve([...state.visitedViews])\n })\n },\n delOthersCachedViews({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_OTHERS_CACHED_VIEWS', view)\n resolve([...state.cachedViews])\n })\n },\n\n delAllViews({ dispatch, state }, view) {\n return new Promise(resolve => {\n dispatch('delAllVisitedViews', view)\n dispatch('delAllCachedViews', view)\n resolve({\n visitedViews: [...state.visitedViews],\n cachedViews: [...state.cachedViews]\n })\n })\n },\n delAllVisitedViews({ commit, state }) {\n return new Promise(resolve => {\n commit('DEL_ALL_VISITED_VIEWS')\n resolve([...state.visitedViews])\n })\n },\n delAllCachedViews({ commit, state }) {\n return new Promise(resolve => {\n commit('DEL_ALL_CACHED_VIEWS')\n resolve([...state.cachedViews])\n })\n },\n\n updateVisitedView({ commit }, view) {\n commit('UPDATE_VISITED_VIEW', view)\n }\n }\n}\n\nexport default tagsView\n","import request from '@/utils/request'\nimport { baseName } from './utils'\n\nexport async function loginByUsername(username, password, authHost) {\n const appsRequest = await request({\n baseURL: baseName(authHost),\n url: '/api/v1/apps',\n method: 'post',\n data: {\n client_name: `AdminFE_${Math.random()}`,\n redirect_uris: `${window.location.origin}/oauth-callback`,\n scopes: 'read write follow push admin'\n }\n })\n\n const app = appsRequest.data\n\n return request({\n baseURL: baseName(authHost),\n url: '/oauth/token',\n method: 'post',\n data: {\n client_id: app.client_id,\n client_secret: app.client_secret,\n grant_type: 'password',\n username: username,\n password: password\n }\n })\n}\n\nexport function getUserInfo(token, authHost) {\n return request({\n baseURL: baseName(authHost),\n url: '/api/v1/accounts/verify_credentials',\n method: 'get',\n headers: token ? { 'Authorization': `Bearer ${token}` } : {}\n })\n}\n\nconst oauth = { loginByUsername, getUserInfo }\n\nexport default oauth\n","import request from '@/utils/request'\nimport { baseName } from './utils'\n\nexport async function getNodeInfo(authHost) {\n return await request({\n baseURL: baseName(authHost),\n url: `/nodeinfo/2.0.json`,\n method: 'get'\n })\n}\n","import { loginByUsername, getUserInfo } from '@/api/login'\nimport { getNodeInfo } from '@/api/nodeInfo'\nimport { getToken, setToken, removeToken, getAuthHost, setAuthHost, removeAuthHost } from '@/utils/auth'\n\nconst user = {\n state: {\n user: '',\n id: '',\n status: '',\n code: '',\n token: getToken(),\n authHost: getAuthHost(),\n name: '',\n avatar: '',\n introduction: '',\n roles: [],\n setting: {\n articlePlatform: []\n },\n nodeInfo: {}\n },\n\n mutations: {\n SET_CODE: (state, code) => {\n state.code = code\n },\n SET_TOKEN: (state, token) => {\n state.token = token\n },\n SET_INTRODUCTION: (state, introduction) => {\n state.introduction = introduction\n },\n SET_SETTING: (state, setting) => {\n state.setting = setting\n },\n SET_STATUS: (state, status) => {\n state.status = status\n },\n SET_NAME: (state, name) => {\n state.name = name\n },\n SET_AVATAR: (state, avatar) => {\n state.avatar = avatar\n },\n SET_ROLES: (state, roles) => {\n state.roles = roles\n },\n SET_ID: (state, id) => {\n state.id = id\n },\n SET_AUTH_HOST: (state, authHost) => {\n state.authHost = authHost\n },\n SET_NODE_INFO: (state, nodeInfo) => {\n state.nodeInfo = nodeInfo\n }\n },\n\n actions: {\n LoginByUsername({ commit, dispatch }, { username, authHost, password }) {\n return new Promise((resolve, reject) => {\n loginByUsername(username, password, authHost).then(response => {\n const data = response.data\n commit('SET_TOKEN', data.access_token)\n commit('SET_AUTH_HOST', authHost)\n setToken(data.access_token)\n setAuthHost(authHost)\n resolve()\n }).catch(error => {\n dispatch('addErrorLog', { message: error.message })\n reject(error)\n })\n })\n },\n async GetNodeInfo({ commit, dispatch, state }) {\n const nodeInfo = await getNodeInfo(state.authHost)\n\n commit('SET_NODE_INFO', nodeInfo.data)\n dispatch('SetInvitesEnabled', nodeInfo.data.metadata.invitesEnabled)\n },\n GetUserInfo({ commit, state }) {\n return new Promise((resolve, reject) => {\n getUserInfo(state.token, state.authHost).then(response => {\n const data = response.data\n const message = 'This user doesn\\`t have admin rights. Try another credentials or see the ' +\n 'docs' +\n ' to find out how to make this user an admin'\n\n if (!data) {\n reject('Verification failed, please login again.')\n }\n\n if (data.pleroma && data.pleroma.is_admin) {\n commit('SET_ROLES', ['admin'])\n } else {\n reject(message)\n }\n\n commit('SET_NAME', data.username)\n commit('SET_ID', data.id)\n commit('SET_AVATAR', data.avatar)\n commit('SET_INTRODUCTION', '')\n resolve(response)\n }).catch(error => {\n reject(error)\n })\n })\n },\n LogOut({ commit }) {\n commit('SET_TOKEN', '')\n commit('SET_ROLES', [])\n removeToken()\n removeAuthHost()\n },\n FedLogOut({ commit }) {\n return new Promise(resolve => {\n commit('SET_TOKEN', '')\n removeToken()\n removeAuthHost()\n resolve()\n })\n },\n async LoginByPleromaFE({ commit, dispatch }, { token }) {\n commit('SET_TOKEN', token)\n setToken(token)\n commit('SET_AUTH_HOST', window.location.host)\n setAuthHost(window.location.host)\n\n dispatch('GetUserInfo')\n }\n }\n}\n\nexport default user\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function activateUsers(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/activate`,\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function addRight(nicknames, right, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/permission_group/${right}`,\n method: 'post',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function createNewAccount(nickname, email, password, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users',\n method: 'post',\n headers: authHeaders(token),\n data: { users: [{ nickname, email, password }] }\n })\n}\n\nexport async function deactivateUsers(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/deactivate`,\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function deleteRight(nicknames, right, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/permission_group/${right}`,\n method: 'delete',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function deleteUsers(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users`,\n method: 'delete',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function disableMfa(nickname, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/disable_mfa`,\n method: 'put',\n headers: authHeaders(token),\n data: { nickname }\n })\n}\n\nexport async function fetchUser(id, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${id}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchUserCredentials(nickname, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${nickname}/credentials`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function updateUserCredentials(nickname, credentials, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${nickname}/credentials`,\n method: 'patch',\n headers: authHeaders(token),\n data: credentials\n })\n}\n\nexport async function fetchUsers(filters, authHost, token, page = 1) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?page=${page}&filters=${filters}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function getPasswordResetToken(nickname, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${nickname}/password_reset`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function forcePasswordReset(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/force_password_reset`,\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function searchUsers(query, filters, authHost, token, page = 1) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?query=${query}&page=${page}&filters=${filters}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function tagUser(nicknames, tags, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/tag',\n method: 'put',\n headers: authHeaders(token),\n data: { nicknames, tags }\n })\n}\n\nexport async function untagUser(nicknames, tags, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/tag',\n method: 'delete',\n headers: authHeaders(token),\n data: { nicknames, tags }\n })\n}\n\nexport async function fetchUserStatuses(id, authHost, godmode, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${id}/statuses?godmode=${godmode}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function approveUserAccount(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/approve',\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function confirmUserEmail(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/confirm_email',\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function resendConfirmationEmail(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/resend_confirmation_email',\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchUser, fetchUserStatuses, fetchUserCredentials, updateUserCredentials } from '@/api/users'\n\nconst userProfile = {\n state: {\n statuses: [],\n statusesLoading: true,\n user: {},\n userCredentials: {},\n userProfileLoading: true\n },\n mutations: {\n SET_STATUSES: (state, statuses) => {\n state.statuses = statuses\n },\n SET_STATUSES_LOADING: (state, status) => {\n state.statusesLoading = status\n },\n SET_USER: (state, user) => {\n state.user = user\n },\n SET_USER_PROFILE_LOADING: (state, status) => {\n state.userProfileLoading = status\n },\n SET_USER_CREDENTIALS: (state, userCredentials) => {\n state.userCredentials = userCredentials\n }\n },\n actions: {\n async FetchUserProfile({ commit, dispatch, getters }, { userId, godmode }) {\n commit('SET_USER_PROFILE_LOADING', true)\n\n const userResponse = await fetchUser(userId, getters.authHost, getters.token)\n commit('SET_USER', userResponse.data)\n commit('SET_USER_PROFILE_LOADING', false)\n\n dispatch('FetchUserStatuses', { userId, godmode })\n },\n FetchUserStatuses({ commit, dispatch, getters }, { userId, godmode }) {\n commit('SET_STATUSES_LOADING', true)\n\n fetchUserStatuses(userId, getters.authHost, godmode, getters.token)\n .then(statuses => dispatch('SetStatuses', statuses.data))\n\n commit('SET_STATUSES_LOADING', false)\n },\n async FetchUserCredentials({ commit, getters }, { nickname }) {\n const userResponse = await fetchUserCredentials(nickname, getters.authHost, getters.token)\n commit('SET_USER_CREDENTIALS', userResponse.data)\n },\n SetStatuses({ commit }, statuses) {\n commit('SET_STATUSES', statuses)\n },\n async UpdateUserCredentials({ dispatch, getters }, { nickname, credentials }) {\n await updateUserCredentials(nickname, credentials, getters.authHost, getters.token)\n dispatch('FetchUserCredentials', { nickname })\n }\n }\n}\n\nexport default userProfile\n","import { Message } from 'element-ui'\nimport i18n from '@/lang'\nimport {\n activateUsers,\n addRight,\n createNewAccount,\n deactivateUsers,\n deleteRight,\n deleteUsers,\n disableMfa,\n fetchUsers,\n getPasswordResetToken,\n searchUsers,\n tagUser,\n untagUser,\n forcePasswordReset,\n approveUserAccount,\n confirmUserEmail,\n resendConfirmationEmail,\n updateUserCredentials\n} from '@/api/users'\n\nconst users = {\n state: {\n fetchedUsers: [],\n loading: true,\n searchQuery: '',\n totalUsersCount: 0,\n currentPage: 1,\n pageSize: 50,\n filters: {\n local: false,\n external: false,\n active: false,\n need_approval: false,\n deactivated: false\n },\n passwordResetToken: {\n token: '',\n link: ''\n }\n },\n mutations: {\n SET_USERS: (state, users) => {\n state.fetchedUsers = users\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SWAP_USERS: (state, users) => {\n const usersWithoutSwapped = users.reduce((acc, user) => {\n return acc.filter(u => u.id !== user.id)\n }, state.fetchedUsers)\n\n if (state.fetchedUsers.length === 0) {\n return\n }\n\n const updatedUsers = [...usersWithoutSwapped, ...users]\n state.fetchedUsers = updatedUsers\n .filter(user => user.nickname && user.id)\n .sort((a, b) => a.nickname.localeCompare(b.nickname))\n .concat(updatedUsers.filter(user => !user.nickname || !user.id))\n },\n SET_COUNT: (state, count) => {\n state.totalUsersCount = count\n },\n SET_PAGE: (state, page) => {\n state.currentPage = page\n },\n SET_PAGE_SIZE: (state, pageSize) => {\n state.pageSize = pageSize\n },\n SET_PASSWORD_RESET_TOKEN: (state, { token, link }) => {\n state.passwordResetToken.token = token\n state.passwordResetToken.link = link\n },\n SET_SEARCH_QUERY: (state, query) => {\n state.searchQuery = query\n },\n SET_USERS_FILTERS: (state, filters) => {\n state.filters = filters\n }\n },\n actions: {\n async ActivateUsers({ dispatch, getters }, { users, _userId }) {\n const updatedUsers = users.map(user => {\n return { ...user, deactivated: false }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await activateUsers(nicknames, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId })\n },\n async ApplyChanges({ commit, dispatch, state }, { updatedUsers, callApiFn, userId, statusId }) {\n commit('SWAP_USERS', updatedUsers)\n\n try {\n await callApiFn()\n } catch (_e) {\n return\n } finally {\n dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage })\n }\n if (statusId) {\n dispatch('FetchStatusAfterUserModeration', statusId)\n } else if (userId) {\n dispatch('FetchUserProfile', { userId, godmode: false })\n }\n dispatch('SuccessMessage')\n },\n async AddRight({ dispatch, getters }, { users, right, _userId, _statusId }) {\n const updatedUsers = users.map(user => {\n return user.local ? { ...user, roles: { ...user.roles, [right]: true }} : user\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await addRight(nicknames, right, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n },\n async AddTag({ dispatch, getters }, { users, tag, _userId, _statusId }) {\n const updatedUsers = users.map(user => {\n return { ...user, tags: [...user.tags, tag] }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await tagUser(nicknames, [tag], getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n },\n async ApproveUsersAccount({ dispatch, getters }, { users, _userId, _statusId }) {\n const updatedUsers = users.map(user => {\n return { ...user, approval_pending: false }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await approveUserAccount(nicknames, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n },\n ClearUsersState({ commit }) {\n commit('SET_SEARCH_QUERY', '')\n commit('SET_USERS_FILTERS', { local: false, external: false, active: false, need_approval: false, deactivated: false })\n },\n async ClearFilters({ commit, dispatch, state }) {\n commit('CLEAR_USERS_FILTERS')\n dispatch('SearchUsers', { query: state.searchQuery, page: 1 })\n },\n async ConfirmUsersEmail({ dispatch, getters }, { users, _userId, _statusId }) {\n const updatedUsers = users.map(user => {\n return { ...user, confirmation_pending: false }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await confirmUserEmail(nicknames, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n },\n async CreateNewAccount({ dispatch, getters, state }, { nickname, email, password }) {\n try {\n await createNewAccount(nickname, email, password, getters.authHost, getters.token)\n } catch (_e) {\n return\n } finally {\n dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage })\n }\n dispatch('SuccessMessage')\n },\n async DeactivateUsers({ dispatch, getters }, { users, _userId }) {\n const updatedUsers = users.map(user => {\n return { ...user, deactivated: true }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await deactivateUsers(nicknames, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId })\n },\n async DisableMfa({ dispatch, getters }, nickname) {\n try {\n await disableMfa(nickname, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n dispatch('SuccessMessage')\n },\n async DeleteRight({ dispatch, getters }, { users, right, _userId, _statusId }) {\n const updatedUsers = users.map(user => {\n return user.local ? { ...user, roles: { ...user.roles, [right]: false }} : user\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await deleteRight(nicknames, right, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n },\n async DeleteUsers({ commit, dispatch, getters, state }, { users, _userId }) {\n const usersNicknames = users.map(user => user.nickname)\n try {\n await deleteUsers(usersNicknames, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n const updatedUsers = users.map(user => {\n return { ...user, deactivated: true }\n })\n commit('SWAP_USERS', updatedUsers)\n\n if (_userId) {\n dispatch('FetchUserProfile', { userId: _userId, godmode: false })\n }\n dispatch('SuccessMessage')\n },\n async FetchUsers({ commit, dispatch, getters, state }, { page }) {\n commit('SET_LOADING', true)\n const filters = Object.keys(state.filters).filter(filter => state.filters[filter]).join()\n const response = await fetchUsers(filters, getters.authHost, getters.token, page)\n await dispatch('GetNodeInfo')\n loadUsers(commit, page, response.data)\n },\n async GetPasswordResetToken({ commit, getters }, nickname) {\n const { data } = await getPasswordResetToken(nickname, getters.authHost, getters.token)\n commit('SET_PASSWORD_RESET_TOKEN', data)\n },\n RemovePasswordToken({ commit }) {\n commit('SET_PASSWORD_RESET_TOKEN', { link: '', token: '' })\n },\n async RemoveTag({ dispatch, getters }, { users, tag, _userId, _statusId }) {\n const updatedUsers = users.map(user => {\n return { ...user, tags: user.tags.filter(userTag => userTag !== tag) }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await untagUser(nicknames, [tag], getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n },\n async RequirePasswordReset({ dispatch, getters }, users) {\n const nicknames = users.map(user => user.nickname)\n try {\n await forcePasswordReset(nicknames, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n dispatch('SuccessMessage')\n },\n async ResendConfirmationEmail({ dispatch, getters }, users) {\n const usersNicknames = users.map(user => user.nickname)\n try {\n await resendConfirmationEmail(usersNicknames, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n dispatch('SuccessMessage')\n },\n async SearchUsers({ commit, dispatch, state, getters }, { query, page }) {\n if (query.length === 0) {\n commit('SET_SEARCH_QUERY', query)\n dispatch('FetchUsers', { page })\n } else {\n commit('SET_LOADING', true)\n commit('SET_SEARCH_QUERY', query)\n\n const filters = Object.keys(state.filters).filter(filter => state.filters[filter]).join()\n const response = await searchUsers(query, filters, getters.authHost, getters.token, page)\n\n loadUsers(commit, page, response.data)\n }\n },\n SuccessMessage() {\n Message.success({\n message: i18n.t('users.completed'),\n duration: 5 * 1000\n })\n },\n async ToggleUsersFilter({ commit, dispatch, state }, filters) {\n const defaultFilters = {\n local: false,\n external: false,\n active: false,\n need_approval: false,\n deactivated: false\n }\n const currentFilters = { ...defaultFilters, ...filters }\n commit('SET_USERS_FILTERS', currentFilters)\n dispatch('SearchUsers', { query: state.searchQuery, page: 1 })\n },\n async UpdateActorType({ dispatch, getters }, { user, type, _userId, _statusId }) {\n const updatedUsers = [{ ...user, actor_type: type }]\n const credentials = { actor_type: type }\n\n const callApiFn = async() => await updateUserCredentials(user.nickname, credentials, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n }\n }\n}\n\nconst loadUsers = (commit, page, { users, count, page_size }) => {\n commit('SET_USERS', users)\n commit('SET_COUNT', count)\n commit('SET_PAGE', page)\n commit('SET_PAGE_SIZE', page_size)\n commit('SET_LOADING', false)\n}\n\nexport default users\n","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport app from './modules/app'\nimport emojiPacks from './modules/emojiPacks'\nimport errorLog from './modules/errorLog'\nimport getters from './getters'\nimport invites from './modules/invites'\nimport mediaProxyCache from './modules/mediaProxyCache'\nimport moderationLog from './modules/moderationLog'\nimport peers from './modules/peers'\nimport permission from './modules/permission'\nimport relays from './modules/relays'\nimport reports from './modules/reports'\nimport settings from './modules/settings'\nimport status from './modules/status'\nimport tagsView from './modules/tagsView'\nimport user from './modules/user'\nimport userProfile from './modules/userProfile'\nimport users from './modules/users'\n\nVue.use(Vuex)\n\nconst store = new Vuex.Store({\n modules: {\n app,\n errorLog,\n emojiPacks,\n invites,\n mediaProxyCache,\n moderationLog,\n peers,\n permission,\n relays,\n reports,\n settings,\n status,\n tagsView,\n user,\n userProfile,\n users\n },\n getters\n})\n\nexport default store\n","import Vue from 'vue'\nimport SvgIcon from '@/components/element-ui/SvgIcon'// svg组件\n\n// register globally\nVue.component('svg-icon', SvgIcon)\n\nconst req = require.context('./svg', false, /\\.svg$/)\nconst requireAll = requireContext => requireContext.keys().map(requireContext)\nrequireAll(req)\n","import Vue from 'vue'\nimport store from './store'\n\n// you can set only in production env show the error-log\nif (process.env.NODE_ENV === 'production') {\n Vue.config.errorHandler = function(err, vm, info, a) {\n // Don't ask me why I use Vue.nextTick, it just a hack.\n // detail see https://forum.vuejs.org/t/dispatch-in-vue-config-errorhandler-has-some-problem/23500\n Vue.nextTick(() => {\n store.dispatch('addErrorLog', {\n err,\n vm,\n info,\n url: window.location.href\n })\n console.error(err, info)\n })\n }\n}\n","import router from './router'\nimport store from './store'\nimport { Message } from 'element-ui'\nimport NProgress from 'nprogress' // progress bar\nimport 'nprogress/nprogress.css'// progress bar style\nimport { getToken } from '@/utils/auth' // getToken from cookie\n\nNProgress.configure({ showSpinner: false })// NProgress Configuration\n\n// permission judge function\nfunction hasPermission(roles, permissionRoles) {\n if (roles.indexOf('admin') >= 0) return true // admin permission passed directly\n if (!permissionRoles) return true\n return roles.some(role => permissionRoles.indexOf(role) >= 0)\n}\n\nconst whiteList = ['/login', '/auth-redirect', '/login-pleroma']// no redirect whitelist\n\nexport const beforeEachRoute = (to, from, next) => {\n NProgress.start() // start progress bar\n if (getToken()) { // determine if there has token\n /* has token*/\n if (to.path === '/login') {\n next({ path: '/' })\n NProgress.done() // if current page is dashboard will not trigger\tafterEach hook, so manually handle it\n } else {\n if (store.getters.roles.length === 0) {\n store.dispatch('GetUserInfo').then(res => {\n const roles = res.data.pleroma.is_admin ? ['admin'] : []\n store.dispatch('GenerateRoutes', { roles }).then(() => {\n router.addRoutes(store.getters.addRouters)\n next({ ...to, replace: true })\n })\n }).catch((err) => {\n store.dispatch('FedLogOut').then(() => {\n Message({\n dangerouslyUseHTMLString: true,\n message: err,\n type: 'error',\n duration: 10 * 1000\n })\n next({ path: '/' })\n })\n })\n } else {\n if (hasPermission(store.getters.roles, to.meta.roles)) {\n next()\n } else {\n next({ path: '/401', replace: true, query: { noGoBack: true }})\n }\n }\n }\n } else {\n /* has no token*/\n if (whiteList.indexOf(to.path) !== -1) {\n next()\n } else {\n next(`/login?redirect=${to.path}`)\n NProgress.done() // if current page is login will not trigger afterEach hook, so manually handle it\n }\n }\n}\nrouter.beforeEach(beforeEachRoute)\n\nrouter.afterEach(() => {\n NProgress.done() // finish progress bar\n})\n","// set function parseTime,formatTime to filter\nexport { parseTime, formatTime } from '@/utils'\n\nfunction pluralize(time, label) {\n if (time === 1) {\n return time + label\n }\n return time + label + 's'\n}\n\nexport function timeAgo(time) {\n const between = Date.now() / 1000 - Number(time)\n if (between < 3600) {\n return pluralize(~~(between / 60), ' minute')\n } else if (between < 86400) {\n return pluralize(~~(between / 3600), ' hour')\n } else {\n return pluralize(~~(between / 86400), ' day')\n }\n}\n\n/* 数字 格式化*/\nexport function numberFormatter(num, digits) {\n const si = [\n { value: 1E18, symbol: 'E' },\n { value: 1E15, symbol: 'P' },\n { value: 1E12, symbol: 'T' },\n { value: 1E9, symbol: 'G' },\n { value: 1E6, symbol: 'M' },\n { value: 1E3, symbol: 'k' }\n ]\n for (let i = 0; i < si.length; i++) {\n if (num >= si[i].value) {\n return (num / si[i].value + 0.1).toFixed(digits).replace(/\\.0+$|(\\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol\n }\n }\n return num.toString()\n}\n\nexport function toThousandFilter(num) {\n return (+num || 0).toString().replace(/^-?\\d+/g, m => m.replace(/(?=(?!\\b)(\\d{3})+$)/g, ','))\n}\n","import Vue from 'vue'\n\nimport Cookies from 'js-cookie'\n\nimport 'normalize.css/normalize.css' // A modern alternative to CSS resets\n\nimport Element from 'element-ui'\nimport 'element-ui/lib/theme-chalk/index.css'\n\nimport '@/styles/index.scss' // global css\n\nimport App from './App'\nimport store from './store'\nimport router from './router'\n\nimport i18n from './lang' // Internationalization\nimport './icons' // icon\nimport './errorLog' // error log\nimport './permission' // permission control\n\nimport * as filters from './filters' // global filters\n\nVue.use(Element, {\n size: Cookies.get('size') || 'medium', // set element-ui default size\n i18n: (key, value) => i18n.t(key, value)\n})\n\n// register global utility filters.\nObject.keys(filters).forEach(key => {\n Vue.filter(key, filters[key])\n})\n\nVue.config.productionTip = false\n\nnew Vue({\n el: '#app',\n router,\n store,\n i18n,\n render: h => h(App)\n})\n","import Cookies from 'js-cookie'\n\nconst TokenKey = 'Admin-Token'\nconst AuthHostKey = 'Auth-Host'\n\nexport function getToken() {\n return Cookies.get(TokenKey)\n}\n\nexport function setToken(token) {\n return Cookies.set(TokenKey, token)\n}\n\nexport function removeToken() {\n return Cookies.remove(TokenKey)\n}\n\nexport function getAuthHost() {\n return Cookies.get(AuthHostKey)\n}\n\nexport function setAuthHost(token) {\n return Cookies.set(AuthHostKey, token)\n}\n\nexport function removeAuthHost() {\n return Cookies.remove(AuthHostKey)\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=1&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=1&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=style&index=0&id=f852c4f2&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=style&index=0&id=f852c4f2&scoped=true&lang=css&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-excel\",\n \"use\": \"icon-excel-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-guide\",\n \"use\": \"icon-guide-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-star\",\n \"use\": \"icon-star-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=style&index=0&id=28de7ff2&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=style&index=0&id=28de7ff2&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-wechat\",\n \"use\": \"icon-wechat-usage\",\n \"viewBox\": \"0 0 128 110\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import _ from 'lodash'\n\nexport const getBooleanValue = value => {\n if (value === 'true') {\n return true\n } else if (value === 'false') {\n return false\n }\n return value\n}\n\nconst getCurrentValue = (type, value, path) => {\n if (type === 'state') {\n return _.get(value, path)\n } else {\n const [firstSettingName, ...restKeys] = path\n const firstSegment = value[firstSettingName]\n if (restKeys.length === 0 || !firstSegment) {\n return firstSegment || false\n } else {\n const secondSegment = (value, keys) => {\n const [element, ...rest] = keys\n return keys.length === 0 ? value : secondSegment(value[1][element], rest)\n }\n return secondSegment(firstSegment, restKeys)\n }\n }\n}\n\nconst getValueWithoutKey = (key, [type, value]) => {\n if (prependWithСolon(type, value)) {\n return `:${value}`\n } else if (key === ':backends') {\n const index = value.findIndex(el => el === ':ex_syslogger')\n const updatedArray = value.slice()\n if (index !== -1) {\n updatedArray[index] = { 'tuple': ['ExSyslogger', ':ex_syslogger'] }\n }\n return updatedArray\n } else if (key === ':types') {\n return Object.keys(value).reduce((acc, key) => { return { ...acc, [key]: value[key][1] } }, {})\n }\n return value\n}\n\nexport const parseNonTuples = (key, value) => {\n if (key === ':backends') {\n const index = value.findIndex(el => typeof el === 'object' && el.tuple.includes(':ex_syslogger'))\n const updated = value.map((el, i) => i === index ? ':ex_syslogger' : el)\n return updated\n }\n if (key === ':args') {\n return typeof value === 'string' ? [value] : value\n }\n return value\n}\n// REFACTOR\nexport const parseTuples = (tuples, key) => {\n return tuples.reduce((accum, item) => {\n if (key === ':rate_limit') {\n accum[item.tuple[0]] = Array.isArray(item.tuple[1])\n ? item.tuple[1].map(el => el.tuple)\n : item.tuple[1].tuple\n } else if (item.tuple[0] === ':mascots') {\n accum[item.tuple[0]] = item.tuple[1].reduce((acc, mascot) => {\n return [...acc, { [mascot.tuple[0]]: { ...mascot.tuple[1], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }}]\n }, [])\n } else if (Array.isArray(item.tuple[1]) &&\n (item.tuple[0] === ':groups' || item.tuple[0] === ':replace' || item.tuple[0] === ':retries' || item.tuple[0] === ':headers' || item.tuple[0] === ':crontab')) {\n if (item.tuple[0] === ':crontab') {\n accum[item.tuple[0]] = item.tuple[1].reduce((acc, group) => {\n return [...acc, { [group.tuple[1]]: { value: group.tuple[0], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }}]\n }, [])\n } else {\n accum[item.tuple[0]] = item.tuple[1].reduce((acc, group) => {\n return [...acc, { [group.tuple[0]]: { value: group.tuple[1], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }}]\n }, [])\n }\n } else if (item.tuple[0] === ':icons') {\n accum[item.tuple[0]] = item.tuple[1].map(icon => {\n return Object.keys(icon).map(name => {\n return { key: name, value: icon[name], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }\n })\n }, [])\n } else if (item.tuple[0] === ':prune') {\n accum[item.tuple[0]] = item.tuple[1] === ':disabled' ? [item.tuple[1]] : item.tuple[1].tuple\n } else if (item.tuple[0] === ':proxy_url' || item.tuple[0] === ':sender') {\n accum[item.tuple[0]] = parseStringOrTupleValue(item.tuple[0], item.tuple[1])\n } else if (item.tuple[0] === ':args') {\n accum[item.tuple[0]] = parseNonTuples(item.tuple[0], item.tuple[1])\n } else if (Array.isArray(item.tuple[1]) &&\n (typeof item.tuple[1][0] === 'object' && !Array.isArray(item.tuple[1][0])) && item.tuple[1][0]['tuple']) {\n accum[item.tuple[0]] = parseTuples(item.tuple[1], item.tuple[0])\n } else if (Array.isArray(item.tuple[1])) {\n accum[item.tuple[0]] = item.tuple[1]\n } else if (item.tuple[0] === ':ip') {\n accum[item.tuple[0]] = item.tuple[1].tuple.join('.')\n } else if (item.tuple[1] && typeof item.tuple[1] === 'object') {\n if (item.tuple[0] === ':params' || item.tuple[0] === ':match_actor') {\n accum[item.tuple[0]] = Object.keys(item.tuple[1]).reduce((acc, key) => {\n return [...acc, { [key]: { value: item.tuple[1][key], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }}]\n }, [])\n } else {\n accum[item.tuple[0]] = parseObject(item.tuple[1])\n }\n } else {\n accum[item.tuple[0]] = item.tuple[1]\n }\n return accum\n }, {})\n}\n\nconst parseObject = object => {\n return Object.keys(object).reduce((acc, item) => {\n acc[item] = object[item]\n return acc\n }, {})\n}\n\nconst parseStringOrTupleValue = (key, value) => {\n if (key === ':proxy_url') {\n if (value && !Array.isArray(value) &&\n typeof value === 'object' &&\n value.tuple.length === 3 &&\n value.tuple[0] === ':socks5') {\n const [, host, port] = value.tuple\n return { socks5: true, host, port }\n } else if (typeof value === 'string') {\n const [host, port] = value.split(':')\n return { socks5: false, host, port }\n }\n return { socks5: false, host: null, port: null }\n } else if (key === ':sender') {\n if (typeof value === 'string') {\n return { email: value }\n } else if (value &&\n typeof value === 'object' &&\n value.tuple.length === 2) {\n const [nickname, email] = value.tuple\n return { nickname, email }\n }\n }\n}\n\nconst prependWithСolon = (type, value) => {\n return (type === 'atom' && value.length > 0) ||\n (Array.isArray(type) && type.includes('boolean') && type.includes('atom') && typeof value === 'string')\n}\n\nexport const processNested = (valueForState, valueForUpdatedSettings, group, parentKey, parents, settings, updatedSettings) => {\n const [{ key, type }, ...otherParents] = parents\n const path = [group, parentKey, ...parents.reverse().map(parent => parent.key).slice(0, -1)]\n\n let updatedValueForState = valueExists('state', settings, path)\n ? { ...getCurrentValue('state', settings[group][parentKey], parents.map(el => el.key).slice(0, -1)),\n ...{ [key]: valueForState }}\n : { [key]: valueForState }\n let updatedValueForUpdatedSettings = valueExists('updatedSettings', updatedSettings, path)\n ? { ...getCurrentValue('updatedSettings', updatedSettings[group][parentKey], parents.map(el => el.key).slice(0, -1))[1],\n ...{ [key]: [type, valueForUpdatedSettings] }}\n : { [key]: [type, valueForUpdatedSettings] }\n\n if (group === ':mime' && parents[0].key === ':types') {\n updatedValueForState = settings[group][parents[0].key]\n ? { ...settings[group][parents[0].key].value, ...updatedValueForState }\n : updatedValueForState\n updatedValueForUpdatedSettings = settings[group][parents[0].key]\n ? { ...Object.keys(settings[group][parents[0].key].value)\n .reduce((acc, el) => {\n return { ...acc, [el]: [type, settings[group][parents[0].key].value[el]] }\n }, {}),\n ...updatedValueForUpdatedSettings }\n : updatedValueForUpdatedSettings\n }\n\n return otherParents.length === 1\n ? { valueForState: updatedValueForState, valueForUpdatedSettings: updatedValueForUpdatedSettings, setting: otherParents[0] }\n : processNested(updatedValueForState, updatedValueForUpdatedSettings, group, parentKey, otherParents, settings, updatedSettings)\n}\n\nconst valueExists = (type, value, path) => {\n if (type === 'state') {\n return _.get(value, path)\n } else {\n const [group, key, firstSettingName, ...restKeys] = path\n const firstSegment = _.get(value, [group, key, firstSettingName])\n if (restKeys.length === 0 || !firstSegment) {\n return firstSegment || false\n } else {\n const secondSegment = (value, keys) => {\n if (keys.length === 0) {\n return true\n }\n const [element, ...rest] = keys\n return value[1][element] ? secondSegment(value[1][element], rest) : false\n }\n return secondSegment(firstSegment, restKeys)\n }\n }\n}\n\nexport const valueHasTuples = (key, value) => {\n const valueIsArrayOfNonObjects = Array.isArray(value) && value.length > 0 && value.every(el => typeof el !== 'object')\n return key === ':meta' ||\n key === ':types' ||\n key === ':backends' ||\n key === ':compiled_template_engines' ||\n key === ':compiled_format_encoders' ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null ||\n valueIsArrayOfNonObjects\n}\n\nexport const wrapUpdatedSettings = (group, settings, currentState) => {\n return Object.keys(settings).map((key) => {\n return settings[key]._value\n ? { group, key, value: getValueWithoutKey(key, settings[key]._value) }\n : { group, key, value: wrapValues(settings[key], currentState[group][key]) }\n })\n}\n\nconst wrapValues = (settings, currentState) => {\n return Object.keys(settings).map(setting => {\n const [type, value] = settings[setting]\n if (type === 'keyword' ||\n (Array.isArray(type) && (\n type.includes('keyword') ||\n (type.includes('tuple') && type.includes('list'))\n ))\n ) {\n return { 'tuple': [setting, wrapValues(value, currentState)] }\n } else if (prependWithСolon(type, value)) {\n return { 'tuple': [setting, `:${value}`] }\n } else if (type.includes('tuple') && (type.includes('string') || type.includes('atom'))) {\n return typeof value === 'string'\n ? { 'tuple': [setting, value] }\n : { 'tuple': [setting, { 'tuple': value }] }\n } else if (type === 'reversed_tuple') {\n return { 'tuple': [value, setting] }\n } else if (type === 'map') {\n const mapValue = Object.keys(value).reduce((acc, key) => {\n acc[key] = value[key][1]\n return acc\n }, {})\n return { 'tuple': [setting, { ...currentState[setting], ...mapValue }] }\n } else if (type.includes('map')) {\n const mapValue = Object.keys(value).reduce((acc, key) => {\n acc[key] = value[key][1]\n return acc\n }, {})\n return { 'tuple': [setting, mapValue] }\n } else if (setting === ':ip') {\n const ip = value.split('.').map(s => parseInt(s, 10))\n return { 'tuple': [setting, { 'tuple': ip }] }\n } else {\n return { 'tuple': [setting, value] }\n }\n })\n}\n\nexport const formSearchObject = description => {\n const parseNestedSettings = (description, label, key) => description.reduce((acc, setting) => {\n const searchArray = _.compact([setting.key, setting.label, setting.description]).map(el => el.toLowerCase())\n const resultObject = { label: setting.label, key: setting.key || setting.group, groupKey: key, groupLabel: label, search: searchArray }\n if (setting.children) {\n const updatedAcc = [...acc, resultObject]\n return [...updatedAcc, ...parseNestedSettings(setting.children, label, key)]\n }\n return [...acc, resultObject]\n }, [])\n\n return description.reduce((acc, setting) => {\n const searchArray = _.compact([setting.key, setting.label, setting.description]).map(el => el.toLowerCase())\n const resultObject = { label: setting.label, key: setting.key || setting.group, groupKey: setting.key || setting.group, groupLabel: setting.label, search: searchArray }\n if (setting.children) {\n const updatedAcc = !setting.key && setting.group === ':pleroma' ? acc : [...acc, resultObject]\n return [...updatedAcc, ...parseNestedSettings(setting.children, setting.label, setting.key || setting.group)]\n }\n return !setting.key && setting.group === ':pleroma' ? acc : [...acc, resultObject]\n }, [])\n}\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-size\",\n \"use\": \"icon-size-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-zip\",\n \"use\": \"icon-zip-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tab\",\n \"use\": \"icon-tab-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-search\",\n \"use\": \"icon-search-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tree\",\n \"use\": \"icon-tree-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-documentation\",\n \"use\": \"icon-documentation-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-drag\",\n \"use\": \"icon-drag-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=17178ffc&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=17178ffc&scoped=true&lang=css&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-fullscreen\",\n \"use\": \"icon-fullscreen-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import Vue from 'vue'\nimport VueI18n from 'vue-i18n'\nimport Cookies from 'js-cookie'\nimport elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang\nimport elementZhLocale from 'element-ui/lib/locale/lang/zh-CN' // element-ui lang\nimport elementEsLocale from 'element-ui/lib/locale/lang/es' // element-ui lang\nimport enLocale from './en'\nimport zhLocale from './zh'\nimport esLocale from './es'\nimport ocLocale from './oc'\n\nVue.use(VueI18n)\n\nconst messages = {\n en: {\n ...enLocale,\n ...elementEnLocale\n },\n zh: {\n ...zhLocale,\n ...elementZhLocale\n },\n es: {\n ...esLocale,\n ...elementEsLocale\n },\n oc: {\n ...ocLocale\n }\n}\n\nconst i18n = new VueI18n({\n // set locale\n // options: en | zh | es | oc\n locale: Cookies.get('language') || 'en',\n // set locale messages\n messages\n})\n\nexport default i18n\n","export default {\n route: {\n dashboard: 'Dashboard',\n introduction: 'Introduction',\n documentation: 'Documentation',\n guide: 'Guide',\n permission: 'Permission',\n pagePermission: 'Page Permission',\n directivePermission: 'Directive Permission',\n icons: 'Icons',\n components: 'Components',\n componentIndex: 'Introduction',\n markdown: 'Markdown',\n jsonEditor: 'JSON Editor',\n dndList: 'Dnd List',\n splitPane: 'SplitPane',\n avatarUpload: 'Avatar Upload',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: 'Mixin',\n backToTop: 'BackToTop',\n dragDialog: 'Drag Dialog',\n dragSelect: 'Drag Select',\n dragKanban: 'Drag Kanban',\n charts: 'Charts',\n keyboardChart: 'Keyboard Chart',\n lineChart: 'Line Chart',\n mixChart: 'Mix Chart',\n example: 'Example',\n nested: 'Nested Routes',\n menu1: 'Menu 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menu 2',\n Table: 'Table',\n dynamicTable: 'Dynamic Table',\n dragTable: 'Drag Table',\n inlineEditTable: 'Inline Edit',\n complexTable: 'Complex Table',\n treeTable: 'Tree Table',\n customTreeTable: 'Custom TreeTable',\n tab: 'Tab',\n form: 'Form',\n createArticle: 'Create Article',\n editArticle: 'Edit Article',\n articleList: 'Article List',\n errorPages: 'Error Pages',\n page401: '401',\n page404: '404',\n errorLog: 'Error Log',\n excel: 'Excel',\n exportExcel: 'Export Excel',\n selectExcel: 'Export Selected',\n uploadExcel: 'Upload Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Export Zip',\n theme: 'Theme',\n clipboardDemo: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'External Link',\n users: 'Users',\n reports: 'Reports',\n invites: 'Invites',\n statuses: 'Statuses',\n settings: 'Settings',\n moderationLog: 'Moderation Log',\n mediaProxyCache: 'MediaProxy Cache',\n 'emoji-packs': 'Emoji packs'\n },\n navbar: {\n logOut: 'Log Out',\n dashboard: 'Dashboard',\n github: 'Github',\n theme: 'Theme',\n size: 'Global Size'\n },\n login: {\n title: 'Login Form',\n logIn: 'Log in',\n logInViaPleromaFE: 'Log in via PleromaFE',\n username: 'username@host',\n password: 'password',\n omitHostname: 'omit hostname if Pleroma is located on this domain',\n errorMessage: 'Username must contain username and host, e.g. john@pleroma.social',\n any: 'any',\n thirdparty: 'Or connect with',\n pleromaFELoginFailed: 'Failed to login via PleromaFE, please login with username/password',\n pleromaFELoginSucceed: 'Logged in via PleromaFE'\n },\n mediaProxyCache: {\n mediaProxyCache: 'MediaProxy Cache',\n ban: 'Ban',\n url: 'URL',\n evict: 'Evict',\n evictedMessage: 'This URL was evicted',\n actions: 'Actions',\n remove: 'Remove from Cachex',\n evictObjectsHeader: 'Evict object from the MediaProxy cache',\n listBannedUrlsHeader: 'List of all banned MediaProxy URLs',\n multipleInput: 'You can enter a single URL or several comma separated links',\n removeSelected: 'Remove Selected'\n },\n documentation: {\n documentation: 'Documentation',\n github: 'Github Repository'\n },\n permission: {\n roles: 'Your roles',\n switchRoles: 'Switch roles',\n tips: 'In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if.'\n },\n guide: {\n description: 'The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ',\n button: 'Show Guide'\n },\n components: {\n documentation: 'Documentation',\n dropzoneTips: 'Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.'\n },\n table: {\n dynamicTips1: 'Fixed header, sorted by header order',\n dynamicTips2: 'Not fixed header, sorted by click order',\n dragTips1: 'The default order',\n dragTips2: 'The after dragging order',\n title: 'Title',\n importance: 'Imp',\n type: 'Type',\n remark: 'Remark',\n search: 'Search',\n add: 'Add',\n export: 'Export',\n reviewer: 'reviewer',\n id: 'ID',\n date: 'Date',\n author: 'Author',\n readings: 'Readings',\n status: 'Status',\n actions: 'Actions',\n edit: 'Edit',\n publish: 'Publish',\n draft: 'Draft',\n delete: 'Delete',\n cancel: 'Cancel',\n confirm: 'Confirm',\n unfollow: 'Unfollow'\n },\n errorLog: {\n tips: 'Please click the bug icon in the upper right corner',\n description: 'Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.',\n documentation: 'Document introduction'\n },\n excel: {\n export: 'Export',\n selectedExport: 'Export Selected Items',\n placeholder: 'Please enter the file name(default excel-list)'\n },\n zip: {\n export: 'Export',\n placeholder: 'Please enter the file name(default file)'\n },\n pdf: {\n tips: 'Here we use window.print() to implement the feature of downloading pdf.'\n },\n theme: {\n change: 'Change Theme',\n documentation: 'Theme documentation',\n tips: 'Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'\n },\n tagsView: {\n refresh: 'Refresh',\n close: 'Close',\n closeOthers: 'Close Others',\n closeAll: 'Close All'\n },\n users: {\n users: 'Users',\n localUsersOnly: 'Local users only',\n search: 'Search',\n id: 'ID',\n name: 'Name',\n status: 'Status',\n local: 'Local',\n external: 'External',\n deactivated: 'Deactivated',\n active: 'Active',\n unapproved: 'Pending',\n unconfirmed: 'Unconfirmed',\n actions: 'Actions',\n activate: 'Activate',\n deactivate: 'Deactivate',\n admin: 'Admin',\n moderator: 'Moderator',\n moderation: 'Moderation',\n revokeAdmin: 'Revoke Admin',\n grantAdmin: 'Grant Admin',\n revokeModerator: 'Revoke Moderator',\n grantModerator: 'Grant Moderator',\n activateAccount: 'Activate Account',\n activateAccounts: 'Activate Accounts',\n deactivateAccount: 'Deactivate Account',\n deactivateAccounts: 'Deactivate Accounts',\n deleteAccount: 'Delete Account',\n deleteAccounts: 'Delete Accounts',\n forceNsfw: 'Force posts to be NSFW',\n stripMedia: 'Force posts to not have media',\n forceUnlisted: 'Force posts to be unlisted',\n sandbox: 'Force posts to be followers-only',\n disableRemoteSubscription: 'Disallow following user from remote instances',\n disableRemoteSubscriptionForMultiple: 'Disallow following users from remote instances',\n disableAnySubscription: 'Disallow following user at all',\n disableAnySubscriptionForMultiple: 'Disallow following users at all',\n requirePasswordReset: 'Require password reset on next login',\n disableMfa: 'Disable multi-factor authentication',\n selectUsers: 'Select users to apply actions to multiple users',\n moderateUser: 'Moderate user',\n moderateUsers: 'Moderate multiple users',\n createAccount: 'Create new account',\n apply: 'Apply',\n remove: 'Remove',\n grantRightConfirmation: 'Are you sure you want to grant {right} rights to all selected users?',\n revokeRightConfirmation: 'Are you sure you want to revoke {right} rights from all selected users?',\n activateMultipleUsersConfirmation: 'Are you sure you want to activate accounts of all selected users?',\n deactivateMultipleUsersConfirmation: 'Are you sure you want to deactivate accounts of all selected users?',\n deleteUserConfirmation: 'Are you sure you want to delete this account? This action cannot be undone.',\n rejectAccountConfirmation: 'Are you sure you want to reject this account? This account will be deleted and it cannot be undone.',\n deleteMultipleUsersConfirmation: 'Are you sure you want to delete accounts of all selected users? This action cannot be undone.',\n addTagForMultipleUsersConfirmation: 'Are you sure you want to apply tag to all selected users?',\n removeTagFromMultipleUsersConfirmation: 'Are you sure you want to remove tag from all selected users?',\n requirePasswordResetConfirmation: 'Are you sure you want to require password reset for all selected users?',\n approveAccountsConfirmation: 'Are you sure you want to approve accounts for all selected users?',\n rejectAccountsConfirmation: 'Are you sure you want to reject accounts for all selected users? These accounts will be deleted and it cannot be undone.',\n confirmAccountsConfirmation: 'Are you sure you want to confirm emails for all selected users?',\n resendEmailConfirmation: 'Are you sure you want to resend confirmation email for all selected users?',\n mailerMustBeEnabled: 'To require user\\'s password reset you must enable mailer.',\n ok: 'Okay',\n completed: 'Completed',\n cancel: 'Cancel',\n canceled: 'Canceled',\n username: 'Username',\n email: 'E-mail',\n password: 'Password',\n create: 'Create',\n submitFormError: 'There are invalid values in the form. Please fix them before continuing.',\n emptyEmailError: 'Please input the e-mail',\n invalidEmailError: 'Please input valid e-mail',\n emptyPasswordError: 'Please input the password',\n emptyNicknameError: 'Please input the username',\n invalidNicknameError: 'Username can include \"a-z\", \"A-Z\" and \"0-9\" characters',\n getPasswordResetToken: 'Get password reset token',\n passwordResetTokenCreated: 'Password reset token was created',\n accountCreated: 'New account was created!',\n approveAccount: 'Approve account',\n approveAccounts: 'Approve accounts',\n unapprovedAccount: 'User account is pending approval',\n unconfirmedEmail: 'User didn\\'t confirm the email',\n confirmAccount: 'Confirm account',\n confirmAccounts: 'Confirm accounts',\n rejectAccount: 'Reject account',\n rejectAccounts: 'Reject accounts',\n resendConfirmation: 'Resend confirmation email',\n invalidAccount: 'This account has invalid nickname and can\\'t be modified',\n invalidNickname: 'invalid nickname',\n passwordResetTokenGenerated: 'Password reset token was generated:',\n linkToResetPassword: 'You can also use this link to reset password:',\n registrationReason: 'Registration Reason',\n service: 'Service',\n person: 'Person'\n },\n statuses: {\n statuses: 'Statuses',\n instanceFilter: 'Instance filter',\n loadMore: 'Load more',\n noInstances: 'No other instances found',\n onlyLocalStatuses: 'Show only local statuses',\n showPrivateStatuses: 'Show private statuses',\n direct: 'Direct',\n private: 'Private',\n public: 'Public',\n unlisted: 'Unlisted',\n openStatusInInstance: 'Open status in instance'\n },\n userProfile: {\n tags: 'Tags',\n moderator: 'Moderator',\n admin: 'Admin',\n local: 'Local',\n external: 'External',\n accountType: 'Account Type',\n actorType: 'Actor Type',\n nickname: 'Nickname',\n recentStatuses: 'Recent Statuses',\n roles: 'Roles',\n active: 'Active',\n status: 'Status',\n reason: 'Registration Reason',\n deactivated: 'Deactivated',\n pending: 'Pending',\n noStatuses: 'No statuses to show',\n openAccountInInstance: 'Open account in instance',\n securitySettings: {\n email: 'Email',\n password: 'Password',\n securitySettings: 'Security settings',\n passwordChangeWarning1: 'Setting a new password will cause the user to be signed out from any client they have used before.',\n passwordChangeWarning2: 'When the user signs in with this password, they will be asked to set a new one.',\n passwordLengthNotice: 'Make sure it\\'s at least {minLength} characters long.',\n inputNewEmail: 'Input new email',\n inputNewPassword: 'Input new password',\n passwordUpdated: 'The password has been updated',\n emailUpdated: 'The email has been updated',\n success: 'Success',\n submit: 'Submit',\n close: 'Close'\n }\n },\n usersFilter: {\n inputPlaceholder: 'Select filter',\n byAccountType: 'By account type',\n local: 'Local',\n external: 'External',\n byStatus: 'By status',\n active: 'Active',\n pending: 'Pending Approval',\n deactivated: 'Deactivated'\n },\n reports: {\n reports: 'Reports',\n report: 'Report',\n reply: 'Reply',\n from: 'From',\n showNotes: 'Show notes',\n newNote: 'New note',\n submit: 'Submit',\n confirmMsg: 'Are you sure you want to delete this note?',\n delete: 'Delete',\n cancel: 'Cancel',\n deleteCompleted: 'Delete comleted',\n deleteCanceled: 'Delete canceled',\n noNotes: 'No notes to display',\n changeState: \"Change report's state\",\n changeAllReports: 'Change all reports',\n changeScope: 'Change scope',\n moderateUser: 'Moderate user',\n resolve: 'Resolve',\n reopen: 'Reopen',\n close: 'Close',\n resolveAll: 'Resolve all',\n reopenAll: 'Reopen all',\n closeAll: 'Close all',\n addSensitive: 'Add Sensitive flag',\n removeSensitive: 'Remove Sensitive flag',\n public: 'Make status public',\n private: 'Make status private',\n unlisted: 'Make status unlisted',\n sensitive: 'Sensitive',\n deleteStatus: 'Delete status',\n reportOn: 'Report on',\n reportsOn: 'Reports on',\n id: 'ID',\n account: 'Account',\n actor: 'Actor',\n actors: 'Actors',\n content: 'Content',\n reportedStatus: 'Reported status',\n statusDeleted: 'This status has been deleted',\n leaveNote: 'Leave a note',\n postNote: 'Send',\n deleteNote: 'Delete',\n notFound: 'account not found'\n },\n reportsFilter: {\n inputPlaceholder: 'Select filter',\n open: 'Open',\n closed: 'Closed',\n resolved: 'Resolved'\n },\n moderationLog: {\n moderationLog: 'Moderation Log'\n },\n settings: {\n settings: 'Settings',\n instance: 'Instance',\n upload: 'Upload',\n mailer: 'Mailer',\n linkFormatter: 'Link Formatter',\n logger: 'Logger',\n activityPub: 'ActivityPub',\n auth: 'Authentication',\n captcha: 'Captcha',\n frontend: 'Frontend',\n http: 'HTTP',\n mrf: 'MRF',\n mediaProxy: 'Media Proxy',\n metadata: 'Metadata',\n gopher: 'Gopher',\n jobQueue: 'Job queue',\n webPush: 'Web push encryption',\n esshd: 'BBS / SSH access',\n rateLimiters: 'Rate limiters',\n other: 'Other',\n relays: 'Relays',\n follow: 'Follow',\n followRelay: 'Follow new relay',\n followedBack: 'Followed Back',\n instanceUrl: 'Instance URL',\n success: 'Settings changed successfully!',\n description: 'Description',\n removeFromDB: 'Remove setting from the DB',\n successfullyDownloaded: 'Successfully downloaded',\n successfullyImported: 'Successfully imported',\n nowNewPacksToImport: 'No new packs to import',\n successfullyUpdated: 'Successfully updated',\n metadatLowerCase: 'metadata',\n files: 'files',\n successfullyRemoved: 'Setting removed successfully!',\n seeDocs: 'See Documentation',\n instanceReboot: 'Reboot Instance',\n restartApp: 'You must restart the instance to apply settings',\n restartSuccess: 'Instance rebooted successfully!',\n removeSettingConfirmation: 'Are you sure you want to remove this setting\\'s value from the database?',\n changeImage: 'Change image',\n uploadImage: 'Upload image',\n remove: 'Remove'\n },\n invites: {\n inviteTokens: 'Invite tokens',\n createInviteToken: 'Generate invite token',\n pickDate: 'Pick a date',\n maxUse: 'Max use',\n expiresAt: 'Expires at',\n tokenCreated: 'Invite token was created',\n token: 'Token',\n inviteLink: 'Invite link',\n uses: 'Uses',\n used: 'Used',\n cancel: 'Cancel',\n create: 'Create',\n revoke: 'Revoke',\n id: 'ID',\n actions: 'Actions',\n active: 'Active',\n inviteUserViaEmail: 'Invite user via email',\n sendRegistration: 'Send registration invite via email',\n email: 'Email',\n name: 'Name',\n emptyEmailError: 'Please input the e-mail',\n invalidEmailError: 'Please input valid e-mail',\n emailSent: 'Invite was sent',\n submitFormError: 'There are invalid values in the form. Please fix them before continuing.',\n inviteViaEmailAlert: 'To send invite via email make sure to enable `invites_enabled` and disable `registrations_open`'\n },\n emoji: {\n emojiPacks: 'Emoji packs',\n reloaded: 'Emoji reloaded successfully!',\n refreshed: 'Emoji refreshed successfully!',\n importEmojiTooltip: 'Importing from the filesystem will scan the directories and import those without pack.json but with emoji.txt or without neither',\n reloadEmoji: 'Reload emoji',\n importPacks: 'Import packs from the server filesystem',\n localPacks: 'Local packs',\n refreshLocalPacks: 'Refresh local packs',\n createLocalPack: 'Create a new local pack',\n remotePacks: 'Remote packs',\n remoteInstanceAddress: 'Remote instance address',\n refreshRemote: 'Refresh remote packs',\n sharePack: 'Share pack',\n required: 'required',\n homepage: 'Homepage',\n description: 'Description',\n packs: 'Packs',\n license: 'License',\n shortcode: 'Shortcode',\n fallbackSrc: 'Fallback source',\n fallbackSrcSha: 'Fallback source SHA',\n saveMetadata: 'Save metadata',\n deletePack: 'Delete pack',\n downloadPack: 'Download pack',\n downloadPackArchive: 'Download pack archive',\n addNewEmoji: 'Add new emoji to the pack',\n manageEmoji: 'Manage existing emoji',\n thisWillDownload: 'This will download the',\n downloadToCurrentInstance: 'pack to the current instance under the name',\n canBeChanged: 'can be changed below',\n willBeUsable: 'It will then be usable and shareable from the current instance',\n downloadAsOptional: 'Download as (optional)',\n downloadSharedPack: 'Download shared pack to current instance',\n downloadSharedPackMobile: 'Download pack to instance',\n optional: 'optional',\n uploadFile: 'Upload a file',\n url: 'URL',\n clickToUpload: 'Click to upload',\n upload: 'Upload',\n customFilename: 'Custom filename',\n customFilenameDesc: 'Custom file name (optional)',\n file: 'File',\n localPack: 'Local pack',\n leaveEmptyShortcode: 'leave empty to use the same shortcode',\n leaveEmptyFilename: 'leave empty to use the same filename',\n update: 'Update',\n remove: 'Remove',\n selectLocalPack: 'Select the local pack to copy to',\n specifyShortcode: 'Specify a custom shortcode',\n specifyFilename: 'Specify a custom filename',\n copy: 'Copy',\n copyToLocalPack: 'Copy to local pack',\n emptyPack: 'This emoji pack is empty'\n }\n}\n","export default {\n route: {\n dashboard: '首页',\n introduction: '简述',\n documentation: '文档',\n guide: '引导页',\n permission: '权限测试页',\n pagePermission: '页面权限',\n directivePermission: '指令权限',\n icons: '图标',\n components: '组件',\n componentIndex: '介绍',\n markdown: 'Markdown',\n jsonEditor: 'JSON编辑器',\n dndList: '列表拖拽',\n splitPane: 'Splitpane',\n avatarUpload: '头像上传',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: '小组件',\n backToTop: '返回顶部',\n dragDialog: '拖拽 Dialog',\n dragSelect: '拖拽 Select',\n dragKanban: '可拖拽看板',\n charts: '图表',\n keyboardChart: '键盘图表',\n lineChart: '折线图',\n mixChart: '混合图表',\n example: '综合实例',\n nested: '路由嵌套',\n menu1: '菜单1',\n 'menu1-1': '菜单1-1',\n 'menu1-2': '菜单1-2',\n 'menu1-2-1': '菜单1-2-1',\n 'menu1-2-2': '菜单1-2-2',\n 'menu1-3': '菜单1-3',\n menu2: '菜单2',\n Table: 'Table',\n dynamicTable: '动态Table',\n dragTable: '拖拽Table',\n inlineEditTable: 'Table内编辑',\n complexTable: '综合Table',\n treeTable: '树形表格',\n customTreeTable: '自定义树表',\n tab: 'Tab',\n form: '表单',\n createArticle: '创建文章',\n editArticle: '编辑文章',\n articleList: '文章列表',\n errorPages: '错误页面',\n page401: '401',\n page404: '404',\n errorLog: '错误日志',\n excel: 'Excel',\n exportExcel: 'Export Excel',\n selectExcel: 'Export Selected',\n uploadExcel: 'Upload Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Export Zip',\n theme: '换肤',\n clipboardDemo: 'Clipboard',\n i18n: '国际化',\n externalLink: '外链'\n },\n navbar: {\n logOut: '退出登录',\n dashboard: '首页',\n github: '项目地址',\n theme: '换肤',\n size: '布局大小'\n },\n login: {\n title: '系统登录',\n logIn: '登录',\n username: '账号',\n password: '密码',\n any: '随便填',\n thirdparty: '第三方登录',\n thirdpartyTips: '本地不能模拟,请结合自己业务进行模拟!!!'\n },\n documentation: {\n documentation: '文档',\n github: 'Github 地址'\n },\n permission: {\n roles: '你的权限',\n switchRoles: '切换权限',\n tips: '在某些情况下,不适合使用 v-permission。例如:Element-UI 的 Tab 组件或 el-table-column 以及其它动态渲染 dom 的场景。你只能通过手动设置 v-if 来实现。'\n },\n guide: {\n description: '引导页对于一些第一次进入项目的人很有用,你可以简单介绍下项目的功能。本 Demo 是基于',\n button: '打开引导'\n },\n components: {\n documentation: '文档',\n dropzoneTips: '由于我司业务有特殊需求,而且要传七牛 所以没用第三方,选择了自己封装。代码非常的简单,具体代码你可以在这里看到 @/components/element-ui/Dropzone',\n stickyTips: '当页面滚动到预设的位置会吸附在顶部',\n backToTopTips1: '页面滚动到指定位置会在右下角出现返回顶部按钮',\n backToTopTips2: '可自定义按钮的样式、show/hide、出现的高度、返回的位置 如需文字提示,可在外部使用Element的el-tooltip元素',\n imageUploadTips: '由于我在使用时它只有vue@1版本,而且和mockjs不兼容,所以自己改造了一下,如果大家要使用的话,优先还是使用官方版本。'\n },\n table: {\n dynamicTips1: '固定表头, 按照表头顺序排序',\n dynamicTips2: '不固定表头, 按照点击顺序排序',\n dragTips1: '默认顺序',\n dragTips2: '拖拽后顺序',\n title: '标题',\n importance: '重要性',\n type: '类型',\n remark: '点评',\n search: '搜索',\n add: '添加',\n export: '导出',\n reviewer: '审核人',\n id: '序号',\n date: '时间',\n author: '作者',\n readings: '阅读数',\n status: '状态',\n actions: '操作',\n edit: '编辑',\n publish: '发布',\n draft: '草稿',\n delete: '删除',\n cancel: '取 消',\n confirm: '确 定'\n },\n errorLog: {\n tips: '请点击右上角bug小图标',\n description: '现在的管理后台基本都是spa的形式了,它增强了用户体验,但同时也会增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在 Vue 官网提供了一个方法来捕获处理异常,你可以在其中进行错误处理或者异常上报。',\n documentation: '文档介绍'\n },\n excel: {\n export: '导出',\n selectedExport: '导出已选择项',\n placeholder: '请输入文件名(默认excel-list)'\n },\n zip: {\n export: '导出',\n placeholder: '请输入文件名(默认file)'\n },\n pdf: {\n tips: '这里使用 window.print() 来实现下载pdf的功能'\n },\n theme: {\n change: '换肤',\n documentation: '换肤文档',\n tips: 'Tips: 它区别于 navbar 上的 theme-pick, 是两种不同的换肤方法,各自有不同的应用场景,具体请参考文档。'\n },\n tagsView: {\n refresh: '刷新',\n close: '关闭',\n closeOthers: '关闭其它',\n closeAll: '关闭所有'\n }\n}\n","export default {\n route: {\n dashboard: 'Panel de control',\n introduction: 'Introducción',\n documentation: 'Documentación',\n guide: 'Guía',\n permission: 'Permisos',\n pagePermission: 'Permisos de la página',\n directivePermission: 'Permisos de la directiva',\n icons: 'Iconos',\n components: 'Componentes',\n componentIndex: 'Introducción',\n markdown: 'Markdown',\n jsonEditor: 'Editor JSON',\n dndList: 'Lista Dnd',\n splitPane: 'Panel dividido',\n avatarUpload: 'Subir avatar',\n dropzone: 'Subir ficheros',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: 'Mixin',\n backToTop: 'Ir arriba',\n dragDialog: 'Drag Dialog',\n dragSelect: 'Drag Select',\n dragKanban: 'Drag Kanban',\n charts: 'Gráficos',\n keyboardChart: 'Keyboard Chart',\n lineChart: 'Gráfico de líneas',\n mixChart: 'Mix Chart',\n example: 'Ejemplo',\n nested: 'Rutas anidadass',\n menu1: 'Menu 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menu 2',\n Table: 'Tabla',\n dynamicTable: 'Tabla dinámica',\n dragTable: 'Arrastrar tabla',\n inlineEditTable: 'Editor',\n complexTable: 'Complex Table',\n treeTable: 'Tree Table',\n customTreeTable: 'Custom TreeTable',\n tab: 'Pestaña',\n form: 'Formulario',\n createArticle: 'Crear artículo',\n editArticle: 'Editar artículo',\n articleList: 'Listado de artículos',\n errorPages: 'Páginas de error',\n page401: '401',\n page404: '404',\n errorLog: 'Registro de errores',\n excel: 'Excel',\n exportExcel: 'Exportar a Excel',\n selectExcel: 'Export seleccionado',\n uploadExcel: 'Subir Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Exportar a Zip',\n theme: 'Tema',\n clipboardDemo: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'Enlace externo'\n },\n navbar: {\n logOut: 'Salir',\n dashboard: 'Panel de control',\n github: 'Github',\n theme: 'Tema',\n size: 'Tamaño global'\n },\n login: {\n title: 'Formulario de acceso',\n logIn: 'Acceso',\n username: 'Usuario',\n password: 'Contraseña',\n any: 'nada',\n thirdparty: 'Conectar con',\n thirdpartyTips: 'No se puede simular en local, así que combine su propia simulación de negocios. ! !'\n },\n documentation: {\n documentation: 'Documentación',\n github: 'Repositorio Github'\n },\n permission: {\n roles: 'Tus permisos',\n switchRoles: 'Cambiar permisos',\n tips: 'In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if.'\n },\n guide: {\n description: 'The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ',\n button: 'Ver guía'\n },\n components: {\n documentation: 'Documentación',\n dropzoneTips: 'Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.'\n },\n table: {\n dynamicTips1: 'Fixed header, sorted by header order',\n dynamicTips2: 'Not fixed header, sorted by click order',\n dragTips1: 'Orden por defecto',\n dragTips2: 'The after dragging order',\n title: 'Título',\n importance: 'Importancia',\n type: 'Tipo',\n remark: 'Remark',\n search: 'Buscar',\n add: 'Añadir',\n export: 'Exportar',\n reviewer: 'reviewer',\n id: 'ID',\n date: 'Fecha',\n author: 'Autor',\n readings: 'Lector',\n status: 'Estado',\n actions: 'Acciones',\n edit: 'Editar',\n publish: 'Publicar',\n draft: 'Draft',\n delete: 'Eliminar',\n cancel: 'Cancelar',\n confirm: 'Confirmar'\n },\n errorLog: {\n tips: 'Please click the bug icon in the upper right corner',\n description: 'Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.',\n documentation: 'Documento de introducción'\n },\n excel: {\n export: 'Exportar',\n selectedExport: 'Exportar seleccionados',\n placeholder: 'Por favor escribe un nombre de fichero'\n },\n zip: {\n export: 'Exportar',\n placeholder: 'Por favor escribe un nombre de fichero'\n },\n pdf: {\n tips: 'Here we use window.print() to implement the feature of downloading pdf.'\n },\n theme: {\n change: 'Cambiar tema',\n documentation: 'Documentación del tema',\n tips: 'Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'\n },\n tagsView: {\n refresh: 'Actualizar',\n close: 'Cerrar',\n closeOthers: 'Cerrar otros',\n closeAll: 'Cerrar todos'\n }\n}\n","export default {\n route: {\n dashboard: 'Tablèu de bòrd',\n introduction: 'Introduccion',\n documentation: 'Documentacion',\n guide: 'Guida',\n permission: 'Autorizacions',\n pagePermission: 'Pagina d’autorizacion',\n directivePermission: 'Politica d’autorizacion',\n icons: 'Icònas',\n components: 'Compausants',\n componentIndex: 'Introduccion',\n markdown: 'Markdown',\n jsonEditor: 'JSON Editor',\n dndList: 'Dnd List',\n splitPane: 'SplitPane',\n avatarUpload: 'Mandadís d’avatar',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: 'Mixin',\n backToTop: 'BackToTop',\n dragDialog: 'Drag Dialog',\n dragSelect: 'Drag Select',\n dragKanban: 'Drag Kanban',\n charts: 'Charts',\n keyboardChart: 'Keyboard Chart',\n lineChart: 'Line Chart',\n mixChart: 'Mix Chart',\n example: 'Exemple',\n nested: 'Rotas imbricadas',\n menu1: 'Menú 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menú 2',\n Table: 'Tablèu',\n dynamicTable: 'Tablèu dinamic',\n dragTable: 'Drag Table',\n inlineEditTable: 'Inline Edit',\n complexTable: 'Tablèu complèx',\n treeTable: 'Arborescéncia',\n customTreeTable: 'Arborescéncia personalizada',\n tab: 'Onglet',\n form: 'Formulari',\n createArticle: 'Crear un article',\n editArticle: 'Modificar l’article',\n articleList: 'Lista d’articles',\n errorPages: 'Paginas d’error',\n page401: '401',\n page404: '404',\n errorLog: 'Jornal d’error',\n excel: 'Excel',\n exportExcel: 'Exportacion Excel',\n selectExcel: 'Exportar los seleccionats',\n uploadExcel: 'Importacion Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Exportacion Zip',\n theme: 'Tèma',\n clipboardDemo: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'Ligams extèrnes',\n users: 'Utilizaires'\n },\n navbar: {\n logOut: 'Desconnexion',\n dashboard: 'Tablèu de bòrd',\n github: 'Github',\n theme: 'Tèma',\n size: 'Talha totala'\n },\n login: {\n title: 'Formulari de connexion',\n logIn: 'Se connectar',\n username: 'Nom d’’utilizaire',\n password: 'Senhal',\n any: 'qual que siá',\n thirdparty: 'O se connectar amb',\n thirdpartyTips: 'Pòt pas èsser simulat en local, doncas montatz vòstra pròpria simulacion ! ! !'\n },\n documentation: {\n documentation: 'Documentacion',\n github: 'Repertòri Github'\n },\n permission: {\n roles: 'Vòstres ròtles',\n switchRoles: 'Cambiar de ròtle',\n tips: 'Dins qualques cases es pas de bon far d’utilizar v-permission, coma element d’onglet compausant, el-table-column o d’autres renduts dom asincròns que pòdon pas que foncionar amb un parametratge manual de v-if.'\n },\n guide: {\n description: 'La pagina de guida es utila pel monde que dintran dins lo projècte pel primièr còp. Podètz presentar en un mot las foncionalitats del projèctes. La demo es fondada sus ',\n button: 'Mostrar la guida'\n },\n components: {\n documentation: 'Documentacion',\n dropzoneTips: 'Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.'\n },\n table: {\n dynamicTips1: 'Bandièra fixa, triada per òrdre de bandièra',\n dynamicTips2: 'Bandièra pas fixa, triada per òrdre de clic',\n dragTips1: 'L’’òrdre per defaut',\n dragTips2: 'L’’òrdre aprèp lisar-depausar',\n title: 'Títol',\n importance: 'Imp',\n type: 'Tipe',\n remark: 'Remarca',\n search: 'Recercar',\n add: 'Ajustar',\n export: 'Exportar',\n reviewer: 'examinator',\n id: 'ID',\n date: 'Data',\n author: 'Autor',\n readings: 'Lecturas',\n status: 'Estatuts',\n actions: 'Accions',\n edit: 'Modificar',\n publish: 'Publicar',\n draft: 'Ensag',\n delete: 'Suprimir',\n cancel: 'Anullar',\n confirm: 'Confirmar'\n },\n errorLog: {\n tips: 'Mercés de clicar l’’icòna del babau amont a man drecha',\n description: 'Ara que lo sistèma de gestion es coma un spa, melhora l’experiéncia dels utilizaire mas aumenta tanben lo risc de problèmas sus la pagina, una pichona negligéncia pòt menar a un blocatge complèt de la pagina. Urosament Vue fornís de manièras per gerir las excepcions, trobar las errors o senhalar las excepcions.',\n documentation: 'Presentacion del document'\n },\n excel: {\n export: 'Exportar',\n selectedExport: 'Exportar los elements seleccionats',\n placeholder: 'Mercés de picar lo nom de fichièr (per defaut excel-list)'\n },\n zip: {\n export: 'Exportar',\n placeholder: 'Mercés de picar lo nom de fichièr (per defaut file)'\n },\n pdf: {\n tips: 'Aquí utilizam window.print() per prepausar lo telecargament de pdf.'\n },\n theme: {\n change: 'Cambiar lo tèma',\n documentation: 'Documentacion dels tèmas',\n tips: 'Astúcia : es diferent del theme-pick de la barra de navigacion, i a dos metòdes de personalizacion, caduna amb un biais de far diferent. Referiscam a la documentacion per mai de detalhs.'\n },\n tagsView: {\n refresh: 'Actualizar',\n close: 'Tampar',\n closeOthers: 'Tampar los autres',\n closeAll: 'Los tampar totes'\n }\n}\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function addNewEmojiFile(packName, file, shortcode, filename, host, token) {\n const data = new FormData()\n if (filename.trim() !== '') {\n data.set('filename', filename)\n }\n if (shortcode.trim() !== '') {\n data.set('shortcode', shortcode)\n }\n data.set('file', file)\n\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}/files`,\n method: 'post',\n headers: authHeaders(token),\n data\n })\n}\n\nexport function addressOfEmojiInPack(host, packName, name) {\n return `${baseName(host)}/emoji/${packName}/${name}`\n}\n\nexport async function createPack(host, token, packName) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}`,\n method: 'post',\n headers: authHeaders(token)\n })\n}\n\nexport async function deleteEmojiFile(packName, shortcode, host, token) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}/files?shortcode=${shortcode}`,\n method: 'delete',\n headers: authHeaders(token)\n })\n}\n\nexport async function deletePack(host, token, packName) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}`,\n method: 'delete',\n headers: authHeaders(token)\n })\n}\n\nexport async function downloadFrom(instanceAddress, packName, as, host, token) {\n return await request({\n baseURL: baseName(host),\n url: '/api/pleroma/emoji/packs/download',\n method: 'post',\n headers: authHeaders(token),\n data: as.trim() === ''\n ? { url: baseName(instanceAddress), name: packName }\n : { url: baseName(instanceAddress), name: packName, as },\n timeout: 0\n })\n}\n\nexport async function fetchPack(packName, page, pageSize, host, token) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}?page=${page}&page_size=${pageSize}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function importFromFS(host, token) {\n return await request({\n baseURL: baseName(host),\n url: '/api/pleroma/emoji/packs/import',\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function listPacks(page, pageSize, host, token) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs?page=${page}&page_size=${pageSize}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function listRemotePacks(host, token, instance) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/remote?url=${baseName(instance)}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function reloadEmoji(host, token) {\n return await request({\n baseURL: baseName(host),\n url: '/api/pleroma/admin/reload_emoji',\n method: 'post',\n headers: authHeaders(token)\n })\n}\n\nexport async function savePackMetadata(host, token, packName, metadata) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}`,\n method: 'patch',\n headers: authHeaders(token),\n data: { metadata },\n timeout: 0 // This might take a long time\n })\n}\n\nexport async function updateEmojiFile(packName, shortcode, newShortcode, newFilename, force, host, token) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}/files`,\n method: 'patch',\n headers: authHeaders(token),\n data: { shortcode, new_shortcode: newShortcode, new_filename: newFilename, force }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-icon\",\n \"use\": \"icon-icon-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-404\",\n \"use\": \"icon-404-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-edit\",\n \"use\": \"icon-edit-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-lock\",\n \"use\": \"icon-lock-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-user\",\n \"use\": \"icon-user-usage\",\n \"viewBox\": \"0 0 130 130\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409EFF\",\"subMenuActiveText\":\"#f4f4f5\",\"menuBg\":\"#304156\",\"menuHover\":\"#263445\",\"subMenuBg\":\"#1f2d3d\",\"subMenuHover\":\"#001528\",\"sideBarWidth\":\"180px\"};","import axios from 'axios'\nimport { Message } from 'element-ui'\n\n// create an axios instance\nconst service = axios.create({\n timeout: 60000 // request timeout\n})\n\n// response interceptor\nservice.interceptors.response.use(\n response => response,\n error => {\n let errorMessage\n console.log(`Error ${error}`)\n\n if (error.response) {\n const edata = error.response.data.error ? error.response.data.error : error.response.data\n errorMessage = !error.response.headers['content-type'].includes('application/json')\n ? `${error.message}`\n : `${error.message} - ${edata}`\n } else {\n errorMessage = error\n }\n\n Message({\n message: errorMessage,\n type: 'error',\n duration: 5 * 1000\n })\n return Promise.reject(error)\n }\n)\n\nexport default service\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-clipboard\",\n \"use\": \"icon-clipboard-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-email\",\n \"use\": \"icon-email-usage\",\n \"viewBox\": \"0 0 128 96\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-chart\",\n \"use\": \"icon-chart-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Item.vue?vue&type=style&index=0&id=52140d98&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Item.vue?vue&type=style&index=0&id=52140d98&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',_vm._g({class:_vm.svgClass,attrs:{\"aria-hidden\":\"true\"}},_vm.$listeners),[_c('use',{attrs:{\"xlink:href\":_vm.iconName}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=17178ffc&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=17178ffc&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17178ffc\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409EFF\",\"subMenuActiveText\":\"#f4f4f5\",\"menuBg\":\"#304156\",\"menuHover\":\"#263445\",\"subMenuBg\":\"#1f2d3d\",\"subMenuHover\":\"#001528\",\"sideBarWidth\":\"180px\"};"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/app.69891fda.js b/priv/static/adminfe/static/js/app.69891fda.js new file mode 100644 index 000000000..3d04d9273 --- /dev/null +++ b/priv/static/adminfe/static/js/app.69891fda.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["app"],{"+aF5":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-pdf",use:"icon-pdf-usage",viewBox:"0 0 1024 1024",content:''});s.a.add(i);t.default=i},"0Fbn":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-people",use:"icon-people-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},"1+ww":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-eye-open",use:"icon-eye-open-usage",viewBox:"0 0 1024 1024",content:''});s.a.add(i);t.default=i},"18BR":function(e,t,n){"use strict";var a=n("CzPo");n.n(a).a},"28eg":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-exit-fullscreen",use:"icon-exit-fullscreen-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},"2QTO":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-add_col_before",use:"icon-tiptap-add_col_before-usage",viewBox:"0 0 24 24",content:'\n \n'});s.a.add(i);t.default=i},"3PhE":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-nested",use:"icon-nested-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},"5TQQ":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-theme",use:"icon-theme-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},"6S0t":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-table",use:"icon-tiptap-table-usage",viewBox:"0 0 24 24",content:'\n \n'});s.a.add(i);t.default=i},"6xvN":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-form",use:"icon-form-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},"7x1v":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-add_row_before",use:"icon-tiptap-add_row_before-usage",viewBox:"0 0 24 24",content:'\n \n'});s.a.add(i);t.default=i},"8CrX":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-combine_cells",use:"icon-tiptap-combine_cells-usage",viewBox:"0 0 24 24",content:'\n \n'});s.a.add(i);t.default=i},"8L8/":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-checklist",use:"icon-tiptap-checklist-usage",viewBox:"0 0 24 24",content:'checklist-alternate'});s.a.add(i);t.default=i},"94Jb":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-dashboard",use:"icon-dashboard-usage",viewBox:"0 0 128 100",content:''});s.a.add(i);t.default=i},"9NTF":function(e,t,n){},"9i3r":function(e,t,n){"use strict";n.d(t,"a",function(){return a});var a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"localhost";return e.match(/https?:\/\//)?e:function(e){return e.startsWith("localhost:")||e.startsWith("127.0.0.1:")}(e)?"http://".concat(e):"https://".concat(e)}},CzPo:function(e,t,n){},Dza5:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-delete_table",use:"icon-tiptap-delete_table-usage",viewBox:"0 0 24 24",content:'\n \n'});s.a.add(i);t.default=i},ENUZ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-delete_row",use:"icon-tiptap-delete_row-usage",viewBox:"0 0 24 24",content:'\n \n'});s.a.add(i);t.default=i},EqXK:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-shopping",use:"icon-shopping-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},F3lI:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-bug",use:"icon-bug-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},"F9+T":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-international",use:"icon-international-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},FDDl:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-qq",use:"icon-qq-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},GPBF:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-link",use:"icon-link-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},HIWW:function(e,t,n){"use strict";var a=n("MoCq");n.n(a).a},Hnev:function(e,t,n){"use strict";var a=n("UqWv");n.n(a).a},ICep:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-guide 2",use:"icon-guide 2-usage",viewBox:"0 0 1000 1000",content:''});s.a.add(i);t.default=i},JYDz:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-language",use:"icon-language-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},Kcm3:function(e,t,n){},Kj24:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-password",use:"icon-password-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},LjVp:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-delete_col",use:"icon-tiptap-delete_col-usage",viewBox:"0 0 24 24",content:'\n \n'});s.a.add(i);t.default=i},LxGF:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-peoples",use:"icon-peoples-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},MEYL:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-money",use:"icon-money-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},MMMJ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-example",use:"icon-example-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},MoCq:function(e,t,n){},MokB:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-list",use:"icon-list-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},NgVs:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-remove",use:"icon-tiptap-remove-usage",viewBox:"0 0 24 24",content:'delete-2-alternate'});s.a.add(i);t.default=i},P8iQ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-settings",use:"icon-settings-usage",viewBox:"0 0 490.2 490.2",content:'\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n'});s.a.add(i);t.default=i},"R/8a":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-message",use:"icon-message-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},"R/Hx":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-table",use:"icon-table-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},SZWj:function(e,t,n){"use strict";var a=n("Xm3t");n.n(a).a},TfVu:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-eye",use:"icon-eye-usage",viewBox:"0 0 128 64",content:''});s.a.add(i);t.default=i},Tfa4:function(e,t,n){},"Uf/o":function(e,t,n){var a={"./404.svg":"oUrx","./bug.svg":"F3lI","./chart.svg":"yCkv","./clipboard.svg":"vDVG","./component.svg":"VtY+","./dashboard.svg":"94Jb","./documentation.svg":"kPu2","./drag.svg":"m7++","./edit.svg":"qkZ8","./email.svg":"y7eQ","./example.svg":"MMMJ","./excel.svg":"ZZmv","./exit-fullscreen.svg":"28eg","./eye-open.svg":"1+ww","./eye.svg":"TfVu","./form.svg":"6xvN","./fullscreen.svg":"mSHS","./guide 2.svg":"ICep","./guide.svg":"ZoO1","./icon.svg":"nZHn","./international.svg":"F9+T","./language.svg":"JYDz","./link.svg":"GPBF","./list.svg":"MokB","./lock.svg":"qwAt","./message.svg":"R/8a","./money.svg":"MEYL","./nested.svg":"3PhE","./password.svg":"Kj24","./pdf.svg":"+aF5","./people.svg":"0Fbn","./peoples.svg":"LxGF","./qq.svg":"FDDl","./search.svg":"jo2x","./settings.svg":"P8iQ","./shopping.svg":"EqXK","./size.svg":"hkRB","./star.svg":"cIpu","./tab.svg":"j7e1","./table.svg":"R/Hx","./theme.svg":"5TQQ","./tiptap-add_col_after.svg":"cBj6","./tiptap-add_col_before.svg":"2QTO","./tiptap-add_row_after.svg":"ec3N","./tiptap-add_row_before.svg":"7x1v","./tiptap-bold.svg":"dSKK","./tiptap-checklist.svg":"8L8/","./tiptap-code.svg":"taZh","./tiptap-combine_cells.svg":"8CrX","./tiptap-delete_col.svg":"LjVp","./tiptap-delete_row.svg":"ENUZ","./tiptap-delete_table.svg":"Dza5","./tiptap-github.svg":"nIMs","./tiptap-hr.svg":"kCbn","./tiptap-image.svg":"iprT","./tiptap-italic.svg":"hRv2","./tiptap-link.svg":"l3nR","./tiptap-mention.svg":"sjxz","./tiptap-ol.svg":"j6nr","./tiptap-paragraph.svg":"igzo","./tiptap-quote.svg":"swuu","./tiptap-redo.svg":"me7H","./tiptap-remove.svg":"NgVs","./tiptap-strike.svg":"kUWf","./tiptap-table.svg":"6S0t","./tiptap-ul.svg":"kGAI","./tiptap-underline.svg":"wfO2","./tiptap-undo.svg":"kpiL","./tree.svg":"k80C","./user.svg":"s7Vf","./wechat.svg":"gNoN","./zip.svg":"iqZD"};function r(e){var t=o(e);return n(t)}function o(e){if(!n.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}r.keys=function(){return Object.keys(a)},r.resolve=o,e.exports=r,r.id="Uf/o"},UqWv:function(e,t,n){},"VtY+":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-component",use:"icon-component-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},Vtdi:function(e,t,n){"use strict";n.r(t);var a={};n.r(a),n.d(a,"parseTime",function(){return Je}),n.d(a,"formatTime",function(){return Xe}),n.d(a,"timeAgo",function(){return Ja}),n.d(a,"numberFormatter",function(){return Xa}),n.d(a,"toThousandFilter",function(){return er});var r=n("Kw5r"),o=n("p46w"),s=n.n(o),i=(n("9d8Q"),n("XJYT")),c=n.n(i),u=(n("D66Q"),n("sg+I"),{name:"App"}),l=n("KHd+"),p=Object(l.a)(u,function(){var e=this.$createElement,t=this._self._c||e;return t("div",{attrs:{id:"app"}},[t("router-view")],1)},[],!1,null,null,null);p.options.__file="App.vue";var d=p.exports,m=n("L2JU"),f=n("o0o1"),h=n.n(f),v=n("yXPU"),g=n.n(v),b=n("t3Un"),w=n("X4fA"),y=n("9i3r");function x(e,t){return S.apply(this,arguments)}function S(){return(S=g()(h.a.mark(function e(t,n){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/need_reboot",method:"get",headers:k(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function E(e,t){return T.apply(this,arguments)}function T(){return(T=g()(h.a.mark(function e(t,n){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/restart",method:"get",headers:k(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var k=function(e){return e?{Authorization:"Bearer ".concat(Object(w.b)())}:{}},O={state:{sidebar:{opened:!s.a.get("sidebarStatus")||!!+s.a.get("sidebarStatus"),withoutAnimation:!1},device:"desktop",language:s.a.get("language")||"en",needReboot:!1,size:s.a.get("size")||"medium",invitesEnabled:!1},mutations:{TOGGLE_SIDEBAR:function(e){e.sidebar.opened=!e.sidebar.opened,e.sidebar.withoutAnimation=!1,e.sidebar.opened?s.a.set("sidebarStatus",1):s.a.set("sidebarStatus",0)},CLOSE_SIDEBAR:function(e,t){s.a.set("sidebarStatus",0),e.sidebar.opened=!1,e.sidebar.withoutAnimation=t},TOGGLE_DEVICE:function(e,t){e.device=t},SET_INVITES_ENABLED:function(e,t){e.invitesEnabled=t},SET_LANGUAGE:function(e,t){e.language=t,s.a.set("language",t)},TOGGLE_REBOOT:function(e,t){e.needReboot=t},SET_SIZE:function(e,t){e.size=t,s.a.set("size",t)}},actions:{closeSideBar:function(e,t){(0,e.commit)("CLOSE_SIDEBAR",t.withoutAnimation)},NeedReboot:function(e){return g()(h.a.mark(function t(){var n,a,r;return h.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,a=e.getters,t.next=3,x(a.authHost,a.token);case 3:r=t.sent,n("TOGGLE_REBOOT",r.data.need_reboot);case 5:case"end":return t.stop()}},t)}))()},RestartApplication:function(e){return g()(h.a.mark(function t(){var n,a;return h.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,a=e.getters,t.next=3,E(a.authHost,a.token);case 3:n("TOGGLE_REBOOT",!1);case 4:case"end":return t.stop()}},t)}))()},SetInvitesEnabled:function(e,t){(0,e.commit)("SET_INVITES_ENABLED",t)},setLanguage:function(e,t){(0,e.commit)("SET_LANGUAGE",t)},setSize:function(e,t){(0,e.commit)("SET_SIZE",t)},toggleDevice:function(e,t){(0,e.commit)("TOGGLE_DEVICE",t)},toggleSideBar:function(e){(0,e.commit)("TOGGLE_SIDEBAR")}}},_=n("cDf5"),L=n.n(_),C=n("QILm"),A=n.n(C),P=n("lSNA"),I=n.n(P),j=n("mm8V"),R=n("mSNy");function M(e){var t=function(e,t){if("object"!==L()(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,t||"default");if("object"!==L()(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===L()(t)?t:String(t)}function D(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function B(e){for(var t=1;t1?r("FetchLocalSinglePack",{name:c,page:s.currentLocalFilesPage-1}):r("FetchLocalSinglePack",{name:c,page:s.currentLocalFilesPage});case 14:case"end":return n.stop()}},n,null,[[4,9]])}))()},CreatePack:function(e,t){return g()(h.a.mark(function n(){var a,r;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.getters,r=t.name,n.next=4,Object(j.c)(a.authHost,a.token,r);case 4:case"end":return n.stop()}},n)}))()},DeletePack:function(e,t){return g()(h.a.mark(function n(){var a,r;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.getters,r=t.name,n.next=4,Object(j.e)(a.authHost,a.token,r);case 4:case"end":return n.stop()}},n)}))()},DownloadFrom:function(e,t){return g()(h.a.mark(function n(){var a,r,o,s;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.getters,r=t.instanceAddress,o=t.packName,s=t.as,n.next=4,Object(j.f)(r,o,s,a.authHost,a.token);case 4:"ok"===n.sent.data&&Object(i.Message)({message:"".concat(R.a.t("settings.successfullyDownloaded")," ").concat(o),type:"success",duration:5e3});case 6:case"end":return n.stop()}},n)}))()},FetchLocalEmojiPacks:function(e,t){return g()(h.a.mark(function n(){var a,r,o,s,i,c,u,l;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.commit,r=e.getters,o=e.state,n.next=3,Object(j.i)(t,o.pageSize,r.authHost,r.token);case 3:s=n.sent,i=s.data,c=i.packs,u=i.count,l=Object.keys(c).reduce(function(e,t){var n=c[t],a=(n.files,A()(n,["files"]));return e[t]=a,e},{}),a("SET_LOCAL_PACKS",l),a("SET_LOCAL_PACKS_COUNT",u),a("SET_LOCAL_PAGE",t);case 10:case"end":return n.stop()}},n)}))()},FetchLocalSinglePack:function(e,t){return g()(h.a.mark(function n(){var a,r,o,s,i,c,u,l,p;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.getters,r=e.commit,o=e.state,s=t.name,i=t.page,n.next=4,Object(j.g)(s,i,o.filesPageSize,a.authHost,a.token);case 4:c=n.sent,u=c.data,l=u.files,p=u.files_count,r("SET_LOCAL_PACK_FILES",{name:s,files:l}),r("SET_LOCAL_FILES_COUNT",p),r("SET_LOCAL_FILES_PAGE",i);case 10:case"end":return n.stop()}},n)}))()},FetchRemoteSinglePack:function(e,t){return g()(h.a.mark(function n(){var a,r,o,s,i,c,u,l,p;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.getters,r=e.commit,o=e.state,s=t.name,i=t.page,n.next=4,Object(j.g)(s,i,o.filesPageSize,a.authHost,a.token);case 4:c=n.sent,u=c.data,l=u.files,p=u.files_count,r("SET_REMOTE_PACK_FILES",{name:s,files:l}),r("SET_REMOTE_FILES_COUNT",p),r("SET_REMOTE_FILES_PAGE",i);case 10:case"end":return n.stop()}},n)}))()},ImportFromFS:function(e){return g()(h.a.mark(function t(){var n,a,r;return h.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.getters,t.next=3,Object(j.h)(n.authHost,n.token);case 3:200===(a=t.sent).status&&(r=a.data.length>0?"".concat(R.a.t("settings.successfullyImported")," ").concat(a.data):R.a.t("settings.nowNewPacksToImport"),Object(i.Message)({message:r,type:"success",duration:5e3}));case 5:case"end":return t.stop()}},t)}))()},ReloadEmoji:function(e){return g()(h.a.mark(function t(){var n;return h.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.getters,t.next=3,Object(j.k)(n.authHost,n.token);case 3:case"end":return t.stop()}},t)}))()},SavePackMetadata:function(e,t){return g()(h.a.mark(function n(){var a,r,o,s,c;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.commit,r=e.getters,o=e.state,s=t.packName,n.next=4,Object(j.l)(r.authHost,r.token,s,o.localPacks[s].pack);case 4:200===(c=n.sent).status&&(Object(i.Message)({message:"".concat(R.a.t("settings.successfullyUpdated")," ").concat(s," ").concat(R.a.t("settings.metadatLowerCase")),type:"success",duration:5e3}),a("UPDATE_LOCAL_PACK_PACK",{name:s,pack:c.data}));case 6:case"end":return n.stop()}},n)}))()},SetActiveTab:function(e,t){(0,e.commit)("SET_ACTIVE_TAB",t)},SetRemoteEmojiPacks:function(e,t){return g()(h.a.mark(function n(){var a,r,o,s,i,c,u,l,p,d;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.commit,r=e.getters,o=e.state,s=t.page,i=t.remoteInstance,n.next=4,Object(j.j)(i,s,o.pageSize,r.authHost,r.token);case 4:c=n.sent,u=c.data,l=u.packs,p=u.count,d=Object.keys(l).reduce(function(e,t){var n=l[t],a=(n.files,A()(n,["files"]));return e[t]=a,e},{}),a("SET_REMOTE_INSTANCE",i),a("SET_REMOTE_PACKS",d),a("SET_REMOTE_PACKS_COUNT",p);case 11:case"end":return n.stop()}},n)}))()},SetRemoteInstance:function(e,t){(0,e.commit)("SET_REMOTE_INSTANCE",t)},UpdateEmojiFile:function(e,t){return g()(h.a.mark(function n(){var a,r,o,s,c,u,l,p,d,m;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.commit,r=e.dispatch,o=e.getters,s=e.state,c=t.packName,u=t.shortcode,l=t.newShortcode,p=t.newFilename,d=t.force,m=Object.keys(s.localPacks[c].files).reduce(function(e,t){return t===u?e[l]=p:e[t]=s.localPacks[c].files[t],e},{}),a("UPDATE_LOCAL_PACK_FILES",{name:c,files:m}),n.prev=4,n.next=7,Object(j.m)(c,u,l,p,d,o.authHost,o.token);case 7:n.next=12;break;case 9:return n.prev=9,n.t0=n.catch(4),n.abrupt("return");case 12:Object(i.Message)({message:"".concat(R.a.t("settings.successfullyUpdated")," ").concat(c," ").concat(R.a.t("settings.metadatLowerCase")),type:"success",duration:5e3}),r("FetchLocalSinglePack",{name:c,page:s.currentLocalFilesPage});case 14:case"end":return n.stop()}},n,null,[[4,9]])}))()},UpdateLocalPackVal:function(e,t){return g()(h.a.mark(function n(){return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:(0,e.commit)("UPDATE_LOCAL_PACK_VAL",t);case 2:case"end":return n.stop()}},n)}))()}}},U={state:{logs:[]},mutations:{ADD_ERROR_LOG:function(e,t){e.logs.push(t)}},actions:{addErrorLog:function(e,t){(0,e.commit)("ADD_ERROR_LOG",t)}}},V={sidebar:function(e){return e.app.sidebar},language:function(e){return e.app.language},size:function(e){return e.app.size},device:function(e){return e.app.device},visitedViews:function(e){return e.tagsView.visitedViews},cachedViews:function(e){return e.tagsView.cachedViews},token:function(e){return e.user.token},avatar:function(e){return e.user.avatar},name:function(e){return e.user.name},introduction:function(e){return e.user.introduction},status:function(e){return e.user.status},roles:function(e){return e.user.roles},setting:function(e){return e.user.setting},permission_routers:function(e){return e.permission.routers},addRouters:function(e){return e.permission.addRouters},errorLogs:function(e){return e.errorLog.logs},users:function(e){return e.users.fetchedUsers},authHost:function(e){return e.user.authHost},settings:function(e){return e.settings}};function z(e,t,n,a){return F.apply(this,arguments)}function F(){return(F=g()(h.a.mark(function e(t,n,a,r){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/invite_token",method:"post",headers:K(r),data:n&&n.length>0?{max_use:t,expires_at:n}:{max_use:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function N(e,t,n,a){return G.apply(this,arguments)}function G(){return(G=g()(h.a.mark(function e(t,n,a,r){var o;return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=n.length>0?{email:t,name:n}:{email:t},e.next=3,Object(b.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/email_invite",method:"post",headers:K(r),data:o});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Z(e,t){return Y.apply(this,arguments)}function Y(){return(Y=g()(h.a.mark(function e(t,n){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/users/invites",method:"get",headers:K(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function $(e,t,n){return q.apply(this,arguments)}function q(){return(q=g()(h.a.mark(function e(t,n,a){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/revoke_invite",method:"post",headers:K(a),data:{token:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var K=function(e){return e?{Authorization:"Bearer ".concat(Object(w.b)())}:{}},W={state:{inviteTokens:[],loading:!1,newToken:{}},mutations:{SET_LOADING:function(e,t){e.loading=t},SET_NEW_TOKEN:function(e,t){e.newToken=t},SET_TOKENS:function(e,t){e.inviteTokens=t}},actions:{FetchInviteTokens:function(e){return g()(h.a.mark(function t(){var n,a,r;return h.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,a=e.getters,n("SET_LOADING",!0),t.next=4,Z(a.authHost,a.token);case 4:r=t.sent,n("SET_TOKENS",r.data.invites.reverse()),n("SET_LOADING",!1);case 7:case"end":return t.stop()}},t)}))()},GenerateInviteToken:function(e,t){return g()(h.a.mark(function n(){var a,r,o,s,i,c,u;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.commit,r=e.dispatch,o=e.getters,s=t.maxUse,i=t.expiresAt,n.prev=2,n.next=5,z(s,i,o.authHost,o.token);case 5:c=n.sent,u=c.data,a("SET_NEW_TOKEN",{token:u.token,maxUse:u.max_use,expiresAt:u.expires_at}),n.next=13;break;case 10:return n.prev=10,n.t0=n.catch(2),n.abrupt("return");case 13:r("FetchInviteTokens");case 14:case"end":return n.stop()}},n,null,[[2,10]])}))()},InviteUserViaEmail:function(e,t){return g()(h.a.mark(function n(){var a,r,o;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return e.commit,e.dispatch,a=e.getters,r=t.email,o=t.name,n.prev=2,n.next=5,N(r,o,a.authHost,a.token);case 5:n.next=10;break;case 7:return n.prev=7,n.t0=n.catch(2),n.abrupt("return");case 10:Object(i.Message)({message:R.a.t("invites.emailSent"),type:"success",duration:5e3});case 11:case"end":return n.stop()}},n,null,[[2,7]])}))()},RemoveNewToken:function(e){(0,e.commit)("SET_NEW_TOKEN",{})},RevokeToken:function(e,t){return g()(h.a.mark(function n(){var a,r;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return e.commit,a=e.dispatch,r=e.getters,n.prev=1,n.next=4,$(t,r.authHost,r.token);case 4:n.next=9;break;case 6:return n.prev=6,n.t0=n.catch(1),n.abrupt("return");case 9:a("FetchInviteTokens");case 10:case"end":return n.stop()}},n,null,[[1,6]])}))()}}};function Q(e,t,n,a){return J.apply(this,arguments)}function J(){return(J=g()(h.a.mark(function e(t,n,a,r){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/media_proxy_caches?page=".concat(t,"&page_size=").concat(n),method:"get",headers:oe(r)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function X(e,t,n,a){return ee.apply(this,arguments)}function ee(){return(ee=g()(h.a.mark(function e(t,n,a,r){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/media_proxy_caches/purge",method:"post",headers:oe(r),data:{urls:t,ban:n}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function te(e,t,n){return ne.apply(this,arguments)}function ne(){return(ne=g()(h.a.mark(function e(t,n,a){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/media_proxy_caches/delete",method:"post",headers:oe(a),data:{urls:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function ae(e,t,n,a,r){return re.apply(this,arguments)}function re(){return(re=g()(h.a.mark(function e(t,n,a,r,o){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(r),url:"/api/pleroma/admin/media_proxy_caches?query=".concat(t,"&page=").concat(n,"&page_size=").concat(a),method:"get",headers:oe(o)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var oe=function(e){return e?{Authorization:"Bearer ".concat(Object(w.b)())}:{}};function se(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function ie(e){for(var t=1;t3&&void 0!==s[3]?s[3]:1,o=new URLSearchParams(ke.a.omitBy(_e(_e({},a),{},{page:r}),ke.a.isUndefined)).toString(),e.next=4,Object(b.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/moderation_log?".concat(o),method:"get",headers:Re(n)});case 4:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ae(e,t){return Pe.apply(this,arguments)}function Pe(){return(Pe=g()(h.a.mark(function e(t,n){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/users?filters=is_admin",method:"get",headers:Re(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ie(e,t){return je.apply(this,arguments)}function je(){return(je=g()(h.a.mark(function e(t,n){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(t),url:"/api/pleroma/admin/users?filters=is_moderator",method:"get",headers:Re(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var Re=function(e){return e?{Authorization:"Bearer ".concat(Object(w.b)())}:{}},Me={state:{fetchedLog:[],logItemsCount:0,admins:[],moderators:[],logLoading:!0,adminsLoading:!0},mutations:{SET_LOG_LOADING:function(e,t){e.logLoading=t},SET_ADMINS_LOADING:function(e,t){e.adminsLoading=t},SET_MODERATION_LOG:function(e,t){e.fetchedLog=t},SET_MODERATION_LOG_COUNT:function(e,t){e.logItemsCount=t},SET_ADMINS:function(e,t){e.admins=t},SET_MODERATORS:function(e,t){e.moderators=t}},actions:{FetchModerationLog:function(e){var t=arguments;return g()(h.a.mark(function n(){var a,r,o,s;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.commit,r=e.getters,o=t.length>1&&void 0!==t[1]?t[1]:{},n.next=4,Le(r.authHost,r.token,o);case 4:s=n.sent,a("SET_MODERATION_LOG",s.data.items),a("SET_MODERATION_LOG_COUNT",s.data.total),a("SET_LOG_LOADING",!1);case 8:case"end":return n.stop()}},n)}))()},FetchAdmins:function(e){return g()(h.a.mark(function t(){var n,a,r,o;return h.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,a=e.getters,t.next=3,Ae(a.authHost,a.token);case 3:return r=t.sent,t.next=6,Ie(a.authHost,a.token);case 6:o=t.sent,n("SET_ADMINS",r.data),n("SET_MODERATORS",o.data),n("SET_ADMINS_LOADING",!1);case 10:case"end":return t.stop()}},t)}))()}}},De=n("RIqP"),Be=n.n(De);function He(e,t){return Ue.apply(this,arguments)}function Ue(){return(Ue=g()(h.a.mark(function e(t,n){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(t),url:"/api/v1/instance/peers",method:"get",headers:Ve(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var Ve=function(e){return e?{Authorization:"Bearer ".concat(Object(w.b)())}:{}},ze={state:{fetchedPeers:[],loading:!0},mutations:{SET_PEERS:function(e,t){e.fetchedPeers=t},SET_LOADING:function(e,t){e.loading=t}},actions:{FetchPeers:function(e){return g()(h.a.mark(function t(){var n,a,r;return h.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,a=e.getters,t.next=3,He(a.authHost,a.token);case 3:r=t.sent,n("SET_PEERS",Be()(r.data).sort()),n("SET_LOADING",!1);case 6:case"end":return t.stop()}},t)}))()}}},Fe=n("jE9Z"),Ne={name:"Hamburger",props:{isActive:{type:Boolean,default:!1},toggleClick:{type:Function,default:null}}},Ge=(n("18BR"),Object(l.a)(Ne,function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticStyle:{padding:"0 15px"},on:{click:this.toggleClick}},[t("svg",{staticClass:"hamburger",class:{"is-active":this.isActive},attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:"64",height:"64"}},[t("path",{attrs:{d:"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z"}})])])},[],!1,null,"69c6c5c4",null));function Ze(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}Ge.options.__file="index.vue";var Ye={components:{Hamburger:Ge.exports},computed:function(e){for(var t=1;t0&&n<10&&(n="0"+n),n||0)})}function Xe(e,t){e=1e3*+e;var n=new Date(e),a=(Date.now()-n)/1e3;return a<30?"刚刚":a<3600?Math.ceil(a/60)+"分钟前":a<86400?Math.ceil(a/3600)+"小时前":a<172800?"1天前":t?Je(e,t):n.getMonth()+1+"月"+n.getDate()+"日"+n.getHours()+"时"+n.getMinutes()+"分"}function et(e){return/^(https?:|mailto:|tel:)/.test(e)}var tt={name:"Item",props:{count:{type:String,default:null},icon:{type:String,default:""},title:{type:String,default:""}}},nt=(n("zEvO"),Object(l.a)(tt,function(){var e=this.$createElement,t=this._self._c||e;return t("span",[t("svg-icon",{attrs:{"icon-class":this.icon}}),this._v(" "),t("span",{attrs:{slot:"title"},slot:"title"},[this._v(this._s(this.title))]),this._v(" "),t("el-badge",{staticClass:"count-badge",attrs:{value:this.count,type:"primary"}})],1)},[],!1,null,"52140d98",null));nt.options.__file="Item.vue";var at=nt.exports,rt={props:{to:{type:String,required:!0}},methods:{linkProps:function(e){return et(e)?{is:"a",href:e,target:"_blank",rel:"noopener"}:{is:"router-link",to:e}}}},ot=Object(l.a)(rt,function(){var e=this.$createElement;return(this._self._c||e)("component",this._b({},"component",this.linkProps(this.to),!1),[this._t("default")],2)},[],!1,null,null,null);ot.options.__file="Link.vue";var st=ot.exports,it=n("ZhIB"),ct=n.n(it);function ut(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function lt(e){for(var t=1;t0?n("sidebar-item",{key:t.path,staticClass:"nest-menu",attrs:{"is-nest":!0,item:t,"base-path":e.resolvePath(t.path)}}):n("app-link",{key:t.name,attrs:{to:e.resolvePath(t.path)}},[n("el-menu-item",{attrs:{index:e.resolvePath(t.path)}},[t.meta?n("item",{attrs:{count:e.showCount(e.item)?e.normalizedReportsCount:null,icon:t.meta.icon,title:e.generateTitle(t.meta.title)}}):e._e()],1)],1)]]})],2):[n("app-link",{attrs:{to:e.resolvePath(e.onlyOneChild.path)}},[n("el-menu-item",{class:{"submenu-title-noDropdown":!e.isNest},attrs:{index:e.resolvePath(e.onlyOneChild.path)}},[e.onlyOneChild.meta?n("item",{attrs:{count:e.showCount(e.item)?e.normalizedReportsCount:null,icon:e.onlyOneChild.meta.icon||e.item.meta.icon,title:e.generateTitle(e.onlyOneChild.meta.title)}}):e._e()],1)],1)]],2):e._e()},[],!1,null,null,null);dt.options.__file="SidebarItem.vue";var mt=dt.exports,ft=n("zx4i"),ht=n.n(ft);function vt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function gt(e){for(var t=1;t0&&(r=a[0],o=a[a.length-1]),r===e)n.scrollLeft=0;else if(o===e)n.scrollLeft=n.scrollWidth-t;else{var s=a.findIndex(function(t){return t===e}),i=a[s-1],c=a[s+1],u=c.$el.offsetLeft+c.$el.offsetWidth+4,l=i.$el.offsetLeft-4;u>n.scrollLeft+t?n.scrollLeft=u-t:l=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,i=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){i=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(i)throw o}}}}function Tt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:"/",a=[];return e.forEach(function(e){if(e.meta&&e.meta.affix&&a.push({path:We.a.resolve(n,e.path),name:e.name,meta:function(e){for(var t=1;t=1&&(a=[].concat(Be()(a),Be()(r)))}}),a},initTags:function(){var e,t=Et(this.affixTags=this.filterAffixTags(this.routers));try{for(t.s();!(e=t.n()).done;){var n=e.value;n.name&&this.$store.dispatch("addVisitedView",n)}}catch(e){t.e(e)}finally{t.f()}},addTags:function(){return this.$route.name&&this.$store.dispatch("addView",this.$route),!1},moveToCurrentTag:function(){var e=this,t=this.$refs.tag;this.$nextTick(function(){var n,a=Et(t);try{for(a.s();!(n=a.n()).done;){var r=n.value;if(r.to.path===e.$route.path){e.$refs.scrollPane.moveToTarget(r),r.to.fullPath!==e.$route.fullPath&&e.$store.dispatch("updateVisitedView",e.$route);break}}}catch(e){a.e(e)}finally{a.f()}})},refreshSelectedTag:function(e){var t=this;this.$store.dispatch("delCachedView",e).then(function(){var n=e.fullPath;t.$nextTick(function(){t.$router.replace({path:"/redirect"+n})})})},closeSelectedTag:function(e){var t=this;this.$store.dispatch("delView",e).then(function(n){var a=n.visitedViews;t.isActive(e)&&t.toLastView(a)})},closeOthersTags:function(){var e=this;this.$router.push(this.selectedTag),this.$store.dispatch("delOthersViews",this.selectedTag).then(function(){e.moveToCurrentTag()})},closeAllTags:function(e){var t=this;this.$store.dispatch("delAllViews").then(function(n){var a=n.visitedViews;t.affixTags.some(function(t){return t.path===e.path})||t.toLastView(a)})},toLastView:function(e){var t=e.slice(-1)[0];t?this.$router.push(t):this.$router.push("/")},openMenu:function(e,t){var n=this.$el.getBoundingClientRect().left,a=this.$el.offsetWidth-105,r=t.clientX-n+15;this.left=r>a?a:r,this.top=t.clientY,this.visible=!0,this.selectedTag=e},closeMenu:function(){this.visible=!1}}},_t=(n("Hnev"),n("Yymj"),Object(l.a)(Ot,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"tags-view-container"},[n("scroll-pane",{ref:"scrollPane",staticClass:"tags-view-wrapper"},e._l(e.visitedViews,function(t){return n("router-link",{key:t.path,ref:"tag",refInFor:!0,staticClass:"tags-view-item",class:e.isActive(t)?"active":"",attrs:{to:{path:t.path,query:t.query,fullPath:t.fullPath},tag:"span"},nativeOn:{mouseup:function(n){return"button"in n&&1!==n.button?null:e.closeSelectedTag(t)},contextmenu:function(n){return n.preventDefault(),e.openMenu(t,n)}}},[e._v("\n "+e._s(e.generateTitle(t.title))+"\n "),t.meta.affix?e._e():n("span",{staticClass:"el-icon-close",on:{click:function(n){return n.preventDefault(),n.stopPropagation(),e.closeSelectedTag(t)}}})])}),1),e._v(" "),n("ul",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"contextmenu",style:{left:e.left+"px",top:e.top+"px"}},[n("li",{on:{click:function(t){return e.refreshSelectedTag(e.selectedTag)}}},[e._v(e._s(e.$t("tagsView.refresh")))]),e._v(" "),e.selectedTag.meta&&e.selectedTag.meta.affix?e._e():n("li",{on:{click:function(t){return e.closeSelectedTag(e.selectedTag)}}},[e._v(e._s(e.$t("tagsView.close")))]),e._v(" "),n("li",{on:{click:e.closeOthersTags}},[e._v(e._s(e.$t("tagsView.closeOthers")))]),e._v(" "),n("li",{on:{click:function(t){return e.closeAllTags(e.selectedTag)}}},[e._v(e._s(e.$t("tagsView.closeAll")))])])],1)},[],!1,null,"e1cdb714",null));_t.options.__file="TagsView.vue";var Lt=_t.exports,Ct={name:"AppMain",computed:{cachedViews:function(){return this.$store.state.tagsView.cachedViews},key:function(){return this.$route.fullPath}}},At=(n("Z+gY"),Object(l.a)(Ct,function(){var e=this.$createElement,t=this._self._c||e;return t("section",{staticClass:"app-main"},[t("transition",{attrs:{name:"fade-transform",mode:"out-in"}},[t("keep-alive",{attrs:{include:this.cachedViews}},[t("router-view",{key:this.key})],1)],1)],1)},[],!1,null,"f852c4f2",null));At.options.__file="AppMain.vue";var Pt=At.exports,It=document.body,jt={name:"Layout",components:{Navbar:qe,Sidebar:yt,AppMain:Pt,TagsView:Lt},mixins:[{watch:{$route:function(e){"mobile"===this.device&&this.sidebar.opened&&Ga.dispatch("closeSideBar",{withoutAnimation:!1})}},beforeMount:function(){window.addEventListener("resize",this.resizeHandler)},mounted:function(){var e=this.isMobile(),t=this.isTablet();(e||t)&&(Ga.dispatch("toggleDevice",e?"mobile":"tablet"),Ga.dispatch("closeSideBar",{withoutAnimation:!0}))},methods:{isMobile:function(){return It.getBoundingClientRect().width-3<480},isTablet:function(){var e=It.getBoundingClientRect();return e.width-3<801&&e.width-3>480},resizeHandler:function(){if(!document.hidden){var e=this.isMobile(),t=this.isTablet();e||t?(Ga.dispatch("toggleDevice",e?"mobile":"tablet"),Ga.dispatch("closeSideBar",{withoutAnimation:!0})):Ga.dispatch("toggleDevice","desktop")}}}}],computed:{sidebar:function(){return this.$store.state.app.sidebar},device:function(){return this.$store.state.app.device},classObj:function(){return{hideSidebar:!this.sidebar.opened,openSidebar:this.sidebar.opened,withoutAnimation:this.sidebar.withoutAnimation,mobile:"mobile"===this.device}}},methods:{handleClickOutside:function(){this.$store.dispatch("closeSideBar",{withoutAnimation:!1})}}},Rt=(n("SZWj"),Object(l.a)(jt,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"app-wrapper",class:e.classObj},["mobile"===e.device&&e.sidebar.opened?n("div",{staticClass:"drawer-bg",on:{click:e.handleClickOutside}}):e._e(),e._v(" "),n("sidebar",{staticClass:"sidebar-container"}),e._v(" "),n("div",{staticClass:"main-container"},[n("navbar"),e._v(" "),n("app-main")],1)],1)},[],!1,null,"767d264f",null));Rt.options.__file="Layout.vue";var Mt=Rt.exports;r.default.use(Fe.a);var Dt=[""]||!1,Bt=Dt.includes("settings"),Ht={path:"/settings",component:Mt,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-68ea"),n.e("chunk-9d55")]).then(n.bind(null,"YcIK"))},name:"Settings",meta:{title:"settings",icon:"settings",noCache:!0}}]},Ut=Dt.includes("statuses"),Vt={path:"/statuses",component:Mt,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-d55e"),n.e("chunk-f625"),n.e("chunk-176e")]).then(n.bind(null,"FtQ1"))},name:"Statuses",meta:{title:"statuses",icon:"form",noCache:!0}}]},zt=Dt.includes("reports"),Ft={path:"/reports",component:Mt,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-d55e"),n.e("chunk-850d")]).then(n.bind(null,"cEOe"))},name:"Reports",meta:{title:"reports",icon:"documentation",noCache:!0}}]},Nt=Dt.includes("invites"),Gt={path:"/invites",component:Mt,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-7c6b")]).then(n.bind(null,"HMof"))},name:"Invites",meta:{title:"invites",icon:"guide",noCache:!0}}]},Zt=Dt.includes("emoji-packs"),Yt={path:"/emoji_packs",component:Mt,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-546f")]).then(n.bind(null,"26YS"))},name:"Emoji Packs",meta:{title:"emoji-packs",icon:"eye-open",noCache:!0}}]},$t=Dt.includes("moderation-log"),qt={path:"/moderation_log",component:Mt,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-d55e"),n.e("chunk-654d")]).then(n.bind(null,"CmY0"))},name:"Moderation Log",meta:{title:"moderationLog",icon:"list",noCache:!0}}]},Kt=Dt.includes("media-proxy-cache"),Wt={path:"/media_proxy_cache",component:Mt,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-03c5")]).then(n.bind(null,"mAEd"))},name:"MediaProxy Cache",meta:{title:"mediaProxyCache",icon:"example",noCache:!0}}]},Qt=[{path:"/redirect",component:Mt,hidden:!0,children:[{path:"/redirect/:path*",component:function(){return n.e("7zzA").then(n.bind(null,"7zzA"))}}]},{path:"/login-pleroma",component:function(){return Promise.all([n.e("oAJy"),n.e("chunk-16d0")]).then(n.bind(null,"iRgq"))},hidden:!0},{path:"/login",component:function(){return Promise.all([n.e("oAJy"),n.e("chunk-d34d")]).then(n.bind(null,"ntYl"))},hidden:!0},{path:"/auth-redirect",component:function(){return n.e("JEtC").then(n.bind(null,"JEtC"))},hidden:!0},{path:"/404",component:function(){return n.e("chunk-68ea9").then(n.bind(null,"/eX4"))},hidden:!0},{path:"/401",component:function(){return n.e("chunk-6e81").then(n.bind(null,"UUO+"))},hidden:!0},{path:"",component:Mt,redirect:"/users/index"}],Jt=new Fe.a({scrollBehavior:function(){return{y:0}},routes:Qt}),Xt=[{path:"/users",component:Mt,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-f625"),n.e("chunk-342d")]).then(n.bind(null,"RGjw"))},name:"Users",meta:{title:"users",icon:"peoples",noCache:!0}}]}].concat(Be()(Ut?[]:[Vt]),Be()(zt?[]:[Ft]),Be()(Nt?[]:[Gt]),Be()(Zt?[]:[Yt]),Be()($t?[]:[qt]),Be()(Kt?[]:[Wt]),Be()(Bt?[]:[Ht]),[{path:"/users/:id",component:Mt,children:[{path:"",name:"UsersShow",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-d55e"),n.e("chunk-521f")]).then(n.bind(null,"4bFr"))}}],hidden:!0},{path:"/statuses/:id",component:Mt,children:[{path:"",name:"StatusShow",component:function(){return Promise.all([n.e("chunk-commons"),n.e("chunk-d55e"),n.e("chunk-3365")]).then(n.bind(null,"rwwt"))}}],hidden:!0},{path:"*",redirect:"/404",hidden:!0}]);function en(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function tn(e,t){var n=[];return e.forEach(function(e){var a=function(e){for(var t=1;t0?"/api/pleroma/admin/reports?state=".concat(t,"&page=").concat(n,"&page_size=").concat(a):"/api/pleroma/admin/reports?page=".concat(n,"&page_size=").concat(a),e.next=3,Object(b.a)({baseURL:Object(y.a)(r),url:s,method:"get",headers:bn(o)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function vn(){return(vn=g()(h.a.mark(function e(t,n,a,r){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/reports/".concat(n,"/notes"),method:"post",headers:bn(r),data:{content:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function gn(){return(gn=g()(h.a.mark(function e(t,n,a,r){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/reports/".concat(n,"/notes/").concat(t),method:"delete",headers:bn(r)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var bn=function(e){return e?{Authorization:"Bearer ".concat(Object(w.b)())}:{}};function wn(e,t,n){return yn.apply(this,arguments)}function yn(){return(yn=g()(h.a.mark(function e(t,n,a){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/activate",method:"patch",headers:ra(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function xn(e,t,n,a){return Sn.apply(this,arguments)}function Sn(){return(Sn=g()(h.a.mark(function e(t,n,a,r){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/permission_group/".concat(n),method:"post",headers:ra(r),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function En(e,t,n,a,r){return Tn.apply(this,arguments)}function Tn(){return(Tn=g()(h.a.mark(function e(t,n,a,r,o){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(r),url:"/api/pleroma/admin/users",method:"post",headers:ra(o),data:{users:[{nickname:t,email:n,password:a}]}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function kn(e,t,n){return On.apply(this,arguments)}function On(){return(On=g()(h.a.mark(function e(t,n,a){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/deactivate",method:"patch",headers:ra(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function _n(e,t,n,a){return Ln.apply(this,arguments)}function Ln(){return(Ln=g()(h.a.mark(function e(t,n,a,r){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/permission_group/".concat(n),method:"delete",headers:ra(r),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Cn(e,t,n){return An.apply(this,arguments)}function An(){return(An=g()(h.a.mark(function e(t,n,a){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users",method:"delete",headers:ra(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Pn(e,t,n){return In.apply(this,arguments)}function In(){return(In=g()(h.a.mark(function e(t,n,a){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/disable_mfa",method:"put",headers:ra(a),data:{nickname:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function jn(e,t,n){return Rn.apply(this,arguments)}function Rn(){return(Rn=g()(h.a.mark(function e(t,n,a){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/".concat(t),method:"get",headers:ra(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Mn(e,t,n){return Dn.apply(this,arguments)}function Dn(){return(Dn=g()(h.a.mark(function e(t,n,a){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/".concat(t,"/credentials"),method:"get",headers:ra(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Bn(e,t,n,a){return Hn.apply(this,arguments)}function Hn(){return(Hn=g()(h.a.mark(function e(t,n,a,r){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/".concat(t,"/credentials"),method:"patch",headers:ra(r),data:n});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Un(e,t,n){return Vn.apply(this,arguments)}function Vn(){return(Vn=g()(h.a.mark(function e(t,n,a){var r,o=arguments;return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.length>3&&void 0!==o[3]?o[3]:1,e.next=3,Object(b.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users?page=".concat(r,"&filters=").concat(t),method:"get",headers:ra(a)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function zn(e,t,n){return Fn.apply(this,arguments)}function Fn(){return(Fn=g()(h.a.mark(function e(t,n,a){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/".concat(t,"/password_reset"),method:"get",headers:ra(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Nn(e,t,n){return Gn.apply(this,arguments)}function Gn(){return(Gn=g()(h.a.mark(function e(t,n,a){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/force_password_reset",method:"patch",headers:ra(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Zn(e,t,n,a){return Yn.apply(this,arguments)}function Yn(){return(Yn=g()(h.a.mark(function e(t,n,a,r){var o,s=arguments;return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=s.length>4&&void 0!==s[4]?s[4]:1,e.next=3,Object(b.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users?query=".concat(t,"&page=").concat(o,"&filters=").concat(n),method:"get",headers:ra(r)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function $n(e,t,n,a){return qn.apply(this,arguments)}function qn(){return(qn=g()(h.a.mark(function e(t,n,a,r){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/tag",method:"put",headers:ra(r),data:{nicknames:t,tags:n}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Kn(e,t,n,a){return Wn.apply(this,arguments)}function Wn(){return(Wn=g()(h.a.mark(function e(t,n,a,r){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(a),url:"/api/pleroma/admin/users/tag",method:"delete",headers:ra(r),data:{nicknames:t,tags:n}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Qn(){return(Qn=g()(h.a.mark(function e(t,n,a,r){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/".concat(t,"/statuses?godmode=").concat(a),method:"get",headers:ra(r)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Jn(e,t,n){return Xn.apply(this,arguments)}function Xn(){return(Xn=g()(h.a.mark(function e(t,n,a){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/approve",method:"patch",headers:ra(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function ea(e,t,n){return ta.apply(this,arguments)}function ta(){return(ta=g()(h.a.mark(function e(t,n,a){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/confirm_email",method:"patch",headers:ra(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function na(e,t,n){return aa.apply(this,arguments)}function aa(){return(aa=g()(h.a.mark(function e(t,n,a){return h.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(b.a)({baseURL:Object(y.a)(n),url:"/api/pleroma/admin/users/resend_confirmation_email",method:"patch",headers:ra(a),data:{nicknames:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var ra=function(e){return e?{Authorization:"Bearer ".concat(Object(w.b)())}:{}};function oa(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function sa(e){for(var t=1;t0?a("FetchUserStatuses",{userId:u,godmode:l}):p?a("FetchStatusesByInstance"):a("FetchStatusAfterUserModeration",o);case 5:case"end":return n.stop()}},n)}))()},ClearState:function(e){var t=e.commit;t("CHANGE_SELECTED_INSTANCE",""),t("SET_STATUSES_BY_INSTANCE",[]),t("CHANGE_LOCAL_CHECKBOX_VALUE",!1),t("CHANGE_GODMODE_CHECKBOX_VALUE",!1),t("SET_ALL_LOADED",!1),t("CHANGE_PAGE",1)},DeleteStatus:function(e,t){return g()(h.a.mark(function n(){var a,r,o,s,i,c,u;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.dispatch,r=e.getters,o=t.statusId,s=t.reportCurrentPage,i=t.userId,c=t.godmode,u=t.fetchStatusesByInstance,n.next=4,ha(o,r.authHost,r.token);case 4:0!==s?a("FetchReports",s):i.length>0?a("FetchUserStatuses",{userId:i,godmode:c}):u&&a("FetchStatusesByInstance");case 5:case"end":return n.stop()}},n)}))()},FetchStatus:function(e,t){return g()(h.a.mark(function n(){var a,r,o,s,i;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.commit,r=e.dispatch,o=e.getters,s=e.state,a("SET_LOADING",!0),n.next=4,ga(t,o.authHost,o.token);case 4:i=n.sent,a("SET_STATUS",i.data),a("SET_STATUS_AUTHOR",i.data.account),a("SET_LOADING",!1),r("FetchUserStatuses",{userId:s.fetchedStatus.account.id,godmode:!1});case 9:case"end":return n.stop()}},n)}))()},FetchStatusAfterUserModeration:function(e,t){var n=e.commit,a=e.dispatch,r=e.getters;e.state;n("SET_LOADING",!0),ga(t,r.authHost,r.token).then(function(e){return a("SetStatus",e.data)}),n("SET_LOADING",!1)},FetchStatusesCount:function(e,t){return g()(h.a.mark(function n(){var a,r,o,s;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.commit,r=e.getters,a("SET_LOADING",!0),n.next=4,xa(t,r.authHost,r.token);case 4:o=n.sent,s=o.data,a("SET_STATUS_VISIBILITY",s.status_visibility),a("SET_LOADING",!1);case 8:case"end":return n.stop()}},n)}))()},FetchStatusesByInstance:function(e){return g()(h.a.mark(function t(){var n,a,r,o,s,i;return h.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(n=e.commit,a=e.dispatch,r=e.getters,o=e.state,s=e.rootState,n("SET_LOADING",!0),a("FetchStatusesCount",o.statusesByInstance.selectedInstance),""!==o.statusesByInstance.selectedInstance){t.next=7;break}n("SET_STATUSES_BY_INSTANCE",[]),t.next=19;break;case 7:if(o.statusesByInstance.selectedInstance!==s.user.authHost){t.next=13;break}return t.next=10,wa({godmode:o.statusesByInstance.showPrivate,localOnly:o.statusesByInstance.showLocal,authHost:r.authHost,token:r.token,pageSize:o.statusesByInstance.pageSize,page:o.statusesByInstance.page});case 10:t.t0=t.sent,t.next=16;break;case 13:return t.next=15,Ea({instance:o.statusesByInstance.selectedInstance,authHost:r.authHost,token:r.token,pageSize:o.statusesByInstance.pageSize,page:o.statusesByInstance.page});case 15:t.t0=t.sent;case 16:i=t.t0,n("SET_STATUSES_BY_INSTANCE",i.data),i.data.length=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,i=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){i=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(i)throw o}}}}function Aa(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);nThis user doesn`t have admin rights. Try another credentials or see the docs to find out how to make this user an admin'),t("SET_NAME",r.username),t("SET_ID",r.id),t("SET_AVATAR",r.avatar),t("SET_INTRODUCTION",""),e(n)}).catch(function(e){a(e)})})},LogOut:function(e){var t=e.commit;t("SET_TOKEN",""),t("SET_ROLES",[]),Object(w.d)(),Object(w.c)()},FedLogOut:function(e){var t=e.commit;return new Promise(function(e){t("SET_TOKEN",""),Object(w.d)(),Object(w.c)(),e()})},LoginByPleromaFE:function(e,t){return g()(h.a.mark(function n(){var a,r,o;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:a=e.commit,r=e.dispatch,o=t.token,a("SET_TOKEN",o),Object(w.f)(o),a("SET_AUTH_HOST",window.location.host),Object(w.e)(window.location.host),r("GetUserInfo");case 7:case"end":return n.stop()}},n)}))()}}},Ha={state:{statuses:[],statusesLoading:!0,user:{},userCredentials:{},userProfileLoading:!0},mutations:{SET_STATUSES:function(e,t){e.statuses=t},SET_STATUSES_LOADING:function(e,t){e.statusesLoading=t},SET_USER:function(e,t){e.user=t},SET_USER_PROFILE_LOADING:function(e,t){e.userProfileLoading=t},SET_USER_CREDENTIALS:function(e,t){e.userCredentials=t}},actions:{FetchUserProfile:function(e,t){return g()(h.a.mark(function n(){var a,r,o,s,i,c;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.commit,r=e.dispatch,o=e.getters,s=t.userId,i=t.godmode,a("SET_USER_PROFILE_LOADING",!0),n.next=5,jn(s,o.authHost,o.token);case 5:c=n.sent,a("SET_USER",c.data),a("SET_USER_PROFILE_LOADING",!1),r("FetchUserStatuses",{userId:s,godmode:i});case 9:case"end":return n.stop()}},n)}))()},FetchUserStatuses:function(e,t){var n=e.commit,a=e.dispatch,r=e.getters,o=t.userId,s=t.godmode;n("SET_STATUSES_LOADING",!0),function(e,t,n,a){return Qn.apply(this,arguments)}(o,r.authHost,s,r.token).then(function(e){return a("SetStatuses",e.data)}),n("SET_STATUSES_LOADING",!1)},FetchUserCredentials:function(e,t){return g()(h.a.mark(function n(){var a,r,o,s;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.commit,r=e.getters,o=t.nickname,n.next=4,Mn(o,r.authHost,r.token);case 4:s=n.sent,a("SET_USER_CREDENTIALS",s.data);case 6:case"end":return n.stop()}},n)}))()},SetStatuses:function(e,t){(0,e.commit)("SET_STATUSES",t)},UpdateUserCredentials:function(e,t){return g()(h.a.mark(function n(){var a,r,o,s;return h.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return a=e.dispatch,r=e.getters,o=t.nickname,s=t.credentials,n.next=4,Bn(o,s,r.authHost,r.token);case 4:a("FetchUserCredentials",{nickname:o});case 5:case"end":return n.stop()}},n)}))()}}};function Ua(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function Va(e){for(var t=1;t=n[a].value)return(e/n[a].value+.1).toFixed(t).replace(/\.0+$|(\.[0-9]*[1-9])0+$/,"$1")+n[a].symbol;return e.toString()}function er(e){return(+e||0).toString().replace(/^-?\d+/g,function(e){return e.replace(/(?=(?!\b)(\d{3})+$)/g,",")})}Jt.beforeEach(function(e,t,n){$a.a.start(),Object(w.b)()?"/login"===e.path?(n({path:"/"}),$a.a.done()):0===Ga.getters.roles.length?Ga.dispatch("GetUserInfo").then(function(t){var a=t.data.pleroma.is_admin?["admin"]:[];Ga.dispatch("GenerateRoutes",{roles:a}).then(function(){Jt.addRoutes(Ga.getters.addRouters),n(Ka(Ka({},e),{},{replace:!0}))})}).catch(function(e){Ga.dispatch("FedLogOut").then(function(){Object(i.Message)({dangerouslyUseHTMLString:!0,message:e,type:"error",duration:1e4}),n({path:"/"})})}):function(e,t){return e.indexOf("admin")>=0||!t||e.some(function(e){return t.indexOf(e)>=0})}(Ga.getters.roles,e.meta.roles)?n():n({path:"/401",replace:!0,query:{noGoBack:!0}}):-1!==Wa.indexOf(e.path)?n():(n("/login?redirect=".concat(e.path)),$a.a.done())}),Jt.afterEach(function(){$a.a.done()}),r.default.use(c.a,{size:s.a.get("size")||"medium",i18n:function(e,t){return R.a.t(e,t)}}),Object.keys(a).forEach(function(e){r.default.filter(e,a[e])}),r.default.config.productionTip=!1,new r.default({el:"#app",router:Jt,store:Ga,i18n:R.a,render:function(e){return e(d)}})},X4fA:function(e,t,n){"use strict";n.d(t,"b",function(){return i}),n.d(t,"f",function(){return c}),n.d(t,"d",function(){return u}),n.d(t,"a",function(){return l}),n.d(t,"e",function(){return p}),n.d(t,"c",function(){return d});var a=n("p46w"),r=n.n(a),o="Admin-Token",s="Auth-Host";function i(){return r.a.get(o)}function c(e){return r.a.set(o,e)}function u(){return r.a.remove(o)}function l(){return r.a.get(s)}function p(e){return r.a.set(s,e)}function d(){return r.a.remove(s)}},Xm3t:function(e,t,n){},Yymj:function(e,t,n){"use strict";var a=n("jf83");n.n(a).a},"Z+gY":function(e,t,n){"use strict";var a=n("Kcm3");n.n(a).a},ZZmv:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-excel",use:"icon-excel-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},ZoO1:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-guide",use:"icon-guide-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},cBj6:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-add_col_after",use:"icon-tiptap-add_col_after-usage",viewBox:"0 0 24 24",content:'\n \n'});s.a.add(i);t.default=i},cIpu:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-star",use:"icon-star-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},dSKK:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-bold",use:"icon-tiptap-bold-usage",viewBox:"0 0 24 24",content:'text-bold'});s.a.add(i);t.default=i},ec3N:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-add_row_after",use:"icon-tiptap-add_row_after-usage",viewBox:"0 0 24 24",content:'\n \n'});s.a.add(i);t.default=i},fhHp:function(e,t,n){"use strict";var a=n("lt0h");n.n(a).a},gNoN:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-wechat",use:"icon-wechat-usage",viewBox:"0 0 128 110",content:''});s.a.add(i);t.default=i},h74u:function(e,t,n){"use strict";n.d(t,"b",function(){return g}),n.d(t,"c",function(){return w}),n.d(t,"d",function(){return y}),n.d(t,"e",function(){return T}),n.d(t,"f",function(){return O}),n.d(t,"g",function(){return _}),n.d(t,"a",function(){return C});var a=n("RIqP"),r=n.n(a),o=n("cDf5"),s=n.n(o),i=n("lSNA"),c=n.n(i),u=n("J4zp"),l=n.n(u),p=n("SA+Z"),d=n.n(p),m=n("LvDl"),f=n.n(m);function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function v(e){for(var t=1;t0||Array.isArray(e)&&e.includes("boolean")&&e.includes("atom")&&"string"==typeof t},T=function e(t,n,a,o,s,i,u){var l=d()(s),p=l[0],m=p.key,f=p.type,h=l.slice(1),g=[a,o].concat(r()(s.reverse().map(function(e){return e.key}).slice(0,-1))),w=k("state",i,g)?v(v({},b("state",i[a][o],s.map(function(e){return e.key}).slice(0,-1))),c()({},m,t)):c()({},m,t),y=k("updatedSettings",u,g)?v(v({},b("updatedSettings",u[a][o],s.map(function(e){return e.key}).slice(0,-1))[1]),c()({},m,[f,n])):c()({},m,[f,n]);return":mime"===a&&":types"===s[0].key&&(w=i[a][s[0].key]?v(v({},i[a][s[0].key].value),w):w,y=i[a][s[0].key]?v(v({},Object.keys(i[a][s[0].key].value).reduce(function(e,t){return v(v({},e),{},c()({},t,[f,i[a][s[0].key].value[t]]))},{})),y):y),1===h.length?{valueForState:w,valueForUpdatedSettings:y,setting:h[0]}:e(w,y,a,o,h,i,u)},k=function(e,t,n){if("state"===e)return f.a.get(t,n);var a=d()(n),r=a[0],o=a[1],s=a[2],i=a.slice(3),c=f.a.get(t,[r,o,s]);if(0!==i.length&&c){return function e(t,n){if(0===n.length)return!0;var a=d()(n),r=a[0],o=a.slice(1);return!!t[1][r]&&e(t[1][r],o)}(c,i)}return c||!1},O=function(e,t){var n=Array.isArray(t)&&t.length>0&&t.every(function(e){return"object"!==s()(e)});return":meta"===e||":types"===e||":backends"===e||":compiled_template_engines"===e||":compiled_format_encoders"===e||"string"==typeof t||"number"==typeof t||"boolean"==typeof t||null===t||n},_=function(e,t,n){return Object.keys(t).map(function(a){return t[a]._value?{group:e,key:a,value:function(e,t){var n=l()(t,2),a=n[0],r=n[1];if(E(a,r))return":".concat(r);if(":backends"===e){var o=r.findIndex(function(e){return":ex_syslogger"===e}),s=r.slice();return-1!==o&&(s[o]={tuple:["ExSyslogger",":ex_syslogger"]}),s}return":types"===e?Object.keys(r).reduce(function(e,t){return v(v({},e),{},c()({},t,r[t][1]))},{}):r}(a,t[a]._value)}:{group:e,key:a,value:L(t[a],n[e][a])}})},L=function e(t,n){return Object.keys(t).map(function(a){var r=l()(t[a],2),o=r[0],s=r[1];if("keyword"===o||Array.isArray(o)&&(o.includes("keyword")||o.includes("tuple")&&o.includes("list")))return{tuple:[a,e(s,n)]};if(E(o,s))return{tuple:[a,":".concat(s)]};if(o.includes("tuple")&&(o.includes("string")||o.includes("atom")))return"string"==typeof s?{tuple:[a,s]}:{tuple:[a,{tuple:s}]};if("reversed_tuple"===o)return{tuple:[s,a]};if("map"===o){var i=Object.keys(s).reduce(function(e,t){return e[t]=s[t][1],e},{});return{tuple:[a,v(v({},n[a]),i)]}}return o.includes("map")&&!o.includes("list")?{tuple:[a,Object.keys(s).reduce(function(e,t){return e[t]=s[t][1],e},{})]}:":ip"===a?{tuple:[a,{tuple:s.split(".").map(function(e){return parseInt(e,10)})}]}:{tuple:[a,s]}})},C=function(e){return e.reduce(function(e,t){var n=f.a.compact([t.key,t.label,t.description]).map(function(e){return e.toLowerCase()}),a={label:t.label,key:t.key||t.group,groupKey:t.key||t.group,groupLabel:t.label,search:n};if(t.children){var o=t.key||":pleroma"!==t.group?[].concat(r()(e),[a]):e;return[].concat(r()(o),r()(function e(t,n,a){return t.reduce(function(t,o){var s=f.a.compact([o.key,o.label,o.description]).map(function(e){return e.toLowerCase()}),i={label:o.label,key:o.key||o.group,groupKey:a,groupLabel:n,search:s};if(o.children){var c=[].concat(r()(t),[i]);return[].concat(r()(c),r()(e(o.children,n,a)))}return[].concat(r()(t),[i])},[])}(t.children,t.label,t.key||t.group)))}return t.key||":pleroma"!==t.group?[].concat(r()(e),[a]):e},[]).concat([{groupKey:":instance_panel",groupLabel:"Instance Panel",key:":instance_panel",label:"Instance Panel",search:["Instance Panel",":instance_panel"]},{groupKey:":terms_of_services",groupLabel:"Terms of Services",key:":terms_of_services",label:"Terms of Services",search:["Terms of Services",":terms_of_services"]}])}},hRv2:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-italic",use:"icon-tiptap-italic-usage",viewBox:"0 0 24 24",content:'text-italic'});s.a.add(i);t.default=i},hkRB:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-size",use:"icon-size-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},igzo:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-paragraph",use:"icon-tiptap-paragraph-usage",viewBox:"0 0 24 24",content:'paragraph'});s.a.add(i);t.default=i},iprT:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-image",use:"icon-tiptap-image-usage",viewBox:"0 0 24 24",content:'paginate-filter-picture-alternate'});s.a.add(i);t.default=i},iqZD:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-zip",use:"icon-zip-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},j6nr:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-ol",use:"icon-tiptap-ol-usage",viewBox:"0 0 24 24",content:'list-numbers'});s.a.add(i);t.default=i},j7e1:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tab",use:"icon-tab-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},jf83:function(e,t,n){},jo2x:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-search",use:"icon-search-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},k80C:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tree",use:"icon-tree-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},kCbn:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-hr",use:"icon-tiptap-hr-usage",viewBox:"0 0 24 24",content:'\n \n'});s.a.add(i);t.default=i},kGAI:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-ul",use:"icon-tiptap-ul-usage",viewBox:"0 0 24 24",content:'list-bullets'});s.a.add(i);t.default=i},kPu2:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-documentation",use:"icon-documentation-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},kUWf:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-strike",use:"icon-tiptap-strike-usage",viewBox:"0 0 24 24",content:'text-strike-through'});s.a.add(i);t.default=i},kpiL:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-undo",use:"icon-tiptap-undo-usage",viewBox:"0 0 24 24",content:'undo'});s.a.add(i);t.default=i},l3nR:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-link",use:"icon-tiptap-link-usage",viewBox:"0 0 24 24",content:'hyperlink-2'});s.a.add(i);t.default=i},lt0h:function(e,t,n){},"m7++":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-drag",use:"icon-drag-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},mDMp:function(e,t,n){"use strict";var a=n("Tfa4");n.n(a).a},mSHS:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-fullscreen",use:"icon-fullscreen-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},mSNy:function(e,t,n){"use strict";var a=n("lSNA"),r=n.n(a),o=n("Kw5r"),s=n("qSUR"),i=n("p46w"),c=n.n(i),u=n("stYL"),l=n.n(u),p=n("8NkQ"),d=n.n(p),m=n("PtZe"),f=n.n(m);function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function v(e){for(var t=1;t & +",image:"Image"}}),l.a),zh:v(v({},{route:{dashboard:"首页",introduction:"简述",documentation:"文档",guide:"引导页",permission:"权限测试页",pagePermission:"页面权限",directivePermission:"指令权限",icons:"图标",components:"组件",componentIndex:"介绍",markdown:"Markdown",jsonEditor:"JSON编辑器",dndList:"列表拖拽",splitPane:"Splitpane",avatarUpload:"头像上传",dropzone:"Dropzone",sticky:"Sticky",countTo:"CountTo",componentMixin:"小组件",backToTop:"返回顶部",dragDialog:"拖拽 Dialog",dragSelect:"拖拽 Select",dragKanban:"可拖拽看板",charts:"图表",keyboardChart:"键盘图表",lineChart:"折线图",mixChart:"混合图表",example:"综合实例",nested:"路由嵌套",menu1:"菜单1","menu1-1":"菜单1-1","menu1-2":"菜单1-2","menu1-2-1":"菜单1-2-1","menu1-2-2":"菜单1-2-2","menu1-3":"菜单1-3",menu2:"菜单2",Table:"Table",dynamicTable:"动态Table",dragTable:"拖拽Table",inlineEditTable:"Table内编辑",complexTable:"综合Table",treeTable:"树形表格",customTreeTable:"自定义树表",tab:"Tab",form:"表单",createArticle:"创建文章",editArticle:"编辑文章",articleList:"文章列表",errorPages:"错误页面",page401:"401",page404:"404",errorLog:"错误日志",excel:"Excel",exportExcel:"Export Excel",selectExcel:"Export Selected",uploadExcel:"Upload Excel",zip:"Zip",pdf:"PDF",exportZip:"Export Zip",theme:"换肤",clipboardDemo:"Clipboard",i18n:"国际化",externalLink:"外链"},navbar:{logOut:"退出登录",dashboard:"首页",github:"项目地址",theme:"换肤",size:"布局大小"},login:{title:"系统登录",logIn:"登录",username:"账号",password:"密码",any:"随便填",thirdparty:"第三方登录",thirdpartyTips:"本地不能模拟,请结合自己业务进行模拟!!!"},documentation:{documentation:"文档",github:"Github 地址"},permission:{roles:"你的权限",switchRoles:"切换权限",tips:"在某些情况下,不适合使用 v-permission。例如:Element-UI 的 Tab 组件或 el-table-column 以及其它动态渲染 dom 的场景。你只能通过手动设置 v-if 来实现。"},guide:{description:"引导页对于一些第一次进入项目的人很有用,你可以简单介绍下项目的功能。本 Demo 是基于",button:"打开引导"},components:{documentation:"文档",dropzoneTips:"由于我司业务有特殊需求,而且要传七牛 所以没用第三方,选择了自己封装。代码非常的简单,具体代码你可以在这里看到 @/components/element-ui/Dropzone",stickyTips:"当页面滚动到预设的位置会吸附在顶部",backToTopTips1:"页面滚动到指定位置会在右下角出现返回顶部按钮",backToTopTips2:"可自定义按钮的样式、show/hide、出现的高度、返回的位置 如需文字提示,可在外部使用Element的el-tooltip元素",imageUploadTips:"由于我在使用时它只有vue@1版本,而且和mockjs不兼容,所以自己改造了一下,如果大家要使用的话,优先还是使用官方版本。"},table:{dynamicTips1:"固定表头, 按照表头顺序排序",dynamicTips2:"不固定表头, 按照点击顺序排序",dragTips1:"默认顺序",dragTips2:"拖拽后顺序",title:"标题",importance:"重要性",type:"类型",remark:"点评",search:"搜索",add:"添加",export:"导出",reviewer:"审核人",id:"序号",date:"时间",author:"作者",readings:"阅读数",status:"状态",actions:"操作",edit:"编辑",publish:"发布",draft:"草稿",delete:"删除",cancel:"取 消",confirm:"确 定"},errorLog:{tips:"请点击右上角bug小图标",description:"现在的管理后台基本都是spa的形式了,它增强了用户体验,但同时也会增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在 Vue 官网提供了一个方法来捕获处理异常,你可以在其中进行错误处理或者异常上报。",documentation:"文档介绍"},excel:{export:"导出",selectedExport:"导出已选择项",placeholder:"请输入文件名(默认excel-list)"},zip:{export:"导出",placeholder:"请输入文件名(默认file)"},pdf:{tips:"这里使用 window.print() 来实现下载pdf的功能"},theme:{change:"换肤",documentation:"换肤文档",tips:"Tips: 它区别于 navbar 上的 theme-pick, 是两种不同的换肤方法,各自有不同的应用场景,具体请参考文档。"},tagsView:{refresh:"刷新",close:"关闭",closeOthers:"关闭其它",closeAll:"关闭所有"}}),d.a),es:v(v({},{route:{dashboard:"Panel de control",introduction:"Introducción",documentation:"Documentación",guide:"Guía",permission:"Permisos",pagePermission:"Permisos de la página",directivePermission:"Permisos de la directiva",icons:"Iconos",components:"Componentes",componentIndex:"Introducción",markdown:"Markdown",jsonEditor:"Editor JSON",dndList:"Lista Dnd",splitPane:"Panel dividido",avatarUpload:"Subir avatar",dropzone:"Subir ficheros",sticky:"Sticky",countTo:"CountTo",componentMixin:"Mixin",backToTop:"Ir arriba",dragDialog:"Drag Dialog",dragSelect:"Drag Select",dragKanban:"Drag Kanban",charts:"Gráficos",keyboardChart:"Keyboard Chart",lineChart:"Gráfico de líneas",mixChart:"Mix Chart",example:"Ejemplo",nested:"Rutas anidadass",menu1:"Menu 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menu 2",Table:"Tabla",dynamicTable:"Tabla dinámica",dragTable:"Arrastrar tabla",inlineEditTable:"Editor",complexTable:"Complex Table",treeTable:"Tree Table",customTreeTable:"Custom TreeTable",tab:"Pestaña",form:"Formulario",createArticle:"Crear artículo",editArticle:"Editar artículo",articleList:"Listado de artículos",errorPages:"Páginas de error",page401:"401",page404:"404",errorLog:"Registro de errores",excel:"Excel",exportExcel:"Exportar a Excel",selectExcel:"Export seleccionado",uploadExcel:"Subir Excel",zip:"Zip",pdf:"PDF",exportZip:"Exportar a Zip",theme:"Tema",clipboardDemo:"Clipboard",i18n:"I18n",externalLink:"Enlace externo"},navbar:{logOut:"Salir",dashboard:"Panel de control",github:"Github",theme:"Tema",size:"Tamaño global"},login:{title:"Formulario de acceso",logIn:"Acceso",username:"Usuario",password:"Contraseña",any:"nada",thirdparty:"Conectar con",thirdpartyTips:"No se puede simular en local, así que combine su propia simulación de negocios. ! !"},documentation:{documentation:"Documentación",github:"Repositorio Github"},permission:{roles:"Tus permisos",switchRoles:"Cambiar permisos",tips:"In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if."},guide:{description:"The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ",button:"Ver guía"},components:{documentation:"Documentación",dropzoneTips:"Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version."},table:{dynamicTips1:"Fixed header, sorted by header order",dynamicTips2:"Not fixed header, sorted by click order",dragTips1:"Orden por defecto",dragTips2:"The after dragging order",title:"Título",importance:"Importancia",type:"Tipo",remark:"Remark",search:"Buscar",add:"Añadir",export:"Exportar",reviewer:"reviewer",id:"ID",date:"Fecha",author:"Autor",readings:"Lector",status:"Estado",actions:"Acciones",edit:"Editar",publish:"Publicar",draft:"Draft",delete:"Eliminar",cancel:"Cancelar",confirm:"Confirmar"},errorLog:{tips:"Please click the bug icon in the upper right corner",description:"Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.",documentation:"Documento de introducción"},excel:{export:"Exportar",selectedExport:"Exportar seleccionados",placeholder:"Por favor escribe un nombre de fichero"},zip:{export:"Exportar",placeholder:"Por favor escribe un nombre de fichero"},pdf:{tips:"Here we use window.print() to implement the feature of downloading pdf."},theme:{change:"Cambiar tema",documentation:"Documentación del tema",tips:"Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details."},tagsView:{refresh:"Actualizar",close:"Cerrar",closeOthers:"Cerrar otros",closeAll:"Cerrar todos"}}),f.a),oc:v({},{route:{dashboard:"Tablèu de bòrd",introduction:"Introduccion",documentation:"Documentacion",guide:"Guida",permission:"Autorizacions",pagePermission:"Pagina d’autorizacion",directivePermission:"Politica d’autorizacion",icons:"Icònas",components:"Compausants",componentIndex:"Introduccion",markdown:"Markdown",jsonEditor:"JSON Editor",dndList:"Dnd List",splitPane:"SplitPane",avatarUpload:"Mandadís d’avatar",dropzone:"Dropzone",sticky:"Sticky",countTo:"CountTo",componentMixin:"Mixin",backToTop:"BackToTop",dragDialog:"Drag Dialog",dragSelect:"Drag Select",dragKanban:"Drag Kanban",charts:"Charts",keyboardChart:"Keyboard Chart",lineChart:"Line Chart",mixChart:"Mix Chart",example:"Exemple",nested:"Rotas imbricadas",menu1:"Menú 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menú 2",Table:"Tablèu",dynamicTable:"Tablèu dinamic",dragTable:"Drag Table",inlineEditTable:"Inline Edit",complexTable:"Tablèu complèx",treeTable:"Arborescéncia",customTreeTable:"Arborescéncia personalizada",tab:"Onglet",form:"Formulari",createArticle:"Crear un article",editArticle:"Modificar l’article",articleList:"Lista d’articles",errorPages:"Paginas d’error",page401:"401",page404:"404",errorLog:"Jornal d’error",excel:"Excel",exportExcel:"Exportacion Excel",selectExcel:"Exportar los seleccionats",uploadExcel:"Importacion Excel",zip:"Zip",pdf:"PDF",exportZip:"Exportacion Zip",theme:"Tèma",clipboardDemo:"Clipboard",i18n:"I18n",externalLink:"Ligams extèrnes",users:"Utilizaires"},navbar:{logOut:"Desconnexion",dashboard:"Tablèu de bòrd",github:"Github",theme:"Tèma",size:"Talha totala"},login:{title:"Formulari de connexion",logIn:"Se connectar",username:"Nom d’’utilizaire",password:"Senhal",any:"qual que siá",thirdparty:"O se connectar amb",thirdpartyTips:"Pòt pas èsser simulat en local, doncas montatz vòstra pròpria simulacion ! ! !"},documentation:{documentation:"Documentacion",github:"Repertòri Github"},permission:{roles:"Vòstres ròtles",switchRoles:"Cambiar de ròtle",tips:"Dins qualques cases es pas de bon far d’utilizar v-permission, coma element d’onglet compausant, el-table-column o d’autres renduts dom asincròns que pòdon pas que foncionar amb un parametratge manual de v-if."},guide:{description:"La pagina de guida es utila pel monde que dintran dins lo projècte pel primièr còp. Podètz presentar en un mot las foncionalitats del projèctes. La demo es fondada sus ",button:"Mostrar la guida"},components:{documentation:"Documentacion",dropzoneTips:"Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version."},table:{dynamicTips1:"Bandièra fixa, triada per òrdre de bandièra",dynamicTips2:"Bandièra pas fixa, triada per òrdre de clic",dragTips1:"L’’òrdre per defaut",dragTips2:"L’’òrdre aprèp lisar-depausar",title:"Títol",importance:"Imp",type:"Tipe",remark:"Remarca",search:"Recercar",add:"Ajustar",export:"Exportar",reviewer:"examinator",id:"ID",date:"Data",author:"Autor",readings:"Lecturas",status:"Estatuts",actions:"Accions",edit:"Modificar",publish:"Publicar",draft:"Ensag",delete:"Suprimir",cancel:"Anullar",confirm:"Confirmar"},errorLog:{tips:"Mercés de clicar l’’icòna del babau amont a man drecha",description:"Ara que lo sistèma de gestion es coma un spa, melhora l’experiéncia dels utilizaire mas aumenta tanben lo risc de problèmas sus la pagina, una pichona negligéncia pòt menar a un blocatge complèt de la pagina. Urosament Vue fornís de manièras per gerir las excepcions, trobar las errors o senhalar las excepcions.",documentation:"Presentacion del document"},excel:{export:"Exportar",selectedExport:"Exportar los elements seleccionats",placeholder:"Mercés de picar lo nom de fichièr (per defaut excel-list)"},zip:{export:"Exportar",placeholder:"Mercés de picar lo nom de fichièr (per defaut file)"},pdf:{tips:"Aquí utilizam window.print() per prepausar lo telecargament de pdf."},theme:{change:"Cambiar lo tèma",documentation:"Documentacion dels tèmas",tips:"Astúcia : es diferent del theme-pick de la barra de navigacion, i a dos metòdes de personalizacion, caduna amb un biais de far diferent. Referiscam a la documentacion per mai de detalhs."},tagsView:{refresh:"Actualizar",close:"Tampar",closeOthers:"Tampar los autres",closeAll:"Los tampar totes"}})},b=new s.a({locale:c.a.get("language")||"en",messages:g});t.a=b},me7H:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-redo",use:"icon-tiptap-redo-usage",viewBox:"0 0 24 24",content:'redo'});s.a.add(i);t.default=i},mm8V:function(e,t,n){"use strict";n.d(t,"a",function(){return l}),n.d(t,"b",function(){return d}),n.d(t,"c",function(){return m}),n.d(t,"d",function(){return h}),n.d(t,"e",function(){return g}),n.d(t,"f",function(){return w}),n.d(t,"g",function(){return x}),n.d(t,"h",function(){return E}),n.d(t,"i",function(){return k}),n.d(t,"j",function(){return _}),n.d(t,"k",function(){return C}),n.d(t,"l",function(){return P}),n.d(t,"m",function(){return j});var a=n("o0o1"),r=n.n(a),o=n("yXPU"),s=n.n(o),i=n("t3Un"),c=n("X4fA"),u=n("9i3r");function l(e,t,n,a,r,o){return p.apply(this,arguments)}function p(){return(p=s()(r.a.mark(function e(t,n,a,o,s,c){var l;return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return l=new FormData,""!==o.trim()&&l.set("filename",o),""!==a.trim()&&l.set("shortcode",a),l.set("file",n),e.next=6,Object(i.a)({baseURL:Object(u.a)(s),url:"/api/pleroma/emoji/packs/files?name=".concat(t),method:"post",headers:M(c),data:l});case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}},e)}))).apply(this,arguments)}function d(e,t,n){return"".concat(Object(u.a)(e),"/emoji/").concat(D(t),"/").concat(n)}function m(e,t,n){return f.apply(this,arguments)}function f(){return(f=s()(r.a.mark(function e(t,n,a){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/pack?name=".concat(a),method:"post",headers:M(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function h(e,t,n,a){return v.apply(this,arguments)}function v(){return(v=s()(r.a.mark(function e(t,n,a,o){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(a),url:"/api/pleroma/emoji/packs/files?name=".concat(t,"&shortcode=").concat(n),method:"delete",headers:M(o)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function g(e,t,n){return b.apply(this,arguments)}function b(){return(b=s()(r.a.mark(function e(t,n,a){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/pack?name=".concat(a),method:"delete",headers:M(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function w(e,t,n,a,r){return y.apply(this,arguments)}function y(){return(y=s()(r.a.mark(function e(t,n,a,o,s){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(o),url:"/api/pleroma/emoji/packs/download",method:"post",headers:M(s),data:""===a.trim()?{url:Object(u.a)(t),name:n}:{url:Object(u.a)(t),name:n,as:a},timeout:0});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function x(e,t,n,a,r){return S.apply(this,arguments)}function S(){return(S=s()(r.a.mark(function e(t,n,a,o,s){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(o),url:"/api/pleroma/emoji/pack?name=".concat(t,"&page=").concat(n,"&page_size=").concat(a),method:"get",headers:M(s)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function E(e,t){return T.apply(this,arguments)}function T(){return(T=s()(r.a.mark(function e(t,n){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/import",method:"get",headers:M(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function k(e,t,n,a){return O.apply(this,arguments)}function O(){return(O=s()(r.a.mark(function e(t,n,a,o){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(a),url:"/api/pleroma/emoji/packs?page=".concat(t,"&page_size=").concat(n),method:"get",headers:M(o)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function _(e,t,n,a,r){return L.apply(this,arguments)}function L(){return(L=s()(r.a.mark(function e(t,n,a,o,s){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(o),url:"/api/pleroma/emoji/packs/remote?url=".concat(Object(u.a)(t),"&page=").concat(n,"&page_size=").concat(a),method:"get",headers:M(s)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function C(e,t){return A.apply(this,arguments)}function A(){return(A=s()(r.a.mark(function e(t,n){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/admin/reload_emoji",method:"post",headers:M(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function P(e,t,n,a){return I.apply(this,arguments)}function I(){return(I=s()(r.a.mark(function e(t,n,a,o){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/pack?name=".concat(a),method:"patch",headers:M(n),data:{metadata:o},timeout:0});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function j(e,t,n,a,r,o,s){return R.apply(this,arguments)}function R(){return(R=s()(r.a.mark(function e(t,n,a,o,s,c,l){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(i.a)({baseURL:Object(u.a)(c),url:"/api/pleroma/emoji/packs/files?name=".concat(t),method:"patch",headers:M(l),data:{shortcode:n,new_shortcode:a,new_filename:o,force:s}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var M=function(e){return e?{Authorization:"Bearer ".concat(Object(c.b)())}:{}},D=function(e){return encodeURIComponent(e)}},nIMs:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-github",use:"icon-tiptap-github-usage",viewBox:"0 0 24 24",content:'\n \n'});s.a.add(i);t.default=i},nZHn:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-icon",use:"icon-icon-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},oUrx:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-404",use:"icon-404-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},qkZ8:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-edit",use:"icon-edit-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},qwAt:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-lock",use:"icon-lock-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},s7Vf:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-user",use:"icon-user-usage",viewBox:"0 0 130 130",content:''});s.a.add(i);t.default=i},"sg+I":function(e,t,n){e.exports={menuText:"#bfcbd9",menuActiveText:"#409EFF",subMenuActiveText:"#f4f4f5",menuBg:"#304156",menuHover:"#263445",subMenuBg:"#1f2d3d",subMenuHover:"#001528",sideBarWidth:"180px"}},sjxz:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-mention",use:"icon-tiptap-mention-usage",viewBox:"0 0 24 24",content:'read-email-at-alternate'});s.a.add(i);t.default=i},swuu:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-quote",use:"icon-tiptap-quote-usage",viewBox:"0 0 24 24",content:'close-quote'});s.a.add(i);t.default=i},t3Un:function(e,t,n){"use strict";var a=n("vDqi"),r=n.n(a),o=n("XJYT"),s=r.a.create({timeout:6e4});s.interceptors.response.use(function(e){return e},function(e){var t;if(console.log("Error ".concat(e)),e.response){var n=e.response.data.error?e.response.data.error:e.response.data;t=e.response.headers["content-type"].includes("application/json")?"".concat(e.message," - ").concat(n):"".concat(e.message)}else t=e;return Object(o.Message)({message:t,type:"error",duration:5e3}),Promise.reject(e)}),t.a=s},taZh:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-code",use:"icon-tiptap-code-usage",viewBox:"0 0 24 24",content:'angle-brackets'});s.a.add(i);t.default=i},vDVG:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-clipboard",use:"icon-clipboard-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},wfO2:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-tiptap-underline",use:"icon-tiptap-underline-usage",viewBox:"0 0 24 24",content:'text-underline'});s.a.add(i);t.default=i},y7eQ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-email",use:"icon-email-usage",viewBox:"0 0 128 96",content:''});s.a.add(i);t.default=i},yCkv:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),o=n("IaFt"),s=n.n(o),i=new r.a({id:"icon-chart",use:"icon-chart-usage",viewBox:"0 0 128 128",content:''});s.a.add(i);t.default=i},zEvO:function(e,t,n){"use strict";var a=n("9NTF");n.n(a).a},zT9a:function(e,t,n){"use strict";var a={name:"SvgIcon",props:{iconClass:{type:String,required:!0},className:{type:String,default:""}},computed:{iconName:function(){return"#icon-".concat(this.iconClass)},svgClass:function(){return this.className?"svg-icon "+this.className:"svg-icon"}}},r=(n("mDMp"),n("KHd+")),o=Object(r.a)(a,function(){var e=this.$createElement,t=this._self._c||e;return t("svg",this._g({class:this.svgClass,attrs:{"aria-hidden":"true"}},this.$listeners),[t("use",{attrs:{"xlink:href":this.iconName}})])},[],!1,null,"17178ffc",null);o.options.__file="index.vue";t.a=o.exports},zx4i:function(e,t,n){e.exports={menuText:"#bfcbd9",menuActiveText:"#409EFF",subMenuActiveText:"#f4f4f5",menuBg:"#304156",menuHover:"#263445",subMenuBg:"#1f2d3d",subMenuHover:"#001528",sideBarWidth:"180px"}}},[["Vtdi","runtime","chunk-elementUI","chunk-libs"]]]); +//# sourceMappingURL=app.69891fda.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/app.69891fda.js.map b/priv/static/adminfe/static/js/app.69891fda.js.map new file mode 100644 index 000000000..0131793e9 --- /dev/null +++ b/priv/static/adminfe/static/js/app.69891fda.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/icons/svg/pdf.svg","webpack:///./src/icons/svg/people.svg","webpack:///./src/icons/svg/eye-open.svg","webpack:///./src/components/element-ui/Hamburger/index.vue?8f92","webpack:///./src/icons/svg/exit-fullscreen.svg","webpack:///./src/icons/svg/tiptap-add_col_before.svg","webpack:///./src/icons/svg/nested.svg","webpack:///./src/icons/svg/theme.svg","webpack:///./src/icons/svg/tiptap-table.svg","webpack:///./src/icons/svg/form.svg","webpack:///./src/icons/svg/tiptap-add_row_before.svg","webpack:///./src/icons/svg/tiptap-combine_cells.svg","webpack:///./src/icons/svg/tiptap-checklist.svg","webpack:///./src/icons/svg/dashboard.svg","webpack:///./src/api/utils.js","webpack:///./src/icons/svg/tiptap-delete_table.svg","webpack:///./src/icons/svg/tiptap-delete_row.svg","webpack:///./src/icons/svg/shopping.svg","webpack:///./src/icons/svg/bug.svg","webpack:///./src/icons/svg/international.svg","webpack:///./src/icons/svg/qq.svg","webpack:///./src/icons/svg/link.svg","webpack:///./src/components/element-ui/ScrollPane/index.vue?8407","webpack:///./src/views/layout/components/TagsView.vue?6ab0","webpack:///./src/icons/svg/guide 2.svg","webpack:///./src/icons/svg/language.svg","webpack:///./src/icons/svg/password.svg","webpack:///./src/icons/svg/tiptap-delete_col.svg","webpack:///./src/icons/svg/peoples.svg","webpack:///./src/icons/svg/money.svg","webpack:///./src/icons/svg/example.svg","webpack:///./src/icons/svg/list.svg","webpack:///./src/icons/svg/tiptap-remove.svg","webpack:///./src/icons/svg/settings.svg","webpack:///./src/icons/svg/message.svg","webpack:///./src/icons/svg/table.svg","webpack:///./src/views/layout/Layout.vue?d1f6","webpack:///./src/icons/svg/eye.svg","webpack:///./src/icons/svg sync nonrecursive \\.svg$","webpack:///./src/icons/svg/component.svg","webpack:///./src/App.vue?9edb","webpack:///src/App.vue","webpack:///./src/App.vue","webpack:///./src/App.vue?1e50","webpack:///./src/api/app.js","webpack:///./src/store/modules/app.js","webpack:///./src/store/modules/emojiPacks.js","webpack:///./src/store/modules/errorLog.js","webpack:///./src/store/getters.js","webpack:///./src/api/invites.js","webpack:///./src/store/modules/invites.js","webpack:///./src/api/mediaProxyCache.js","webpack:///./src/api/settings.js","webpack:///./src/store/modules/mediaProxyCache.js","webpack:///./src/api/moderationLog.js","webpack:///./src/store/modules/moderationLog.js","webpack:///./src/api/peers.js","webpack:///./src/store/modules/peers.js","webpack:///./src/components/element-ui/Hamburger/index.vue?1751","webpack:///src/components/element-ui/Hamburger/index.vue","webpack:///./src/components/element-ui/Hamburger/index.vue","webpack:///./src/components/element-ui/Hamburger/index.vue?78c1","webpack:///src/views/layout/components/Navbar.vue","webpack:///./src/views/layout/components/Navbar.vue?138b","webpack:///./src/views/layout/components/Navbar.vue","webpack:///./src/views/layout/components/Navbar.vue?b672","webpack:///./src/utils/i18n.js","webpack:///./src/utils/index.js","webpack:///./src/views/layout/components/Sidebar/Item.vue?9f99","webpack:///./src/views/layout/components/Sidebar/Item.vue?425b","webpack:///src/views/layout/components/Sidebar/Item.vue","webpack:///./src/views/layout/components/Sidebar/Item.vue","webpack:///./src/views/layout/components/Sidebar/Link.vue?a99f","webpack:///src/views/layout/components/Sidebar/Link.vue","webpack:///./src/views/layout/components/Sidebar/Link.vue","webpack:///./src/views/layout/components/Sidebar/Link.vue?d88c","webpack:///src/views/layout/components/Sidebar/SidebarItem.vue","webpack:///./src/views/layout/components/Sidebar/SidebarItem.vue?f0b2","webpack:///./src/views/layout/components/Sidebar/FixiOSBug.js","webpack:///./src/views/layout/components/Sidebar/SidebarItem.vue","webpack:///./src/views/layout/components/Sidebar/SidebarItem.vue?e550","webpack:///src/views/layout/components/Sidebar/index.vue","webpack:///./src/views/layout/components/Sidebar/index.vue?3b50","webpack:///./src/views/layout/components/Sidebar/index.vue","webpack:///./src/views/layout/components/Sidebar/index.vue?d021","webpack:///./src/components/element-ui/ScrollPane/index.vue?a39e","webpack:///src/components/element-ui/ScrollPane/index.vue","webpack:///./src/components/element-ui/ScrollPane/index.vue","webpack:///./src/components/element-ui/ScrollPane/index.vue?7344","webpack:///src/views/layout/components/TagsView.vue","webpack:///./src/views/layout/components/TagsView.vue?f016","webpack:///./src/views/layout/components/TagsView.vue","webpack:///./src/views/layout/components/TagsView.vue?d863","webpack:///./src/views/layout/components/AppMain.vue?4460","webpack:///src/views/layout/components/AppMain.vue","webpack:///./src/views/layout/components/AppMain.vue","webpack:///./src/views/layout/components/AppMain.vue?367b","webpack:///./src/views/layout/mixin/ResizeHandler.js","webpack:///./src/views/layout/Layout.vue?de6d","webpack:///src/views/layout/Layout.vue","webpack:///./src/views/layout/Layout.vue","webpack:///./src/views/layout/Layout.vue?9516","webpack:///./src/router/index.js","webpack:///./src/store/modules/permission.js","webpack:///./src/api/relays.js","webpack:///./src/store/modules/relays.js","webpack:///./src/api/reports.js","webpack:///./src/api/users.js","webpack:///./src/store/modules/reports.js","webpack:///./src/store/modules/settings.js","webpack:///./src/api/status.js","webpack:///./src/store/modules/status.js","webpack:///./src/store/modules/tagsView.js","webpack:///./src/api/login.js","webpack:///./src/api/nodeInfo.js","webpack:///./src/store/modules/user.js","webpack:///./src/store/modules/userProfile.js","webpack:///./src/store/modules/users.js","webpack:///./src/store/index.js","webpack:///./src/icons/index.js","webpack:///./src/errorLog.js","webpack:///./src/permission.js","webpack:///./src/filters/index.js","webpack:///./src/main.js","webpack:///./src/utils/auth.js","webpack:///./src/views/layout/components/TagsView.vue?da45","webpack:///./src/views/layout/components/AppMain.vue?2c3a","webpack:///./src/icons/svg/excel.svg","webpack:///./src/icons/svg/guide.svg","webpack:///./src/icons/svg/tiptap-add_col_after.svg","webpack:///./src/icons/svg/star.svg","webpack:///./src/icons/svg/tiptap-bold.svg","webpack:///./src/icons/svg/tiptap-add_row_after.svg","webpack:///./src/views/layout/components/Navbar.vue?a40e","webpack:///./src/icons/svg/wechat.svg","webpack:///./src/store/modules/normalizers.js","webpack:///./src/icons/svg/tiptap-italic.svg","webpack:///./src/icons/svg/size.svg","webpack:///./src/icons/svg/tiptap-paragraph.svg","webpack:///./src/icons/svg/tiptap-image.svg","webpack:///./src/icons/svg/zip.svg","webpack:///./src/icons/svg/tiptap-ol.svg","webpack:///./src/icons/svg/tab.svg","webpack:///./src/icons/svg/search.svg","webpack:///./src/icons/svg/tree.svg","webpack:///./src/icons/svg/tiptap-hr.svg","webpack:///./src/icons/svg/tiptap-ul.svg","webpack:///./src/icons/svg/documentation.svg","webpack:///./src/icons/svg/tiptap-strike.svg","webpack:///./src/icons/svg/tiptap-undo.svg","webpack:///./src/icons/svg/tiptap-link.svg","webpack:///./src/icons/svg/drag.svg","webpack:///./src/components/element-ui/SvgIcon/index.vue?928c","webpack:///./src/icons/svg/fullscreen.svg","webpack:///./src/lang/index.js","webpack:///./src/lang/en.js","webpack:///./src/lang/zh.js","webpack:///./src/lang/es.js","webpack:///./src/lang/oc.js","webpack:///./src/icons/svg/tiptap-redo.svg","webpack:///./src/api/emojiPacks.js","webpack:///./src/icons/svg/tiptap-github.svg","webpack:///./src/icons/svg/icon.svg","webpack:///./src/icons/svg/404.svg","webpack:///./src/icons/svg/edit.svg","webpack:///./src/icons/svg/lock.svg","webpack:///./src/icons/svg/user.svg","webpack:///./src/styles/index.scss","webpack:///./src/icons/svg/tiptap-mention.svg","webpack:///./src/icons/svg/tiptap-quote.svg","webpack:///./src/utils/request.js","webpack:///./src/icons/svg/tiptap-code.svg","webpack:///./src/icons/svg/clipboard.svg","webpack:///./src/icons/svg/tiptap-underline.svg","webpack:///./src/icons/svg/email.svg","webpack:///./src/icons/svg/chart.svg","webpack:///./src/views/layout/components/Sidebar/Item.vue?895e","webpack:///./src/components/element-ui/SvgIcon/index.vue?8767","webpack:///./src/components/element-ui/SvgIcon/index.vue?c01f","webpack:///src/components/element-ui/SvgIcon/index.vue","webpack:///./src/components/element-ui/SvgIcon/index.vue","webpack:///./src/styles/variables.scss"],"names":["__webpack_require__","r","__webpack_exports__","svg_baker_runtime_browser_symbol__WEBPACK_IMPORTED_MODULE_0__","svg_baker_runtime_browser_symbol__WEBPACK_IMPORTED_MODULE_0___default","n","svg_sprite_loader_runtime_browser_sprite_build__WEBPACK_IMPORTED_MODULE_1__","svg_sprite_loader_runtime_browser_sprite_build__WEBPACK_IMPORTED_MODULE_1___default","symbol","a","id","use","viewBox","content","add","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_69c6c5c4_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","d","baseName","instanceName","arguments","length","undefined","match","startsWith","isLocalhost","concat","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_591d6778_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_TagsView_vue_vue_type_style_index_0_id_e1cdb714_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Layout_vue_vue_type_style_index_0_id_767d264f_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","map","./404.svg","./bug.svg","./chart.svg","./clipboard.svg","./component.svg","./dashboard.svg","./documentation.svg","./drag.svg","./edit.svg","./email.svg","./example.svg","./excel.svg","./exit-fullscreen.svg","./eye-open.svg","./eye.svg","./form.svg","./fullscreen.svg","./guide 2.svg","./guide.svg","./icon.svg","./international.svg","./language.svg","./link.svg","./list.svg","./lock.svg","./message.svg","./money.svg","./nested.svg","./password.svg","./pdf.svg","./people.svg","./peoples.svg","./qq.svg","./search.svg","./settings.svg","./shopping.svg","./size.svg","./star.svg","./tab.svg","./table.svg","./theme.svg","./tiptap-add_col_after.svg","./tiptap-add_col_before.svg","./tiptap-add_row_after.svg","./tiptap-add_row_before.svg","./tiptap-bold.svg","./tiptap-checklist.svg","./tiptap-code.svg","./tiptap-combine_cells.svg","./tiptap-delete_col.svg","./tiptap-delete_row.svg","./tiptap-delete_table.svg","./tiptap-github.svg","./tiptap-hr.svg","./tiptap-image.svg","./tiptap-italic.svg","./tiptap-link.svg","./tiptap-mention.svg","./tiptap-ol.svg","./tiptap-paragraph.svg","./tiptap-quote.svg","./tiptap-redo.svg","./tiptap-remove.svg","./tiptap-strike.svg","./tiptap-table.svg","./tiptap-ul.svg","./tiptap-underline.svg","./tiptap-undo.svg","./tree.svg","./user.svg","./wechat.svg","./zip.svg","webpackContext","req","webpackContextResolve","o","e","Error","code","keys","Object","resolve","module","exports","src_Appvue_type_script_lang_js_","name","component","componentNormalizer","_h","this","$createElement","_c","_self","attrs","options","__file","App","needReboot","_x","_x2","_needReboot","apply","_callee","authHost","token","regenerator_default","wrap","_context","prev","next","request","baseURL","url","method","headers","authHeaders","abrupt","sent","stop","restartApp","_x3","_x4","_restartApp","_callee2","_context2","Authorization","getToken","app","state","sidebar","opened","Cookies","get","withoutAnimation","device","language","size","invitesEnabled","mutations","TOGGLE_SIDEBAR","set","CLOSE_SIDEBAR","TOGGLE_DEVICE","SET_INVITES_ENABLED","SET_LANGUAGE","TOGGLE_REBOOT","SET_SIZE","actions","closeSideBar","_ref","_ref2","commit","NeedReboot","_ref3","asyncToGenerator_default","mark","getters","response","data","RestartApplication","_ref4","SetInvitesEnabled","_ref5","setLanguage","_ref6","setSize","_ref7","toggleDevice","_ref8","toggleSideBar","_ref9","emojiPacks","activeTab","currentLocalFilesPage","currentLocalPacksPage","currentRemoteFilesPage","currentRemotePacksPage","filesPageSize","localPackFilesCount","localPacks","localPacksCount","pageSize","remoteInstance","remotePackFilesCount","remotePacks","remotePacksCount","SET_ACTIVE_TAB","tab","SET_LOCAL_FILES_COUNT","count","SET_LOCAL_FILES_PAGE","page","SET_LOCAL_PACKS","packs","SET_LOCAL_PACKS_COUNT","SET_LOCAL_PACK_FILES","files","_objectSpread","defineProperty_default","SET_LOCAL_PAGE","SET_REMOTE_FILES_COUNT","SET_REMOTE_FILES_PAGE","SET_REMOTE_INSTANCE","SET_REMOTE_PACKS_COUNT","SET_REMOTE_PACK_FILES","SET_REMOTE_PACKS","UPDATE_LOCAL_PACK_VAL","key","value","Vue","UPDATE_LOCAL_PACK_PACK","pack","UPDATE_LOCAL_PACK_FILES","AddNewEmojiFile","packName","file","shortcode","filename","result","addNewEmojiFile","t0","Message","message","i18n","t","type","duration","DeleteEmojiFile","dispatch","_state$localPacks$pac","updatedPackFiles","objectWithoutProperties_default","_toPropertyKey","deleteEmojiFile","CreatePack","_ref10","_ref11","_callee3","_context3","createPack","DeletePack","_ref12","_ref13","_callee4","_context4","deletePack","DownloadFrom","_ref14","_ref15","_callee5","instanceAddress","as","_context5","downloadFrom","FetchLocalEmojiPacks","_ref16","_callee6","_yield$listPacks","updatedPacks","_context6","listPacks","reduce","acc","_packs$packName","FetchLocalSinglePack","_ref17","_ref18","_callee7","_yield$fetchPack","files_count","_context7","fetchPack","FetchRemoteSinglePack","_ref19","_ref20","_callee8","_yield$fetchPack2","_context8","ImportFromFS","_ref21","_callee9","_context9","importFromFS","status","ReloadEmoji","_ref22","_callee10","_context10","reloadEmoji","SavePackMetadata","_ref23","_ref24","_callee11","_context11","savePackMetadata","SetActiveTab","_ref25","SetRemoteEmojiPacks","_ref26","_ref27","_callee12","_yield$listRemotePack","_context12","listRemotePacks","_packs$packName2","SetRemoteInstance","_ref28","instance","UpdateEmojiFile","_ref29","_ref30","_callee13","newShortcode","newFilename","force","_context13","el","updateEmojiFile","UpdateLocalPackVal","_ref31","args","_callee14","_context14","errorLog","logs","ADD_ERROR_LOG","log","push","addErrorLog","visitedViews","tagsView","cachedViews","user","avatar","introduction","roles","setting","permission_routers","permission","routers","addRouters","errorLogs","users","fetchedUsers","settings","generateInviteToken","_generateInviteToken","max_use","expires_at","inviteViaEmail","_x5","_x6","_x7","_x8","_inviteViaEmail","email","listInviteTokens","_x9","_x10","_listInviteTokens","revokeToken","_x11","_x12","_x13","_revokeToken","tokenToRevoke","invites","inviteTokens","loading","newToken","SET_LOADING","SET_NEW_TOKEN","SET_TOKENS","tokens","FetchInviteTokens","reverse","GenerateInviteToken","maxUse","expiresAt","_yield$generateInvite","InviteUserViaEmail","RemoveNewToken","RevokeToken","listBannedUrls","_listBannedUrls","purgeUrls","_purgeUrls","urls","ban","removeBannedUrls","_removeBannedUrls","searchBannedUrls","_x14","_x15","_x16","_searchBannedUrls","query","deleteInstanceDocument","_deleteInstanceDocument","fetchDescription","_fetchDescription","fetchSettings","_fetchSettings","getInstanceDocument","_getInstanceDocument","updateInstanceDocument","_updateInstanceDocument","formData","settings_objectSpread","Content-Type","updateSettings","_x17","_updateSettings","configs","removeSettings","_x18","_x19","_x20","_removeSettings","mediaProxyCache","bannedUrls","currentPage","mediaProxyEnabled","searchQuery","totalUrlsCount","MEDIA_PROXY_ENABLED","enabled","SET_BANNED_URLS","SET_TOTAL_URLS_COUNT","SET_PAGE","SET_SEARCH_QUERY","EnableMediaProxy","group","tuple","FetchMediaProxySetting","_yield$fetchSettings","mediaProxySettings","find","ListBannedUrls","PurgeUrls","RemoveBannedUrls","SearchUrls","fetchLog","_fetchLog","params","normalizedParams","_args","URLSearchParams","_","omitBy","moderationLog_objectSpread","isUndefined","toString","fetchAdmins","_fetchAdmins","fetchModerators","_fetchModerators","moderationLog","fetchedLog","logItemsCount","admins","moderators","logLoading","adminsLoading","SET_LOG_LOADING","SET_ADMINS_LOADING","SET_MODERATION_LOG","SET_MODERATION_LOG_COUNT","SET_ADMINS","SET_MODERATORS","FetchModerationLog","_arguments","opts","items","total","FetchAdmins","adminsResponse","moderatorsResponse","fetchPeers","_fetchPeers","peers","fetchedPeers","SET_PEERS","FetchPeers","toConsumableArray_default","sort","element_ui_Hamburgervue_type_script_lang_js_","props","isActive","Boolean","default","toggleClick","Function","Hamburger_component","staticStyle","padding","on","click","staticClass","class","is-active","xmlns","width","height","components_Navbarvue_type_script_lang_js_","components","Hamburger","computed","Navbarvue_type_script_lang_js_objectSpread","vuex_esm","methods","$store","logout","then","location","reload","Navbar_component","_vm","toggle-click","_v","trigger","src","slot","display","_s","$t","Navbar","generateTitle","title","$te","parseTime","time","cFormat","date","format","typeof_default","test","parseInt","Date","formatObj","y","getFullYear","m","getMonth","getDate","h","getHours","i","getMinutes","s","getSeconds","getDay","replace","formatTime","option","diff","now","Math","ceil","isExternal","path","Sidebar_Itemvue_type_script_lang_js_","String","icon","Item_component","icon-class","Item","Sidebar_Linkvue_type_script_lang_js_","to","required","linkProps","is","href","target","rel","Link_component","_b","_t","Link","Sidebar_SidebarItemvue_type_script_lang_js_","AppLink","mixins","mounted","fixBugIniOS","_this","$subMenu","$refs","subMenu","handleMouseleave","item","isNest","basePath","onlyOneChild","normalizedReportsCount","numeral_default","reports","openReportsCount","hasOneShowingChild","children","parent","showingChildren","filter","hidden","SidebarItemvue_type_script_lang_js_objectSpread","noShowingChildren","resolvePath","routePath","isExternalLink","path_browserify_default","showCount","SidebarItem_component","alwaysShow","ref","index","meta","_e","_l","child","is-nest","base-path","submenu-title-noDropdown","SidebarItem","components_Sidebarvue_type_script_lang_js_","Sidebarvue_type_script_lang_js_objectSpread","variables","variables_default","isCollapse","Sidebar_component","wrap-class","default-active","$route","collapse","background-color","menuBg","text-color","menuText","active-text-color","menuActiveText","mode","route","Sidebar","element_ui_ScrollPanevue_type_script_lang_js_","left","handleScroll","eventDelta","wheelDelta","deltaY","$scrollWrapper","scrollContainer","scrollLeft","moveToTarget","currentTag","$containerWidth","$el","offsetWidth","tagList","$parent","tag","firstTag","lastTag","scrollWidth","currentIndex","findIndex","prevTag","nextTag","afterNextTagOffsetLeft","offsetLeft","beforePrevTagOffsetLeft","ScrollPane_component","vertical","nativeOn","wheel","$event","preventDefault","components_TagsViewvue_type_script_lang_js_","ScrollPane","visible","top","selectedTag","affixTags","watch","addTags","moveToCurrentTag","document","body","addEventListener","closeMenu","removeEventListener","initTags","filterAffixTags","routes","tags","forEach","affix","TagsViewvue_type_script_lang_js_objectSpread","tempTags","_step","_iterator","_createForOfIteratorHelper","done","err","f","_this2","$nextTick","_step2","_iterator2","scrollPane","fullPath","refreshSelectedTag","view","_this3","$router","closeSelectedTag","_this4","toLastView","closeOthersTags","_this5","closeAllTags","_this6","some","latestView","slice","openMenu","getBoundingClientRect","maxLeft","clientX","clientY","TagsView_component","refInFor","mouseup","button","contextmenu","stopPropagation","directives","rawName","expression","style","TagsView","components_AppMainvue_type_script_lang_js_","AppMain_component","include","AppMain","layout_Layoutvue_type_script_lang_js_","store","beforeMount","window","resizeHandler","isMobile","isTablet","rect","classObj","hideSidebar","openSidebar","mobile","handleClickOutside","Layout_component","Layout","Router","disabledFeatures","process","settingsDisabled","includes","Promise","all","bind","noCache","statusesDisabled","statuses","reportsDisabled","invitesDisabled","emojiPacksDisabled","moderationLogDisabled","mediaProxyCacheDisabled","constantRouterMap","redirect","router","scrollBehavior","asyncRouterMap","filterAsyncRouter","res","tmp","permission_objectSpread","role","hasPermission","SET_ROUTERS","GenerateRoutes","accessedRouters","fetchRelays","_fetchRelays","addRelay","_addRelay","relay_url","deleteRelay","_deleteRelay","relays","fetchedRelays","SET_RELAYS","ADD_RELAY","relay","actor","DELETE_RELAY","fetchedRelay","FetchRelays","_yield$fetchRelays","AddRelay","finish","DeleteRelay","changeState","_changeState","fetchReports","_fetchReports","reportID","noteID","activateUsers","_activateUsers","nicknames","addRight","_addRight","right","createNewAccount","_createNewAccount","nickname","password","deactivateUsers","_deactivateUsers","deleteRight","_deleteRight","deleteUsers","_x21","_x22","_deleteUsers","disableMfa","_x23","_x24","_x25","_disableMfa","fetchUser","_x26","_x27","_x28","_fetchUser","fetchUserCredentials","_x29","_x30","_x31","_fetchUserCredentials","updateUserCredentials","_x32","_x33","_x34","_x35","_updateUserCredentials","credentials","fetchUsers","_x36","_x37","_x38","_fetchUsers","filters","_args11","getPasswordResetToken","_x39","_x40","_x41","_getPasswordResetToken","forcePasswordReset","_x42","_x43","_x44","_forcePasswordReset","searchUsers","_x45","_x46","_x47","_x48","_searchUsers","_args14","tagUser","_x49","_x50","_x51","_x52","_tagUser","_callee15","_context15","untagUser","_x53","_x54","_x55","_x56","_untagUser","_callee16","_context16","_callee17","godmode","_context17","approveUserAccount","_x61","_x62","_x63","_approveUserAccount","_callee18","_context18","confirmUserEmail","_x64","_x65","_x66","_confirmUserEmail","_callee19","_context19","resendConfirmationEmail","_x67","_x68","_x69","_resendConfirmationEmail","_callee20","_context20","fetchedReports","stateFilter","totalReportsCount","SET_LAST_REPORT_ID","idOfLastReport","SET_OPEN_REPORTS_COUNT","SET_REPORTS","SET_REPORTS_COUNT","SET_REPORTS_FILTER","ActivateUserFromReports","reportId","updatedReports","report","updatedAccount","reports_objectSpread","deactivated","account","AddTagFromReports","ChangeReportState","reportsData","ClearFetchedReports","DeactivateUserFromReports","DeleteUserFromReports","FetchReports","_yield$fetchReports","FetchOpenReportsCount","_yield$fetchReports2","RemoveTagFromReports","userTag","SetReportsFilter","CreateReportNote","rootState","_createNote","createNote","optimisticNote","created_at","getTime","notes","DeleteReportNote","_deleteNote","deleteNote","note","configDisabled","db","description","instancePanel","searchData","termsOfServices","updatedSettings","CLEAR_UPDATED_SETTINGS","SET_INSTANCE_PANEL","REMOVE_SETTING_FROM_UPDATED","subkeys","_state$updatedSetting","_subkeys$","settings_toPropertyKey","SET_DESCRIPTION","SET_SEARCH","searchObject","SET_SETTINGS","newSettings","parsedValue","valueHasTuples","parseNonTuples","parseTuples","modules_settings_objectSpread","newDbSettings","SET_TERMS_OF_SERVICES","TOGGLE_TABS","UPDATE_SETTINGS","input","updatedSetting","UPDATE_STATE","updatedState","FetchInstanceDocument","_yield$getInstanceDoc","FetchSettings","formSearchObject","RemoveInstanceDocument","RemoveSetting","_configs$","need_reboot","SubmitChanges","wrapUpdatedSettings","UpdateInstanceDocs","blob","FormData","Blob","append","UpdateSettings","UpdateState","deletedKey","delete","changeStatusScope","_changeStatusScope","sensitive","visibility","deleteStatus","_deleteStatus","fetchStatus","_fetchStatus","fetchStatuses","_fetchStatuses","localOnly","fetchStatusesCount","_fetchStatusesCount","fetchStatusesByInstance","_fetchStatusesByInstance","fetchedStatus","fetchedStatuses","statusAuthor","statusesByInstance","selectedInstance","showLocal","showPrivate","buttonLoading","allLoaded","statusVisibility","CHANGE_GODMODE_CHECKBOX_VALUE","CHANGE_LOCAL_CHECKBOX_VALUE","CHANGE_PAGE","CHANGE_SELECTED_INSTANCE","SET_STATUS","SET_STATUSES_BY_INSTANCE","PUSH_STATUSES","SET_ALL_LOADED","SET_BUTTON_LOADING","SET_STATUS_VISIBILITY","SET_STATUS_AUTHOR","ChangeStatusScope","statusId","isSensitive","reportCurrentPage","userId","ClearState","DeleteStatus","FetchStatus","FetchStatusAfterUserModeration","FetchStatusesCount","_yield$fetchStatusesC","status_visibility","FetchStatusesByInstance","FetchStatusesPageByInstance","HandleGodmodeCheckboxChange","HandleLocalCheckboxChange","HandleFilterChange","HandlePageChange","SetStatus","ADD_VISITED_VIEW","v","assign","ADD_CACHED_VIEW","DEL_VISITED_VIEW","tagsView_createForOfIteratorHelper","entries","_step$value","slicedToArray_default","splice","DEL_CACHED_VIEW","indexOf","DEL_OTHERS_VISITED_VIEWS","DEL_OTHERS_CACHED_VIEWS","_step3","_iterator3","DEL_ALL_VISITED_VIEWS","DEL_ALL_CACHED_VIEWS","UPDATE_VISITED_VIEW","_step4","_iterator4","addView","addVisitedView","addCachedView","delView","delVisitedView","delCachedView","delOthersViews","delOthersVisitedViews","delOthersCachedViews","delAllViews","delAllVisitedViews","delAllCachedViews","updateVisitedView","loginByUsername","_loginByUsername","username","appsRequest","client_name","random","redirect_uris","origin","scopes","client_id","client_secret","grant_type","getUserInfo","getNodeInfo","_getNodeInfo","getAuthHost","articlePlatform","nodeInfo","SET_CODE","SET_TOKEN","SET_INTRODUCTION","SET_SETTING","SET_NAME","SET_AVATAR","SET_ROLES","SET_ID","SET_AUTH_HOST","SET_NODE_INFO","LoginByUsername","reject","access_token","setToken","setAuthHost","catch","error","GetNodeInfo","metadata","GetUserInfo","pleroma","is_admin","LogOut","removeToken","removeAuthHost","FedLogOut","LoginByPleromaFE","host","userProfile","statusesLoading","userCredentials","userProfileLoading","SET_STATUSES","SET_STATUSES_LOADING","SET_USER","SET_USER_PROFILE_LOADING","SET_USER_CREDENTIALS","FetchUserProfile","userResponse","FetchUserStatuses","_x57","_x58","_x59","_x60","_fetchUserStatuses","fetchUserStatuses","FetchUserCredentials","SetStatuses","UpdateUserCredentials","mrfPolicies","totalUsersCount","local","external","active","need_approval","passwordResetToken","link","SET_USERS","SWAP_USERS","usersWithoutSwapped","u","updatedUsers","b","localeCompare","SET_COUNT","SET_PAGE_SIZE","SET_PASSWORD_RESET_TOKEN","SET_TAG_POLICY","SET_USERS_FILTERS","ActivateUsers","_userId","users_objectSpread","callApiFn","ApplyChanges","AddRight","_statusId","AddTag","ApproveUsersAccount","approval_pending","ClearUsersState","ClearFilters","ConfirmUsersEmail","confirmation_pending","CreateNewAccount","DeactivateUsers","DisableMfa","DeleteRight","DeleteUsers","usersNicknames","EnableTagPolicy","_ref32","FetchTagPolicySetting","_ref33","_callee21","mrfSettings","_context21","Array","isArray","FetchUsers","_ref34","_ref35","_callee22","_context22","join","loadUsers","GetPasswordResetToken","_ref36","_callee23","_yield$getPasswordRes","_context23","RemovePasswordToken","_ref37","RemoveTag","_ref38","_ref39","_callee25","_context25","_ref40","_callee24","_context24","RequirePasswordReset","_ref41","_callee26","_context26","ResendConfirmationEmail","_ref42","_callee27","_context27","SearchUsers","_ref43","_ref44","_callee28","_context28","SuccessMessage","success","ToggleUsersFilter","_ref45","_callee29","currentFilters","_context29","UpdateActorType","_ref46","_ref47","_callee31","_context31","actor_type","_ref48","_callee30","_context30","_ref49","page_size","Vuex","Store","modules","SvgIcon","requireContext","requireAll","require","config","errorHandler","vm","info","nextTick","console","NProgress","configure","showSpinner","whiteList","pluralize","label","timeAgo","between","Number","numberFormatter","num","digits","si","toFixed","toThousandFilter","beforeEach","from","start","addRoutes","src_permission_objectSpread","dangerouslyUseHTMLString","permissionRoles","noGoBack","afterEach","Element","productionTip","render","js_cookie__WEBPACK_IMPORTED_MODULE_0__","js_cookie__WEBPACK_IMPORTED_MODULE_0___default","TokenKey","AuthHostKey","remove","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_TagsView_vue_vue_type_style_index_1_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_AppMain_vue_vue_type_style_index_0_id_f852c4f2_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Navbar_vue_vue_type_style_index_0_id_28de7ff2_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","getBooleanValue","getCurrentValue","_path","_babel_runtime_helpers_toArray__WEBPACK_IMPORTED_MODULE_4___default","firstSettingName","restKeys","firstSegment","secondSegment","_keys","element","rest","_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1___default","tuples","accum","mascot","_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default","parseStringOrTupleValue","parseObject","object","_value$tuple","_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_3___default","socks5","port","_value$split","split","_value$split2","_value$tuple2","prependWithСolon","processNested","valueForState","valueForUpdatedSettings","parentKey","parents","_parents","_parents$","otherParents","updatedValueForState","valueExists","updatedValueForUpdatedSettings","_path2","_keys2","valueIsArrayOfNonObjects","every","currentState","_value","updatedArray","getValueWithoutKey","wrapValues","_settings$setting","mapValue","searchArray","compact","toLowerCase","resultObject","groupKey","groupLabel","search","updatedAcc","parseNestedSettings","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_17178ffc_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","VueI18n","messages","en","dashboard","documentation","guide","pagePermission","directivePermission","icons","componentIndex","markdown","jsonEditor","dndList","splitPane","avatarUpload","dropzone","sticky","countTo","componentMixin","backToTop","dragDialog","dragSelect","dragKanban","charts","keyboardChart","lineChart","mixChart","example","nested","menu1","menu1-1","menu1-2","menu1-2-1","menu1-2-2","menu1-3","menu2","Table","dynamicTable","dragTable","inlineEditTable","complexTable","treeTable","customTreeTable","form","createArticle","editArticle","articleList","errorPages","page401","page404","excel","exportExcel","selectExcel","uploadExcel","zip","pdf","exportZip","theme","clipboardDemo","externalLink","emoji-packs","navbar","logOut","github","login","logIn","logInViaPleromaFE","omitHostname","errorMessage","any","thirdparty","pleromaFELoginFailed","pleromaFELoginSucceed","evict","evictedMessage","evictObjectsHeader","listBannedUrlsHeader","multipleInput","removeSelected","enable","invalidationAndMediaProxy","confirmEnablingMediaProxy","enableMediaProxySuccessMessage","switchRoles","tips","dropzoneTips","stickyTips","backToTopTips1","backToTopTips2","imageUploadTips","table","dynamicTips1","dynamicTips2","dragTips1","dragTips2","importance","remark","export","reviewer","author","readings","edit","publish","draft","cancel","confirm","unfollow","selectedExport","placeholder","change","refresh","close","closeOthers","closeAll","localUsersOnly","unapproved","unconfirmed","activate","deactivate","admin","moderator","moderation","revokeAdmin","grantAdmin","revokeModerator","grantModerator","activateAccount","activateAccounts","deactivateAccount","deactivateAccounts","deleteAccount","deleteAccounts","forceNsfw","stripMedia","forceUnlisted","sandbox","disableRemoteSubscription","disableRemoteSubscriptionForMultiple","disableAnySubscription","disableAnySubscriptionForMultiple","requirePasswordReset","selectUsers","moderateUser","moderateUsers","createAccount","grantRightConfirmation","revokeRightConfirmation","activateMultipleUsersConfirmation","deactivateMultipleUsersConfirmation","deleteUserConfirmation","rejectAccountConfirmation","deleteMultipleUsersConfirmation","addTagForMultipleUsersConfirmation","removeTagFromMultipleUsersConfirmation","requirePasswordResetConfirmation","approveAccountsConfirmation","rejectAccountsConfirmation","confirmAccountsConfirmation","resendEmailConfirmation","mailerMustBeEnabled","ok","completed","canceled","create","submitFormError","emptyEmailError","invalidEmailError","emptyPasswordError","emptyNicknameError","invalidNicknameError","passwordResetTokenCreated","accountCreated","approveAccount","approveAccounts","unapprovedAccount","unconfirmedEmail","confirmAccount","confirmAccounts","rejectAccount","rejectAccounts","resendConfirmation","invalidAccount","invalidNickname","passwordResetTokenGenerated","linkToResetPassword","registrationReason","service","person","enableTagPolicy","confirmEnablingTagPolicy","enableTagPolicySuccessMessage","instanceFilter","loadMore","noInstances","onlyLocalStatuses","showPrivateStatuses","direct","private","public","unlisted","openStatusInInstance","accountType","actorType","recentStatuses","reason","pending","noStatuses","openAccountInInstance","securitySettings","passwordChangeWarning1","passwordChangeWarning2","passwordLengthNotice","inputNewEmail","inputNewPassword","passwordUpdated","emailUpdated","submit","usersFilter","inputPlaceholder","byAccountType","byStatus","reply","showNotes","newNote","confirmMsg","deleteCompleted","deleteCanceled","noNotes","changeAllReports","changeScope","reopen","resolveAll","reopenAll","addSensitive","removeSensitive","reportOn","reportsOn","actors","reportedStatus","statusDeleted","leaveNote","postNote","notFound","reportsFilter","open","closed","resolved","upload","mailer","linkFormatter","logger","activityPub","auth","captcha","frontend","http","mrf","mediaProxy","gopher","jobQueue","webPush","esshd","rateLimiters","other","follow","followRelay","followedBack","instanceUrl","removeFromDB","successfullyDownloaded","successfullyImported","nowNewPacksToImport","successfullyUpdated","metadatLowerCase","successfullyRemoved","seeDocs","instanceReboot","restartSuccess","removeSettingConfirmation","changeImage","uploadImage","createInviteToken","pickDate","tokenCreated","inviteLink","uses","used","revoke","inviteUserViaEmail","sendRegistration","emailSent","inviteViaEmailAlert","emoji","reloaded","refreshed","importEmojiTooltip","importPacks","refreshLocalPacks","createLocalPack","remoteInstanceAddress","refreshRemote","sharePack","homepage","license","fallbackSrc","fallbackSrcSha","saveMetadata","downloadPack","downloadPackArchive","addNewEmoji","manageEmoji","thisWillDownload","downloadToCurrentInstance","canBeChanged","willBeUsable","downloadAsOptional","downloadSharedPack","downloadSharedPackMobile","optional","uploadFile","clickToUpload","customFilename","customFilenameDesc","localPack","leaveEmptyShortcode","leaveEmptyFilename","update","selectLocalPack","specifyShortcode","specifyFilename","copy","copyToLocalPack","emptyPack","emojiWarning","image","elementEnLocale","zh","thirdpartyTips","elementZhLocale","es","elementEsLocale","oc","locale","_addNewEmojiFile","_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","trim","addressOfEmojiInPack","encodeUri","_createPack","_deleteEmojiFile","_deletePack","_downloadFrom","timeout","_fetchPack","_importFromFS","_listPacks","_listRemotePacks","_reloadEmoji","_savePackMetadata","_updateEmojiFile","new_shortcode","new_filename","encodeURIComponent","subMenuActiveText","menuHover","subMenuBg","subMenuHover","sideBarWidth","axios__WEBPACK_IMPORTED_MODULE_0__","axios__WEBPACK_IMPORTED_MODULE_0___default","element_ui__WEBPACK_IMPORTED_MODULE_1__","axios","interceptors","edata","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Item_vue_vue_type_style_index_0_id_52140d98_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","element_ui_SvgIconvue_type_script_lang_js_","iconClass","className","iconName","svgClass","_g","aria-hidden","$listeners","xlink:href"],"mappings":"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","file":"static/js/app.69891fda.js","sourcesContent":["import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-pdf\",\n \"use\": \"icon-pdf-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-people\",\n \"use\": \"icon-people-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-eye-open\",\n \"use\": \"icon-eye-open-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=69c6c5c4&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=69c6c5c4&scoped=true&lang=css&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-exit-fullscreen\",\n \"use\": \"icon-exit-fullscreen-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-add_col_before\",\n \"use\": \"icon-tiptap-add_col_before-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-nested\",\n \"use\": \"icon-nested-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-theme\",\n \"use\": \"icon-theme-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-table\",\n \"use\": \"icon-tiptap-table-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-form\",\n \"use\": \"icon-form-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-add_row_before\",\n \"use\": \"icon-tiptap-add_row_before-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-combine_cells\",\n \"use\": \"icon-tiptap-combine_cells-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-checklist\",\n \"use\": \"icon-tiptap-checklist-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"checklist-alternate\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-dashboard\",\n \"use\": \"icon-dashboard-usage\",\n \"viewBox\": \"0 0 128 100\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","const isLocalhost = (instanceName) =>\n instanceName.startsWith('localhost:') || instanceName.startsWith('127.0.0.1:')\n\nexport const baseName = (instanceName = 'localhost') => {\n if (instanceName.match(/https?:\\/\\//)) {\n return instanceName\n } else {\n return isLocalhost(instanceName) ? `http://${instanceName}` : `https://${instanceName}`\n }\n}\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-delete_table\",\n \"use\": \"icon-tiptap-delete_table-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-delete_row\",\n \"use\": \"icon-tiptap-delete_row-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-shopping\",\n \"use\": \"icon-shopping-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-bug\",\n \"use\": \"icon-bug-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-international\",\n \"use\": \"icon-international-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-qq\",\n \"use\": \"icon-qq-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-link\",\n \"use\": \"icon-link-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=591d6778&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=591d6778&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=0&id=e1cdb714&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=0&id=e1cdb714&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-guide 2\",\n \"use\": \"icon-guide 2-usage\",\n \"viewBox\": \"0 0 1000 1000\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-language\",\n \"use\": \"icon-language-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-password\",\n \"use\": \"icon-password-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-delete_col\",\n \"use\": \"icon-tiptap-delete_col-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-peoples\",\n \"use\": \"icon-peoples-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-money\",\n \"use\": \"icon-money-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-example\",\n \"use\": \"icon-example-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-list\",\n \"use\": \"icon-list-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-remove\",\n \"use\": \"icon-tiptap-remove-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"delete-2-alternate\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-settings\",\n \"use\": \"icon-settings-usage\",\n \"viewBox\": \"0 0 490.2 490.2\",\n \"content\": \"\\r\\n\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-message\",\n \"use\": \"icon-message-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-table\",\n \"use\": \"icon-table-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=style&index=0&id=767d264f&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=style&index=0&id=767d264f&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-eye\",\n \"use\": \"icon-eye-usage\",\n \"viewBox\": \"0 0 128 64\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","var map = {\n\t\"./404.svg\": \"oUrx\",\n\t\"./bug.svg\": \"F3lI\",\n\t\"./chart.svg\": \"yCkv\",\n\t\"./clipboard.svg\": \"vDVG\",\n\t\"./component.svg\": \"VtY+\",\n\t\"./dashboard.svg\": \"94Jb\",\n\t\"./documentation.svg\": \"kPu2\",\n\t\"./drag.svg\": \"m7++\",\n\t\"./edit.svg\": \"qkZ8\",\n\t\"./email.svg\": \"y7eQ\",\n\t\"./example.svg\": \"MMMJ\",\n\t\"./excel.svg\": \"ZZmv\",\n\t\"./exit-fullscreen.svg\": \"28eg\",\n\t\"./eye-open.svg\": \"1+ww\",\n\t\"./eye.svg\": \"TfVu\",\n\t\"./form.svg\": \"6xvN\",\n\t\"./fullscreen.svg\": \"mSHS\",\n\t\"./guide 2.svg\": \"ICep\",\n\t\"./guide.svg\": \"ZoO1\",\n\t\"./icon.svg\": \"nZHn\",\n\t\"./international.svg\": \"F9+T\",\n\t\"./language.svg\": \"JYDz\",\n\t\"./link.svg\": \"GPBF\",\n\t\"./list.svg\": \"MokB\",\n\t\"./lock.svg\": \"qwAt\",\n\t\"./message.svg\": \"R/8a\",\n\t\"./money.svg\": \"MEYL\",\n\t\"./nested.svg\": \"3PhE\",\n\t\"./password.svg\": \"Kj24\",\n\t\"./pdf.svg\": \"+aF5\",\n\t\"./people.svg\": \"0Fbn\",\n\t\"./peoples.svg\": \"LxGF\",\n\t\"./qq.svg\": \"FDDl\",\n\t\"./search.svg\": \"jo2x\",\n\t\"./settings.svg\": \"P8iQ\",\n\t\"./shopping.svg\": \"EqXK\",\n\t\"./size.svg\": \"hkRB\",\n\t\"./star.svg\": \"cIpu\",\n\t\"./tab.svg\": \"j7e1\",\n\t\"./table.svg\": \"R/Hx\",\n\t\"./theme.svg\": \"5TQQ\",\n\t\"./tiptap-add_col_after.svg\": \"cBj6\",\n\t\"./tiptap-add_col_before.svg\": \"2QTO\",\n\t\"./tiptap-add_row_after.svg\": \"ec3N\",\n\t\"./tiptap-add_row_before.svg\": \"7x1v\",\n\t\"./tiptap-bold.svg\": \"dSKK\",\n\t\"./tiptap-checklist.svg\": \"8L8/\",\n\t\"./tiptap-code.svg\": \"taZh\",\n\t\"./tiptap-combine_cells.svg\": \"8CrX\",\n\t\"./tiptap-delete_col.svg\": \"LjVp\",\n\t\"./tiptap-delete_row.svg\": \"ENUZ\",\n\t\"./tiptap-delete_table.svg\": \"Dza5\",\n\t\"./tiptap-github.svg\": \"nIMs\",\n\t\"./tiptap-hr.svg\": \"kCbn\",\n\t\"./tiptap-image.svg\": \"iprT\",\n\t\"./tiptap-italic.svg\": \"hRv2\",\n\t\"./tiptap-link.svg\": \"l3nR\",\n\t\"./tiptap-mention.svg\": \"sjxz\",\n\t\"./tiptap-ol.svg\": \"j6nr\",\n\t\"./tiptap-paragraph.svg\": \"igzo\",\n\t\"./tiptap-quote.svg\": \"swuu\",\n\t\"./tiptap-redo.svg\": \"me7H\",\n\t\"./tiptap-remove.svg\": \"NgVs\",\n\t\"./tiptap-strike.svg\": \"kUWf\",\n\t\"./tiptap-table.svg\": \"6S0t\",\n\t\"./tiptap-ul.svg\": \"kGAI\",\n\t\"./tiptap-underline.svg\": \"wfO2\",\n\t\"./tiptap-undo.svg\": \"kpiL\",\n\t\"./tree.svg\": \"k80C\",\n\t\"./user.svg\": \"s7Vf\",\n\t\"./wechat.svg\": \"gNoN\",\n\t\"./zip.svg\": \"iqZD\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"Uf/o\";","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-component\",\n \"use\": \"icon-component-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../node_modules/babel-loader/lib/index.js?cacheDirectory!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js?cacheDirectory!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=6b42edcf&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"App.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function needReboot(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/need_reboot`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function restartApp(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/restart`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import Cookies from 'js-cookie'\nimport { needReboot, restartApp } from '@/api/app'\n\nconst app = {\n state: {\n sidebar: {\n opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true,\n withoutAnimation: false\n },\n device: 'desktop',\n language: Cookies.get('language') || 'en',\n needReboot: false,\n size: Cookies.get('size') || 'medium',\n invitesEnabled: false\n },\n mutations: {\n TOGGLE_SIDEBAR: state => {\n state.sidebar.opened = !state.sidebar.opened\n state.sidebar.withoutAnimation = false\n if (state.sidebar.opened) {\n Cookies.set('sidebarStatus', 1)\n } else {\n Cookies.set('sidebarStatus', 0)\n }\n },\n CLOSE_SIDEBAR: (state, withoutAnimation) => {\n Cookies.set('sidebarStatus', 0)\n state.sidebar.opened = false\n state.sidebar.withoutAnimation = withoutAnimation\n },\n TOGGLE_DEVICE: (state, device) => {\n state.device = device\n },\n SET_INVITES_ENABLED: (state, invitesEnabled) => {\n state.invitesEnabled = invitesEnabled\n },\n SET_LANGUAGE: (state, language) => {\n state.language = language\n Cookies.set('language', language)\n },\n TOGGLE_REBOOT: (state, needReboot) => {\n state.needReboot = needReboot\n },\n SET_SIZE: (state, size) => {\n state.size = size\n Cookies.set('size', size)\n }\n },\n actions: {\n closeSideBar({ commit }, { withoutAnimation }) {\n commit('CLOSE_SIDEBAR', withoutAnimation)\n },\n async NeedReboot({ commit, getters }) {\n const response = await needReboot(getters.authHost, getters.token)\n commit('TOGGLE_REBOOT', response.data['need_reboot'])\n },\n async RestartApplication({ commit, getters }) {\n await restartApp(getters.authHost, getters.token)\n commit('TOGGLE_REBOOT', false)\n },\n SetInvitesEnabled({ commit }, invitesEnabled) {\n commit('SET_INVITES_ENABLED', invitesEnabled)\n },\n setLanguage({ commit }, language) {\n commit('SET_LANGUAGE', language)\n },\n setSize({ commit }, size) {\n commit('SET_SIZE', size)\n },\n toggleDevice({ commit }, device) {\n commit('TOGGLE_DEVICE', device)\n },\n toggleSideBar({ commit }) {\n commit('TOGGLE_SIDEBAR')\n }\n }\n}\n\nexport default app\n","import {\n addNewEmojiFile,\n createPack,\n deleteEmojiFile,\n deletePack,\n downloadFrom,\n fetchPack,\n importFromFS,\n listPacks,\n listRemotePacks,\n reloadEmoji,\n savePackMetadata,\n updateEmojiFile\n} from '@/api/emojiPacks'\nimport i18n from '@/lang'\nimport { Message } from 'element-ui'\n\nimport Vue from 'vue'\n\nconst emojiPacks = {\n state: {\n activeTab: '',\n currentLocalFilesPage: 1,\n currentLocalPacksPage: 1,\n currentRemoteFilesPage: 1,\n currentRemotePacksPage: 1,\n filesPageSize: 30,\n localPackFilesCount: 0,\n localPacks: {},\n localPacksCount: 0,\n pageSize: 50,\n remoteInstance: '',\n remotePackFilesCount: 0,\n remotePacks: {},\n remotePacksCount: 0\n },\n mutations: {\n SET_ACTIVE_TAB: (state, tab) => {\n state.activeTab = tab\n },\n SET_LOCAL_FILES_COUNT: (state, count) => {\n state.localPackFilesCount = count\n },\n SET_LOCAL_FILES_PAGE: (state, page) => {\n state.currentLocalFilesPage = page\n },\n SET_LOCAL_PACKS: (state, packs) => {\n state.localPacks = packs\n },\n SET_LOCAL_PACKS_COUNT: (state, count) => {\n state.localPacksCount = count\n },\n SET_LOCAL_PACK_FILES: (state, { name, files }) => {\n state.localPacks = { ...state.localPacks, [name]: { ...state.localPacks[name], files }}\n },\n SET_LOCAL_PAGE: (state, page) => {\n state.currentLocalPacksPage = page\n },\n SET_REMOTE_FILES_COUNT: (state, count) => {\n state.remotePackFilesCount = count\n },\n SET_REMOTE_FILES_PAGE: (state, page) => {\n state.currentRemoteFilesPage = page\n },\n SET_REMOTE_INSTANCE: (state, name) => {\n state.remoteInstance = name\n },\n SET_REMOTE_PACKS_COUNT: (state, count) => {\n state.remotePacksCount = count\n },\n SET_REMOTE_PACK_FILES: (state, { name, files }) => {\n state.remotePacks = { ...state.remotePacks, [name]: { ...state.remotePacks[name], files }}\n },\n SET_REMOTE_PACKS: (state, packs) => {\n state.remotePacks = packs\n },\n UPDATE_LOCAL_PACK_VAL: (state, { name, key, value }) => {\n Vue.set(state.localPacks[name]['pack'], key, value)\n },\n UPDATE_LOCAL_PACK_PACK: (state, { name, pack }) => {\n state.localPacks[name]['pack'] = pack\n },\n UPDATE_LOCAL_PACK_FILES: (state, { name, files }) => {\n // Use vue.set in case \"files\" was null\n Vue.set(\n state.localPacks[name],\n 'files',\n files\n )\n }\n },\n actions: {\n async AddNewEmojiFile({ commit, getters }, { packName, file, shortcode, filename }) {\n let result\n try {\n result = await addNewEmojiFile(packName, file, shortcode, filename, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n Message({\n message: `${i18n.t('settings.successfullyUpdated')} ${packName} ${i18n.t('settings.metadatLowerCase')}`,\n type: 'success',\n duration: 5 * 1000\n })\n\n commit('UPDATE_LOCAL_PACK_FILES', { name: packName, files: result.data })\n },\n async DeleteEmojiFile({ commit, dispatch, getters, state }, { packName, shortcode }) {\n const { [shortcode]: value, ...updatedPackFiles } = state.localPacks[packName].files\n commit('UPDATE_LOCAL_PACK_FILES', { name: packName, files: updatedPackFiles })\n\n try {\n await deleteEmojiFile(packName, shortcode, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n Message({\n message: `${i18n.t('settings.successfullyUpdated')} ${packName} ${i18n.t('settings.metadatLowerCase')}`,\n type: 'success',\n duration: 5 * 1000\n })\n if (Object.keys(updatedPackFiles).length === 0 && state.currentLocalFilesPage > 1) {\n dispatch('FetchLocalSinglePack', { name: packName, page: state.currentLocalFilesPage - 1 })\n } else {\n dispatch('FetchLocalSinglePack', { name: packName, page: state.currentLocalFilesPage })\n }\n },\n async CreatePack({ getters }, { name }) {\n await createPack(getters.authHost, getters.token, name)\n },\n async DeletePack({ getters }, { name }) {\n await deletePack(getters.authHost, getters.token, name)\n },\n async DownloadFrom({ getters }, { instanceAddress, packName, as }) {\n const result = await downloadFrom(instanceAddress, packName, as, getters.authHost, getters.token)\n\n if (result.data === 'ok') {\n Message({\n message: `${i18n.t('settings.successfullyDownloaded')} ${packName}`,\n type: 'success',\n duration: 5 * 1000\n })\n }\n },\n async FetchLocalEmojiPacks({ commit, getters, state }, page) {\n const { data } = await listPacks(page, state.pageSize, getters.authHost, getters.token)\n const { packs, count } = data\n const updatedPacks = Object.keys(packs).reduce((acc, packName) => {\n const { files, ...pack } = packs[packName]\n acc[packName] = pack\n return acc\n }, {})\n commit('SET_LOCAL_PACKS', updatedPacks)\n commit('SET_LOCAL_PACKS_COUNT', count)\n commit('SET_LOCAL_PAGE', page)\n },\n async FetchLocalSinglePack({ getters, commit, state }, { name, page }) {\n const { data } = await fetchPack(name, page, state.filesPageSize, getters.authHost, getters.token)\n const { files, files_count } = data\n commit('SET_LOCAL_PACK_FILES', { name, files })\n commit('SET_LOCAL_FILES_COUNT', files_count)\n commit('SET_LOCAL_FILES_PAGE', page)\n },\n async FetchRemoteSinglePack({ getters, commit, state }, { name, page }) {\n const { data } = await fetchPack(name, page, state.filesPageSize, getters.authHost, getters.token)\n const { files, files_count } = data\n commit('SET_REMOTE_PACK_FILES', { name, files })\n commit('SET_REMOTE_FILES_COUNT', files_count)\n commit('SET_REMOTE_FILES_PAGE', page)\n },\n async ImportFromFS({ getters }) {\n const result = await importFromFS(getters.authHost, getters.token)\n\n if (result.status === 200) {\n const message = result.data.length > 0\n ? `${i18n.t('settings.successfullyImported')} ${result.data}`\n : i18n.t('settings.nowNewPacksToImport')\n\n Message({\n message,\n type: 'success',\n duration: 5 * 1000\n })\n }\n },\n async ReloadEmoji({ getters }) {\n await reloadEmoji(getters.authHost, getters.token)\n },\n async SavePackMetadata({ commit, getters, state }, { packName }) {\n const result =\n await savePackMetadata(\n getters.authHost,\n getters.token,\n packName,\n state.localPacks[packName]['pack']\n )\n\n if (result.status === 200) {\n Message({\n message: `${i18n.t('settings.successfullyUpdated')} ${packName} ${i18n.t('settings.metadatLowerCase')}`,\n type: 'success',\n duration: 5 * 1000\n })\n\n commit('UPDATE_LOCAL_PACK_PACK', { name: packName, pack: result.data })\n }\n },\n SetActiveTab({ commit }, activeTab) {\n commit('SET_ACTIVE_TAB', activeTab)\n },\n async SetRemoteEmojiPacks({ commit, getters, state }, { page, remoteInstance }) {\n const { data } = await listRemotePacks(remoteInstance, page, state.pageSize, getters.authHost, getters.token)\n const { packs, count } = data\n const updatedPacks = Object.keys(packs).reduce((acc, packName) => {\n const { files, ...pack } = packs[packName]\n acc[packName] = pack\n return acc\n }, {})\n\n commit('SET_REMOTE_INSTANCE', remoteInstance)\n commit('SET_REMOTE_PACKS', updatedPacks)\n commit('SET_REMOTE_PACKS_COUNT', count)\n },\n SetRemoteInstance({ commit }, instance) {\n commit('SET_REMOTE_INSTANCE', instance)\n },\n async UpdateEmojiFile({ commit, dispatch, getters, state }, { packName, shortcode, newShortcode, newFilename, force }) {\n const updatedPackFiles = Object.keys(state.localPacks[packName].files).reduce((acc, el) => {\n if (el === shortcode) {\n acc[newShortcode] = newFilename\n } else {\n acc[el] = state.localPacks[packName].files[el]\n }\n return acc\n }, {})\n commit('UPDATE_LOCAL_PACK_FILES', { name: packName, files: updatedPackFiles })\n\n try {\n await updateEmojiFile(packName, shortcode, newShortcode, newFilename, force, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n Message({\n message: `${i18n.t('settings.successfullyUpdated')} ${packName} ${i18n.t('settings.metadatLowerCase')}`,\n type: 'success',\n duration: 5 * 1000\n })\n\n dispatch('FetchLocalSinglePack', { name: packName, page: state.currentLocalFilesPage })\n },\n async UpdateLocalPackVal({ commit }, args) {\n commit('UPDATE_LOCAL_PACK_VAL', args)\n }\n }\n}\n\nexport default emojiPacks\n","const errorLog = {\n state: {\n logs: []\n },\n mutations: {\n ADD_ERROR_LOG: (state, log) => {\n state.logs.push(log)\n }\n },\n actions: {\n addErrorLog({ commit }, log) {\n commit('ADD_ERROR_LOG', log)\n }\n }\n}\n\nexport default errorLog\n","const getters = {\n sidebar: state => state.app.sidebar,\n language: state => state.app.language,\n size: state => state.app.size,\n device: state => state.app.device,\n visitedViews: state => state.tagsView.visitedViews,\n cachedViews: state => state.tagsView.cachedViews,\n token: state => state.user.token,\n avatar: state => state.user.avatar,\n name: state => state.user.name,\n introduction: state => state.user.introduction,\n status: state => state.user.status,\n roles: state => state.user.roles,\n setting: state => state.user.setting,\n permission_routers: state => state.permission.routers,\n addRouters: state => state.permission.addRouters,\n errorLogs: state => state.errorLog.logs,\n users: state => state.users.fetchedUsers,\n authHost: state => state.user.authHost,\n settings: state => state.settings\n}\nexport default getters\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function generateInviteToken(max_use, expires_at, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/invite_token`,\n method: 'post',\n headers: authHeaders(token),\n data: expires_at && expires_at.length > 0 ? { max_use, expires_at } : { max_use }\n })\n}\n\nexport async function inviteViaEmail(email, name, authHost, token) {\n const data = name.length > 0 ? { email, name } : { email }\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/email_invite',\n method: 'post',\n headers: authHeaders(token),\n data\n })\n}\n\nexport async function listInviteTokens(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/invites`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function revokeToken(tokenToRevoke, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/revoke_invite`,\n method: 'post',\n headers: authHeaders(token),\n data: { token: tokenToRevoke }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { generateInviteToken, inviteViaEmail, listInviteTokens, revokeToken } from '@/api/invites'\nimport { Message } from 'element-ui'\nimport i18n from '@/lang'\n\nconst invites = {\n state: {\n inviteTokens: [],\n loading: false,\n newToken: {}\n },\n mutations: {\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_NEW_TOKEN: (state, token) => {\n state.newToken = token\n },\n SET_TOKENS: (state, tokens) => {\n state.inviteTokens = tokens\n }\n },\n actions: {\n async FetchInviteTokens({ commit, getters }) {\n commit('SET_LOADING', true)\n const response = await listInviteTokens(getters.authHost, getters.token)\n commit('SET_TOKENS', response.data.invites.reverse())\n commit('SET_LOADING', false)\n },\n async GenerateInviteToken({ commit, dispatch, getters }, { maxUse, expiresAt }) {\n try {\n const { data } = await generateInviteToken(maxUse, expiresAt, getters.authHost, getters.token)\n commit('SET_NEW_TOKEN', { token: data.token, maxUse: data.max_use, expiresAt: data.expires_at })\n } catch (_e) {\n return\n }\n dispatch('FetchInviteTokens')\n },\n async InviteUserViaEmail({ commit, dispatch, getters }, { email, name }) {\n try {\n await inviteViaEmail(email, name, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n Message({\n message: i18n.t('invites.emailSent'),\n type: 'success',\n duration: 5 * 1000\n })\n },\n RemoveNewToken({ commit }) {\n commit('SET_NEW_TOKEN', {})\n },\n async RevokeToken({ commit, dispatch, getters }, token) {\n try {\n await revokeToken(token, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n dispatch('FetchInviteTokens')\n }\n }\n}\n\nexport default invites\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function listBannedUrls(page, pageSize, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/media_proxy_caches?page=${page}&page_size=${pageSize}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function purgeUrls(urls, ban, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/media_proxy_caches/purge`,\n method: 'post',\n headers: authHeaders(token),\n data: { urls, ban }\n })\n}\n\nexport async function removeBannedUrls(urls, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/media_proxy_caches/delete`,\n method: 'post',\n headers: authHeaders(token),\n data: { urls }\n })\n}\n\nexport async function searchBannedUrls(query, page, pageSize, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/media_proxy_caches?query=${query}&page=${page}&page_size=${pageSize}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function deleteInstanceDocument(name, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/instance_document/${name}`,\n method: 'delete',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchDescription(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/config/descriptions`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchSettings(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/config`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function getInstanceDocument(name, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/instance_document/${name}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function updateInstanceDocument(name, formData, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/instance_document/${name}`,\n method: 'patch',\n data: formData,\n headers: { ...authHeaders(token), 'Content-Type': 'multipart/form-data' }\n })\n}\n\nexport async function updateSettings(configs, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/config`,\n method: 'post',\n headers: authHeaders(token),\n data: { configs }\n })\n}\n\nexport async function removeSettings(configs, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/config`,\n method: 'post',\n headers: authHeaders(token),\n data: { configs }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { listBannedUrls, purgeUrls, removeBannedUrls, searchBannedUrls } from '@/api/mediaProxyCache'\nimport { fetchSettings, updateSettings } from '@/api/settings'\nimport { Message } from 'element-ui'\nimport i18n from '@/lang'\n\nconst mediaProxyCache = {\n state: {\n bannedUrls: [],\n currentPage: 1,\n loading: false,\n mediaProxyEnabled: false,\n pageSize: 50,\n searchQuery: '',\n totalUrlsCount: 0\n },\n mutations: {\n MEDIA_PROXY_ENABLED: (state, enabled) => {\n state.mediaProxyEnabled = enabled\n },\n SET_BANNED_URLS: (state, urls) => {\n state.bannedUrls = urls.map(el => { return { url: el } })\n },\n SET_TOTAL_URLS_COUNT: (state, count) => {\n state.totalUrlsCount = count\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_PAGE: (state, page) => {\n state.currentPage = page\n },\n SET_SEARCH_QUERY: (state, query) => {\n state.searchQuery = query\n }\n },\n actions: {\n async EnableMediaProxy({ dispatch, getters, state }) {\n const configs = [{\n group: ':pleroma',\n key: ':media_proxy',\n value: [\n { tuple: [':enabled', true] },\n { tuple: [':invalidation', [{ tuple: [':enabled', true] }]] }\n ]\n }]\n await updateSettings(configs, getters.authHost, getters.token)\n\n dispatch('FetchMediaProxySetting')\n },\n async FetchMediaProxySetting({ commit, getters }) {\n const { data } = await fetchSettings(getters.authHost, getters.token)\n const mediaProxySettings = data.configs.find(el => el.key === ':media_proxy')\n ? data.configs.find(el => el.key === ':media_proxy').value\n : []\n const mediaProxyEnabled = mediaProxySettings.find(el => el.tuple[0] === ':enabled')\n ? mediaProxySettings.find(el => el.tuple[0] === ':enabled').tuple[1]\n : false\n\n commit('MEDIA_PROXY_ENABLED', mediaProxyEnabled)\n },\n async ListBannedUrls({ commit, getters, state }, { page }) {\n commit('SET_LOADING', true)\n const response = await listBannedUrls(page, state.pageSize, getters.authHost, getters.token)\n commit('SET_BANNED_URLS', response.data.urls)\n commit('SET_TOTAL_URLS_COUNT', response.data.count)\n commit('SET_PAGE', page)\n commit('SET_LOADING', false)\n },\n async PurgeUrls({ dispatch, getters, state }, { urls, ban }) {\n await purgeUrls(urls, ban, getters.authHost, getters.token)\n Message({\n message: i18n.t('mediaProxyCache.evictedMessage'),\n type: 'success',\n duration: 5 * 1000\n })\n if (ban && state.searchQuery.length === 0) {\n dispatch('ListBannedUrls', { page: state.currentPage })\n } else if (ban) {\n dispatch('SearchUrls', { query: state.searchQuery, page: state.currentPage })\n }\n },\n async RemoveBannedUrls({ dispatch, getters, state }, urls) {\n await removeBannedUrls(urls, getters.authHost, getters.token)\n if (state.searchQuery.length === 0) {\n dispatch('ListBannedUrls', { page: state.currentPage })\n } else {\n dispatch('SearchUrls', { query: state.searchQuery, page: state.currentPage })\n }\n },\n async SearchUrls({ commit, dispatch, getters, state }, { query, page }) {\n if (query.length === 0) {\n commit('SET_SEARCH_QUERY', query)\n dispatch('ListBannedUrls', { page })\n } else {\n commit('SET_LOADING', true)\n commit('SET_SEARCH_QUERY', query)\n\n const response = await searchBannedUrls(query, page, state.pageSize, getters.authHost, getters.token)\n commit('SET_BANNED_URLS', response.data.urls)\n commit('SET_TOTAL_URLS_COUNT', response.data.count)\n commit('SET_PAGE', page)\n commit('SET_LOADING', false)\n }\n }\n }\n}\n\nexport default mediaProxyCache\n","import _ from 'lodash'\n\nimport request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function fetchLog(authHost, token, params, page = 1) {\n const normalizedParams = new URLSearchParams(\n _.omitBy({ ...params, page }, _.isUndefined)\n ).toString()\n\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/moderation_log?${normalizedParams}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchAdmins(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?filters=is_admin`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchModerators(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?filters=is_moderator`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchLog, fetchAdmins, fetchModerators } from '@/api/moderationLog'\n\nconst moderationLog = {\n state: {\n fetchedLog: [],\n logItemsCount: 0,\n admins: [],\n moderators: [],\n logLoading: true,\n adminsLoading: true\n },\n mutations: {\n SET_LOG_LOADING: (state, status) => {\n state.logLoading = status\n },\n SET_ADMINS_LOADING: (state, status) => {\n state.adminsLoading = status\n },\n SET_MODERATION_LOG: (state, log) => {\n state.fetchedLog = log\n },\n SET_MODERATION_LOG_COUNT: (state, count) => {\n state.logItemsCount = count\n },\n SET_ADMINS: (state, admins) => {\n state.admins = admins\n },\n SET_MODERATORS: (state, moderators) => {\n state.moderators = moderators\n }\n },\n actions: {\n async FetchModerationLog({ commit, getters }, opts = {}) {\n const response = await fetchLog(getters.authHost, getters.token, opts)\n\n commit('SET_MODERATION_LOG', response.data.items)\n commit('SET_MODERATION_LOG_COUNT', response.data.total)\n commit('SET_LOG_LOADING', false)\n },\n async FetchAdmins({ commit, getters }) {\n const adminsResponse = await fetchAdmins(getters.authHost, getters.token)\n const moderatorsResponse = await fetchModerators(getters.authHost, getters.token)\n\n commit('SET_ADMINS', adminsResponse.data)\n commit('SET_MODERATORS', moderatorsResponse.data)\n commit('SET_ADMINS_LOADING', false)\n }\n }\n}\n\nexport default moderationLog\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function fetchPeers(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/v1/instance/peers`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchPeers } from '@/api/peers'\n\nconst peers = {\n state: {\n fetchedPeers: [],\n loading: true\n },\n\n mutations: {\n SET_PEERS: (state, peers) => {\n state.fetchedPeers = peers\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n }\n },\n\n actions: {\n async FetchPeers({ commit, getters }) {\n const peers = await fetchPeers(getters.authHost, getters.token)\n\n commit('SET_PEERS', [...peers.data].sort())\n commit('SET_LOADING', false)\n }\n }\n}\n\nexport default peers\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=69c6c5c4&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=69c6c5c4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"69c6c5c4\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"padding\":\"0 15px\"},on:{\"click\":_vm.toggleClick}},[_c('svg',{staticClass:\"hamburger\",class:{'is-active':_vm.isActive},attrs:{\"viewBox\":\"0 0 1024 1024\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"64\",\"height\":\"64\"}},[_c('path',{attrs:{\"d\":\"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z\"}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Navbar.vue?vue&type=template&id=28de7ff2&scoped=true&\"\nimport script from \"./Navbar.vue?vue&type=script&lang=js&\"\nexport * from \"./Navbar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navbar.vue?vue&type=style&index=0&id=28de7ff2&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"28de7ff2\",\n null\n \n)\n\ncomponent.options.__file = \"Navbar.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"navbar\"},[_c('hamburger',{staticClass:\"hamburger-container\",attrs:{\"toggle-click\":_vm.toggleSideBar,\"is-active\":_vm.sidebar.opened}}),_vm._v(\" \"),_c('div',{staticClass:\"right-menu\"},[_c('el-dropdown',{staticClass:\"avatar-container right-menu-item hover-effect\",attrs:{\"trigger\":\"click\"}},[_c('div',{staticClass:\"avatar-wrapper\"},[_c('img',{staticClass:\"user-avatar\",attrs:{\"src\":_vm.avatar+'?imageView2/1/w/80/h/80'}})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',[_c('span',{staticStyle:{\"display\":\"block\"},on:{\"click\":_vm.logout}},[_vm._v(_vm._s(_vm.$t('navbar.logOut')))])])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// translate router.meta.title, be used in breadcrumb sidebar tagsview\nexport function generateTitle(title) {\n const hasKey = this.$te('route.' + title)\n\n if (hasKey) {\n // $t :this method from vue-i18n, inject in @/lang/index.js\n const translatedTitle = this.$t('route.' + title)\n\n return translatedTitle\n }\n return title\n}\n","/**\n * Created by jiachenpan on 16/11/18.\n */\n\nexport function parseTime(time, cFormat) {\n if (arguments.length === 0) {\n return null\n }\n const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n let date\n if (typeof time === 'object') {\n date = time\n } else {\n if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {\n time = parseInt(time)\n }\n if ((typeof time === 'number') && (time.toString().length === 10)) {\n time = time * 1000\n }\n date = new Date(time)\n }\n const formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n }\n const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n let value = formatObj[key]\n // Note: getDay() returns 0 on Sunday\n if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }\n if (result.length > 0 && value < 10) {\n value = '0' + value\n }\n return value || 0\n })\n return time_str\n}\n\nexport function formatTime(time, option) {\n time = +time * 1000\n const d = new Date(time)\n const now = Date.now()\n\n const diff = (now - d) / 1000\n\n if (diff < 30) {\n return '刚刚'\n } else if (diff < 3600) {\n // less 1 hour\n return Math.ceil(diff / 60) + '分钟前'\n } else if (diff < 3600 * 24) {\n return Math.ceil(diff / 3600) + '小时前'\n } else if (diff < 3600 * 24 * 2) {\n return '1天前'\n }\n if (option) {\n return parseTime(time, option)\n } else {\n return (\n d.getMonth() +\n 1 +\n '月' +\n d.getDate() +\n '日' +\n d.getHours() +\n '时' +\n d.getMinutes() +\n '分'\n )\n }\n}\n\n// 格式化时间\nexport function getQueryObject(url) {\n url = url == null ? window.location.href : url\n const search = url.substring(url.lastIndexOf('?') + 1)\n const obj = {}\n const reg = /([^?&=]+)=([^?&=]*)/g\n search.replace(reg, (rs, $1, $2) => {\n const name = decodeURIComponent($1)\n let val = decodeURIComponent($2)\n val = String(val)\n obj[name] = val\n return rs\n })\n return obj\n}\n\n/**\n *get getByteLen\n * @param {Sting} val input value\n * @returns {number} output value\n */\nexport function getByteLen(val) {\n let len = 0\n for (let i = 0; i < val.length; i++) {\n if (val[i].match(/[^\\x00-\\xff]/gi) != null) {\n len += 1\n } else {\n len += 0.5\n }\n }\n return Math.floor(len)\n}\n\nexport function cleanArray(actual) {\n const newArray = []\n for (let i = 0; i < actual.length; i++) {\n if (actual[i]) {\n newArray.push(actual[i])\n }\n }\n return newArray\n}\n\nexport function param(json) {\n if (!json) return ''\n return cleanArray(\n Object.keys(json).map(key => {\n if (json[key] === undefined) return ''\n return encodeURIComponent(key) + '=' + encodeURIComponent(json[key])\n })\n ).join('&')\n}\n\nexport function param2Obj(url) {\n const search = url.split('?')[1]\n if (!search) {\n return {}\n }\n return JSON.parse(\n '{\"' +\n decodeURIComponent(search)\n .replace(/\"/g, '\\\\\"')\n .replace(/&/g, '\",\"')\n .replace(/=/g, '\":\"') +\n '\"}'\n )\n}\n\nexport function html2Text(val) {\n const div = document.createElement('div')\n div.innerHTML = val\n return div.textContent || div.innerText\n}\n\nexport function objectMerge(target, source) {\n /* Merges two objects,\n giving the last one precedence */\n\n if (typeof target !== 'object') {\n target = {}\n }\n if (Array.isArray(source)) {\n return source.slice()\n }\n Object.keys(source).forEach(property => {\n const sourceProperty = source[property]\n if (typeof sourceProperty === 'object') {\n target[property] = objectMerge(target[property], sourceProperty)\n } else {\n target[property] = sourceProperty\n }\n })\n return target\n}\n\nexport function toggleClass(element, className) {\n if (!element || !className) {\n return\n }\n let classString = element.className\n const nameIndex = classString.indexOf(className)\n if (nameIndex === -1) {\n classString += '' + className\n } else {\n classString =\n classString.substr(0, nameIndex) +\n classString.substr(nameIndex + className.length)\n }\n element.className = classString\n}\n\nexport const pickerOptions = [\n {\n text: '今天',\n onClick(picker) {\n const end = new Date()\n const start = new Date(new Date().toDateString())\n end.setTime(start.getTime())\n picker.$emit('pick', [start, end])\n }\n },\n {\n text: '最近一周',\n onClick(picker) {\n const end = new Date(new Date().toDateString())\n const start = new Date()\n start.setTime(end.getTime() - 3600 * 1000 * 24 * 7)\n picker.$emit('pick', [start, end])\n }\n },\n {\n text: '最近一个月',\n onClick(picker) {\n const end = new Date(new Date().toDateString())\n const start = new Date()\n start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)\n picker.$emit('pick', [start, end])\n }\n },\n {\n text: '最近三个月',\n onClick(picker) {\n const end = new Date(new Date().toDateString())\n const start = new Date()\n start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)\n picker.$emit('pick', [start, end])\n }\n }\n]\n\nexport function getTime(type) {\n if (type === 'start') {\n return new Date().getTime() - 3600 * 1000 * 24 * 90\n } else {\n return new Date(new Date().toDateString())\n }\n}\n\nexport function debounce(func, wait, immediate) {\n let timeout, args, context, timestamp, result\n\n const later = function() {\n // 据上一次触发时间间隔\n const last = +new Date() - timestamp\n\n // 上次被包装函数被调用时间间隔last小于设定时间间隔wait\n if (last < wait && last > 0) {\n timeout = setTimeout(later, wait - last)\n } else {\n timeout = null\n // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用\n if (!immediate) {\n result = func.apply(context, args)\n if (!timeout) context = args = null\n }\n }\n }\n\n return function(...args) {\n context = this\n timestamp = +new Date()\n const callNow = immediate && !timeout\n // 如果延时不存在,重新设定延时\n if (!timeout) timeout = setTimeout(later, wait)\n if (callNow) {\n result = func.apply(context, args)\n context = args = null\n }\n\n return result\n }\n}\n\n/**\n * This is just a simple version of deep copy\n * Has a lot of edge cases bug\n * If you want to use a perfect deep copy, use lodash's _.cloneDeep\n */\nexport function deepClone(source) {\n if (!source && typeof source !== 'object') {\n throw new Error('error arguments', 'shallowClone')\n }\n const targetObj = source.constructor === Array ? [] : {}\n Object.keys(source).forEach(keys => {\n if (source[keys] && typeof source[keys] === 'object') {\n targetObj[keys] = deepClone(source[keys])\n } else {\n targetObj[keys] = source[keys]\n }\n })\n return targetObj\n}\n\nexport function uniqueArr(arr) {\n return Array.from(new Set(arr))\n}\n\nexport function isExternal(path) {\n return /^(https?:|mailto:|tel:)/.test(path)\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('svg-icon',{attrs:{\"icon-class\":_vm.icon}}),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"title\"},slot:\"title\"},[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),_c('el-badge',{staticClass:\"count-badge\",attrs:{\"value\":_vm.count,\"type\":\"primary\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Item.vue?vue&type=template&id=52140d98&scoped=true&\"\nimport script from \"./Item.vue?vue&type=script&lang=js&\"\nexport * from \"./Item.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Item.vue?vue&type=style&index=0&id=52140d98&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"52140d98\",\n null\n \n)\n\ncomponent.options.__file = \"Item.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Link.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Link.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Link.vue?vue&type=template&id=4dde2217&\"\nimport script from \"./Link.vue?vue&type=script&lang=js&\"\nexport * from \"./Link.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Link.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('component',_vm._b({},'component',_vm.linkProps(_vm.to),false),[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=script&lang=js&\"","export default {\n computed: {\n device() {\n return this.$store.state.app.device\n }\n },\n mounted() {\n // In order to fix the click on menu on the ios device will trigger the mouseleave bug\n // https://github.com/PanJiaChen/vue-element-admin/issues/1135\n this.fixBugIniOS()\n },\n methods: {\n fixBugIniOS() {\n const $subMenu = this.$refs.subMenu\n if ($subMenu) {\n const handleMouseleave = $subMenu.handleMouseleave\n $subMenu.handleMouseleave = (e) => {\n if (this.device === 'mobile') {\n return\n }\n handleMouseleave(e)\n }\n }\n }\n }\n}\n","import { render, staticRenderFns } from \"./SidebarItem.vue?vue&type=template&id=20c4709e&\"\nimport script from \"./SidebarItem.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarItem.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SidebarItem.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.item.hidden && _vm.item.children && _vm.invitesEnabled)?_c('div',{staticClass:\"menu-wrapper\"},[(_vm.hasOneShowingChild(_vm.item.children,_vm.item) && (!_vm.onlyOneChild.children||_vm.onlyOneChild.noShowingChildren)&&!_vm.item.alwaysShow)?[_c('app-link',{attrs:{\"to\":_vm.resolvePath(_vm.onlyOneChild.path)}},[_c('el-menu-item',{class:{'submenu-title-noDropdown':!_vm.isNest},attrs:{\"index\":_vm.resolvePath(_vm.onlyOneChild.path)}},[(_vm.onlyOneChild.meta)?_c('item',{attrs:{\"count\":_vm.showCount(_vm.item) ? _vm.normalizedReportsCount : null,\"icon\":_vm.onlyOneChild.meta.icon||_vm.item.meta.icon,\"title\":_vm.generateTitle(_vm.onlyOneChild.meta.title)}}):_vm._e()],1)],1)]:_c('el-submenu',{ref:\"subMenu\",attrs:{\"index\":_vm.resolvePath(_vm.item.path)}},[_c('template',{slot:\"title\"},[(_vm.item.meta)?_c('item',{attrs:{\"count\":_vm.showCount(_vm.item) ? _vm.normalizedReportsCount : null,\"icon\":_vm.item.meta.icon,\"title\":_vm.generateTitle(_vm.item.meta.title)}}):_vm._e()],1),_vm._v(\" \"),_vm._l((_vm.item.children),function(child){return [(!child.hidden)?[(child.children&&child.children.length>0)?_c('sidebar-item',{key:child.path,staticClass:\"nest-menu\",attrs:{\"is-nest\":true,\"item\":child,\"base-path\":_vm.resolvePath(child.path)}}):_c('app-link',{key:child.name,attrs:{\"to\":_vm.resolvePath(child.path)}},[_c('el-menu-item',{attrs:{\"index\":_vm.resolvePath(child.path)}},[(child.meta)?_c('item',{attrs:{\"count\":_vm.showCount(_vm.item) ? _vm.normalizedReportsCount : null,\"icon\":child.meta.icon,\"title\":_vm.generateTitle(child.meta.title)}}):_vm._e()],1)],1)]:_vm._e()]})],2)],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=d15499de&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-scrollbar',{attrs:{\"wrap-class\":\"scrollbar-wrapper\"}},[_c('el-menu',{attrs:{\"default-active\":_vm.$route.path,\"collapse\":_vm.isCollapse,\"background-color\":_vm.variables.menuBg,\"text-color\":_vm.variables.menuText,\"active-text-color\":_vm.variables.menuActiveText,\"mode\":\"vertical\"}},_vm._l((_vm.permission_routers),function(route){return _c('sidebar-item',{key:route.path,attrs:{\"item\":route,\"base-path\":route.path}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=591d6778&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=591d6778&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"591d6778\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-scrollbar',{ref:\"scrollContainer\",staticClass:\"scroll-container\",attrs:{\"vertical\":false},nativeOn:{\"wheel\":function($event){$event.preventDefault();return _vm.handleScroll($event)}}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TagsView.vue?vue&type=template&id=e1cdb714&scoped=true&\"\nimport script from \"./TagsView.vue?vue&type=script&lang=js&\"\nexport * from \"./TagsView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TagsView.vue?vue&type=style&index=0&id=e1cdb714&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\nimport style1 from \"./TagsView.vue?vue&type=style&index=1&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e1cdb714\",\n null\n \n)\n\ncomponent.options.__file = \"TagsView.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tags-view-container\"},[_c('scroll-pane',{ref:\"scrollPane\",staticClass:\"tags-view-wrapper\"},_vm._l((_vm.visitedViews),function(tag){return _c('router-link',{key:tag.path,ref:\"tag\",refInFor:true,staticClass:\"tags-view-item\",class:_vm.isActive(tag)?'active':'',attrs:{\"to\":{ path: tag.path, query: tag.query, fullPath: tag.fullPath },\"tag\":\"span\"},nativeOn:{\"mouseup\":function($event){if('button' in $event && $event.button !== 1){ return null; }return _vm.closeSelectedTag(tag)},\"contextmenu\":function($event){$event.preventDefault();return _vm.openMenu(tag,$event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.generateTitle(tag.title))+\"\\n \"),(!tag.meta.affix)?_c('span',{staticClass:\"el-icon-close\",on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.closeSelectedTag(tag)}}}):_vm._e()])}),1),_vm._v(\" \"),_c('ul',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"contextmenu\",style:({left:_vm.left+'px',top:_vm.top+'px'})},[_c('li',{on:{\"click\":function($event){return _vm.refreshSelectedTag(_vm.selectedTag)}}},[_vm._v(_vm._s(_vm.$t('tagsView.refresh')))]),_vm._v(\" \"),(!(_vm.selectedTag.meta&&_vm.selectedTag.meta.affix))?_c('li',{on:{\"click\":function($event){return _vm.closeSelectedTag(_vm.selectedTag)}}},[_vm._v(_vm._s(_vm.$t('tagsView.close')))]):_vm._e(),_vm._v(\" \"),_c('li',{on:{\"click\":_vm.closeOthersTags}},[_vm._v(_vm._s(_vm.$t('tagsView.closeOthers')))]),_vm._v(\" \"),_c('li',{on:{\"click\":function($event){return _vm.closeAllTags(_vm.selectedTag)}}},[_vm._v(_vm._s(_vm.$t('tagsView.closeAll')))])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n","import { render, staticRenderFns } from \"./AppMain.vue?vue&type=template&id=f852c4f2&scoped=true&\"\nimport script from \"./AppMain.vue?vue&type=script&lang=js&\"\nexport * from \"./AppMain.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppMain.vue?vue&type=style&index=0&id=f852c4f2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f852c4f2\",\n null\n \n)\n\ncomponent.options.__file = \"AppMain.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"app-main\"},[_c('transition',{attrs:{\"name\":\"fade-transform\",\"mode\":\"out-in\"}},[_c('keep-alive',{attrs:{\"include\":_vm.cachedViews}},[_c('router-view',{key:_vm.key})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import store from '@/store'\n\nconst { body } = document\nconst mobileWidth = 480\nconst tabletWidth = 801\nconst ratio = 3\n\nexport default {\n watch: {\n $route(route) {\n if (this.device === 'mobile' && this.sidebar.opened) {\n store.dispatch('closeSideBar', { withoutAnimation: false })\n }\n }\n },\n beforeMount() {\n window.addEventListener('resize', this.resizeHandler)\n },\n mounted() {\n const isMobile = this.isMobile()\n const isTablet = this.isTablet()\n if (isMobile || isTablet) {\n store.dispatch('toggleDevice', isMobile ? 'mobile' : 'tablet')\n store.dispatch('closeSideBar', { withoutAnimation: true })\n }\n },\n methods: {\n isMobile() {\n const rect = body.getBoundingClientRect()\n return rect.width - ratio < mobileWidth\n },\n isTablet() {\n const rect = body.getBoundingClientRect()\n return rect.width - ratio < tabletWidth && rect.width - ratio > mobileWidth\n },\n resizeHandler() {\n if (!document.hidden) {\n const isMobile = this.isMobile()\n const isTablet = this.isTablet()\n\n if (isMobile || isTablet) {\n store.dispatch('toggleDevice', isMobile ? 'mobile' : 'tablet')\n store.dispatch('closeSideBar', { withoutAnimation: true })\n } else {\n store.dispatch('toggleDevice', 'desktop')\n }\n }\n }\n }\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Layout.vue?vue&type=template&id=767d264f&scoped=true&\"\nimport script from \"./Layout.vue?vue&type=script&lang=js&\"\nexport * from \"./Layout.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Layout.vue?vue&type=style&index=0&id=767d264f&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"767d264f\",\n null\n \n)\n\ncomponent.options.__file = \"Layout.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app-wrapper\",class:_vm.classObj},[(_vm.device==='mobile'&&_vm.sidebar.opened)?_c('div',{staticClass:\"drawer-bg\",on:{\"click\":_vm.handleClickOutside}}):_vm._e(),_vm._v(\" \"),_c('sidebar',{staticClass:\"sidebar-container\"}),_vm._v(\" \"),_c('div',{staticClass:\"main-container\"},[_c('navbar'),_vm._v(\" \"),_c('app-main')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport Router from 'vue-router'\n\nVue.use(Router)\n\n/* Layout */\nimport Layout from '@/views/layout/Layout'\n\nconst disabledFeatures = process.env.DISABLED_FEATURES || []\nconst settingsDisabled = disabledFeatures.includes('settings')\nconst settings = {\n path: '/settings',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/settings/index'),\n name: 'Settings',\n meta: { title: 'settings', icon: 'settings', noCache: true }\n }\n ]\n}\n\nconst statusesDisabled = disabledFeatures.includes('statuses')\nconst statuses = {\n path: '/statuses',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/statuses/index'),\n name: 'Statuses',\n meta: { title: 'statuses', icon: 'form', noCache: true }\n }\n ]\n}\n\nconst reportsDisabled = disabledFeatures.includes('reports')\nconst reports = {\n path: '/reports',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/reports/index'),\n name: 'Reports',\n meta: { title: 'reports', icon: 'documentation', noCache: true }\n }\n ]\n}\n\nconst invitesDisabled = disabledFeatures.includes('invites')\nconst invites = {\n path: '/invites',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/invites/index'),\n name: 'Invites',\n meta: { title: 'invites', icon: 'guide', noCache: true }\n }\n ]\n}\n\nconst emojiPacksDisabled = disabledFeatures.includes('emoji-packs')\nconst emojiPacks = {\n path: '/emoji_packs',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/emojiPacks/index'),\n name: 'Emoji Packs',\n meta: { title: 'emoji-packs', icon: 'eye-open', noCache: true }\n }\n ]\n}\n\nconst moderationLogDisabled = disabledFeatures.includes('moderation-log')\nconst moderationLog = {\n path: '/moderation_log',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/moderation_log/index'),\n name: 'Moderation Log',\n meta: { title: 'moderationLog', icon: 'list', noCache: true }\n }\n ]\n}\n\nconst mediaProxyCacheDisabled = disabledFeatures.includes('media-proxy-cache')\nconst mediaProxyCache = {\n path: '/media_proxy_cache',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/mediaProxyCache/index'),\n name: 'MediaProxy Cache',\n meta: { title: 'mediaProxyCache', icon: 'example', noCache: true }\n }\n ]\n}\n\nexport const constantRouterMap = [\n {\n path: '/redirect',\n component: Layout,\n hidden: true,\n children: [\n {\n path: '/redirect/:path*',\n component: () => import('@/views/redirect/index')\n }\n ]\n },\n {\n path: '/login-pleroma',\n component: () => import('@/views/login/pleroma'),\n hidden: true\n },\n {\n path: '/login',\n component: () => import('@/views/login/index'),\n hidden: true\n },\n {\n path: '/auth-redirect',\n component: () => import('@/views/login/authredirect'),\n hidden: true\n },\n {\n path: '/404',\n component: () => import('@/views/errorPage/404'),\n hidden: true\n },\n {\n path: '/401',\n component: () => import('@/views/errorPage/401'),\n hidden: true\n },\n {\n path: '',\n component: Layout,\n redirect: '/users/index'\n }\n]\n\nexport default new Router({\n // mode: 'history', // require service support\n scrollBehavior: () => ({ y: 0 }),\n routes: constantRouterMap\n})\n\nexport const asyncRouterMap = [\n {\n path: '/users',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/users/index'),\n name: 'Users',\n meta: { title: 'users', icon: 'peoples', noCache: true }\n }\n ]\n },\n ...(statusesDisabled ? [] : [statuses]),\n ...(reportsDisabled ? [] : [reports]),\n ...(invitesDisabled ? [] : [invites]),\n ...(emojiPacksDisabled ? [] : [emojiPacks]),\n ...(moderationLogDisabled ? [] : [moderationLog]),\n ...(mediaProxyCacheDisabled ? [] : [mediaProxyCache]),\n ...(settingsDisabled ? [] : [settings]),\n {\n path: '/users/:id',\n component: Layout,\n children: [\n {\n path: '',\n name: 'UsersShow',\n component: () => import('@/views/users/show')\n }\n ],\n hidden: true\n },\n {\n path: '/statuses/:id',\n component: Layout,\n children: [\n {\n path: '',\n name: 'StatusShow',\n component: () => import('@/views/statuses/show')\n }\n ],\n hidden: true\n },\n { path: '*', redirect: '/404', hidden: true }\n]\n","import { asyncRouterMap, constantRouterMap } from '@/router'\n\n/**\n * 通过meta.role判断是否与当前用户权限匹配\n * @param roles\n * @param route\n */\nfunction hasPermission(roles, route) {\n if (route.meta && route.meta.roles) {\n return roles.some(role => route.meta.roles.includes(role))\n } else {\n return true\n }\n}\n\n/**\n * 递归过滤异步路由表,返回符合用户角色权限的路由表\n * @param routes asyncRouterMap\n * @param roles\n */\nfunction filterAsyncRouter(routes, roles) {\n const res = []\n\n routes.forEach(route => {\n const tmp = { ...route }\n if (hasPermission(roles, tmp)) {\n if (tmp.children) {\n tmp.children = filterAsyncRouter(tmp.children, roles)\n }\n res.push(tmp)\n }\n })\n\n return res\n}\n\nconst permission = {\n state: {\n routers: [],\n addRouters: []\n },\n mutations: {\n SET_ROUTERS: (state, routers) => {\n state.addRouters = routers\n state.routers = constantRouterMap.concat(routers)\n }\n },\n actions: {\n GenerateRoutes({ commit }, data) {\n return new Promise(resolve => {\n const { roles } = data\n let accessedRouters\n if (roles.includes('admin')) {\n accessedRouters = asyncRouterMap\n } else {\n accessedRouters = filterAsyncRouter(asyncRouterMap, roles)\n }\n commit('SET_ROUTERS', accessedRouters)\n resolve()\n })\n }\n }\n}\n\nexport default permission\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function fetchRelays(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/relay',\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function addRelay(relay_url, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/relay',\n method: 'post',\n headers: authHeaders(token),\n data: { relay_url }\n })\n}\n\nexport async function deleteRelay(relay_url, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/relay',\n method: 'delete',\n headers: authHeaders(token),\n data: { relay_url }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchRelays, addRelay, deleteRelay } from '@/api/relays'\n\nconst relays = {\n state: {\n fetchedRelays: [],\n loading: true\n },\n mutations: {\n SET_LOADING: (state, loading) => {\n state.loading = loading\n },\n SET_RELAYS: (state, relays) => {\n state.fetchedRelays = relays\n },\n ADD_RELAY: (state, relay) => {\n state.fetchedRelays = [...state.fetchedRelays, { actor: relay }]\n },\n DELETE_RELAY: (state, relay) => {\n state.fetchedRelays = state.fetchedRelays.filter(fetchedRelay => fetchedRelay.actor !== relay)\n }\n },\n actions: {\n async FetchRelays({ commit, getters }) {\n commit('SET_LOADING', true)\n\n const { data } = await fetchRelays(getters.authHost, getters.token)\n commit('SET_RELAYS', data.relays)\n commit('SET_LOADING', false)\n },\n async AddRelay({ commit, dispatch, getters }, relay) {\n commit('ADD_RELAY', relay)\n\n try {\n await addRelay(relay, getters.authHost, getters.token)\n } catch (_e) {\n return\n } finally {\n dispatch('FetchRelays')\n }\n },\n async DeleteRelay({ commit, dispatch, getters }, relay) {\n commit('DELETE_RELAY', relay)\n\n try {\n await deleteRelay(relay, getters.authHost, getters.token)\n } catch (_e) {\n return\n } finally {\n dispatch('FetchRelays')\n }\n }\n }\n}\n\nexport default relays\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function changeState(reports, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/reports`,\n method: 'patch',\n headers: authHeaders(token),\n data: { reports }\n })\n}\n\nexport async function fetchReports(filter, page, pageSize, authHost, token) {\n const url = filter.length > 0\n ? `/api/pleroma/admin/reports?state=${filter}&page=${page}&page_size=${pageSize}`\n : `/api/pleroma/admin/reports?page=${page}&page_size=${pageSize}`\n return await request({\n baseURL: baseName(authHost),\n url,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function createNote(content, reportID, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/reports/${reportID}/notes`,\n method: `post`,\n headers: authHeaders(token),\n data: { content }\n })\n}\n\nexport async function deleteNote(noteID, reportID, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/reports/${reportID}/notes/${noteID}`,\n method: `delete`,\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function activateUsers(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/activate`,\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function addRight(nicknames, right, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/permission_group/${right}`,\n method: 'post',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function createNewAccount(nickname, email, password, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users',\n method: 'post',\n headers: authHeaders(token),\n data: { users: [{ nickname, email, password }] }\n })\n}\n\nexport async function deactivateUsers(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/deactivate`,\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function deleteRight(nicknames, right, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/permission_group/${right}`,\n method: 'delete',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function deleteUsers(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users`,\n method: 'delete',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function disableMfa(nickname, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/disable_mfa`,\n method: 'put',\n headers: authHeaders(token),\n data: { nickname }\n })\n}\n\nexport async function fetchUser(id, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${id}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchUserCredentials(nickname, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${nickname}/credentials`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function updateUserCredentials(nickname, credentials, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${nickname}/credentials`,\n method: 'patch',\n headers: authHeaders(token),\n data: credentials\n })\n}\n\nexport async function fetchUsers(filters, authHost, token, page = 1) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?page=${page}&filters=${filters}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function getPasswordResetToken(nickname, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${nickname}/password_reset`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function forcePasswordReset(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/force_password_reset`,\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function searchUsers(query, filters, authHost, token, page = 1) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?query=${query}&page=${page}&filters=${filters}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function tagUser(nicknames, tags, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/tag',\n method: 'put',\n headers: authHeaders(token),\n data: { nicknames, tags }\n })\n}\n\nexport async function untagUser(nicknames, tags, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/tag',\n method: 'delete',\n headers: authHeaders(token),\n data: { nicknames, tags }\n })\n}\n\nexport async function fetchUserStatuses(id, authHost, godmode, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${id}/statuses?godmode=${godmode}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function approveUserAccount(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/approve',\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function confirmUserEmail(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/confirm_email',\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nexport async function resendConfirmationEmail(nicknames, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/resend_confirmation_email',\n method: 'patch',\n headers: authHeaders(token),\n data: { nicknames }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { changeState, fetchReports, createNote, deleteNote } from '@/api/reports'\nimport {\n activateUsers,\n deactivateUsers,\n deleteUsers,\n tagUser,\n untagUser\n} from '@/api/users'\n\nconst reports = {\n state: {\n currentPage: 1,\n fetchedReports: [],\n loading: true,\n openReportsCount: 0,\n pageSize: 50,\n stateFilter: '',\n totalReportsCount: 0\n },\n mutations: {\n SET_LAST_REPORT_ID: (state, id) => {\n state.idOfLastReport = id\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_OPEN_REPORTS_COUNT: (state, total) => {\n state.openReportsCount = total\n },\n SET_PAGE: (state, page) => {\n state.currentPage = page\n },\n SET_REPORTS: (state, reports) => {\n state.fetchedReports = reports\n },\n SET_REPORTS_COUNT: (state, total) => {\n state.totalReportsCount = total\n },\n SET_REPORTS_FILTER: (state, filter) => {\n state.stateFilter = filter\n }\n },\n actions: {\n async ActivateUserFromReports({ commit, dispatch, getters, state }, { user, reportId }) {\n try {\n await activateUsers([user.nickname], getters.authHost, getters.token)\n } catch (_e) {\n return\n } finally {\n const updatedReports = state.fetchedReports.map(report => {\n const updatedAccount = { ...user, deactivated: false }\n return report.id === reportId ? { ...report, account: updatedAccount } : report\n })\n commit('SET_REPORTS', updatedReports)\n }\n dispatch('SuccessMessage')\n },\n async AddTagFromReports({ commit, dispatch, getters, state }, { user, tag, reportId }) {\n try {\n await tagUser([user.nickname], [tag], getters.authHost, getters.token)\n } catch (_e) {\n return\n } finally {\n const updatedReports = state.fetchedReports.map(report => {\n const updatedAccount = { ...user, tags: [...user.tags, tag] }\n return report.id === reportId ? { ...report, account: updatedAccount } : report\n })\n commit('SET_REPORTS', updatedReports)\n }\n dispatch('SuccessMessage')\n },\n async ChangeReportState({ commit, dispatch, getters, state }, reportsData) {\n changeState(reportsData, getters.authHost, getters.token)\n\n const updatedReports = state.fetchedReports.map(report => {\n const updatedReportsIds = reportsData.map(({ id }) => id)\n return updatedReportsIds.includes(report.id) ? { ...report, state: reportsData[0].state } : report\n })\n\n commit('SET_REPORTS', updatedReports)\n dispatch('FetchOpenReportsCount')\n },\n ClearFetchedReports({ commit }) {\n commit('SET_REPORTS', [])\n },\n async DeactivateUserFromReports({ commit, dispatch, getters, state }, { user, reportId }) {\n try {\n await deactivateUsers([user.nickname], getters.authHost, getters.token)\n } catch (_e) {\n return\n } finally {\n const updatedReports = state.fetchedReports.map(report => {\n const updatedAccount = { ...user, deactivated: true }\n return report.id === reportId ? { ...report, account: updatedAccount } : report\n })\n commit('SET_REPORTS', updatedReports)\n }\n dispatch('SuccessMessage')\n },\n async DeleteUserFromReports({ commit, dispatch, getters, state }, { user, reportId }) {\n try {\n await deleteUsers([user.nickname], getters.authHost, getters.token)\n } catch (_e) {\n return\n } finally {\n const updatedReports = state.fetchedReports.map(report => {\n const updatedAccount = { ...user, deactivated: true }\n return report.id === reportId ? { ...report, account: updatedAccount } : report\n })\n commit('SET_REPORTS', updatedReports)\n }\n dispatch('SuccessMessage')\n },\n async FetchReports({ commit, getters, state }, page) {\n commit('SET_LOADING', true)\n const { data } = await fetchReports(state.stateFilter, page, state.pageSize, getters.authHost, getters.token)\n\n commit('SET_REPORTS', data.reports)\n commit('SET_REPORTS_COUNT', data.total)\n commit('SET_PAGE', page)\n commit('SET_LOADING', false)\n },\n async FetchOpenReportsCount({ commit, getters, state }) {\n commit('SET_LOADING', true)\n const { data } = await fetchReports('open', state.currentPage, state.pageSize, getters.authHost, getters.token)\n\n commit('SET_OPEN_REPORTS_COUNT', data.total)\n commit('SET_LOADING', false)\n },\n async RemoveTagFromReports({ commit, dispatch, getters, state }, { user, tag, reportId }) {\n try {\n await untagUser([user.nickname], [tag], getters.authHost, getters.token)\n } catch (_e) {\n return\n } finally {\n const updatedReports = state.fetchedReports.map(report => {\n const updatedAccount = { ...user, tags: user.tags.filter(userTag => userTag !== tag) }\n return report.id === reportId ? { ...report, account: updatedAccount } : report\n })\n commit('SET_REPORTS', updatedReports)\n }\n dispatch('SuccessMessage')\n },\n SetReportsFilter({ commit }, filter) {\n commit('SET_REPORTS_FILTER', filter)\n },\n CreateReportNote({ commit, getters, state, rootState }, { content, reportID }) {\n createNote(content, reportID, getters.authHost, getters.token)\n\n const optimisticNote = {\n user: {\n avatar: rootState.user.avatar,\n nickname: rootState.user.name,\n id: rootState.user.id\n },\n content: content,\n created_at: new Date().getTime()\n }\n\n const updatedReports = state.fetchedReports.map(report => {\n if (report.id === reportID) {\n report.notes = [...report.notes, optimisticNote]\n }\n\n return report\n })\n\n commit('SET_REPORTS', updatedReports)\n },\n DeleteReportNote({ commit, getters, state }, { noteID, reportID }) {\n deleteNote(noteID, reportID, getters.authHost, getters.token)\n\n const updatedReports = state.fetchedReports.map(report => {\n if (report.id === reportID) {\n report.notes = report.notes.filter(note => note.id !== noteID)\n }\n\n return report\n })\n\n commit('SET_REPORTS', updatedReports)\n }\n }\n}\n\nexport default reports\n","import {\n deleteInstanceDocument,\n fetchDescription,\n fetchSettings,\n getInstanceDocument,\n removeSettings,\n updateInstanceDocument,\n updateSettings } from '@/api/settings'\nimport { formSearchObject, parseNonTuples, parseTuples, valueHasTuples, wrapUpdatedSettings } from './normalizers'\nimport _ from 'lodash'\n\nconst settings = {\n state: {\n activeTab: 'instance',\n configDisabled: true,\n db: {},\n description: [],\n instancePanel: '',\n loading: true,\n searchData: {},\n settings: {},\n termsOfServices: '',\n updatedSettings: {}\n },\n mutations: {\n CLEAR_UPDATED_SETTINGS: (state) => {\n state.updatedSettings = {}\n },\n SET_INSTANCE_PANEL: (state, data) => {\n state.instancePanel = data\n },\n REMOVE_SETTING_FROM_UPDATED: (state, { group, key, subkeys }) => {\n if (_.get(state.updatedSettings, [group, key, subkeys[0]])) {\n const { [subkeys[0]]: value, ...updatedSettings } = state.updatedSettings[group][key]\n state.updatedSettings = updatedSettings\n }\n },\n SET_ACTIVE_TAB: (state, tab) => {\n state.activeTab = tab\n },\n SET_DESCRIPTION: (state, data) => {\n state.description = data\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_SEARCH: (state, searchObject) => {\n state.searchData = searchObject\n },\n SET_SETTINGS: (state, data) => {\n const newSettings = data.reduce((acc, { group, key, value }) => {\n const parsedValue = valueHasTuples(key, value)\n ? { value: parseNonTuples(key, value) }\n : parseTuples(value, key)\n acc[group] = acc[group] ? { ...acc[group], [key]: parsedValue } : { [key]: parsedValue }\n return acc\n }, {})\n\n const newDbSettings = data.reduce((acc, { group, key, db }) => {\n if (db) {\n acc[group] = acc[group] ? { ...acc[group], [key]: db } : { [key]: db }\n }\n return acc\n }, {})\n\n state.settings = newSettings\n state.db = newDbSettings\n },\n SET_TERMS_OF_SERVICES: (state, data) => {\n state.termsOfServices = data\n },\n TOGGLE_TABS: (state, status) => {\n state.configDisabled = status\n },\n UPDATE_SETTINGS: (state, { group, key, input, value, type }) => {\n const updatedSetting = !state.updatedSettings[group] || (key === 'Pleroma.Emails.Mailer' && input === ':adapter')\n ? { [key]: { [input]: [type, value] }}\n : { [key]: { ...state.updatedSettings[group][key], ...{ [input]: [type, value] }}}\n state.updatedSettings[group] = { ...state.updatedSettings[group], ...updatedSetting }\n },\n UPDATE_STATE: (state, { group, key, input, value }) => {\n const updatedState = key === 'Pleroma.Emails.Mailer' && input === ':adapter'\n ? { [key]: { [input]: value }}\n : { [key]: { ...state.settings[group][key], ...{ [input]: value }}}\n state.settings[group] = { ...state.settings[group], ...updatedState }\n }\n },\n actions: {\n async FetchInstanceDocument({ commit, getters }, name) {\n const { data } = await getInstanceDocument(name, getters.authHost, getters.token)\n if (name === 'instance-panel') {\n commit('SET_INSTANCE_PANEL', data)\n } else {\n commit('SET_TERMS_OF_SERVICES', data)\n }\n },\n async FetchSettings({ commit, getters }) {\n commit('SET_LOADING', true)\n try {\n const response = await fetchSettings(getters.authHost, getters.token)\n const description = await fetchDescription(getters.authHost, getters.token)\n commit('SET_DESCRIPTION', description.data)\n const searchObject = formSearchObject(description.data)\n commit('SET_SEARCH', searchObject)\n commit('SET_SETTINGS', response.data.configs)\n } catch (_e) {\n commit('TOGGLE_TABS', true)\n commit('SET_ACTIVE_TAB', 'relays')\n commit('SET_LOADING', false)\n return\n }\n commit('TOGGLE_TABS', false)\n commit('SET_LOADING', false)\n },\n async RemoveInstanceDocument({ dispatch, getters }, name) {\n await deleteInstanceDocument(name, getters.authHost, getters.token)\n await dispatch('FetchInstanceDocument', name)\n },\n async RemoveSetting({ commit, getters }, configs) {\n await removeSettings(configs, getters.authHost, getters.token)\n const response = await fetchSettings(getters.authHost, getters.token)\n const { group, key, subkeys } = configs[0]\n commit('SET_SETTINGS', response.data.configs)\n commit('TOGGLE_REBOOT', response.data.need_reboot)\n commit('REMOVE_SETTING_FROM_UPDATED', { group, key, subkeys: subkeys || [] })\n },\n SetActiveTab({ commit }, tab) {\n commit('SET_ACTIVE_TAB', tab)\n },\n async SubmitChanges({ getters, commit, state }) {\n const configs = Object.keys(state.updatedSettings).reduce((acc, group) => {\n return [...acc, ...wrapUpdatedSettings(group, state.updatedSettings[group], state.settings)]\n }, [])\n\n await updateSettings(configs, getters.authHost, getters.token)\n const response = await fetchSettings(getters.authHost, getters.token)\n commit('SET_SETTINGS', response.data.configs)\n commit('TOGGLE_REBOOT', response.data.need_reboot)\n commit('CLEAR_UPDATED_SETTINGS')\n },\n async UpdateInstanceDocs({ commit, getters }, { name, content }) {\n commit('SET_INSTANCE_PANEL', content)\n const formData = new FormData()\n const blob = new Blob([content], { type: 'text/html' })\n formData.append('file', blob)\n await updateInstanceDocument(name, formData, getters.authHost, getters.token)\n },\n UpdateSettings({ commit }, { group, key, input, value, type }) {\n key\n ? commit('UPDATE_SETTINGS', { group, key, input, value, type })\n : commit('UPDATE_SETTINGS', { group, key: input, input: '_value', value, type })\n },\n async UpdateState({ commit, getters, state }, { group, key, input, value }) {\n if (key === 'Pleroma.Emails.Mailer' && input === ':adapter') {\n const subkeys = Object.keys(state.settings[group][key]).filter(el => el !== ':adapter')\n await removeSettings([{ group, key, delete: true, subkeys }], getters.authHost, getters.token)\n } else if (key === 'Pleroma.Upload' && input === ':uploader') {\n const deletedKey = value === 'Pleroma.Uploaders.Local' ? 'Pleroma.Uploaders.S3' : 'Pleroma.Uploaders.Local'\n await removeSettings([{ group, key: deletedKey, delete: true }], getters.authHost, getters.token)\n }\n key\n ? commit('UPDATE_STATE', { group, key, input, value })\n : commit('UPDATE_STATE', { group, key: input, input: 'value', value })\n }\n }\n}\n\nexport default settings\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function changeStatusScope(id, sensitive, visibility, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/statuses/${id}`,\n method: 'put',\n headers: authHeaders(token),\n data: { sensitive, visibility }\n })\n}\n\nexport async function deleteStatus(id, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/statuses/${id}`,\n method: 'delete',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchStatus(id, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/statuses/${id}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchStatuses({ godmode, localOnly, authHost, token, pageSize, page }) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/statuses?godmode=${godmode}&local_only=${localOnly}&page=${page}&page_size=${pageSize}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchStatusesCount(instance, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: instance ? `/api/pleroma/admin/stats?instance=${instance}` : `/api/pleroma/admin/stats`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchStatusesByInstance({ instance, authHost, token, pageSize, page }) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/instances/${instance}/statuses?page=${page}&page_size=${pageSize}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { changeStatusScope, deleteStatus, fetchStatus, fetchStatuses, fetchStatusesCount, fetchStatusesByInstance } from '@/api/status'\n\nconst status = {\n state: {\n fetchedStatus: {},\n fetchedStatuses: [],\n loading: false,\n statusAuthor: {},\n statusesByInstance: {\n selectedInstance: '',\n showLocal: false,\n showPrivate: false,\n page: 1,\n pageSize: 20,\n buttonLoading: false,\n allLoaded: false\n },\n statusVisibility: {}\n },\n mutations: {\n CHANGE_GODMODE_CHECKBOX_VALUE: (state, value) => {\n state.statusesByInstance.showPrivate = value\n },\n CHANGE_LOCAL_CHECKBOX_VALUE: (state, value) => {\n state.statusesByInstance.showLocal = value\n },\n CHANGE_PAGE: (state, page) => {\n state.statusesByInstance.page = page\n },\n CHANGE_SELECTED_INSTANCE: (state, instance) => {\n state.statusesByInstance.selectedInstance = instance\n },\n SET_STATUS: (state, status) => {\n state.fetchedStatus = status\n },\n SET_STATUSES_BY_INSTANCE: (state, statuses) => {\n state.fetchedStatuses = statuses\n },\n PUSH_STATUSES: (state, statuses) => {\n state.fetchedStatuses = [...state.fetchedStatuses, ...statuses]\n },\n SET_ALL_LOADED: (state, status) => {\n state.statusesByInstance.allLoaded = status\n },\n SET_BUTTON_LOADING: (state, status) => {\n state.statusesByInstance.buttonLoading = status\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_STATUS_VISIBILITY: (state, visibility) => {\n state.statusVisibility = visibility\n },\n SET_STATUS_AUTHOR: (state, user) => {\n state.statusAuthor = user\n }\n },\n actions: {\n async ChangeStatusScope({ dispatch, getters }, { statusId, isSensitive, visibility, reportCurrentPage, userId, godmode, fetchStatusesByInstance }) {\n await changeStatusScope(statusId, isSensitive, visibility, getters.authHost, getters.token)\n if (reportCurrentPage !== 0) { // called from Reports\n dispatch('FetchReports', reportCurrentPage)\n } else if (userId.length > 0) { // called from User profile\n dispatch('FetchUserStatuses', { userId, godmode })\n } else if (fetchStatusesByInstance) { // called from Statuses by Instance\n dispatch('FetchStatusesByInstance')\n } else { // called from Status show page\n dispatch('FetchStatusAfterUserModeration', statusId)\n }\n },\n ClearState({ commit }) {\n commit('CHANGE_SELECTED_INSTANCE', '')\n commit('SET_STATUSES_BY_INSTANCE', [])\n commit('CHANGE_LOCAL_CHECKBOX_VALUE', false)\n commit('CHANGE_GODMODE_CHECKBOX_VALUE', false)\n commit('SET_ALL_LOADED', false)\n commit('CHANGE_PAGE', 1)\n },\n async DeleteStatus({ dispatch, getters }, { statusId, reportCurrentPage, userId, godmode, fetchStatusesByInstance }) {\n await deleteStatus(statusId, getters.authHost, getters.token)\n if (reportCurrentPage !== 0) { // called from Reports\n dispatch('FetchReports', reportCurrentPage)\n } else if (userId.length > 0) { // called from User profile\n dispatch('FetchUserStatuses', { userId, godmode })\n } else if (fetchStatusesByInstance) { // called from Statuses by Instance\n dispatch('FetchStatusesByInstance')\n }\n },\n async FetchStatus({ commit, dispatch, getters, state }, id) {\n commit('SET_LOADING', true)\n const status = await fetchStatus(id, getters.authHost, getters.token)\n\n commit('SET_STATUS', status.data)\n commit('SET_STATUS_AUTHOR', status.data.account)\n commit('SET_LOADING', false)\n dispatch('FetchUserStatuses', { userId: state.fetchedStatus.account.id, godmode: false })\n },\n FetchStatusAfterUserModeration({ commit, dispatch, getters, state }, id) {\n commit('SET_LOADING', true)\n fetchStatus(id, getters.authHost, getters.token)\n .then(status => dispatch('SetStatus', status.data))\n commit('SET_LOADING', false)\n },\n async FetchStatusesCount({ commit, getters }, instance) {\n commit('SET_LOADING', true)\n const { data } = await fetchStatusesCount(instance, getters.authHost, getters.token)\n commit('SET_STATUS_VISIBILITY', data.status_visibility)\n commit('SET_LOADING', false)\n },\n async FetchStatusesByInstance({ commit, dispatch, getters, state, rootState }) {\n commit('SET_LOADING', true)\n dispatch('FetchStatusesCount', state.statusesByInstance.selectedInstance)\n if (state.statusesByInstance.selectedInstance === '') {\n commit('SET_STATUSES_BY_INSTANCE', [])\n } else {\n const statuses = state.statusesByInstance.selectedInstance === rootState.user.authHost\n ? await fetchStatuses(\n {\n godmode: state.statusesByInstance.showPrivate,\n localOnly: state.statusesByInstance.showLocal,\n authHost: getters.authHost,\n token: getters.token,\n pageSize: state.statusesByInstance.pageSize,\n page: state.statusesByInstance.page\n })\n : await fetchStatusesByInstance(\n {\n instance: state.statusesByInstance.selectedInstance,\n authHost: getters.authHost,\n token: getters.token,\n pageSize: state.statusesByInstance.pageSize,\n page: state.statusesByInstance.page\n })\n commit('SET_STATUSES_BY_INSTANCE', statuses.data)\n if (statuses.data.length < state.statusesByInstance.pageSize) {\n commit('SET_ALL_LOADED', true)\n }\n }\n commit('SET_LOADING', false)\n },\n async FetchStatusesPageByInstance({ commit, getters, rootState, state }) {\n commit('SET_BUTTON_LOADING', true)\n const statuses = state.statusesByInstance.selectedInstance === rootState.user.authHost\n ? await fetchStatuses(\n {\n godmode: state.statusesByInstance.showPrivate,\n localOnly: state.statusesByInstance.showLocal,\n authHost: getters.authHost,\n token: getters.token,\n pageSize: state.statusesByInstance.pageSize,\n page: state.statusesByInstance.page\n })\n : await fetchStatusesByInstance(\n {\n instance: state.statusesByInstance.selectedInstance,\n authHost: getters.authHost,\n token: getters.token,\n pageSize: state.statusesByInstance.pageSize,\n page: state.statusesByInstance.page\n })\n commit('PUSH_STATUSES', statuses.data)\n commit('SET_BUTTON_LOADING', false)\n if (statuses.data.length < state.statusesByInstance.pageSize) {\n commit('SET_ALL_LOADED', true)\n }\n },\n HandleGodmodeCheckboxChange({ commit, dispatch }, value) {\n dispatch('HandlePageChange', 1)\n commit('SET_ALL_LOADED', false)\n\n commit('CHANGE_GODMODE_CHECKBOX_VALUE', value)\n dispatch('FetchStatusesByInstance')\n },\n HandleLocalCheckboxChange({ commit, dispatch }, value) {\n dispatch('HandlePageChange', 1)\n commit('SET_ALL_LOADED', false)\n\n commit('CHANGE_LOCAL_CHECKBOX_VALUE', value)\n dispatch('FetchStatusesByInstance')\n },\n HandleFilterChange({ commit }, instance) {\n commit('CHANGE_SELECTED_INSTANCE', instance)\n commit('SET_ALL_LOADED', false)\n },\n HandlePageChange({ commit }, page) {\n commit('CHANGE_PAGE', page)\n },\n SetStatus({ commit }, status) {\n commit('SET_STATUS', status)\n commit('SET_STATUS_AUTHOR', status.account)\n }\n }\n}\n\nexport default status\n","const tagsView = {\n state: {\n visitedViews: [],\n cachedViews: []\n },\n mutations: {\n ADD_VISITED_VIEW: (state, view) => {\n if (state.visitedViews.some(v => v.path === view.path)) return\n state.visitedViews.push(\n Object.assign({}, view, {\n title: view.meta.title || 'no-name'\n })\n )\n },\n ADD_CACHED_VIEW: (state, view) => {\n if (state.cachedViews.includes(view.name)) return\n if (!view.meta.noCache) {\n state.cachedViews.push(view.name)\n }\n },\n\n DEL_VISITED_VIEW: (state, view) => {\n for (const [i, v] of state.visitedViews.entries()) {\n if (v.path === view.path) {\n state.visitedViews.splice(i, 1)\n break\n }\n }\n },\n DEL_CACHED_VIEW: (state, view) => {\n for (const i of state.cachedViews) {\n if (i === view.name) {\n const index = state.cachedViews.indexOf(i)\n state.cachedViews.splice(index, 1)\n break\n }\n }\n },\n\n DEL_OTHERS_VISITED_VIEWS: (state, view) => {\n state.visitedViews = state.visitedViews.filter(v => {\n return v.meta.affix || v.path === view.path\n })\n },\n DEL_OTHERS_CACHED_VIEWS: (state, view) => {\n for (const i of state.cachedViews) {\n if (i === view.name) {\n const index = state.cachedViews.indexOf(i)\n state.cachedViews = state.cachedViews.slice(index, index + 1)\n break\n }\n }\n },\n\n DEL_ALL_VISITED_VIEWS: state => {\n // keep affix tags\n const affixTags = state.visitedViews.filter(tag => tag.meta.affix)\n state.visitedViews = affixTags\n },\n DEL_ALL_CACHED_VIEWS: state => {\n state.cachedViews = []\n },\n\n UPDATE_VISITED_VIEW: (state, view) => {\n for (let v of state.visitedViews) {\n if (v.path === view.path) {\n v = Object.assign(v, view)\n break\n }\n }\n }\n\n },\n actions: {\n addView({ dispatch }, view) {\n dispatch('addVisitedView', view)\n dispatch('addCachedView', view)\n },\n addVisitedView({ commit }, view) {\n commit('ADD_VISITED_VIEW', view)\n },\n addCachedView({ commit }, view) {\n commit('ADD_CACHED_VIEW', view)\n },\n\n delView({ dispatch, state }, view) {\n return new Promise(resolve => {\n dispatch('delVisitedView', view)\n dispatch('delCachedView', view)\n resolve({\n visitedViews: [...state.visitedViews],\n cachedViews: [...state.cachedViews]\n })\n })\n },\n delVisitedView({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_VISITED_VIEW', view)\n resolve([...state.visitedViews])\n })\n },\n delCachedView({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_CACHED_VIEW', view)\n resolve([...state.cachedViews])\n })\n },\n\n delOthersViews({ dispatch, state }, view) {\n return new Promise(resolve => {\n dispatch('delOthersVisitedViews', view)\n dispatch('delOthersCachedViews', view)\n resolve({\n visitedViews: [...state.visitedViews],\n cachedViews: [...state.cachedViews]\n })\n })\n },\n delOthersVisitedViews({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_OTHERS_VISITED_VIEWS', view)\n resolve([...state.visitedViews])\n })\n },\n delOthersCachedViews({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_OTHERS_CACHED_VIEWS', view)\n resolve([...state.cachedViews])\n })\n },\n\n delAllViews({ dispatch, state }, view) {\n return new Promise(resolve => {\n dispatch('delAllVisitedViews', view)\n dispatch('delAllCachedViews', view)\n resolve({\n visitedViews: [...state.visitedViews],\n cachedViews: [...state.cachedViews]\n })\n })\n },\n delAllVisitedViews({ commit, state }) {\n return new Promise(resolve => {\n commit('DEL_ALL_VISITED_VIEWS')\n resolve([...state.visitedViews])\n })\n },\n delAllCachedViews({ commit, state }) {\n return new Promise(resolve => {\n commit('DEL_ALL_CACHED_VIEWS')\n resolve([...state.cachedViews])\n })\n },\n\n updateVisitedView({ commit }, view) {\n commit('UPDATE_VISITED_VIEW', view)\n }\n }\n}\n\nexport default tagsView\n","import request from '@/utils/request'\nimport { baseName } from './utils'\n\nexport async function loginByUsername(username, password, authHost) {\n const appsRequest = await request({\n baseURL: baseName(authHost),\n url: '/api/v1/apps',\n method: 'post',\n data: {\n client_name: `AdminFE_${Math.random()}`,\n redirect_uris: `${window.location.origin}/oauth-callback`,\n scopes: 'read write follow push admin'\n }\n })\n\n const app = appsRequest.data\n\n return request({\n baseURL: baseName(authHost),\n url: '/oauth/token',\n method: 'post',\n data: {\n client_id: app.client_id,\n client_secret: app.client_secret,\n grant_type: 'password',\n username: username,\n password: password\n }\n })\n}\n\nexport function getUserInfo(token, authHost) {\n return request({\n baseURL: baseName(authHost),\n url: '/api/v1/accounts/verify_credentials',\n method: 'get',\n headers: token ? { 'Authorization': `Bearer ${token}` } : {}\n })\n}\n\nconst oauth = { loginByUsername, getUserInfo }\n\nexport default oauth\n","import request from '@/utils/request'\nimport { baseName } from './utils'\n\nexport async function getNodeInfo(authHost) {\n return await request({\n baseURL: baseName(authHost),\n url: `/nodeinfo/2.0.json`,\n method: 'get'\n })\n}\n","import { loginByUsername, getUserInfo } from '@/api/login'\nimport { getNodeInfo } from '@/api/nodeInfo'\nimport { getToken, setToken, removeToken, getAuthHost, setAuthHost, removeAuthHost } from '@/utils/auth'\n\nconst user = {\n state: {\n user: '',\n id: '',\n status: '',\n code: '',\n token: getToken(),\n authHost: getAuthHost(),\n name: '',\n avatar: '',\n introduction: '',\n roles: [],\n setting: {\n articlePlatform: []\n },\n nodeInfo: {}\n },\n\n mutations: {\n SET_CODE: (state, code) => {\n state.code = code\n },\n SET_TOKEN: (state, token) => {\n state.token = token\n },\n SET_INTRODUCTION: (state, introduction) => {\n state.introduction = introduction\n },\n SET_SETTING: (state, setting) => {\n state.setting = setting\n },\n SET_STATUS: (state, status) => {\n state.status = status\n },\n SET_NAME: (state, name) => {\n state.name = name\n },\n SET_AVATAR: (state, avatar) => {\n state.avatar = avatar\n },\n SET_ROLES: (state, roles) => {\n state.roles = roles\n },\n SET_ID: (state, id) => {\n state.id = id\n },\n SET_AUTH_HOST: (state, authHost) => {\n state.authHost = authHost\n },\n SET_NODE_INFO: (state, nodeInfo) => {\n state.nodeInfo = nodeInfo\n }\n },\n\n actions: {\n LoginByUsername({ commit, dispatch }, { username, authHost, password }) {\n return new Promise((resolve, reject) => {\n loginByUsername(username, password, authHost).then(response => {\n const data = response.data\n commit('SET_TOKEN', data.access_token)\n commit('SET_AUTH_HOST', authHost)\n setToken(data.access_token)\n setAuthHost(authHost)\n resolve()\n }).catch(error => {\n dispatch('addErrorLog', { message: error.message })\n reject(error)\n })\n })\n },\n async GetNodeInfo({ commit, dispatch, state }) {\n const nodeInfo = await getNodeInfo(state.authHost)\n\n commit('SET_NODE_INFO', nodeInfo.data)\n dispatch('SetInvitesEnabled', nodeInfo.data.metadata.invitesEnabled)\n },\n GetUserInfo({ commit, state }) {\n return new Promise((resolve, reject) => {\n getUserInfo(state.token, state.authHost).then(response => {\n const data = response.data\n const message = 'This user doesn\\`t have admin rights. Try another credentials or see the ' +\n 'docs' +\n ' to find out how to make this user an admin'\n\n if (!data) {\n reject('Verification failed, please login again.')\n }\n\n if (data.pleroma && data.pleroma.is_admin) {\n commit('SET_ROLES', ['admin'])\n } else {\n reject(message)\n }\n\n commit('SET_NAME', data.username)\n commit('SET_ID', data.id)\n commit('SET_AVATAR', data.avatar)\n commit('SET_INTRODUCTION', '')\n resolve(response)\n }).catch(error => {\n reject(error)\n })\n })\n },\n LogOut({ commit }) {\n commit('SET_TOKEN', '')\n commit('SET_ROLES', [])\n removeToken()\n removeAuthHost()\n },\n FedLogOut({ commit }) {\n return new Promise(resolve => {\n commit('SET_TOKEN', '')\n removeToken()\n removeAuthHost()\n resolve()\n })\n },\n async LoginByPleromaFE({ commit, dispatch }, { token }) {\n commit('SET_TOKEN', token)\n setToken(token)\n commit('SET_AUTH_HOST', window.location.host)\n setAuthHost(window.location.host)\n\n dispatch('GetUserInfo')\n }\n }\n}\n\nexport default user\n","import { fetchUser, fetchUserStatuses, fetchUserCredentials, updateUserCredentials } from '@/api/users'\n\nconst userProfile = {\n state: {\n statuses: [],\n statusesLoading: true,\n user: {},\n userCredentials: {},\n userProfileLoading: true\n },\n mutations: {\n SET_STATUSES: (state, statuses) => {\n state.statuses = statuses\n },\n SET_STATUSES_LOADING: (state, status) => {\n state.statusesLoading = status\n },\n SET_USER: (state, user) => {\n state.user = user\n },\n SET_USER_PROFILE_LOADING: (state, status) => {\n state.userProfileLoading = status\n },\n SET_USER_CREDENTIALS: (state, userCredentials) => {\n state.userCredentials = userCredentials\n }\n },\n actions: {\n async FetchUserProfile({ commit, dispatch, getters }, { userId, godmode }) {\n commit('SET_USER_PROFILE_LOADING', true)\n\n const userResponse = await fetchUser(userId, getters.authHost, getters.token)\n commit('SET_USER', userResponse.data)\n commit('SET_USER_PROFILE_LOADING', false)\n\n dispatch('FetchUserStatuses', { userId, godmode })\n },\n FetchUserStatuses({ commit, dispatch, getters }, { userId, godmode }) {\n commit('SET_STATUSES_LOADING', true)\n\n fetchUserStatuses(userId, getters.authHost, godmode, getters.token)\n .then(statuses => dispatch('SetStatuses', statuses.data))\n\n commit('SET_STATUSES_LOADING', false)\n },\n async FetchUserCredentials({ commit, getters }, { nickname }) {\n const userResponse = await fetchUserCredentials(nickname, getters.authHost, getters.token)\n commit('SET_USER_CREDENTIALS', userResponse.data)\n },\n SetStatuses({ commit }, statuses) {\n commit('SET_STATUSES', statuses)\n },\n async UpdateUserCredentials({ dispatch, getters }, { nickname, credentials }) {\n await updateUserCredentials(nickname, credentials, getters.authHost, getters.token)\n dispatch('FetchUserCredentials', { nickname })\n }\n }\n}\n\nexport default userProfile\n","import { Message } from 'element-ui'\nimport i18n from '@/lang'\nimport {\n activateUsers,\n addRight,\n createNewAccount,\n deactivateUsers,\n deleteRight,\n deleteUsers,\n disableMfa,\n fetchUsers,\n getPasswordResetToken,\n searchUsers,\n tagUser,\n untagUser,\n forcePasswordReset,\n approveUserAccount,\n confirmUserEmail,\n resendConfirmationEmail,\n updateUserCredentials\n} from '@/api/users'\nimport { fetchSettings, updateSettings } from '@/api/settings'\n\nconst users = {\n state: {\n fetchedUsers: [],\n loading: true,\n searchQuery: '',\n mrfPolicies: [],\n totalUsersCount: 0,\n currentPage: 1,\n pageSize: 50,\n filters: {\n local: false,\n external: false,\n active: false,\n need_approval: false,\n deactivated: false\n },\n passwordResetToken: {\n token: '',\n link: ''\n }\n },\n mutations: {\n SET_USERS: (state, users) => {\n state.fetchedUsers = users\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SWAP_USERS: (state, users) => {\n const usersWithoutSwapped = users.reduce((acc, user) => {\n return acc.filter(u => u.id !== user.id)\n }, state.fetchedUsers)\n\n if (state.fetchedUsers.length === 0) {\n return\n }\n\n const updatedUsers = [...usersWithoutSwapped, ...users]\n state.fetchedUsers = updatedUsers\n .filter(user => user.nickname && user.id)\n .sort((a, b) => a.nickname.localeCompare(b.nickname))\n .concat(updatedUsers.filter(user => !user.nickname || !user.id))\n },\n SET_COUNT: (state, count) => {\n state.totalUsersCount = count\n },\n SET_PAGE: (state, page) => {\n state.currentPage = page\n },\n SET_PAGE_SIZE: (state, pageSize) => {\n state.pageSize = pageSize\n },\n SET_PASSWORD_RESET_TOKEN: (state, { token, link }) => {\n state.passwordResetToken.token = token\n state.passwordResetToken.link = link\n },\n SET_SEARCH_QUERY: (state, query) => {\n state.searchQuery = query\n },\n SET_TAG_POLICY: (state, mrfPolicies) => {\n state.mrfPolicies = mrfPolicies\n },\n SET_USERS_FILTERS: (state, filters) => {\n state.filters = filters\n }\n },\n actions: {\n async ActivateUsers({ dispatch, getters }, { users, _userId }) {\n const updatedUsers = users.map(user => {\n return { ...user, deactivated: false }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await activateUsers(nicknames, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId })\n },\n async ApplyChanges({ commit, dispatch, state }, { updatedUsers, callApiFn, userId, statusId }) {\n commit('SWAP_USERS', updatedUsers)\n\n try {\n await callApiFn()\n } catch (_e) {\n return\n } finally {\n dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage })\n }\n if (statusId) {\n dispatch('FetchStatusAfterUserModeration', statusId)\n } else if (userId) {\n dispatch('FetchUserProfile', { userId, godmode: false })\n }\n dispatch('SuccessMessage')\n },\n async AddRight({ dispatch, getters }, { users, right, _userId, _statusId }) {\n const updatedUsers = users.map(user => {\n return user.local ? { ...user, roles: { ...user.roles, [right]: true }} : user\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await addRight(nicknames, right, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n },\n async AddTag({ dispatch, getters }, { users, tag, _userId, _statusId }) {\n const updatedUsers = users.map(user => {\n return { ...user, tags: [...user.tags, tag] }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await tagUser(nicknames, [tag], getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n },\n async ApproveUsersAccount({ dispatch, getters }, { users, _userId, _statusId }) {\n const updatedUsers = users.map(user => {\n return { ...user, approval_pending: false }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await approveUserAccount(nicknames, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n },\n ClearUsersState({ commit }) {\n commit('SET_SEARCH_QUERY', '')\n commit('SET_USERS_FILTERS', { local: false, external: false, active: false, need_approval: false, deactivated: false })\n },\n async ClearFilters({ commit, dispatch, state }) {\n commit('CLEAR_USERS_FILTERS')\n dispatch('SearchUsers', { query: state.searchQuery, page: 1 })\n },\n async ConfirmUsersEmail({ dispatch, getters }, { users, _userId, _statusId }) {\n const updatedUsers = users.map(user => {\n return { ...user, confirmation_pending: false }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await confirmUserEmail(nicknames, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n },\n async CreateNewAccount({ dispatch, getters, state }, { nickname, email, password }) {\n try {\n await createNewAccount(nickname, email, password, getters.authHost, getters.token)\n } catch (_e) {\n return\n } finally {\n dispatch('SearchUsers', { query: state.searchQuery, page: state.currentPage })\n }\n dispatch('SuccessMessage')\n },\n async DeactivateUsers({ dispatch, getters }, { users, _userId }) {\n const updatedUsers = users.map(user => {\n return { ...user, deactivated: true }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await deactivateUsers(nicknames, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId })\n },\n async DisableMfa({ dispatch, getters }, nickname) {\n try {\n await disableMfa(nickname, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n dispatch('SuccessMessage')\n },\n async DeleteRight({ dispatch, getters }, { users, right, _userId, _statusId }) {\n const updatedUsers = users.map(user => {\n return user.local ? { ...user, roles: { ...user.roles, [right]: false }} : user\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await deleteRight(nicknames, right, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n },\n async DeleteUsers({ commit, dispatch, getters, state }, { users, _userId }) {\n const usersNicknames = users.map(user => user.nickname)\n try {\n await deleteUsers(usersNicknames, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n const updatedUsers = users.map(user => {\n return { ...user, deactivated: true }\n })\n commit('SWAP_USERS', updatedUsers)\n\n if (_userId) {\n dispatch('FetchUserProfile', { userId: _userId, godmode: false })\n }\n dispatch('SuccessMessage')\n },\n async EnableTagPolicy({ dispatch, getters, state }) {\n const configs = [{\n group: ':pleroma',\n key: ':mrf',\n value: [{ tuple: [':policies', [...state.mrfPolicies, 'Pleroma.Web.ActivityPub.MRF.TagPolicy']] }]\n }]\n await updateSettings(configs, getters.authHost, getters.token)\n\n dispatch('FetchTagPolicySetting')\n },\n async FetchTagPolicySetting({ commit, getters }) {\n const { data } = await fetchSettings(getters.authHost, getters.token)\n const mrfSettings = data.configs.find(el => el.key === ':mrf')\n ? data.configs.find(el => el.key === ':mrf').value\n : []\n const mrfPolicies = mrfSettings.find(el => el.tuple[0] === ':policies')\n ? mrfSettings.find(el => el.tuple[0] === ':policies').tuple[1]\n : []\n\n commit('SET_TAG_POLICY', Array.isArray(mrfPolicies) ? mrfPolicies : [mrfPolicies])\n },\n async FetchUsers({ commit, dispatch, getters, state }, { page }) {\n commit('SET_LOADING', true)\n const filters = Object.keys(state.filters).filter(filter => state.filters[filter]).join()\n const response = await fetchUsers(filters, getters.authHost, getters.token, page)\n await dispatch('GetNodeInfo')\n loadUsers(commit, page, response.data)\n },\n async GetPasswordResetToken({ commit, getters }, nickname) {\n const { data } = await getPasswordResetToken(nickname, getters.authHost, getters.token)\n commit('SET_PASSWORD_RESET_TOKEN', data)\n },\n RemovePasswordToken({ commit }) {\n commit('SET_PASSWORD_RESET_TOKEN', { link: '', token: '' })\n },\n async RemoveTag({ dispatch, getters }, { users, tag, _userId, _statusId }) {\n const updatedUsers = users.map(user => {\n return { ...user, tags: user.tags.filter(userTag => userTag !== tag) }\n })\n const nicknames = users.map(user => user.nickname)\n const callApiFn = async() => await untagUser(nicknames, [tag], getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n },\n async RequirePasswordReset({ dispatch, getters }, users) {\n const nicknames = users.map(user => user.nickname)\n try {\n await forcePasswordReset(nicknames, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n dispatch('SuccessMessage')\n },\n async ResendConfirmationEmail({ dispatch, getters }, users) {\n const usersNicknames = users.map(user => user.nickname)\n try {\n await resendConfirmationEmail(usersNicknames, getters.authHost, getters.token)\n } catch (_e) {\n return\n }\n dispatch('SuccessMessage')\n },\n async SearchUsers({ commit, dispatch, state, getters }, { query, page }) {\n if (query.length === 0) {\n commit('SET_SEARCH_QUERY', query)\n dispatch('FetchUsers', { page })\n } else {\n commit('SET_LOADING', true)\n commit('SET_SEARCH_QUERY', query)\n\n const filters = Object.keys(state.filters).filter(filter => state.filters[filter]).join()\n const response = await searchUsers(query, filters, getters.authHost, getters.token, page)\n\n loadUsers(commit, page, response.data)\n }\n },\n SuccessMessage() {\n Message.success({\n message: i18n.t('users.completed'),\n duration: 5 * 1000\n })\n },\n async ToggleUsersFilter({ commit, dispatch, state }, filters) {\n const defaultFilters = {\n local: false,\n external: false,\n active: false,\n need_approval: false,\n deactivated: false\n }\n const currentFilters = { ...defaultFilters, ...filters }\n commit('SET_USERS_FILTERS', currentFilters)\n dispatch('SearchUsers', { query: state.searchQuery, page: 1 })\n },\n async UpdateActorType({ dispatch, getters }, { user, type, _userId, _statusId }) {\n const updatedUsers = [{ ...user, actor_type: type }]\n const credentials = { actor_type: type }\n\n const callApiFn = async() => await updateUserCredentials(user.nickname, credentials, getters.authHost, getters.token)\n\n dispatch('ApplyChanges', { updatedUsers, callApiFn, userId: _userId, statusId: _statusId })\n }\n }\n}\n\nconst loadUsers = (commit, page, { users, count, page_size }) => {\n commit('SET_USERS', users)\n commit('SET_COUNT', count)\n commit('SET_PAGE', page)\n commit('SET_PAGE_SIZE', page_size)\n commit('SET_LOADING', false)\n}\n\nexport default users\n","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport app from './modules/app'\nimport emojiPacks from './modules/emojiPacks'\nimport errorLog from './modules/errorLog'\nimport getters from './getters'\nimport invites from './modules/invites'\nimport mediaProxyCache from './modules/mediaProxyCache'\nimport moderationLog from './modules/moderationLog'\nimport peers from './modules/peers'\nimport permission from './modules/permission'\nimport relays from './modules/relays'\nimport reports from './modules/reports'\nimport settings from './modules/settings'\nimport status from './modules/status'\nimport tagsView from './modules/tagsView'\nimport user from './modules/user'\nimport userProfile from './modules/userProfile'\nimport users from './modules/users'\n\nVue.use(Vuex)\n\nconst store = new Vuex.Store({\n modules: {\n app,\n errorLog,\n emojiPacks,\n invites,\n mediaProxyCache,\n moderationLog,\n peers,\n permission,\n relays,\n reports,\n settings,\n status,\n tagsView,\n user,\n userProfile,\n users\n },\n getters\n})\n\nexport default store\n","import Vue from 'vue'\nimport SvgIcon from '@/components/element-ui/SvgIcon'// svg组件\n\n// register globally\nVue.component('svg-icon', SvgIcon)\n\nconst req = require.context('./svg', false, /\\.svg$/)\nconst requireAll = requireContext => requireContext.keys().map(requireContext)\nrequireAll(req)\n","import Vue from 'vue'\nimport store from './store'\n\n// you can set only in production env show the error-log\nif (process.env.NODE_ENV === 'production') {\n Vue.config.errorHandler = function(err, vm, info, a) {\n // Don't ask me why I use Vue.nextTick, it just a hack.\n // detail see https://forum.vuejs.org/t/dispatch-in-vue-config-errorhandler-has-some-problem/23500\n Vue.nextTick(() => {\n store.dispatch('addErrorLog', {\n err,\n vm,\n info,\n url: window.location.href\n })\n console.error(err, info)\n })\n }\n}\n","import router from './router'\nimport store from './store'\nimport { Message } from 'element-ui'\nimport NProgress from 'nprogress' // progress bar\nimport 'nprogress/nprogress.css'// progress bar style\nimport { getToken } from '@/utils/auth' // getToken from cookie\n\nNProgress.configure({ showSpinner: false })// NProgress Configuration\n\n// permission judge function\nfunction hasPermission(roles, permissionRoles) {\n if (roles.indexOf('admin') >= 0) return true // admin permission passed directly\n if (!permissionRoles) return true\n return roles.some(role => permissionRoles.indexOf(role) >= 0)\n}\n\nconst whiteList = ['/login', '/auth-redirect', '/login-pleroma']// no redirect whitelist\n\nexport const beforeEachRoute = (to, from, next) => {\n NProgress.start() // start progress bar\n if (getToken()) { // determine if there has token\n /* has token*/\n if (to.path === '/login') {\n next({ path: '/' })\n NProgress.done() // if current page is dashboard will not trigger\tafterEach hook, so manually handle it\n } else {\n if (store.getters.roles.length === 0) {\n store.dispatch('GetUserInfo').then(res => {\n const roles = res.data.pleroma.is_admin ? ['admin'] : []\n store.dispatch('GenerateRoutes', { roles }).then(() => {\n router.addRoutes(store.getters.addRouters)\n next({ ...to, replace: true })\n })\n }).catch((err) => {\n store.dispatch('FedLogOut').then(() => {\n Message({\n dangerouslyUseHTMLString: true,\n message: err,\n type: 'error',\n duration: 10 * 1000\n })\n next({ path: '/' })\n })\n })\n } else {\n if (hasPermission(store.getters.roles, to.meta.roles)) {\n next()\n } else {\n next({ path: '/401', replace: true, query: { noGoBack: true }})\n }\n }\n }\n } else {\n /* has no token*/\n if (whiteList.indexOf(to.path) !== -1) {\n next()\n } else {\n next(`/login?redirect=${to.path}`)\n NProgress.done() // if current page is login will not trigger afterEach hook, so manually handle it\n }\n }\n}\nrouter.beforeEach(beforeEachRoute)\n\nrouter.afterEach(() => {\n NProgress.done() // finish progress bar\n})\n","// set function parseTime,formatTime to filter\nexport { parseTime, formatTime } from '@/utils'\n\nfunction pluralize(time, label) {\n if (time === 1) {\n return time + label\n }\n return time + label + 's'\n}\n\nexport function timeAgo(time) {\n const between = Date.now() / 1000 - Number(time)\n if (between < 3600) {\n return pluralize(~~(between / 60), ' minute')\n } else if (between < 86400) {\n return pluralize(~~(between / 3600), ' hour')\n } else {\n return pluralize(~~(between / 86400), ' day')\n }\n}\n\n/* 数字 格式化*/\nexport function numberFormatter(num, digits) {\n const si = [\n { value: 1E18, symbol: 'E' },\n { value: 1E15, symbol: 'P' },\n { value: 1E12, symbol: 'T' },\n { value: 1E9, symbol: 'G' },\n { value: 1E6, symbol: 'M' },\n { value: 1E3, symbol: 'k' }\n ]\n for (let i = 0; i < si.length; i++) {\n if (num >= si[i].value) {\n return (num / si[i].value + 0.1).toFixed(digits).replace(/\\.0+$|(\\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol\n }\n }\n return num.toString()\n}\n\nexport function toThousandFilter(num) {\n return (+num || 0).toString().replace(/^-?\\d+/g, m => m.replace(/(?=(?!\\b)(\\d{3})+$)/g, ','))\n}\n","import Vue from 'vue'\n\nimport Cookies from 'js-cookie'\n\nimport 'normalize.css/normalize.css' // A modern alternative to CSS resets\n\nimport Element from 'element-ui'\nimport 'element-ui/lib/theme-chalk/index.css'\n\nimport '@/styles/index.scss' // global css\n\nimport App from './App'\nimport store from './store'\nimport router from './router'\n\nimport i18n from './lang' // Internationalization\nimport './icons' // icon\nimport './errorLog' // error log\nimport './permission' // permission control\n\nimport * as filters from './filters' // global filters\n\nVue.use(Element, {\n size: Cookies.get('size') || 'medium', // set element-ui default size\n i18n: (key, value) => i18n.t(key, value)\n})\n\n// register global utility filters.\nObject.keys(filters).forEach(key => {\n Vue.filter(key, filters[key])\n})\n\nVue.config.productionTip = false\n\nnew Vue({\n el: '#app',\n router,\n store,\n i18n,\n render: h => h(App)\n})\n","import Cookies from 'js-cookie'\n\nconst TokenKey = 'Admin-Token'\nconst AuthHostKey = 'Auth-Host'\n\nexport function getToken() {\n return Cookies.get(TokenKey)\n}\n\nexport function setToken(token) {\n return Cookies.set(TokenKey, token)\n}\n\nexport function removeToken() {\n return Cookies.remove(TokenKey)\n}\n\nexport function getAuthHost() {\n return Cookies.get(AuthHostKey)\n}\n\nexport function setAuthHost(token) {\n return Cookies.set(AuthHostKey, token)\n}\n\nexport function removeAuthHost() {\n return Cookies.remove(AuthHostKey)\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=1&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=1&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=style&index=0&id=f852c4f2&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=style&index=0&id=f852c4f2&scoped=true&lang=css&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-excel\",\n \"use\": \"icon-excel-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-guide\",\n \"use\": \"icon-guide-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-add_col_after\",\n \"use\": \"icon-tiptap-add_col_after-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-star\",\n \"use\": \"icon-star-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-bold\",\n \"use\": \"icon-tiptap-bold-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"text-bold\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-add_row_after\",\n \"use\": \"icon-tiptap-add_row_after-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=style&index=0&id=28de7ff2&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=style&index=0&id=28de7ff2&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-wechat\",\n \"use\": \"icon-wechat-usage\",\n \"viewBox\": \"0 0 128 110\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import _ from 'lodash'\n\nexport const getBooleanValue = value => {\n if (value === 'true') {\n return true\n } else if (value === 'false') {\n return false\n }\n return value\n}\n\nconst getCurrentValue = (type, value, path) => {\n if (type === 'state') {\n return _.get(value, path)\n } else {\n const [firstSettingName, ...restKeys] = path\n const firstSegment = value[firstSettingName]\n if (restKeys.length === 0 || !firstSegment) {\n return firstSegment || false\n } else {\n const secondSegment = (value, keys) => {\n const [element, ...rest] = keys\n return keys.length === 0 ? value : secondSegment(value[1][element], rest)\n }\n return secondSegment(firstSegment, restKeys)\n }\n }\n}\n\nconst getValueWithoutKey = (key, [type, value]) => {\n if (prependWithСolon(type, value)) {\n return `:${value}`\n } else if (key === ':backends') {\n const index = value.findIndex(el => el === ':ex_syslogger')\n const updatedArray = value.slice()\n if (index !== -1) {\n updatedArray[index] = { 'tuple': ['ExSyslogger', ':ex_syslogger'] }\n }\n return updatedArray\n } else if (key === ':types') {\n return Object.keys(value).reduce((acc, key) => { return { ...acc, [key]: value[key][1] } }, {})\n }\n return value\n}\n\nexport const parseNonTuples = (key, value) => {\n if (key === ':backends') {\n const index = value.findIndex(el => typeof el === 'object' && el.tuple.includes(':ex_syslogger'))\n const updated = value.map((el, i) => i === index ? ':ex_syslogger' : el)\n return updated\n }\n if (key === ':args') {\n return typeof value === 'string' ? [value] : value\n }\n return value\n}\n// REFACTOR\nexport const parseTuples = (tuples, key) => {\n return tuples.reduce((accum, item) => {\n if (key === ':rate_limit') {\n accum[item.tuple[0]] = Array.isArray(item.tuple[1])\n ? item.tuple[1].map(el => el.tuple)\n : item.tuple[1].tuple\n } else if (item.tuple[0] === ':mascots') {\n accum[item.tuple[0]] = item.tuple[1].reduce((acc, mascot) => {\n return [...acc, { [mascot.tuple[0]]: { ...mascot.tuple[1], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }}]\n }, [])\n } else if (Array.isArray(item.tuple[1]) &&\n (item.tuple[0] === ':groups' ||\n item.tuple[0] === ':replace' ||\n item.tuple[0] === ':retries' ||\n (item.tuple[0] === ':headers' && key === 'Pleroma.Web.MediaProxy.Invalidation.Http') ||\n item.tuple[0] === ':crontab')) {\n if (item.tuple[0] === ':crontab') {\n accum[item.tuple[0]] = item.tuple[1].reduce((acc, group) => {\n return [...acc, { [group.tuple[1]]: { value: group.tuple[0], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }}]\n }, [])\n } else {\n accum[item.tuple[0]] = item.tuple[1].reduce((acc, group) => {\n return [...acc, { [group.tuple[0]]: { value: group.tuple[1], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }}]\n }, [])\n }\n } else if (item.tuple[0] === ':icons') {\n accum[item.tuple[0]] = item.tuple[1].map(icon => {\n return Object.keys(icon).map(name => {\n return { key: name, value: icon[name], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }\n })\n }, [])\n } else if (item.tuple[0] === ':prune') {\n accum[item.tuple[0]] = item.tuple[1] === ':disabled' ? [item.tuple[1]] : item.tuple[1].tuple\n } else if (item.tuple[0] === ':proxy_url' || item.tuple[0] === ':sender') {\n accum[item.tuple[0]] = parseStringOrTupleValue(item.tuple[0], item.tuple[1])\n } else if (item.tuple[0] === ':args') {\n accum[item.tuple[0]] = parseNonTuples(item.tuple[0], item.tuple[1])\n } else if (Array.isArray(item.tuple[1]) &&\n (typeof item.tuple[1][0] === 'object' && !Array.isArray(item.tuple[1][0])) && item.tuple[1][0]['tuple']) {\n accum[item.tuple[0]] = parseTuples(item.tuple[1], item.tuple[0])\n } else if (Array.isArray(item.tuple[1])) {\n accum[item.tuple[0]] = item.tuple[1]\n } else if (item.tuple[0] === ':ip') {\n accum[item.tuple[0]] = item.tuple[1].tuple.join('.')\n } else if (item.tuple[1] && typeof item.tuple[1] === 'object') {\n if (item.tuple[0] === ':params' || item.tuple[0] === ':match_actor') {\n accum[item.tuple[0]] = Object.keys(item.tuple[1]).reduce((acc, key) => {\n return [...acc, { [key]: { value: item.tuple[1][key], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }}]\n }, [])\n } else {\n accum[item.tuple[0]] = parseObject(item.tuple[1])\n }\n } else {\n accum[item.tuple[0]] = item.tuple[1]\n }\n return accum\n }, {})\n}\n\nconst parseObject = object => {\n return Object.keys(object).reduce((acc, item) => {\n acc[item] = object[item]\n return acc\n }, {})\n}\n\nconst parseStringOrTupleValue = (key, value) => {\n if (key === ':proxy_url') {\n if (value && !Array.isArray(value) &&\n typeof value === 'object' &&\n value.tuple.length === 3 &&\n value.tuple[0] === ':socks5') {\n const [, host, port] = value.tuple\n return { socks5: true, host, port }\n } else if (typeof value === 'string') {\n const [host, port] = value.split(':')\n return { socks5: false, host, port }\n }\n return { socks5: false, host: null, port: null }\n } else if (key === ':sender') {\n if (typeof value === 'string') {\n return { email: value }\n } else if (value &&\n typeof value === 'object' &&\n value.tuple.length === 2) {\n const [nickname, email] = value.tuple\n return { nickname, email }\n }\n }\n}\n\nconst prependWithСolon = (type, value) => {\n return (type === 'atom' && value.length > 0) ||\n (Array.isArray(type) && type.includes('boolean') && type.includes('atom') && typeof value === 'string')\n}\n\nexport const processNested = (valueForState, valueForUpdatedSettings, group, parentKey, parents, settings, updatedSettings) => {\n const [{ key, type }, ...otherParents] = parents\n const path = [group, parentKey, ...parents.reverse().map(parent => parent.key).slice(0, -1)]\n\n let updatedValueForState = valueExists('state', settings, path)\n ? { ...getCurrentValue('state', settings[group][parentKey], parents.map(el => el.key).slice(0, -1)),\n ...{ [key]: valueForState }}\n : { [key]: valueForState }\n let updatedValueForUpdatedSettings = valueExists('updatedSettings', updatedSettings, path)\n ? { ...getCurrentValue('updatedSettings', updatedSettings[group][parentKey], parents.map(el => el.key).slice(0, -1))[1],\n ...{ [key]: [type, valueForUpdatedSettings] }}\n : { [key]: [type, valueForUpdatedSettings] }\n\n if (group === ':mime' && parents[0].key === ':types') {\n updatedValueForState = settings[group][parents[0].key]\n ? { ...settings[group][parents[0].key].value, ...updatedValueForState }\n : updatedValueForState\n updatedValueForUpdatedSettings = settings[group][parents[0].key]\n ? { ...Object.keys(settings[group][parents[0].key].value)\n .reduce((acc, el) => {\n return { ...acc, [el]: [type, settings[group][parents[0].key].value[el]] }\n }, {}),\n ...updatedValueForUpdatedSettings }\n : updatedValueForUpdatedSettings\n }\n\n return otherParents.length === 1\n ? { valueForState: updatedValueForState, valueForUpdatedSettings: updatedValueForUpdatedSettings, setting: otherParents[0] }\n : processNested(updatedValueForState, updatedValueForUpdatedSettings, group, parentKey, otherParents, settings, updatedSettings)\n}\n\nconst valueExists = (type, value, path) => {\n if (type === 'state') {\n return _.get(value, path)\n } else {\n const [group, key, firstSettingName, ...restKeys] = path\n const firstSegment = _.get(value, [group, key, firstSettingName])\n if (restKeys.length === 0 || !firstSegment) {\n return firstSegment || false\n } else {\n const secondSegment = (value, keys) => {\n if (keys.length === 0) {\n return true\n }\n const [element, ...rest] = keys\n return value[1][element] ? secondSegment(value[1][element], rest) : false\n }\n return secondSegment(firstSegment, restKeys)\n }\n }\n}\n\nexport const valueHasTuples = (key, value) => {\n const valueIsArrayOfNonObjects = Array.isArray(value) && value.length > 0 && value.every(el => typeof el !== 'object')\n return key === ':meta' ||\n key === ':types' ||\n key === ':backends' ||\n key === ':compiled_template_engines' ||\n key === ':compiled_format_encoders' ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null ||\n valueIsArrayOfNonObjects\n}\n\nexport const wrapUpdatedSettings = (group, settings, currentState) => {\n return Object.keys(settings).map((key) => {\n return settings[key]._value\n ? { group, key, value: getValueWithoutKey(key, settings[key]._value) }\n : { group, key, value: wrapValues(settings[key], currentState[group][key]) }\n })\n}\n\nconst wrapValues = (settings, currentState) => {\n return Object.keys(settings).map(setting => {\n const [type, value] = settings[setting]\n if (type === 'keyword' ||\n (Array.isArray(type) && (\n type.includes('keyword') ||\n (type.includes('tuple') && type.includes('list'))\n ))\n ) {\n return { 'tuple': [setting, wrapValues(value, currentState)] }\n } else if (prependWithСolon(type, value)) {\n return { 'tuple': [setting, `:${value}`] }\n } else if (type.includes('tuple') && (type.includes('string') || type.includes('atom'))) {\n return typeof value === 'string'\n ? { 'tuple': [setting, value] }\n : { 'tuple': [setting, { 'tuple': value }] }\n } else if (type === 'reversed_tuple') {\n return { 'tuple': [value, setting] }\n } else if (type === 'map') {\n const mapValue = Object.keys(value).reduce((acc, key) => {\n acc[key] = value[key][1]\n return acc\n }, {})\n return { 'tuple': [setting, { ...currentState[setting], ...mapValue }] }\n } else if (type.includes('map') && !type.includes('list')) {\n const mapValue = Object.keys(value).reduce((acc, key) => {\n acc[key] = value[key][1]\n return acc\n }, {})\n return { 'tuple': [setting, mapValue] }\n } else if (setting === ':ip') {\n const ip = value.split('.').map(s => parseInt(s, 10))\n return { 'tuple': [setting, { 'tuple': ip }] }\n } else {\n return { 'tuple': [setting, value] }\n }\n })\n}\n\nexport const formSearchObject = description => {\n const parseNestedSettings = (description, label, key) => description.reduce((acc, setting) => {\n const searchArray = _.compact([setting.key, setting.label, setting.description]).map(el => el.toLowerCase())\n const resultObject = { label: setting.label, key: setting.key || setting.group, groupKey: key, groupLabel: label, search: searchArray }\n if (setting.children) {\n const updatedAcc = [...acc, resultObject]\n return [...updatedAcc, ...parseNestedSettings(setting.children, label, key)]\n }\n return [...acc, resultObject]\n }, [])\n\n const processedDescription = description.reduce((acc, setting) => {\n const searchArray = _.compact([setting.key, setting.label, setting.description]).map(el => el.toLowerCase())\n const resultObject = { label: setting.label, key: setting.key || setting.group, groupKey: setting.key || setting.group, groupLabel: setting.label, search: searchArray }\n if (setting.children) {\n const updatedAcc = !setting.key && setting.group === ':pleroma' ? acc : [...acc, resultObject]\n return [...updatedAcc, ...parseNestedSettings(setting.children, setting.label, setting.key || setting.group)]\n }\n return !setting.key && setting.group === ':pleroma' ? acc : [...acc, resultObject]\n }, [])\n\n const searchDataForEditableDocs = [{\n groupKey: ':instance_panel',\n groupLabel: 'Instance Panel',\n key: ':instance_panel',\n label: 'Instance Panel',\n search: ['Instance Panel', ':instance_panel']\n }, {\n groupKey: ':terms_of_services',\n groupLabel: 'Terms of Services',\n key: ':terms_of_services',\n label: 'Terms of Services',\n search: ['Terms of Services', ':terms_of_services']\n }]\n return processedDescription.concat(searchDataForEditableDocs)\n}\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-italic\",\n \"use\": \"icon-tiptap-italic-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"text-italic\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-size\",\n \"use\": \"icon-size-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-paragraph\",\n \"use\": \"icon-tiptap-paragraph-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"paragraph\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-image\",\n \"use\": \"icon-tiptap-image-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"paginate-filter-picture-alternate\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-zip\",\n \"use\": \"icon-zip-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-ol\",\n \"use\": \"icon-tiptap-ol-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"list-numbers\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tab\",\n \"use\": \"icon-tab-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-search\",\n \"use\": \"icon-search-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tree\",\n \"use\": \"icon-tree-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-hr\",\n \"use\": \"icon-tiptap-hr-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-ul\",\n \"use\": \"icon-tiptap-ul-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"list-bullets\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-documentation\",\n \"use\": \"icon-documentation-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-strike\",\n \"use\": \"icon-tiptap-strike-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"text-strike-through\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-undo\",\n \"use\": \"icon-tiptap-undo-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"undo\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-link\",\n \"use\": \"icon-tiptap-link-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"hyperlink-2\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-drag\",\n \"use\": \"icon-drag-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=17178ffc&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=17178ffc&scoped=true&lang=css&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-fullscreen\",\n \"use\": \"icon-fullscreen-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import Vue from 'vue'\nimport VueI18n from 'vue-i18n'\nimport Cookies from 'js-cookie'\nimport elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang\nimport elementZhLocale from 'element-ui/lib/locale/lang/zh-CN' // element-ui lang\nimport elementEsLocale from 'element-ui/lib/locale/lang/es' // element-ui lang\nimport enLocale from './en'\nimport zhLocale from './zh'\nimport esLocale from './es'\nimport ocLocale from './oc'\n\nVue.use(VueI18n)\n\nconst messages = {\n en: {\n ...enLocale,\n ...elementEnLocale\n },\n zh: {\n ...zhLocale,\n ...elementZhLocale\n },\n es: {\n ...esLocale,\n ...elementEsLocale\n },\n oc: {\n ...ocLocale\n }\n}\n\nconst i18n = new VueI18n({\n // set locale\n // options: en | zh | es | oc\n locale: Cookies.get('language') || 'en',\n // set locale messages\n messages\n})\n\nexport default i18n\n","export default {\n route: {\n dashboard: 'Dashboard',\n introduction: 'Introduction',\n documentation: 'Documentation',\n guide: 'Guide',\n permission: 'Permission',\n pagePermission: 'Page Permission',\n directivePermission: 'Directive Permission',\n icons: 'Icons',\n components: 'Components',\n componentIndex: 'Introduction',\n markdown: 'Markdown',\n jsonEditor: 'JSON Editor',\n dndList: 'Dnd List',\n splitPane: 'SplitPane',\n avatarUpload: 'Avatar Upload',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: 'Mixin',\n backToTop: 'BackToTop',\n dragDialog: 'Drag Dialog',\n dragSelect: 'Drag Select',\n dragKanban: 'Drag Kanban',\n charts: 'Charts',\n keyboardChart: 'Keyboard Chart',\n lineChart: 'Line Chart',\n mixChart: 'Mix Chart',\n example: 'Example',\n nested: 'Nested Routes',\n menu1: 'Menu 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menu 2',\n Table: 'Table',\n dynamicTable: 'Dynamic Table',\n dragTable: 'Drag Table',\n inlineEditTable: 'Inline Edit',\n complexTable: 'Complex Table',\n treeTable: 'Tree Table',\n customTreeTable: 'Custom TreeTable',\n tab: 'Tab',\n form: 'Form',\n createArticle: 'Create Article',\n editArticle: 'Edit Article',\n articleList: 'Article List',\n errorPages: 'Error Pages',\n page401: '401',\n page404: '404',\n errorLog: 'Error Log',\n excel: 'Excel',\n exportExcel: 'Export Excel',\n selectExcel: 'Export Selected',\n uploadExcel: 'Upload Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Export Zip',\n theme: 'Theme',\n clipboardDemo: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'External Link',\n users: 'Users',\n reports: 'Reports',\n invites: 'Invites',\n statuses: 'Statuses',\n settings: 'Settings',\n moderationLog: 'Moderation Log',\n mediaProxyCache: 'MediaProxy Cache',\n 'emoji-packs': 'Emoji packs'\n },\n navbar: {\n logOut: 'Log Out',\n dashboard: 'Dashboard',\n github: 'Github',\n theme: 'Theme',\n size: 'Global Size'\n },\n login: {\n title: 'Login Form',\n logIn: 'Log in',\n logInViaPleromaFE: 'Log in via PleromaFE',\n username: 'username@host',\n password: 'password',\n omitHostname: 'omit hostname if Pleroma is located on this domain',\n errorMessage: 'Username must contain username and host, e.g. john@pleroma.social',\n any: 'any',\n thirdparty: 'Or connect with',\n pleromaFELoginFailed: 'Failed to login via PleromaFE, please login with username/password',\n pleromaFELoginSucceed: 'Logged in via PleromaFE'\n },\n mediaProxyCache: {\n mediaProxyCache: 'MediaProxy Cache',\n ban: 'Ban',\n url: 'URL',\n evict: 'Evict',\n evictedMessage: 'This URL was evicted',\n actions: 'Actions',\n remove: 'Remove from Cachex',\n evictObjectsHeader: 'Evict object from the MediaProxy cache',\n listBannedUrlsHeader: 'List of all banned MediaProxy URLs',\n multipleInput: 'You can enter a single URL or several comma separated links',\n removeSelected: 'Remove Selected',\n enable: 'Enable',\n invalidationAndMediaProxy: 'MediaProxy and Invalidation to evict and ban MediaProxy objects',\n confirmEnablingMediaProxy: 'Are you sure you want to enable Media Proxy and Media Cache object Invalidation?',\n enableMediaProxySuccessMessage: 'Media Proxy and Media Cache object Invalidation were enabled'\n },\n documentation: {\n documentation: 'Documentation',\n github: 'Github Repository'\n },\n permission: {\n roles: 'Your roles',\n switchRoles: 'Switch roles',\n tips: 'In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if.'\n },\n guide: {\n description: 'The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ',\n button: 'Show Guide'\n },\n components: {\n documentation: 'Documentation',\n dropzoneTips: 'Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.'\n },\n table: {\n dynamicTips1: 'Fixed header, sorted by header order',\n dynamicTips2: 'Not fixed header, sorted by click order',\n dragTips1: 'The default order',\n dragTips2: 'The after dragging order',\n title: 'Title',\n importance: 'Imp',\n type: 'Type',\n remark: 'Remark',\n search: 'Search',\n add: 'Add',\n export: 'Export',\n reviewer: 'reviewer',\n id: 'ID',\n date: 'Date',\n author: 'Author',\n readings: 'Readings',\n status: 'Status',\n actions: 'Actions',\n edit: 'Edit',\n publish: 'Publish',\n draft: 'Draft',\n delete: 'Delete',\n cancel: 'Cancel',\n confirm: 'Confirm',\n unfollow: 'Unfollow'\n },\n errorLog: {\n tips: 'Please click the bug icon in the upper right corner',\n description: 'Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.',\n documentation: 'Document introduction'\n },\n excel: {\n export: 'Export',\n selectedExport: 'Export Selected Items',\n placeholder: 'Please enter the file name(default excel-list)'\n },\n zip: {\n export: 'Export',\n placeholder: 'Please enter the file name(default file)'\n },\n pdf: {\n tips: 'Here we use window.print() to implement the feature of downloading pdf.'\n },\n theme: {\n change: 'Change Theme',\n documentation: 'Theme documentation',\n tips: 'Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'\n },\n tagsView: {\n refresh: 'Refresh',\n close: 'Close',\n closeOthers: 'Close Others',\n closeAll: 'Close All'\n },\n users: {\n users: 'Users',\n localUsersOnly: 'Local users only',\n search: 'Search',\n id: 'ID',\n name: 'Name',\n status: 'Status',\n local: 'Local',\n external: 'External',\n deactivated: 'Deactivated',\n active: 'Active',\n unapproved: 'Pending',\n unconfirmed: 'Unconfirmed',\n actions: 'Actions',\n activate: 'Activate',\n deactivate: 'Deactivate',\n admin: 'Admin',\n moderator: 'Moderator',\n moderation: 'Moderation',\n revokeAdmin: 'Revoke Admin',\n grantAdmin: 'Grant Admin',\n revokeModerator: 'Revoke Moderator',\n grantModerator: 'Grant Moderator',\n activateAccount: 'Activate Account',\n activateAccounts: 'Activate Accounts',\n deactivateAccount: 'Deactivate Account',\n deactivateAccounts: 'Deactivate Accounts',\n deleteAccount: 'Delete Account',\n deleteAccounts: 'Delete Accounts',\n forceNsfw: 'Force posts to be NSFW',\n stripMedia: 'Force posts to not have media',\n forceUnlisted: 'Force posts to be unlisted',\n sandbox: 'Force posts to be followers-only',\n disableRemoteSubscription: 'Disallow following user from remote instances',\n disableRemoteSubscriptionForMultiple: 'Disallow following users from remote instances',\n disableAnySubscription: 'Disallow following user at all',\n disableAnySubscriptionForMultiple: 'Disallow following users at all',\n requirePasswordReset: 'Require password reset on next login',\n disableMfa: 'Disable multi-factor authentication',\n selectUsers: 'Select users to apply actions to multiple users',\n moderateUser: 'Moderate user',\n moderateUsers: 'Moderate multiple users',\n createAccount: 'Create new account',\n apply: 'Apply',\n remove: 'Remove',\n grantRightConfirmation: 'Are you sure you want to grant {right} rights to all selected users?',\n revokeRightConfirmation: 'Are you sure you want to revoke {right} rights from all selected users?',\n activateMultipleUsersConfirmation: 'Are you sure you want to activate accounts of all selected users?',\n deactivateMultipleUsersConfirmation: 'Are you sure you want to deactivate accounts of all selected users?',\n deleteUserConfirmation: 'Are you sure you want to delete this account? This action cannot be undone.',\n rejectAccountConfirmation: 'Are you sure you want to reject this account? This account will be deleted and it cannot be undone.',\n deleteMultipleUsersConfirmation: 'Are you sure you want to delete accounts of all selected users? This action cannot be undone.',\n addTagForMultipleUsersConfirmation: 'Are you sure you want to apply tag to all selected users?',\n removeTagFromMultipleUsersConfirmation: 'Are you sure you want to remove tag from all selected users?',\n requirePasswordResetConfirmation: 'Are you sure you want to require password reset for all selected users?',\n approveAccountsConfirmation: 'Are you sure you want to approve accounts for all selected users?',\n rejectAccountsConfirmation: 'Are you sure you want to reject accounts for all selected users? These accounts will be deleted and it cannot be undone.',\n confirmAccountsConfirmation: 'Are you sure you want to confirm emails for all selected users?',\n resendEmailConfirmation: 'Are you sure you want to resend confirmation email for all selected users?',\n mailerMustBeEnabled: 'To require user\\'s password reset you must enable mailer.',\n ok: 'Okay',\n completed: 'Completed',\n cancel: 'Cancel',\n canceled: 'Canceled',\n username: 'Username',\n email: 'E-mail',\n password: 'Password',\n create: 'Create',\n submitFormError: 'There are invalid values in the form. Please fix them before continuing.',\n emptyEmailError: 'Please input the e-mail',\n invalidEmailError: 'Please input valid e-mail',\n emptyPasswordError: 'Please input the password',\n emptyNicknameError: 'Please input the username',\n invalidNicknameError: 'Username can include \"a-z\", \"A-Z\" and \"0-9\" characters',\n getPasswordResetToken: 'Get password reset token',\n passwordResetTokenCreated: 'Password reset token was created',\n accountCreated: 'New account was created!',\n approveAccount: 'Approve account',\n approveAccounts: 'Approve accounts',\n unapprovedAccount: 'User account is pending approval',\n unconfirmedEmail: 'User didn\\'t confirm the email',\n confirmAccount: 'Confirm account',\n confirmAccounts: 'Confirm accounts',\n rejectAccount: 'Reject account',\n rejectAccounts: 'Reject accounts',\n resendConfirmation: 'Resend confirmation email',\n invalidAccount: 'This account has invalid nickname and can\\'t be modified',\n invalidNickname: 'invalid nickname',\n passwordResetTokenGenerated: 'Password reset token was generated:',\n linkToResetPassword: 'You can also use this link to reset password:',\n registrationReason: 'Registration Reason',\n service: 'Service',\n person: 'Person',\n enableTagPolicy: 'Enable MRF TagPolicy to manage user tags',\n confirmEnablingTagPolicy: 'Are you sure you want to add TagPolicy to the list of enabled MRF policies?',\n enableTagPolicySuccessMessage: 'MRF TagPolicy was enabled'\n },\n statuses: {\n statuses: 'Statuses',\n instanceFilter: 'Instance filter',\n loadMore: 'Load more',\n noInstances: 'No other instances found',\n onlyLocalStatuses: 'Show only local statuses',\n showPrivateStatuses: 'Show private statuses',\n direct: 'Direct',\n private: 'Private',\n public: 'Public',\n unlisted: 'Unlisted',\n openStatusInInstance: 'Open status in instance'\n },\n userProfile: {\n tags: 'Tags',\n moderator: 'Moderator',\n admin: 'Admin',\n local: 'Local',\n external: 'External',\n accountType: 'Account Type',\n actorType: 'Actor Type',\n nickname: 'Nickname',\n recentStatuses: 'Recent Statuses',\n roles: 'Roles',\n active: 'Active',\n status: 'Status',\n reason: 'Registration Reason',\n deactivated: 'Deactivated',\n pending: 'Pending',\n noStatuses: 'No statuses to show',\n openAccountInInstance: 'Open account in instance',\n securitySettings: {\n email: 'Email',\n password: 'Password',\n securitySettings: 'Security settings',\n passwordChangeWarning1: 'Setting a new password will cause the user to be signed out from any client they have used before.',\n passwordChangeWarning2: 'When the user signs in with this password, they will be asked to set a new one.',\n passwordLengthNotice: 'Make sure it\\'s at least {minLength} characters long.',\n inputNewEmail: 'Input new email',\n inputNewPassword: 'Input new password',\n passwordUpdated: 'The password has been updated',\n emailUpdated: 'The email has been updated',\n success: 'Success',\n submit: 'Submit',\n close: 'Close'\n }\n },\n usersFilter: {\n inputPlaceholder: 'Select filter',\n byAccountType: 'By account type',\n local: 'Local',\n external: 'External',\n byStatus: 'By status',\n active: 'Active',\n pending: 'Pending Approval',\n deactivated: 'Deactivated'\n },\n reports: {\n reports: 'Reports',\n report: 'Report',\n reply: 'Reply',\n from: 'From',\n showNotes: 'Show notes',\n newNote: 'New note',\n submit: 'Submit',\n confirmMsg: 'Are you sure you want to delete this note?',\n delete: 'Delete',\n cancel: 'Cancel',\n deleteCompleted: 'Delete comleted',\n deleteCanceled: 'Delete canceled',\n noNotes: 'No notes to display',\n changeState: \"Change report's state\",\n changeAllReports: 'Change all reports',\n changeScope: 'Change scope',\n moderateUser: 'Moderate user',\n resolve: 'Resolve',\n reopen: 'Reopen',\n close: 'Close',\n resolveAll: 'Resolve all',\n reopenAll: 'Reopen all',\n closeAll: 'Close all',\n addSensitive: 'Add Sensitive flag',\n removeSensitive: 'Remove Sensitive flag',\n public: 'Make status public',\n private: 'Make status private',\n unlisted: 'Make status unlisted',\n sensitive: 'Sensitive',\n deleteStatus: 'Delete status',\n reportOn: 'Report on',\n reportsOn: 'Reports on',\n id: 'ID',\n account: 'Account',\n actor: 'Actor',\n actors: 'Actors',\n content: 'Content',\n reportedStatus: 'Reported status',\n statusDeleted: 'This status has been deleted',\n leaveNote: 'Leave a note',\n postNote: 'Send',\n deleteNote: 'Delete',\n notFound: 'account not found'\n },\n reportsFilter: {\n inputPlaceholder: 'Select filter',\n open: 'Open',\n closed: 'Closed',\n resolved: 'Resolved'\n },\n moderationLog: {\n moderationLog: 'Moderation Log'\n },\n settings: {\n settings: 'Settings',\n instance: 'Instance',\n upload: 'Upload',\n mailer: 'Mailer',\n linkFormatter: 'Link Formatter',\n logger: 'Logger',\n activityPub: 'ActivityPub',\n auth: 'Authentication',\n captcha: 'Captcha',\n frontend: 'Frontend',\n http: 'HTTP',\n mrf: 'MRF',\n mediaProxy: 'Media Proxy',\n metadata: 'Metadata',\n gopher: 'Gopher',\n jobQueue: 'Job queue',\n webPush: 'Web push encryption',\n esshd: 'BBS / SSH access',\n rateLimiters: 'Rate limiters',\n other: 'Other',\n relays: 'Relays',\n follow: 'Follow',\n followRelay: 'Follow new relay',\n followedBack: 'Followed Back',\n instanceUrl: 'Instance URL',\n success: 'Settings changed successfully!',\n description: 'Description',\n removeFromDB: 'Remove setting from the DB',\n successfullyDownloaded: 'Successfully downloaded',\n successfullyImported: 'Successfully imported',\n nowNewPacksToImport: 'No new packs to import',\n successfullyUpdated: 'Successfully updated',\n metadatLowerCase: 'metadata',\n files: 'files',\n successfullyRemoved: 'Setting removed successfully!',\n seeDocs: 'See Documentation',\n instanceReboot: 'Reboot Instance',\n restartApp: 'You must restart the instance to apply settings',\n restartSuccess: 'Instance rebooted successfully!',\n removeSettingConfirmation: 'Are you sure you want to remove this setting\\'s value from the database?',\n changeImage: 'Change image',\n uploadImage: 'Upload image',\n remove: 'Remove',\n instancePanel: 'Instance Panel Document',\n termsOfServices: 'Terms of Service'\n },\n invites: {\n inviteTokens: 'Invite tokens',\n createInviteToken: 'Generate invite token',\n pickDate: 'Pick a date',\n maxUse: 'Max use',\n expiresAt: 'Expires at',\n tokenCreated: 'Invite token was created',\n token: 'Token',\n inviteLink: 'Invite link',\n uses: 'Uses',\n used: 'Used',\n cancel: 'Cancel',\n create: 'Create',\n revoke: 'Revoke',\n id: 'ID',\n actions: 'Actions',\n active: 'Active',\n inviteUserViaEmail: 'Invite user via email',\n sendRegistration: 'Send registration invite via email',\n email: 'Email',\n name: 'Name',\n emptyEmailError: 'Please input the e-mail',\n invalidEmailError: 'Please input valid e-mail',\n emailSent: 'Invite was sent',\n submitFormError: 'There are invalid values in the form. Please fix them before continuing.',\n inviteViaEmailAlert: 'To send invite via email make sure to enable `invites_enabled` and disable `registrations_open`'\n },\n emoji: {\n emojiPacks: 'Emoji packs',\n reloaded: 'Emoji reloaded successfully!',\n refreshed: 'Emoji refreshed successfully!',\n importEmojiTooltip: 'Importing from the filesystem will scan the directories and import those without pack.json but with emoji.txt or without neither',\n reloadEmoji: 'Reload emoji',\n importPacks: 'Import packs from the server filesystem',\n localPacks: 'Local packs',\n refreshLocalPacks: 'Refresh local packs',\n createLocalPack: 'Create a new local pack',\n remotePacks: 'Remote packs',\n remoteInstanceAddress: 'Remote instance address',\n refreshRemote: 'Refresh remote packs',\n sharePack: 'Share pack',\n required: 'required',\n homepage: 'Homepage',\n description: 'Description',\n packs: 'Packs',\n license: 'License',\n shortcode: 'Shortcode',\n fallbackSrc: 'Fallback source',\n fallbackSrcSha: 'Fallback source SHA',\n saveMetadata: 'Save metadata',\n deletePack: 'Delete pack',\n downloadPack: 'Download pack',\n downloadPackArchive: 'Download pack archive',\n addNewEmoji: 'Add new emoji to the pack',\n manageEmoji: 'Manage existing emoji',\n thisWillDownload: 'This will download the',\n downloadToCurrentInstance: 'pack to the current instance under the name',\n canBeChanged: 'can be changed below',\n willBeUsable: 'It will then be usable and shareable from the current instance',\n downloadAsOptional: 'Download as (optional)',\n downloadSharedPack: 'Download shared pack to current instance',\n downloadSharedPackMobile: 'Download pack to instance',\n optional: 'optional',\n uploadFile: 'Upload a file',\n url: 'URL',\n clickToUpload: 'Click to upload',\n upload: 'Upload',\n customFilename: 'Custom filename',\n customFilenameDesc: 'Custom file name (optional)',\n file: 'File',\n localPack: 'Local pack',\n leaveEmptyShortcode: 'leave empty to use the same shortcode',\n leaveEmptyFilename: 'leave empty to use the same filename',\n update: 'Update',\n remove: 'Remove',\n selectLocalPack: 'Select the local pack to copy to',\n specifyShortcode: 'Specify a custom shortcode',\n specifyFilename: 'Specify a custom filename',\n copy: 'Copy',\n copyToLocalPack: 'Copy to local pack',\n emptyPack: 'This emoji pack is empty',\n emojiWarning: 'Pack names cannot include any of the following characters: # / < > & +',\n image: 'Image'\n\n }\n}\n","export default {\n route: {\n dashboard: '首页',\n introduction: '简述',\n documentation: '文档',\n guide: '引导页',\n permission: '权限测试页',\n pagePermission: '页面权限',\n directivePermission: '指令权限',\n icons: '图标',\n components: '组件',\n componentIndex: '介绍',\n markdown: 'Markdown',\n jsonEditor: 'JSON编辑器',\n dndList: '列表拖拽',\n splitPane: 'Splitpane',\n avatarUpload: '头像上传',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: '小组件',\n backToTop: '返回顶部',\n dragDialog: '拖拽 Dialog',\n dragSelect: '拖拽 Select',\n dragKanban: '可拖拽看板',\n charts: '图表',\n keyboardChart: '键盘图表',\n lineChart: '折线图',\n mixChart: '混合图表',\n example: '综合实例',\n nested: '路由嵌套',\n menu1: '菜单1',\n 'menu1-1': '菜单1-1',\n 'menu1-2': '菜单1-2',\n 'menu1-2-1': '菜单1-2-1',\n 'menu1-2-2': '菜单1-2-2',\n 'menu1-3': '菜单1-3',\n menu2: '菜单2',\n Table: 'Table',\n dynamicTable: '动态Table',\n dragTable: '拖拽Table',\n inlineEditTable: 'Table内编辑',\n complexTable: '综合Table',\n treeTable: '树形表格',\n customTreeTable: '自定义树表',\n tab: 'Tab',\n form: '表单',\n createArticle: '创建文章',\n editArticle: '编辑文章',\n articleList: '文章列表',\n errorPages: '错误页面',\n page401: '401',\n page404: '404',\n errorLog: '错误日志',\n excel: 'Excel',\n exportExcel: 'Export Excel',\n selectExcel: 'Export Selected',\n uploadExcel: 'Upload Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Export Zip',\n theme: '换肤',\n clipboardDemo: 'Clipboard',\n i18n: '国际化',\n externalLink: '外链'\n },\n navbar: {\n logOut: '退出登录',\n dashboard: '首页',\n github: '项目地址',\n theme: '换肤',\n size: '布局大小'\n },\n login: {\n title: '系统登录',\n logIn: '登录',\n username: '账号',\n password: '密码',\n any: '随便填',\n thirdparty: '第三方登录',\n thirdpartyTips: '本地不能模拟,请结合自己业务进行模拟!!!'\n },\n documentation: {\n documentation: '文档',\n github: 'Github 地址'\n },\n permission: {\n roles: '你的权限',\n switchRoles: '切换权限',\n tips: '在某些情况下,不适合使用 v-permission。例如:Element-UI 的 Tab 组件或 el-table-column 以及其它动态渲染 dom 的场景。你只能通过手动设置 v-if 来实现。'\n },\n guide: {\n description: '引导页对于一些第一次进入项目的人很有用,你可以简单介绍下项目的功能。本 Demo 是基于',\n button: '打开引导'\n },\n components: {\n documentation: '文档',\n dropzoneTips: '由于我司业务有特殊需求,而且要传七牛 所以没用第三方,选择了自己封装。代码非常的简单,具体代码你可以在这里看到 @/components/element-ui/Dropzone',\n stickyTips: '当页面滚动到预设的位置会吸附在顶部',\n backToTopTips1: '页面滚动到指定位置会在右下角出现返回顶部按钮',\n backToTopTips2: '可自定义按钮的样式、show/hide、出现的高度、返回的位置 如需文字提示,可在外部使用Element的el-tooltip元素',\n imageUploadTips: '由于我在使用时它只有vue@1版本,而且和mockjs不兼容,所以自己改造了一下,如果大家要使用的话,优先还是使用官方版本。'\n },\n table: {\n dynamicTips1: '固定表头, 按照表头顺序排序',\n dynamicTips2: '不固定表头, 按照点击顺序排序',\n dragTips1: '默认顺序',\n dragTips2: '拖拽后顺序',\n title: '标题',\n importance: '重要性',\n type: '类型',\n remark: '点评',\n search: '搜索',\n add: '添加',\n export: '导出',\n reviewer: '审核人',\n id: '序号',\n date: '时间',\n author: '作者',\n readings: '阅读数',\n status: '状态',\n actions: '操作',\n edit: '编辑',\n publish: '发布',\n draft: '草稿',\n delete: '删除',\n cancel: '取 消',\n confirm: '确 定'\n },\n errorLog: {\n tips: '请点击右上角bug小图标',\n description: '现在的管理后台基本都是spa的形式了,它增强了用户体验,但同时也会增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在 Vue 官网提供了一个方法来捕获处理异常,你可以在其中进行错误处理或者异常上报。',\n documentation: '文档介绍'\n },\n excel: {\n export: '导出',\n selectedExport: '导出已选择项',\n placeholder: '请输入文件名(默认excel-list)'\n },\n zip: {\n export: '导出',\n placeholder: '请输入文件名(默认file)'\n },\n pdf: {\n tips: '这里使用 window.print() 来实现下载pdf的功能'\n },\n theme: {\n change: '换肤',\n documentation: '换肤文档',\n tips: 'Tips: 它区别于 navbar 上的 theme-pick, 是两种不同的换肤方法,各自有不同的应用场景,具体请参考文档。'\n },\n tagsView: {\n refresh: '刷新',\n close: '关闭',\n closeOthers: '关闭其它',\n closeAll: '关闭所有'\n }\n}\n","export default {\n route: {\n dashboard: 'Panel de control',\n introduction: 'Introducción',\n documentation: 'Documentación',\n guide: 'Guía',\n permission: 'Permisos',\n pagePermission: 'Permisos de la página',\n directivePermission: 'Permisos de la directiva',\n icons: 'Iconos',\n components: 'Componentes',\n componentIndex: 'Introducción',\n markdown: 'Markdown',\n jsonEditor: 'Editor JSON',\n dndList: 'Lista Dnd',\n splitPane: 'Panel dividido',\n avatarUpload: 'Subir avatar',\n dropzone: 'Subir ficheros',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: 'Mixin',\n backToTop: 'Ir arriba',\n dragDialog: 'Drag Dialog',\n dragSelect: 'Drag Select',\n dragKanban: 'Drag Kanban',\n charts: 'Gráficos',\n keyboardChart: 'Keyboard Chart',\n lineChart: 'Gráfico de líneas',\n mixChart: 'Mix Chart',\n example: 'Ejemplo',\n nested: 'Rutas anidadass',\n menu1: 'Menu 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menu 2',\n Table: 'Tabla',\n dynamicTable: 'Tabla dinámica',\n dragTable: 'Arrastrar tabla',\n inlineEditTable: 'Editor',\n complexTable: 'Complex Table',\n treeTable: 'Tree Table',\n customTreeTable: 'Custom TreeTable',\n tab: 'Pestaña',\n form: 'Formulario',\n createArticle: 'Crear artículo',\n editArticle: 'Editar artículo',\n articleList: 'Listado de artículos',\n errorPages: 'Páginas de error',\n page401: '401',\n page404: '404',\n errorLog: 'Registro de errores',\n excel: 'Excel',\n exportExcel: 'Exportar a Excel',\n selectExcel: 'Export seleccionado',\n uploadExcel: 'Subir Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Exportar a Zip',\n theme: 'Tema',\n clipboardDemo: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'Enlace externo'\n },\n navbar: {\n logOut: 'Salir',\n dashboard: 'Panel de control',\n github: 'Github',\n theme: 'Tema',\n size: 'Tamaño global'\n },\n login: {\n title: 'Formulario de acceso',\n logIn: 'Acceso',\n username: 'Usuario',\n password: 'Contraseña',\n any: 'nada',\n thirdparty: 'Conectar con',\n thirdpartyTips: 'No se puede simular en local, así que combine su propia simulación de negocios. ! !'\n },\n documentation: {\n documentation: 'Documentación',\n github: 'Repositorio Github'\n },\n permission: {\n roles: 'Tus permisos',\n switchRoles: 'Cambiar permisos',\n tips: 'In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if.'\n },\n guide: {\n description: 'The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ',\n button: 'Ver guía'\n },\n components: {\n documentation: 'Documentación',\n dropzoneTips: 'Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.'\n },\n table: {\n dynamicTips1: 'Fixed header, sorted by header order',\n dynamicTips2: 'Not fixed header, sorted by click order',\n dragTips1: 'Orden por defecto',\n dragTips2: 'The after dragging order',\n title: 'Título',\n importance: 'Importancia',\n type: 'Tipo',\n remark: 'Remark',\n search: 'Buscar',\n add: 'Añadir',\n export: 'Exportar',\n reviewer: 'reviewer',\n id: 'ID',\n date: 'Fecha',\n author: 'Autor',\n readings: 'Lector',\n status: 'Estado',\n actions: 'Acciones',\n edit: 'Editar',\n publish: 'Publicar',\n draft: 'Draft',\n delete: 'Eliminar',\n cancel: 'Cancelar',\n confirm: 'Confirmar'\n },\n errorLog: {\n tips: 'Please click the bug icon in the upper right corner',\n description: 'Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.',\n documentation: 'Documento de introducción'\n },\n excel: {\n export: 'Exportar',\n selectedExport: 'Exportar seleccionados',\n placeholder: 'Por favor escribe un nombre de fichero'\n },\n zip: {\n export: 'Exportar',\n placeholder: 'Por favor escribe un nombre de fichero'\n },\n pdf: {\n tips: 'Here we use window.print() to implement the feature of downloading pdf.'\n },\n theme: {\n change: 'Cambiar tema',\n documentation: 'Documentación del tema',\n tips: 'Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'\n },\n tagsView: {\n refresh: 'Actualizar',\n close: 'Cerrar',\n closeOthers: 'Cerrar otros',\n closeAll: 'Cerrar todos'\n }\n}\n","export default {\n route: {\n dashboard: 'Tablèu de bòrd',\n introduction: 'Introduccion',\n documentation: 'Documentacion',\n guide: 'Guida',\n permission: 'Autorizacions',\n pagePermission: 'Pagina d’autorizacion',\n directivePermission: 'Politica d’autorizacion',\n icons: 'Icònas',\n components: 'Compausants',\n componentIndex: 'Introduccion',\n markdown: 'Markdown',\n jsonEditor: 'JSON Editor',\n dndList: 'Dnd List',\n splitPane: 'SplitPane',\n avatarUpload: 'Mandadís d’avatar',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: 'Mixin',\n backToTop: 'BackToTop',\n dragDialog: 'Drag Dialog',\n dragSelect: 'Drag Select',\n dragKanban: 'Drag Kanban',\n charts: 'Charts',\n keyboardChart: 'Keyboard Chart',\n lineChart: 'Line Chart',\n mixChart: 'Mix Chart',\n example: 'Exemple',\n nested: 'Rotas imbricadas',\n menu1: 'Menú 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menú 2',\n Table: 'Tablèu',\n dynamicTable: 'Tablèu dinamic',\n dragTable: 'Drag Table',\n inlineEditTable: 'Inline Edit',\n complexTable: 'Tablèu complèx',\n treeTable: 'Arborescéncia',\n customTreeTable: 'Arborescéncia personalizada',\n tab: 'Onglet',\n form: 'Formulari',\n createArticle: 'Crear un article',\n editArticle: 'Modificar l’article',\n articleList: 'Lista d’articles',\n errorPages: 'Paginas d’error',\n page401: '401',\n page404: '404',\n errorLog: 'Jornal d’error',\n excel: 'Excel',\n exportExcel: 'Exportacion Excel',\n selectExcel: 'Exportar los seleccionats',\n uploadExcel: 'Importacion Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Exportacion Zip',\n theme: 'Tèma',\n clipboardDemo: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'Ligams extèrnes',\n users: 'Utilizaires'\n },\n navbar: {\n logOut: 'Desconnexion',\n dashboard: 'Tablèu de bòrd',\n github: 'Github',\n theme: 'Tèma',\n size: 'Talha totala'\n },\n login: {\n title: 'Formulari de connexion',\n logIn: 'Se connectar',\n username: 'Nom d’’utilizaire',\n password: 'Senhal',\n any: 'qual que siá',\n thirdparty: 'O se connectar amb',\n thirdpartyTips: 'Pòt pas èsser simulat en local, doncas montatz vòstra pròpria simulacion ! ! !'\n },\n documentation: {\n documentation: 'Documentacion',\n github: 'Repertòri Github'\n },\n permission: {\n roles: 'Vòstres ròtles',\n switchRoles: 'Cambiar de ròtle',\n tips: 'Dins qualques cases es pas de bon far d’utilizar v-permission, coma element d’onglet compausant, el-table-column o d’autres renduts dom asincròns que pòdon pas que foncionar amb un parametratge manual de v-if.'\n },\n guide: {\n description: 'La pagina de guida es utila pel monde que dintran dins lo projècte pel primièr còp. Podètz presentar en un mot las foncionalitats del projèctes. La demo es fondada sus ',\n button: 'Mostrar la guida'\n },\n components: {\n documentation: 'Documentacion',\n dropzoneTips: 'Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/element-ui/Dropzone.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.'\n },\n table: {\n dynamicTips1: 'Bandièra fixa, triada per òrdre de bandièra',\n dynamicTips2: 'Bandièra pas fixa, triada per òrdre de clic',\n dragTips1: 'L’’òrdre per defaut',\n dragTips2: 'L’’òrdre aprèp lisar-depausar',\n title: 'Títol',\n importance: 'Imp',\n type: 'Tipe',\n remark: 'Remarca',\n search: 'Recercar',\n add: 'Ajustar',\n export: 'Exportar',\n reviewer: 'examinator',\n id: 'ID',\n date: 'Data',\n author: 'Autor',\n readings: 'Lecturas',\n status: 'Estatuts',\n actions: 'Accions',\n edit: 'Modificar',\n publish: 'Publicar',\n draft: 'Ensag',\n delete: 'Suprimir',\n cancel: 'Anullar',\n confirm: 'Confirmar'\n },\n errorLog: {\n tips: 'Mercés de clicar l’’icòna del babau amont a man drecha',\n description: 'Ara que lo sistèma de gestion es coma un spa, melhora l’experiéncia dels utilizaire mas aumenta tanben lo risc de problèmas sus la pagina, una pichona negligéncia pòt menar a un blocatge complèt de la pagina. Urosament Vue fornís de manièras per gerir las excepcions, trobar las errors o senhalar las excepcions.',\n documentation: 'Presentacion del document'\n },\n excel: {\n export: 'Exportar',\n selectedExport: 'Exportar los elements seleccionats',\n placeholder: 'Mercés de picar lo nom de fichièr (per defaut excel-list)'\n },\n zip: {\n export: 'Exportar',\n placeholder: 'Mercés de picar lo nom de fichièr (per defaut file)'\n },\n pdf: {\n tips: 'Aquí utilizam window.print() per prepausar lo telecargament de pdf.'\n },\n theme: {\n change: 'Cambiar lo tèma',\n documentation: 'Documentacion dels tèmas',\n tips: 'Astúcia : es diferent del theme-pick de la barra de navigacion, i a dos metòdes de personalizacion, caduna amb un biais de far diferent. Referiscam a la documentacion per mai de detalhs.'\n },\n tagsView: {\n refresh: 'Actualizar',\n close: 'Tampar',\n closeOthers: 'Tampar los autres',\n closeAll: 'Los tampar totes'\n }\n}\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-redo\",\n \"use\": \"icon-tiptap-redo-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"redo\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function addNewEmojiFile(packName, file, shortcode, filename, host, token) {\n const data = new FormData()\n if (filename.trim() !== '') {\n data.set('filename', filename)\n }\n if (shortcode.trim() !== '') {\n data.set('shortcode', shortcode)\n }\n data.set('file', file)\n\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/files?name=${packName}`,\n method: 'post',\n headers: authHeaders(token),\n data\n })\n}\n\nexport function addressOfEmojiInPack(host, packName, name) {\n return `${baseName(host)}/emoji/${encodeUri(packName)}/${name}`\n}\n\nexport async function createPack(host, token, packName) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/pack?name=${packName}`,\n method: 'post',\n headers: authHeaders(token)\n })\n}\n\nexport async function deleteEmojiFile(packName, shortcode, host, token) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/files?name=${packName}&shortcode=${shortcode}`,\n method: 'delete',\n headers: authHeaders(token)\n })\n}\n\nexport async function deletePack(host, token, packName) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/pack?name=${packName}`,\n method: 'delete',\n headers: authHeaders(token)\n })\n}\n\nexport async function downloadFrom(instanceAddress, packName, as, host, token) {\n return await request({\n baseURL: baseName(host),\n url: '/api/pleroma/emoji/packs/download',\n method: 'post',\n headers: authHeaders(token),\n data: as.trim() === ''\n ? { url: baseName(instanceAddress), name: packName }\n : { url: baseName(instanceAddress), name: packName, as },\n timeout: 0\n })\n}\n\nexport async function fetchPack(packName, page, pageSize, host, token) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/pack?name=${packName}&page=${page}&page_size=${pageSize}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function importFromFS(host, token) {\n return await request({\n baseURL: baseName(host),\n url: '/api/pleroma/emoji/packs/import',\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function listPacks(page, pageSize, host, token) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs?page=${page}&page_size=${pageSize}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function listRemotePacks(instance, page, pageSize, host, token) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/remote?url=${baseName(instance)}&page=${page}&page_size=${pageSize}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function reloadEmoji(host, token) {\n return await request({\n baseURL: baseName(host),\n url: '/api/pleroma/admin/reload_emoji',\n method: 'post',\n headers: authHeaders(token)\n })\n}\n\nexport async function savePackMetadata(host, token, packName, metadata) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/pack?name=${packName}`,\n method: 'patch',\n headers: authHeaders(token),\n data: { metadata },\n timeout: 0 // This might take a long time\n })\n}\n\nexport async function updateEmojiFile(packName, shortcode, newShortcode, newFilename, force, host, token) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/files?name=${packName}`,\n method: 'patch',\n headers: authHeaders(token),\n data: { shortcode, new_shortcode: newShortcode, new_filename: newFilename, force }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n\nconst encodeUri = (name) => encodeURIComponent(name)\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-github\",\n \"use\": \"icon-tiptap-github-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-icon\",\n \"use\": \"icon-icon-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-404\",\n \"use\": \"icon-404-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-edit\",\n \"use\": \"icon-edit-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-lock\",\n \"use\": \"icon-lock-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-user\",\n \"use\": \"icon-user-usage\",\n \"viewBox\": \"0 0 130 130\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409EFF\",\"subMenuActiveText\":\"#f4f4f5\",\"menuBg\":\"#304156\",\"menuHover\":\"#263445\",\"subMenuBg\":\"#1f2d3d\",\"subMenuHover\":\"#001528\",\"sideBarWidth\":\"180px\"};","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-mention\",\n \"use\": \"icon-tiptap-mention-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"read-email-at-alternate\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-quote\",\n \"use\": \"icon-tiptap-quote-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"close-quote\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import axios from 'axios'\nimport { Message } from 'element-ui'\n\n// create an axios instance\nconst service = axios.create({\n timeout: 60000 // request timeout\n})\n\n// response interceptor\nservice.interceptors.response.use(\n response => response,\n error => {\n let errorMessage\n console.log(`Error ${error}`)\n\n if (error.response) {\n const edata = error.response.data.error ? error.response.data.error : error.response.data\n errorMessage = !error.response.headers['content-type'].includes('application/json')\n ? `${error.message}`\n : `${error.message} - ${edata}`\n } else {\n errorMessage = error\n }\n\n Message({\n message: errorMessage,\n type: 'error',\n duration: 5 * 1000\n })\n return Promise.reject(error)\n }\n)\n\nexport default service\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-code\",\n \"use\": \"icon-tiptap-code-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"angle-brackets\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-clipboard\",\n \"use\": \"icon-clipboard-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tiptap-underline\",\n \"use\": \"icon-tiptap-underline-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"text-underline\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-email\",\n \"use\": \"icon-email-usage\",\n \"viewBox\": \"0 0 128 96\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-chart\",\n \"use\": \"icon-chart-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Item.vue?vue&type=style&index=0&id=52140d98&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Item.vue?vue&type=style&index=0&id=52140d98&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',_vm._g({class:_vm.svgClass,attrs:{\"aria-hidden\":\"true\"}},_vm.$listeners),[_c('use',{attrs:{\"xlink:href\":_vm.iconName}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=17178ffc&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=17178ffc&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17178ffc\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409EFF\",\"subMenuActiveText\":\"#f4f4f5\",\"menuBg\":\"#304156\",\"menuHover\":\"#263445\",\"subMenuBg\":\"#1f2d3d\",\"subMenuHover\":\"#001528\",\"sideBarWidth\":\"180px\"};"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-0171.9e927b8a.js b/priv/static/adminfe/static/js/chunk-0171.9e927b8a.js deleted file mode 100644 index f20f619ad..000000000 --- a/priv/static/adminfe/static/js/chunk-0171.9e927b8a.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-0171"],{"53Av":function(e,t,s){"use strict";var r=s("lOBV");s.n(r).a},"6eCR":function(e,t,s){"use strict";var r=s("Jdpf");s.n(r).a},"9/5/":function(e,t,s){(function(t){var s="Expected a function",r=NaN,n="[object Symbol]",a=/^\s+|\s+$/g,i=/^[-+]0x[0-9a-f]+$/i,o=/^0b[01]+$/i,c=/^0o[0-7]+$/i,l=parseInt,u="object"==typeof t&&t&&t.Object===Object&&t,d="object"==typeof self&&self&&self.Object===Object&&self,p=u||d||Function("return this")(),f=Object.prototype.toString,v=Math.max,m=Math.min,g=function(){return p.Date.now()};function h(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function _(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&f.call(e)==n}(e))return r;if(h(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=h(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(a,"");var s=o.test(e);return s||c.test(e)?l(e.slice(2),s?2:8):i.test(e)?r:+e}e.exports=function(e,t,r){var n,a,i,o,c,l,u=0,d=!1,p=!1,f=!0;if("function"!=typeof e)throw new TypeError(s);function w(t){var s=n,r=a;return n=a=void 0,u=t,o=e.apply(r,s)}function $(e){var s=e-l;return void 0===l||s>=t||s<0||p&&e-u>=i}function b(){var e=g();if($(e))return k(e);c=setTimeout(b,function(e){var s=t-(e-l);return p?m(s,i-(e-u)):s}(e))}function k(e){return c=void 0,f&&n?w(e):(n=a=void 0,o)}function y(){var e=g(),s=$(e);if(n=arguments,a=this,l=e,s){if(void 0===c)return function(e){return u=e,c=setTimeout(b,t),d?w(e):o}(l);if(p)return c=setTimeout(b,t),w(l)}return void 0===c&&(c=setTimeout(b,t)),o}return t=_(t)||0,h(r)&&(d=!!r.leading,i=(p="maxWait"in r)?v(_(r.maxWait)||0,t):i,f="trailing"in r?!!r.trailing:f),y.cancel=function(){void 0!==c&&clearTimeout(c),u=0,n=l=a=c=void 0},y.flush=function(){return void 0===c?o:k(g())},y}}).call(this,s("yLpj"))},DPTh:function(e,t,s){"use strict";var r=s("vg5t");s.n(r).a},GGbL:function(e,t,s){},Jdpf:function(e,t,s){},RGjw:function(e,t,s){"use strict";s.r(t);var r=s("o0o1"),n=s.n(r),a=s("yXPU"),i=s.n(a),o=s("9/5/"),c=s.n(o),l=s("ZhIB"),u=s.n(l),d=s("lSNA"),p=s.n(d),f=s("MVZn"),v=s.n(f),m={data:function(){return{value:["local","active"]}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device}},created:function(){var e=this.$data.value.reduce(function(e,t){return v()({},e,p()({},t,!0))},{});this.$store.dispatch("ToggleUsersFilter",e)},methods:{removeOppositeFilters:function(){var e=Object.keys(this.$store.state.users.filters).length,t=[],s=this.$data.value.indexOf("local"),r=this.$data.value.indexOf("external"),n=this.$data.value.indexOf("active"),a=this.$data.value.indexOf("deactivated"),i=this.$data.value.indexOf("need_approval");return this.$data.value.length===e?[]:(Math.max(s,r)>-1&&t.push(this.$data.value[Math.max(s,r)]),Math.max(n,a,i)>-1&&t.push(this.$data.value[Math.max(n,a,i)]),t)},toggleFilters:function(){this.$data.value=this.removeOppositeFilters();var e=this.$data.value.reduce(function(e,t){return v()({},e,p()({},t,!0))},{});this.$store.dispatch("ToggleUsersFilter",e)}}},g=(s("xAET"),s("KHd+")),h=Object(g.a)(m,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-select",{staticClass:"select-field",attrs:{clearable:e.isDesktop,placeholder:e.$t("usersFilter.inputPlaceholder"),multiple:""},on:{change:e.toggleFilters},model:{value:e.value,callback:function(t){e.value=t},expression:"value"}},[s("el-option-group",{attrs:{label:e.$t("usersFilter.byAccountType")}},[s("el-option",{attrs:{value:"local",label:"Local"}},[e._v(e._s(e.$t("usersFilter.local")))]),e._v(" "),s("el-option",{attrs:{value:"external",label:"External"}},[e._v(e._s(e.$t("usersFilter.external")))])],1),e._v(" "),s("el-option-group",{attrs:{label:e.$t("usersFilter.byStatus")}},[s("el-option",{attrs:{value:"active",label:"Active"}},[e._v(e._s(e.$t("usersFilter.active")))]),e._v(" "),s("el-option",{attrs:{value:"need_approval",label:"Need Approval"}},[e._v(e._s(e.$t("usersFilter.pending")))]),e._v(" "),s("el-option",{attrs:{value:"deactivated",label:"Deactivated"}},[e._v(e._s(e.$t("usersFilter.deactivated")))])],1)],1)},[],!1,null,"377d5068",null);h.options.__file="UsersFilter.vue";var _=h.exports,w=s("i7Kn"),$={name:"NewAccountDialog",props:{dialogFormVisible:{type:Boolean,default:function(){return!1}}},data:function(){return{newUserForm:{nickname:"",email:"",password:""},rules:{nickname:[{validator:this.validateUsername,trigger:"blur"}],email:[{validator:this.validateEmail,trigger:"blur"}],password:[{validator:this.validatePassword,trigger:"blur"}]}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isVisible:{get:function(){return this.$props.dialogFormVisible},set:function(){this.closeDialogWindow()}},getLabelWidth:function(){return this.isDesktop?"120px":"85px"}},methods:{closeDialogWindow:function(){this.$emit("closeWindow")},resetForm:function(){var e=this;this.$nextTick(function(){e.$refs.newUserForm.resetFields()})},submitForm:function(e){var t=this;this.$refs[e].validate(function(e){if(!e)return t.$message({type:"error",message:t.$t("users.submitFormError")}),!1;t.$emit("createNewAccount",t.$data.newUserForm)})},validateEmail:function(e,t,s){return""===t?s(new Error(this.$t("users.emptyEmailError"))):this.validEmail(t)?s():s(new Error(this.$t("users.invalidEmailError")))},validatePassword:function(e,t,s){return""===t?s(new Error(this.$t("users.emptyPasswordError"))):s()},validateUsername:function(e,t,s){return""===t?s(new Error(this.$t("users.emptyNicknameError"))):this.validNickname(t)?s():s(new Error(this.$t("users.invalidNicknameError")))},validEmail:function(e){return/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(e)},validNickname:function(e){return/^[a-zA-Z\d]+$/.test(e)}}},b=(s("DPTh"),Object(g.a)($,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-dialog",{attrs:{visible:e.isVisible,"show-close":!1,title:e.$t("users.createAccount"),"custom-class":"create-user-dialog"},on:{"update:visible":function(t){e.isVisible=t},open:e.resetForm}},[s("el-form",{ref:"newUserForm",attrs:{model:e.newUserForm,rules:e.rules,"label-width":e.getLabelWidth,"status-icon":""}},[s("el-form-item",{staticClass:"create-account-form-item",attrs:{label:e.$t("users.username"),prop:"nickname"}},[s("el-input",{attrs:{name:"nickname",autofocus:""},model:{value:e.newUserForm.nickname,callback:function(t){e.$set(e.newUserForm,"nickname",t)},expression:"newUserForm.nickname"}})],1),e._v(" "),s("el-form-item",{staticClass:"create-account-form-item",attrs:{label:e.$t("users.email"),prop:"email"}},[s("el-input",{attrs:{name:"email",type:"email"},model:{value:e.newUserForm.email,callback:function(t){e.$set(e.newUserForm,"email",t)},expression:"newUserForm.email"}})],1),e._v(" "),s("el-form-item",{staticClass:"create-account-form-item-without-margin",attrs:{label:e.$t("users.password"),prop:"password"}},[s("el-input",{attrs:{type:"password",name:"password",autocomplete:"off"},model:{value:e.newUserForm.password,callback:function(t){e.$set(e.newUserForm,"password",t)},expression:"newUserForm.password"}})],1)],1),e._v(" "),s("span",{attrs:{slot:"footer"},slot:"footer"},[s("el-button",{on:{click:e.closeDialogWindow}},[e._v(e._s(e.$t("users.cancel")))]),e._v(" "),s("el-button",{attrs:{type:"primary"},on:{click:function(t){return e.submitForm("newUserForm")}}},[e._v(e._s(e.$t("users.create")))])],1)],1)},[],!1,null,null,null));b.options.__file="NewAccountDialog.vue";var k=b.exports,y=s("tPM3"),A=s("rIUS"),D=s("WjBP"),C={name:"Users",components:{NewAccountDialog:k,ModerationDropdown:y.a,MultipleUsersMenu:w.a,RebootButton:A.a,ResetPasswordDialog:D.a,UsersFilter:_},filters:{truncate:function(e,t,s){return e.length0},showDeactivatedButton:function(e){return this.$store.state.user.id!==e}}},x=(s("6eCR"),Object(g.a)(C,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"users-container"},[s("div",{staticClass:"users-header-container"},[s("h1",[e._v("\n "+e._s(e.$t("users.users"))+"\n "),s("span",{staticClass:"user-count"},[e._v("("+e._s(e.normalizedUsersCount)+")")])]),e._v(" "),s("reboot-button")],1),e._v(" "),s("div",{staticClass:"filter-container"},[s("users-filter"),e._v(" "),s("el-input",{staticClass:"search",attrs:{placeholder:e.$t("users.search"),"prefix-icon":"el-icon-search"},on:{input:e.handleDebounceSearchInput},model:{value:e.search,callback:function(t){e.search=t},expression:"search"}})],1),e._v(" "),s("div",{staticClass:"actions-container"},[s("el-button",{staticClass:"actions-button",on:{click:function(t){e.createAccountDialogOpen=!0}}},[s("span",{staticClass:"create-account"},[s("i",{staticClass:"el-icon-plus"}),e._v("\n "+e._s(e.$t("users.createAccount"))+"\n ")])]),e._v(" "),s("multiple-users-menu",{attrs:{"selected-users":e.selectedUsers},on:{"apply-action":e.clearSelection}})],1),e._v(" "),s("new-account-dialog",{attrs:{"dialog-form-visible":e.createAccountDialogOpen},on:{createNewAccount:e.createNewAccount,closeWindow:function(t){e.createAccountDialogOpen=!1}}}),e._v(" "),s("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],ref:"usersTable",staticStyle:{width:"100%"},attrs:{data:e.users,"row-key":"id"},on:{"row-click":function(t){return e.handleRowClick(t)},"selection-change":e.handleSelectionChange}},[e.isDesktop?s("el-table-column",{attrs:{type:"selection","reserve-selection":"",width:"44",align:"center"}}):e._e(),e._v(" "),s("el-table-column",{attrs:{"min-width":e.width,label:e.$t("users.id"),prop:"id"}}),e._v(" "),s("el-table-column",{attrs:{label:e.$t("users.name"),prop:"nickname"},scopedSlots:e._u([{key:"default",fn:function(t){return[e._v("\n "+e._s(t.row.nickname)+"\n "),e.isDesktop?s("el-tag",{attrs:{type:"info",size:"mini"}},[s("span",[e._v(e._s(t.row.local?e.$t("users.local"):e.$t("users.external")))])]):e._e()]}}])}),e._v(" "),s("el-table-column",{attrs:{"min-width":e.width,label:e.$t("users.status")},scopedSlots:e._u([{key:"default",fn:function(t){return[!t.row.deactivated&!t.row.approval_pending?s("el-tag",{attrs:{type:"success"}},[e.isDesktop?s("span",[e._v(e._s(e.$t("users.active")))]):s("i",{staticClass:"el-icon-circle-check"})]):e._e(),e._v(" "),t.row.deactivated&!t.row.approval_pending?s("el-tag",{attrs:{type:"danger"}},[e.isDesktop?s("span",[e._v(e._s(e.$t("users.deactivated")))]):s("i",{staticClass:"el-icon-circle-close"})]):e._e(),e._v(" "),s("el-tooltip",{attrs:{content:e.$t("users.unapprovedAccount"),effect:"dark"}},[t.row.approval_pending?s("el-tag",{attrs:{type:"info"}},[e.isDesktop?s("span",[e._v(e._s(e.$t("users.unapproved")))]):s("i",{staticClass:"el-icon-warning-outline"})]):e._e()],1),e._v(" "),t.row.roles.admin?s("el-tag",[s("span",[e._v(e._s(e.isDesktop?e.$t("users.admin"):e.getFirstLetter(e.$t("users.admin"))))])]):e._e(),e._v(" "),t.row.roles.moderator?s("el-tag",[s("span",[e._v(e._s(e.isDesktop?e.$t("users.moderator"):e.getFirstLetter(e.$t("users.moderator"))))])]):e._e(),e._v(" "),s("el-tooltip",{attrs:{content:e.$t("users.unconfirmedEmail"),effect:"dark"}},[t.row.confirmation_pending?s("el-tag",{attrs:{type:"info"}},[e._v("\n "+e._s(e.isDesktop?e.$t("users.unconfirmed"):e.getFirstLetter(e.$t("users.unconfirmed")))+"\n ")]):e._e()],1)]}}])}),e._v(" "),e.pendingView&&e.isDesktop?s("el-table-column",{attrs:{label:e.$t("users.registrationReason")},scopedSlots:e._u([{key:"default",fn:function(t){return[e.regReason(t.row.registration_reason)?s("el-tooltip",{attrs:{content:t.row.registration_reason,"popper-class":"reason-tooltip",effect:"dark"}},[s("span",[e._v('\n "'+e._s(e._f("truncate")(t.row.registration_reason,100,"..."))+'"\n ')])]):e._e()]}}],null,!1,975858353)}):e._e(),e._v(" "),s("el-table-column",{attrs:{label:e.$t("users.actions"),fixed:"right"},scopedSlots:e._u([{key:"default",fn:function(t){return[e.propertyExists(t.row,"nickname")?s("moderation-dropdown",{attrs:{user:t.row,page:"users"},on:{"open-reset-token-dialog":e.openResetPasswordDialog}}):s("el-button",{attrs:{type:"text",disabled:""}},[e._v("\n "+e._s(e.$t("users.moderation"))+"\n "),e.isDesktop?s("i",{staticClass:"el-icon-arrow-down el-icon--right"}):e._e()])]}}])})],1),e._v(" "),s("reset-password-dialog",{attrs:{"reset-password-dialog-open":e.resetPasswordDialogOpen},on:{"close-reset-token-dialog":e.closeResetPasswordDialog}}),e._v(" "),e.loading?e._e():s("div",{staticClass:"pagination"},[s("el-pagination",{attrs:{total:e.usersCount,"current-page":e.currentPage,"page-size":e.pageSize,"hide-on-single-page":"",layout:"prev, pager, next"},on:{"current-change":e.handlePageChange}})],1)],1)},[],!1,null,null,null));x.options.__file="index.vue";t.default=x.exports},WjBP:function(e,t,s){"use strict";var r={name:"ResetPasswordDialog",props:{resetPasswordDialogOpen:{type:Boolean,default:!1}},computed:{dialogOpen:function(){return this.resetPasswordDialogOpen},loading:function(){return this.$store.state.users.loading},passwordResetLink:function(){return this.$store.state.users.passwordResetToken.link},passwordResetToken:function(){return this.$store.state.users.passwordResetToken.token}},methods:{closeResetPasswordDialog:function(){this.$emit("close-reset-token-dialog")}}},n=s("KHd+"),a=Object(n.a)(r,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-dialog",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],attrs:{visible:e.dialogOpen,title:e.$t("users.passwordResetTokenCreated"),"custom-class":"password-reset-token-dialog"},on:{close:e.closeResetPasswordDialog}},[s("div",[s("p",{staticClass:"password-reset-token"},[e._v(e._s(e.$t("users.passwordResetTokenGenerated"))+" "+e._s(e.passwordResetToken))]),e._v(" "),s("p",[e._v(e._s(e.$t("users.linkToResetPassword"))+"\n "),s("a",{staticClass:"reset-password-link",attrs:{href:e.passwordResetLink,target:"_blank"}},[e._v(e._s(e.passwordResetLink))])])])])},[],!1,null,null,null);a.options.__file="ResetPasswordDialog.vue";t.a=a.exports},lOBV:function(e,t,s){},tPM3:function(e,t,s){"use strict";var r={name:"ModerationDropdown",props:{user:{type:Object,default:function(){return{}}},page:{type:String,default:"users"},statusId:{type:String,default:""}},computed:{actorType:{get:function(){return this.user.actor_type},set:function(e){this.$store.dispatch("UpdateActorType",{user:this.user,type:e,_userId:this.user.id,_statusId:this.statusId})}},isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{disableMfa:function(e){this.$store.dispatch("DisableMfa",e)},getPasswordResetToken:function(e){this.$emit("open-reset-token-dialog"),this.$store.dispatch("GetPasswordResetToken",e)},handleConfirmationResend:function(e){this.$store.dispatch("ResendConfirmationEmail",[e])},handleDeletion:function(e){var t=this;this.$confirm(this.$t("users.deleteUserConfirmation"),{confirmButtonText:"Delete",cancelButtonText:"Cancel",type:"warning"}).then(function(){t.$store.dispatch("DeleteUsers",{users:[e],_userId:e.id})}).catch(function(){t.$message({type:"info",message:"Delete canceled"})})},handleAccountApproval:function(e){this.$store.dispatch("ApproveUsersAccount",{users:[e],_userId:e.id,_statusId:this.statusId})},handleAccountRejection:function(e){var t=this;this.$confirm(this.$t("users.rejectAccountConfirmation"),{confirmButtonText:"Reject",cancelButtonText:"Cancel",type:"warning"}).then(function(){t.$store.dispatch("DeleteUsers",{users:[e],_userId:e.id})}).catch(function(){t.$message({type:"info",message:"Reject canceled"})})},handleEmailConfirmation:function(e){this.$store.dispatch("ConfirmUsersEmail",{users:[e],_userId:e.id,_statusId:this.statusId})},requirePasswordReset:function(e){this.$store.state.user.nodeInfo.metadata.mailerEnabled?this.$store.dispatch("RequirePasswordReset",[e]):this.$alert(this.$t("users.mailerMustBeEnabled"),"Error",{type:"error"})},showAdminAction:function(e){var t=e.local,s=e.id;return t&&this.showDeactivatedButton(s)},showDeactivatedButton:function(e){return this.$store.state.user.id!==e},toggleActivation:function(e){e.deactivated?this.$store.dispatch("ActivateUsers",{users:[e],_userId:e.id}):this.$store.dispatch("DeactivateUsers",{users:[e],_userId:e.id})},toggleTag:function(e,t){e.tags.includes(t)?this.$store.dispatch("RemoveTag",{users:[e],tag:t,_userId:e.id,_statusId:this.statusId}):this.$store.dispatch("AddTag",{users:[e],tag:t,_userId:e.id,_statusId:this.statusId})},toggleUserRight:function(e,t){e.roles[t]?this.$store.dispatch("DeleteRight",{users:[e],right:t,_userId:e.id,_statusId:this.statusId}):this.$store.dispatch("AddRight",{users:[e],right:t,_userId:e.id,_statusId:this.statusId})}}},n=(s("53Av"),s("KHd+")),a=Object(n.a)(r,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-dropdown",{attrs:{"hide-on-click":!1,size:"small",trigger:"click",placement:"top-start"},nativeOn:{click:function(e){e.stopPropagation()}}},[s("div",["users"===e.page?s("el-button",{staticClass:"el-dropdown-link",attrs:{type:"text"}},[e._v("\n "+e._s(e.$t("users.moderation"))+"\n "),e.isDesktop?s("i",{staticClass:"el-icon-arrow-down el-icon--right"}):e._e()]):e._e(),e._v(" "),"userPage"===e.page||"statusPage"===e.page?s("el-button",{staticClass:"moderate-user-button"},[s("span",{staticClass:"moderate-user-button-container"},[s("span",[s("i",{staticClass:"el-icon-edit"}),e._v("\n "+e._s(e.$t("users.moderateUser"))+"\n ")]),e._v(" "),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})])]):e._e()],1),e._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[s("el-dropdown-item",{staticClass:"actor-type-dropdown"},[s("el-select",{staticClass:"actor-type-select",attrs:{placeholder:e.$t("userProfile.actorType")},model:{value:e.actorType,callback:function(t){e.actorType=t},expression:"actorType"}},[s("el-option",{attrs:{label:e.$t("users.service"),value:"Service"}}),e._v(" "),s("el-option",{attrs:{label:e.$t("users.person"),value:"Person"}})],1)],1),e._v(" "),e.showAdminAction(e.user)?s("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(t){return e.toggleUserRight(e.user,"admin")}}},[e._v("\n "+e._s(e.user.roles.admin?e.$t("users.revokeAdmin"):e.$t("users.grantAdmin"))+"\n ")]):e._e(),e._v(" "),e.showAdminAction(e.user)?s("el-dropdown-item",{nativeOn:{click:function(t){return e.toggleUserRight(e.user,"moderator")}}},[e._v("\n "+e._s(e.user.roles.moderator?e.$t("users.revokeModerator"):e.$t("users.grantModerator"))+"\n ")]):e._e(),e._v(" "),e.showDeactivatedButton(e.user.id)&&"statusPage"!==e.page?s("el-dropdown-item",{attrs:{divided:e.showAdminAction(e.user)},nativeOn:{click:function(t){return e.toggleActivation(e.user)}}},[e._v("\n "+e._s(e.user.deactivated?e.$t("users.activateAccount"):e.$t("users.deactivateAccount"))+"\n ")]):e._e(),e._v(" "),e.showDeactivatedButton(e.user.id)&&"statusPage"!==e.page?s("el-dropdown-item",{nativeOn:{click:function(t){return e.handleDeletion(e.user)}}},[e._v("\n "+e._s(e.$t("users.deleteAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.approval_pending?s("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(t){return e.handleAccountApproval(e.user)}}},[e._v("\n "+e._s(e.$t("users.approveAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.approval_pending?s("el-dropdown-item",{nativeOn:{click:function(t){return e.handleAccountRejection(e.user)}}},[e._v("\n "+e._s(e.$t("users.rejectAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.confirmation_pending?s("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(t){return e.handleEmailConfirmation(e.user)}}},[e._v("\n "+e._s(e.$t("users.confirmAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.confirmation_pending?s("el-dropdown-item",{nativeOn:{click:function(t){return e.handleConfirmationResend(e.user)}}},[e._v("\n "+e._s(e.$t("users.resendConfirmation"))+"\n ")]):e._e(),e._v(" "),s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:media-force-nsfw")},attrs:{divided:e.showAdminAction(e.user)},nativeOn:{click:function(t){return e.toggleTag(e.user,"mrf_tag:media-force-nsfw")}}},[e._v("\n "+e._s(e.$t("users.forceNsfw"))+"\n "),e.user.tags.includes("mrf_tag:media-force-nsfw")?s("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:media-strip")},nativeOn:{click:function(t){return e.toggleTag(e.user,"mrf_tag:media-strip")}}},[e._v("\n "+e._s(e.$t("users.stripMedia"))+"\n "),e.user.tags.includes("mrf_tag:media-strip")?s("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:force-unlisted")},nativeOn:{click:function(t){return e.toggleTag(e.user,"mrf_tag:force-unlisted")}}},[e._v("\n "+e._s(e.$t("users.forceUnlisted"))+"\n "),e.user.tags.includes("mrf_tag:force-unlisted")?s("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:sandbox")},nativeOn:{click:function(t){return e.toggleTag(e.user,"mrf_tag:sandbox")}}},[e._v("\n "+e._s(e.$t("users.sandbox"))+"\n "),e.user.tags.includes("mrf_tag:sandbox")?s("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),e.user.local?s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:disable-remote-subscription")},nativeOn:{click:function(t){return e.toggleTag(e.user,"mrf_tag:disable-remote-subscription")}}},[e._v("\n "+e._s(e.$t("users.disableRemoteSubscription"))+"\n "),e.user.tags.includes("mrf_tag:disable-remote-subscription")?s("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.user.local?s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:disable-any-subscription")},nativeOn:{click:function(t){return e.toggleTag(e.user,"mrf_tag:disable-any-subscription")}}},[e._v("\n "+e._s(e.$t("users.disableAnySubscription"))+"\n "),e.user.tags.includes("mrf_tag:disable-any-subscription")?s("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.user.local?s("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(t){return e.getPasswordResetToken(e.user.nickname)}}},[e._v("\n "+e._s(e.$t("users.getPasswordResetToken"))+"\n ")]):e._e(),e._v(" "),e.user.local?s("el-dropdown-item",{nativeOn:{click:function(t){return e.requirePasswordReset(e.user)}}},[e._v("\n "+e._s(e.$t("users.requirePasswordReset"))+"\n ")]):e._e(),e._v(" "),e.user.local?s("el-dropdown-item",{nativeOn:{click:function(t){return e.disableMfa(e.user.nickname)}}},[e._v("\n "+e._s(e.$t("users.disableMfa"))+"\n ")]):e._e()],1)],1)},[],!1,null,null,null);a.options.__file="ModerationDropdown.vue";t.a=a.exports},vg5t:function(e,t,s){},xAET:function(e,t,s){"use strict";var r=s("GGbL");s.n(r).a}}]); -//# sourceMappingURL=chunk-0171.9e927b8a.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-0171.9e927b8a.js.map b/priv/static/adminfe/static/js/chunk-0171.9e927b8a.js.map deleted file mode 100644 index 4f2d63f3e..000000000 --- a/priv/static/adminfe/static/js/chunk-0171.9e927b8a.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/users/components/ModerationDropdown.vue?e3f0","webpack:///./src/views/users/index.vue?1afe","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./src/views/users/components/NewAccountDialog.vue?d353","webpack:///./src/views/users/index.vue?5636","webpack:///./src/views/users/components/UsersFilter.vue?6a82","webpack:///src/views/users/components/UsersFilter.vue","webpack:///./src/views/users/components/UsersFilter.vue","webpack:///./src/views/users/components/UsersFilter.vue?4ed7","webpack:///./src/views/users/components/NewAccountDialog.vue?9018","webpack:///src/views/users/components/NewAccountDialog.vue","webpack:///./src/views/users/components/NewAccountDialog.vue","webpack:///./src/views/users/components/NewAccountDialog.vue?43a7","webpack:///./src/views/users/index.vue?0a29","webpack:///src/views/users/index.vue","webpack:///./src/views/users/index.vue","webpack:///./src/views/users/components/ResetPasswordDialog.vue?0b2b","webpack:///./src/views/users/components/ResetPasswordDialog.vue?31da","webpack:///src/views/users/components/ResetPasswordDialog.vue","webpack:///./src/views/users/components/ResetPasswordDialog.vue","webpack:///./src/views/users/components/ModerationDropdown.vue?93ed","webpack:///./src/views/users/components/ModerationDropdown.vue?676e","webpack:///src/views/users/components/ModerationDropdown.vue","webpack:///./src/views/users/components/ModerationDropdown.vue","webpack:///./src/views/users/components/UsersFilter.vue?52bf"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ModerationDropdown_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","global","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","Object","freeSelf","self","root","Function","objectToString","prototype","toString","nativeMax","Math","max","nativeMin","min","now","Date","isObject","value","type","toNumber","isObjectLike","call","isSymbol","other","valueOf","replace","isBinary","test","slice","module","exports","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","cancel","clearTimeout","flush","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_NewAccountDialog_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","components_UsersFiltervue_type_script_lang_js_","data","computed","isDesktop","$store","state","app","device","created","currentFilters","$data","reduce","acc","filter","objectSpread_default","defineProperty_default","dispatch","methods","removeOppositeFilters","filtersQuantity","keys","users","filters","length","indexOfLocal","indexOf","indexOfExternal","indexOfActive","indexOfDeactivated","indexOfPending","push","toggleFilters","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","clearable","placeholder","$t","multiple","on","change","model","callback","$$v","expression","label","_v","_s","__file","UsersFilter","components_NewAccountDialogvue_type_script_lang_js_","name","props","dialogFormVisible","Boolean","default","newUserForm","nickname","email","password","rules","validator","validateUsername","trigger","validateEmail","validatePassword","isVisible","get","$props","set","closeDialogWindow","getLabelWidth","$emit","resetForm","_this","$nextTick","$refs","resetFields","submitForm","formName","_this2","validate","valid","$message","message","rule","Error","validEmail","validNickname","NewAccountDialog_component","visible","show-close","title","custom-class","update:visible","$event","open","ref","label-width","status-icon","prop","autofocus","$set","autocomplete","slot","click","NewAccountDialog","views_usersvue_type_script_lang_js_","components","ModerationDropdown","MultipleUsersMenu","RebootButton","ResetPasswordDialog","truncate","text","suffix","substring","search","selectedUsers","createAccountDialogOpen","resetPasswordDialogOpen","loading","normalizedUsersCount","numeral_default","totalUsersCount","format","pageSize","currentPage","isMobile","fetchedUsers","usersCount","pendingView","width","handleDebounceSearchInput","lodash_debounce_default","query","page","mounted","destroyed","clearSelection","usersTable","closeResetPasswordDialog","createNewAccount","_createNewAccount","asyncToGenerator_default","regenerator_default","a","mark","_callee","accountData","wrap","_context","prev","next","stop","_x","getFirstLetter","str","charAt","toUpperCase","handlePageChange","searchQuery","handleRowClick","row","id","$router","params","handleSelectionChange","openResetPasswordDialog","propertyExists","account","property","regReason","reason","showDeactivatedButton","user","users_component","prefix-icon","input","selected-users","apply-action","dialog-form-visible","closeWindow","directives","rawName","staticStyle","row-key","row-click","selection-change","reserve-selection","align","_e","min-width","scopedSlots","_u","key","fn","scope","size","local","deactivated","approval_pending","content","effect","roles","registration_reason","popper-class","_f","fixed","open-reset-token-dialog","disabled","reset-password-dialog-open","close-reset-token-dialog","total","current-page","page-size","hide-on-single-page","layout","current-change","__webpack_exports__","components_ResetPasswordDialogvue_type_script_lang_js_","dialogOpen","passwordResetLink","passwordResetToken","link","token","close","href","target","components_ModerationDropdownvue_type_script_lang_js_","String","statusId","actorType","actor_type","_userId","_statusId","disableMfa","getPasswordResetToken","handleConfirmationResend","handleDeletion","$confirm","confirmButtonText","cancelButtonText","then","catch","handleAccountApproval","handleAccountRejection","handleEmailConfirmation","requirePasswordReset","nodeInfo","metadata","mailerEnabled","$alert","showAdminAction","_ref","toggleActivation","toggleTag","tag","tags","includes","toggleUserRight","right","hide-on-click","placement","nativeOn","stopPropagation","divided","admin","moderator","confirmation_pending","class","active-tag","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_UsersFilter_vue_vue_type_style_index_0_id_377d5068_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__"],"mappings":"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","file":"static/js/chunk-0171.9e927b8a.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"users-container\"},[_c('div',{staticClass:\"users-header-container\"},[_c('h1',[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.users'))+\"\\n \"),_c('span',{staticClass:\"user-count\"},[_vm._v(\"(\"+_vm._s(_vm.normalizedUsersCount)+\")\")])]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"filter-container\"},[_c('users-filter'),_vm._v(\" \"),_c('el-input',{staticClass:\"search\",attrs:{\"placeholder\":_vm.$t('users.search'),\"prefix-icon\":\"el-icon-search\"},on:{\"input\":_vm.handleDebounceSearchInput},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"actions-container\"},[_c('el-button',{staticClass:\"actions-button\",on:{\"click\":function($event){_vm.createAccountDialogOpen = true}}},[_c('span',{staticClass:\"create-account\"},[_c('i',{staticClass:\"el-icon-plus\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.createAccount'))+\"\\n \")])]),_vm._v(\" \"),_c('multiple-users-menu',{attrs:{\"selected-users\":_vm.selectedUsers},on:{\"apply-action\":_vm.clearSelection}})],1),_vm._v(\" \"),_c('new-account-dialog',{attrs:{\"dialog-form-visible\":_vm.createAccountDialogOpen},on:{\"createNewAccount\":_vm.createNewAccount,\"closeWindow\":function($event){_vm.createAccountDialogOpen = false}}}),_vm._v(\" \"),_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],ref:\"usersTable\",staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.users,\"row-key\":\"id\"},on:{\"row-click\":function($event){return _vm.handleRowClick($event)},\"selection-change\":_vm.handleSelectionChange}},[(_vm.isDesktop)?_c('el-table-column',{attrs:{\"type\":\"selection\",\"reserve-selection\":\"\",\"width\":\"44\",\"align\":\"center\"}}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"min-width\":_vm.width,\"label\":_vm.$t('users.id'),\"prop\":\"id\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('users.name'),\"prop\":\"nickname\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.nickname)+\"\\n \"),(_vm.isDesktop)?_c('el-tag',{attrs:{\"type\":\"info\",\"size\":\"mini\"}},[_c('span',[_vm._v(_vm._s(scope.row.local ? _vm.$t('users.local') : _vm.$t('users.external')))])]):_vm._e()]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"min-width\":_vm.width,\"label\":_vm.$t('users.status')},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(!scope.row.deactivated & !scope.row.approval_pending)?_c('el-tag',{attrs:{\"type\":\"success\"}},[(_vm.isDesktop)?_c('span',[_vm._v(_vm._s(_vm.$t('users.active')))]):_c('i',{staticClass:\"el-icon-circle-check\"})]):_vm._e(),_vm._v(\" \"),(scope.row.deactivated & !scope.row.approval_pending)?_c('el-tag',{attrs:{\"type\":\"danger\"}},[(_vm.isDesktop)?_c('span',[_vm._v(_vm._s(_vm.$t('users.deactivated')))]):_c('i',{staticClass:\"el-icon-circle-close\"})]):_vm._e(),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"content\":_vm.$t('users.unapprovedAccount'),\"effect\":\"dark\"}},[(scope.row.approval_pending)?_c('el-tag',{attrs:{\"type\":\"info\"}},[(_vm.isDesktop)?_c('span',[_vm._v(_vm._s(_vm.$t('users.unapproved')))]):_c('i',{staticClass:\"el-icon-warning-outline\"})]):_vm._e()],1),_vm._v(\" \"),(scope.row.roles.admin)?_c('el-tag',[_c('span',[_vm._v(_vm._s(_vm.isDesktop ? _vm.$t('users.admin') : _vm.getFirstLetter(_vm.$t('users.admin'))))])]):_vm._e(),_vm._v(\" \"),(scope.row.roles.moderator)?_c('el-tag',[_c('span',[_vm._v(_vm._s(_vm.isDesktop ? _vm.$t('users.moderator') : _vm.getFirstLetter(_vm.$t('users.moderator'))))])]):_vm._e(),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"content\":_vm.$t('users.unconfirmedEmail'),\"effect\":\"dark\"}},[(scope.row.confirmation_pending)?_c('el-tag',{attrs:{\"type\":\"info\"}},[_vm._v(\"\\n \"+_vm._s(_vm.isDesktop ? _vm.$t('users.unconfirmed') : _vm.getFirstLetter(_vm.$t('users.unconfirmed')))+\"\\n \")]):_vm._e()],1)]}}])}),_vm._v(\" \"),(_vm.pendingView && _vm.isDesktop)?_c('el-table-column',{attrs:{\"label\":_vm.$t('users.registrationReason')},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(_vm.regReason(scope.row.registration_reason))?_c('el-tooltip',{attrs:{\"content\":scope.row.registration_reason,\"popper-class\":\"reason-tooltip\",\"effect\":\"dark\"}},[_c('span',[_vm._v(\"\\n \\\"\"+_vm._s(_vm._f(\"truncate\")(scope.row.registration_reason,100, '...'))+\"\\\"\\n \")])]):_vm._e()]}}],null,false,975858353)}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('users.actions'),\"fixed\":\"right\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(_vm.propertyExists(scope.row, 'nickname'))?_c('moderation-dropdown',{attrs:{\"user\":scope.row,\"page\":'users'},on:{\"open-reset-token-dialog\":_vm.openResetPasswordDialog}}):_c('el-button',{attrs:{\"type\":\"text\",\"disabled\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderation'))+\"\\n \"),(_vm.isDesktop)?_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"}):_vm._e()])]}}])})],1),_vm._v(\" \"),_c('reset-password-dialog',{attrs:{\"reset-password-dialog-open\":_vm.resetPasswordDialogOpen},on:{\"close-reset-token-dialog\":_vm.closeResetPasswordDialog}}),_vm._v(\" \"),(!_vm.loading)?_c('div',{staticClass:\"pagination\"},[_c('el-pagination',{attrs:{\"total\":_vm.usersCount,\"current-page\":_vm.currentPage,\"page-size\":_vm.pageSize,\"hide-on-single-page\":\"\",\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.handlePageChange}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./UsersFilter.vue?vue&type=template&id=377d5068&scoped=true&\"\nimport script from \"./UsersFilter.vue?vue&type=script&lang=js&\"\nexport * from \"./UsersFilter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UsersFilter.vue?vue&type=style&index=0&id=377d5068&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"377d5068\",\n null\n \n)\n\ncomponent.options.__file = \"UsersFilter.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-select',{staticClass:\"select-field\",attrs:{\"clearable\":_vm.isDesktop,\"placeholder\":_vm.$t('usersFilter.inputPlaceholder'),\"multiple\":\"\"},on:{\"change\":_vm.toggleFilters},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},[_c('el-option-group',{attrs:{\"label\":_vm.$t('usersFilter.byAccountType')}},[_c('el-option',{attrs:{\"value\":\"local\",\"label\":\"Local\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.local')))]),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"external\",\"label\":\"External\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.external')))])],1),_vm._v(\" \"),_c('el-option-group',{attrs:{\"label\":_vm.$t('usersFilter.byStatus')}},[_c('el-option',{attrs:{\"value\":\"active\",\"label\":\"Active\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.active')))]),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"need_approval\",\"label\":\"Need Approval\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.pending')))]),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"deactivated\",\"label\":\"Deactivated\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.deactivated')))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./NewAccountDialog.vue?vue&type=template&id=c89e4c22&\"\nimport script from \"./NewAccountDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./NewAccountDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NewAccountDialog.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"NewAccountDialog.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"visible\":_vm.isVisible,\"show-close\":false,\"title\":_vm.$t('users.createAccount'),\"custom-class\":\"create-user-dialog\"},on:{\"update:visible\":function($event){_vm.isVisible=$event},\"open\":_vm.resetForm}},[_c('el-form',{ref:\"newUserForm\",attrs:{\"model\":_vm.newUserForm,\"rules\":_vm.rules,\"label-width\":_vm.getLabelWidth,\"status-icon\":\"\"}},[_c('el-form-item',{staticClass:\"create-account-form-item\",attrs:{\"label\":_vm.$t('users.username'),\"prop\":\"nickname\"}},[_c('el-input',{attrs:{\"name\":\"nickname\",\"autofocus\":\"\"},model:{value:(_vm.newUserForm.nickname),callback:function ($$v) {_vm.$set(_vm.newUserForm, \"nickname\", $$v)},expression:\"newUserForm.nickname\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticClass:\"create-account-form-item\",attrs:{\"label\":_vm.$t('users.email'),\"prop\":\"email\"}},[_c('el-input',{attrs:{\"name\":\"email\",\"type\":\"email\"},model:{value:(_vm.newUserForm.email),callback:function ($$v) {_vm.$set(_vm.newUserForm, \"email\", $$v)},expression:\"newUserForm.email\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticClass:\"create-account-form-item-without-margin\",attrs:{\"label\":_vm.$t('users.password'),\"prop\":\"password\"}},[_c('el-input',{attrs:{\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"off\"},model:{value:(_vm.newUserForm.password),callback:function ($$v) {_vm.$set(_vm.newUserForm, \"password\", $$v)},expression:\"newUserForm.password\"}})],1)],1),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":_vm.closeDialogWindow}},[_vm._v(_vm._s(_vm.$t('users.cancel')))]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.submitForm('newUserForm')}}},[_vm._v(_vm._s(_vm.$t('users.create')))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=7bdc8aed&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"visible\":_vm.dialogOpen,\"title\":_vm.$t('users.passwordResetTokenCreated'),\"custom-class\":\"password-reset-token-dialog\"},on:{\"close\":_vm.closeResetPasswordDialog}},[_c('div',[_c('p',{staticClass:\"password-reset-token\"},[_vm._v(_vm._s(_vm.$t('users.passwordResetTokenGenerated'))+\" \"+_vm._s(_vm.passwordResetToken))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('users.linkToResetPassword'))+\"\\n \"),_c('a',{staticClass:\"reset-password-link\",attrs:{\"href\":_vm.passwordResetLink,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.passwordResetLink))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./ResetPasswordDialog.vue?vue&type=template&id=e7d3eed4&\"\nimport script from \"./ResetPasswordDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPasswordDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ResetPasswordDialog.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"hide-on-click\":false,\"size\":\"small\",\"trigger\":\"click\",\"placement\":\"top-start\"},nativeOn:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',[(_vm.page === 'users')?_c('el-button',{staticClass:\"el-dropdown-link\",attrs:{\"type\":\"text\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderation'))+\"\\n \"),(_vm.isDesktop)?_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.page === 'userPage' || _vm.page === 'statusPage')?_c('el-button',{staticClass:\"moderate-user-button\"},[_c('span',{staticClass:\"moderate-user-button-container\"},[_c('span',[_c('i',{staticClass:\"el-icon-edit\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderateUser'))+\"\\n \")]),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})])]):_vm._e()],1),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{staticClass:\"actor-type-dropdown\"},[_c('el-select',{staticClass:\"actor-type-select\",attrs:{\"placeholder\":_vm.$t('userProfile.actorType')},model:{value:(_vm.actorType),callback:function ($$v) {_vm.actorType=$$v},expression:\"actorType\"}},[_c('el-option',{attrs:{\"label\":_vm.$t('users.service'),\"value\":\"Service\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":_vm.$t('users.person'),\"value\":\"Person\"}})],1)],1),_vm._v(\" \"),(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.admin ? _vm.$t('users.revokeAdmin') : _vm.$t('users.grantAdmin'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.moderator ? _vm.$t('users.revokeModerator') : _vm.$t('users.grantModerator'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id) && _vm.page !== 'statusPage')?_c('el-dropdown-item',{attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleActivation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.deactivated ? _vm.$t('users.activateAccount') : _vm.$t('users.deactivateAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id) && _vm.page !== 'statusPage')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeletion(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.approval_pending)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleAccountApproval(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.approveAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.approval_pending)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleAccountRejection(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.rejectAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleEmailConfirmation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.confirmAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleConfirmationResend(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.resendConfirmation'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:media-force-nsfw') },attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:media-force-nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceNsfw'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:media-force-nsfw'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:media-strip') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:media-strip')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.stripMedia'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:media-strip'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:force-unlisted') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:force-unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceUnlisted'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:force-unlisted'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:sandbox') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.sandbox'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:sandbox'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:disable-remote-subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:disable-remote-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableRemoteSubscription'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:disable-remote-subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:disable-any-subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:disable-any-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableAnySubscription'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:disable-any-subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.getPasswordResetToken(_vm.user.nickname)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.getPasswordResetToken'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.requirePasswordReset(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.requirePasswordReset'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.disableMfa(_vm.user.nickname)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableMfa'))+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ModerationDropdown.vue?vue&type=template&id=439555de&\"\nimport script from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ModerationDropdown.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=style&index=0&id=377d5068&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=style&index=0&id=377d5068&rel=stylesheet%2Fscss&lang=scss&scoped=true&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-03c5.1c694c49.js b/priv/static/adminfe/static/js/chunk-03c5.1c694c49.js new file mode 100644 index 000000000..b4601abae --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-03c5.1c694c49.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-03c5"],{"9/5/":function(e,t,n){(function(t){var n="Expected a function",a=NaN,i="[object Symbol]",r=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,c=/^0o[0-7]+$/i,l=parseInt,u="object"==typeof t&&t&&t.Object===Object&&t,d="object"==typeof self&&self&&self.Object===Object&&self,h=u||d||Function("return this")(),p=Object.prototype.toString,f=Math.max,v=Math.min,m=function(){return h.Date.now()};function b(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function y(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&p.call(e)==i}(e))return a;if(b(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=b(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(r,"");var n=s.test(e);return n||c.test(e)?l(e.slice(2),n?2:8):o.test(e)?a:+e}e.exports=function(e,t,a){var i,r,o,s,c,l,u=0,d=!1,h=!1,p=!0;if("function"!=typeof e)throw new TypeError(n);function x(t){var n=i,a=r;return i=r=void 0,u=t,s=e.apply(a,n)}function g(e){var n=e-l;return void 0===l||n>=t||n<0||h&&e-u>=o}function C(){var e=m();if(g(e))return $(e);c=setTimeout(C,function(e){var n=t-(e-l);return h?v(n,o-(e-u)):n}(e))}function $(e){return c=void 0,p&&i?x(e):(i=r=void 0,s)}function _(){var e=m(),n=g(e);if(i=arguments,r=this,l=e,n){if(void 0===c)return function(e){return u=e,c=setTimeout(C,t),d?x(e):s}(l);if(h)return c=setTimeout(C,t),x(l)}return void 0===c&&(c=setTimeout(C,t)),s}return t=y(t)||0,b(a)&&(d=!!a.leading,o=(h="maxWait"in a)?f(y(a.maxWait)||0,t):o,p="trailing"in a?!!a.trailing:p),_.cancel=function(){void 0!==c&&clearTimeout(c),u=0,i=l=r=c=void 0},_.flush=function(){return void 0===c?s:$(m())},_}}).call(this,n("yLpj"))},ZlJG:function(e,t,n){"use strict";var a=n("c79v");n.n(a).a},c79v:function(e,t,n){},mAEd:function(e,t,n){"use strict";n.r(t);var a=n("9/5/"),i=n.n(a),r={name:"MediaProxyCache",components:{RebootButton:n("rIUS").a},data:function(){return{urls:"",ban:!1,search:"",selectedUrls:[]}},computed:{bannedUrls:function(){return this.$store.state.mediaProxyCache.bannedUrls},currentPage:function(){return this.$store.state.mediaProxyCache.currentPage},isDesktop:function(){return"desktop"===this.$store.state.app.device},loading:function(){return this.$store.state.mediaProxyCache.loading},mediaProxyEnabled:function(){return this.$store.state.mediaProxyCache.mediaProxyEnabled},pageSize:function(){return this.$store.state.mediaProxyCache.pageSize},removeSelectedDisabled:function(){return 0===this.selectedUrls.length},urlsCount:function(){return this.$store.state.mediaProxyCache.totalUrlsCount}},created:function(){var e=this;this.handleDebounceSearchInput=i()(function(t){e.$store.dispatch("SearchUrls",{query:t,page:1})},500)},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchMediaProxySetting"),this.$store.dispatch("ListBannedUrls",{page:1})},methods:{enableMediaProxy:function(){var e=this;this.$confirm(this.$t("mediaProxyCache.confirmEnablingMediaProxy"),{confirmButtonText:"Yes",cancelButtonText:"Cancel",type:"warning"}).then(function(){e.$message({type:"success",message:e.$t("mediaProxyCache.enableMediaProxySuccessMessage")}),e.$store.dispatch("EnableMediaProxy")}).catch(function(){e.$message({type:"info",message:"Canceled"})})},evictURL:function(){var e=this.splitUrls(this.urls);this.$store.dispatch("PurgeUrls",{urls:e,ban:this.ban}),this.urls=""},handlePageChange:function(e){this.$store.dispatch("ListBannedUrls",{page:e})},handleSelectionChange:function(e){this.$data.selectedUrls=e},removeSelected:function(){var e=this.selectedUrls.map(function(e){return e.url});this.$store.dispatch("RemoveBannedUrls",e),this.selectedUrls=[]},removeUrl:function(e){this.$store.dispatch("RemoveBannedUrls",[e])},splitUrls:function(e){return e.split(",").map(function(e){return e.trim()}).filter(function(e){return e.length>0})}}},o=(n("ZlJG"),n("KHd+")),s=Object(o.a)(r,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"media-proxy-cache-container"},[n("div",{staticClass:"media-proxy-cache-header-container"},[n("h1",[e._v(e._s(e.$t("mediaProxyCache.mediaProxyCache")))]),e._v(" "),n("reboot-button")],1),e._v(" "),e.mediaProxyEnabled?n("div",[n("p",{staticClass:"media-proxy-cache-header"},[e._v(e._s(e.$t("mediaProxyCache.evictObjectsHeader")))]),e._v(" "),n("div",{staticClass:"url-input-container"},[n("el-input",{staticClass:"url-input",attrs:{placeholder:e.$t("mediaProxyCache.url"),type:"textarea",autosize:"",clearable:""},model:{value:e.urls,callback:function(t){e.urls=t},expression:"urls"}}),e._v(" "),n("el-checkbox",{model:{value:e.ban,callback:function(t){e.ban=t},expression:"ban"}},[e._v(e._s(e.$t("mediaProxyCache.ban")))]),e._v(" "),n("el-button",{staticClass:"evict-button",on:{click:e.evictURL}},[e._v(e._s(e.$t("mediaProxyCache.evict")))])],1),e._v(" "),n("span",{staticClass:"expl url-input-expl"},[e._v(e._s(e.$t("mediaProxyCache.multipleInput")))]),e._v(" "),n("p",{staticClass:"media-proxy-cache-header"},[e._v(e._s(e.$t("mediaProxyCache.listBannedUrlsHeader")))]),e._v(" "),n("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],staticClass:"banned-urls-table",attrs:{data:e.bannedUrls},on:{"selection-change":e.handleSelectionChange}},[e._v(">\n "),n("el-table-column",{attrs:{type:"selection",align:"center",width:"55"}}),e._v(" "),n("el-table-column",{attrs:{"min-width":e.isDesktop?320:120,prop:"url"},scopedSlots:e._u([{key:"header",fn:function(t){return[n("el-input",{attrs:{placeholder:e.$t("users.search"),size:"mini","prefix-icon":"el-icon-search"},on:{input:e.handleDebounceSearchInput},model:{value:e.search,callback:function(t){e.search=t},expression:"search"}})]}}],null,!1,2430623903)}),e._v(" "),n("el-table-column",{scopedSlots:e._u([{key:"default",fn:function(t){return[n("el-button",{staticClass:"remove-url-button",attrs:{size:"mini"},on:{click:function(n){return e.removeUrl(t.row.url)}}},[e._v(e._s(e.$t("mediaProxyCache.remove")))])]}}],null,!1,3837797105)},[n("template",{slot:"header"},[n("el-button",{staticClass:"remove-url-button",attrs:{disabled:e.removeSelectedDisabled,size:"mini"},on:{click:function(t){return e.removeSelected()}}},[e._v(e._s(e.$t("mediaProxyCache.removeSelected")))])],1)],2)],1),e._v(" "),e.loading?e._e():n("div",{staticClass:"pagination"},[n("el-pagination",{attrs:{total:e.urlsCount,"current-page":e.currentPage,"page-size":e.pageSize,"hide-on-single-page":"",layout:"prev, pager, next"},on:{"current-change":e.handlePageChange}})],1)],1):n("div",{staticClass:"enable-mediaproxy-container"},[n("el-button",{attrs:{type:"text"},on:{click:e.enableMediaProxy}},[e._v(e._s(e.$t("mediaProxyCache.enable")))]),e._v("\n "+e._s(e.$t("mediaProxyCache.invalidationAndMediaProxy"))+"\n ")],1)])},[],!1,null,"4ee576de",null);s.options.__file="index.vue";t.default=s.exports}}]); +//# sourceMappingURL=chunk-03c5.1c694c49.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-03c5.1c694c49.js.map b/priv/static/adminfe/static/js/chunk-03c5.1c694c49.js.map new file mode 100644 index 000000000..193c65bb1 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-03c5.1c694c49.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/lodash.debounce/index.js","webpack:///./src/views/mediaProxyCache/index.vue?3e91","webpack:///./src/views/mediaProxyCache/index.vue?1a22","webpack:///./src/views/mediaProxyCache/index.vue?888e","webpack:///src/views/mediaProxyCache/index.vue","webpack:///./src/views/mediaProxyCache/index.vue"],"names":["global","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","Object","freeSelf","self","root","Function","objectToString","prototype","toString","nativeMax","Math","max","nativeMin","min","now","Date","isObject","value","type","toNumber","isObjectLike","call","isSymbol","other","valueOf","replace","isBinary","test","slice","module","exports","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","cancel","clearTimeout","flush","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_4ee576de_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","views_mediaProxyCachevue_type_script_lang_js_","name","components","RebootButton","data","urls","ban","search","selectedUrls","computed","bannedUrls","$store","state","mediaProxyCache","currentPage","isDesktop","app","device","loading","mediaProxyEnabled","pageSize","removeSelectedDisabled","length","urlsCount","totalUrlsCount","created","_this","handleDebounceSearchInput","lodash_debounce_default","query","dispatch","page","mounted","methods","enableMediaProxy","_this2","$confirm","$t","confirmButtonText","cancelButtonText","then","$message","message","catch","evictURL","splitUrls","handlePageChange","handleSelectionChange","$data","removeSelected","map","el","url","removeUrl","split","trim","filter","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","_v","_s","attrs","placeholder","autosize","clearable","model","callback","$$v","expression","on","click","directives","rawName","selection-change","align","width","min-width","prop","scopedSlots","_u","key","fn","scope","size","prefix-icon","input","$event","row","slot","disabled","_e","total","current-page","page-size","hide-on-single-page","layout","current-change","__file","__webpack_exports__"],"mappings":"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","file":"static/js/chunk-03c5.1c694c49.js","sourcesContent":["/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=4ee576de&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=4ee576de&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"media-proxy-cache-container\"},[_c('div',{staticClass:\"media-proxy-cache-header-container\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('mediaProxyCache.mediaProxyCache')))]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),(_vm.mediaProxyEnabled)?_c('div',[_c('p',{staticClass:\"media-proxy-cache-header\"},[_vm._v(_vm._s(_vm.$t('mediaProxyCache.evictObjectsHeader')))]),_vm._v(\" \"),_c('div',{staticClass:\"url-input-container\"},[_c('el-input',{staticClass:\"url-input\",attrs:{\"placeholder\":_vm.$t('mediaProxyCache.url'),\"type\":\"textarea\",\"autosize\":\"\",\"clearable\":\"\"},model:{value:(_vm.urls),callback:function ($$v) {_vm.urls=$$v},expression:\"urls\"}}),_vm._v(\" \"),_c('el-checkbox',{model:{value:(_vm.ban),callback:function ($$v) {_vm.ban=$$v},expression:\"ban\"}},[_vm._v(_vm._s(_vm.$t('mediaProxyCache.ban')))]),_vm._v(\" \"),_c('el-button',{staticClass:\"evict-button\",on:{\"click\":_vm.evictURL}},[_vm._v(_vm._s(_vm.$t('mediaProxyCache.evict')))])],1),_vm._v(\" \"),_c('span',{staticClass:\"expl url-input-expl\"},[_vm._v(_vm._s(_vm.$t('mediaProxyCache.multipleInput')))]),_vm._v(\" \"),_c('p',{staticClass:\"media-proxy-cache-header\"},[_vm._v(_vm._s(_vm.$t('mediaProxyCache.listBannedUrlsHeader')))]),_vm._v(\" \"),_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"banned-urls-table\",attrs:{\"data\":_vm.bannedUrls},on:{\"selection-change\":_vm.handleSelectionChange}},[_vm._v(\">\\n \"),_c('el-table-column',{attrs:{\"type\":\"selection\",\"align\":\"center\",\"width\":\"55\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"min-width\":_vm.isDesktop ? 320 : 120,\"prop\":\"url\"},scopedSlots:_vm._u([{key:\"header\",fn:function(scope){return [_c('el-input',{attrs:{\"placeholder\":_vm.$t('users.search'),\"size\":\"mini\",\"prefix-icon\":\"el-icon-search\"},on:{\"input\":_vm.handleDebounceSearchInput},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})]}}],null,false,2430623903)}),_vm._v(\" \"),_c('el-table-column',{scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{staticClass:\"remove-url-button\",attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.removeUrl(scope.row.url)}}},[_vm._v(_vm._s(_vm.$t('mediaProxyCache.remove')))])]}}],null,false,3837797105)},[_c('template',{slot:\"header\"},[_c('el-button',{staticClass:\"remove-url-button\",attrs:{\"disabled\":_vm.removeSelectedDisabled,\"size\":\"mini\"},on:{\"click\":function($event){return _vm.removeSelected()}}},[_vm._v(_vm._s(_vm.$t('mediaProxyCache.removeSelected')))])],1)],2)],1),_vm._v(\" \"),(!_vm.loading)?_c('div',{staticClass:\"pagination\"},[_c('el-pagination',{attrs:{\"total\":_vm.urlsCount,\"current-page\":_vm.currentPage,\"page-size\":_vm.pageSize,\"hide-on-single-page\":\"\",\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.handlePageChange}})],1):_vm._e()],1):_c('div',{staticClass:\"enable-mediaproxy-container\"},[_c('el-button',{attrs:{\"type\":\"text\"},on:{\"click\":_vm.enableMediaProxy}},[_vm._v(_vm._s(_vm.$t('mediaProxyCache.enable')))]),_vm._v(\"\\n \"+_vm._s(_vm.$t('mediaProxyCache.invalidationAndMediaProxy'))+\"\\n \")],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=4ee576de&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=4ee576de&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4ee576de\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-16d0.6ce78978.js b/priv/static/adminfe/static/js/chunk-16d0.6ce78978.js deleted file mode 100644 index 497bbcb88..000000000 --- a/priv/static/adminfe/static/js/chunk-16d0.6ce78978.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-16d0"],{aSQl:function(e,n,t){"use strict";t.d(n,"a",function(){return p});var r=t("o0o1"),a=t.n(r),o=t("yXPU"),s=t.n(o),u=t("oAJy"),c=t.n(u),i=t("LvDl"),l=t.n(i),p=function(){var e=s()(a.a.mark(function e(n){var t,r;return a.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.a.getItem("vuex-lz");case 2:if(t=e.sent,void 0!==(r=l.a.get(t,"oauth.userToken"))){e.next=6;break}throw new Error("PleromaFE token not found");case 6:return e.next=8,n.dispatch("LoginByPleromaFE",{token:r});case 8:case"end":return e.stop()}},e)}));return function(n){return e.apply(this,arguments)}}()},iRgq:function(e,n,t){"use strict";t.r(n);var r=t("o0o1"),a=t.n(r),o=t("yXPU"),s=t.n(o),u=t("XJYT"),c=t("aSQl"),i=t("mSNy"),l={name:"LoginPleroma",mounted:function(){var e=s()(a.a.mark(function e(){var n;return a.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=u.Loading.service({fullscreen:!0}),e.prev=1,e.next=4,Object(c.a)(this.$store);case 4:e.next=9;break;case 6:e.prev=6,e.t0=e.catch(1),this.$message.error(i.a.t("login.pleromaFELoginFailed"));case 9:n.close(),this.$router.push({path:"/users/index"}),this.$message.success(i.a.t("login.pleromaFELoginSucceed"));case 12:case"end":return e.stop()}},e,this,[[1,6]])}));return function(){return e.apply(this,arguments)}}()},p=t("KHd+"),f=Object(p.a)(l,function(){var e=this.$createElement;return(this._self._c||e)("div")},[],!1,null,null,null);f.options.__file="pleroma.vue";n.default=f.exports}}]); -//# sourceMappingURL=chunk-16d0.6ce78978.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-16d0.6ce78978.js.map b/priv/static/adminfe/static/js/chunk-16d0.6ce78978.js.map deleted file mode 100644 index 17c3378e3..000000000 --- a/priv/static/adminfe/static/js/chunk-16d0.6ce78978.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/services/pleromaAuth.js","webpack:///./src/views/login/pleroma.vue?ed01","webpack:///./src/views/login/pleroma.vue?5ee7","webpack:///src/views/login/pleroma.vue","webpack:///./src/views/login/pleroma.vue"],"names":["authenticateWithPleromaFE","_ref","_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default","_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","a","mark","_callee","store","pleromaFEState","token","wrap","_context","prev","next","localforage","getItem","sent","undefined","_","get","Error","dispatch","stop","_x","apply","this","arguments","login_pleromavue_type_script_lang_js_","name","mounted","_mounted","asyncToGenerator_default","regenerator_default","loadingInstance","element_ui_common","service","fullscreen","Object","pleromaAuth","$store","t0","$message","error","lang","t","close","$router","push","path","success","component","componentNormalizer","_h","$createElement","_self","_c","options","__file","__webpack_exports__"],"mappings":"8NAKaA,EAAyB,eAAAC,EAAAC,IAAAC,EAAAC,EAAAC,KAAG,SAAAC,EAAMC,GAAN,IAAAC,EAAAC,EAAA,OAAAN,EAAAC,EAAAM,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACVC,IAAYC,QAHjB,WAEe,UACjCP,EADiCG,EAAAK,UAIzBC,KAFRR,EAAQS,IAAEC,IAAIX,EAAgB,oBAFG,CAAAG,EAAAE,KAAA,cAK/B,IAAIO,MAAM,6BALqB,cAAAT,EAAAE,KAAA,EAQjCN,EAAMc,SAAS,oBAAsBZ,UARJ,wBAAAE,EAAAW,SAAAhB,MAAH,gBAAAiB,GAAA,OAAAtB,EAAAuB,MAAAC,KAAAC,YAAA,6CCLtC,kFCA4MC,GCU5MC,KAAA,eACAC,QAFA,eAAAC,EAAAC,IAAAC,EAAA5B,EAAAC,KAAA,SAAAC,IAAA,IAAA2B,EAAA,OAAAD,EAAA5B,EAAAM,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAGAoB,EAAAC,EAAA,QAAAC,SAAAC,YAAA,IAHAzB,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAMAwB,OAAAC,EAAA,EAAAD,CAAAZ,KAAAc,QANA,OAAA5B,EAAAE,KAAA,eAAAF,EAAAC,KAAA,EAAAD,EAAA6B,GAAA7B,EAAA,SAQAc,KAAAgB,SAAAC,MAAAC,EAAA,EAAAC,EAAA,+BARA,OAWAX,EAAAY,QACApB,KAAAqB,QAAAC,MAAAC,KAAA,iBACAvB,KAAAgB,SAAAQ,QAAAN,EAAA,EAAAC,EAAA,gCAbA,yBAAAjC,EAAAW,SAAAhB,EAAAmB,OAAA,mCAAAK,EAAAN,MAAAC,KAAAC,YAAA,gBCFAwB,EAAgBb,OAAAc,EAAA,EAAAd,CACdV,EHRF,WAA0B,IAAayB,EAAb3B,KAAa4B,eAAkD,OAA/D5B,KAAuC6B,MAAAC,IAAAH,GAAwB,YGWzF,EACA,KACA,KACA,MAIAF,EAAAM,QAAAC,OAAA,cACeC,EAAA,QAAAR","file":"static/js/chunk-16d0.6ce78978.js","sourcesContent":["import localforage from 'localforage'\nimport _ from 'lodash'\n\nconst pleromaFEStateKey = 'vuex-lz'\n\nexport const authenticateWithPleromaFE = async(store) => {\n const pleromaFEState = await localforage.getItem(pleromaFEStateKey)\n const token = _.get(pleromaFEState, 'oauth.userToken')\n\n if (token === undefined) {\n throw new Error('PleromaFE token not found')\n }\n\n await store.dispatch('LoginByPleromaFE', { token })\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pleroma.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pleroma.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./pleroma.vue?vue&type=template&id=e44cae32&\"\nimport script from \"./pleroma.vue?vue&type=script&lang=js&\"\nexport * from \"./pleroma.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"pleroma.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-16d0.fef0ce65.js b/priv/static/adminfe/static/js/chunk-16d0.fef0ce65.js new file mode 100644 index 000000000..8bddbe967 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-16d0.fef0ce65.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-16d0"],{aSQl:function(e,n,r){"use strict";r.d(n,"a",function(){return p});var t=r("o0o1"),a=r.n(t),o=r("yXPU"),s=r.n(o),u=r("oAJy"),c=r.n(u),i=r("LvDl"),l=r.n(i),p=function(){var e=s()(a.a.mark(function e(n){var r,t;return a.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.a.getItem("vuex-lz");case 2:if(r=e.sent,void 0!==(t=l.a.get(r,"oauth.userToken"))){e.next=6;break}throw new Error("PleromaFE token not found");case 6:return e.next=8,n.dispatch("LoginByPleromaFE",{token:t});case 8:case"end":return e.stop()}},e)}));return function(n){return e.apply(this,arguments)}}()},iRgq:function(e,n,r){"use strict";r.r(n);var t=r("o0o1"),a=r.n(t),o=r("yXPU"),s=r.n(o),u=r("XJYT"),c=r("aSQl"),i=r("mSNy"),l={name:"LoginPleroma",mounted:function(){var e=this;return s()(a.a.mark(function n(){var r;return a.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return r=u.Loading.service({fullscreen:!0}),n.prev=1,n.next=4,Object(c.a)(e.$store);case 4:n.next=9;break;case 6:n.prev=6,n.t0=n.catch(1),e.$message.error(i.a.t("login.pleromaFELoginFailed"));case 9:r.close(),e.$router.push({path:"/users/index"}),e.$message.success(i.a.t("login.pleromaFELoginSucceed"));case 12:case"end":return n.stop()}},n,null,[[1,6]])}))()}},p=r("KHd+"),f=Object(p.a)(l,function(){var e=this.$createElement;return(this._self._c||e)("div")},[],!1,null,null,null);f.options.__file="pleroma.vue";n.default=f.exports}}]); +//# sourceMappingURL=chunk-16d0.fef0ce65.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-16d0.fef0ce65.js.map b/priv/static/adminfe/static/js/chunk-16d0.fef0ce65.js.map new file mode 100644 index 000000000..9617ae0d0 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-16d0.fef0ce65.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/services/pleromaAuth.js","webpack:///./src/views/login/pleroma.vue?ed01","webpack:///./src/views/login/pleroma.vue?5ee7","webpack:///src/views/login/pleroma.vue","webpack:///./src/views/login/pleroma.vue"],"names":["authenticateWithPleromaFE","_ref","_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default","_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","a","mark","_callee","store","pleromaFEState","token","wrap","_context","prev","next","localforage","getItem","sent","undefined","_","get","Error","dispatch","stop","_x","apply","this","arguments","login_pleromavue_type_script_lang_js_","name","mounted","_this","asyncToGenerator_default","regenerator_default","loadingInstance","element_ui_common","service","fullscreen","Object","pleromaAuth","$store","t0","$message","error","lang","t","close","$router","push","path","success","component","componentNormalizer","_h","$createElement","_self","_c","options","__file","__webpack_exports__"],"mappings":"8NAKaA,EAAyB,eAAAC,EAAAC,IAAAC,EAAAC,EAAAC,KAAG,SAAAC,EAAMC,GAAN,IAAAC,EAAAC,EAAA,OAAAN,EAAAC,EAAAM,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACVC,IAAYC,QAHjB,WAEe,UACjCP,EADiCG,EAAAK,UAIzBC,KAFRR,EAAQS,IAAEC,IAAIX,EAAgB,oBAFG,CAAAG,EAAAE,KAAA,cAK/B,IAAIO,MAAM,6BALqB,cAAAT,EAAAE,KAAA,EAQjCN,EAAMc,SAAS,oBAAsBZ,UARJ,wBAAAE,EAAAW,SAAAhB,MAAH,gBAAAiB,GAAA,OAAAtB,EAAAuB,MAAAC,KAAAC,YAAA,6CCLtC,kFCA4MC,GCU5MC,KAAA,eACAC,QAFA,WAEA,IAAAC,EAAAL,KAAA,OAAAM,IAAAC,EAAA5B,EAAAC,KAAA,SAAAC,IAAA,IAAA2B,EAAA,OAAAD,EAAA5B,EAAAM,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cACAoB,EAAAC,EAAA,QAAAC,SAAAC,YAAA,IADAzB,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAIAwB,OAAAC,EAAA,EAAAD,CAAAP,EAAAS,QAJA,OAAA5B,EAAAE,KAAA,eAAAF,EAAAC,KAAA,EAAAD,EAAA6B,GAAA7B,EAAA,SAMAmB,EAAAW,SAAAC,MAAAC,EAAA,EAAAC,EAAA,+BANA,OASAX,EAAAY,QACAf,EAAAgB,QAAAC,MAAAC,KAAA,iBACAlB,EAAAW,SAAAQ,QAAAN,EAAA,EAAAC,EAAA,gCAXA,yBAAAjC,EAAAW,SAAAhB,EAAA,gBAAAyB,iBCJAmB,EAAgBb,OAAAc,EAAA,EAAAd,CACdV,EHRF,WAA0B,IAAayB,EAAb3B,KAAa4B,eAAkD,OAA/D5B,KAAuC6B,MAAAC,IAAAH,GAAwB,YGWzF,EACA,KACA,KACA,MAIAF,EAAAM,QAAAC,OAAA,cACeC,EAAA,QAAAR","file":"static/js/chunk-16d0.fef0ce65.js","sourcesContent":["import localforage from 'localforage'\nimport _ from 'lodash'\n\nconst pleromaFEStateKey = 'vuex-lz'\n\nexport const authenticateWithPleromaFE = async(store) => {\n const pleromaFEState = await localforage.getItem(pleromaFEStateKey)\n const token = _.get(pleromaFEState, 'oauth.userToken')\n\n if (token === undefined) {\n throw new Error('PleromaFE token not found')\n }\n\n await store.dispatch('LoginByPleromaFE', { token })\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pleroma.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pleroma.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./pleroma.vue?vue&type=template&id=e44cae32&\"\nimport script from \"./pleroma.vue?vue&type=script&lang=js&\"\nexport * from \"./pleroma.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"pleroma.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-176e.5c19378d.js.map b/priv/static/adminfe/static/js/chunk-176e.5c19378d.js.map deleted file mode 100644 index fa116fb3b..000000000 --- a/priv/static/adminfe/static/js/chunk-176e.5c19378d.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/statuses/index.vue?ffa7","webpack:///./src/views/statuses/index.vue?1423","webpack:///src/views/statuses/index.vue","webpack:///./src/views/statuses/index.vue","webpack:///./src/views/statuses/index.vue?f25c","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$"],"names":["views_statusesvue_type_script_lang_js_","name","components","MultipleUsersMenu","RebootButton","Status","data","selectedUsers","computed","allLoaded","this","$store","state","status","statusesByInstance","buttonLoading","currentInstance","selectedInstance","user","authHost","instances","concat","toConsumableArray_default","peers","fetchedPeers","isDesktop","app","device","isMobile","isTablet","loadingPeers","loading","page","pageSize","get","set","instance","dispatch","showLocal","value","showPrivate","statuses","fetchedStatuses","statusVisibility","mounted","destroyed","clearSelection","methods","handleFilterChange","handleLoadMore","handleStatusSelection","undefined","find","selectedUser","id","normalizedCount","count","numeral_default","format","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","_e","staticClass","_v","_s","$t","attrs","plain","direct","private","public","unlisted","placeholder","no-data-text","filterable","clearable","on","change","model","callback","$$v","expression","_l","index","key","label","selected-users","apply-action","length","account","show-checkbox","fetch-statuses-by-instance","status-selection","icon","circle","click","options","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-SG","./en-SG.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-nz","./en-nz.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-tw","./zh-tw.js","webpackContext","req","webpackContextResolve","o","e","Error","code","keys","resolve","module","exports"],"mappings":"6GAAA,kFCA0MA,GC0E1MC,KAAA,WACAC,YACAC,oBAAA,EACAC,eAAA,EACAC,SAAA,GAEAC,KAPA,WAQA,OACAC,mBAGAC,UACAC,UADA,WAEA,OAAAC,KAAAC,OAAAC,MAAAC,OAAAC,mBAAAL,WAEAM,cAJA,WAKA,OAAAL,KAAAC,OAAAC,MAAAC,OAAAC,mBAAAC,eAEAC,gBAPA,WAQA,OAAAN,KAAAO,mBAAAP,KAAAC,OAAAC,MAAAM,KAAAC,UAEAC,UAVA,WAWA,OAAAV,KAAAC,OAAAC,MAAAM,KAAAC,UAAAE,OAAAC,IAAAZ,KAAAC,OAAAC,MAAAW,MAAAC,gBAEAC,UAbA,WAcA,kBAAAf,KAAAC,OAAAC,MAAAc,IAAAC,QAEAC,SAhBA,WAiBA,iBAAAlB,KAAAC,OAAAC,MAAAc,IAAAC,QAEAE,SAnBA,WAoBA,iBAAAnB,KAAAC,OAAAC,MAAAc,IAAAC,QAEAG,aAtBA,WAuBA,OAAApB,KAAAC,OAAAC,MAAAW,MAAAQ,SAEAC,KAzBA,WA0BA,OAAAtB,KAAAC,OAAAC,MAAAC,OAAAC,mBAAAkB,MAEAC,SA5BA,WA6BA,OAAAvB,KAAAC,OAAAC,MAAAC,OAAAC,mBAAAmB,UAEAhB,kBACAiB,IADA,WAEA,OAAAxB,KAAAC,OAAAC,MAAAC,OAAAC,mBAAAG,kBAEAkB,IAJA,SAIAC,GACA1B,KAAAC,OAAA0B,SAAA,qBAAAD,KAGAE,WACAJ,IADA,WAEA,OAAAxB,KAAAC,OAAAC,MAAAC,OAAAC,mBAAAwB,WAEAH,IAJA,SAIAI,GACA7B,KAAAC,OAAA0B,SAAA,4BAAAE,KAGAC,aACAN,IADA,WAEA,OAAAxB,KAAAC,OAAAC,MAAAC,OAAAC,mBAAA0B,aAEAL,IAJA,SAIAI,GACA7B,KAAAC,OAAA0B,SAAA,8BAAAE,KAGAE,SAvDA,WAwDA,OAAA/B,KAAAC,OAAAC,MAAAC,OAAA6B,iBAEAC,iBA1DA,WA2DA,OAAAjC,KAAAC,OAAAC,MAAAC,OAAA8B,mBAGAC,QA1EA,WA2EAlC,KAAAC,OAAA0B,SAAA,eACA3B,KAAAC,OAAA0B,SAAA,cACA3B,KAAAC,OAAA0B,SAAA,cACA3B,KAAAC,OAAA0B,SAAA,uBAEAQ,UAhFA,WAiFAnC,KAAAoC,iBACApC,KAAAC,OAAA0B,SAAA,eAEAU,SACAD,eADA,WAEApC,KAAAH,kBAEAyC,mBAJA,WAKAtC,KAAAC,OAAA0B,SAAA,sBACA3B,KAAAC,OAAA0B,SAAA,4BAEAY,eARA,WASAvC,KAAAC,OAAA0B,SAAA,mBAAA3B,KAAAsB,KAAA,GAEAtB,KAAAC,OAAA0B,SAAA,gCAEAa,sBAbA,SAaAhC,QACAiC,IAAAzC,KAAAH,cAAA6C,KAAA,SAAAC,GAAA,OAAAnC,EAAAoC,KAAAD,EAAAC,OAGA5C,KAAAH,iBAAAc,OAAAC,IAAAZ,KAAAH,gBAAAW,MAEAqC,gBAnBA,SAmBAC,GACA,OAAAC,IAAAD,GAAAE,OAAA,iCCzKAC,EAAgBC,OAAAC,EAAA,EAAAD,CACd5D,EHTF,WAA0B,IAAA8D,EAAApD,KAAaqD,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAD,EAAAhC,aAA6gGgC,EAAAK,KAA7gGF,EAAA,OAAqCG,YAAA,uBAAiCH,EAAA,OAAYG,YAAA,oBAA8BH,EAAA,MAAAH,EAAAO,GAAA,WAAAP,EAAAQ,GAAAR,EAAAS,GAAA,kCAAAT,EAAAO,GAAA,KAAAJ,EAAA,qBAAAH,EAAAO,GAAA,KAAAJ,EAAA,OAAuIG,YAAA,8BAAwCH,EAAA,mBAAAA,EAAA,aAAwCG,YAAA,gBAAAI,OAAmCC,MAAA,MAAYX,EAAAO,GAAA,aAAAP,EAAAQ,GAAAR,EAAAS,GAAA,yBAAAT,EAAAQ,GAAAR,EAAAP,gBAAAO,EAAAnB,iBAAA+B,SAAA,cAAAZ,EAAAO,GAAA,KAAAJ,EAAA,aAAgKG,YAAA,iBAAAI,OAAoCC,MAAA,MAAYX,EAAAO,GAAA,aAAAP,EAAAQ,GAAAR,EAAAS,GAAA,0BAAAT,EAAAQ,GAAAR,EAAAP,gBAAAO,EAAAnB,iBAAAgC,UAAA,cAAAb,EAAAO,GAAA,KAAAJ,EAAA,aAAkKG,YAAA,gBAAAI,OAAmCC,MAAA,MAAYX,EAAAO,GAAA,aAAAP,EAAAQ,GAAAR,EAAAS,GAAA,yBAAAT,EAAAQ,GAAAR,EAAAP,gBAAAO,EAAAnB,iBAAAiC,SAAA,cAAAd,EAAAO,GAAA,KAAAJ,EAAA,aAAgKG,YAAA,kBAAAI,OAAqCC,MAAA,MAAYX,EAAAO,GAAA,aAAAP,EAAAQ,GAAAR,EAAAS,GAAA,2BAAAT,EAAAQ,GAAAR,EAAAP,gBAAAO,EAAAnB,iBAAAkC,WAAA,sBAAAf,EAAAO,GAAA,KAAAJ,EAAA,OAAsKG,YAAA,qBAA+BH,EAAA,aAAkBG,YAAA,kBAAAI,OAAqCM,YAAAhB,EAAAS,GAAA,2BAAAQ,eAAAjB,EAAAS,GAAA,wBAAAS,WAAA,GAAAC,UAAA,IAA6HC,IAAKC,OAAArB,EAAAd,oBAAgCoC,OAAQ7C,MAAAuB,EAAA,iBAAAuB,SAAA,SAAAC,GAAsDxB,EAAA7C,iBAAAqE,GAAyBC,WAAA,qBAAgCzB,EAAA0B,GAAA1B,EAAA,mBAAA1B,EAAAqD,GAAiD,OAAAxB,EAAA,aAAuByB,IAAAD,EAAAjB,OAAiBmB,MAAAvD,EAAAG,MAAAH,OAAqC,GAAA0B,EAAAO,GAAA,KAAAJ,EAAA,uBAA2CO,OAAOoB,iBAAA9B,EAAAvD,eAAmC2E,IAAKW,eAAA/B,EAAAhB,mBAAmC,GAAAgB,EAAAO,GAAA,KAAAP,EAAA,gBAAAG,EAAA,OAAkDG,YAAA,uBAAiCH,EAAA,eAAoBG,YAAA,wBAAAgB,OAA2C7C,MAAAuB,EAAA,UAAAuB,SAAA,SAAAC,GAA+CxB,EAAAxB,UAAAgD,GAAkBC,WAAA,eAAyBzB,EAAAO,GAAA,WAAAP,EAAAQ,GAAAR,EAAAS,GAAA,2CAAAT,EAAAO,GAAA,KAAAJ,EAAA,eAA2GG,YAAA,wBAAAgB,OAA2C7C,MAAAuB,EAAA,YAAAuB,SAAA,SAAAC,GAAiDxB,EAAAtB,YAAA8C,GAAoBC,WAAA,iBAA2BzB,EAAAO,GAAA,WAAAP,EAAAQ,GAAAR,EAAAS,GAAA,iDAAAT,EAAAK,KAAAL,EAAAO,GAAA,SAAAP,EAAArB,SAAAqD,OAAA7B,EAAA,KAA4IG,YAAA,gBAA0BN,EAAAO,GAAAP,EAAAQ,GAAAR,EAAAS,GAAA,8BAAAT,EAAAK,KAAAL,EAAAO,GAAA,KAAAP,EAAA0B,GAAA1B,EAAA,kBAAAjD,GAAiH,OAAAoD,EAAA,OAAiByB,IAAA7E,EAAAyC,GAAAc,YAAA,qBAA6CH,EAAA,UAAeO,OAAO3D,SAAAkF,QAAAlF,EAAAkF,QAAAC,gBAAAlC,EAAArC,UAAAwE,8BAAA,GAAyGf,IAAKgB,mBAAApC,EAAAZ,0BAA8C,KAAMY,EAAAO,GAAA,KAAAP,EAAArB,SAAAqD,OAAA,EAAA7B,EAAA,OAAkDG,YAAA,wBAAkCN,EAAArD,UAAuGwD,EAAA,aAAgEO,OAAO2B,KAAA,gBAAAC,OAAA,MAA9KnC,EAAA,aAAmCO,OAAOzC,QAAA+B,EAAA/C,eAA4BmE,IAAKmB,MAAAvC,EAAAb,kBAA4Ba,EAAAO,GAAAP,EAAAQ,GAAAR,EAAAS,GAAA,0BAA2G,GAAAT,EAAAK,MAAA,QGYtmG,EACA,KACA,KACA,MAIAR,EAAA2C,QAAAC,OAAA,YACeC,EAAA,QAAA7C,oECpBf,IAAA8C,EAAAC,EAAA,QAAAA,EAAAC,EAAAF,GAAud,wBCAvd,IAAAG,GACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,QAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,WAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,QAIA,SAAAC,EAAAC,GACA,IAAAtT,EAAAuT,EAAAD,GACA,OAAAlQ,EAAApD,GAEA,SAAAuT,EAAAD,GACA,IAAAlQ,EAAAoQ,EAAAlQ,EAAAgQ,GAAA,CACA,IAAAG,EAAA,IAAAC,MAAA,uBAAAJ,EAAA,KAEA,MADAG,EAAAE,KAAA,mBACAF,EAEA,OAAAnQ,EAAAgQ,GAEAD,EAAAO,KAAA,WACA,OAAAtT,OAAAsT,KAAAtQ,IAEA+P,EAAAQ,QAAAN,EACAO,EAAAC,QAAAV,EACAA,EAAArT,GAAA","file":"static/js/chunk-176e.5c19378d.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loadingPeers)?_c('div',{staticClass:\"statuses-container\"},[_c('div',{staticClass:\"statuses-header\"},[_c('h1',[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.statuses'))+\"\\n \")]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"statuses-header-container\"},[_c('el-button-group',[_c('el-button',{staticClass:\"direct-button\",attrs:{\"plain\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.direct'))+\": \"+_vm._s(_vm.normalizedCount(_vm.statusVisibility.direct))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{staticClass:\"private-button\",attrs:{\"plain\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.private'))+\": \"+_vm._s(_vm.normalizedCount(_vm.statusVisibility.private))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{staticClass:\"public-button\",attrs:{\"plain\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.public'))+\": \"+_vm._s(_vm.normalizedCount(_vm.statusVisibility.public))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{staticClass:\"unlisted-button\",attrs:{\"plain\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.unlisted'))+\": \"+_vm._s(_vm.normalizedCount(_vm.statusVisibility.unlisted))+\"\\n \")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"filter-container\"},[_c('el-select',{staticClass:\"select-instance\",attrs:{\"placeholder\":_vm.$t('statuses.instanceFilter'),\"no-data-text\":_vm.$t('statuses.noInstances'),\"filterable\":\"\",\"clearable\":\"\"},on:{\"change\":_vm.handleFilterChange},model:{value:(_vm.selectedInstance),callback:function ($$v) {_vm.selectedInstance=$$v},expression:\"selectedInstance\"}},_vm._l((_vm.instances),function(instance,index){return _c('el-option',{key:index,attrs:{\"label\":instance,\"value\":instance}})}),1),_vm._v(\" \"),_c('multiple-users-menu',{attrs:{\"selected-users\":_vm.selectedUsers},on:{\"apply-action\":_vm.clearSelection}})],1),_vm._v(\" \"),(_vm.currentInstance)?_c('div',{staticClass:\"checkbox-container\"},[_c('el-checkbox',{staticClass:\"show-private-statuses\",model:{value:(_vm.showLocal),callback:function ($$v) {_vm.showLocal=$$v},expression:\"showLocal\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.onlyLocalStatuses'))+\"\\n \")]),_vm._v(\" \"),_c('el-checkbox',{staticClass:\"show-private-statuses\",model:{value:(_vm.showPrivate),callback:function ($$v) {_vm.showPrivate=$$v},expression:\"showPrivate\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.showPrivateStatuses'))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.statuses.length === 0)?_c('p',{staticClass:\"no-statuses\"},[_vm._v(_vm._s(_vm.$t('userProfile.noStatuses')))]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.statuses),function(status){return _c('div',{key:status.id,staticClass:\"status-container\"},[_c('status',{attrs:{\"status\":status,\"account\":status.account,\"show-checkbox\":_vm.isDesktop,\"fetch-statuses-by-instance\":true},on:{\"status-selection\":_vm.handleStatusSelection}})],1)}),_vm._v(\" \"),(_vm.statuses.length > 0)?_c('div',{staticClass:\"statuses-pagination\"},[(!_vm.allLoaded)?_c('el-button',{attrs:{\"loading\":_vm.buttonLoading},on:{\"click\":_vm.handleLoadMore}},[_vm._v(_vm._s(_vm.$t('statuses.loadMore')))]):_c('el-button',{attrs:{\"icon\":\"el-icon-check\",\"circle\":\"\"}})],1):_vm._e()],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=4ee51084&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-SG\": \"zavE\",\n\t\"./en-SG.js\": \"zavE\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-176e.5c19378d.js b/priv/static/adminfe/static/js/chunk-176e.be050aba.js similarity index 59% rename from priv/static/adminfe/static/js/chunk-176e.5c19378d.js rename to priv/static/adminfe/static/js/chunk-176e.be050aba.js index 65269ccf1..cab83489b 100644 --- a/priv/static/adminfe/static/js/chunk-176e.5c19378d.js +++ b/priv/static/adminfe/static/js/chunk-176e.be050aba.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-176e"],{FtQ1:function(s,t,e){"use strict";e.r(t);var a=e("RIqP"),n=e.n(a),i=e("i7Kn"),o=e("ot3S"),r=e("rIUS"),c=e("ZhIB"),u=e.n(c),l={name:"Statuses",components:{MultipleUsersMenu:i.a,RebootButton:r.a,Status:o.a},data:function(){return{selectedUsers:[]}},computed:{allLoaded:function(){return this.$store.state.status.statusesByInstance.allLoaded},buttonLoading:function(){return this.$store.state.status.statusesByInstance.buttonLoading},currentInstance:function(){return this.selectedInstance===this.$store.state.user.authHost},instances:function(){return[this.$store.state.user.authHost].concat(n()(this.$store.state.peers.fetchedPeers))},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},loadingPeers:function(){return this.$store.state.peers.loading},page:function(){return this.$store.state.status.statusesByInstance.page},pageSize:function(){return this.$store.state.status.statusesByInstance.pageSize},selectedInstance:{get:function(){return this.$store.state.status.statusesByInstance.selectedInstance},set:function(s){this.$store.dispatch("HandleFilterChange",s)}},showLocal:{get:function(){return this.$store.state.status.statusesByInstance.showLocal},set:function(s){this.$store.dispatch("HandleLocalCheckboxChange",s)}},showPrivate:{get:function(){return this.$store.state.status.statusesByInstance.showPrivate},set:function(s){this.$store.dispatch("HandleGodmodeCheckboxChange",s)}},statuses:function(){return this.$store.state.status.fetchedStatuses},statusVisibility:function(){return this.$store.state.status.statusVisibility}},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchPeers"),this.$store.dispatch("FetchStatusesCount")},destroyed:function(){this.clearSelection(),this.$store.dispatch("ClearState")},methods:{clearSelection:function(){this.selectedUsers=[]},handleFilterChange:function(){this.$store.dispatch("HandlePageChange",1),this.$store.dispatch("FetchStatusesByInstance")},handleLoadMore:function(){this.$store.dispatch("HandlePageChange",this.page+1),this.$store.dispatch("FetchStatusesPageByInstance")},handleStatusSelection:function(s){void 0===this.selectedUsers.find(function(t){return s.id===t.id})&&(this.selectedUsers=[].concat(n()(this.selectedUsers),[s]))},normalizedCount:function(s){return u()(s).format("0a")}}},j=(e("QOJ7"),e("KHd+")),h=Object(j.a)(l,function(){var s=this,t=s.$createElement,e=s._self._c||t;return s.loadingPeers?s._e():e("div",{staticClass:"statuses-container"},[e("div",{staticClass:"statuses-header"},[e("h1",[s._v("\n "+s._s(s.$t("statuses.statuses"))+"\n ")]),s._v(" "),e("reboot-button")],1),s._v(" "),e("div",{staticClass:"statuses-header-container"},[e("el-button-group",[e("el-button",{staticClass:"direct-button",attrs:{plain:""}},[s._v("\n "+s._s(s.$t("statuses.direct"))+": "+s._s(s.normalizedCount(s.statusVisibility.direct))+"\n ")]),s._v(" "),e("el-button",{staticClass:"private-button",attrs:{plain:""}},[s._v("\n "+s._s(s.$t("statuses.private"))+": "+s._s(s.normalizedCount(s.statusVisibility.private))+"\n ")]),s._v(" "),e("el-button",{staticClass:"public-button",attrs:{plain:""}},[s._v("\n "+s._s(s.$t("statuses.public"))+": "+s._s(s.normalizedCount(s.statusVisibility.public))+"\n ")]),s._v(" "),e("el-button",{staticClass:"unlisted-button",attrs:{plain:""}},[s._v("\n "+s._s(s.$t("statuses.unlisted"))+": "+s._s(s.normalizedCount(s.statusVisibility.unlisted))+"\n ")])],1)],1),s._v(" "),e("div",{staticClass:"filter-container"},[e("el-select",{staticClass:"select-instance",attrs:{placeholder:s.$t("statuses.instanceFilter"),"no-data-text":s.$t("statuses.noInstances"),filterable:"",clearable:""},on:{change:s.handleFilterChange},model:{value:s.selectedInstance,callback:function(t){s.selectedInstance=t},expression:"selectedInstance"}},s._l(s.instances,function(s,t){return e("el-option",{key:t,attrs:{label:s,value:s}})}),1),s._v(" "),e("multiple-users-menu",{attrs:{"selected-users":s.selectedUsers},on:{"apply-action":s.clearSelection}})],1),s._v(" "),s.currentInstance?e("div",{staticClass:"checkbox-container"},[e("el-checkbox",{staticClass:"show-private-statuses",model:{value:s.showLocal,callback:function(t){s.showLocal=t},expression:"showLocal"}},[s._v("\n "+s._s(s.$t("statuses.onlyLocalStatuses"))+"\n ")]),s._v(" "),e("el-checkbox",{staticClass:"show-private-statuses",model:{value:s.showPrivate,callback:function(t){s.showPrivate=t},expression:"showPrivate"}},[s._v("\n "+s._s(s.$t("statuses.showPrivateStatuses"))+"\n ")])],1):s._e(),s._v(" "),0===s.statuses.length?e("p",{staticClass:"no-statuses"},[s._v(s._s(s.$t("userProfile.noStatuses")))]):s._e(),s._v(" "),s._l(s.statuses,function(t){return e("div",{key:t.id,staticClass:"status-container"},[e("status",{attrs:{status:t,account:t.account,"show-checkbox":s.isDesktop,"fetch-statuses-by-instance":!0},on:{"status-selection":s.handleStatusSelection}})],1)}),s._v(" "),s.statuses.length>0?e("div",{staticClass:"statuses-pagination"},[s.allLoaded?e("el-button",{attrs:{icon:"el-icon-check",circle:""}}):e("el-button",{attrs:{loading:s.buttonLoading},on:{click:s.handleLoadMore}},[s._v(s._s(s.$t("statuses.loadMore")))])],1):s._e()],2)},[],!1,null,null,null);h.options.__file="index.vue";t.default=h.exports},KmHg:function(s,t,e){},QOJ7:function(s,t,e){"use strict";var a=e("KmHg");e.n(a).a},RnhZ:function(s,t,e){var a={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function n(s){var t=i(s);return e(t)}function i(s){if(!e.o(a,s)){var t=new Error("Cannot find module '"+s+"'");throw t.code="MODULE_NOT_FOUND",t}return a[s]}n.keys=function(){return Object.keys(a)},n.resolve=i,s.exports=n,n.id="RnhZ"}}]); -//# sourceMappingURL=chunk-176e.5c19378d.js.map \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-176e"],{FtQ1:function(s,t,e){"use strict";e.r(t);var n=e("RIqP"),a=e.n(n),i=e("i7Kn"),o=e("ot3S"),r=e("rIUS"),c=e("ZhIB"),u=e.n(c),l={name:"Statuses",components:{MultipleUsersMenu:i.a,RebootButton:r.a,Status:o.a},data:function(){return{selectedUsers:[]}},computed:{allLoaded:function(){return this.$store.state.status.statusesByInstance.allLoaded},buttonLoading:function(){return this.$store.state.status.statusesByInstance.buttonLoading},currentInstance:function(){return this.selectedInstance===this.$store.state.user.authHost},instances:function(){return[this.$store.state.user.authHost].concat(a()(this.$store.state.peers.fetchedPeers))},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},loadingPeers:function(){return this.$store.state.peers.loading},page:function(){return this.$store.state.status.statusesByInstance.page},pageSize:function(){return this.$store.state.status.statusesByInstance.pageSize},selectedInstance:{get:function(){return this.$store.state.status.statusesByInstance.selectedInstance},set:function(s){this.$store.dispatch("HandleFilterChange",s)}},showLocal:{get:function(){return this.$store.state.status.statusesByInstance.showLocal},set:function(s){this.$store.dispatch("HandleLocalCheckboxChange",s)}},showPrivate:{get:function(){return this.$store.state.status.statusesByInstance.showPrivate},set:function(s){this.$store.dispatch("HandleGodmodeCheckboxChange",s)}},statuses:function(){return this.$store.state.status.fetchedStatuses},statusVisibility:function(){return this.$store.state.status.statusVisibility}},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchPeers"),this.$store.dispatch("FetchStatusesCount")},destroyed:function(){this.clearSelection(),this.$store.dispatch("ClearState")},methods:{clearSelection:function(){this.selectedUsers=[]},handleFilterChange:function(){this.$store.dispatch("HandlePageChange",1),this.$store.dispatch("FetchStatusesByInstance")},handleLoadMore:function(){this.$store.dispatch("HandlePageChange",this.page+1),this.$store.dispatch("FetchStatusesPageByInstance")},handleStatusSelection:function(s){void 0===this.selectedUsers.find(function(t){return s.id===t.id})&&(this.selectedUsers=[].concat(a()(this.selectedUsers),[s]))},normalizedCount:function(s){return u()(s).format("0a")}}},j=(e("QOJ7"),e("KHd+")),h=Object(j.a)(l,function(){var s=this,t=s.$createElement,e=s._self._c||t;return s.loadingPeers?s._e():e("div",{staticClass:"statuses-container"},[e("div",{staticClass:"statuses-header"},[e("h1",[s._v("\n "+s._s(s.$t("statuses.statuses"))+"\n ")]),s._v(" "),e("reboot-button")],1),s._v(" "),e("div",{staticClass:"statuses-header-container"},[e("el-button-group",[e("el-button",{staticClass:"direct-button",attrs:{plain:""}},[s._v("\n "+s._s(s.$t("statuses.direct"))+": "+s._s(s.normalizedCount(s.statusVisibility.direct))+"\n ")]),s._v(" "),e("el-button",{staticClass:"private-button",attrs:{plain:""}},[s._v("\n "+s._s(s.$t("statuses.private"))+": "+s._s(s.normalizedCount(s.statusVisibility.private))+"\n ")]),s._v(" "),e("el-button",{staticClass:"public-button",attrs:{plain:""}},[s._v("\n "+s._s(s.$t("statuses.public"))+": "+s._s(s.normalizedCount(s.statusVisibility.public))+"\n ")]),s._v(" "),e("el-button",{staticClass:"unlisted-button",attrs:{plain:""}},[s._v("\n "+s._s(s.$t("statuses.unlisted"))+": "+s._s(s.normalizedCount(s.statusVisibility.unlisted))+"\n ")])],1)],1),s._v(" "),e("div",{staticClass:"filter-container"},[e("el-select",{staticClass:"select-instance",attrs:{placeholder:s.$t("statuses.instanceFilter"),"no-data-text":s.$t("statuses.noInstances"),filterable:"",clearable:""},on:{change:s.handleFilterChange},model:{value:s.selectedInstance,callback:function(t){s.selectedInstance=t},expression:"selectedInstance"}},s._l(s.instances,function(s,t){return e("el-option",{key:t,attrs:{label:s,value:s}})}),1),s._v(" "),e("multiple-users-menu",{attrs:{"selected-users":s.selectedUsers},on:{"apply-action":s.clearSelection}})],1),s._v(" "),s.currentInstance?e("div",{staticClass:"checkbox-container"},[e("el-checkbox",{staticClass:"show-private-statuses",model:{value:s.showLocal,callback:function(t){s.showLocal=t},expression:"showLocal"}},[s._v("\n "+s._s(s.$t("statuses.onlyLocalStatuses"))+"\n ")]),s._v(" "),e("el-checkbox",{staticClass:"show-private-statuses",model:{value:s.showPrivate,callback:function(t){s.showPrivate=t},expression:"showPrivate"}},[s._v("\n "+s._s(s.$t("statuses.showPrivateStatuses"))+"\n ")])],1):s._e(),s._v(" "),0===s.statuses.length?e("p",{staticClass:"no-statuses"},[s._v(s._s(s.$t("userProfile.noStatuses")))]):s._e(),s._v(" "),s._l(s.statuses,function(t){return e("div",{key:t.id,staticClass:"status-container"},[e("status",{attrs:{status:t,account:t.account,"show-checkbox":s.isDesktop,"fetch-statuses-by-instance":!0},on:{"status-selection":s.handleStatusSelection}})],1)}),s._v(" "),s.statuses.length>0?e("div",{staticClass:"statuses-pagination"},[s.allLoaded?e("el-button",{attrs:{icon:"el-icon-check",circle:""}}):e("el-button",{attrs:{loading:s.buttonLoading},on:{click:s.handleLoadMore}},[s._v(s._s(s.$t("statuses.loadMore")))])],1):s._e()],2)},[],!1,null,null,null);h.options.__file="index.vue";t.default=h.exports},KmHg:function(s,t,e){},QOJ7:function(s,t,e){"use strict";var n=e("KmHg");e.n(n).a},RnhZ:function(s,t,e){var n={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-in":"7C5Q","./en-in.js":"7C5Q","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./en-sg":"t+mt","./en-sg.js":"t+mt","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fil":"1ppg","./fil.js":"1ppg","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-deva":"qvJo","./gom-deva.js":"qvJo","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./oc-lnc":"Fnuy","./oc-lnc.js":"Fnuy","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tk":"Wv91","./tk.js":"Wv91","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-mo":"OmwH","./zh-mo.js":"OmwH","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function a(s){var t=i(s);return e(t)}function i(s){if(!e.o(n,s)){var t=new Error("Cannot find module '"+s+"'");throw t.code="MODULE_NOT_FOUND",t}return n[s]}a.keys=function(){return Object.keys(n)},a.resolve=i,s.exports=a,a.id="RnhZ"}}]); +//# sourceMappingURL=chunk-176e.be050aba.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-176e.be050aba.js.map b/priv/static/adminfe/static/js/chunk-176e.be050aba.js.map new file mode 100644 index 000000000..bff959cd6 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-176e.be050aba.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/statuses/index.vue?ffa7","webpack:///./src/views/statuses/index.vue?1423","webpack:///src/views/statuses/index.vue","webpack:///./src/views/statuses/index.vue","webpack:///./src/views/statuses/index.vue?f25c","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$"],"names":["views_statusesvue_type_script_lang_js_","name","components","MultipleUsersMenu","RebootButton","Status","data","selectedUsers","computed","allLoaded","this","$store","state","status","statusesByInstance","buttonLoading","currentInstance","selectedInstance","user","authHost","instances","concat","toConsumableArray_default","peers","fetchedPeers","isDesktop","app","device","isMobile","isTablet","loadingPeers","loading","page","pageSize","get","set","instance","dispatch","showLocal","value","showPrivate","statuses","fetchedStatuses","statusVisibility","mounted","destroyed","clearSelection","methods","handleFilterChange","handleLoadMore","handleStatusSelection","undefined","find","selectedUser","id","normalizedCount","count","numeral_default","format","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","_e","staticClass","_v","_s","$t","attrs","plain","direct","private","public","unlisted","placeholder","no-data-text","filterable","clearable","on","change","model","callback","$$v","expression","_l","index","key","label","selected-users","apply-action","length","account","show-checkbox","fetch-statuses-by-instance","status-selection","icon","circle","click","options","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-in","./en-in.js","./en-nz","./en-nz.js","./en-sg","./en-sg.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fil","./fil.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-deva","./gom-deva.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./oc-lnc","./oc-lnc.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tk","./tk.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-mo","./zh-mo.js","./zh-tw","./zh-tw.js","webpackContext","req","webpackContextResolve","o","e","Error","code","keys","resolve","module","exports"],"mappings":"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CAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,WAAA,OACAC,cAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,QAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,WAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,QAIA,SAAAC,EAAAC,GACA,IAAAlU,EAAAmU,EAAAD,GACA,OAAA9Q,EAAApD,GAEA,SAAAmU,EAAAD,GACA,IAAA9Q,EAAAgR,EAAA9Q,EAAA4Q,GAAA,CACA,IAAAG,EAAA,IAAAC,MAAA,uBAAAJ,EAAA,KAEA,MADAG,EAAAE,KAAA,mBACAF,EAEA,OAAA/Q,EAAA4Q,GAEAD,EAAAO,KAAA,WACA,OAAAlU,OAAAkU,KAAAlR,IAEA2Q,EAAAQ,QAAAN,EACAO,EAAAC,QAAAV,EACAA,EAAAjU,GAAA","file":"static/js/chunk-176e.be050aba.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loadingPeers)?_c('div',{staticClass:\"statuses-container\"},[_c('div',{staticClass:\"statuses-header\"},[_c('h1',[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.statuses'))+\"\\n \")]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"statuses-header-container\"},[_c('el-button-group',[_c('el-button',{staticClass:\"direct-button\",attrs:{\"plain\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.direct'))+\": \"+_vm._s(_vm.normalizedCount(_vm.statusVisibility.direct))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{staticClass:\"private-button\",attrs:{\"plain\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.private'))+\": \"+_vm._s(_vm.normalizedCount(_vm.statusVisibility.private))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{staticClass:\"public-button\",attrs:{\"plain\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.public'))+\": \"+_vm._s(_vm.normalizedCount(_vm.statusVisibility.public))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{staticClass:\"unlisted-button\",attrs:{\"plain\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.unlisted'))+\": \"+_vm._s(_vm.normalizedCount(_vm.statusVisibility.unlisted))+\"\\n \")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"filter-container\"},[_c('el-select',{staticClass:\"select-instance\",attrs:{\"placeholder\":_vm.$t('statuses.instanceFilter'),\"no-data-text\":_vm.$t('statuses.noInstances'),\"filterable\":\"\",\"clearable\":\"\"},on:{\"change\":_vm.handleFilterChange},model:{value:(_vm.selectedInstance),callback:function ($$v) {_vm.selectedInstance=$$v},expression:\"selectedInstance\"}},_vm._l((_vm.instances),function(instance,index){return _c('el-option',{key:index,attrs:{\"label\":instance,\"value\":instance}})}),1),_vm._v(\" \"),_c('multiple-users-menu',{attrs:{\"selected-users\":_vm.selectedUsers},on:{\"apply-action\":_vm.clearSelection}})],1),_vm._v(\" \"),(_vm.currentInstance)?_c('div',{staticClass:\"checkbox-container\"},[_c('el-checkbox',{staticClass:\"show-private-statuses\",model:{value:(_vm.showLocal),callback:function ($$v) {_vm.showLocal=$$v},expression:\"showLocal\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.onlyLocalStatuses'))+\"\\n \")]),_vm._v(\" \"),_c('el-checkbox',{staticClass:\"show-private-statuses\",model:{value:(_vm.showPrivate),callback:function ($$v) {_vm.showPrivate=$$v},expression:\"showPrivate\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.showPrivateStatuses'))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.statuses.length === 0)?_c('p',{staticClass:\"no-statuses\"},[_vm._v(_vm._s(_vm.$t('userProfile.noStatuses')))]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.statuses),function(status){return _c('div',{key:status.id,staticClass:\"status-container\"},[_c('status',{attrs:{\"status\":status,\"account\":status.account,\"show-checkbox\":_vm.isDesktop,\"fetch-statuses-by-instance\":true},on:{\"status-selection\":_vm.handleStatusSelection}})],1)}),_vm._v(\" \"),(_vm.statuses.length > 0)?_c('div',{staticClass:\"statuses-pagination\"},[(!_vm.allLoaded)?_c('el-button',{attrs:{\"loading\":_vm.buttonLoading},on:{\"click\":_vm.handleLoadMore}},[_vm._v(_vm._s(_vm.$t('statuses.loadMore')))]):_c('el-button',{attrs:{\"icon\":\"el-icon-check\",\"circle\":\"\"}})],1):_vm._e()],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=4ee51084&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-in\": \"7C5Q\",\n\t\"./en-in.js\": \"7C5Q\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./en-sg\": \"t+mt\",\n\t\"./en-sg.js\": \"t+mt\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fil\": \"1ppg\",\n\t\"./fil.js\": \"1ppg\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-deva\": \"qvJo\",\n\t\"./gom-deva.js\": \"qvJo\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./oc-lnc\": \"Fnuy\",\n\t\"./oc-lnc.js\": \"Fnuy\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tk\": \"Wv91\",\n\t\"./tk.js\": \"Wv91\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-mo\": \"OmwH\",\n\t\"./zh-mo.js\": \"OmwH\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-2d97.079e9e64.js b/priv/static/adminfe/static/js/chunk-2d97.079e9e64.js deleted file mode 100644 index 90399920a..000000000 --- a/priv/static/adminfe/static/js/chunk-2d97.079e9e64.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-2d97"],{"+nkG":function(t,e,r){"use strict";var n=r("busc");r.n(n).a},busc:function(t,e,r){},i7Kn:function(t,e,r){"use strict";var n=r("o0o1"),s=r.n(n),i=r("yXPU"),a=r.n(i),o={props:{selectedUsers:{type:Array,default:function(){return[]}}},computed:{showDropdownForMultipleUsers:function(){return this.$props.selectedUsers.length>0},isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{mappers:function(){var t=this,e=function(){var e=a()(s.a.mark(function e(r,n){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,n(r);case 2:t.$emit("apply-action");case 3:case"end":return e.stop()}},e)}));return function(t,r){return e.apply(this,arguments)}}();return{grantRight:function(r){return function(){var n=function(){var e=a()(s.a.mark(function e(n){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("AddRight",{users:n,right:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),i=t.selectedUsers.filter(function(e){return t.isLocalUser(e)&&!e.roles[r]&&t.$store.state.user.id!==e.id});e(i,n)}},revokeRight:function(r){return function(){var n=function(){var e=a()(s.a.mark(function e(n){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("DeleteRight",{users:n,right:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),i=t.selectedUsers.filter(function(e){return t.isLocalUser(e)&&e.roles[r]&&t.$store.state.user.id!==e.id});e(i,n)}},activate:function(){var r=t.selectedUsers.filter(function(e){return e.nickname&&e.deactivated&&t.$store.state.user.id!==e.id});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("ActivateUsers",{users:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())},deactivate:function(){var r=t.selectedUsers.filter(function(e){return e.nickname&&!e.deactivated&&t.$store.state.user.id!==e.id});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("DeactivateUsers",{users:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())},remove:function(){var r=t.selectedUsers.filter(function(e){return e.nickname&&t.$store.state.user.id!==e.id});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("DeleteUsers",{users:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())},addTag:function(r){return function(){var n=t.selectedUsers.filter(function(e){return"mrf_tag:disable-remote-subscription"===r||"mrf_tag:disable-any-subscription"===r?t.isLocalUser(e)&&!e.tags.includes(r):e.nickname&&!e.tags.includes(r)});e(n,function(){var e=a()(s.a.mark(function e(n){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("AddTag",{users:n,tag:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())}},removeTag:function(r){return a()(s.a.mark(function n(){var i;return s.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:i=t.selectedUsers.filter(function(e){return"mrf_tag:disable-remote-subscription"===r||"mrf_tag:disable-any-subscription"===r?t.isLocalUser(e)&&e.tags.includes(r):e.nickname&&e.tags.includes(r)}),e(i,function(){var e=a()(s.a.mark(function e(n){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("RemoveTag",{users:n,tag:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}());case 3:case"end":return n.stop()}},n)}))},requirePasswordReset:function(){var r=t.selectedUsers.filter(function(e){return t.isLocalUser(e)});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("RequirePasswordReset",r);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())},approveAccounts:function(){var r=t.selectedUsers.filter(function(e){return t.isLocalUser(e)&&e.approval_pending});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("ApproveUsersAccount",{users:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())},confirmAccounts:function(){var r=t.selectedUsers.filter(function(e){return t.isLocalUser(e)&&e.confirmation_pending});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("ConfirmUsersEmail",{users:r});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())},resendConfirmation:function(){var r=t.selectedUsers.filter(function(e){return t.isLocalUser(e)&&e.confirmation_pending});e(r,function(){var e=a()(s.a.mark(function e(r){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("ResendConfirmationEmail",r);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())}}},isLocalUser:function(t){return t.nickname&&t.local},grantRightToMultipleUsers:function(t){var e=this.mappers().grantRight;this.confirmMessage(this.$t("users.grantRightConfirmation",{right:t}),e(t))},revokeRightFromMultipleUsers:function(t){var e=this.mappers().revokeRight;this.confirmMessage(this.$t("users.revokeRightConfirmation",{right:t}),e(t))},activateMultipleUsers:function(){var t=this.mappers().activate;this.confirmMessage(this.$t("users.activateMultipleUsersConfirmation"),t)},deactivateMultipleUsers:function(){var t=this.mappers().deactivate;this.confirmMessage(this.$t("users.deactivateMultipleUsersConfirmation"),t)},deleteMultipleUsers:function(){var t=this.mappers().remove;this.confirmMessage(this.$t("users.deleteMultipleUsersConfirmation"),t)},requirePasswordReset:function(){if(this.$store.state.user.nodeInfo.metadata.mailerEnabled){var t=this.mappers().requirePasswordReset;this.confirmMessage(this.$t("users.requirePasswordResetConfirmation"),t)}else this.$alert(this.$t("users.mailerMustBeEnabled"),"Error",{type:"error"})},addTagForMultipleUsers:function(t){var e=this.mappers().addTag;this.confirmMessage(this.$t("users.addTagForMultipleUsersConfirmation"),e(t))},removeTagFromMultipleUsers:function(t){var e=this.mappers().removeTag;this.confirmMessage(this.$t("users.removeTagFromMultipleUsersConfirmation"),e(t))},approveAccountsForMultipleUsers:function(){var t=this.mappers().approveAccounts;this.confirmMessage(this.$t("users.approveAccountsConfirmation"),t)},rejectAccountsForMultipleUsers:function(){var t=this.mappers().remove;this.confirmMessage(this.$t("users.rejectAccountsConfirmation"),t)},confirmAccountsForMultipleUsers:function(){var t=this.mappers().confirmAccounts;this.confirmMessage(this.$t("users.confirmAccountsConfirmation"),t)},resendConfirmationForMultipleUsers:function(){var t=this.mappers().resendConfirmation;this.confirmMessage(this.$t("users.resendEmailConfirmation"),t)},confirmMessage:function(t,e){var r=this;this.$confirm(t,{confirmButtonText:this.$t("users.ok"),cancelButtonText:this.$t("users.cancel"),type:"warning"}).then(function(){e()}).catch(function(){r.$message({type:"info",message:r.$t("users.canceled")})})}}},u=(r("+nkG"),r("KHd+")),c=Object(u.a)(o,function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("el-dropdown",{attrs:{size:"small",trigger:"click",placement:"bottom-start"}},[t.isDesktop?r("el-button",{staticClass:"actions-button"},[r("span",{staticClass:"actions-button-container"},[r("span",[r("i",{staticClass:"el-icon-edit"}),t._v("\n "+t._s(t.$t("users.moderateUsers"))+"\n ")]),t._v(" "),r("i",{staticClass:"el-icon-arrow-down el-icon--right"})])]):t._e(),t._v(" "),t.showDropdownForMultipleUsers?r("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[r("el-dropdown-item",{nativeOn:{click:function(e){return t.grantRightToMultipleUsers("admin")}}},[t._v("\n "+t._s(t.$t("users.grantAdmin"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.revokeRightFromMultipleUsers("admin")}}},[t._v("\n "+t._s(t.$t("users.revokeAdmin"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.grantRightToMultipleUsers("moderator")}}},[t._v("\n "+t._s(t.$t("users.grantModerator"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.revokeRightFromMultipleUsers("moderator")}}},[t._v("\n "+t._s(t.$t("users.revokeModerator"))+"\n ")]),t._v(" "),r("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return t.approveAccountsForMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.approveAccounts"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.rejectAccountsForMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.rejectAccounts"))+"\n ")]),t._v(" "),r("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return t.confirmAccountsForMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.confirmAccounts"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.resendConfirmationForMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.resendConfirmation"))+"\n ")]),t._v(" "),r("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return t.activateMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.activateAccounts"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.deactivateMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.deactivateAccounts"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.deleteMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.deleteAccounts"))+"\n ")]),t._v(" "),r("el-dropdown-item",{nativeOn:{click:function(e){return t.requirePasswordReset(e)}}},[t._v("\n "+t._s(t.$t("users.requirePasswordReset"))+"\n ")]),t._v(" "),r("el-dropdown-item",{staticClass:"no-hover",attrs:{divided:""}},[r("div",{staticClass:"tag-container"},[r("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.forceNsfw")))]),t._v(" "),r("el-button-group",{staticClass:"tag-button-group"},[r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("mrf_tag:media-force-nsfw")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("mrf_tag:media-force-nsfw")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),r("el-dropdown-item",{staticClass:"no-hover"},[r("div",{staticClass:"tag-container"},[r("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.stripMedia")))]),t._v(" "),r("el-button-group",{staticClass:"tag-button-group"},[r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("mrf_tag:media-strip")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("mrf_tag:media-strip")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),r("el-dropdown-item",{staticClass:"no-hover"},[r("div",{staticClass:"tag-container"},[r("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.forceUnlisted")))]),t._v(" "),r("el-button-group",{staticClass:"tag-button-group"},[r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("mrf_tag:force-unlisted")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("mrf_tag:force-unlisted")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),r("el-dropdown-item",{staticClass:"no-hover"},[r("div",{staticClass:"tag-container"},[r("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.sandbox")))]),t._v(" "),r("el-button-group",{staticClass:"tag-button-group"},[r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("mrf_tag:sandbox")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("mrf_tag:sandbox")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),r("el-dropdown-item",{staticClass:"no-hover"},[r("div",{staticClass:"tag-container"},[r("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.disableRemoteSubscriptionForMultiple")))]),t._v(" "),r("el-button-group",{staticClass:"tag-button-group"},[r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("mrf_tag:disable-remote-subscription")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("mrf_tag:disable-remote-subscription")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),r("el-dropdown-item",{staticClass:"no-hover"},[r("div",{staticClass:"tag-container"},[r("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.disableAnySubscriptionForMultiple")))]),t._v(" "),r("el-button-group",{staticClass:"tag-button-group"},[r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("mrf_tag:disable-any-subscription")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),r("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("mrf_tag:disable-any-subscription")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)])],1):r("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[r("el-dropdown-item",[t._v("\n "+t._s(t.$t("users.selectUsers"))+"\n ")])],1)],1)},[],!1,null,"9bd813c8",null);c.options.__file="MultipleUsersMenu.vue";e.a=c.exports}}]); -//# sourceMappingURL=chunk-2d97.079e9e64.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-2d97.079e9e64.js.map b/priv/static/adminfe/static/js/chunk-2d97.079e9e64.js.map deleted file mode 100644 index 5e3e417cd..000000000 --- a/priv/static/adminfe/static/js/chunk-2d97.079e9e64.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/users/components/MultipleUsersMenu.vue?e98b","webpack:///./src/views/users/components/MultipleUsersMenu.vue?adc1","webpack:///./src/views/users/components/MultipleUsersMenu.vue?56ef","webpack:///src/views/users/components/MultipleUsersMenu.vue","webpack:///./src/views/users/components/MultipleUsersMenu.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MultipleUsersMenu_vue_vue_type_style_index_0_id_9bd813c8_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","components_MultipleUsersMenuvue_type_script_lang_js_","props","selectedUsers","type","Array","default","computed","showDropdownForMultipleUsers","this","$props","length","isDesktop","$store","state","app","device","methods","mappers","_this","applyAction","_ref","asyncToGenerator_default","regenerator_default","a","mark","_callee","users","dispatchAction","wrap","_context","prev","next","$emit","stop","_x","_x2","apply","arguments","grantRight","right","addRightFn","_ref2","_callee2","_context2","dispatch","abrupt","sent","_x3","filtered","filter","user","isLocalUser","roles","id","revokeRight","deleteRightFn","_ref3","_callee3","_context3","_x4","activate","nickname","deactivated","_ref4","_callee4","_context4","_x5","deactivate","_ref5","_callee5","_context5","_x6","remove","_ref6","_callee6","_context6","_x7","addTag","tag","tags","includes","_ref7","_callee7","_context7","_x8","removeTag","_callee9","_context9","_ref9","_callee8","_context8","_x9","requirePasswordReset","_ref10","_callee10","_context10","_x10","approveAccounts","approval_pending","_ref11","_callee11","_context11","_x11","confirmAccounts","confirmation_pending","_ref12","_callee12","_context12","_x12","resendConfirmation","_ref13","_callee13","_context13","_x13","local","grantRightToMultipleUsers","confirmMessage","$t","revokeRightFromMultipleUsers","activateMultipleUsers","deactivateMultipleUsers","deleteMultipleUsers","nodeInfo","metadata","mailerEnabled","$alert","addTagForMultipleUsers","removeTagFromMultipleUsers","approveAccountsForMultipleUsers","rejectAccountsForMultipleUsers","confirmAccountsForMultipleUsers","resendConfirmationForMultipleUsers","message","_this2","$confirm","confirmButtonText","cancelButtonText","then","catch","$message","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","attrs","size","trigger","placement","staticClass","_v","_s","_e","slot","nativeOn","click","$event","divided","options","__file","__webpack_exports__"],"mappings":"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","file":"static/js/chunk-2d97.079e9e64.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleUsersMenu.vue?vue&type=style&index=0&id=9bd813c8&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleUsersMenu.vue?vue&type=style&index=0&id=9bd813c8&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"size\":\"small\",\"trigger\":\"click\",\"placement\":\"bottom-start\"}},[(_vm.isDesktop)?_c('el-button',{staticClass:\"actions-button\"},[_c('span',{staticClass:\"actions-button-container\"},[_c('span',[_c('i',{staticClass:\"el-icon-edit\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderateUsers'))+\"\\n \")]),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})])]):_vm._e(),_vm._v(\" \"),(_vm.showDropdownForMultipleUsers)?_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.grantRightToMultipleUsers('admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.grantAdmin'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.revokeRightFromMultipleUsers('admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.revokeAdmin'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.grantRightToMultipleUsers('moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.grantModerator'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.revokeRightFromMultipleUsers('moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.revokeModerator'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.approveAccountsForMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.approveAccounts'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.rejectAccountsForMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.rejectAccounts'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.confirmAccountsForMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.confirmAccounts'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.resendConfirmationForMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.resendConfirmation'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.activateMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.activateAccounts'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.deactivateMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deactivateAccounts'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.deleteMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccounts'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.requirePasswordReset($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.requirePasswordReset'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\",attrs:{\"divided\":\"\"}},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.forceNsfw')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('mrf_tag:media-force-nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('mrf_tag:media-force-nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.stripMedia')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('mrf_tag:media-strip')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('mrf_tag:media-strip')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.forceUnlisted')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('mrf_tag:force-unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('mrf_tag:force-unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.sandbox')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('mrf_tag:sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('mrf_tag:sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.disableRemoteSubscriptionForMultiple')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('mrf_tag:disable-remote-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('mrf_tag:disable-remote-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.disableAnySubscriptionForMultiple')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('mrf_tag:disable-any-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('mrf_tag:disable-any-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)])],1):_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.selectUsers'))+\"\\n \")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleUsersMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleUsersMenu.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./MultipleUsersMenu.vue?vue&type=template&id=9bd813c8&scoped=true&\"\nimport script from \"./MultipleUsersMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./MultipleUsersMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MultipleUsersMenu.vue?vue&type=style&index=0&id=9bd813c8&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9bd813c8\",\n null\n \n)\n\ncomponent.options.__file = \"MultipleUsersMenu.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-3365.b73c30a8.js b/priv/static/adminfe/static/js/chunk-3365.b73c30a8.js new file mode 100644 index 000000000..421bf2a99 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-3365.b73c30a8.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-3365"],{"53Av":function(s,e,t){"use strict";var a=t("lOBV");t.n(a).a},RnhZ:function(s,e,t){var a={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-in":"7C5Q","./en-in.js":"7C5Q","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./en-sg":"t+mt","./en-sg.js":"t+mt","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fil":"1ppg","./fil.js":"1ppg","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-deva":"qvJo","./gom-deva.js":"qvJo","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./oc-lnc":"Fnuy","./oc-lnc.js":"Fnuy","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tk":"Wv91","./tk.js":"Wv91","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-mo":"OmwH","./zh-mo.js":"OmwH","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function n(s){var e=r(s);return t(e)}function r(s){if(!t.o(a,s)){var e=new Error("Cannot find module '"+s+"'");throw e.code="MODULE_NOT_FOUND",e}return a[s]}n.keys=function(){return Object.keys(a)},n.resolve=r,s.exports=n,n.id="RnhZ"},S3Ak:function(s,e,t){"use strict";var a=t("lGnS");t.n(a).a},WjBP:function(s,e,t){"use strict";var a={name:"ResetPasswordDialog",props:{resetPasswordDialogOpen:{type:Boolean,default:!1}},computed:{dialogOpen:function(){return this.resetPasswordDialogOpen},loading:function(){return this.$store.state.users.loading},passwordResetLink:function(){return this.$store.state.users.passwordResetToken.link},passwordResetToken:function(){return this.$store.state.users.passwordResetToken.token}},methods:{closeResetPasswordDialog:function(){this.$emit("close-reset-token-dialog")}}},n=t("KHd+"),r=Object(n.a)(a,function(){var s=this,e=s.$createElement,t=s._self._c||e;return t("el-dialog",{directives:[{name:"loading",rawName:"v-loading",value:s.loading,expression:"loading"}],attrs:{visible:s.dialogOpen,title:s.$t("users.passwordResetTokenCreated"),"custom-class":"password-reset-token-dialog"},on:{close:s.closeResetPasswordDialog}},[t("div",[t("p",{staticClass:"password-reset-token"},[s._v(s._s(s.$t("users.passwordResetTokenGenerated"))+" "+s._s(s.passwordResetToken))]),s._v(" "),t("p",[s._v(s._s(s.$t("users.linkToResetPassword"))+"\n "),t("a",{staticClass:"reset-password-link",attrs:{href:s.passwordResetLink,target:"_blank"}},[s._v(s._s(s.passwordResetLink))])])])])},[],!1,null,null,null);r.options.__file="ResetPasswordDialog.vue";e.a=r.exports},lGnS:function(s,e,t){},lOBV:function(s,e,t){},rwwt:function(s,e,t){"use strict";t.r(e);var a=t("ot3S"),n=t("tPM3"),r=t("rIUS"),i=t("WjBP"),o={name:"StatusShow",components:{ModerationDropdown:n.a,RebootButton:r.a,ResetPasswordDialog:i.a,Status:a.a},data:function(){return{showPrivate:!1,resetPasswordDialogOpen:!1}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},loading:function(){return this.$store.state.status.loading},status:function(){return this.$store.state.status.fetchedStatus},statuses:function(){return this.$store.state.userProfile.statuses},statusesLoading:function(){return this.$store.state.userProfile.statusesLoading},user:function(){return this.$store.state.status.statusAuthor}},beforeMount:function(){this.$store.dispatch("NeedReboot"),this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("FetchStatus",this.$route.params.id)},methods:{closeResetPasswordDialog:function(){this.resetPasswordDialogOpen=!1,this.$store.dispatch("RemovePasswordToken")},onTogglePrivate:function(){this.$store.dispatch("FetchUserStatuses",{userId:this.user.id,godmode:this.showPrivate})},openResetPasswordDialog:function(){this.resetPasswordDialogOpen=!0},propertyExists:function(s,e){return s[e]}}},c=(t("S3Ak"),t("KHd+")),u=Object(c.a)(o,function(){var s=this,e=s.$createElement,t=s._self._c||e;return s.loading?s._e():t("div",{staticClass:"status-show-container"},[s.isDesktop||s.isTablet?t("header",{staticClass:"user-page-header"},[t("div",{staticClass:"avatar-name-container"},[s.propertyExists(s.user,"id")?t("router-link",{staticClass:"router-link",attrs:{to:{name:"UsersShow",params:{id:s.user.id}}}},[t("div",{staticClass:"avatar-name-header"},[s.propertyExists(s.user,"avatar")?t("el-avatar",{attrs:{src:s.user.avatar,size:"large"}}):s._e(),s._v(" "),s.propertyExists(s.user,"nickname")?t("h1",[s._v(s._s(s.user.nickname))]):t("h1",{staticClass:"invalid"},[s._v("("+s._s(s.$t("users.invalidNickname"))+")")])],1)]):s._e(),s._v(" "),s.propertyExists(s.user,"url")?t("a",{attrs:{href:s.user.url,target:"_blank"}},[t("i",{staticClass:"el-icon-top-right",attrs:{title:s.$t("userProfile.openAccountInInstance")}})]):s._e()],1),s._v(" "),t("div",{staticClass:"left-header-container"},[t("moderation-dropdown",{attrs:{user:s.user,page:"statusPage","status-id":s.status.id},on:{"open-reset-token-dialog":s.openResetPasswordDialog}}),s._v(" "),t("reboot-button")],1)]):s._e(),s._v(" "),s.isMobile?t("div",{staticClass:"status-page-header-container"},[t("header",{staticClass:"user-page-header"},[t("div",{staticClass:"avatar-name-container"},[s.propertyExists(s.user,"avatar")?t("el-avatar",{attrs:{src:s.user.avatar,size:"large"}}):s._e(),s._v(" "),s.propertyExists(s.user,"nickname")?t("h1",[s._v(s._s(s.user.nickname))]):s._e()],1),s._v(" "),t("reboot-button")],1),s._v(" "),t("moderation-dropdown",{attrs:{user:s.user,page:"statusPage"},on:{"open-reset-token-dialog":s.openResetPasswordDialog}})],1):s._e(),s._v(" "),t("reset-password-dialog",{attrs:{"reset-password-dialog-open":s.resetPasswordDialogOpen},on:{"close-reset-token-dialog":s.closeResetPasswordDialog}}),s._v(" "),t("div",{staticClass:"status-container"},[t("status",{attrs:{status:s.status,account:s.user,"show-checkbox":!1,godmode:s.showPrivate}})],1),s._v(" "),t("div",{staticClass:"recent-statuses-container-show"},[s.propertyExists(s.user,"nickname")?t("h2",{staticClass:"recent-statuses"},[s._v("\n "+s._s(s.$t("userProfile.recentStatuses"))+" by "+s._s(s.user.nickname)+"\n ")]):t("h2",{staticClass:"recent-statuses"},[s._v(s._s(s.$t("userProfile.recentStatuses")))]),s._v(" "),t("el-checkbox",{staticClass:"show-private-statuses",on:{change:s.onTogglePrivate},model:{value:s.showPrivate,callback:function(e){s.showPrivate=e},expression:"showPrivate"}},[s._v("\n "+s._s(s.$t("statuses.showPrivateStatuses"))+"\n ")]),s._v(" "),s.statusesLoading?s._e():t("el-timeline",{staticClass:"statuses"},[s._l(s.statuses,function(e){return t("el-timeline-item",{key:e.id},[t("status",{attrs:{status:e,account:e.account,"show-checkbox":!1,"user-id":s.user.id,godmode:s.showPrivate}})],1)}),s._v(" "),0===s.statuses.length?t("p",{staticClass:"no-statuses"},[s._v(s._s(s.$t("userProfile.noStatuses")))]):s._e()],2)],1)],1)},[],!1,null,null,null);u.options.__file="show.vue";e.default=u.exports},tPM3:function(s,e,t){"use strict";var a={name:"ModerationDropdown",props:{user:{type:Object,default:function(){return{}}},page:{type:String,default:"users"},statusId:{type:String,default:""}},computed:{actorType:{get:function(){return this.user.actor_type},set:function(s){this.$store.dispatch("UpdateActorType",{user:this.user,type:s,_userId:this.user.id,_statusId:this.statusId})}},isDesktop:function(){return"desktop"===this.$store.state.app.device},tagPolicyEnabled:function(){return this.$store.state.users.mrfPolicies.includes("Pleroma.Web.ActivityPub.MRF.TagPolicy")}},methods:{disableMfa:function(s){this.$store.dispatch("DisableMfa",s)},enableTagPolicy:function(){var s=this;this.$confirm(this.$t("users.confirmEnablingTagPolicy"),{confirmButtonText:"Yes",cancelButtonText:"Cancel",type:"warning"}).then(function(){s.$message({type:"success",message:s.$t("users.enableTagPolicySuccessMessage")}),s.$store.dispatch("EnableTagPolicy")}).catch(function(){s.$message({type:"info",message:"Canceled"})})},getPasswordResetToken:function(s){this.$emit("open-reset-token-dialog"),this.$store.dispatch("GetPasswordResetToken",s)},handleConfirmationResend:function(s){this.$store.dispatch("ResendConfirmationEmail",[s])},handleDeletion:function(s){var e=this;this.$confirm(this.$t("users.deleteUserConfirmation"),{confirmButtonText:"Delete",cancelButtonText:"Cancel",type:"warning"}).then(function(){e.$store.dispatch("DeleteUsers",{users:[s],_userId:s.id})}).catch(function(){e.$message({type:"info",message:"Delete canceled"})})},handleAccountApproval:function(s){this.$store.dispatch("ApproveUsersAccount",{users:[s],_userId:s.id,_statusId:this.statusId})},handleAccountRejection:function(s){var e=this;this.$confirm(this.$t("users.rejectAccountConfirmation"),{confirmButtonText:"Reject",cancelButtonText:"Cancel",type:"warning"}).then(function(){e.$store.dispatch("DeleteUsers",{users:[s],_userId:s.id})}).catch(function(){e.$message({type:"info",message:"Reject canceled"})})},handleEmailConfirmation:function(s){this.$store.dispatch("ConfirmUsersEmail",{users:[s],_userId:s.id,_statusId:this.statusId})},requirePasswordReset:function(s){this.$store.state.user.nodeInfo.metadata.mailerEnabled?this.$store.dispatch("RequirePasswordReset",[s]):this.$alert(this.$t("users.mailerMustBeEnabled"),"Error",{type:"error"})},showAdminAction:function(s){var e=s.local,t=s.id;return e&&this.showDeactivatedButton(t)},showDeactivatedButton:function(s){return this.$store.state.user.id!==s},toggleActivation:function(s){s.deactivated?this.$store.dispatch("ActivateUsers",{users:[s],_userId:s.id}):this.$store.dispatch("DeactivateUsers",{users:[s],_userId:s.id})},toggleTag:function(s,e){s.tags.includes(e)?this.$store.dispatch("RemoveTag",{users:[s],tag:e,_userId:s.id,_statusId:this.statusId}):this.$store.dispatch("AddTag",{users:[s],tag:e,_userId:s.id,_statusId:this.statusId})},toggleUserRight:function(s,e){s.roles[e]?this.$store.dispatch("DeleteRight",{users:[s],right:e,_userId:s.id,_statusId:this.statusId}):this.$store.dispatch("AddRight",{users:[s],right:e,_userId:s.id,_statusId:this.statusId})}}},n=(t("53Av"),t("KHd+")),r=Object(n.a)(a,function(){var s=this,e=s.$createElement,t=s._self._c||e;return t("el-dropdown",{attrs:{"hide-on-click":!1,size:"small",trigger:"click",placement:"top-start"},nativeOn:{click:function(s){s.stopPropagation()}}},[t("div",["users"===s.page?t("el-button",{staticClass:"el-dropdown-link",attrs:{type:"text"}},[s._v("\n "+s._s(s.$t("users.moderation"))+"\n "),s.isDesktop?t("i",{staticClass:"el-icon-arrow-down el-icon--right"}):s._e()]):s._e(),s._v(" "),"userPage"===s.page||"statusPage"===s.page?t("el-button",{staticClass:"moderate-user-button"},[t("span",{staticClass:"moderate-user-button-container"},[t("span",[t("i",{staticClass:"el-icon-edit"}),s._v("\n "+s._s(s.$t("users.moderateUser"))+"\n ")]),s._v(" "),t("i",{staticClass:"el-icon-arrow-down el-icon--right"})])]):s._e()],1),s._v(" "),t("el-dropdown-menu",{staticClass:"moderation-dropdown-menu",attrs:{slot:"dropdown"},slot:"dropdown"},[t("el-dropdown-item",{staticClass:"actor-type-dropdown"},[t("el-select",{staticClass:"actor-type-select",attrs:{placeholder:s.$t("userProfile.actorType")},model:{value:s.actorType,callback:function(e){s.actorType=e},expression:"actorType"}},[t("el-option",{attrs:{label:s.$t("users.service"),value:"Service"}}),s._v(" "),t("el-option",{attrs:{label:s.$t("users.person"),value:"Person"}})],1)],1),s._v(" "),s.showAdminAction(s.user)?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return s.toggleUserRight(s.user,"admin")}}},[s._v("\n "+s._s(s.user.roles.admin?s.$t("users.revokeAdmin"):s.$t("users.grantAdmin"))+"\n ")]):s._e(),s._v(" "),s.showAdminAction(s.user)?t("el-dropdown-item",{nativeOn:{click:function(e){return s.toggleUserRight(s.user,"moderator")}}},[s._v("\n "+s._s(s.user.roles.moderator?s.$t("users.revokeModerator"):s.$t("users.grantModerator"))+"\n ")]):s._e(),s._v(" "),s.showDeactivatedButton(s.user.id)&&"statusPage"!==s.page?t("el-dropdown-item",{attrs:{divided:s.showAdminAction(s.user)},nativeOn:{click:function(e){return s.toggleActivation(s.user)}}},[s._v("\n "+s._s(s.user.deactivated?s.$t("users.activateAccount"):s.$t("users.deactivateAccount"))+"\n ")]):s._e(),s._v(" "),s.showDeactivatedButton(s.user.id)&&"statusPage"!==s.page?t("el-dropdown-item",{nativeOn:{click:function(e){return s.handleDeletion(s.user)}}},[s._v("\n "+s._s(s.$t("users.deleteAccount"))+"\n ")]):s._e(),s._v(" "),s.user.local&&s.user.approval_pending?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return s.handleAccountApproval(s.user)}}},[s._v("\n "+s._s(s.$t("users.approveAccount"))+"\n ")]):s._e(),s._v(" "),s.user.local&&s.user.approval_pending?t("el-dropdown-item",{nativeOn:{click:function(e){return s.handleAccountRejection(s.user)}}},[s._v("\n "+s._s(s.$t("users.rejectAccount"))+"\n ")]):s._e(),s._v(" "),s.user.local&&s.user.confirmation_pending?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return s.handleEmailConfirmation(s.user)}}},[s._v("\n "+s._s(s.$t("users.confirmAccount"))+"\n ")]):s._e(),s._v(" "),s.user.local&&s.user.confirmation_pending?t("el-dropdown-item",{nativeOn:{click:function(e){return s.handleConfirmationResend(s.user)}}},[s._v("\n "+s._s(s.$t("users.resendConfirmation"))+"\n ")]):s._e(),s._v(" "),s.tagPolicyEnabled?t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("mrf_tag:media-force-nsfw")},attrs:{divided:s.showAdminAction(s.user)},nativeOn:{click:function(e){return s.toggleTag(s.user,"mrf_tag:media-force-nsfw")}}},[s._v("\n "+s._s(s.$t("users.forceNsfw"))+"\n "),s.user.tags.includes("mrf_tag:media-force-nsfw")?t("i",{staticClass:"el-icon-check"}):s._e()]):s._e(),s._v(" "),s.tagPolicyEnabled?t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("mrf_tag:media-strip")},nativeOn:{click:function(e){return s.toggleTag(s.user,"mrf_tag:media-strip")}}},[s._v("\n "+s._s(s.$t("users.stripMedia"))+"\n "),s.user.tags.includes("mrf_tag:media-strip")?t("i",{staticClass:"el-icon-check"}):s._e()]):s._e(),s._v(" "),s.tagPolicyEnabled?t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("mrf_tag:force-unlisted")},nativeOn:{click:function(e){return s.toggleTag(s.user,"mrf_tag:force-unlisted")}}},[s._v("\n "+s._s(s.$t("users.forceUnlisted"))+"\n "),s.user.tags.includes("mrf_tag:force-unlisted")?t("i",{staticClass:"el-icon-check"}):s._e()]):s._e(),s._v(" "),s.tagPolicyEnabled?t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("mrf_tag:sandbox")},nativeOn:{click:function(e){return s.toggleTag(s.user,"mrf_tag:sandbox")}}},[s._v("\n "+s._s(s.$t("users.sandbox"))+"\n "),s.user.tags.includes("mrf_tag:sandbox")?t("i",{staticClass:"el-icon-check"}):s._e()]):s._e(),s._v(" "),s.user.local&&s.tagPolicyEnabled?t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("mrf_tag:disable-remote-subscription")},nativeOn:{click:function(e){return s.toggleTag(s.user,"mrf_tag:disable-remote-subscription")}}},[s._v("\n "+s._s(s.$t("users.disableRemoteSubscription"))+"\n "),s.user.tags.includes("mrf_tag:disable-remote-subscription")?t("i",{staticClass:"el-icon-check"}):s._e()]):s._e(),s._v(" "),s.user.local&&s.tagPolicyEnabled?t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("mrf_tag:disable-any-subscription")},nativeOn:{click:function(e){return s.toggleTag(s.user,"mrf_tag:disable-any-subscription")}}},[s._v("\n "+s._s(s.$t("users.disableAnySubscription"))+"\n "),s.user.tags.includes("mrf_tag:disable-any-subscription")?t("i",{staticClass:"el-icon-check"}):s._e()]):s._e(),s._v(" "),s.tagPolicyEnabled?s._e():t("el-dropdown-item",{staticClass:"no-hover",attrs:{divided:""},nativeOn:{click:function(e){return s.enableTagPolicy(e)}}},[s._v("\n "+s._s(s.$t("users.enableTagPolicy"))+"\n ")]),s._v(" "),s.user.local?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return s.getPasswordResetToken(s.user.nickname)}}},[s._v("\n "+s._s(s.$t("users.getPasswordResetToken"))+"\n ")]):s._e(),s._v(" "),s.user.local?t("el-dropdown-item",{nativeOn:{click:function(e){return s.requirePasswordReset(s.user)}}},[s._v("\n "+s._s(s.$t("users.requirePasswordReset"))+"\n ")]):s._e(),s._v(" "),s.user.local?t("el-dropdown-item",{nativeOn:{click:function(e){return s.disableMfa(s.user.nickname)}}},[s._v("\n "+s._s(s.$t("users.disableMfa"))+"\n ")]):s._e()],1)],1)},[],!1,null,null,null);r.options.__file="ModerationDropdown.vue";e.a=r.exports}}]); +//# sourceMappingURL=chunk-3365.b73c30a8.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-3365.b73c30a8.js.map b/priv/static/adminfe/static/js/chunk-3365.b73c30a8.js.map new file mode 100644 index 000000000..d2ad4d9aa --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-3365.b73c30a8.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/users/components/ModerationDropdown.vue?e3f0","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/views/statuses/show.vue?2896","webpack:///./src/views/users/components/ResetPasswordDialog.vue?0b2b","webpack:///./src/views/users/components/ResetPasswordDialog.vue?31da","webpack:///src/views/users/components/ResetPasswordDialog.vue","webpack:///./src/views/users/components/ResetPasswordDialog.vue","webpack:///./src/views/statuses/show.vue?ba35","webpack:///./src/views/statuses/show.vue?6fdf","webpack:///src/views/statuses/show.vue","webpack:///./src/views/statuses/show.vue","webpack:///./src/views/users/components/ModerationDropdown.vue?a26f","webpack:///./src/views/users/components/ModerationDropdown.vue?676e","webpack:///src/views/users/components/ModerationDropdown.vue","webpack:///./src/views/users/components/ModerationDropdown.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ModerationDropdown_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-in","./en-in.js","./en-nz","./en-nz.js","./en-sg","./en-sg.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fil","./fil.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-deva","./gom-deva.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./oc-lnc","./oc-lnc.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tk","./tk.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-mo","./zh-mo.js","./zh-tw","./zh-tw.js","webpackContext","req","id","webpackContextResolve","o","e","Error","code","keys","Object","resolve","module","exports","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_show_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","components_ResetPasswordDialogvue_type_script_lang_js_","name","props","resetPasswordDialogOpen","type","Boolean","default","computed","dialogOpen","this","loading","$store","state","users","passwordResetLink","passwordResetToken","link","token","methods","closeResetPasswordDialog","$emit","component","componentNormalizer","_vm","_h","$createElement","_c","_self","directives","rawName","value","expression","attrs","visible","title","$t","custom-class","on","close","staticClass","_v","_s","href","target","options","__file","__webpack_exports__","statuses_showvue_type_script_lang_js_","components","ModerationDropdown","RebootButton","ResetPasswordDialog","Status","data","showPrivate","isDesktop","app","device","isMobile","isTablet","status","fetchedStatus","statuses","userProfile","statusesLoading","user","statusAuthor","beforeMount","dispatch","$route","params","onTogglePrivate","userId","godmode","openResetPasswordDialog","propertyExists","account","property","_e","to","src","avatar","size","nickname","url","page","status-id","open-reset-token-dialog","reset-password-dialog-open","close-reset-token-dialog","show-checkbox","change","model","callback","$$v","_l","key","user-id","length","components_ModerationDropdownvue_type_script_lang_js_","String","statusId","actorType","get","actor_type","set","_userId","_statusId","tagPolicyEnabled","mrfPolicies","includes","disableMfa","enableTagPolicy","_this","$confirm","confirmButtonText","cancelButtonText","then","$message","message","catch","getPasswordResetToken","handleConfirmationResend","handleDeletion","_this2","handleAccountApproval","handleAccountRejection","_this3","handleEmailConfirmation","requirePasswordReset","nodeInfo","metadata","mailerEnabled","$alert","showAdminAction","_ref","local","showDeactivatedButton","toggleActivation","deactivated","toggleTag","tag","tags","toggleUserRight","right","roles","hide-on-click","trigger","placement","nativeOn","click","$event","stopPropagation","slot","placeholder","label","divided","admin","moderator","approval_pending","confirmation_pending","class","active-tag"],"mappings":"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","file":"static/js/chunk-3365.b73c30a8.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-in\": \"7C5Q\",\n\t\"./en-in.js\": \"7C5Q\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./en-sg\": \"t+mt\",\n\t\"./en-sg.js\": \"t+mt\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fil\": \"1ppg\",\n\t\"./fil.js\": \"1ppg\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-deva\": \"qvJo\",\n\t\"./gom-deva.js\": \"qvJo\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./oc-lnc\": \"Fnuy\",\n\t\"./oc-lnc.js\": \"Fnuy\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tk\": \"Wv91\",\n\t\"./tk.js\": \"Wv91\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-mo\": \"OmwH\",\n\t\"./zh-mo.js\": \"OmwH\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"visible\":_vm.dialogOpen,\"title\":_vm.$t('users.passwordResetTokenCreated'),\"custom-class\":\"password-reset-token-dialog\"},on:{\"close\":_vm.closeResetPasswordDialog}},[_c('div',[_c('p',{staticClass:\"password-reset-token\"},[_vm._v(_vm._s(_vm.$t('users.passwordResetTokenGenerated'))+\" \"+_vm._s(_vm.passwordResetToken))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('users.linkToResetPassword'))+\"\\n \"),_c('a',{staticClass:\"reset-password-link\",attrs:{\"href\":_vm.passwordResetLink,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.passwordResetLink))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./ResetPasswordDialog.vue?vue&type=template&id=e7d3eed4&\"\nimport script from \"./ResetPasswordDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPasswordDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ResetPasswordDialog.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"status-show-container\"},[(_vm.isDesktop || _vm.isTablet)?_c('header',{staticClass:\"user-page-header\"},[_c('div',{staticClass:\"avatar-name-container\"},[(_vm.propertyExists(_vm.user, 'id'))?_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":{ name: 'UsersShow', params: { id: _vm.user.id }}}},[_c('div',{staticClass:\"avatar-name-header\"},[(_vm.propertyExists(_vm.user, 'avatar'))?_c('el-avatar',{attrs:{\"src\":_vm.user.avatar,\"size\":\"large\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('h1',[_vm._v(_vm._s(_vm.user.nickname))]):_c('h1',{staticClass:\"invalid\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")])],1)]):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'url'))?_c('a',{attrs:{\"href\":_vm.user.url,\"target\":\"_blank\"}},[_c('i',{staticClass:\"el-icon-top-right\",attrs:{\"title\":_vm.$t('userProfile.openAccountInInstance')}})]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"left-header-container\"},[_c('moderation-dropdown',{attrs:{\"user\":_vm.user,\"page\":'statusPage',\"status-id\":_vm.status.id},on:{\"open-reset-token-dialog\":_vm.openResetPasswordDialog}}),_vm._v(\" \"),_c('reboot-button')],1)]):_vm._e(),_vm._v(\" \"),(_vm.isMobile)?_c('div',{staticClass:\"status-page-header-container\"},[_c('header',{staticClass:\"user-page-header\"},[_c('div',{staticClass:\"avatar-name-container\"},[(_vm.propertyExists(_vm.user, 'avatar'))?_c('el-avatar',{attrs:{\"src\":_vm.user.avatar,\"size\":\"large\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('h1',[_vm._v(_vm._s(_vm.user.nickname))]):_vm._e()],1),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('moderation-dropdown',{attrs:{\"user\":_vm.user,\"page\":'statusPage'},on:{\"open-reset-token-dialog\":_vm.openResetPasswordDialog}})],1):_vm._e(),_vm._v(\" \"),_c('reset-password-dialog',{attrs:{\"reset-password-dialog-open\":_vm.resetPasswordDialogOpen},on:{\"close-reset-token-dialog\":_vm.closeResetPasswordDialog}}),_vm._v(\" \"),_c('div',{staticClass:\"status-container\"},[_c('status',{attrs:{\"status\":_vm.status,\"account\":_vm.user,\"show-checkbox\":false,\"godmode\":_vm.showPrivate}})],1),_vm._v(\" \"),_c('div',{staticClass:\"recent-statuses-container-show\"},[(_vm.propertyExists(_vm.user, 'nickname'))?_c('h2',{staticClass:\"recent-statuses\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.recentStatuses'))+\" by \"+_vm._s(_vm.user.nickname)+\"\\n \")]):_c('h2',{staticClass:\"recent-statuses\"},[_vm._v(_vm._s(_vm.$t('userProfile.recentStatuses')))]),_vm._v(\" \"),_c('el-checkbox',{staticClass:\"show-private-statuses\",on:{\"change\":_vm.onTogglePrivate},model:{value:(_vm.showPrivate),callback:function ($$v) {_vm.showPrivate=$$v},expression:\"showPrivate\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.showPrivateStatuses'))+\"\\n \")]),_vm._v(\" \"),(!_vm.statusesLoading)?_c('el-timeline',{staticClass:\"statuses\"},[_vm._l((_vm.statuses),function(status){return _c('el-timeline-item',{key:status.id},[_c('status',{attrs:{\"status\":status,\"account\":status.account,\"show-checkbox\":false,\"user-id\":_vm.user.id,\"godmode\":_vm.showPrivate}})],1)}),_vm._v(\" \"),(_vm.statuses.length === 0)?_c('p',{staticClass:\"no-statuses\"},[_vm._v(_vm._s(_vm.$t('userProfile.noStatuses')))]):_vm._e()],2):_vm._e()],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./show.vue?vue&type=template&id=7911e5ce&\"\nimport script from \"./show.vue?vue&type=script&lang=js&\"\nexport * from \"./show.vue?vue&type=script&lang=js&\"\nimport style0 from \"./show.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"show.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"hide-on-click\":false,\"size\":\"small\",\"trigger\":\"click\",\"placement\":\"top-start\"},nativeOn:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',[(_vm.page === 'users')?_c('el-button',{staticClass:\"el-dropdown-link\",attrs:{\"type\":\"text\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderation'))+\"\\n \"),(_vm.isDesktop)?_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.page === 'userPage' || _vm.page === 'statusPage')?_c('el-button',{staticClass:\"moderate-user-button\"},[_c('span',{staticClass:\"moderate-user-button-container\"},[_c('span',[_c('i',{staticClass:\"el-icon-edit\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderateUser'))+\"\\n \")]),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})])]):_vm._e()],1),_vm._v(\" \"),_c('el-dropdown-menu',{staticClass:\"moderation-dropdown-menu\",attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{staticClass:\"actor-type-dropdown\"},[_c('el-select',{staticClass:\"actor-type-select\",attrs:{\"placeholder\":_vm.$t('userProfile.actorType')},model:{value:(_vm.actorType),callback:function ($$v) {_vm.actorType=$$v},expression:\"actorType\"}},[_c('el-option',{attrs:{\"label\":_vm.$t('users.service'),\"value\":\"Service\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":_vm.$t('users.person'),\"value\":\"Person\"}})],1)],1),_vm._v(\" \"),(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.admin ? _vm.$t('users.revokeAdmin') : _vm.$t('users.grantAdmin'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.moderator ? _vm.$t('users.revokeModerator') : _vm.$t('users.grantModerator'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id) && _vm.page !== 'statusPage')?_c('el-dropdown-item',{attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleActivation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.deactivated ? _vm.$t('users.activateAccount') : _vm.$t('users.deactivateAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id) && _vm.page !== 'statusPage')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeletion(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.approval_pending)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleAccountApproval(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.approveAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.approval_pending)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleAccountRejection(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.rejectAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleEmailConfirmation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.confirmAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleConfirmationResend(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.resendConfirmation'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:media-force-nsfw') },attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:media-force-nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceNsfw'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:media-force-nsfw'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:media-strip') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:media-strip')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.stripMedia'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:media-strip'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:force-unlisted') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:force-unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceUnlisted'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:force-unlisted'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:sandbox') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.sandbox'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:sandbox'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:disable-remote-subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:disable-remote-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableRemoteSubscription'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:disable-remote-subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:disable-any-subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:disable-any-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableAnySubscription'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:disable-any-subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(!_vm.tagPolicyEnabled)?_c('el-dropdown-item',{staticClass:\"no-hover\",attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.enableTagPolicy($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.enableTagPolicy'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.getPasswordResetToken(_vm.user.nickname)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.getPasswordResetToken'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.requirePasswordReset(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.requirePasswordReset'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.disableMfa(_vm.user.nickname)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableMfa'))+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ModerationDropdown.vue?vue&type=template&id=346bdee8&\"\nimport script from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ModerationDropdown.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-342d.479e01dd.js b/priv/static/adminfe/static/js/chunk-342d.479e01dd.js new file mode 100644 index 000000000..5ee311c4a --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-342d.479e01dd.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-342d"],{"53Av":function(e,t,s){"use strict";var r=s("lOBV");s.n(r).a},"6eCR":function(e,t,s){"use strict";var r=s("Jdpf");s.n(r).a},"9/5/":function(e,t,s){(function(t){var s="Expected a function",r=NaN,n="[object Symbol]",a=/^\s+|\s+$/g,i=/^[-+]0x[0-9a-f]+$/i,o=/^0b[01]+$/i,c=/^0o[0-7]+$/i,l=parseInt,u="object"==typeof t&&t&&t.Object===Object&&t,d="object"==typeof self&&self&&self.Object===Object&&self,p=u||d||Function("return this")(),f=Object.prototype.toString,v=Math.max,g=Math.min,m=function(){return p.Date.now()};function h(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function _(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&f.call(e)==n}(e))return r;if(h(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=h(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(a,"");var s=o.test(e);return s||c.test(e)?l(e.slice(2),s?2:8):i.test(e)?r:+e}e.exports=function(e,t,r){var n,a,i,o,c,l,u=0,d=!1,p=!1,f=!0;if("function"!=typeof e)throw new TypeError(s);function w(t){var s=n,r=a;return n=a=void 0,u=t,o=e.apply(r,s)}function $(e){var s=e-l;return void 0===l||s>=t||s<0||p&&e-u>=i}function b(){var e=m();if($(e))return k(e);c=setTimeout(b,function(e){var s=t-(e-l);return p?g(s,i-(e-u)):s}(e))}function k(e){return c=void 0,f&&n?w(e):(n=a=void 0,o)}function y(){var e=m(),s=$(e);if(n=arguments,a=this,l=e,s){if(void 0===c)return function(e){return u=e,c=setTimeout(b,t),d?w(e):o}(l);if(p)return c=setTimeout(b,t),w(l)}return void 0===c&&(c=setTimeout(b,t)),o}return t=_(t)||0,h(r)&&(d=!!r.leading,i=(p="maxWait"in r)?v(_(r.maxWait)||0,t):i,f="trailing"in r?!!r.trailing:f),y.cancel=function(){void 0!==c&&clearTimeout(c),u=0,n=l=a=c=void 0},y.flush=function(){return void 0===c?o:k(m())},y}}).call(this,s("yLpj"))},DPTh:function(e,t,s){"use strict";var r=s("vg5t");s.n(r).a},GGbL:function(e,t,s){},Jdpf:function(e,t,s){},RGjw:function(e,t,s){"use strict";s.r(t);var r=s("o0o1"),n=s.n(r),a=s("yXPU"),i=s.n(a),o=s("9/5/"),c=s.n(o),l=s("ZhIB"),u=s.n(l),d=s("lSNA"),p=s.n(d);function f(e,t){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),s.push.apply(s,r)}return s}function v(e){for(var t=1;t-1&&t.push(this.$data.value[Math.max(s,r)]),Math.max(n,a,i)>-1&&t.push(this.$data.value[Math.max(n,a,i)]),t)},toggleFilters:function(){this.$data.value=this.removeOppositeFilters();var e=this.$data.value.reduce(function(e,t){return v(v({},e),{},p()({},t,!0))},{});this.$store.dispatch("ToggleUsersFilter",e)}}},m=(s("xAET"),s("KHd+")),h=Object(m.a)(g,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-select",{staticClass:"select-field",attrs:{clearable:e.isDesktop,placeholder:e.$t("usersFilter.inputPlaceholder"),multiple:""},on:{change:e.toggleFilters},model:{value:e.value,callback:function(t){e.value=t},expression:"value"}},[s("el-option-group",{attrs:{label:e.$t("usersFilter.byAccountType")}},[s("el-option",{attrs:{value:"local",label:"Local"}},[e._v(e._s(e.$t("usersFilter.local")))]),e._v(" "),s("el-option",{attrs:{value:"external",label:"External"}},[e._v(e._s(e.$t("usersFilter.external")))])],1),e._v(" "),s("el-option-group",{attrs:{label:e.$t("usersFilter.byStatus")}},[s("el-option",{attrs:{value:"active",label:"Active"}},[e._v(e._s(e.$t("usersFilter.active")))]),e._v(" "),s("el-option",{attrs:{value:"need_approval",label:"Need Approval"}},[e._v(e._s(e.$t("usersFilter.pending")))]),e._v(" "),s("el-option",{attrs:{value:"deactivated",label:"Deactivated"}},[e._v(e._s(e.$t("usersFilter.deactivated")))])],1)],1)},[],!1,null,"377d5068",null);h.options.__file="UsersFilter.vue";var _=h.exports,w=s("i7Kn"),$={name:"NewAccountDialog",props:{dialogFormVisible:{type:Boolean,default:function(){return!1}}},data:function(){return{newUserForm:{nickname:"",email:"",password:""},rules:{nickname:[{validator:this.validateUsername,trigger:"blur"}],email:[{validator:this.validateEmail,trigger:"blur"}],password:[{validator:this.validatePassword,trigger:"blur"}]}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isVisible:{get:function(){return this.$props.dialogFormVisible},set:function(){this.closeDialogWindow()}},getLabelWidth:function(){return this.isDesktop?"120px":"85px"}},methods:{closeDialogWindow:function(){this.$emit("closeWindow")},resetForm:function(){var e=this;this.$nextTick(function(){e.$refs.newUserForm.resetFields()})},submitForm:function(e){var t=this;this.$refs[e].validate(function(e){if(!e)return t.$message({type:"error",message:t.$t("users.submitFormError")}),!1;t.$emit("createNewAccount",t.$data.newUserForm)})},validateEmail:function(e,t,s){return""===t?s(new Error(this.$t("users.emptyEmailError"))):this.validEmail(t)?s():s(new Error(this.$t("users.invalidEmailError")))},validatePassword:function(e,t,s){return""===t?s(new Error(this.$t("users.emptyPasswordError"))):s()},validateUsername:function(e,t,s){return""===t?s(new Error(this.$t("users.emptyNicknameError"))):this.validNickname(t)?s():s(new Error(this.$t("users.invalidNicknameError")))},validEmail:function(e){return/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(e)},validNickname:function(e){return/^[a-zA-Z\d_-]+$/.test(e)}}},b=(s("DPTh"),Object(m.a)($,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-dialog",{attrs:{visible:e.isVisible,"show-close":!1,title:e.$t("users.createAccount"),"custom-class":"create-user-dialog"},on:{"update:visible":function(t){e.isVisible=t},open:e.resetForm}},[s("el-form",{ref:"newUserForm",attrs:{model:e.newUserForm,rules:e.rules,"label-width":e.getLabelWidth,"status-icon":""}},[s("el-form-item",{staticClass:"create-account-form-item",attrs:{label:e.$t("users.username"),prop:"nickname"}},[s("el-input",{attrs:{name:"nickname",autofocus:""},model:{value:e.newUserForm.nickname,callback:function(t){e.$set(e.newUserForm,"nickname",t)},expression:"newUserForm.nickname"}})],1),e._v(" "),s("el-form-item",{staticClass:"create-account-form-item",attrs:{label:e.$t("users.email"),prop:"email"}},[s("el-input",{attrs:{name:"email",type:"email"},model:{value:e.newUserForm.email,callback:function(t){e.$set(e.newUserForm,"email",t)},expression:"newUserForm.email"}})],1),e._v(" "),s("el-form-item",{staticClass:"create-account-form-item-without-margin",attrs:{label:e.$t("users.password"),prop:"password"}},[s("el-input",{attrs:{type:"password",name:"password",autocomplete:"off"},model:{value:e.newUserForm.password,callback:function(t){e.$set(e.newUserForm,"password",t)},expression:"newUserForm.password"}})],1)],1),e._v(" "),s("span",{attrs:{slot:"footer"},slot:"footer"},[s("el-button",{on:{click:e.closeDialogWindow}},[e._v(e._s(e.$t("users.cancel")))]),e._v(" "),s("el-button",{attrs:{type:"primary"},on:{click:function(t){return e.submitForm("newUserForm")}}},[e._v(e._s(e.$t("users.create")))])],1)],1)},[],!1,null,null,null));b.options.__file="NewAccountDialog.vue";var k=b.exports,y=s("tPM3"),P=s("rIUS"),O=s("WjBP"),D={name:"Users",components:{NewAccountDialog:k,ModerationDropdown:y.a,MultipleUsersMenu:w.a,RebootButton:P.a,ResetPasswordDialog:O.a,UsersFilter:_},filters:{truncate:function(e,t,s){return e.length0},showDeactivatedButton:function(e){return this.$store.state.user.id!==e}}},A=(s("6eCR"),Object(m.a)(D,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"users-container"},[s("div",{staticClass:"users-header-container"},[s("h1",[e._v("\n "+e._s(e.$t("users.users"))+"\n "),s("span",{staticClass:"user-count"},[e._v("("+e._s(e.normalizedUsersCount)+")")])]),e._v(" "),s("reboot-button")],1),e._v(" "),s("div",{staticClass:"filter-container"},[s("users-filter"),e._v(" "),s("el-input",{staticClass:"search",attrs:{placeholder:e.$t("users.search"),"prefix-icon":"el-icon-search"},on:{input:e.handleDebounceSearchInput},model:{value:e.search,callback:function(t){e.search=t},expression:"search"}})],1),e._v(" "),s("div",{staticClass:"actions-container"},[s("el-button",{staticClass:"actions-button",on:{click:function(t){e.createAccountDialogOpen=!0}}},[s("span",{staticClass:"create-account"},[s("i",{staticClass:"el-icon-plus"}),e._v("\n "+e._s(e.$t("users.createAccount"))+"\n ")])]),e._v(" "),s("multiple-users-menu",{attrs:{"selected-users":e.selectedUsers},on:{"apply-action":e.clearSelection}})],1),e._v(" "),s("new-account-dialog",{attrs:{"dialog-form-visible":e.createAccountDialogOpen},on:{createNewAccount:e.createNewAccount,closeWindow:function(t){e.createAccountDialogOpen=!1}}}),e._v(" "),s("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],ref:"usersTable",staticStyle:{width:"100%"},attrs:{data:e.users,"row-key":"id"},on:{"row-click":function(t){return e.handleRowClick(t)},"selection-change":e.handleSelectionChange}},[e.isDesktop?s("el-table-column",{attrs:{type:"selection","reserve-selection":"",width:"44",align:"center"}}):e._e(),e._v(" "),s("el-table-column",{attrs:{"min-width":e.width,label:e.$t("users.id"),prop:"id"}}),e._v(" "),s("el-table-column",{attrs:{label:e.$t("users.name"),prop:"nickname"},scopedSlots:e._u([{key:"default",fn:function(t){return[e._v("\n "+e._s(t.row.nickname)+"\n "),e.isDesktop?s("el-tag",{attrs:{type:"info",size:"mini"}},[s("span",[e._v(e._s(t.row.local?e.$t("users.local"):e.$t("users.external")))])]):e._e()]}}])}),e._v(" "),s("el-table-column",{attrs:{"min-width":e.width,label:e.$t("users.status")},scopedSlots:e._u([{key:"default",fn:function(t){return[!t.row.deactivated&!t.row.approval_pending?s("el-tag",{attrs:{type:"success"}},[e.isDesktop?s("span",[e._v(e._s(e.$t("users.active")))]):s("i",{staticClass:"el-icon-circle-check"})]):e._e(),e._v(" "),t.row.deactivated&!t.row.approval_pending?s("el-tag",{attrs:{type:"danger"}},[e.isDesktop?s("span",[e._v(e._s(e.$t("users.deactivated")))]):s("i",{staticClass:"el-icon-circle-close"})]):e._e(),e._v(" "),s("el-tooltip",{attrs:{content:e.$t("users.unapprovedAccount"),effect:"dark"}},[t.row.approval_pending?s("el-tag",{attrs:{type:"info"}},[e.isDesktop?s("span",[e._v(e._s(e.$t("users.unapproved")))]):s("i",{staticClass:"el-icon-warning-outline"})]):e._e()],1),e._v(" "),t.row.roles.admin?s("el-tag",[s("span",[e._v(e._s(e.isDesktop?e.$t("users.admin"):e.getFirstLetter(e.$t("users.admin"))))])]):e._e(),e._v(" "),t.row.roles.moderator?s("el-tag",[s("span",[e._v(e._s(e.isDesktop?e.$t("users.moderator"):e.getFirstLetter(e.$t("users.moderator"))))])]):e._e(),e._v(" "),s("el-tooltip",{attrs:{content:e.$t("users.unconfirmedEmail"),effect:"dark"}},[t.row.confirmation_pending?s("el-tag",{attrs:{type:"info"}},[e._v("\n "+e._s(e.isDesktop?e.$t("users.unconfirmed"):e.getFirstLetter(e.$t("users.unconfirmed")))+"\n ")]):e._e()],1)]}}])}),e._v(" "),e.pendingView&&e.isDesktop?s("el-table-column",{attrs:{label:e.$t("users.registrationReason")},scopedSlots:e._u([{key:"default",fn:function(t){return[e.regReason(t.row.registration_reason)?s("el-tooltip",{attrs:{content:t.row.registration_reason,"popper-class":"reason-tooltip",effect:"dark"}},[s("span",[e._v('\n "'+e._s(e._f("truncate")(t.row.registration_reason,100,"..."))+'"\n ')])]):e._e()]}}],null,!1,975858353)}):e._e(),e._v(" "),s("el-table-column",{attrs:{label:e.$t("users.actions"),fixed:"right"},scopedSlots:e._u([{key:"default",fn:function(t){return[e.propertyExists(t.row,"nickname")?s("moderation-dropdown",{attrs:{user:t.row,page:"users"},on:{"open-reset-token-dialog":e.openResetPasswordDialog}}):s("el-button",{attrs:{type:"text",disabled:""}},[e._v("\n "+e._s(e.$t("users.moderation"))+"\n "),e.isDesktop?s("i",{staticClass:"el-icon-arrow-down el-icon--right"}):e._e()])]}}])})],1),e._v(" "),s("reset-password-dialog",{attrs:{"reset-password-dialog-open":e.resetPasswordDialogOpen},on:{"close-reset-token-dialog":e.closeResetPasswordDialog}}),e._v(" "),e.loading?e._e():s("div",{staticClass:"pagination"},[s("el-pagination",{attrs:{total:e.usersCount,"current-page":e.currentPage,"page-size":e.pageSize,"hide-on-single-page":"",layout:"prev, pager, next"},on:{"current-change":e.handlePageChange}})],1)],1)},[],!1,null,null,null));A.options.__file="index.vue";t.default=A.exports},WjBP:function(e,t,s){"use strict";var r={name:"ResetPasswordDialog",props:{resetPasswordDialogOpen:{type:Boolean,default:!1}},computed:{dialogOpen:function(){return this.resetPasswordDialogOpen},loading:function(){return this.$store.state.users.loading},passwordResetLink:function(){return this.$store.state.users.passwordResetToken.link},passwordResetToken:function(){return this.$store.state.users.passwordResetToken.token}},methods:{closeResetPasswordDialog:function(){this.$emit("close-reset-token-dialog")}}},n=s("KHd+"),a=Object(n.a)(r,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-dialog",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],attrs:{visible:e.dialogOpen,title:e.$t("users.passwordResetTokenCreated"),"custom-class":"password-reset-token-dialog"},on:{close:e.closeResetPasswordDialog}},[s("div",[s("p",{staticClass:"password-reset-token"},[e._v(e._s(e.$t("users.passwordResetTokenGenerated"))+" "+e._s(e.passwordResetToken))]),e._v(" "),s("p",[e._v(e._s(e.$t("users.linkToResetPassword"))+"\n "),s("a",{staticClass:"reset-password-link",attrs:{href:e.passwordResetLink,target:"_blank"}},[e._v(e._s(e.passwordResetLink))])])])])},[],!1,null,null,null);a.options.__file="ResetPasswordDialog.vue";t.a=a.exports},lOBV:function(e,t,s){},tPM3:function(e,t,s){"use strict";var r={name:"ModerationDropdown",props:{user:{type:Object,default:function(){return{}}},page:{type:String,default:"users"},statusId:{type:String,default:""}},computed:{actorType:{get:function(){return this.user.actor_type},set:function(e){this.$store.dispatch("UpdateActorType",{user:this.user,type:e,_userId:this.user.id,_statusId:this.statusId})}},isDesktop:function(){return"desktop"===this.$store.state.app.device},tagPolicyEnabled:function(){return this.$store.state.users.mrfPolicies.includes("Pleroma.Web.ActivityPub.MRF.TagPolicy")}},methods:{disableMfa:function(e){this.$store.dispatch("DisableMfa",e)},enableTagPolicy:function(){var e=this;this.$confirm(this.$t("users.confirmEnablingTagPolicy"),{confirmButtonText:"Yes",cancelButtonText:"Cancel",type:"warning"}).then(function(){e.$message({type:"success",message:e.$t("users.enableTagPolicySuccessMessage")}),e.$store.dispatch("EnableTagPolicy")}).catch(function(){e.$message({type:"info",message:"Canceled"})})},getPasswordResetToken:function(e){this.$emit("open-reset-token-dialog"),this.$store.dispatch("GetPasswordResetToken",e)},handleConfirmationResend:function(e){this.$store.dispatch("ResendConfirmationEmail",[e])},handleDeletion:function(e){var t=this;this.$confirm(this.$t("users.deleteUserConfirmation"),{confirmButtonText:"Delete",cancelButtonText:"Cancel",type:"warning"}).then(function(){t.$store.dispatch("DeleteUsers",{users:[e],_userId:e.id})}).catch(function(){t.$message({type:"info",message:"Delete canceled"})})},handleAccountApproval:function(e){this.$store.dispatch("ApproveUsersAccount",{users:[e],_userId:e.id,_statusId:this.statusId})},handleAccountRejection:function(e){var t=this;this.$confirm(this.$t("users.rejectAccountConfirmation"),{confirmButtonText:"Reject",cancelButtonText:"Cancel",type:"warning"}).then(function(){t.$store.dispatch("DeleteUsers",{users:[e],_userId:e.id})}).catch(function(){t.$message({type:"info",message:"Reject canceled"})})},handleEmailConfirmation:function(e){this.$store.dispatch("ConfirmUsersEmail",{users:[e],_userId:e.id,_statusId:this.statusId})},requirePasswordReset:function(e){this.$store.state.user.nodeInfo.metadata.mailerEnabled?this.$store.dispatch("RequirePasswordReset",[e]):this.$alert(this.$t("users.mailerMustBeEnabled"),"Error",{type:"error"})},showAdminAction:function(e){var t=e.local,s=e.id;return t&&this.showDeactivatedButton(s)},showDeactivatedButton:function(e){return this.$store.state.user.id!==e},toggleActivation:function(e){e.deactivated?this.$store.dispatch("ActivateUsers",{users:[e],_userId:e.id}):this.$store.dispatch("DeactivateUsers",{users:[e],_userId:e.id})},toggleTag:function(e,t){e.tags.includes(t)?this.$store.dispatch("RemoveTag",{users:[e],tag:t,_userId:e.id,_statusId:this.statusId}):this.$store.dispatch("AddTag",{users:[e],tag:t,_userId:e.id,_statusId:this.statusId})},toggleUserRight:function(e,t){e.roles[t]?this.$store.dispatch("DeleteRight",{users:[e],right:t,_userId:e.id,_statusId:this.statusId}):this.$store.dispatch("AddRight",{users:[e],right:t,_userId:e.id,_statusId:this.statusId})}}},n=(s("53Av"),s("KHd+")),a=Object(n.a)(r,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-dropdown",{attrs:{"hide-on-click":!1,size:"small",trigger:"click",placement:"top-start"},nativeOn:{click:function(e){e.stopPropagation()}}},[s("div",["users"===e.page?s("el-button",{staticClass:"el-dropdown-link",attrs:{type:"text"}},[e._v("\n "+e._s(e.$t("users.moderation"))+"\n "),e.isDesktop?s("i",{staticClass:"el-icon-arrow-down el-icon--right"}):e._e()]):e._e(),e._v(" "),"userPage"===e.page||"statusPage"===e.page?s("el-button",{staticClass:"moderate-user-button"},[s("span",{staticClass:"moderate-user-button-container"},[s("span",[s("i",{staticClass:"el-icon-edit"}),e._v("\n "+e._s(e.$t("users.moderateUser"))+"\n ")]),e._v(" "),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})])]):e._e()],1),e._v(" "),s("el-dropdown-menu",{staticClass:"moderation-dropdown-menu",attrs:{slot:"dropdown"},slot:"dropdown"},[s("el-dropdown-item",{staticClass:"actor-type-dropdown"},[s("el-select",{staticClass:"actor-type-select",attrs:{placeholder:e.$t("userProfile.actorType")},model:{value:e.actorType,callback:function(t){e.actorType=t},expression:"actorType"}},[s("el-option",{attrs:{label:e.$t("users.service"),value:"Service"}}),e._v(" "),s("el-option",{attrs:{label:e.$t("users.person"),value:"Person"}})],1)],1),e._v(" "),e.showAdminAction(e.user)?s("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(t){return e.toggleUserRight(e.user,"admin")}}},[e._v("\n "+e._s(e.user.roles.admin?e.$t("users.revokeAdmin"):e.$t("users.grantAdmin"))+"\n ")]):e._e(),e._v(" "),e.showAdminAction(e.user)?s("el-dropdown-item",{nativeOn:{click:function(t){return e.toggleUserRight(e.user,"moderator")}}},[e._v("\n "+e._s(e.user.roles.moderator?e.$t("users.revokeModerator"):e.$t("users.grantModerator"))+"\n ")]):e._e(),e._v(" "),e.showDeactivatedButton(e.user.id)&&"statusPage"!==e.page?s("el-dropdown-item",{attrs:{divided:e.showAdminAction(e.user)},nativeOn:{click:function(t){return e.toggleActivation(e.user)}}},[e._v("\n "+e._s(e.user.deactivated?e.$t("users.activateAccount"):e.$t("users.deactivateAccount"))+"\n ")]):e._e(),e._v(" "),e.showDeactivatedButton(e.user.id)&&"statusPage"!==e.page?s("el-dropdown-item",{nativeOn:{click:function(t){return e.handleDeletion(e.user)}}},[e._v("\n "+e._s(e.$t("users.deleteAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.approval_pending?s("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(t){return e.handleAccountApproval(e.user)}}},[e._v("\n "+e._s(e.$t("users.approveAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.approval_pending?s("el-dropdown-item",{nativeOn:{click:function(t){return e.handleAccountRejection(e.user)}}},[e._v("\n "+e._s(e.$t("users.rejectAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.confirmation_pending?s("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(t){return e.handleEmailConfirmation(e.user)}}},[e._v("\n "+e._s(e.$t("users.confirmAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.confirmation_pending?s("el-dropdown-item",{nativeOn:{click:function(t){return e.handleConfirmationResend(e.user)}}},[e._v("\n "+e._s(e.$t("users.resendConfirmation"))+"\n ")]):e._e(),e._v(" "),e.tagPolicyEnabled?s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:media-force-nsfw")},attrs:{divided:e.showAdminAction(e.user)},nativeOn:{click:function(t){return e.toggleTag(e.user,"mrf_tag:media-force-nsfw")}}},[e._v("\n "+e._s(e.$t("users.forceNsfw"))+"\n "),e.user.tags.includes("mrf_tag:media-force-nsfw")?s("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.tagPolicyEnabled?s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:media-strip")},nativeOn:{click:function(t){return e.toggleTag(e.user,"mrf_tag:media-strip")}}},[e._v("\n "+e._s(e.$t("users.stripMedia"))+"\n "),e.user.tags.includes("mrf_tag:media-strip")?s("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.tagPolicyEnabled?s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:force-unlisted")},nativeOn:{click:function(t){return e.toggleTag(e.user,"mrf_tag:force-unlisted")}}},[e._v("\n "+e._s(e.$t("users.forceUnlisted"))+"\n "),e.user.tags.includes("mrf_tag:force-unlisted")?s("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.tagPolicyEnabled?s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:sandbox")},nativeOn:{click:function(t){return e.toggleTag(e.user,"mrf_tag:sandbox")}}},[e._v("\n "+e._s(e.$t("users.sandbox"))+"\n "),e.user.tags.includes("mrf_tag:sandbox")?s("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.user.local&&e.tagPolicyEnabled?s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:disable-remote-subscription")},nativeOn:{click:function(t){return e.toggleTag(e.user,"mrf_tag:disable-remote-subscription")}}},[e._v("\n "+e._s(e.$t("users.disableRemoteSubscription"))+"\n "),e.user.tags.includes("mrf_tag:disable-remote-subscription")?s("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.user.local&&e.tagPolicyEnabled?s("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:disable-any-subscription")},nativeOn:{click:function(t){return e.toggleTag(e.user,"mrf_tag:disable-any-subscription")}}},[e._v("\n "+e._s(e.$t("users.disableAnySubscription"))+"\n "),e.user.tags.includes("mrf_tag:disable-any-subscription")?s("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.tagPolicyEnabled?e._e():s("el-dropdown-item",{staticClass:"no-hover",attrs:{divided:""},nativeOn:{click:function(t){return e.enableTagPolicy(t)}}},[e._v("\n "+e._s(e.$t("users.enableTagPolicy"))+"\n ")]),e._v(" "),e.user.local?s("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(t){return e.getPasswordResetToken(e.user.nickname)}}},[e._v("\n "+e._s(e.$t("users.getPasswordResetToken"))+"\n ")]):e._e(),e._v(" "),e.user.local?s("el-dropdown-item",{nativeOn:{click:function(t){return e.requirePasswordReset(e.user)}}},[e._v("\n "+e._s(e.$t("users.requirePasswordReset"))+"\n ")]):e._e(),e._v(" "),e.user.local?s("el-dropdown-item",{nativeOn:{click:function(t){return e.disableMfa(e.user.nickname)}}},[e._v("\n "+e._s(e.$t("users.disableMfa"))+"\n ")]):e._e()],1)],1)},[],!1,null,null,null);a.options.__file="ModerationDropdown.vue";t.a=a.exports},vg5t:function(e,t,s){},xAET:function(e,t,s){"use strict";var r=s("GGbL");s.n(r).a}}]); +//# sourceMappingURL=chunk-342d.479e01dd.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-342d.479e01dd.js.map b/priv/static/adminfe/static/js/chunk-342d.479e01dd.js.map new file mode 100644 index 000000000..b73bbb0aa --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-342d.479e01dd.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/users/components/ModerationDropdown.vue?e3f0","webpack:///./src/views/users/index.vue?1afe","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./src/views/users/components/NewAccountDialog.vue?d353","webpack:///./src/views/users/index.vue?e6df","webpack:///src/views/users/components/UsersFilter.vue","webpack:///./src/views/users/components/UsersFilter.vue?6a82","webpack:///./src/views/users/components/UsersFilter.vue","webpack:///./src/views/users/components/UsersFilter.vue?4ed7","webpack:///./src/views/users/components/NewAccountDialog.vue?9018","webpack:///src/views/users/components/NewAccountDialog.vue","webpack:///./src/views/users/components/NewAccountDialog.vue","webpack:///./src/views/users/components/NewAccountDialog.vue?c2fb","webpack:///./src/views/users/index.vue?0a29","webpack:///src/views/users/index.vue","webpack:///./src/views/users/index.vue","webpack:///./src/views/users/components/ResetPasswordDialog.vue?0b2b","webpack:///./src/views/users/components/ResetPasswordDialog.vue?31da","webpack:///src/views/users/components/ResetPasswordDialog.vue","webpack:///./src/views/users/components/ResetPasswordDialog.vue","webpack:///./src/views/users/components/ModerationDropdown.vue?a26f","webpack:///./src/views/users/components/ModerationDropdown.vue?676e","webpack:///src/views/users/components/ModerationDropdown.vue","webpack:///./src/views/users/components/ModerationDropdown.vue","webpack:///./src/views/users/components/UsersFilter.vue?52bf"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ModerationDropdown_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","global","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","Object","freeSelf","self","root","Function","objectToString","prototype","toString","nativeMax","Math","max","nativeMin","min","now","Date","isObject","value","type","toNumber","isObjectLike","call","isSymbol","other","valueOf","replace","isBinary","test","slice","module","exports","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","cancel","clearTimeout","flush","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_NewAccountDialog_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","components_UsersFiltervue_type_script_lang_js_","data","computed","isDesktop","$store","state","app","device","created","currentFilters","$data","reduce","acc","filter","_objectSpread","defineProperty_default","dispatch","methods","removeOppositeFilters","filtersQuantity","keys","users","filters","length","indexOfLocal","indexOf","indexOfExternal","indexOfActive","indexOfDeactivated","indexOfPending","push","toggleFilters","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","clearable","placeholder","$t","multiple","on","change","model","callback","$$v","expression","label","_v","_s","__file","UsersFilter","components_NewAccountDialogvue_type_script_lang_js_","name","props","dialogFormVisible","Boolean","default","newUserForm","nickname","email","password","rules","validator","validateUsername","trigger","validateEmail","validatePassword","isVisible","get","$props","set","closeDialogWindow","getLabelWidth","$emit","resetForm","_this","$nextTick","$refs","resetFields","submitForm","formName","_this2","validate","valid","$message","message","rule","Error","validEmail","validNickname","NewAccountDialog_component","visible","show-close","title","custom-class","update:visible","$event","open","ref","label-width","status-icon","prop","autofocus","$set","autocomplete","slot","click","NewAccountDialog","views_usersvue_type_script_lang_js_","components","ModerationDropdown","MultipleUsersMenu","RebootButton","ResetPasswordDialog","truncate","text","suffix","substring","search","selectedUsers","createAccountDialogOpen","resetPasswordDialogOpen","loading","normalizedUsersCount","numeral_default","totalUsersCount","format","pageSize","currentPage","isMobile","fetchedUsers","usersCount","pendingView","width","handleDebounceSearchInput","lodash_debounce_default","query","page","mounted","destroyed","clearSelection","usersTable","closeResetPasswordDialog","createNewAccount","accountData","asyncToGenerator_default","regenerator_default","a","mark","_callee","wrap","_context","prev","next","stop","getFirstLetter","str","charAt","toUpperCase","handlePageChange","searchQuery","handleRowClick","row","id","$router","params","handleSelectionChange","openResetPasswordDialog","propertyExists","account","property","regReason","reason","showDeactivatedButton","user","users_component","prefix-icon","input","selected-users","apply-action","dialog-form-visible","closeWindow","directives","rawName","staticStyle","row-key","row-click","selection-change","reserve-selection","align","_e","min-width","scopedSlots","_u","key","fn","scope","size","local","deactivated","approval_pending","content","effect","roles","registration_reason","popper-class","_f","fixed","open-reset-token-dialog","disabled","reset-password-dialog-open","close-reset-token-dialog","total","current-page","page-size","hide-on-single-page","layout","current-change","__webpack_exports__","components_ResetPasswordDialogvue_type_script_lang_js_","dialogOpen","passwordResetLink","passwordResetToken","link","token","close","href","target","components_ModerationDropdownvue_type_script_lang_js_","String","statusId","actorType","actor_type","_userId","_statusId","tagPolicyEnabled","mrfPolicies","includes","disableMfa","enableTagPolicy","$confirm","confirmButtonText","cancelButtonText","then","catch","getPasswordResetToken","handleConfirmationResend","handleDeletion","handleAccountApproval","handleAccountRejection","_this3","handleEmailConfirmation","requirePasswordReset","nodeInfo","metadata","mailerEnabled","$alert","showAdminAction","_ref","toggleActivation","toggleTag","tag","tags","toggleUserRight","right","hide-on-click","placement","nativeOn","stopPropagation","divided","admin","moderator","confirmation_pending","class","active-tag","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_UsersFilter_vue_vue_type_style_index_0_id_377d5068_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__"],"mappings":"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","file":"static/js/chunk-342d.479e01dd.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"users-container\"},[_c('div',{staticClass:\"users-header-container\"},[_c('h1',[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.users'))+\"\\n \"),_c('span',{staticClass:\"user-count\"},[_vm._v(\"(\"+_vm._s(_vm.normalizedUsersCount)+\")\")])]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"filter-container\"},[_c('users-filter'),_vm._v(\" \"),_c('el-input',{staticClass:\"search\",attrs:{\"placeholder\":_vm.$t('users.search'),\"prefix-icon\":\"el-icon-search\"},on:{\"input\":_vm.handleDebounceSearchInput},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"actions-container\"},[_c('el-button',{staticClass:\"actions-button\",on:{\"click\":function($event){_vm.createAccountDialogOpen = true}}},[_c('span',{staticClass:\"create-account\"},[_c('i',{staticClass:\"el-icon-plus\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.createAccount'))+\"\\n \")])]),_vm._v(\" \"),_c('multiple-users-menu',{attrs:{\"selected-users\":_vm.selectedUsers},on:{\"apply-action\":_vm.clearSelection}})],1),_vm._v(\" \"),_c('new-account-dialog',{attrs:{\"dialog-form-visible\":_vm.createAccountDialogOpen},on:{\"createNewAccount\":_vm.createNewAccount,\"closeWindow\":function($event){_vm.createAccountDialogOpen = false}}}),_vm._v(\" \"),_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],ref:\"usersTable\",staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.users,\"row-key\":\"id\"},on:{\"row-click\":function($event){return _vm.handleRowClick($event)},\"selection-change\":_vm.handleSelectionChange}},[(_vm.isDesktop)?_c('el-table-column',{attrs:{\"type\":\"selection\",\"reserve-selection\":\"\",\"width\":\"44\",\"align\":\"center\"}}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"min-width\":_vm.width,\"label\":_vm.$t('users.id'),\"prop\":\"id\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('users.name'),\"prop\":\"nickname\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_vm._v(\"\\n \"+_vm._s(scope.row.nickname)+\"\\n \"),(_vm.isDesktop)?_c('el-tag',{attrs:{\"type\":\"info\",\"size\":\"mini\"}},[_c('span',[_vm._v(_vm._s(scope.row.local ? _vm.$t('users.local') : _vm.$t('users.external')))])]):_vm._e()]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"min-width\":_vm.width,\"label\":_vm.$t('users.status')},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(!scope.row.deactivated & !scope.row.approval_pending)?_c('el-tag',{attrs:{\"type\":\"success\"}},[(_vm.isDesktop)?_c('span',[_vm._v(_vm._s(_vm.$t('users.active')))]):_c('i',{staticClass:\"el-icon-circle-check\"})]):_vm._e(),_vm._v(\" \"),(scope.row.deactivated & !scope.row.approval_pending)?_c('el-tag',{attrs:{\"type\":\"danger\"}},[(_vm.isDesktop)?_c('span',[_vm._v(_vm._s(_vm.$t('users.deactivated')))]):_c('i',{staticClass:\"el-icon-circle-close\"})]):_vm._e(),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"content\":_vm.$t('users.unapprovedAccount'),\"effect\":\"dark\"}},[(scope.row.approval_pending)?_c('el-tag',{attrs:{\"type\":\"info\"}},[(_vm.isDesktop)?_c('span',[_vm._v(_vm._s(_vm.$t('users.unapproved')))]):_c('i',{staticClass:\"el-icon-warning-outline\"})]):_vm._e()],1),_vm._v(\" \"),(scope.row.roles.admin)?_c('el-tag',[_c('span',[_vm._v(_vm._s(_vm.isDesktop ? _vm.$t('users.admin') : _vm.getFirstLetter(_vm.$t('users.admin'))))])]):_vm._e(),_vm._v(\" \"),(scope.row.roles.moderator)?_c('el-tag',[_c('span',[_vm._v(_vm._s(_vm.isDesktop ? _vm.$t('users.moderator') : _vm.getFirstLetter(_vm.$t('users.moderator'))))])]):_vm._e(),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"content\":_vm.$t('users.unconfirmedEmail'),\"effect\":\"dark\"}},[(scope.row.confirmation_pending)?_c('el-tag',{attrs:{\"type\":\"info\"}},[_vm._v(\"\\n \"+_vm._s(_vm.isDesktop ? _vm.$t('users.unconfirmed') : _vm.getFirstLetter(_vm.$t('users.unconfirmed')))+\"\\n \")]):_vm._e()],1)]}}])}),_vm._v(\" \"),(_vm.pendingView && _vm.isDesktop)?_c('el-table-column',{attrs:{\"label\":_vm.$t('users.registrationReason')},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(_vm.regReason(scope.row.registration_reason))?_c('el-tooltip',{attrs:{\"content\":scope.row.registration_reason,\"popper-class\":\"reason-tooltip\",\"effect\":\"dark\"}},[_c('span',[_vm._v(\"\\n \\\"\"+_vm._s(_vm._f(\"truncate\")(scope.row.registration_reason,100, '...'))+\"\\\"\\n \")])]):_vm._e()]}}],null,false,975858353)}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('users.actions'),\"fixed\":\"right\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [(_vm.propertyExists(scope.row, 'nickname'))?_c('moderation-dropdown',{attrs:{\"user\":scope.row,\"page\":'users'},on:{\"open-reset-token-dialog\":_vm.openResetPasswordDialog}}):_c('el-button',{attrs:{\"type\":\"text\",\"disabled\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderation'))+\"\\n \"),(_vm.isDesktop)?_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"}):_vm._e()])]}}])})],1),_vm._v(\" \"),_c('reset-password-dialog',{attrs:{\"reset-password-dialog-open\":_vm.resetPasswordDialogOpen},on:{\"close-reset-token-dialog\":_vm.closeResetPasswordDialog}}),_vm._v(\" \"),(!_vm.loading)?_c('div',{staticClass:\"pagination\"},[_c('el-pagination',{attrs:{\"total\":_vm.usersCount,\"current-page\":_vm.currentPage,\"page-size\":_vm.pageSize,\"hide-on-single-page\":\"\",\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.handlePageChange}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UsersFilter.vue?vue&type=template&id=377d5068&scoped=true&\"\nimport script from \"./UsersFilter.vue?vue&type=script&lang=js&\"\nexport * from \"./UsersFilter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UsersFilter.vue?vue&type=style&index=0&id=377d5068&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"377d5068\",\n null\n \n)\n\ncomponent.options.__file = \"UsersFilter.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-select',{staticClass:\"select-field\",attrs:{\"clearable\":_vm.isDesktop,\"placeholder\":_vm.$t('usersFilter.inputPlaceholder'),\"multiple\":\"\"},on:{\"change\":_vm.toggleFilters},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},[_c('el-option-group',{attrs:{\"label\":_vm.$t('usersFilter.byAccountType')}},[_c('el-option',{attrs:{\"value\":\"local\",\"label\":\"Local\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.local')))]),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"external\",\"label\":\"External\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.external')))])],1),_vm._v(\" \"),_c('el-option-group',{attrs:{\"label\":_vm.$t('usersFilter.byStatus')}},[_c('el-option',{attrs:{\"value\":\"active\",\"label\":\"Active\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.active')))]),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"need_approval\",\"label\":\"Need Approval\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.pending')))]),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"deactivated\",\"label\":\"Deactivated\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.deactivated')))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./NewAccountDialog.vue?vue&type=template&id=598523c6&\"\nimport script from \"./NewAccountDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./NewAccountDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NewAccountDialog.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"NewAccountDialog.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"visible\":_vm.isVisible,\"show-close\":false,\"title\":_vm.$t('users.createAccount'),\"custom-class\":\"create-user-dialog\"},on:{\"update:visible\":function($event){_vm.isVisible=$event},\"open\":_vm.resetForm}},[_c('el-form',{ref:\"newUserForm\",attrs:{\"model\":_vm.newUserForm,\"rules\":_vm.rules,\"label-width\":_vm.getLabelWidth,\"status-icon\":\"\"}},[_c('el-form-item',{staticClass:\"create-account-form-item\",attrs:{\"label\":_vm.$t('users.username'),\"prop\":\"nickname\"}},[_c('el-input',{attrs:{\"name\":\"nickname\",\"autofocus\":\"\"},model:{value:(_vm.newUserForm.nickname),callback:function ($$v) {_vm.$set(_vm.newUserForm, \"nickname\", $$v)},expression:\"newUserForm.nickname\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticClass:\"create-account-form-item\",attrs:{\"label\":_vm.$t('users.email'),\"prop\":\"email\"}},[_c('el-input',{attrs:{\"name\":\"email\",\"type\":\"email\"},model:{value:(_vm.newUserForm.email),callback:function ($$v) {_vm.$set(_vm.newUserForm, \"email\", $$v)},expression:\"newUserForm.email\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticClass:\"create-account-form-item-without-margin\",attrs:{\"label\":_vm.$t('users.password'),\"prop\":\"password\"}},[_c('el-input',{attrs:{\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"off\"},model:{value:(_vm.newUserForm.password),callback:function ($$v) {_vm.$set(_vm.newUserForm, \"password\", $$v)},expression:\"newUserForm.password\"}})],1)],1),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":_vm.closeDialogWindow}},[_vm._v(_vm._s(_vm.$t('users.cancel')))]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.submitForm('newUserForm')}}},[_vm._v(_vm._s(_vm.$t('users.create')))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=4a4216bc&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"visible\":_vm.dialogOpen,\"title\":_vm.$t('users.passwordResetTokenCreated'),\"custom-class\":\"password-reset-token-dialog\"},on:{\"close\":_vm.closeResetPasswordDialog}},[_c('div',[_c('p',{staticClass:\"password-reset-token\"},[_vm._v(_vm._s(_vm.$t('users.passwordResetTokenGenerated'))+\" \"+_vm._s(_vm.passwordResetToken))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('users.linkToResetPassword'))+\"\\n \"),_c('a',{staticClass:\"reset-password-link\",attrs:{\"href\":_vm.passwordResetLink,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.passwordResetLink))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./ResetPasswordDialog.vue?vue&type=template&id=e7d3eed4&\"\nimport script from \"./ResetPasswordDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPasswordDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ResetPasswordDialog.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"hide-on-click\":false,\"size\":\"small\",\"trigger\":\"click\",\"placement\":\"top-start\"},nativeOn:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',[(_vm.page === 'users')?_c('el-button',{staticClass:\"el-dropdown-link\",attrs:{\"type\":\"text\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderation'))+\"\\n \"),(_vm.isDesktop)?_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.page === 'userPage' || _vm.page === 'statusPage')?_c('el-button',{staticClass:\"moderate-user-button\"},[_c('span',{staticClass:\"moderate-user-button-container\"},[_c('span',[_c('i',{staticClass:\"el-icon-edit\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderateUser'))+\"\\n \")]),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})])]):_vm._e()],1),_vm._v(\" \"),_c('el-dropdown-menu',{staticClass:\"moderation-dropdown-menu\",attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{staticClass:\"actor-type-dropdown\"},[_c('el-select',{staticClass:\"actor-type-select\",attrs:{\"placeholder\":_vm.$t('userProfile.actorType')},model:{value:(_vm.actorType),callback:function ($$v) {_vm.actorType=$$v},expression:\"actorType\"}},[_c('el-option',{attrs:{\"label\":_vm.$t('users.service'),\"value\":\"Service\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":_vm.$t('users.person'),\"value\":\"Person\"}})],1)],1),_vm._v(\" \"),(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.admin ? _vm.$t('users.revokeAdmin') : _vm.$t('users.grantAdmin'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.moderator ? _vm.$t('users.revokeModerator') : _vm.$t('users.grantModerator'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id) && _vm.page !== 'statusPage')?_c('el-dropdown-item',{attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleActivation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.deactivated ? _vm.$t('users.activateAccount') : _vm.$t('users.deactivateAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id) && _vm.page !== 'statusPage')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeletion(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.approval_pending)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleAccountApproval(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.approveAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.approval_pending)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleAccountRejection(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.rejectAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleEmailConfirmation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.confirmAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleConfirmationResend(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.resendConfirmation'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:media-force-nsfw') },attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:media-force-nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceNsfw'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:media-force-nsfw'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:media-strip') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:media-strip')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.stripMedia'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:media-strip'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:force-unlisted') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:force-unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceUnlisted'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:force-unlisted'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:sandbox') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.sandbox'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:sandbox'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:disable-remote-subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:disable-remote-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableRemoteSubscription'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:disable-remote-subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:disable-any-subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:disable-any-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableAnySubscription'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:disable-any-subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(!_vm.tagPolicyEnabled)?_c('el-dropdown-item',{staticClass:\"no-hover\",attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.enableTagPolicy($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.enableTagPolicy'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.getPasswordResetToken(_vm.user.nickname)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.getPasswordResetToken'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.requirePasswordReset(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.requirePasswordReset'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.disableMfa(_vm.user.nickname)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableMfa'))+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ModerationDropdown.vue?vue&type=template&id=346bdee8&\"\nimport script from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ModerationDropdown.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=style&index=0&id=377d5068&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=style&index=0&id=377d5068&rel=stylesheet%2Fscss&lang=scss&scoped=true&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-40a4.5dc0e299.js b/priv/static/adminfe/static/js/chunk-40a4.5dc0e299.js deleted file mode 100644 index ee0e267db..000000000 --- a/priv/static/adminfe/static/js/chunk-40a4.5dc0e299.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-40a4"],{"07OA":function(t,e,s){"use strict";var a=s("51EY");s.n(a).a},"51EY":function(t,e,s){},"5tnn":function(t,e,s){"use strict";var a=s("V/GZ");s.n(a).a},"G/Mk":function(t,e,s){"use strict";var a=s("xdcp");s.n(a).a},Lbbz:function(t,e,s){"use strict";var a=s("Sxb/");s.n(a).a},RnhZ:function(t,e,s){var a={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function r(t){var e=n(t);return s(e)}function n(t){if(!s.o(a,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return a[t]}r.keys=function(){return Object.keys(a)},r.resolve=n,t.exports=r,r.id="RnhZ"},"Sxb/":function(t,e,s){},"V/GZ":function(t,e,s){},cEOe:function(t,e,s){"use strict";s.r(e);var a=s("ZhIB"),r=s.n(a),n=s("wd/R"),o=s.n(n),i={name:"NoteCard",props:{report:{type:Object,required:!0},note:{type:Object,required:!0}},methods:{handleNoteDeletion:function(t,e){var s=this;this.$confirm("Are you sure you want to delete this note?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){s.$store.dispatch("DeleteReportNote",{noteID:t,reportID:e}),s.$message({type:"success",message:"Delete completed"})}).catch(function(){s.$message({type:"info",message:"Delete canceled"})})},parseTimestamp:function(t){return o()(t).format("YYYY-MM-DD HH:mm")},propertyExists:function(t,e){return t[e]}}},c=(s("G/Mk"),s("KHd+")),l=Object(c.a)(i,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-card",{staticClass:"note-card"},[s("div",{attrs:{slot:"header"},slot:"header"},[s("div",{staticClass:"note-header"},[t.propertyExists(t.note.user,"id")?s("router-link",{staticClass:"router-link",attrs:{to:{name:"UsersShow",params:{id:t.note.user.id}}}},[s("div",{staticClass:"note-actor"},[t.propertyExists(t.note.user,"avatar")?s("img",{staticClass:"note-avatar-img",attrs:{src:t.note.user.avatar,alt:"avatar"}}):t._e(),t._v(" "),t.propertyExists(t.note.user,"nickname")?s("span",{staticClass:"note-actor-name"},[t._v(t._s(t.note.user.nickname))]):s("span",{staticClass:"note-actor-name deactivated"},[t._v("("+t._s(t.$t("users.invalidNickname"))+")")])])]):t._e(),t._v(" "),s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.handleNoteDeletion(t.note.id,t.report.id)}}},[t._v("\n "+t._s(t.$t("reports.deleteNote"))+"\n ")])],1)]),t._v(" "),s("div",{staticClass:"note-body"},[s("span",{staticClass:"note-content",domProps:{innerHTML:t._s(t.note.content)}}),t._v("\n "+t._s(t.parseTimestamp(t.note.created_at))+"\n ")])])},[],!1,null,null,null);l.options.__file="NoteCard.vue";var u=l.exports,d=s("ot3S"),p={name:"ModerateUserDropdown",props:{account:{type:Object,required:!0}},computed:{tags:function(){return this.account.tags||[]}},methods:{handleDeactivation:function(t){var e=t.nickname;this.$store.dispatch("ToggleUserActivation",e)},handleDeletion:function(t){this.$store.dispatch("DeleteUser",t)},showDeactivatedButton:function(t){return this.$store.state.user.id!==t},toggleTag:function(t,e){t.tags.includes(e)?this.$store.dispatch("RemoveTag",{users:[t],tag:e}):this.$store.dispatch("AddTag",{users:[t],tag:e})}}},v=Object(c.a)(p,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-dropdown",{attrs:{trigger:"click"}},[s("el-button",{attrs:{disabled:!t.account.id,plain:"",size:"small",icon:"el-icon-files"}},[t._v(t._s(t.$t("reports.moderateUser"))+"\n "),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[t.showDeactivatedButton(t.account)?s("el-dropdown-item",{nativeOn:{click:function(e){return t.handleDeactivation(t.account)}}},[t._v("\n "+t._s(t.account.deactivated?t.$t("users.activateAccount"):t.$t("users.deactivateAccount"))+"\n ")]):t._e(),t._v(" "),t.showDeactivatedButton(t.account.id)?s("el-dropdown-item",{nativeOn:{click:function(e){return t.handleDeletion(t.account.id)}}},[t._v("\n "+t._s(t.$t("users.deleteAccount"))+"\n ")]):t._e(),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.tags.includes("mrf_tag:media-force-nsfw")},attrs:{divided:!0},nativeOn:{click:function(e){return t.toggleTag(t.account,"mrf_tag:media-force-nsfw")}}},[t._v("\n "+t._s(t.$t("users.forceNsfw"))+"\n "),t.tags.includes("mrf_tag:media-force-nsfw")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.tags.includes("mrf_tag:media-strip")},nativeOn:{click:function(e){return t.toggleTag(t.account,"mrf_tag:media-strip")}}},[t._v("\n "+t._s(t.$t("users.stripMedia"))+"\n "),t.tags.includes("mrf_tag:media-strip")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.tags.includes("mrf_tag:force-unlisted")},nativeOn:{click:function(e){return t.toggleTag(t.account,"mrf_tag:force-unlisted")}}},[t._v("\n "+t._s(t.$t("users.forceUnlisted"))+"\n "),t.tags.includes("mrf_tag:force-unlisted")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.tags.includes("mrf_tag:sandbox")},nativeOn:{click:function(e){return t.toggleTag(t.account,"mrf_tag:sandbox")}}},[t._v("\n "+t._s(t.$t("users.sandbox"))+"\n "),t.tags.includes("mrf_tag:sandbox")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),t.account.local?s("el-dropdown-item",{class:{"active-tag":t.tags.includes("mrf_tag:disable-remote-subscription")},nativeOn:{click:function(e){return t.toggleTag(t.account,"mrf_tag:disable-remote-subscription")}}},[t._v("\n "+t._s(t.$t("users.disableRemoteSubscription"))+"\n "),t.tags.includes("mrf_tag:disable-remote-subscription")?s("i",{staticClass:"el-icon-check"}):t._e()]):t._e(),t._v(" "),t.account.local?s("el-dropdown-item",{class:{"active-tag":t.tags.includes("mrf_tag:disable-any-subscription")},nativeOn:{click:function(e){return t.toggleTag(t.account,"mrf_tag:disable-any-subscription")}}},[t._v("\n "+t._s(t.$t("users.disableAnySubscription"))+"\n "),t.tags.includes("mrf_tag:disable-any-subscription")?s("i",{staticClass:"el-icon-check"}):t._e()]):t._e()],1)],1)},[],!1,null,null,null);v.options.__file="ModerateUserDropdown.vue";var m=v.exports,_={name:"Report",components:{Status:d.a,ModerateUserDropdown:m,NoteCard:u},props:{reports:{type:Array,required:!0}},data:function(){return{notes:{}}},computed:{loading:function(){return this.$store.state.reports.loading},pageSize:function(){return this.$store.state.reports.pageSize},totalReportsCount:function(){return this.$store.state.reports.totalReportsCount},currentPage:function(){return this.$store.state.reports.currentPage}},methods:{changeReportState:function(t,e){this.$store.dispatch("ChangeReportState",[{state:t,id:e}])},capitalizeFirstLetter:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},getStateType:function(t){switch(t){case"closed":return"info";case"resolved":return"success";default:return"primary"}},getStatusesTitle:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return"Reported statuses: ".concat(t.length," item(s)")},getNotesTitle:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return"Notes: ".concat(t.length," item(s)")},handleNewNote:function(t){this.$store.dispatch("CreateReportNote",{content:this.notes[t],reportID:t}),this.notes[t]=""},handlePageChange:function(t){this.$store.dispatch("FetchReports",t)},parseTimestamp:function(t){return o()(t).format("L HH:mm")},propertyExists:function(t,e,s){return s?t[e]&&t[s]:t[e]},showStatuses:function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).length>0}}},g=(s("07OA"),Object(c.a)(_,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",[s("el-timeline",{staticClass:"reports-timeline"},t._l(t.reports,function(e){return s("el-timeline-item",{key:e.id,staticClass:"timeline-item-container",attrs:{timestamp:t.parseTimestamp(e.created_at),placement:"top"}},[s("el-card",{staticClass:"report"},[s("div",{staticClass:"report-header-container"},[s("div",{staticClass:"title-container"},[t.propertyExists(e.account,"nickname")?s("h3",{staticClass:"report-title"},[t._v(t._s(t.$t("reports.reportOn"))+" "+t._s(e.account.nickname))]):s("h3",{staticClass:"report-title"},[t._v(t._s(t.$t("reports.report")))]),t._v(" "),t.propertyExists(e.account,"id")?s("h5",{staticClass:"id"},[t._v(t._s(t.$t("reports.id"))+": "+t._s(e.id))]):t._e()]),t._v(" "),s("div",[s("el-tag",{staticClass:"report-tag",attrs:{type:t.getStateType(e.state),size:"large"}},[t._v(t._s(t.capitalizeFirstLetter(e.state)))]),t._v(" "),s("el-dropdown",{attrs:{trigger:"click"}},[s("el-button",{staticClass:"report-actions-button",attrs:{plain:"",size:"small",icon:"el-icon-edit"}},[t._v(t._s(t.$t("reports.changeState"))),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},["resolved"!==e.state?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeReportState("resolved",e.id)}}},[t._v(t._s(t.$t("reports.resolve")))]):t._e(),t._v(" "),"open"!==e.state?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeReportState("open",e.id)}}},[t._v(t._s(t.$t("reports.reopen")))]):t._e(),t._v(" "),"closed"!==e.state?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeReportState("closed",e.id)}}},[t._v(t._s(t.$t("reports.close")))]):t._e()],1)],1),t._v(" "),t.propertyExists(e.account,"nickname")?s("moderate-user-dropdown",{attrs:{account:e.account}}):t._e()],1)]),t._v(" "),s("el-divider",{staticClass:"divider"}),t._v(" "),s("div",{staticClass:"report-account-container"},[s("span",{staticClass:"report-row-key"},[t._v(t._s(t.$t("reports.account"))+":")]),t._v(" "),s("div",{staticClass:"report-account"},[t.propertyExists(e.account,"id")?s("router-link",{staticClass:"router-link",attrs:{to:{name:"UsersShow",params:{id:e.account.id}}}},[t.propertyExists(e.account,"avatar")?s("img",{staticClass:"avatar-img",attrs:{src:e.account.avatar,alt:"avatar"}}):t._e(),t._v(" "),t.propertyExists(e.account,"nickname")?s("span",{staticClass:"report-account-name"},[t._v(t._s(e.account.nickname))]):s("span",{staticClass:"report-account-name deactivated"},[t._v("("+t._s(t.$t("users.invalidNickname"))+")")])]):s("span",{staticClass:"report-account-name deactivated"},[t._v("("+t._s(t.$t("users.invalidNickname"))+")")]),t._v(" "),t.propertyExists(e.account,"url")?s("a",{staticClass:"account",attrs:{href:e.account.url,target:"_blank"}},[t._v("\n "+t._s(t.$t("userProfile.openAccountInInstance"))+"\n "),s("i",{staticClass:"el-icon-top-right"})]):t._e()],1)]),t._v(" "),e.content&&e.content.length>0?s("div",[s("el-divider",{staticClass:"divider"}),t._v(" "),s("span",{staticClass:"report-row-key"},[t._v(t._s(t.$t("reports.content"))+":\n "),s("span",[t._v(t._s(e.content))])])],1):t._e(),t._v(" "),s("el-divider",{staticClass:"divider"}),t._v(" "),s("div",{staticClass:"report-account-container",style:t.showStatuses(e.statuses)?"":"margin-bottom:15px"},[s("span",{staticClass:"report-row-key"},[t._v(t._s(t.$t("reports.actor"))+":")]),t._v(" "),s("div",{staticClass:"report-account"},[t.propertyExists(e.actor,"id")?s("router-link",{staticClass:"router-link",attrs:{to:{name:"UsersShow",params:{id:e.actor.id}}}},[t.propertyExists(e.actor,"avatar")?s("img",{staticClass:"avatar-img",attrs:{src:e.actor.avatar,alt:"avatar"}}):t._e(),t._v(" "),t.propertyExists(e.actor,"nickname")?s("span",{staticClass:"report-account-name"},[t._v(t._s(e.actor.nickname))]):s("span",{staticClass:"report-account-name deactivated"},[t._v("("+t._s(t.$t("users.invalidNickname"))+")")])]):s("span",{staticClass:"report-account-name deactivated"},[t._v("("+t._s(t.$t("users.invalidNickname"))+")")]),t._v(" "),t.propertyExists(e.actor,"url")?s("a",{staticClass:"account",attrs:{href:e.actor.url,target:"_blank"}},[t._v("\n "+t._s(t.$t("userProfile.openAccountInInstance"))+"\n "),s("i",{staticClass:"el-icon-top-right"})]):t._e()],1)]),t._v(" "),t.showStatuses(e.statuses)?s("div",{staticClass:"reported-statuses"},[s("el-collapse",[s("el-collapse-item",{attrs:{title:t.getStatusesTitle(e.statuses)}},t._l(e.statuses,function(a){return s("div",{key:a.id},[s("status",{attrs:{status:a,account:a.account.nickname?a.account:e.account,"show-checkbox":!1,page:t.currentPage}})],1)}),0)],1)],1):t._e(),t._v(" "),s("div",{staticClass:"report-notes"},[s("el-collapse",[s("el-collapse-item",{attrs:{title:t.getNotesTitle(e.notes)}},t._l(e.notes,function(t,a){return s("note-card",{key:a,attrs:{note:t,report:e}})}),1)],1),t._v(" "),s("div",{staticClass:"report-note-form"},[s("el-input",{attrs:{placeholder:t.$t("reports.leaveNote"),type:"textarea",rows:"2"},model:{value:t.notes[e.id],callback:function(s){t.$set(t.notes,e.id,s)},expression:"notes[report.id]"}}),t._v(" "),s("div",{staticClass:"report-post-note"},[s("el-button",{on:{click:function(s){return t.handleNewNote(e.id)}}},[t._v(t._s(t.$t("reports.postNote")))])],1)],1)],1)],1)],1)}),1),t._v(" "),t.loading?t._e():s("div",{staticClass:"reports-pagination"},[s("el-pagination",{attrs:{total:t.totalReportsCount,"current-page":t.currentPage,"page-size":t.pageSize,background:"",layout:"prev, pager, next"},on:{"current-change":t.handlePageChange}})],1)],1)},[],!1,null,null,null));g.options.__file="Report.vue";var h=g.exports,f=s("mSNy"),j={data:function(){return{filter:"open",options:[{value:"open",label:f.a.t("reportsFilter.open")},{value:"closed",label:f.a.t("reportsFilter.closed")},{value:"resolved",label:f.a.t("reportsFilter.resolved")}]}},created:function(){this.$store.dispatch("SetReportsFilter",this.$data.filter)},methods:{toggleFilters:function(){this.$store.dispatch("SetReportsFilter",this.$data.filter),this.$store.dispatch("ClearFetchedReports"),this.$store.dispatch("FetchReports",1)}}},k=(s("5tnn"),Object(c.a)(j,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-select",{staticClass:"select-field",attrs:{placeholder:t.$t("reportsFilter.inputPlaceholder"),clearable:"","value-key":"value"},on:{change:t.toggleFilters},model:{value:t.filter,callback:function(e){t.filter=e},expression:"filter"}},t._l(t.options,function(e){return s("el-option",{key:e.value,attrs:{label:e.label,value:e.value}},[t._v(t._s(e.label))])}),1)},[],!1,null,"5ab7c15a",null));k.options.__file="ReportsFilter.vue";var b=k.exports,C={components:{RebootButton:s("rIUS").a,Report:h,ReportsFilter:b},computed:{loading:function(){return this.$store.state.reports.loading},normalizedReportsCount:function(){return r()(this.$store.state.reports.totalReportsCount).format("0a")},reports:function(){return this.$store.state.reports.fetchedReports}},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchReports",1)}},y=(s("Lbbz"),Object(c.a)(C,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"reports-container"},[s("div",{staticClass:"reports-header-container"},[s("h1",[t._v("\n "+t._s(t.$t("reports.reports"))+"\n "),s("span",{staticClass:"report-count"},[t._v("("+t._s(t.normalizedReportsCount)+")")])]),t._v(" "),s("reboot-button")],1),t._v(" "),s("div",{staticClass:"reports-filter-container"},[s("reports-filter")],1),t._v(" "),s("div",{staticClass:"block"},[s("report",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],attrs:{reports:t.reports}}),t._v(" "),0===t.reports.length?s("div",{staticClass:"no-reports-message"},[s("p",[t._v("There are no reports to display")])]):t._e()],1)])},[],!1,null,"fa601560",null));y.options.__file="index.vue";e.default=y.exports},xdcp:function(t,e,s){}}]); -//# sourceMappingURL=chunk-40a4.5dc0e299.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-40a4.5dc0e299.js.map b/priv/static/adminfe/static/js/chunk-40a4.5dc0e299.js.map deleted file mode 100644 index 61c30c39b..000000000 --- a/priv/static/adminfe/static/js/chunk-40a4.5dc0e299.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/reports/components/Report.vue?ad5f","webpack:///./src/views/reports/components/ReportsFilter.vue?5d06","webpack:///./src/views/reports/components/NoteCard.vue?b93a","webpack:///./src/views/reports/index.vue?cda2","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/views/reports/index.vue?43f7","webpack:///./src/views/reports/components/NoteCard.vue?6205","webpack:///src/views/reports/components/NoteCard.vue","webpack:///./src/views/reports/components/NoteCard.vue","webpack:///./src/views/reports/components/NoteCard.vue?6977","webpack:///./src/views/reports/components/ModerateUserDropdown.vue?6745","webpack:///src/views/reports/components/ModerateUserDropdown.vue","webpack:///./src/views/reports/components/ModerateUserDropdown.vue","webpack:///./src/views/reports/components/ModerateUserDropdown.vue?cb21","webpack:///./src/views/reports/components/Report.vue?a764","webpack:///src/views/reports/components/Report.vue","webpack:///./src/views/reports/components/Report.vue","webpack:///./src/views/reports/components/Report.vue?405c","webpack:///./src/views/reports/components/ReportsFilter.vue?e3b7","webpack:///src/views/reports/components/ReportsFilter.vue","webpack:///./src/views/reports/components/ReportsFilter.vue","webpack:///./src/views/reports/components/ReportsFilter.vue?49ad","webpack:///./src/views/reports/index.vue?3bcc","webpack:///src/views/reports/index.vue","webpack:///./src/views/reports/index.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Report_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ReportsFilter_vue_vue_type_style_index_0_id_5ab7c15a_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_NoteCard_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_fa601560_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-SG","./en-SG.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-nz","./en-nz.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-tw","./zh-tw.js","webpackContext","req","id","webpackContextResolve","o","e","Error","code","keys","Object","resolve","module","exports","components_NoteCardvue_type_script_lang_js_","name","props","report","type","required","note","methods","handleNoteDeletion","noteID","reportID","_this","this","$confirm","confirmButtonText","cancelButtonText","then","$store","dispatch","$message","message","catch","parseTimestamp","timestamp","moment_default","format","propertyExists","account","property","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","slot","user","to","params","src","avatar","alt","_e","_v","_s","nickname","$t","size","nativeOn","click","$event","domProps","innerHTML","content","created_at","options","__file","NoteCard","components_ModerateUserDropdownvue_type_script_lang_js_","computed","tags","handleDeactivation","_ref","handleDeletion","showDeactivatedButton","state","toggleTag","tag","includes","users","ModerateUserDropdown_component","trigger","disabled","plain","icon","deactivated","class","active-tag","divided","ModerateUserDropdown","components_Reportvue_type_script_lang_js_","components","Status","reports","Array","data","notes","loading","pageSize","totalReportsCount","currentPage","changeReportState","capitalizeFirstLetter","str","charAt","toUpperCase","slice","getStateType","getStatusesTitle","statuses","arguments","length","undefined","concat","getNotesTitle","handleNewNote","handlePageChange","page","_secondProperty","showStatuses","Report_component","_l","key","placement","href","url","target","style","actor","title","status","show-checkbox","index","placeholder","rows","model","value","callback","$$v","$set","expression","on","total","current-page","page-size","background","layout","current-change","Report","components_ReportsFiltervue_type_script_lang_js_","filter","label","lang","t","created","$data","toggleFilters","ReportsFilter_component","clearable","value-key","change","item","ReportsFilter","views_reportsvue_type_script_lang_js_","RebootButton","normalizedReportsCount","numeral_default","fetchedReports","mounted","reports_component","directives","rawName","__webpack_exports__"],"mappings":"wGAAA,IAAAA,EAAAC,EAAA,QAAAA,EAAAC,EAAAF,GAA0e,gECA1e,IAAAG,EAAAF,EAAA,QAAAA,EAAAC,EAAAC,GAAygB,uCCAzgB,IAAAC,EAAAH,EAAA,QAAAA,EAAAC,EAAAE,GAA4e,qCCA5e,IAAAC,EAAAJ,EAAA,QAAAA,EAAAC,EAAAG,GAA+e,wBCA/e,IAAAC,GACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACA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","file":"static/js/chunk-40a4.5dc0e299.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Report.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Report.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=style&index=0&id=5ab7c15a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=style&index=0&id=5ab7c15a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoteCard.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoteCard.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=fa601560&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=fa601560&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-SG\": \"zavE\",\n\t\"./en-SG.js\": \"zavE\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"reports-container\"},[_c('div',{staticClass:\"reports-header-container\"},[_c('h1',[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.reports'))+\"\\n \"),_c('span',{staticClass:\"report-count\"},[_vm._v(\"(\"+_vm._s(_vm.normalizedReportsCount)+\")\")])]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"reports-filter-container\"},[_c('reports-filter')],1),_vm._v(\" \"),_c('div',{staticClass:\"block\"},[_c('report',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"reports\":_vm.reports}}),_vm._v(\" \"),(_vm.reports.length === 0)?_c('div',{staticClass:\"no-reports-message\"},[_c('p',[_vm._v(\"There are no reports to display\")])]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoteCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoteCard.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./NoteCard.vue?vue&type=template&id=030edbfd&\"\nimport script from \"./NoteCard.vue?vue&type=script&lang=js&\"\nexport * from \"./NoteCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NoteCard.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"NoteCard.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-card',{staticClass:\"note-card\"},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',{staticClass:\"note-header\"},[(_vm.propertyExists(_vm.note.user, 'id'))?_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":{ name: 'UsersShow', params: { id: _vm.note.user.id }}}},[_c('div',{staticClass:\"note-actor\"},[(_vm.propertyExists(_vm.note.user, 'avatar'))?_c('img',{staticClass:\"note-avatar-img\",attrs:{\"src\":_vm.note.user.avatar,\"alt\":\"avatar\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.note.user, 'nickname'))?_c('span',{staticClass:\"note-actor-name\"},[_vm._v(_vm._s(_vm.note.user.nickname))]):_c('span',{staticClass:\"note-actor-name deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")])])]):_vm._e(),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.handleNoteDeletion(_vm.note.id, _vm.report.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.deleteNote'))+\"\\n \")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"note-body\"},[_c('span',{staticClass:\"note-content\",domProps:{\"innerHTML\":_vm._s(_vm.note.content)}}),_vm._v(\"\\n \"+_vm._s(_vm.parseTimestamp(_vm.note.created_at))+\"\\n \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerateUserDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerateUserDropdown.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./ModerateUserDropdown.vue?vue&type=template&id=f387dbaa&\"\nimport script from \"./ModerateUserDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./ModerateUserDropdown.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ModerateUserDropdown.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"trigger\":\"click\"}},[_c('el-button',{attrs:{\"disabled\":!_vm.account.id,\"plain\":\"\",\"size\":\"small\",\"icon\":\"el-icon-files\"}},[_vm._v(_vm._s(_vm.$t('reports.moderateUser'))+\"\\n \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(_vm.showDeactivatedButton(_vm.account))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeactivation(_vm.account)}}},[_vm._v(\"\\n \"+_vm._s(_vm.account.deactivated ? _vm.$t('users.activateAccount') : _vm.$t('users.deactivateAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.account.id))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeletion(_vm.account.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('mrf_tag:media-force-nsfw') },attrs:{\"divided\":true},nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'mrf_tag:media-force-nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceNsfw'))+\"\\n \"),(_vm.tags.includes('mrf_tag:media-force-nsfw'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('mrf_tag:media-strip') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'mrf_tag:media-strip')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.stripMedia'))+\"\\n \"),(_vm.tags.includes('mrf_tag:media-strip'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('mrf_tag:force-unlisted') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'mrf_tag:force-unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceUnlisted'))+\"\\n \"),(_vm.tags.includes('mrf_tag:force-unlisted'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('mrf_tag:sandbox') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'mrf_tag:sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.sandbox'))+\"\\n \"),(_vm.tags.includes('mrf_tag:sandbox'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),(_vm.account.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('mrf_tag:disable-remote-subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'mrf_tag:disable-remote-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableRemoteSubscription'))+\"\\n \"),(_vm.tags.includes('mrf_tag:disable-remote-subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.account.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('mrf_tag:disable-any-subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'mrf_tag:disable-any-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableAnySubscription'))+\"\\n \"),(_vm.tags.includes('mrf_tag:disable-any-subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Report.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Report.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Report.vue?vue&type=template&id=28746757&\"\nimport script from \"./Report.vue?vue&type=script&lang=js&\"\nexport * from \"./Report.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Report.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Report.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-timeline',{staticClass:\"reports-timeline\"},_vm._l((_vm.reports),function(report){return _c('el-timeline-item',{key:report.id,staticClass:\"timeline-item-container\",attrs:{\"timestamp\":_vm.parseTimestamp(report.created_at),\"placement\":\"top\"}},[_c('el-card',{staticClass:\"report\"},[_c('div',{staticClass:\"report-header-container\"},[_c('div',{staticClass:\"title-container\"},[(_vm.propertyExists(report.account, 'nickname'))?_c('h3',{staticClass:\"report-title\"},[_vm._v(_vm._s(_vm.$t('reports.reportOn'))+\" \"+_vm._s(report.account.nickname))]):_c('h3',{staticClass:\"report-title\"},[_vm._v(_vm._s(_vm.$t('reports.report')))]),_vm._v(\" \"),(_vm.propertyExists(report.account, 'id'))?_c('h5',{staticClass:\"id\"},[_vm._v(_vm._s(_vm.$t('reports.id'))+\": \"+_vm._s(report.id))]):_vm._e()]),_vm._v(\" \"),_c('div',[_c('el-tag',{staticClass:\"report-tag\",attrs:{\"type\":_vm.getStateType(report.state),\"size\":\"large\"}},[_vm._v(_vm._s(_vm.capitalizeFirstLetter(report.state)))]),_vm._v(\" \"),_c('el-dropdown',{attrs:{\"trigger\":\"click\"}},[_c('el-button',{staticClass:\"report-actions-button\",attrs:{\"plain\":\"\",\"size\":\"small\",\"icon\":\"el-icon-edit\"}},[_vm._v(_vm._s(_vm.$t('reports.changeState'))),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(report.state !== 'resolved')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeReportState('resolved', report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.resolve')))]):_vm._e(),_vm._v(\" \"),(report.state !== 'open')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeReportState('open', report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.reopen')))]):_vm._e(),_vm._v(\" \"),(report.state !== 'closed')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeReportState('closed', report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.close')))]):_vm._e()],1)],1),_vm._v(\" \"),(_vm.propertyExists(report.account, 'nickname'))?_c('moderate-user-dropdown',{attrs:{\"account\":report.account}}):_vm._e()],1)]),_vm._v(\" \"),_c('el-divider',{staticClass:\"divider\"}),_vm._v(\" \"),_c('div',{staticClass:\"report-account-container\"},[_c('span',{staticClass:\"report-row-key\"},[_vm._v(_vm._s(_vm.$t('reports.account'))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"report-account\"},[(_vm.propertyExists(report.account, 'id'))?_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":{ name: 'UsersShow', params: { id: report.account.id }}}},[(_vm.propertyExists(report.account, 'avatar'))?_c('img',{staticClass:\"avatar-img\",attrs:{\"src\":report.account.avatar,\"alt\":\"avatar\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(report.account, 'nickname'))?_c('span',{staticClass:\"report-account-name\"},[_vm._v(_vm._s(report.account.nickname))]):_c('span',{staticClass:\"report-account-name deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")])]):_c('span',{staticClass:\"report-account-name deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")]),_vm._v(\" \"),(_vm.propertyExists(report.account, 'url'))?_c('a',{staticClass:\"account\",attrs:{\"href\":report.account.url,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.openAccountInInstance'))+\"\\n \"),_c('i',{staticClass:\"el-icon-top-right\"})]):_vm._e()],1)]),_vm._v(\" \"),(report.content && report.content.length > 0)?_c('div',[_c('el-divider',{staticClass:\"divider\"}),_vm._v(\" \"),_c('span',{staticClass:\"report-row-key\"},[_vm._v(_vm._s(_vm.$t('reports.content'))+\":\\n \"),_c('span',[_vm._v(_vm._s(report.content))])])],1):_vm._e(),_vm._v(\" \"),_c('el-divider',{staticClass:\"divider\"}),_vm._v(\" \"),_c('div',{staticClass:\"report-account-container\",style:(_vm.showStatuses(report.statuses) ? '' : 'margin-bottom:15px')},[_c('span',{staticClass:\"report-row-key\"},[_vm._v(_vm._s(_vm.$t('reports.actor'))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"report-account\"},[(_vm.propertyExists(report.actor, 'id'))?_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":{ name: 'UsersShow', params: { id: report.actor.id }}}},[(_vm.propertyExists(report.actor, 'avatar'))?_c('img',{staticClass:\"avatar-img\",attrs:{\"src\":report.actor.avatar,\"alt\":\"avatar\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(report.actor, 'nickname'))?_c('span',{staticClass:\"report-account-name\"},[_vm._v(_vm._s(report.actor.nickname))]):_c('span',{staticClass:\"report-account-name deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")])]):_c('span',{staticClass:\"report-account-name deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")]),_vm._v(\" \"),(_vm.propertyExists(report.actor, 'url'))?_c('a',{staticClass:\"account\",attrs:{\"href\":report.actor.url,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.openAccountInInstance'))+\"\\n \"),_c('i',{staticClass:\"el-icon-top-right\"})]):_vm._e()],1)]),_vm._v(\" \"),(_vm.showStatuses(report.statuses))?_c('div',{staticClass:\"reported-statuses\"},[_c('el-collapse',[_c('el-collapse-item',{attrs:{\"title\":_vm.getStatusesTitle(report.statuses)}},_vm._l((report.statuses),function(status){return _c('div',{key:status.id},[_c('status',{attrs:{\"status\":status,\"account\":status.account.nickname ? status.account : report.account,\"show-checkbox\":false,\"page\":_vm.currentPage}})],1)}),0)],1)],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"report-notes\"},[_c('el-collapse',[_c('el-collapse-item',{attrs:{\"title\":_vm.getNotesTitle(report.notes)}},_vm._l((report.notes),function(note,index){return _c('note-card',{key:index,attrs:{\"note\":note,\"report\":report}})}),1)],1),_vm._v(\" \"),_c('div',{staticClass:\"report-note-form\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('reports.leaveNote'),\"type\":\"textarea\",\"rows\":\"2\"},model:{value:(_vm.notes[report.id]),callback:function ($$v) {_vm.$set(_vm.notes, report.id, $$v)},expression:\"notes[report.id]\"}}),_vm._v(\" \"),_c('div',{staticClass:\"report-post-note\"},[_c('el-button',{on:{\"click\":function($event){return _vm.handleNewNote(report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.postNote')))])],1)],1)],1)],1)],1)}),1),_vm._v(\" \"),(!_vm.loading)?_c('div',{staticClass:\"reports-pagination\"},[_c('el-pagination',{attrs:{\"total\":_vm.totalReportsCount,\"current-page\":_vm.currentPage,\"page-size\":_vm.pageSize,\"background\":\"\",\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.handlePageChange}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ReportsFilter.vue?vue&type=template&id=5ab7c15a&scoped=true&\"\nimport script from \"./ReportsFilter.vue?vue&type=script&lang=js&\"\nexport * from \"./ReportsFilter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ReportsFilter.vue?vue&type=style&index=0&id=5ab7c15a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ab7c15a\",\n null\n \n)\n\ncomponent.options.__file = \"ReportsFilter.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-select',{staticClass:\"select-field\",attrs:{\"placeholder\":_vm.$t('reportsFilter.inputPlaceholder'),\"clearable\":\"\",\"value-key\":\"value\"},on:{\"change\":_vm.toggleFilters},model:{value:(_vm.filter),callback:function ($$v) {_vm.filter=$$v},expression:\"filter\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}},[_vm._v(_vm._s(item.label))])}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=fa601560&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=fa601560&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fa601560\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-5118.7c48ad58.js b/priv/static/adminfe/static/js/chunk-5118.7c48ad58.js deleted file mode 100644 index 2357e225d..000000000 --- a/priv/static/adminfe/static/js/chunk-5118.7c48ad58.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-5118"],{"+/fp":function(e,t){e.exports=class{strong(e){return e}em(e){return e}codespan(e){return e}del(e){return e}text(e){return e}link(e,t,s){return""+s}image(e,t,s){return""+s}br(){return""}}},"4MG8":function(e,t,s){const n=s("T9Ld"),r=s("66f7"),i=s("SbYC"),l=s("+/fp"),a=s("hyX7"),o=s("J7Ao"),{merge:h,checkSanitizeDeprecation:c,escape:p}=s("rUJ1"),{getDefaults:u,changeDefaults:g,defaults:d}=s("vbtb");function f(e,t,s){if(void 0===e||null===e)throw new Error("marked(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if(s||"function"==typeof t){s||(s=t,t=null),t=h({},f.defaults,t||{}),c(t);const i=t.highlight;let l,a,o=0;try{l=n.lex(e,t)}catch(e){return s(e)}a=l.length;const p=function(e){if(e)return t.highlight=i,s(e);let n;try{n=r.parse(l,t)}catch(t){e=t}return t.highlight=i,e?s(e):s(null,n)};if(!i||i.length<3)return p();if(delete t.highlight,!a)return p();for(;oAn error occurred:

"+p(e.message+"",!0)+"
";throw e}}f.options=f.setOptions=function(e){return h(f.defaults,e),g(f.defaults),f},f.getDefaults=u,f.defaults=d,f.Parser=r,f.parser=r.parse,f.Renderer=i,f.TextRenderer=l,f.Lexer=n,f.lexer=n.lex,f.InlineLexer=a,f.inlineLexer=a.output,f.Slugger=o,f.parse=f,e.exports=f},"66f7":function(e,t,s){const n=s("SbYC"),r=s("J7Ao"),i=s("hyX7"),l=s("+/fp"),{defaults:a}=s("vbtb"),{merge:o,unescape:h}=s("rUJ1");e.exports=class e{constructor(e){this.tokens=[],this.token=null,this.options=e||a,this.options.renderer=this.options.renderer||new n,this.renderer=this.options.renderer,this.renderer.options=this.options,this.slugger=new r}static parse(t,s){return new e(s).parse(t)}parse(e){this.inline=new i(e.links,this.options),this.inlineText=new i(e.links,o({},this.options,{renderer:new l})),this.tokens=e.reverse();let t="";for(;this.next();)t+=this.tok();return t}next(){return this.token=this.tokens.pop(),this.token}peek(){return this.tokens[this.tokens.length-1]||0}parseText(){let e=this.token.text;for(;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)}tok(){let e="";switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,h(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":{let t,s,n,r,i="";for(n="",t=0;t?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t)){const e=t;do{this.seen[e]++,t=e+"-"+this.seen[e]}while(this.seen.hasOwnProperty(t))}return this.seen[t]=0,t}}},SbYC:function(e,t,s){const{defaults:n}=s("vbtb"),{cleanUrl:r,escape:i}=s("rUJ1");e.exports=class{constructor(e){this.options=e||n}code(e,t,s){const n=(t||"").match(/\S*/)[0];if(this.options.highlight){const t=this.options.highlight(e,n);null!=t&&t!==e&&(s=!0,e=t)}return n?'
'+(s?e:i(e,!0))+"
\n":"
"+(s?e:i(e,!0))+"
"}blockquote(e){return"
\n"+e+"
\n"}html(e){return e}heading(e,t,s,n){return this.options.headerIds?"'+e+"\n":""+e+"\n"}hr(){return this.options.xhtml?"
\n":"
\n"}list(e,t,s){const n=t?"ol":"ul";return"<"+n+(t&&1!==s?' start="'+s+'"':"")+">\n"+e+"\n"}listitem(e){return"
  • "+e+"
  • \n"}checkbox(e){return" "}paragraph(e){return"

    "+e+"

    \n"}table(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"}tablerow(e){return"\n"+e+"\n"}tablecell(e,t){const s=t.header?"th":"td";return(t.align?"<"+s+' align="'+t.align+'">':"<"+s+">")+e+"\n"}strong(e){return""+e+""}em(e){return""+e+""}codespan(e){return""+e+""}br(){return this.options.xhtml?"
    ":"
    "}del(e){return""+e+""}link(e,t,s){if(null===(e=r(this.options.sanitize,this.options.baseUrl,e)))return s;let n='"}image(e,t,s){if(null===(e=r(this.options.sanitize,this.options.baseUrl,e)))return s;let n=''+s+'":">"}text(e){return e}}},T9Ld:function(e,t,s){const{defaults:n}=s("vbtb"),{block:r}=s("e56X"),{rtrim:i,splitCells:l,escape:a}=s("rUJ1");e.exports=class e{constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||n,this.rules=r.normal,this.options.pedantic?this.rules=r.pedantic:this.options.gfm&&(this.rules=r.gfm)}static get rules(){return r}static lex(t,s){return new e(s).lex(t)}lex(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.token(e,!0)}token(e,t){let s,n,o,h,c,p,u,g,d,f,b,k,m,x,_,w;for(e=e.replace(/^ +$/gm,"");e;)if((o=this.rules.newline.exec(e))&&(e=e.substring(o[0].length),o[0].length>1&&this.tokens.push({type:"space"})),o=this.rules.code.exec(e)){const t=this.tokens[this.tokens.length-1];e=e.substring(o[0].length),t&&"paragraph"===t.type?t.text+="\n"+o[0].trimRight():(o=o[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",codeBlockStyle:"indented",text:this.options.pedantic?o:i(o,"\n")}))}else if(o=this.rules.fences.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"code",lang:o[2]?o[2].trim():o[2],text:o[3]||""});else if(o=this.rules.heading.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"heading",depth:o[1].length,text:o[2]});else if((o=this.rules.nptable.exec(e))&&(p={type:"table",header:l(o[1].replace(/^ *| *\| *$/g,"")),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:o[3]?o[3].replace(/\n$/,"").split("\n"):[]}).header.length===p.align.length){for(e=e.substring(o[0].length),b=0;b ?/gm,""),this.token(o,t),this.tokens.push({type:"blockquote_end"});else if(o=this.rules.list.exec(e)){for(e=e.substring(o[0].length),u={type:"list_start",ordered:x=(h=o[2]).length>1,start:x?+h:"",loose:!1},this.tokens.push(u),g=[],s=!1,m=(o=o[0].match(this.rules.item)).length,b=0;b1?1===c.length:c.length>1||this.options.smartLists&&c!==h)&&(e=o.slice(b+1).join("\n")+e,b=m-1)),n=s||/\n\n(?!\s*$)/.test(p),b!==m-1&&(s="\n"===p.charAt(p.length-1),n||(n=s)),n&&(u.loose=!0),w=void 0,(_=/^\[[ xX]\] /.test(p))&&(w=" "!==p[1],p=p.replace(/^\[[ xX]\] +/,"")),d={type:"list_item_start",task:_,checked:w,loose:n},g.push(d),this.tokens.push(d),this.token(p,!1),this.tokens.push({type:"list_item_end"});if(u.loose)for(m=g.length,b=0;b ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|\\n*|\\n*|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:n,table:n,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};l.def=r(l.def).replace("label",l._label).replace("title",l._title).getRegex(),l.bullet=/(?:[*+-]|\d{1,9}\.)/,l.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,l.item=r(l.item,"gm").replace(/bull/g,l.bullet).getRegex(),l.list=r(l.list).replace(/bull/g,l.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+l.def.source+")").getRegex(),l._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",l._comment=//,l.html=r(l.html,"i").replace("comment",l._comment).replace("tag",l._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),l.paragraph=r(l._paragraph).replace("hr",l.hr).replace("heading"," {0,3}#{1,6} +").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}|~{3,})[^`\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",l._tag).getRegex(),l.blockquote=r(l.blockquote).replace("paragraph",l.paragraph).getRegex(),l.normal=i({},l),l.gfm=i({},l.normal,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),l.pedantic=i({},l.normal,{html:r("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",l._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,fences:n,paragraph:r(l.normal._paragraph).replace("hr",l.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",l.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});const a={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:n,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,em:/^_([^\s_])_(?!_)|^\*([^\s*<\[])\*(?!\*)|^_([^\s<][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_<][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s<"][\s\S]*?[^\s\*])\*(?!\*|[^\spunctuation])|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:n,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\?@\\[^_{|}~"};a.em=r(a.em).replace(/punctuation/g,a._punctuation).getRegex(),a._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,a._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,a._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,a.autolink=r(a.autolink).replace("scheme",a._scheme).replace("email",a._email).getRegex(),a._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,a.tag=r(a.tag).replace("comment",l._comment).replace("attribute",a._attribute).getRegex(),a._label=/(?:\[[^\[\]]*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,a._href=/<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*/,a._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,a.link=r(a.link).replace("label",a._label).replace("href",a._href).replace("title",a._title).getRegex(),a.reflink=r(a.reflink).replace("label",a._label).getRegex(),a.normal=i({},a),a.pedantic=i({},a.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:r(/^!?\[(label)\]\((.*?)\)/).replace("label",a._label).getRegex(),reflink:r(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",a._label).getRegex()}),a.gfm=i({},a.normal,{escape:r(a.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\/i.test(o[0])&&(this.inLink=!1),!this.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(o[0])?this.inRawBlock=!0:this.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(o[0])&&(this.inRawBlock=!1),t=t.substring(o[0].length),c+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):a(o[0]):o[0];else if(o=this.rules.link.exec(t)){const n=l(o[2],"()");if(n>-1){const e=(0===o[0].indexOf("!")?5:4)+o[1].length+n;o[2]=o[2].substring(0,n),o[0]=o[0].substring(0,e).trim(),o[3]=""}t=t.substring(o[0].length),this.inLink=!0,r=o[2],this.options.pedantic?(s=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(r))?(r=s[1],i=s[3]):i="":i=o[3]?o[3].slice(1,-1):"",r=r.trim().replace(/^<([\s\S]*)>$/,"$1"),c+=this.outputLink(o,{href:e.escapes(r),title:e.escapes(i)}),this.inLink=!1}else if((o=this.rules.reflink.exec(t))||(o=this.rules.nolink.exec(t))){if(t=t.substring(o[0].length),s=(o[2]||o[1]).replace(/\s+/g," "),!(s=this.links[s.toLowerCase()])||!s.href){c+=o[0].charAt(0),t=o[0].substring(1)+t;continue}this.inLink=!0,c+=this.outputLink(o,s),this.inLink=!1}else if(o=this.rules.strong.exec(t))t=t.substring(o[0].length),c+=this.renderer.strong(this.output(o[4]||o[3]||o[2]||o[1]));else if(o=this.rules.em.exec(t))t=t.substring(o[0].length),c+=this.renderer.em(this.output(o[6]||o[5]||o[4]||o[3]||o[2]||o[1]));else if(o=this.rules.code.exec(t))t=t.substring(o[0].length),c+=this.renderer.codespan(a(o[2].trim(),!0));else if(o=this.rules.br.exec(t))t=t.substring(o[0].length),c+=this.renderer.br();else if(o=this.rules.del.exec(t))t=t.substring(o[0].length),c+=this.renderer.del(this.output(o[1]));else if(o=this.rules.autolink.exec(t))t=t.substring(o[0].length),r="@"===o[2]?"mailto:"+(n=a(this.mangle(o[1]))):n=a(o[1]),c+=this.renderer.link(r,null,n);else if(this.inLink||!(o=this.rules.url.exec(t))){if(o=this.rules.text.exec(t))t=t.substring(o[0].length),this.inRawBlock?c+=this.renderer.text(this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):a(o[0]):o[0]):c+=this.renderer.text(a(this.smartypants(o[0])));else if(t)throw new Error("Infinite loop on byte: "+t.charCodeAt(0))}else{if("@"===o[2])r="mailto:"+(n=a(o[0]));else{do{h=o[0],o[0]=this.rules._backpedal.exec(o[0])[0]}while(h!==o[0]);n=a(o[0]),r="www."===o[1]?"http://"+n:n}t=t.substring(o[0].length),c+=this.renderer.link(r,null,n)}return c}static escapes(t){return t?t.replace(e.rules._escapes,"$1"):t}outputLink(e,t){const s=t.href,n=t.title?a(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(s,n,this.output(e[1])):this.renderer.image(s,n,a(e[1]))}smartypants(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e}mangle(e){if(!this.options.mangle)return e;const t=e.length;let s,n="",r=0;for(;r.5&&(s="x"+s.toString(16)),n+="&#"+s+";";return n}}},rUJ1:function(e,t){const s=/[&<>"']/,n=/[&<>"']/g,r=/[<>"']|&(?!#?\w+;)/,i=/[<>"']|&(?!#?\w+;)/g,l={"&":"&","<":"<",">":">",'"':""","'":"'"},a=e=>l[e];const o=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function h(e){return e.replace(o,(e,t)=>"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):"")}const c=/(^|[^\[])\^/g;const p=/[^\w:]/g,u=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;const g={},d=/^[^:]+:\/*[^/]*$/,f=/^([^:]+:)[\s\S]*$/,b=/^([^:]+:\/*[^/]*)[\s\S]*$/;function k(e,t){g[" "+e]||(d.test(e)?g[" "+e]=e+"/":g[" "+e]=m(e,"/",!0));const s=-1===(e=g[" "+e]).indexOf(":");return"//"===t.substring(0,2)?s?t:e.replace(f,"$1")+t:"/"===t.charAt(0)?s?t:e.replace(b,"$1")+t:e+t}function m(e,t,s){const n=e.length;if(0===n)return"";let r=0;for(;r(n=(n=n.source||n).replace(c,"$1"),e=e.replace(t,n),s),getRegex:()=>new RegExp(e,t)};return s},cleanUrl:function(e,t,s){if(e){let e;try{e=decodeURIComponent(h(s)).replace(p,"").toLowerCase()}catch(e){return null}if(0===e.indexOf("javascript:")||0===e.indexOf("vbscript:")||0===e.indexOf("data:"))return null}t&&!u.test(s)&&(s=k(t,s));try{s=encodeURI(s).replace(/%25/g,"%")}catch(e){return null}return s},resolveUrl:k,noopTest:{exec:function(){}},merge:function(e){let t,s,n=1;for(;n{let n=!1,r=t;for(;--r>=0&&"\\"===s[r];)n=!n;return n?"|":" |"}).split(/ \|/);let n=0;if(s.length>t)s.splice(t);else for(;s.length","\"","'","getEscapeReplacement","unescapeTest","_","n","String","fromCharCode","parseInt","caret","nonWordAndColonTest","originIndependentUrl","baseUrls","justDomain","protocol","domain","resolveUrl","base","relativeBase","str","c","invert","suffLen","currChar","substr","encode","regex","obj","name","val","prot","decodeURIComponent","encodeURI","target","key","arguments","tableRow","count","offset","curr","splice","warn","newDefaults"],"mappings":"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","file":"static/js/chunk-5118.7c48ad58.js","sourcesContent":["/**\n * TextRenderer\n * returns only the textual part of the token\n */\nmodule.exports = class TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n\n em(text) {\n return text;\n }\n\n codespan(text) {\n return text;\n }\n\n del(text) {\n return text;\n }\n\n text(text) {\n return text;\n }\n\n link(href, title, text) {\n return '' + text;\n }\n\n image(href, title, text) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n};\n","const Lexer = require('./Lexer.js');\nconst Parser = require('./Parser.js');\nconst Renderer = require('./Renderer.js');\nconst TextRenderer = require('./TextRenderer.js');\nconst InlineLexer = require('./InlineLexer.js');\nconst Slugger = require('./Slugger.js');\nconst {\n merge,\n checkSanitizeDeprecation,\n escape\n} = require('./helpers.js');\nconst {\n getDefaults,\n changeDefaults,\n defaults\n} = require('./defaults.js');\n\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n const highlight = opt.highlight;\n let tokens,\n pending,\n i = 0;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n const done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n let out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occurred:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n};\n\nmarked.getDefaults = getDefaults;\n\nmarked.defaults = defaults;\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.Slugger = Slugger;\n\nmarked.parse = marked;\n\nmodule.exports = marked;\n","const Renderer = require('./Renderer.js');\nconst Slugger = require('./Slugger.js');\nconst InlineLexer = require('./InlineLexer.js');\nconst TextRenderer = require('./TextRenderer.js');\nconst { defaults } = require('./defaults.js');\nconst {\n merge,\n unescape\n} = require('./helpers.js');\n\n/**\n * Parsing & Compiling\n */\nmodule.exports = class Parser {\n constructor(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.slugger = new Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new Parser(options);\n return parser.parse(tokens);\n };\n\n /**\n * Parse Loop\n */\n parse(tokens) {\n this.inline = new InlineLexer(tokens.links, this.options);\n // use an InlineLexer with a TextRenderer to extract pure text\n this.inlineText = new InlineLexer(\n tokens.links,\n merge({}, this.options, { renderer: new TextRenderer() })\n );\n this.tokens = tokens.reverse();\n\n let out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n };\n\n /**\n * Next Token\n */\n next() {\n this.token = this.tokens.pop();\n return this.token;\n };\n\n /**\n * Preview Next Token\n */\n peek() {\n return this.tokens[this.tokens.length - 1] || 0;\n };\n\n /**\n * Parse Text Tokens\n */\n parseText() {\n let body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n };\n\n /**\n * Parse Current Token\n */\n tok() {\n let body = '';\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n unescape(this.inlineText.output(this.token.text)),\n this.slugger);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n let header = '',\n i,\n row,\n cell,\n j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n body = '';\n const ordered = this.token.ordered,\n start = this.token.start;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered, start);\n }\n case 'list_item_start': {\n body = '';\n const loose = this.token.loose;\n const checked = this.token.checked;\n const task = this.token.task;\n\n if (this.token.task) {\n if (loose) {\n if (this.peek().type === 'text') {\n const nextToken = this.peek();\n nextToken.text = this.renderer.checkbox(checked) + ' ' + nextToken.text;\n } else {\n this.tokens.push({\n type: 'text',\n text: this.renderer.checkbox(checked)\n });\n }\n } else {\n body += this.renderer.checkbox(checked);\n }\n }\n\n while (this.next().type !== 'list_item_end') {\n body += !loose && this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n return this.renderer.listitem(body, task, checked);\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n return this.renderer.html(this.token.text);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n default: {\n const errMsg = 'Token with \"' + this.token.type + '\" type was not found.';\n if (this.options.silent) {\n console.log(errMsg);\n } else {\n throw new Error(errMsg);\n }\n }\n }\n };\n};\n","/**\n * Slugger generates header id\n */\nmodule.exports = class Slugger {\n constructor() {\n this.seen = {};\n }\n\n /**\n * Convert string to unique id\n */\n slug(value) {\n let slug = value\n .toLowerCase()\n .trim()\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n\n if (this.seen.hasOwnProperty(slug)) {\n const originalSlug = slug;\n do {\n this.seen[originalSlug]++;\n slug = originalSlug + '-' + this.seen[originalSlug];\n } while (this.seen.hasOwnProperty(slug));\n }\n this.seen[slug] = 0;\n\n return slug;\n };\n};\n","const { defaults } = require('./defaults.js');\nconst {\n cleanUrl,\n escape\n} = require('./helpers.js');\n\n/**\n * Renderer\n */\nmodule.exports = class Renderer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    ';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n };\n\n blockquote(quote) {\n return '
    \\n' + quote + '
    \\n';\n };\n\n html(html) {\n return html;\n };\n\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return ''\n + text\n + '\\n';\n }\n // ignore IDs\n return '' + text + '\\n';\n };\n\n hr() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n };\n\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n };\n\n listitem(text) {\n return '
  • ' + text + '
  • \\n';\n };\n\n checkbox(checked) {\n return ' ';\n };\n\n paragraph(text) {\n return '

    ' + text + '

    \\n';\n };\n\n table(header, body) {\n if (body) body = '' + body + '';\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n };\n\n tablerow(content) {\n return '\\n' + content + '\\n';\n };\n\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? '<' + type + ' align=\"' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n };\n\n // span level renderer\n strong(text) {\n return '' + text + '';\n };\n\n em(text) {\n return '' + text + '';\n };\n\n codespan(text) {\n return '' + text + '';\n };\n\n br() {\n return this.options.xhtml ? '
    ' : '
    ';\n };\n\n del(text) {\n return '' + text + '';\n };\n\n link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n };\n\n image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n let out = '\"'' : '>';\n return out;\n };\n\n text(text) {\n return text;\n };\n};\n","const { defaults } = require('./defaults.js');\nconst { block } = require('./rules.js');\nconst {\n rtrim,\n splitCells,\n escape\n} = require('./helpers.js');\n\n/**\n * Block Lexer\n */\nmodule.exports = class Lexer {\n constructor(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults;\n this.rules = block.normal;\n\n if (this.options.pedantic) {\n this.rules = block.pedantic;\n } else if (this.options.gfm) {\n this.rules = block.gfm;\n }\n }\n\n /**\n * Expose Block Rules\n */\n static get rules() {\n return block;\n }\n\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new Lexer(options);\n return lexer.lex(src);\n };\n\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ');\n\n return this.token(src, true);\n };\n\n /**\n * Lexing\n */\n token(src, top) {\n src = src.replace(/^ +$/gm, '');\n let next,\n loose,\n cap,\n bull,\n b,\n item,\n listStart,\n listItems,\n t,\n space,\n i,\n tag,\n l,\n isordered,\n istask,\n ischecked;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n const lastToken = this.tokens[this.tokens.length - 1];\n src = src.substring(cap[0].length);\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && lastToken.type === 'paragraph') {\n lastToken.text += '\\n' + cap[0].trimRight();\n } else {\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(cap, '\\n')\n : cap\n });\n }\n continue;\n }\n\n // fences\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (cap = this.rules.nptable.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(item.cells[i], item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n isordered = bull.length > 1;\n\n listStart = {\n type: 'list_start',\n ordered: isordered,\n start: isordered ? +bull : '',\n loose: false\n };\n\n this.tokens.push(listStart);\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n listItems = [];\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) */, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull.length > 1 ? b.length === 1\n : (b.length > 1 || (this.options.smartLists && b !== bull))) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n listStart.loose = true;\n }\n\n // Check for task list items\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n\n t = {\n type: 'list_item_start',\n task: istask,\n checked: ischecked,\n loose: loose\n };\n\n listItems.push(t);\n this.tokens.push(t);\n\n // Recurse.\n this.token(item, false);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n if (listStart.loose) {\n l = listItems.length;\n i = 0;\n for (; i < l; i++) {\n listItems[i].loose = true;\n }\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0]\n });\n continue;\n }\n\n // def\n if (top && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n if (!this.tokens.links[tag]) {\n this.tokens.links[tag] = {\n href: cap[2],\n title: cap[3]\n };\n }\n continue;\n }\n\n // table (gfm)\n if (cap = this.rules.table.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(\n item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''),\n item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n };\n};\n","const {\n noopTest,\n edit,\n merge\n} = require('./helpers.js');\n\n/**\n * Block-Level Grammar\n */\nconst block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: /^ {0,3}(`{3,}|~{3,})([^`~\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?:\\n+|$)|$)/,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6}) +([^\\n]*?)(?: +#+)? *(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?\\\\?>\\\\n*' // (3)\n + '|\\\\n*' // (4)\n + '|\\\\n*' // (5)\n + '|)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (6)\n + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n nptable: noopTest,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}\\.)/;\nblock.item = /^( *)(bull) ?[^\\n]*(?:\\n(?!\\1bull ?)[^\\n]*)*/;\nblock.item = edit(block.item, 'gm')\n .replace(/bull/g, block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = //;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} +')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}|~{3,})[^`\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n nptable: /^ *([^|\\n ].*\\|.*)\\n *([-:]+ *\\|[-| :]*)(?:\\n((?:.*[^>\\n ].*(?:\\n|$))*)\\n*|$)/,\n table: /^ *\\|(.+)\\n *\\|?( *[-:]+[-| :]*)(?:\\n((?: *[^>\\n ].*(?:\\n|$))*)\\n*|$)/\n});\n\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = merge({}, block.normal, {\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *(?:#+ *)?(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n});\n\n/**\n * Inline-Level Grammar\n */\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n strong: /^__([^\\s_])__(?!_)|^\\*\\*([^\\s*])\\*\\*(?!\\*)|^__([^\\s][\\s\\S]*?[^\\s])__(?!_)|^\\*\\*([^\\s][\\s\\S]*?[^\\s])\\*\\*(?!\\*)/,\n em: /^_([^\\s_])_(?!_)|^\\*([^\\s*<\\[])\\*(?!\\*)|^_([^\\s<][\\s\\S]*?[^\\s_])_(?!_|[^\\spunctuation])|^_([^\\s_<][\\s\\S]*?[^\\s])_(?!_|[^\\spunctuation])|^\\*([^\\s<\"][\\s\\S]*?[^\\s\\*])\\*(?!\\*|[^\\spunctuation])|^\\*([^\\s*\"<\\[][\\s\\S]*?[^\\s])\\*(?!\\*)/,\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\?@\\\\[^_{|}~';\ninline.em = edit(inline.em).replace(/punctuation/g, inline._punctuation).getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', block._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[[^\\[\\]]*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\[<>]?|[^\\s<>\\\\])*>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^~+(?=\\S)([\\s\\S]*?\\S)~+/,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\/i.test(cap[0])) {\n this.inLink = false;\n }\n if (!this.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = true;\n } else if (this.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = false;\n }\n\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0];\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n src = src.substring(cap[0].length);\n this.inLink = true;\n href = cap[2];\n if (this.options.pedantic) {\n link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n } else {\n title = '';\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim().replace(/^<([\\s\\S]*)>$/, '$1');\n out += this.outputLink(cap, {\n href: InlineLexer.escapes(href),\n title: InlineLexer.escapes(title)\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2].trim(), true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = escape(this.mangle(cap[1]));\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n src = src.substring(cap[0].length);\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n if (this.inRawBlock) {\n out += this.renderer.text(this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0]);\n } else {\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n }\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n }\n\n static escapes(text) {\n return text ? text.replace(InlineLexer.rules._escapes, '$1') : text;\n }\n\n /**\n * Compile Link\n */\n outputLink(cap, link) {\n const href = link.href,\n title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n }\n\n /**\n * Smartypants Transformations\n */\n smartypants(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n }\n\n /**\n * Mangle Links\n */\n mangle(text) {\n if (!this.options.mangle) return text;\n const l = text.length;\n let out = '',\n i = 0,\n ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n};\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = /[&<>\"']/g;\nconst escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nconst escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nconst noopTest = { exec: function noopTest() {} };\n\nfunction merge(obj) {\n let i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n// /c*$/ is vulnerable to REDOS.\n// invert: Remove suffix of non-c chars instead. Default falsey.\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, l - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\nmodule.exports = {\n escape,\n unescape,\n edit,\n cleanUrl,\n resolveUrl,\n noopTest,\n merge,\n splitCells,\n rtrim,\n findClosingBracket,\n checkSanitizeDeprecation\n};\n","function getDefaults() {\n return {\n baseUrl: null,\n breaks: false,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n xhtml: false\n };\n}\n\nfunction changeDefaults(newDefaults) {\n module.exports.defaults = newDefaults;\n}\n\nmodule.exports = {\n defaults: getDefaults(),\n getDefaults,\n changeDefaults\n};\n"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-521f.748b331d.js b/priv/static/adminfe/static/js/chunk-521f.748b331d.js new file mode 100644 index 000000000..570dab224 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-521f.748b331d.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-521f"],{"13xp":function(e,s,t){"use strict";var r=t("2r4G");t.n(r).a},"2r4G":function(e,s,t){},"4bFr":function(e,s,t){"use strict";t.r(s);var r=t("ot3S"),i=t("tPM3"),a=t("o0o1"),n=t.n(a),o=t("yXPU"),l=t.n(o),u=t("XJYT"),c={name:"SecuritySettingsModal",props:{visible:{type:Boolean,default:!1},user:{type:Object,default:function(){return{}}}},data:function(){return{securitySettingsForm:{newEmail:"",newPassword:"",isEmailLoading:!1,isPasswordLoading:!1}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},getLabelWidth:function(){return this.isDesktop?"120px":"85px"},userCredentials:function(){return this.$store.state.userProfile.userCredentials}},mounted:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.$store.dispatch("FetchUserCredentials",{nickname:this.user.nickname});case 2:this.securitySettingsForm.newEmail=this.userCredentials.email;case 3:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),methods:{updateEmail:function(){var e=this;return l()(n.a.mark(function s(){var t;return n.a.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return t={email:e.securitySettingsForm.newEmail},e.securitySettingsForm.isEmailLoading=!0,s.next=4,e.$store.dispatch("UpdateUserCredentials",{nickname:e.user.nickname,credentials:t});case 4:e.securitySettingsForm.isEmailLoading=!1,Object(u.Message)({message:e.$t("userProfile.securitySettings.emailUpdated"),type:"success",duration:5e3});case 6:case"end":return s.stop()}},s)}))()},updatePassword:function(){var e=this;return l()(n.a.mark(function s(){var t;return n.a.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return t={password:e.securitySettingsForm.newPassword},e.securitySettingsForm.isPasswordLoading=!0,s.next=4,e.$store.dispatch("UpdateUserCredentials",{nickname:e.user.nickname,credentials:t});case 4:e.securitySettingsForm.isPasswordLoading=!1,e.securitySettingsForm.newPassword="",Object(u.Message)({message:e.$t("userProfile.securitySettings.passwordUpdated"),type:"success",duration:5e3});case 7:case"end":return s.stop()}},s)}))()},close:function(){this.$emit("close",!0)}}},d=(t("13xp"),t("KHd+")),p=Object(d.a)(c,function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("el-dialog",{staticClass:"security-settings-modal",attrs:{"before-close":e.close,title:e.$t("userProfile.securitySettings.securitySettings"),visible:e.visible}},[t("el-form",{attrs:{model:e.securitySettingsForm,"label-width":e.getLabelWidth}},[t("el-form-item",{attrs:{label:e.$t("userProfile.securitySettings.email")}},[t("el-input",{attrs:{placeholder:e.$t("userProfile.securitySettings.inputNewEmail")},model:{value:e.securitySettingsForm.newEmail,callback:function(s){e.$set(e.securitySettingsForm,"newEmail",s)},expression:"securitySettingsForm.newEmail"}})],1),e._v(" "),t("el-form-item",[t("el-button",{staticClass:"security-settings-submit-button",attrs:{loading:e.securitySettingsForm.isEmailLoading,disabled:!e.securitySettingsForm.newEmail||e.securitySettingsForm.newEmail===e.userCredentials.email,type:"primary"},on:{click:function(s){return e.updateEmail()}}},[e._v("\n "+e._s(e.$t("userProfile.securitySettings.submit"))+"\n ")])],1),e._v(" "),t("el-form-item",{staticClass:"password-input",attrs:{label:e.$t("userProfile.securitySettings.password")}},[t("el-input",{attrs:{placeholder:e.$t("userProfile.securitySettings.inputNewPassword")},model:{value:e.securitySettingsForm.newPassword,callback:function(s){e.$set(e.securitySettingsForm,"newPassword",s)},expression:"securitySettingsForm.newPassword"}}),e._v(" "),t("small",{staticClass:"form-text"},[e._v("\n "+e._s(e.$t("userProfile.securitySettings.passwordLengthNotice",{minLength:8}))+"\n ")])],1),e._v(" "),t("el-alert",{staticClass:"password-alert",attrs:{closable:!1,type:"warning","show-icon":""}},[t("p",[e._v(e._s(e.$t("userProfile.securitySettings.passwordChangeWarning1")))]),e._v(" "),t("p",[e._v(e._s(e.$t("userProfile.securitySettings.passwordChangeWarning2")))])]),e._v(" "),t("el-form-item",[t("el-button",{staticClass:"security-settings-submit-button",attrs:{loading:e.securitySettingsForm.isPasswordLoading,disabled:e.securitySettingsForm.newPassword.length<8,type:"primary"},on:{click:function(s){return e.updatePassword()}}},[e._v("\n "+e._s(e.$t("userProfile.securitySettings.submit"))+"\n ")])],1)],1)],1)},[],!1,null,null,null);p.options.__file="SecuritySettingsModal.vue";var g=p.exports,v=t("rIUS"),_=t("WjBP"),m={name:"UsersShow",components:{ModerationDropdown:i.a,RebootButton:v.a,ResetPasswordDialog:_.a,Status:r.a,SecuritySettingsModal:g},data:function(){return{showPrivate:!1,resetPasswordDialogOpen:!1,securitySettingsModalVisible:!1}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},loading:function(){return this.$store.state.users.loading},statuses:function(){return this.$store.state.userProfile.statuses},statusesLoading:function(){return this.$store.state.userProfile.statusesLoading},user:function(){return this.$store.state.userProfile.user},userProfileLoading:function(){return this.$store.state.userProfile.userProfileLoading},userCredentials:function(){return this.$store.state.userProfile.userCredentials}},mounted:function(){this.$store.dispatch("NeedReboot"),this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("FetchUserProfile",{userId:this.$route.params.id,godmode:!1})},methods:{closeResetPasswordDialog:function(){this.resetPasswordDialogOpen=!1,this.$store.dispatch("RemovePasswordToken")},humanizeTag:function(e){return{"mrf_tag:media-force-nsfw":"Force NSFW","mrf_tag:media-strip":"Strip Media","mrf_tag:force-unlisted":"Force Unlisted","mrf_tag:sandbox":"Sandbox","mrf_tag:disable-remote-subscription":"Disable remote subscription","mrf_tag:disable-any-subscription":"Disable any subscription"}[e]},onTogglePrivate:function(){this.$store.dispatch("FetchUserProfile",{userId:this.$route.params.id,godmode:this.showPrivate})},openResetPasswordDialog:function(){this.resetPasswordDialogOpen=!0},propertyExists:function(e,s){return e[s]}}},f=(t("9IXO"),Object(d.a)(m,function(){var e=this,s=e.$createElement,t=e._self._c||s;return e.userProfileLoading?e._e():t("main",[e.isDesktop||e.isTablet?t("header",{staticClass:"user-page-header"},[t("div",{staticClass:"avatar-name-container"},[e.propertyExists(e.user,"avatar")?t("el-avatar",{attrs:{src:e.user.avatar,size:"large"}}):e._e(),e._v(" "),e.propertyExists(e.user,"nickname")?t("h1",[e._v(e._s(e.user.nickname))]):t("h1",{staticClass:"invalid"},[e._v("("+e._s(e.$t("users.invalidNickname"))+")")]),e._v(" "),e.propertyExists(e.user,"url")?t("a",{attrs:{href:e.user.url,target:"_blank"}},[t("i",{staticClass:"el-icon-top-right",attrs:{title:e.$t("userProfile.openAccountInInstance")}})]):e._e()],1),e._v(" "),t("div",{staticClass:"left-header-container"},[e.propertyExists(e.user,"nickname")?t("moderation-dropdown",{attrs:{user:e.user,page:"userPage"},on:{"open-reset-token-dialog":e.openResetPasswordDialog}}):e._e(),e._v(" "),t("reboot-button")],1)]):e._e(),e._v(" "),e.isMobile?t("div",{staticClass:"user-page-header-container"},[t("header",{staticClass:"user-page-header"},[t("div",{staticClass:"avatar-name-container"},[e.propertyExists(e.user,"avatar")?t("el-avatar",{attrs:{src:e.user.avatar,size:"large"}}):e._e(),e._v(" "),e.propertyExists(e.user,"nickname")?t("h1",[e._v(e._s(e.user.nickname))]):t("h1",{staticClass:"invalid"},[e._v("("+e._s(e.$t("users.invalidNickname"))+")")])],1),e._v(" "),t("reboot-button")],1),e._v(" "),e.propertyExists(e.user,"nickname")?t("moderation-dropdown",{attrs:{user:e.user,page:"userPage"},on:{"open-reset-token-dialog":e.openResetPasswordDialog}}):e._e()],1):e._e(),e._v(" "),t("reset-password-dialog",{attrs:{"reset-password-dialog-open":e.resetPasswordDialogOpen},on:{"close-reset-token-dialog":e.closeResetPasswordDialog}}),e._v(" "),t("div",{staticClass:"user-profile-container"},[t("el-card",{staticClass:"user-profile-card"},[t("div",{staticClass:"el-table el-table--fit el-table--enable-row-hover el-table--enable-row-transition el-table--medium"},[e.propertyExists(e.user,"nickname")?e._e():t("el-tag",{staticClass:"invalid-user-tag",attrs:{type:"info"}},[e._v("\n "+e._s(e.$t("users.invalidAccount"))+"\n ")]),e._v(" "),t("table",{staticClass:"user-profile-table"},[t("tbody",[t("tr",{staticClass:"el-table__row"},[t("td",{staticClass:"name-col"},[e._v("ID")]),e._v(" "),t("td",[e._v("\n "+e._s(e.user.id)+"\n ")])]),e._v(" "),t("tr",{staticClass:"el-table__row"},[t("td",[e._v(e._s(e.$t("userProfile.actorType")))]),e._v(" "),t("td",[t("el-tag",{attrs:{type:"Person"===e.userCredentials.actor_type?"success":"warning"}},[e._v("\n "+e._s(e.userCredentials.actor_type)+"\n ")])],1)]),e._v(" "),t("tr",{staticClass:"el-table__row"},[t("td",[e._v(e._s(e.$t("userProfile.tags")))]),e._v(" "),t("td",[0!==e.user.tags.length&&e.propertyExists(e.user,"tags")?e._l(e.user.tags,function(s){return t("el-tag",{key:s,staticClass:"user-profile-tag"},[e._v(e._s(e.humanizeTag(s)))])}):t("span",[e._v("—")])],2)]),e._v(" "),t("tr",{staticClass:"el-table__row"},[t("td",[e._v(e._s(e.$t("userProfile.roles")))]),e._v(" "),t("td",[e.user.roles.admin?t("el-tag",{staticClass:"user-profile-tag"},[e._v("\n "+e._s(e.$t("users.admin"))+"\n ")]):e._e(),e._v(" "),e.user.roles.moderator?t("el-tag",{staticClass:"user-profile-tag"},[e._v("\n "+e._s(e.$t("users.moderator"))+"\n ")]):e._e(),e._v(" "),e.propertyExists(e.user,"roles")&&(e.user.roles.moderator||e.user.roles.admin)?e._e():t("span",[e._v("—")])],1)]),e._v(" "),t("tr",{staticClass:"el-table__row"},[t("td",[e._v(e._s(e.$t("userProfile.accountType")))]),e._v(" "),t("td",[e.user.local?t("el-tag",{attrs:{type:"info"}},[e._v(e._s(e.$t("userProfile.local")))]):e._e(),e._v(" "),e.user.local?e._e():t("el-tag",{attrs:{type:"info"}},[e._v(e._s(e.$t("userProfile.external")))])],1)]),e._v(" "),t("tr",{staticClass:"el-table__row"},[t("td",[e._v(e._s(e.$t("userProfile.status")))]),e._v(" "),t("td",[e.user.approval_pending?t("el-tag",{attrs:{type:"info"}},[e._v(e._s(e.$t("userProfile.pending")))]):e._e(),e._v(" "),!e.user.deactivated&!e.user.approval_pending?t("el-tag",{attrs:{type:"success"}},[e._v(e._s(e.$t("userProfile.active")))]):e._e(),e._v(" "),e.user.deactivated?t("el-tag",{attrs:{type:"danger"}},[e._v(e._s(e.$t("userProfile.deactivated")))]):e._e()],1)])])]),e._v(" "),e.user.registration_reason?t("div",[t("div",{staticClass:"reason-label"},[e._v(e._s(e.$t("userProfile.reason")))]),e._v('\n "'+e._s(e.user.registration_reason)+'"\n ')]):e._e()],1),e._v(" "),e.propertyExists(e.user,"nickname")?t("el-button",{staticClass:"security-setting-button",attrs:{icon:"el-icon-lock"},on:{click:function(s){e.securitySettingsModalVisible=!0}}},[e._v("\n "+e._s(e.$t("userProfile.securitySettings.securitySettings"))+"\n ")]):e._e(),e._v(" "),e.propertyExists(e.user,"nickname")?t("SecuritySettingsModal",{attrs:{user:e.user,visible:e.securitySettingsModalVisible},on:{close:function(s){e.securitySettingsModalVisible=!1}}}):e._e()],1),e._v(" "),t("div",{staticClass:"recent-statuses-container"},[t("h2",{staticClass:"recent-statuses"},[e._v(e._s(e.$t("userProfile.recentStatuses")))]),e._v(" "),t("el-checkbox",{staticClass:"show-private-statuses",on:{change:e.onTogglePrivate},model:{value:e.showPrivate,callback:function(s){e.showPrivate=s},expression:"showPrivate"}},[e._v("\n "+e._s(e.$t("statuses.showPrivateStatuses"))+"\n ")]),e._v(" "),e.statusesLoading?e._e():t("el-timeline",{staticClass:"statuses"},[e._l(e.statuses,function(s){return t("el-timeline-item",{key:s.id},[t("status",{attrs:{status:s,account:s.account,"show-checkbox":!1,"user-id":e.user.id,godmode:e.showPrivate}})],1)}),e._v(" "),0===e.statuses.length?t("p",{staticClass:"no-statuses"},[e._v(e._s(e.$t("userProfile.noStatuses")))]):e._e()],2)],1)],1)],1)},[],!1,null,null,null));f.options.__file="show.vue";s.default=f.exports},"53Av":function(e,s,t){"use strict";var r=t("lOBV");t.n(r).a},"9IXO":function(e,s,t){"use strict";var r=t("msq4");t.n(r).a},RnhZ:function(e,s,t){var r={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-in":"7C5Q","./en-in.js":"7C5Q","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./en-sg":"t+mt","./en-sg.js":"t+mt","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fil":"1ppg","./fil.js":"1ppg","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-deva":"qvJo","./gom-deva.js":"qvJo","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./oc-lnc":"Fnuy","./oc-lnc.js":"Fnuy","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tk":"Wv91","./tk.js":"Wv91","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-mo":"OmwH","./zh-mo.js":"OmwH","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function i(e){var s=a(e);return t(s)}function a(e){if(!t.o(r,e)){var s=new Error("Cannot find module '"+e+"'");throw s.code="MODULE_NOT_FOUND",s}return r[e]}i.keys=function(){return Object.keys(r)},i.resolve=a,e.exports=i,i.id="RnhZ"},WjBP:function(e,s,t){"use strict";var r={name:"ResetPasswordDialog",props:{resetPasswordDialogOpen:{type:Boolean,default:!1}},computed:{dialogOpen:function(){return this.resetPasswordDialogOpen},loading:function(){return this.$store.state.users.loading},passwordResetLink:function(){return this.$store.state.users.passwordResetToken.link},passwordResetToken:function(){return this.$store.state.users.passwordResetToken.token}},methods:{closeResetPasswordDialog:function(){this.$emit("close-reset-token-dialog")}}},i=t("KHd+"),a=Object(i.a)(r,function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("el-dialog",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],attrs:{visible:e.dialogOpen,title:e.$t("users.passwordResetTokenCreated"),"custom-class":"password-reset-token-dialog"},on:{close:e.closeResetPasswordDialog}},[t("div",[t("p",{staticClass:"password-reset-token"},[e._v(e._s(e.$t("users.passwordResetTokenGenerated"))+" "+e._s(e.passwordResetToken))]),e._v(" "),t("p",[e._v(e._s(e.$t("users.linkToResetPassword"))+"\n "),t("a",{staticClass:"reset-password-link",attrs:{href:e.passwordResetLink,target:"_blank"}},[e._v(e._s(e.passwordResetLink))])])])])},[],!1,null,null,null);a.options.__file="ResetPasswordDialog.vue";s.a=a.exports},lOBV:function(e,s,t){},msq4:function(e,s,t){},tPM3:function(e,s,t){"use strict";var r={name:"ModerationDropdown",props:{user:{type:Object,default:function(){return{}}},page:{type:String,default:"users"},statusId:{type:String,default:""}},computed:{actorType:{get:function(){return this.user.actor_type},set:function(e){this.$store.dispatch("UpdateActorType",{user:this.user,type:e,_userId:this.user.id,_statusId:this.statusId})}},isDesktop:function(){return"desktop"===this.$store.state.app.device},tagPolicyEnabled:function(){return this.$store.state.users.mrfPolicies.includes("Pleroma.Web.ActivityPub.MRF.TagPolicy")}},methods:{disableMfa:function(e){this.$store.dispatch("DisableMfa",e)},enableTagPolicy:function(){var e=this;this.$confirm(this.$t("users.confirmEnablingTagPolicy"),{confirmButtonText:"Yes",cancelButtonText:"Cancel",type:"warning"}).then(function(){e.$message({type:"success",message:e.$t("users.enableTagPolicySuccessMessage")}),e.$store.dispatch("EnableTagPolicy")}).catch(function(){e.$message({type:"info",message:"Canceled"})})},getPasswordResetToken:function(e){this.$emit("open-reset-token-dialog"),this.$store.dispatch("GetPasswordResetToken",e)},handleConfirmationResend:function(e){this.$store.dispatch("ResendConfirmationEmail",[e])},handleDeletion:function(e){var s=this;this.$confirm(this.$t("users.deleteUserConfirmation"),{confirmButtonText:"Delete",cancelButtonText:"Cancel",type:"warning"}).then(function(){s.$store.dispatch("DeleteUsers",{users:[e],_userId:e.id})}).catch(function(){s.$message({type:"info",message:"Delete canceled"})})},handleAccountApproval:function(e){this.$store.dispatch("ApproveUsersAccount",{users:[e],_userId:e.id,_statusId:this.statusId})},handleAccountRejection:function(e){var s=this;this.$confirm(this.$t("users.rejectAccountConfirmation"),{confirmButtonText:"Reject",cancelButtonText:"Cancel",type:"warning"}).then(function(){s.$store.dispatch("DeleteUsers",{users:[e],_userId:e.id})}).catch(function(){s.$message({type:"info",message:"Reject canceled"})})},handleEmailConfirmation:function(e){this.$store.dispatch("ConfirmUsersEmail",{users:[e],_userId:e.id,_statusId:this.statusId})},requirePasswordReset:function(e){this.$store.state.user.nodeInfo.metadata.mailerEnabled?this.$store.dispatch("RequirePasswordReset",[e]):this.$alert(this.$t("users.mailerMustBeEnabled"),"Error",{type:"error"})},showAdminAction:function(e){var s=e.local,t=e.id;return s&&this.showDeactivatedButton(t)},showDeactivatedButton:function(e){return this.$store.state.user.id!==e},toggleActivation:function(e){e.deactivated?this.$store.dispatch("ActivateUsers",{users:[e],_userId:e.id}):this.$store.dispatch("DeactivateUsers",{users:[e],_userId:e.id})},toggleTag:function(e,s){e.tags.includes(s)?this.$store.dispatch("RemoveTag",{users:[e],tag:s,_userId:e.id,_statusId:this.statusId}):this.$store.dispatch("AddTag",{users:[e],tag:s,_userId:e.id,_statusId:this.statusId})},toggleUserRight:function(e,s){e.roles[s]?this.$store.dispatch("DeleteRight",{users:[e],right:s,_userId:e.id,_statusId:this.statusId}):this.$store.dispatch("AddRight",{users:[e],right:s,_userId:e.id,_statusId:this.statusId})}}},i=(t("53Av"),t("KHd+")),a=Object(i.a)(r,function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("el-dropdown",{attrs:{"hide-on-click":!1,size:"small",trigger:"click",placement:"top-start"},nativeOn:{click:function(e){e.stopPropagation()}}},[t("div",["users"===e.page?t("el-button",{staticClass:"el-dropdown-link",attrs:{type:"text"}},[e._v("\n "+e._s(e.$t("users.moderation"))+"\n "),e.isDesktop?t("i",{staticClass:"el-icon-arrow-down el-icon--right"}):e._e()]):e._e(),e._v(" "),"userPage"===e.page||"statusPage"===e.page?t("el-button",{staticClass:"moderate-user-button"},[t("span",{staticClass:"moderate-user-button-container"},[t("span",[t("i",{staticClass:"el-icon-edit"}),e._v("\n "+e._s(e.$t("users.moderateUser"))+"\n ")]),e._v(" "),t("i",{staticClass:"el-icon-arrow-down el-icon--right"})])]):e._e()],1),e._v(" "),t("el-dropdown-menu",{staticClass:"moderation-dropdown-menu",attrs:{slot:"dropdown"},slot:"dropdown"},[t("el-dropdown-item",{staticClass:"actor-type-dropdown"},[t("el-select",{staticClass:"actor-type-select",attrs:{placeholder:e.$t("userProfile.actorType")},model:{value:e.actorType,callback:function(s){e.actorType=s},expression:"actorType"}},[t("el-option",{attrs:{label:e.$t("users.service"),value:"Service"}}),e._v(" "),t("el-option",{attrs:{label:e.$t("users.person"),value:"Person"}})],1)],1),e._v(" "),e.showAdminAction(e.user)?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(s){return e.toggleUserRight(e.user,"admin")}}},[e._v("\n "+e._s(e.user.roles.admin?e.$t("users.revokeAdmin"):e.$t("users.grantAdmin"))+"\n ")]):e._e(),e._v(" "),e.showAdminAction(e.user)?t("el-dropdown-item",{nativeOn:{click:function(s){return e.toggleUserRight(e.user,"moderator")}}},[e._v("\n "+e._s(e.user.roles.moderator?e.$t("users.revokeModerator"):e.$t("users.grantModerator"))+"\n ")]):e._e(),e._v(" "),e.showDeactivatedButton(e.user.id)&&"statusPage"!==e.page?t("el-dropdown-item",{attrs:{divided:e.showAdminAction(e.user)},nativeOn:{click:function(s){return e.toggleActivation(e.user)}}},[e._v("\n "+e._s(e.user.deactivated?e.$t("users.activateAccount"):e.$t("users.deactivateAccount"))+"\n ")]):e._e(),e._v(" "),e.showDeactivatedButton(e.user.id)&&"statusPage"!==e.page?t("el-dropdown-item",{nativeOn:{click:function(s){return e.handleDeletion(e.user)}}},[e._v("\n "+e._s(e.$t("users.deleteAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.approval_pending?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(s){return e.handleAccountApproval(e.user)}}},[e._v("\n "+e._s(e.$t("users.approveAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.approval_pending?t("el-dropdown-item",{nativeOn:{click:function(s){return e.handleAccountRejection(e.user)}}},[e._v("\n "+e._s(e.$t("users.rejectAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.confirmation_pending?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(s){return e.handleEmailConfirmation(e.user)}}},[e._v("\n "+e._s(e.$t("users.confirmAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.confirmation_pending?t("el-dropdown-item",{nativeOn:{click:function(s){return e.handleConfirmationResend(e.user)}}},[e._v("\n "+e._s(e.$t("users.resendConfirmation"))+"\n ")]):e._e(),e._v(" "),e.tagPolicyEnabled?t("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:media-force-nsfw")},attrs:{divided:e.showAdminAction(e.user)},nativeOn:{click:function(s){return e.toggleTag(e.user,"mrf_tag:media-force-nsfw")}}},[e._v("\n "+e._s(e.$t("users.forceNsfw"))+"\n "),e.user.tags.includes("mrf_tag:media-force-nsfw")?t("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.tagPolicyEnabled?t("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:media-strip")},nativeOn:{click:function(s){return e.toggleTag(e.user,"mrf_tag:media-strip")}}},[e._v("\n "+e._s(e.$t("users.stripMedia"))+"\n "),e.user.tags.includes("mrf_tag:media-strip")?t("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.tagPolicyEnabled?t("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:force-unlisted")},nativeOn:{click:function(s){return e.toggleTag(e.user,"mrf_tag:force-unlisted")}}},[e._v("\n "+e._s(e.$t("users.forceUnlisted"))+"\n "),e.user.tags.includes("mrf_tag:force-unlisted")?t("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.tagPolicyEnabled?t("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:sandbox")},nativeOn:{click:function(s){return e.toggleTag(e.user,"mrf_tag:sandbox")}}},[e._v("\n "+e._s(e.$t("users.sandbox"))+"\n "),e.user.tags.includes("mrf_tag:sandbox")?t("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.user.local&&e.tagPolicyEnabled?t("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:disable-remote-subscription")},nativeOn:{click:function(s){return e.toggleTag(e.user,"mrf_tag:disable-remote-subscription")}}},[e._v("\n "+e._s(e.$t("users.disableRemoteSubscription"))+"\n "),e.user.tags.includes("mrf_tag:disable-remote-subscription")?t("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.user.local&&e.tagPolicyEnabled?t("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:disable-any-subscription")},nativeOn:{click:function(s){return e.toggleTag(e.user,"mrf_tag:disable-any-subscription")}}},[e._v("\n "+e._s(e.$t("users.disableAnySubscription"))+"\n "),e.user.tags.includes("mrf_tag:disable-any-subscription")?t("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.tagPolicyEnabled?e._e():t("el-dropdown-item",{staticClass:"no-hover",attrs:{divided:""},nativeOn:{click:function(s){return e.enableTagPolicy(s)}}},[e._v("\n "+e._s(e.$t("users.enableTagPolicy"))+"\n ")]),e._v(" "),e.user.local?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(s){return e.getPasswordResetToken(e.user.nickname)}}},[e._v("\n "+e._s(e.$t("users.getPasswordResetToken"))+"\n ")]):e._e(),e._v(" "),e.user.local?t("el-dropdown-item",{nativeOn:{click:function(s){return e.requirePasswordReset(e.user)}}},[e._v("\n "+e._s(e.$t("users.requirePasswordReset"))+"\n ")]):e._e(),e._v(" "),e.user.local?t("el-dropdown-item",{nativeOn:{click:function(s){return e.disableMfa(e.user.nickname)}}},[e._v("\n "+e._s(e.$t("users.disableMfa"))+"\n ")]):e._e()],1)],1)},[],!1,null,null,null);a.options.__file="ModerationDropdown.vue";s.a=a.exports}}]); +//# sourceMappingURL=chunk-521f.748b331d.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-521f.748b331d.js.map b/priv/static/adminfe/static/js/chunk-521f.748b331d.js.map new file mode 100644 index 000000000..3380bbbd5 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-521f.748b331d.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/users/components/SecuritySettingsModal.vue?5147","webpack:///./src/views/users/show.vue?816e","webpack:///./src/views/users/components/SecuritySettingsModal.vue?49db","webpack:///src/views/users/components/SecuritySettingsModal.vue","webpack:///./src/views/users/components/SecuritySettingsModal.vue","webpack:///./src/views/users/components/SecuritySettingsModal.vue?dd3f","webpack:///./src/views/users/show.vue?ac8b","webpack:///src/views/users/show.vue","webpack:///./src/views/users/show.vue","webpack:///./src/views/users/components/ModerationDropdown.vue?e3f0","webpack:///./src/views/users/show.vue?aed3","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/views/users/components/ResetPasswordDialog.vue?0b2b","webpack:///./src/views/users/components/ResetPasswordDialog.vue?31da","webpack:///src/views/users/components/ResetPasswordDialog.vue","webpack:///./src/views/users/components/ResetPasswordDialog.vue","webpack:///./src/views/users/components/ModerationDropdown.vue?a26f","webpack:///./src/views/users/components/ModerationDropdown.vue?676e","webpack:///src/views/users/components/ModerationDropdown.vue","webpack:///./src/views/users/components/ModerationDropdown.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_SecuritySettingsModal_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","components_SecuritySettingsModalvue_type_script_lang_js_","name","props","visible","type","Boolean","default","user","Object","data","securitySettingsForm","newEmail","newPassword","isEmailLoading","isPasswordLoading","computed","isDesktop","this","$store","state","app","device","getLabelWidth","userCredentials","userProfile","mounted","_mounted","asyncToGenerator_default","regenerator_default","a","mark","_callee","wrap","_context","prev","next","dispatch","nickname","email","stop","apply","arguments","methods","updateEmail","_this","_callee2","credentials","_context2","element_ui_common","message","$t","duration","updatePassword","_this2","_callee3","_context3","password","close","$emit","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","before-close","title","model","label-width","label","placeholder","value","callback","$$v","$set","expression","_v","loading","disabled","on","click","$event","_s","minLength","closable","show-icon","length","options","__file","SecuritySettingsModal","users_showvue_type_script_lang_js_","components","ModerationDropdown","RebootButton","ResetPasswordDialog","Status","showPrivate","resetPasswordDialogOpen","securitySettingsModalVisible","isMobile","isTablet","users","statuses","statusesLoading","userProfileLoading","userId","$route","params","id","godmode","closeResetPasswordDialog","humanizeTag","tag","mrf_tag:media-force-nsfw","mrf_tag:media-strip","mrf_tag:force-unlisted","mrf_tag:sandbox","mrf_tag:disable-remote-subscription","mrf_tag:disable-any-subscription","onTogglePrivate","openResetPasswordDialog","propertyExists","account","property","show_component","_e","src","avatar","size","href","url","target","page","open-reset-token-dialog","reset-password-dialog-open","close-reset-token-dialog","actor_type","tags","_l","key","roles","moderator","admin","local","deactivated","approval_pending","registration_reason","icon","change","status","show-checkbox","user-id","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ModerationDropdown_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_show_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-in","./en-in.js","./en-nz","./en-nz.js","./en-sg","./en-sg.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fil","./fil.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-deva","./gom-deva.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./oc-lnc","./oc-lnc.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tk","./tk.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-mo","./zh-mo.js","./zh-tw","./zh-tw.js","webpackContext","req","webpackContextResolve","o","e","Error","code","keys","resolve","module","exports","components_ResetPasswordDialogvue_type_script_lang_js_","dialogOpen","passwordResetLink","passwordResetToken","link","token","directives","rawName","custom-class","components_ModerationDropdownvue_type_script_lang_js_","String","statusId","actorType","get","set","_userId","_statusId","tagPolicyEnabled","mrfPolicies","includes","disableMfa","enableTagPolicy","$confirm","confirmButtonText","cancelButtonText","then","$message","catch","getPasswordResetToken","handleConfirmationResend","handleDeletion","handleAccountApproval","handleAccountRejection","_this3","handleEmailConfirmation","requirePasswordReset","nodeInfo","metadata","mailerEnabled","$alert","showAdminAction","_ref","showDeactivatedButton","toggleActivation","toggleTag","toggleUserRight","right","hide-on-click","trigger","placement","nativeOn","stopPropagation","slot","divided","confirmation_pending","class","active-tag"],"mappings":"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,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,WAAA,OACAC,cAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAA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","file":"static/js/chunk-521f.748b331d.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecuritySettingsModal.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecuritySettingsModal.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.userProfileLoading)?_c('main',[(_vm.isDesktop || _vm.isTablet)?_c('header',{staticClass:\"user-page-header\"},[_c('div',{staticClass:\"avatar-name-container\"},[(_vm.propertyExists(_vm.user, 'avatar'))?_c('el-avatar',{attrs:{\"src\":_vm.user.avatar,\"size\":\"large\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('h1',[_vm._v(_vm._s(_vm.user.nickname))]):_c('h1',{staticClass:\"invalid\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")]),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'url'))?_c('a',{attrs:{\"href\":_vm.user.url,\"target\":\"_blank\"}},[_c('i',{staticClass:\"el-icon-top-right\",attrs:{\"title\":_vm.$t('userProfile.openAccountInInstance')}})]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"left-header-container\"},[(_vm.propertyExists(_vm.user, 'nickname'))?_c('moderation-dropdown',{attrs:{\"user\":_vm.user,\"page\":'userPage'},on:{\"open-reset-token-dialog\":_vm.openResetPasswordDialog}}):_vm._e(),_vm._v(\" \"),_c('reboot-button')],1)]):_vm._e(),_vm._v(\" \"),(_vm.isMobile)?_c('div',{staticClass:\"user-page-header-container\"},[_c('header',{staticClass:\"user-page-header\"},[_c('div',{staticClass:\"avatar-name-container\"},[(_vm.propertyExists(_vm.user, 'avatar'))?_c('el-avatar',{attrs:{\"src\":_vm.user.avatar,\"size\":\"large\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('h1',[_vm._v(_vm._s(_vm.user.nickname))]):_c('h1',{staticClass:\"invalid\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")])],1),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('moderation-dropdown',{attrs:{\"user\":_vm.user,\"page\":'userPage'},on:{\"open-reset-token-dialog\":_vm.openResetPasswordDialog}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('reset-password-dialog',{attrs:{\"reset-password-dialog-open\":_vm.resetPasswordDialogOpen},on:{\"close-reset-token-dialog\":_vm.closeResetPasswordDialog}}),_vm._v(\" \"),_c('div',{staticClass:\"user-profile-container\"},[_c('el-card',{staticClass:\"user-profile-card\"},[_c('div',{staticClass:\"el-table el-table--fit el-table--enable-row-hover el-table--enable-row-transition el-table--medium\"},[(!_vm.propertyExists(_vm.user, 'nickname'))?_c('el-tag',{staticClass:\"invalid-user-tag\",attrs:{\"type\":\"info\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.invalidAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('table',{staticClass:\"user-profile-table\"},[_c('tbody',[_c('tr',{staticClass:\"el-table__row\"},[_c('td',{staticClass:\"name-col\"},[_vm._v(\"ID\")]),_vm._v(\" \"),_c('td',[_vm._v(\"\\n \"+_vm._s(_vm.user.id)+\"\\n \")])]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.actorType')))]),_vm._v(\" \"),_c('td',[_c('el-tag',{attrs:{\"type\":_vm.userCredentials.actor_type === 'Person' ? 'success' : 'warning'}},[_vm._v(\"\\n \"+_vm._s(_vm.userCredentials.actor_type)+\"\\n \")])],1)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.tags')))]),_vm._v(\" \"),_c('td',[(_vm.user.tags.length === 0 || !_vm.propertyExists(_vm.user, 'tags'))?_c('span',[_vm._v(\"—\")]):_vm._l((_vm.user.tags),function(tag){return _c('el-tag',{key:tag,staticClass:\"user-profile-tag\"},[_vm._v(_vm._s(_vm.humanizeTag(tag)))])})],2)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.roles')))]),_vm._v(\" \"),_c('td',[(_vm.user.roles.admin)?_c('el-tag',{staticClass:\"user-profile-tag\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.admin'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.roles.moderator)?_c('el-tag',{staticClass:\"user-profile-tag\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderator'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.propertyExists(_vm.user, 'roles') || (!_vm.user.roles.moderator && !_vm.user.roles.admin))?_c('span',[_vm._v(\"—\")]):_vm._e()],1)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.accountType')))]),_vm._v(\" \"),_c('td',[(_vm.user.local)?_c('el-tag',{attrs:{\"type\":\"info\"}},[_vm._v(_vm._s(_vm.$t('userProfile.local')))]):_vm._e(),_vm._v(\" \"),(!_vm.user.local)?_c('el-tag',{attrs:{\"type\":\"info\"}},[_vm._v(_vm._s(_vm.$t('userProfile.external')))]):_vm._e()],1)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.status')))]),_vm._v(\" \"),_c('td',[(_vm.user.approval_pending)?_c('el-tag',{attrs:{\"type\":\"info\"}},[_vm._v(_vm._s(_vm.$t('userProfile.pending')))]):_vm._e(),_vm._v(\" \"),(!_vm.user.deactivated & !_vm.user.approval_pending)?_c('el-tag',{attrs:{\"type\":\"success\"}},[_vm._v(_vm._s(_vm.$t('userProfile.active')))]):_vm._e(),_vm._v(\" \"),(_vm.user.deactivated)?_c('el-tag',{attrs:{\"type\":\"danger\"}},[_vm._v(_vm._s(_vm.$t('userProfile.deactivated')))]):_vm._e()],1)])])]),_vm._v(\" \"),(_vm.user.registration_reason)?_c('div',[_c('div',{staticClass:\"reason-label\"},[_vm._v(_vm._s(_vm.$t('userProfile.reason')))]),_vm._v(\"\\n \\\"\"+_vm._s(_vm.user.registration_reason)+\"\\\"\\n \")]):_vm._e()],1),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('el-button',{staticClass:\"security-setting-button\",attrs:{\"icon\":\"el-icon-lock\"},on:{\"click\":function($event){_vm.securitySettingsModalVisible = true}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.securitySettings.securitySettings'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('SecuritySettingsModal',{attrs:{\"user\":_vm.user,\"visible\":_vm.securitySettingsModalVisible},on:{\"close\":function($event){_vm.securitySettingsModalVisible = false}}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"recent-statuses-container\"},[_c('h2',{staticClass:\"recent-statuses\"},[_vm._v(_vm._s(_vm.$t('userProfile.recentStatuses')))]),_vm._v(\" \"),_c('el-checkbox',{staticClass:\"show-private-statuses\",on:{\"change\":_vm.onTogglePrivate},model:{value:(_vm.showPrivate),callback:function ($$v) {_vm.showPrivate=$$v},expression:\"showPrivate\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.showPrivateStatuses'))+\"\\n \")]),_vm._v(\" \"),(!_vm.statusesLoading)?_c('el-timeline',{staticClass:\"statuses\"},[_vm._l((_vm.statuses),function(status){return _c('el-timeline-item',{key:status.id},[_c('status',{attrs:{\"status\":status,\"account\":status.account,\"show-checkbox\":false,\"user-id\":_vm.user.id,\"godmode\":_vm.showPrivate}})],1)}),_vm._v(\" \"),(_vm.statuses.length === 0)?_c('p',{staticClass:\"no-statuses\"},[_vm._v(_vm._s(_vm.$t('userProfile.noStatuses')))]):_vm._e()],2):_vm._e()],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecuritySettingsModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecuritySettingsModal.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SecuritySettingsModal.vue?vue&type=template&id=7fb08478&\"\nimport script from \"./SecuritySettingsModal.vue?vue&type=script&lang=js&\"\nexport * from \"./SecuritySettingsModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SecuritySettingsModal.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SecuritySettingsModal.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{staticClass:\"security-settings-modal\",attrs:{\"before-close\":_vm.close,\"title\":_vm.$t('userProfile.securitySettings.securitySettings'),\"visible\":_vm.visible}},[_c('el-form',{attrs:{\"model\":_vm.securitySettingsForm,\"label-width\":_vm.getLabelWidth}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('userProfile.securitySettings.email')}},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('userProfile.securitySettings.inputNewEmail')},model:{value:(_vm.securitySettingsForm.newEmail),callback:function ($$v) {_vm.$set(_vm.securitySettingsForm, \"newEmail\", $$v)},expression:\"securitySettingsForm.newEmail\"}})],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{staticClass:\"security-settings-submit-button\",attrs:{\"loading\":_vm.securitySettingsForm.isEmailLoading,\"disabled\":!_vm.securitySettingsForm.newEmail || _vm.securitySettingsForm.newEmail === _vm.userCredentials.email,\"type\":\"primary\"},on:{\"click\":function($event){return _vm.updateEmail()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.securitySettings.submit'))+\"\\n \")])],1),_vm._v(\" \"),_c('el-form-item',{staticClass:\"password-input\",attrs:{\"label\":_vm.$t('userProfile.securitySettings.password')}},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('userProfile.securitySettings.inputNewPassword')},model:{value:(_vm.securitySettingsForm.newPassword),callback:function ($$v) {_vm.$set(_vm.securitySettingsForm, \"newPassword\", $$v)},expression:\"securitySettingsForm.newPassword\"}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.securitySettings.passwordLengthNotice', { minLength: 8 }))+\"\\n \")])],1),_vm._v(\" \"),_c('el-alert',{staticClass:\"password-alert\",attrs:{\"closable\":false,\"type\":\"warning\",\"show-icon\":\"\"}},[_c('p',[_vm._v(_vm._s(_vm.$t('userProfile.securitySettings.passwordChangeWarning1')))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('userProfile.securitySettings.passwordChangeWarning2')))])]),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{staticClass:\"security-settings-submit-button\",attrs:{\"loading\":_vm.securitySettingsForm.isPasswordLoading,\"disabled\":_vm.securitySettingsForm.newPassword.length < 8,\"type\":\"primary\"},on:{\"click\":function($event){return _vm.updatePassword()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.securitySettings.submit'))+\"\\n \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./show.vue?vue&type=template&id=ab25eeb8&\"\nimport script from \"./show.vue?vue&type=script&lang=js&\"\nexport * from \"./show.vue?vue&type=script&lang=js&\"\nimport style0 from \"./show.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"show.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-in\": \"7C5Q\",\n\t\"./en-in.js\": \"7C5Q\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./en-sg\": \"t+mt\",\n\t\"./en-sg.js\": \"t+mt\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fil\": \"1ppg\",\n\t\"./fil.js\": \"1ppg\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-deva\": \"qvJo\",\n\t\"./gom-deva.js\": \"qvJo\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./oc-lnc\": \"Fnuy\",\n\t\"./oc-lnc.js\": \"Fnuy\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tk\": \"Wv91\",\n\t\"./tk.js\": \"Wv91\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-mo\": \"OmwH\",\n\t\"./zh-mo.js\": \"OmwH\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"visible\":_vm.dialogOpen,\"title\":_vm.$t('users.passwordResetTokenCreated'),\"custom-class\":\"password-reset-token-dialog\"},on:{\"close\":_vm.closeResetPasswordDialog}},[_c('div',[_c('p',{staticClass:\"password-reset-token\"},[_vm._v(_vm._s(_vm.$t('users.passwordResetTokenGenerated'))+\" \"+_vm._s(_vm.passwordResetToken))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('users.linkToResetPassword'))+\"\\n \"),_c('a',{staticClass:\"reset-password-link\",attrs:{\"href\":_vm.passwordResetLink,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.passwordResetLink))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./ResetPasswordDialog.vue?vue&type=template&id=e7d3eed4&\"\nimport script from \"./ResetPasswordDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPasswordDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ResetPasswordDialog.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"hide-on-click\":false,\"size\":\"small\",\"trigger\":\"click\",\"placement\":\"top-start\"},nativeOn:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',[(_vm.page === 'users')?_c('el-button',{staticClass:\"el-dropdown-link\",attrs:{\"type\":\"text\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderation'))+\"\\n \"),(_vm.isDesktop)?_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.page === 'userPage' || _vm.page === 'statusPage')?_c('el-button',{staticClass:\"moderate-user-button\"},[_c('span',{staticClass:\"moderate-user-button-container\"},[_c('span',[_c('i',{staticClass:\"el-icon-edit\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderateUser'))+\"\\n \")]),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})])]):_vm._e()],1),_vm._v(\" \"),_c('el-dropdown-menu',{staticClass:\"moderation-dropdown-menu\",attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{staticClass:\"actor-type-dropdown\"},[_c('el-select',{staticClass:\"actor-type-select\",attrs:{\"placeholder\":_vm.$t('userProfile.actorType')},model:{value:(_vm.actorType),callback:function ($$v) {_vm.actorType=$$v},expression:\"actorType\"}},[_c('el-option',{attrs:{\"label\":_vm.$t('users.service'),\"value\":\"Service\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":_vm.$t('users.person'),\"value\":\"Person\"}})],1)],1),_vm._v(\" \"),(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.admin ? _vm.$t('users.revokeAdmin') : _vm.$t('users.grantAdmin'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.moderator ? _vm.$t('users.revokeModerator') : _vm.$t('users.grantModerator'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id) && _vm.page !== 'statusPage')?_c('el-dropdown-item',{attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleActivation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.deactivated ? _vm.$t('users.activateAccount') : _vm.$t('users.deactivateAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id) && _vm.page !== 'statusPage')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeletion(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.approval_pending)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleAccountApproval(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.approveAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.approval_pending)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleAccountRejection(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.rejectAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleEmailConfirmation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.confirmAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleConfirmationResend(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.resendConfirmation'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:media-force-nsfw') },attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:media-force-nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceNsfw'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:media-force-nsfw'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:media-strip') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:media-strip')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.stripMedia'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:media-strip'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:force-unlisted') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:force-unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceUnlisted'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:force-unlisted'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:sandbox') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.sandbox'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:sandbox'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:disable-remote-subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:disable-remote-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableRemoteSubscription'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:disable-remote-subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:disable-any-subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:disable-any-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableAnySubscription'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:disable-any-subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(!_vm.tagPolicyEnabled)?_c('el-dropdown-item',{staticClass:\"no-hover\",attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.enableTagPolicy($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.enableTagPolicy'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.getPasswordResetToken(_vm.user.nickname)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.getPasswordResetToken'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.requirePasswordReset(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.requirePasswordReset'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.disableMfa(_vm.user.nickname)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableMfa'))+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ModerationDropdown.vue?vue&type=template&id=346bdee8&\"\nimport script from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ModerationDropdown.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-546f.81668ba7.js b/priv/static/adminfe/static/js/chunk-546f.81668ba7.js new file mode 100644 index 000000000..252991021 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-546f.81668ba7.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-546f"],{"26YS":function(e,t,a){"use strict";a.r(t);var o=a("o0o1"),s=a.n(o),i=a("yXPU"),c=a.n(i),n=a("cDf5"),l=a.n(n),r=a("QILm"),m=a.n(r),p=a("mm8V"),u={props:{host:{type:String,required:!0},packName:{type:String,required:!0},shortcode:{type:String,required:!0},file:{type:String,required:!0},isLocal:{type:Boolean,required:!0}},data:function(){return{newShortcode:null,newFile:null,copyToLocalPackName:null,copyPopoverVisible:!1,copyToShortcode:"",copyToFilename:""}},computed:{emojiName:{get:function(){return null!==this.newShortcode?this.newShortcode:this.shortcode},set:function(e){this.newShortcode=e}},emojiFile:{get:function(){return null!==this.newFile?this.newFile:this.file},set:function(e){this.newFile=e}},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},localPacks:function(){return this.$store.state.emojiPacks.localPacks},remoteInstance:function(){return this.$store.state.emojiPacks.remoteInstance}},methods:{update:function(){var e=this;return c()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:t.prev=0,e.$store.dispatch("UpdateEmojiFile",{packName:e.packName,shortcode:e.shortcode,newShortcode:e.emojiName,newFilename:e.emojiFile,force:!0}),t.next=7;break;case 4:return t.prev=4,t.t0=t.catch(0),t.abrupt("return");case 7:e.newShortcode=null,e.newFile=null,e.$store.dispatch("ReloadEmoji");case 10:case"end":return t.stop()}},t,null,[[0,4]])}))()},remove:function(){var e=this;this.$confirm("This will delete the emoji, are you sure?","Warning",{confirmButtonText:"Yes, delete the emoji",cancelButtonText:"No, leave it be",type:"warning"}).then(function(){e.$store.dispatch("DeleteEmojiFile",{packName:e.packName,shortcode:e.shortcode}).then(function(){e.newShortcode=null,e.newFile=null,e.$store.dispatch("ReloadEmoji")})})},copyToLocal:function(){try{this.$store.dispatch("AddNewEmojiFile",{packName:this.copyToLocalPackName,file:this.addressOfEmojiInPack(this.remoteInstance,this.packName,this.file),shortcode:""!==this.copyToShortcode.trim()?this.copyToShortcode.trim():this.shortcode,filename:""!==this.copyToFilename.trim()?this.copyToFilename.trim():this.file})}catch(e){return}this.copyToLocalPackName=null,this.copyToLocalVisible=!1,this.copyToShortcode="",this.copyToFilename="",this.$store.dispatch("ReloadEmoji")},addressOfEmojiInPack:p.b}},d=(a("4ySm"),a("KHd+")),h=Object(d.a)(u,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[e.isLocal?a("div",{class:e.isMobile?"emoji-container-flex":"emoji-container-grid"},[a("img",{staticClass:"emoji-preview-img",attrs:{src:e.addressOfEmojiInPack(e.host,e.packName,e.file)}}),e._v(" "),a("el-input",{staticClass:"emoji-info",attrs:{placeholder:e.$t("emoji.shortcode")},model:{value:e.emojiName,callback:function(t){e.emojiName=t},expression:"emojiName"}}),e._v(" "),a("el-input",{staticClass:"emoji-info",attrs:{placeholder:e.$t("emoji.file")},model:{value:e.emojiFile,callback:function(t){e.emojiFile=t},expression:"emojiFile"}}),e._v(" "),a("div",{staticClass:"emoji-buttons"},[a("el-button",{attrs:{type:"primary"},on:{click:e.update}},[e._v(e._s(e.$t("emoji.update")))]),e._v(" "),a("el-button",{staticClass:"remove-emoji-button",on:{click:e.remove}},[e._v(e._s(e.$t("emoji.remove")))])],1)],1):e._e(),e._v(" "),e.isLocal?e._e():a("div",{class:e.isMobile?"emoji-container-flex":"remote-emoji-container-grid"},[a("img",{staticClass:"emoji-preview-img",attrs:{src:e.addressOfEmojiInPack(e.remoteInstance,e.packName,e.file)}}),e._v(" "),a("el-input",{staticClass:"emoji-info",attrs:{value:e.emojiName,placeholder:e.$t("emoji.shortcode")}}),e._v(" "),a("el-input",{staticClass:"emoji-info",attrs:{value:e.emojiFile,placeholder:e.$t("emoji.file")}}),e._v(" "),a("el-popover",{staticClass:"copy-pack-container",attrs:{placement:"left-start","popper-class":"copy-popover"},model:{value:e.copyPopoverVisible,callback:function(t){e.copyPopoverVisible=t},expression:"copyPopoverVisible"}},[a("p",[e._v(e._s(e.$t("emoji.selectLocalPack")))]),e._v(" "),a("el-select",{staticClass:"copy-pack-select",attrs:{placeholder:e.$t("emoji.localPack")},model:{value:e.copyToLocalPackName,callback:function(t){e.copyToLocalPackName=t},expression:"copyToLocalPackName"}},e._l(e.localPacks,function(e,t){return a("el-option",{key:t,attrs:{label:t,value:t}})}),1),e._v(" "),a("p",[e._v(e._s(e.$t("emoji.specifyShortcode")))]),e._v(" "),a("el-input",{attrs:{placeholder:e.$t("emoji.leaveEmptyShortcode")},model:{value:e.copyToShortcode,callback:function(t){e.copyToShortcode=t},expression:"copyToShortcode"}}),e._v(" "),a("p",[e._v(e._s(e.$t("emoji.specifyFilename")))]),e._v(" "),a("el-input",{attrs:{placeholder:e.$t("emoji.leaveEmptyFilename")},model:{value:e.copyToFilename,callback:function(t){e.copyToFilename=t},expression:"copyToFilename"}}),e._v(" "),a("el-button",{staticClass:"copy-to-local-pack-button",attrs:{disabled:!e.copyToLocalPackName,type:"primary"},on:{click:e.copyToLocal}},[e._v(e._s(e.$t("emoji.copy")))]),e._v(" "),a("el-button",{staticClass:"emoji-button",attrs:{slot:"reference",type:"primary"},slot:"reference"},[e._v(e._s(e.$t("emoji.copyToLocalPack")))])],1)],1)])},[],!1,null,null,null);h.options.__file="SingleEmojiEditor.vue";var k=h.exports,f={props:{packName:{type:String,required:!0}},data:function(){return{shortcode:"",imageUploadURL:"",customFileName:""}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device}},methods:{uploadEmoji:function(e){var t=this;return c()(s.a.mark(function a(){var o;return s.a.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:o=e.file,a.prev=1,t.$store.dispatch("AddNewEmojiFile",{packName:t.packName,file:o||t.imageUploadURL,shortcode:t.shortcode,filename:t.customFileName}),a.next=8;break;case 5:return a.prev=5,a.t0=a.catch(1),a.abrupt("return");case 8:t.shortcode="",t.imageUploadURL="",t.customFileName="",t.$store.dispatch("ReloadEmoji");case 12:case"end":return a.stop()}},a,null,[[1,5]])}))()}}},v=(a("IVv3"),Object(d.a)(f,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-form",{staticClass:"new-emoji-uploader-form",attrs:{"label-position":e.isMobile?"top":"left","label-width":"130px",size:"small"}},[a("el-form-item",{attrs:{label:e.$t("emoji.shortcode")}},[a("el-input",{attrs:{placeholder:e.$t("emoji.optional")},model:{value:e.shortcode,callback:function(t){e.shortcode=t},expression:"shortcode"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.customFilename")}},[a("el-input",{attrs:{placeholder:e.$t("emoji.optional")},model:{value:e.customFileName,callback:function(t){e.customFileName=t},expression:"customFileName"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.uploadFile")}},[a("div",{staticClass:"upload-file-url"},[a("el-input",{attrs:{placeholder:e.$t("emoji.url")},model:{value:e.imageUploadURL,callback:function(t){e.imageUploadURL=t},expression:"imageUploadURL"}}),e._v(" "),a("el-button",{staticClass:"upload-button",attrs:{type:"primary"},on:{click:e.uploadEmoji}},[e._v(e._s(e.$t("emoji.upload")))])],1),e._v(" "),a("div",{staticClass:"upload-container"},[a("p",{staticClass:"text"},[e._v("or")]),e._v(" "),a("el-upload",{attrs:{"http-request":e.uploadEmoji,multiple:!1,"show-file-list":!1,action:"add"}},[a("el-button",{attrs:{type:"primary"}},[e._v(e._s(e.$t("emoji.clickToUpload")))])],1)],1)])],1)},[],!1,null,null,null));function b(e){var t=function(e,t){if("object"!==l()(e)||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var o=a.call(e,t||"default");if("object"!==l()(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===l()(t)?t:String(t)}v.options.__file="NewEmojiUploader.vue";var j={components:{SingleEmojiEditor:k,NewEmojiUploader:v.exports},props:{name:{type:String,required:!0},pack:{type:Object,required:!0},host:{type:String,required:!0},isLocal:{type:Boolean,required:!0}},data:function(){return{showPackContent:[]}},computed:{currentFilesPage:function(){return this.$store.state.emojiPacks.currentLocalFilesPage},currentLocalPacksPage:function(){return this.$store.state.emojiPacks.currentLocalPacksPage},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"90px":(this.isTablet,"155px")},localPackFilesCount:function(){return this.$store.state.emojiPacks.localPackFilesCount},pageSize:function(){return this.$store.state.emojiPacks.filesPageSize},share:{get:function(){return this.pack.pack["share-files"]},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"share-files",value:e})}},homepage:{get:function(){return this.pack.pack.homepage},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"homepage",value:e})}},description:{get:function(){return this.pack.pack.description},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"description",value:e})}},license:{get:function(){return this.pack.pack.license},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"license",value:e})}},fallbackSrc:{get:function(){return this.pack.pack["fallback-src"]},set:function(e){""!==e.trim()?this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src",value:e}):(this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src",value:null}),this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src-sha256",value:null}))}}},methods:{collapse:function(){this.showPackContent=[]},deletePack:function(){var e=this;this.$confirm("This will delete the pack, are you sure?","Warning",{confirmButtonText:"Yes, delete the pack",cancelButtonText:"No, leave it be",type:"warning"}).then(function(){e.$store.dispatch("DeletePack",{name:e.name}).then(function(){return e.$store.dispatch("ReloadEmoji")}).then(function(){var t=e.$store.state.emojiPacks.localPacks,a=e.name,o=(t[a],m()(t,[a].map(b)));0===Object.keys(o).length&&e.currentLocalPacksPage>1?e.$store.dispatch("FetchLocalEmojiPacks",e.currentLocalPacksPage-1):e.$store.dispatch("FetchLocalEmojiPacks",e.currentLocalPacksPage)})}).catch(function(){})},handleChange:function(e,t){e.includes("manageEmoji")&&this.$store.dispatch("FetchLocalSinglePack",{name:t,page:1})},handleFilesPageChange:function(e){this.$store.dispatch("FetchLocalSinglePack",{name:this.name,page:e})},savePackMetadata:function(){this.$store.dispatch("SavePackMetadata",{packName:this.name})}}},P=(a("LE4i"),Object(d.a)(j,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-collapse-item",{staticClass:"has-background",attrs:{title:e.name,name:e.name}},[a("el-form",{staticClass:"emoji-pack-metadata",attrs:{"label-width":e.labelWidth,"label-position":"left",size:"small"}},[a("el-form-item",{attrs:{label:e.$t("emoji.sharePack")}},[a("el-switch",{model:{value:e.share,callback:function(t){e.share=t},expression:"share"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.homepage")}},[a("el-input",{model:{value:e.homepage,callback:function(t){e.homepage=t},expression:"homepage"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.description")}},[a("el-input",{attrs:{type:"textarea"},model:{value:e.description,callback:function(t){e.description=t},expression:"description"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.license")}},[a("el-input",{model:{value:e.license,callback:function(t){e.license=t},expression:"license"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.fallbackSrc")}},[a("el-input",{model:{value:e.fallbackSrc,callback:function(t){e.fallbackSrc=t},expression:"fallbackSrc"}})],1),e._v(" "),e.fallbackSrc&&""!==e.fallbackSrc.trim()?a("el-form-item",{attrs:{label:e.$t("emoji.fallbackSrcSha")}},[e._v("\n "+e._s(e.pack.pack["fallback-src-sha256"])+"\n ")]):e._e()],1),e._v(" "),a("div",{staticClass:"pack-button-container"},[a("div",{staticClass:"save-pack-button-container"},[a("el-button",{staticClass:"save-pack-button",attrs:{type:"primary"},on:{click:e.savePackMetadata}},[e._v(e._s(e.$t("emoji.saveMetadata")))]),e._v(" "),a("el-button",{staticClass:"delete-pack-button",on:{click:e.deletePack}},[e._v(e._s(e.$t("emoji.deletePack")))])],1),e._v(" "),a("div",{staticClass:"download-pack-button-container"},[e.pack.pack["can-download"]?a("el-link",{attrs:{href:"//"+e.host+"//api/pleroma/emoji/packs/archive?name="+e.name,underline:!1,type:"primary",target:"_blank"}},[a("el-button",{staticClass:"download-archive"},[e._v(e._s(e.$t("emoji.downloadPackArchive")))])],1):e._e()],1)]),e._v(" "),a("el-collapse",{staticClass:"contents-collapse",on:{change:function(t){return e.handleChange(t,e.name)}},model:{value:e.showPackContent,callback:function(t){e.showPackContent=t},expression:"showPackContent"}},[e.isLocal?a("el-collapse-item",{staticClass:"no-background",attrs:{title:e.$t("emoji.addNewEmoji"),name:"addEmoji"}},[a("new-emoji-uploader",{attrs:{"pack-name":e.name}})],1):e._e(),e._v(" "),a("el-collapse-item",{staticClass:"no-background",attrs:{title:e.$t("emoji.manageEmoji"),name:"manageEmoji"}},[e.pack.files&&Object.keys(e.pack.files).length>0?a("div",[a("div",{class:e.isMobile?"emoji-container-flex":"emoji-container-grid"},[a("span",{staticClass:"emoji-preview-img emoji-table-head"},[e._v(e._s(e.$t("emoji.image")))]),e._v(" "),a("span",{staticClass:"emoji-table-head"},[e._v(e._s(e.$t("emoji.shortcode")))]),e._v(" "),a("span",{staticClass:"emoji-table-head"},[e._v(e._s(e.$t("emoji.file")))])]),e._v(" "),e._l(e.pack.files,function(t,o){return a("single-emoji-editor",{key:o,attrs:{host:e.host,"pack-name":e.name,shortcode:o,file:t,"is-local":e.isLocal}})})],2):a("span",{staticClass:"expl"},[e._v(e._s(e.$t("emoji.emptyPack")))]),e._v(" "),a("div",{staticClass:"files-pagination"},[a("el-pagination",{attrs:{total:e.localPackFilesCount,"current-page":e.currentFilesPage,"page-size":e.pageSize,"hide-on-single-page":"",layout:"prev, pager, next"},on:{"current-change":e.handleFilesPageChange}})],1)])],1)],1)},[],!1,null,null,null));P.options.__file="LocalEmojiPack.vue";var g=P.exports,_={components:{SingleEmojiEditor:k},props:{name:{type:String,required:!0},pack:{type:Object,required:!0},host:{type:String,required:!0},isLocal:{type:Boolean,required:!0}},data:function(){return{showPackContent:[],downloadSharedAs:""}},computed:{currentFilesPage:function(){return this.$store.state.emojiPacks.currentRemoteFilesPage},currentRemotePacksPage:function(){return this.$store.state.emojiPacks.currentRemotePacksPage},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"90px":(this.isTablet,"120px")},loadRemotePack:function(){return this.$store.state.emojiPacks.activeTab===this.name},pageSize:function(){return this.$store.state.emojiPacks.filesPageSize},remoteInstanceAddress:function(){return this.$store.state.emojiPacks.remoteInstance},remotePackFilesCount:function(){return this.$store.state.emojiPacks.remotePackFilesCount},share:{get:function(){return this.pack.pack["share-files"]},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"share-files",value:e})}},homepage:{get:function(){return this.pack.pack.homepage},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"homepage",value:e})}},description:{get:function(){return this.pack.pack.description},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"description",value:e})}},license:{get:function(){return this.pack.pack.license},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"license",value:e})}},fallbackSrc:{get:function(){return this.pack.pack["fallback-src"]},set:function(e){""!==e.trim()?this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src",value:e}):(this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src",value:null}),this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src-sha256",value:null}))}}},methods:{downloadFromInstance:function(){var e=this;this.$store.dispatch("DownloadFrom",{instanceAddress:this.remoteInstanceAddress,packName:this.name,as:this.downloadSharedAs}).then(function(){return e.$store.dispatch("ReloadEmoji")}).then(function(){return e.$store.dispatch("FetchLocalEmojiPacks",e.currentPage)})},handleChange:function(e,t){e.includes("manageEmoji")&&this.$store.dispatch("FetchRemoteSinglePack",{name:t,page:1})},handleFilesPageChange:function(e){this.$store.dispatch("FetchRemoteSinglePack",{name:this.name,page:e})}}},$=(a("Zd0x"),Object(d.a)(_,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-collapse-item",{staticClass:"has-background",attrs:{title:e.name,name:e.name}},[e.loadRemotePack?a("div",[a("el-form",{staticClass:"emoji-pack-metadata remote-pack-metadata",attrs:{"label-width":e.labelWidth,"label-position":"left",size:"small"}},[a("el-form-item",{attrs:{label:e.$t("emoji.sharePack")}},[a("el-switch",{attrs:{disabled:""},model:{value:e.share,callback:function(t){e.share=t},expression:"share"}})],1),e._v(" "),e.homepage?a("el-form-item",{attrs:{label:e.$t("emoji.homepage")}},[a("span",[e._v(e._s(e.homepage))])]):e._e(),e._v(" "),e.description?a("el-form-item",{attrs:{label:e.$t("emoji.description")}},[a("span",[e._v(e._s(e.description))])]):e._e(),e._v(" "),e.license?a("el-form-item",{attrs:{label:e.$t("emoji.license")}},[a("span",[e._v(e._s(e.license))])]):e._e(),e._v(" "),e.fallbackSrc?a("el-form-item",{attrs:{label:e.$t("emoji.fallbackSrc")}},[a("span",[e._v(e._s(e.fallbackSrc))])]):e._e(),e._v(" "),e.fallbackSrc&&""!==e.fallbackSrc.trim()?a("el-form-item",{attrs:{label:e.$t("emoji.fallbackSrcSha")}},[e._v("\n "+e._s(e.pack.pack["fallback-src-sha256"])+"\n ")]):e._e(),e._v(" "),a("el-form-item",[e.pack.pack["can-download"]&&e.pack.pack["fallback-src"]?a("el-link",{attrs:{href:e.pack.pack["fallback-src"],underline:!1,type:"primary",target:"_blank"}},[a("el-button",{staticClass:"download-archive"},[e._v(e._s(e.$t("emoji.downloadPackArchive")))])],1):e._e()],1)],1),e._v(" "),a("el-collapse",{staticClass:"contents-collapse",on:{change:function(t){return e.handleChange(t,e.name)}},model:{value:e.showPackContent,callback:function(t){e.showPackContent=t},expression:"showPackContent"}},[a("el-collapse-item",{staticClass:"no-background",attrs:{title:e.$t("emoji.manageEmoji"),name:"manageEmoji"}},[e.pack.files&&Object.keys(e.pack.files).length>0?a("div",e._l(e.pack.files,function(t,o){return a("single-emoji-editor",{key:o,attrs:{host:e.host,"pack-name":e.name,shortcode:o,file:t,"is-local":e.isLocal}})}),1):a("span",{staticClass:"expl"},[e._v(e._s(e.$t("emoji.emptyPack")))]),e._v(" "),a("div",{staticClass:"files-pagination"},[a("el-pagination",{attrs:{total:e.remotePackFilesCount,"current-page":e.currentFilesPage,"page-size":e.pageSize,"hide-on-single-page":"",layout:"prev, pager, next"},on:{"current-change":e.handleFilesPageChange}})],1)]),e._v(" "),a("el-collapse-item",{staticClass:"no-background",attrs:{title:e.$t("emoji.downloadPack"),name:"downloadPack"}},[a("p",[e._v("\n "+e._s(e.$t("emoji.thisWillDownload"))+' "'+e._s(e.name)+'" '+e._s(e.$t("emoji.downloadToCurrentInstance"))+'\n "'+e._s(""===e.downloadSharedAs.trim()?e.name:e.downloadSharedAs)+'" ('+e._s(e.$t("emoji.canBeChanged"))+").\n "+e._s(e.$t("emoji.willBeUsable"))+".\n ")]),e._v(" "),a("div",{staticClass:"download-shared-pack"},[a("el-input",{attrs:{placeholder:e.$t("emoji.downloadAsOptional")},model:{value:e.downloadSharedAs,callback:function(t){e.downloadSharedAs=t},expression:"downloadSharedAs"}}),e._v(" "),a("el-button",{staticClass:"download-shared-pack-button",attrs:{type:"primary"},on:{click:e.downloadFromInstance}},[e._v("\n "+e._s(e.isDesktop?e.$t("emoji.downloadSharedPack"):e.$t("emoji.downloadSharedPackMobile"))+"\n ")])],1)])],1)],1):e._e()])},[],!1,null,null,null));$.options.__file="RemoteEmojiPack.vue";var y=$.exports,w=a("mSNy"),C={components:{LocalEmojiPack:g,RebootButton:a("rIUS").a,RemoteEmojiPack:y},data:function(){return{activeTab:"local",newPackName:"",activeLocalPack:[],activeRemotePack:[],fullscreenLoading:!1}},computed:{currentLocalPacksPage:function(){return this.$store.state.emojiPacks.currentLocalPacksPage},currentRemotePacksPage:function(){return this.$store.state.emojiPacks.currentRemotePacksPage},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"105px":this.isTablet?"180px":"200px"},localPacks:function(){return this.$store.state.emojiPacks.localPacks},localPacksCount:function(){return this.$store.state.emojiPacks.localPacksCount},pageSize:function(){return this.$store.state.emojiPacks.pageSize},remoteInstanceAddress:{get:function(){return this.$store.state.emojiPacks.remoteInstance},set:function(e){this.$store.dispatch("SetRemoteInstance",e)}},remotePacks:function(){return this.$store.state.emojiPacks.remotePacks},remotePacksCount:function(){return this.$store.state.emojiPacks.remotePacksCount}},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.refreshLocalPacks()},methods:{createLocalPack:function(){var e=this;this.$store.dispatch("CreatePack",{name:this.newPackName}).then(function(){e.newPackName="",e.$store.dispatch("FetchLocalEmojiPacks",e.currentLocalPacksPage),e.$store.dispatch("ReloadEmoji")})},handleLocalPageChange:function(e){this.$store.dispatch("FetchLocalEmojiPacks",e)},handleRemotePageChange:function(e){this.$store.dispatch("SetRemoteEmojiPacks",{page:e,remoteInstance:this.remoteInstanceAddress})},importFromFS:function(){var e=this;this.$store.dispatch("ImportFromFS").then(function(){e.$store.dispatch("FetchLocalEmojiPacks",e.currentLocalPacksPage),e.$store.dispatch("ReloadEmoji")})},refreshLocalPacks:function(){try{this.$store.dispatch("FetchLocalEmojiPacks",this.currentLocalPacksPage)}catch(e){return}this.$message({type:"success",message:w.a.t("emoji.refreshed")})},refreshRemotePacks:function(){var e=this;return c()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return e.fullscreenLoading=!0,t.next=3,e.$store.dispatch("SetRemoteEmojiPacks",{page:1,remoteInstance:e.remoteInstanceAddress});case 3:e.fullscreenLoading=!1;case 4:case"end":return t.stop()}},t)}))()},reloadEmoji:function(){var e=this;return c()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:t.prev=0,e.$store.dispatch("ReloadEmoji"),t.next=7;break;case 4:return t.prev=4,t.t0=t.catch(0),t.abrupt("return");case 7:e.$message({type:"success",message:w.a.t("emoji.reloaded")});case 8:case"end":return t.stop()}},t,null,[[0,4]])}))()},setActiveTab:function(e){this.$refs.localEmojiPack.forEach(function(e){return e.collapse()}),this.$store.dispatch("SetActiveTab",e)}}},L=(a("smuD"),Object(d.a)(C,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"emoji-packs"},[a("div",{staticClass:"emoji-packs-header"},[a("h1",[e._v(e._s(e.$t("emoji.emojiPacks")))]),e._v(" "),a("reboot-button")],1),e._v(" "),a("div",{staticClass:"emoji-header-container"},[a("div",{staticClass:"emoji-packs-header-button-container"},[a("el-button",{staticClass:"reload-emoji-button",on:{click:e.reloadEmoji}},[e._v(e._s(e.$t("emoji.reloadEmoji")))]),e._v(" "),a("el-tooltip",{attrs:{content:e.$t("emoji.importEmojiTooltip"),effects:"dark",placement:"bottom","popper-class":"import-pack-button"}},[a("el-button",{on:{click:e.importFromFS}},[e._v("\n "+e._s(e.$t("emoji.importPacks"))+"\n ")])],1)],1)]),e._v(" "),a("el-tabs",{staticClass:"emoji-packs-tabs",attrs:{type:"card"},model:{value:e.activeTab,callback:function(t){e.activeTab=t},expression:"activeTab"}},[a("el-tab-pane",{attrs:{label:e.$t("emoji.localPacks"),name:"local"}},[a("el-form",{staticClass:"emoji-packs-form",attrs:{"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:e.$t("emoji.localPacks")}},[a("el-button",{on:{click:e.refreshLocalPacks}},[e._v(e._s(e.$t("emoji.refreshLocalPacks")))])],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.createLocalPack")}},[a("div",{staticClass:"create-pack"},[a("el-input",{attrs:{placeholder:e.$t("users.name")},model:{value:e.newPackName,callback:function(t){e.newPackName=t},expression:"newPackName"}}),e._v(" "),a("el-button",{staticClass:"create-pack-button",attrs:{disabled:""===e.newPackName.trim()},on:{click:e.createLocalPack}},[e._v("\n "+e._s(e.$t("users.create"))+"\n ")])],1),e._v(" "),a("span",{staticClass:"emoji-name-warning"},[e._v(e._s(e.$t("emoji.emojiWarning")))])]),e._v(" "),Object.keys(e.localPacks).length>0?a("el-form-item",{attrs:{label:e.$t("emoji.packs")}},e._l(e.localPacks,function(t,o){return a("el-collapse",{key:o,attrs:{accordion:""},on:{change:e.setActiveTab},model:{value:e.activeLocalPack,callback:function(t){e.activeLocalPack=t},expression:"activeLocalPack"}},[a("local-emoji-pack",{ref:"localEmojiPack",refInFor:!0,attrs:{name:o,pack:t,host:e.$store.getters.authHost,"is-local":!0}})],1)}),1):e._e()],1),e._v(" "),a("div",{staticClass:"pagination"},[a("el-pagination",{attrs:{total:e.localPacksCount,"current-page":e.currentLocalPacksPage,"page-size":e.pageSize,"hide-on-single-page":"",layout:"prev, pager, next"},on:{"current-change":e.handleLocalPageChange}})],1)],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("emoji.remotePacks"),name:"remote"}},[a("el-form",{staticClass:"emoji-packs-form",attrs:{"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:e.$t("emoji.remotePacks")}},[a("div",{staticClass:"create-pack"},[a("el-input",{attrs:{placeholder:e.$t("emoji.remoteInstanceAddress")},model:{value:e.remoteInstanceAddress,callback:function(t){e.remoteInstanceAddress=t},expression:"remoteInstanceAddress"}}),e._v(" "),a("el-button",{directives:[{name:"loading",rawName:"v-loading.fullscreen.lock",value:e.fullscreenLoading,expression:"fullscreenLoading",modifiers:{fullscreen:!0,lock:!0}}],staticClass:"create-pack-button",attrs:{disabled:""===e.remoteInstanceAddress.trim()},on:{click:e.refreshRemotePacks}},[e._v("\n "+e._s(e.$t("emoji.refreshRemote"))+"\n ")])],1)]),e._v(" "),Object.keys(e.remotePacks).length>0?a("el-form-item",{attrs:{label:e.$t("emoji.packs")}},e._l(e.remotePacks,function(t,o){return a("el-collapse",{key:o,attrs:{accordion:""},on:{change:e.setActiveTab},model:{value:e.activeRemotePack,callback:function(t){e.activeRemotePack=t},expression:"activeRemotePack"}},[a("remote-emoji-pack",{attrs:{name:o,pack:t,host:e.$store.getters.authHost,"is-local":!1}})],1)}),1):e._e()],1),e._v(" "),a("div",{staticClass:"pagination"},[a("el-pagination",{attrs:{total:e.remotePacksCount,"current-page":e.currentRemotePacksPage,"page-size":e.pageSize,"hide-on-single-page":"",layout:"prev, pager, next"},on:{"current-change":e.handleRemotePageChange}})],1)],1)],1)],1)},[],!1,null,null,null));L.options.__file="index.vue";t.default=L.exports},"4ySm":function(e,t,a){"use strict";var o=a("n6gr");a.n(o).a},"6lYW":function(e,t,a){},HBNe:function(e,t,a){},IVv3:function(e,t,a){"use strict";var o=a("6lYW");a.n(o).a},LE4i:function(e,t,a){"use strict";var o=a("HBNe");a.n(o).a},QZC8:function(e,t,a){},Zd0x:function(e,t,a){"use strict";var o=a("eDOw");a.n(o).a},eDOw:function(e,t,a){},n6gr:function(e,t,a){},smuD:function(e,t,a){"use strict";var o=a("QZC8");a.n(o).a}}]); +//# sourceMappingURL=chunk-546f.81668ba7.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-546f.81668ba7.js.map b/priv/static/adminfe/static/js/chunk-546f.81668ba7.js.map new file mode 100644 index 000000000..6a9d2a8dc --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-546f.81668ba7.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/emojiPacks/index.vue?c03d","webpack:///./src/views/emojiPacks/components/SingleEmojiEditor.vue?5a7e","webpack:///src/views/emojiPacks/components/SingleEmojiEditor.vue","webpack:///./src/views/emojiPacks/components/SingleEmojiEditor.vue","webpack:///./src/views/emojiPacks/components/SingleEmojiEditor.vue?89f9","webpack:///./src/views/emojiPacks/components/NewEmojiUploader.vue?1c09","webpack:///src/views/emojiPacks/components/NewEmojiUploader.vue","webpack:///./src/views/emojiPacks/components/NewEmojiUploader.vue","webpack:///./src/views/emojiPacks/components/NewEmojiUploader.vue?e7aa","webpack:///src/views/emojiPacks/components/LocalEmojiPack.vue","webpack:///./src/views/emojiPacks/components/LocalEmojiPack.vue?88cd","webpack:///./src/views/emojiPacks/components/LocalEmojiPack.vue","webpack:///./src/views/emojiPacks/components/LocalEmojiPack.vue?9c9e","webpack:///./src/views/emojiPacks/components/RemoteEmojiPack.vue?4c9f","webpack:///src/views/emojiPacks/components/RemoteEmojiPack.vue","webpack:///./src/views/emojiPacks/components/RemoteEmojiPack.vue","webpack:///./src/views/emojiPacks/components/RemoteEmojiPack.vue?e29a","webpack:///./src/views/emojiPacks/index.vue?a332","webpack:///src/views/emojiPacks/index.vue","webpack:///./src/views/emojiPacks/index.vue","webpack:///./src/views/emojiPacks/components/SingleEmojiEditor.vue?bc44","webpack:///./src/views/emojiPacks/components/NewEmojiUploader.vue?d98f","webpack:///./src/views/emojiPacks/components/LocalEmojiPack.vue?2a38","webpack:///./src/views/emojiPacks/components/RemoteEmojiPack.vue?118a","webpack:///./src/views/emojiPacks/index.vue?7b86"],"names":["components_SingleEmojiEditorvue_type_script_lang_js_","props","host","type","String","required","packName","shortcode","file","isLocal","Boolean","data","newShortcode","newFile","copyToLocalPackName","copyPopoverVisible","copyToShortcode","copyToFilename","computed","emojiName","get","this","set","val","emojiFile","isDesktop","$store","state","app","device","isMobile","localPacks","emojiPacks","remoteInstance","methods","update","_this","asyncToGenerator_default","regenerator_default","a","mark","_callee","wrap","_context","prev","next","dispatch","newFilename","force","t0","abrupt","stop","remove","_this2","$confirm","confirmButtonText","cancelButtonText","then","copyToLocal","addressOfEmojiInPack","trim","filename","e","copyToLocalVisible","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","class","staticClass","attrs","src","_v","placeholder","$t","model","value","callback","$$v","expression","on","click","_s","_e","placement","popper-class","_l","_pack","name","key","label","disabled","slot","options","__file","SingleEmojiEditor","components_NewEmojiUploadervue_type_script_lang_js_","imageUploadURL","customFileName","uploadEmoji","_ref","NewEmojiUploader_component","label-position","label-width","size","http-request","multiple","show-file-list","action","components_LocalEmojiPackvue_type_script_lang_js_","components","NewEmojiUploader","pack","showPackContent","currentFilesPage","currentLocalFilesPage","currentLocalPacksPage","isTablet","labelWidth","localPackFilesCount","pageSize","filesPageSize","share","homepage","description","license","fallbackSrc","collapse","deletePack","_this$$store$state$em","_this$name","updatedPacks","objectWithoutProperties_default","map","_toPropertyKey","keys","length","catch","handleChange","openTabs","includes","page","handleFilesPageChange","savePackMetadata","LocalEmojiPack_component","title","href","underline","target","change","$event","pack-name","files","is-local","total","current-page","page-size","hide-on-single-page","layout","current-change","LocalEmojiPack","components_RemoteEmojiPackvue_type_script_lang_js_","downloadSharedAs","currentRemoteFilesPage","currentRemotePacksPage","loadRemotePack","activeTab","remoteInstanceAddress","remotePackFilesCount","downloadFromInstance","instanceAddress","as","currentPage","RemoteEmojiPack_component","RemoteEmojiPack","views_emojiPacksvue_type_script_lang_js_","RebootButton","newPackName","activeLocalPack","activeRemotePack","fullscreenLoading","localPacksCount","instance","remotePacks","remotePacksCount","mounted","refreshLocalPacks","createLocalPack","handleLocalPageChange","handleRemotePageChange","importFromFS","$message","message","lang","t","refreshRemotePacks","_this3","reloadEmoji","_this4","_callee2","_context2","setActiveTab","$refs","localEmojiPack","forEach","el","emojiPacks_component","content","effects","accordion","ref","refInFor","getters","authHost","directives","rawName","modifiers","fullscreen","lock","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_SingleEmojiEditor_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_NewEmojiUploader_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_LocalEmojiPack_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_RemoteEmojiPack_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__"],"mappings":"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","file":"static/js/chunk-546f.81668ba7.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"emoji-packs\"},[_c('div',{staticClass:\"emoji-packs-header\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('emoji.emojiPacks')))]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"emoji-header-container\"},[_c('div',{staticClass:\"emoji-packs-header-button-container\"},[_c('el-button',{staticClass:\"reload-emoji-button\",on:{\"click\":_vm.reloadEmoji}},[_vm._v(_vm._s(_vm.$t('emoji.reloadEmoji')))]),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"content\":_vm.$t('emoji.importEmojiTooltip'),\"effects\":\"dark\",\"placement\":\"bottom\",\"popper-class\":\"import-pack-button\"}},[_c('el-button',{on:{\"click\":_vm.importFromFS}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('emoji.importPacks'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-tabs',{staticClass:\"emoji-packs-tabs\",attrs:{\"type\":\"card\"},model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},[_c('el-tab-pane',{attrs:{\"label\":_vm.$t('emoji.localPacks'),\"name\":\"local\"}},[_c('el-form',{staticClass:\"emoji-packs-form\",attrs:{\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.localPacks')}},[_c('el-button',{on:{\"click\":_vm.refreshLocalPacks}},[_vm._v(_vm._s(_vm.$t('emoji.refreshLocalPacks')))])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.createLocalPack')}},[_c('div',{staticClass:\"create-pack\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('users.name')},model:{value:(_vm.newPackName),callback:function ($$v) {_vm.newPackName=$$v},expression:\"newPackName\"}}),_vm._v(\" \"),_c('el-button',{staticClass:\"create-pack-button\",attrs:{\"disabled\":_vm.newPackName.trim() === ''},on:{\"click\":_vm.createLocalPack}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.create'))+\"\\n \")])],1),_vm._v(\" \"),_c('span',{staticClass:\"emoji-name-warning\"},[_vm._v(_vm._s(_vm.$t('emoji.emojiWarning')))])]),_vm._v(\" \"),(Object.keys(_vm.localPacks).length > 0)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.packs')}},_vm._l((_vm.localPacks),function(pack,name){return _c('el-collapse',{key:name,attrs:{\"accordion\":\"\"},on:{\"change\":_vm.setActiveTab},model:{value:(_vm.activeLocalPack),callback:function ($$v) {_vm.activeLocalPack=$$v},expression:\"activeLocalPack\"}},[_c('local-emoji-pack',{ref:\"localEmojiPack\",refInFor:true,attrs:{\"name\":name,\"pack\":pack,\"host\":_vm.$store.getters.authHost,\"is-local\":true}})],1)}),1):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"pagination\"},[_c('el-pagination',{attrs:{\"total\":_vm.localPacksCount,\"current-page\":_vm.currentLocalPacksPage,\"page-size\":_vm.pageSize,\"hide-on-single-page\":\"\",\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.handleLocalPageChange}})],1)],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('emoji.remotePacks'),\"name\":\"remote\"}},[_c('el-form',{staticClass:\"emoji-packs-form\",attrs:{\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.remotePacks')}},[_c('div',{staticClass:\"create-pack\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.remoteInstanceAddress')},model:{value:(_vm.remoteInstanceAddress),callback:function ($$v) {_vm.remoteInstanceAddress=$$v},expression:\"remoteInstanceAddress\"}}),_vm._v(\" \"),_c('el-button',{directives:[{name:\"loading\",rawName:\"v-loading.fullscreen.lock\",value:(_vm.fullscreenLoading),expression:\"fullscreenLoading\",modifiers:{\"fullscreen\":true,\"lock\":true}}],staticClass:\"create-pack-button\",attrs:{\"disabled\":_vm.remoteInstanceAddress.trim() === ''},on:{\"click\":_vm.refreshRemotePacks}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('emoji.refreshRemote'))+\"\\n \")])],1)]),_vm._v(\" \"),(Object.keys(_vm.remotePacks).length > 0)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.packs')}},_vm._l((_vm.remotePacks),function(pack,name){return _c('el-collapse',{key:name,attrs:{\"accordion\":\"\"},on:{\"change\":_vm.setActiveTab},model:{value:(_vm.activeRemotePack),callback:function ($$v) {_vm.activeRemotePack=$$v},expression:\"activeRemotePack\"}},[_c('remote-emoji-pack',{attrs:{\"name\":name,\"pack\":pack,\"host\":_vm.$store.getters.authHost,\"is-local\":false}})],1)}),1):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"pagination\"},[_c('el-pagination',{attrs:{\"total\":_vm.remotePacksCount,\"current-page\":_vm.currentRemotePacksPage,\"page-size\":_vm.pageSize,\"hide-on-single-page\":\"\",\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.handleRemotePageChange}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SingleEmojiEditor.vue?vue&type=template&id=130fceee&\"\nimport script from \"./SingleEmojiEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./SingleEmojiEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SingleEmojiEditor.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SingleEmojiEditor.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.isLocal)?_c('div',{class:_vm.isMobile ? 'emoji-container-flex' : 'emoji-container-grid'},[_c('img',{staticClass:\"emoji-preview-img\",attrs:{\"src\":_vm.addressOfEmojiInPack(_vm.host, _vm.packName, _vm.file)}}),_vm._v(\" \"),_c('el-input',{staticClass:\"emoji-info\",attrs:{\"placeholder\":_vm.$t('emoji.shortcode')},model:{value:(_vm.emojiName),callback:function ($$v) {_vm.emojiName=$$v},expression:\"emojiName\"}}),_vm._v(\" \"),_c('el-input',{staticClass:\"emoji-info\",attrs:{\"placeholder\":_vm.$t('emoji.file')},model:{value:(_vm.emojiFile),callback:function ($$v) {_vm.emojiFile=$$v},expression:\"emojiFile\"}}),_vm._v(\" \"),_c('div',{staticClass:\"emoji-buttons\"},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.update}},[_vm._v(_vm._s(_vm.$t('emoji.update')))]),_vm._v(\" \"),_c('el-button',{staticClass:\"remove-emoji-button\",on:{\"click\":_vm.remove}},[_vm._v(_vm._s(_vm.$t('emoji.remove')))])],1)],1):_vm._e(),_vm._v(\" \"),(!_vm.isLocal)?_c('div',{class:_vm.isMobile ? 'emoji-container-flex' : 'remote-emoji-container-grid'},[_c('img',{staticClass:\"emoji-preview-img\",attrs:{\"src\":_vm.addressOfEmojiInPack(_vm.remoteInstance, _vm.packName, _vm.file)}}),_vm._v(\" \"),_c('el-input',{staticClass:\"emoji-info\",attrs:{\"value\":_vm.emojiName,\"placeholder\":_vm.$t('emoji.shortcode')}}),_vm._v(\" \"),_c('el-input',{staticClass:\"emoji-info\",attrs:{\"value\":_vm.emojiFile,\"placeholder\":_vm.$t('emoji.file')}}),_vm._v(\" \"),_c('el-popover',{staticClass:\"copy-pack-container\",attrs:{\"placement\":\"left-start\",\"popper-class\":\"copy-popover\"},model:{value:(_vm.copyPopoverVisible),callback:function ($$v) {_vm.copyPopoverVisible=$$v},expression:\"copyPopoverVisible\"}},[_c('p',[_vm._v(_vm._s(_vm.$t('emoji.selectLocalPack')))]),_vm._v(\" \"),_c('el-select',{staticClass:\"copy-pack-select\",attrs:{\"placeholder\":_vm.$t('emoji.localPack')},model:{value:(_vm.copyToLocalPackName),callback:function ($$v) {_vm.copyToLocalPackName=$$v},expression:\"copyToLocalPackName\"}},_vm._l((_vm.localPacks),function(_pack,name){return _c('el-option',{key:name,attrs:{\"label\":name,\"value\":name}})}),1),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('emoji.specifyShortcode')))]),_vm._v(\" \"),_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.leaveEmptyShortcode')},model:{value:(_vm.copyToShortcode),callback:function ($$v) {_vm.copyToShortcode=$$v},expression:\"copyToShortcode\"}}),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('emoji.specifyFilename')))]),_vm._v(\" \"),_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.leaveEmptyFilename')},model:{value:(_vm.copyToFilename),callback:function ($$v) {_vm.copyToFilename=$$v},expression:\"copyToFilename\"}}),_vm._v(\" \"),_c('el-button',{staticClass:\"copy-to-local-pack-button\",attrs:{\"disabled\":!_vm.copyToLocalPackName,\"type\":\"primary\"},on:{\"click\":_vm.copyToLocal}},[_vm._v(_vm._s(_vm.$t('emoji.copy')))]),_vm._v(\" \"),_c('el-button',{staticClass:\"emoji-button\",attrs:{\"slot\":\"reference\",\"type\":\"primary\"},slot:\"reference\"},[_vm._v(_vm._s(_vm.$t('emoji.copyToLocalPack')))])],1)],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./NewEmojiUploader.vue?vue&type=template&id=403a380a&\"\nimport script from \"./NewEmojiUploader.vue?vue&type=script&lang=js&\"\nexport * from \"./NewEmojiUploader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NewEmojiUploader.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"NewEmojiUploader.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-form',{staticClass:\"new-emoji-uploader-form\",attrs:{\"label-position\":_vm.isMobile ? 'top' : 'left',\"label-width\":\"130px\",\"size\":\"small\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.shortcode')}},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.optional')},model:{value:(_vm.shortcode),callback:function ($$v) {_vm.shortcode=$$v},expression:\"shortcode\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.customFilename')}},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.optional')},model:{value:(_vm.customFileName),callback:function ($$v) {_vm.customFileName=$$v},expression:\"customFileName\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.uploadFile')}},[_c('div',{staticClass:\"upload-file-url\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.url')},model:{value:(_vm.imageUploadURL),callback:function ($$v) {_vm.imageUploadURL=$$v},expression:\"imageUploadURL\"}}),_vm._v(\" \"),_c('el-button',{staticClass:\"upload-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.uploadEmoji}},[_vm._v(_vm._s(_vm.$t('emoji.upload')))])],1),_vm._v(\" \"),_c('div',{staticClass:\"upload-container\"},[_c('p',{staticClass:\"text\"},[_vm._v(\"or\")]),_vm._v(\" \"),_c('el-upload',{attrs:{\"http-request\":_vm.uploadEmoji,\"multiple\":false,\"show-file-list\":false,\"action\":\"add\"}},[_c('el-button',{attrs:{\"type\":\"primary\"}},[_vm._v(_vm._s(_vm.$t('emoji.clickToUpload')))])],1)],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalEmojiPack.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalEmojiPack.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LocalEmojiPack.vue?vue&type=template&id=278d53ab&\"\nimport script from \"./LocalEmojiPack.vue?vue&type=script&lang=js&\"\nexport * from \"./LocalEmojiPack.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LocalEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"LocalEmojiPack.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-collapse-item',{staticClass:\"has-background\",attrs:{\"title\":_vm.name,\"name\":_vm.name}},[_c('el-form',{staticClass:\"emoji-pack-metadata\",attrs:{\"label-width\":_vm.labelWidth,\"label-position\":\"left\",\"size\":\"small\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.sharePack')}},[_c('el-switch',{model:{value:(_vm.share),callback:function ($$v) {_vm.share=$$v},expression:\"share\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.homepage')}},[_c('el-input',{model:{value:(_vm.homepage),callback:function ($$v) {_vm.homepage=$$v},expression:\"homepage\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.description')}},[_c('el-input',{attrs:{\"type\":\"textarea\"},model:{value:(_vm.description),callback:function ($$v) {_vm.description=$$v},expression:\"description\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.license')}},[_c('el-input',{model:{value:(_vm.license),callback:function ($$v) {_vm.license=$$v},expression:\"license\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.fallbackSrc')}},[_c('el-input',{model:{value:(_vm.fallbackSrc),callback:function ($$v) {_vm.fallbackSrc=$$v},expression:\"fallbackSrc\"}})],1),_vm._v(\" \"),(_vm.fallbackSrc && _vm.fallbackSrc.trim() !== '')?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.fallbackSrcSha')}},[_vm._v(\"\\n \"+_vm._s(_vm.pack.pack[\"fallback-src-sha256\"])+\"\\n \")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"pack-button-container\"},[_c('div',{staticClass:\"save-pack-button-container\"},[_c('el-button',{staticClass:\"save-pack-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.savePackMetadata}},[_vm._v(_vm._s(_vm.$t('emoji.saveMetadata')))]),_vm._v(\" \"),_c('el-button',{staticClass:\"delete-pack-button\",on:{\"click\":_vm.deletePack}},[_vm._v(_vm._s(_vm.$t('emoji.deletePack')))])],1),_vm._v(\" \"),_c('div',{staticClass:\"download-pack-button-container\"},[(_vm.pack.pack['can-download'])?_c('el-link',{attrs:{\"href\":(\"//\" + _vm.host + \"//api/pleroma/emoji/packs/archive?name=\" + _vm.name),\"underline\":false,\"type\":\"primary\",\"target\":\"_blank\"}},[_c('el-button',{staticClass:\"download-archive\"},[_vm._v(_vm._s(_vm.$t('emoji.downloadPackArchive')))])],1):_vm._e()],1)]),_vm._v(\" \"),_c('el-collapse',{staticClass:\"contents-collapse\",on:{\"change\":function($event){return _vm.handleChange($event, _vm.name)}},model:{value:(_vm.showPackContent),callback:function ($$v) {_vm.showPackContent=$$v},expression:\"showPackContent\"}},[(_vm.isLocal)?_c('el-collapse-item',{staticClass:\"no-background\",attrs:{\"title\":_vm.$t('emoji.addNewEmoji'),\"name\":\"addEmoji\"}},[_c('new-emoji-uploader',{attrs:{\"pack-name\":_vm.name}})],1):_vm._e(),_vm._v(\" \"),_c('el-collapse-item',{staticClass:\"no-background\",attrs:{\"title\":_vm.$t('emoji.manageEmoji'),\"name\":\"manageEmoji\"}},[(_vm.pack.files && Object.keys(_vm.pack.files).length > 0)?_c('div',[_c('div',{class:_vm.isMobile ? 'emoji-container-flex' : 'emoji-container-grid'},[_c('span',{staticClass:\"emoji-preview-img emoji-table-head\"},[_vm._v(_vm._s(_vm.$t('emoji.image')))]),_vm._v(\" \"),_c('span',{staticClass:\"emoji-table-head\"},[_vm._v(_vm._s(_vm.$t('emoji.shortcode')))]),_vm._v(\" \"),_c('span',{staticClass:\"emoji-table-head\"},[_vm._v(_vm._s(_vm.$t('emoji.file')))])]),_vm._v(\" \"),_vm._l((_vm.pack.files),function(file,shortcode){return _c('single-emoji-editor',{key:shortcode,attrs:{\"host\":_vm.host,\"pack-name\":_vm.name,\"shortcode\":shortcode,\"file\":file,\"is-local\":_vm.isLocal}})})],2):_c('span',{staticClass:\"expl\"},[_vm._v(_vm._s(_vm.$t('emoji.emptyPack')))]),_vm._v(\" \"),_c('div',{staticClass:\"files-pagination\"},[_c('el-pagination',{attrs:{\"total\":_vm.localPackFilesCount,\"current-page\":_vm.currentFilesPage,\"page-size\":_vm.pageSize,\"hide-on-single-page\":\"\",\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.handleFilesPageChange}})],1)])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteEmojiPack.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteEmojiPack.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./RemoteEmojiPack.vue?vue&type=template&id=0403b537&\"\nimport script from \"./RemoteEmojiPack.vue?vue&type=script&lang=js&\"\nexport * from \"./RemoteEmojiPack.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RemoteEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"RemoteEmojiPack.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-collapse-item',{staticClass:\"has-background\",attrs:{\"title\":_vm.name,\"name\":_vm.name}},[(_vm.loadRemotePack)?_c('div',[_c('el-form',{staticClass:\"emoji-pack-metadata remote-pack-metadata\",attrs:{\"label-width\":_vm.labelWidth,\"label-position\":\"left\",\"size\":\"small\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.sharePack')}},[_c('el-switch',{attrs:{\"disabled\":\"\"},model:{value:(_vm.share),callback:function ($$v) {_vm.share=$$v},expression:\"share\"}})],1),_vm._v(\" \"),(_vm.homepage)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.homepage')}},[_c('span',[_vm._v(_vm._s(_vm.homepage))])]):_vm._e(),_vm._v(\" \"),(_vm.description)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.description')}},[_c('span',[_vm._v(_vm._s(_vm.description))])]):_vm._e(),_vm._v(\" \"),(_vm.license)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.license')}},[_c('span',[_vm._v(_vm._s(_vm.license))])]):_vm._e(),_vm._v(\" \"),(_vm.fallbackSrc)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.fallbackSrc')}},[_c('span',[_vm._v(_vm._s(_vm.fallbackSrc))])]):_vm._e(),_vm._v(\" \"),(_vm.fallbackSrc && _vm.fallbackSrc.trim() !== '')?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.fallbackSrcSha')}},[_vm._v(\"\\n \"+_vm._s(_vm.pack.pack[\"fallback-src-sha256\"])+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-form-item',[(_vm.pack.pack['can-download'] && _vm.pack.pack['fallback-src'])?_c('el-link',{attrs:{\"href\":_vm.pack.pack['fallback-src'],\"underline\":false,\"type\":\"primary\",\"target\":\"_blank\"}},[_c('el-button',{staticClass:\"download-archive\"},[_vm._v(_vm._s(_vm.$t('emoji.downloadPackArchive')))])],1):_vm._e()],1)],1),_vm._v(\" \"),_c('el-collapse',{staticClass:\"contents-collapse\",on:{\"change\":function($event){return _vm.handleChange($event, _vm.name)}},model:{value:(_vm.showPackContent),callback:function ($$v) {_vm.showPackContent=$$v},expression:\"showPackContent\"}},[_c('el-collapse-item',{staticClass:\"no-background\",attrs:{\"title\":_vm.$t('emoji.manageEmoji'),\"name\":\"manageEmoji\"}},[(_vm.pack.files && Object.keys(_vm.pack.files).length > 0)?_c('div',_vm._l((_vm.pack.files),function(file,shortcode){return _c('single-emoji-editor',{key:shortcode,attrs:{\"host\":_vm.host,\"pack-name\":_vm.name,\"shortcode\":shortcode,\"file\":file,\"is-local\":_vm.isLocal}})}),1):_c('span',{staticClass:\"expl\"},[_vm._v(_vm._s(_vm.$t('emoji.emptyPack')))]),_vm._v(\" \"),_c('div',{staticClass:\"files-pagination\"},[_c('el-pagination',{attrs:{\"total\":_vm.remotePackFilesCount,\"current-page\":_vm.currentFilesPage,\"page-size\":_vm.pageSize,\"hide-on-single-page\":\"\",\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.handleFilesPageChange}})],1)]),_vm._v(\" \"),_c('el-collapse-item',{staticClass:\"no-background\",attrs:{\"title\":_vm.$t('emoji.downloadPack'),\"name\":\"downloadPack\"}},[_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('emoji.thisWillDownload'))+\" \\\"\"+_vm._s(_vm.name)+\"\\\" \"+_vm._s(_vm.$t('emoji.downloadToCurrentInstance'))+\"\\n \\\"\"+_vm._s(_vm.downloadSharedAs.trim() === '' ? _vm.name : _vm.downloadSharedAs)+\"\\\" (\"+_vm._s(_vm.$t('emoji.canBeChanged'))+\").\\n \"+_vm._s(_vm.$t('emoji.willBeUsable'))+\".\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"download-shared-pack\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.downloadAsOptional')},model:{value:(_vm.downloadSharedAs),callback:function ($$v) {_vm.downloadSharedAs=$$v},expression:\"downloadSharedAs\"}}),_vm._v(\" \"),_c('el-button',{staticClass:\"download-shared-pack-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.downloadFromInstance}},[_vm._v(\"\\n \"+_vm._s(_vm.isDesktop ? _vm.$t('emoji.downloadSharedPack') : _vm.$t('emoji.downloadSharedPackMobile'))+\"\\n \")])],1)])],1)],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=3cf2b681&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-565e.e1555105.js b/priv/static/adminfe/static/js/chunk-565e.e1555105.js deleted file mode 100644 index 638c78b38..000000000 --- a/priv/static/adminfe/static/js/chunk-565e.e1555105.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-565e"],{"+2nY":function(t,e,i){"use strict";var n=i("ld6V");i.n(n).a},"+qaP":function(t,e,i){"use strict";var n=i("60OA");i.n(n).a},"0FjT":function(t,e,i){"use strict";var n=i("dnRK");i.n(n).a},"2q6O":function(t,e,i){"use strict";var n=i("Scsy");i.n(n).a},"3IoU":function(t,e,i){"use strict";var n=i("6V7o");i.n(n).a},"3YZA":function(t,e,i){},"4NUT":function(t,e,i){},"4b9x":function(t,e,i){"use strict";var n=i("wgcy");i.n(n).a},"60OA":function(t,e,i){},"6V7o":function(t,e,i){},"77pt":function(t,e,i){},"9Hof":function(t,e,i){"use strict";var n=i("ncj/");i.n(n).a},"9p49":function(t,e,i){},"9y8C":function(t,e,i){"use strict";var n=i("rKzx");i.n(n).a},DPt0:function(t,e,i){"use strict";var n=i("x6RV");i.n(n).a},EXm2:function(t,e,i){},Ezi3:function(t,e,i){"use strict";var n=i("MNl6");i.n(n).a},FCne:function(t,e,i){"use strict";var n=i("OCuP");i.n(n).a},"J7+w":function(t,e,i){"use strict";var n=i("fyIw");i.n(n).a},JqY8:function(t,e,i){},KFE3:function(t,e,i){"use strict";var n=i("mSK5");i.n(n).a},MNl6:function(t,e,i){},NiUD:function(t,e,i){},OCuP:function(t,e,i){},OQQp:function(t,e,i){"use strict";var n=i("pPJ2");i.n(n).a},PYLh:function(t,e,i){},PygS:function(t,e,i){"use strict";var n=i("TtMh");i.n(n).a},RSJF:function(t,e,i){},Scsy:function(t,e,i){},TOIk:function(t,e,i){},TRR9:function(t,e,i){},TtMh:function(t,e,i){},TudB:function(t,e,i){},"UbP/":function(t,e,i){},UdS4:function(t,e,i){"use strict";var n=i("WwJU");i.n(n).a},UqcT:function(t,e,i){"use strict";var n=i("RSJF");i.n(n).a},UtFC:function(t,e,i){},"WvM+":function(t,e,i){"use strict";var n=i("TRR9");i.n(n).a},WwJU:function(t,e,i){},YKHE:function(t,e,i){},YcIK:function(t,e,i){"use strict";i.r(e);var n=i("o0o1"),s=i.n(n),a=i("yXPU"),r=i.n(a),o=i("mSNy"),l=i("MVZn"),u=i.n(l),c=i("L2JU"),p=i("lSNA"),d=i.n(p),g=i("RIqP"),h=i.n(g),m=i("h74u"),b={name:"EditableKeywordInput",props:{data:{type:Array,default:function(){return{}}},parents:{type:Array,default:function(){return[]},required:!1},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{editableKeywordWithInteger:function(){return this.setting.type.includes("keyword")&&this.setting.type.includes("integer")},editableKeywordWithSelect:function(){return this.setting.type.includes("map")&&-1!==this.setting.type.findIndex(function(t){return t.includes("list")&&t.includes("string")})||this.setting.type.includes("keyword")&&-1!==this.setting.type.findIndex(function(t){return t.includes("list")&&t.includes("string")})},editableKeywordWithString:function(){return":crontab"!==this.setting.key&&(this.setting.type.includes("keyword")&&this.setting.type.includes("string")||this.setting.type.includes("tuple")&&this.setting.type.includes("list")||this.setting.type.includes("map")&&this.setting.type.includes("string"))},isDesktop:function(){return"desktop"===this.$store.state.app.device},keyPlaceholder:function(){return":replace"===this.setting.key?"pattern":"key"},settings:function(){return this.$store.state.settings.settings},updatedSettings:function(){return this.$store.state.settings.updatedSettings},valuePlaceholder:function(){return":replace"===this.setting.key?"replacement":"value"}},methods:{addRowToEditableKeyword:function(){var t=[].concat(h()(this.data),[{"":{value:"",id:this.generateID()}}]);this.updateSetting(t,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},deleteEditableKeywordRow:function(t){var e=this.getId(t),i=this.data.filter(function(t){return Object.values(t)[0].id!==e});this.updateSetting(i,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},generateID:function(){return"f".concat((~~(1e8*Math.random())).toString(16))},getCrontabWorkerLabel:function(t){var e=this.getKey(t);return e.includes("Pleroma.Workers.Cron.")?e.replace("Pleroma.Workers.Cron.",""):e},getKey:function(t){return Object.keys(t)[0]},getId:function(t){return Object.values(t)[0].id},getSuggestion:function(t){var e=this;return this.setting.suggestions.find(function(i){return i[1]===e.getKey(t)})[0]},getValue:function(t){return Object.values(t)[0].value},parseEditableKeyword:function(t,e,i){var n=this,s=this.getId(i),a=this.data.map(function(i,a){return Object.values(i)[0].id===s?"key"===e?d()({},t,Object.values(n.data[a])[0]):d()({},Object.keys(i)[0],u()({},Object.values(n.data[a])[0],{value:t})):i});this.updateSetting(a,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},updateCrontab:function(t,e,i){var n=this,s=this.getId(i),a=this.data.map(function(e,i){return Object.values(e)[0].id===s?d()({},Object.keys(e)[0],u()({},Object.values(n.data[i])[0],{value:t})):e}),r=a.reduce(function(t,e){return u()({},t,d()({},Object.keys(e)[0],["reversed_tuple",Object.values(e)[0].value]))},{});this.$store.dispatch("UpdateSettings",{group:this.settingGroup.group,key:this.settingGroup.key,input:this.setting.key,value:r,type:this.setting.type}),this.$store.dispatch("UpdateState",{group:this.settingGroup.group,key:this.settingGroup.key,input:this.setting.key,value:a})},updateSetting:function(t,e,i,n,s){var a=this.wrapUpdatedSettings(t,n,s);if(this.parents.length>0){var r=Object(m.e)(t,a,e,i,this.parents.reverse(),this.settings,this.updatedSettings),o=r.valueForState,l=r.valueForUpdatedSettings,u=r.setting;this.$store.dispatch("UpdateSettings",{group:e,key:i,input:u.key,value:l,type:u.type}),this.$store.dispatch("UpdateState",{group:e,key:i,input:u.key,value:o})}else this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:a,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t})},wrapUpdatedSettings:function(t,e,i){return"map"===i?t.reduce(function(t,e){return u()({},t,d()({},Object.keys(e)[0],Object.values(e)[0].value))},{}):t.reduce(function(t,e){return u()({},t,d()({},Object.keys(e)[0],["list",Object.values(e)[0].value]))},{})}}},f=(i("nKzF"),i("KHd+")),v=Object(f.a)(b,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"editable-keyword-container"},[":crontab"===t.setting.key?i("div",{staticClass:"crontab",attrs:{"data-search":t.setting.key}},t._l(t.data,function(e){return i("el-form-item",{key:t.getId(e),staticClass:"crontab-container",attrs:{label:t.getCrontabWorkerLabel(e)}},[i("el-input",{staticClass:"input setting-input",attrs:{value:t.getValue(e),placeholder:t.getSuggestion(e)||null},on:{input:function(i){return t.updateCrontab(i,"value",e)}}})],1)}),1):t.editableKeywordWithInteger?i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[t._l(t.data,function(e){return i("div",{key:t.getId(e),staticClass:"setting-input"},[i("el-input",{staticClass:"name-input",attrs:{value:t.getKey(e),placeholder:"key"},on:{input:function(i){return t.parseEditableKeyword(i,"key",e)}}}),t._v(" :\n "),i("el-input-number",{staticClass:"value-input",attrs:{value:t.getValue(e),min:0,size:"large"},on:{change:function(i){return t.parseEditableKeyword(i,"value",e)}}}),t._v(" "),i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(i){return t.deleteEditableKeywordRow(e)}}})],1)}),t._v(" "),i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:t.addRowToEditableKeyword}})],2):t.editableKeywordWithString?i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[t._l(t.data,function(e){return i("div",{key:t.getId(e),staticClass:"setting-input"},[i("el-input",{staticClass:"name-input",attrs:{value:t.getKey(e),placeholder:t.keyPlaceholder},on:{input:function(i){return t.parseEditableKeyword(i,"key",e)}}}),t._v(" :\n "),i("el-input",{staticClass:"value-input",attrs:{value:t.getValue(e),placeholder:t.valuePlaceholder},on:{input:function(i){return t.parseEditableKeyword(i,"value",e)}}}),t._v(" "),i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(i){return t.deleteEditableKeywordRow(e)}}})],1)}),t._v(" "),i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:t.addRowToEditableKeyword}})],2):t.editableKeywordWithSelect?i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[t._l(t.data,function(e){return i("div",{key:t.getId(e),staticClass:"setting-input"},[i("el-input",{staticClass:"name-input",attrs:{value:t.getKey(e),placeholder:"key"},on:{input:function(i){return t.parseEditableKeyword(i,"key",e)}}}),t._v(" :\n "),i("el-select",{staticClass:"value-input",attrs:{value:t.getValue(e),multiple:"",filterable:"","allow-create":""},on:{change:function(i){return t.parseEditableKeyword(i,"value",e)}}}),t._v(" "),i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(i){return t.deleteEditableKeywordRow(e)}}})],1)}),t._v(" "),i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:t.addRowToEditableKeyword}})],2):t._e()])},[],!1,null,null,null);v.options.__file="EditableKeywordInput.vue";var y=v.exports,k={name:"EditableKeywordInput",props:{data:{type:Array,default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{addIconToIcons:function(){var t=[].concat(h()(this.data),[[{key:"",value:"",id:this.generateID()}]]);this.updateSetting(t,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},addValueToIcons:function(t){var e=this,i=this.data.map(function(i,n){return n===t?[].concat(h()(i),[{key:"",value:"",id:e.generateID()}]):i});this.updateSetting(i,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},deleteIcondRow:function(t){var e=this.data.filter(function(e,i){return i!==t});this.updateSetting(e,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},generateID:function(){return"f".concat((~~(1e8*Math.random())).toString(16))},parseIcons:function(t,e,i,n){var s=this.data.map(function(s,a){return a===i?s.map(function(i){return i.id===n?"key"===e?u()({},i,{key:t}):u()({},i,{value:t}):i}):s});this.updateSetting(s,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},updateSetting:function(t,e,i,n,s){var a=t.map(function(t){return t.reduce(function(t,e){var i=e.key,n=e.value;return u()({},t,d()({},i,n))},{})},{});this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:a,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t})}}},_=(i("rdar"),Object(f.a)(k,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"mascot-container",attrs:{"data-search":t.setting.key||t.setting.group}},[t._l(t.data,function(e,n){return i("div",{key:n,staticClass:"mascot"},[i("div",{staticClass:"icons-container"},[i("div",{staticClass:"icon-container"},t._l(e,function(e){var s=e.key,a=e.value,r=e.id;return i("div",{key:r,staticClass:"icon-values-container"},[i("el-input",{staticClass:"icon-key-input",attrs:{value:s,placeholder:"key"},on:{input:function(e){return t.parseIcons(e,"key",n,r)}}}),t._v(" :\n "),i("el-input",{staticClass:"icon-value-input",attrs:{value:a,placeholder:"value"},on:{input:function(e){return t.parseIcons(e,"value",n,r)}}})],1)}),0),t._v(" "),i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(e){return t.deleteIcondRow(n)}}})],1),t._v(" "),i("div",{staticClass:"icons-button-container"},[i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:function(e){return t.addValueToIcons(n)}}}),t._v(" "),i("span",{staticClass:"icons-button-desc"},[t._v("Add another `key - value` pair to this icon")])],1),t._v(" "),i("el-divider",{staticClass:"divider"})],1)}),t._v(" "),i("div",{staticClass:"icons-button-container"},[i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:t.addIconToIcons}}),t._v(" "),i("span",{staticClass:"icons-button-desc"},[t._v("Add another icon configuration")])],1)],2)},[],!1,null,null,null));_.options.__file="IconsInput.vue";var S=_.exports,w=i("LvDl"),D=i.n(w),C=i("9i3r"),x=i("X4fA"),P="/api/v1/media";var $=function(){return{Authorization:"Bearer ".concat(Object(x.b)())}},O={name:"ImageUploadInput",props:{inputValue:{type:[String,Object],default:function(){return{}}},setting:{type:Object,default:function(){return{}}}},data:function(){return{loading:!1}},computed:u()({},Object(c.b)(["authHost"]),{fullSize:function(){return!!D.a.includes([":background",":nsfwCensorImage"],this.setting.key)},dimensions:function(){return{width:this.fullSize?"100%":"100px",height:this.fullSize?"250px":"100px"}},isDefault:function(){return this.defaultImage===this.inputValue},defaultImage:function(){return this.baseName+D.a.get(this.setting,"suggestions[0]")},baseName:function(){return Object(C.a)(this.authHost)}}),methods:{imageUrl:function(t){return D.a.isString(t)?t.startsWith("http")||t.startsWith("https")?t:this.baseName+t:this.defaultImage},handleFiles:function(t){var e=this,i=t.target.files[0];if(i){var n=new FileReader;n.onload=function(t){t.target;var n=new FormData;n.append("file",i),e.loading=!0,function(t){var e=t.formData,i=t.authHost,n=Object(C.a)(i)+P;return fetch(n,{body:e,method:"POST",headers:$()}).then(function(t){return t.json()})}({formData:n,authHost:e.authHost}).then(function(t){e.loading=!1,e.$emit("change",t.url)})},n.readAsDataURL(i)}},removeFile:function(){this.$emit("change",this.defaultImage)}}},U=(i("zzeU"),Object(f.a)(O,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"image-upload-area"},[i("div",{staticClass:"input-row"},[i("div",{staticClass:"image-upload-wrapper",style:t.dimensions},[i("div",{staticClass:"image-upload-overlay",style:t.dimensions},[i("input",{staticClass:"input-file",attrs:{"aria-label":t.$t("settings.changeImage"),type:"file",accept:".jpg,.jpeg,.png"},on:{change:t.handleFiles}}),t._v(" "),i("div",{staticClass:"caption"},[t._v("\n "+t._s(t.$t("settings.changeImage"))+"\n ")]),t._v(" "),i("el-image",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"uploaded-image",style:t.dimensions,attrs:{src:t.imageUrl(t.inputValue),fit:"cover"}})],1)])]),t._v(" "),i("div",{staticClass:"image-button-group"},[i("el-button",{staticClass:"upload-button",attrs:{size:"small"}},[t._v("\n "+t._s(t.$t("settings.uploadImage"))+"\n "),i("input",{staticClass:"input-file",attrs:{"aria-label":t.$t("settings.changeImage"),type:"file",accept:".jpg,.jpeg,.png"},on:{change:t.handleFiles}})]),t._v(" "),t.isDefault?t._e():i("el-button",{staticStyle:{"margin-left":"5px"},attrs:{type:"danger",size:"small"},on:{click:function(e){return t.removeFile()}}},[t._v("\n "+t._s(t.$t("settings.remove"))+"\n ")])],1)])},[],!1,null,null,null));U.options.__file="ImageUploadInput.vue";var j=U.exports,I={name:"LinkFormatterInput",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{autoLinkerAtomValue:function(){return this.data[this.setting.key]&&":"===this.data[this.setting.key][0]?this.data[this.setting.key].substr(1):this.data[this.setting.key]},autoLinkerBooleanValue:function(){var t=this.data[this.setting.key];return"string"==typeof t||"number"==typeof t},autoLinkerIntegerValue:function(){return this.data[this.setting.key]||0},autoLinkerStringValue:function(){return this.data[this.setting.key]||""}},methods:{processTwoTypeValue:function(t,e){if(!0===t){var i=":truncate"===e?0:"";this.updateSetting(i,this.settingGroup.group,this.settingGroup.key,e,this.setting.type)}else this.updateSetting(t,this.settingGroup.group,this.settingGroup.key,e,this.setting.type)},updateSetting:function(t,e,i,n,s){this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:t,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t})}}},M=(i("9y8C"),Object(f.a)(I,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",[t.setting.type.includes("string")?i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[i("el-switch",{attrs:{value:t.autoLinkerBooleanValue},on:{change:function(e){return t.processTwoTypeValue(e,t.setting.key)}}}),t._v(" "),t.autoLinkerBooleanValue?i("el-input",{attrs:{value:t.autoLinkerStringValue},on:{input:function(e){return t.processTwoTypeValue(e,t.setting.key)}}}):t._e()],1):t._e(),t._v(" "),t.setting.type.includes("integer")?i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[i("el-switch",{attrs:{value:t.autoLinkerBooleanValue},on:{change:function(e){return t.processTwoTypeValue(e,t.setting.key)}}}),t._v(" "),t.autoLinkerBooleanValue?i("el-input-number",{attrs:{value:t.autoLinkerIntegerValue},on:{input:function(e){return t.processTwoTypeValue(e,t.setting.key)}}}):t._e()],1):t._e(),t._v(" "),t.setting.type.includes("atom")?i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[i("el-switch",{attrs:{value:t.autoLinkerBooleanValue},on:{change:function(e){return t.processTwoTypeValue(e,t.setting.key)}}}),t._v(" "),t.autoLinkerBooleanValue?i("el-input",{attrs:{value:t.autoLinkerAtomValue},on:{input:function(e){return t.processTwoTypeValue(e,t.setting.key)}}},[i("template",{slot:"prepend"},[t._v(":")])],2):t._e()],1):t._e()])},[],!1,null,null,null));M.options.__file="LinkFormatterInput.vue";var T=M.exports,W=i("QILm"),A=i.n(W),G=i("J4zp"),L=i.n(G),E={name:"MascotsInput",props:{data:{type:Array,default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{addRowToMascots:function(){var t=[].concat(h()(this.data),[{"":{":url":"",":mime_type":"",id:this.generateID()}}]);this.updateSetting(t,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},deleteMascotsRow:function(t){var e=this.getId(t),i=this.data.filter(function(t){return Object.values(t)[0].id!==e});this.updateSetting(i,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},generateID:function(){return"f".concat((~~(1e8*Math.random())).toString(16))},getId:function(t){return Object.values(t)[0].id},getName:function(t){return Object.keys(t)[0]},getUrl:function(t){var e=Object.values(t);return L()(e,1)[0][":url"]},getMimeType:function(t){var e=Object.values(t);return L()(e,1)[0][":mime_type"]},parseMascots:function(t,e,i){var n=this,s=this.getId(i),a=this.data.map(function(i,a){return Object.values(i)[0].id===s?"name"===e?d()({},t,Object.values(n.data[a])[0]):"url"===e?d()({},Object.keys(i)[0],u()({},Object.values(n.data[a])[0],{":url":t})):d()({},Object.keys(i)[0],u()({},Object.values(n.data[a])[0],{":mime_type":t})):i});this.updateSetting(a,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},updateSetting:function(t,e,i,n,s){var a=t.reduce(function(t,e){var i=Object.values(e)[0],n=(i.id,A()(i,["id"]));return u()({},t,d()({},Object.keys(e)[0],["",n]))},{});this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:a,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t})}}},F=(i("+2nY"),Object(f.a)(E,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"mascot-container",attrs:{"data-search":t.setting.key||t.setting.group}},[t._l(t.data,function(e){return i("div",{key:t.getId(e),staticClass:"mascot"},[i("el-form-item",{staticClass:"mascot-form-item",attrs:{label:"Name","label-width":"85px"}},[i("div",{staticClass:"mascot-name-container"},[i("el-input",{staticClass:"mascot-name-input",attrs:{value:t.getName(e),placeholder:"Name"},on:{input:function(i){return t.parseMascots(i,"name",e)}}}),t._v(" "),i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(i){return t.deleteMascotsRow(e)}}})],1)]),t._v(" "),i("el-form-item",{staticClass:"mascot-form-item",attrs:{label:"URL","label-width":"85px"}},[i("el-input",{staticClass:"mascot-input",attrs:{value:t.getUrl(e),placeholder:"URL"},on:{input:function(i){return t.parseMascots(i,"url",e)}}})],1),t._v(" "),i("el-form-item",{staticClass:"mascot-form-item",attrs:{label:"Mime type","label-width":"85px"}},[i("el-input",{staticClass:"mascot-input",attrs:{value:t.getMimeType(e),placeholder:"Mime type"},on:{input:function(i){return t.parseMascots(i,"mimeType",e)}}})],1)],1)}),t._v(" "),i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:t.addRowToMascots}})],2)},[],!1,null,null,null));F.options.__file="MascotsInput.vue";var R=F.exports,V={name:"ProxyUrlInput",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}},parents:{type:Array,default:function(){return[]},required:!1}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},settings:function(){return this.$store.state.settings.settings},updatedSettings:function(){return this.$store.state.settings.updatedSettings},proxyUrlData:function(){return 0===Object.keys(this.data).length?{socks5:!1,host:null,port:null}:this.data}},methods:{updateProxyUrl:function(t,e){var i;i="socks5"===e?u()({},this.proxyUrlData,{socks5:t}):"host"===e?u()({},this.proxyUrlData,{host:t}):u()({},this.proxyUrlData,{port:t}),this.updateSetting(i,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},updateSetting:function(t,e,i,n,s){var a=t.socks5?[":socks5",t.host,t.port]:"".concat(t.host,":").concat(t.port);if(this.parents.length>0){var r=Object(m.e)(t,a,e,i,this.parents.reverse(),this.settings,this.updatedSettings),o=r.valueForState,l=r.valueForUpdatedSettings,u=r.setting;this.$store.dispatch("UpdateSettings",{group:e,key:i,input:u.key,value:l,type:u.type}),this.$store.dispatch("UpdateState",{group:e,key:i,input:u.key,value:o})}else this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:a,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t})}}},K=(i("mGnP"),Object(f.a)(V,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"proxy-url-input",attrs:{"data-search":t.setting.key||t.setting.group}},[i("el-input",{staticClass:"proxy-url-host-input",attrs:{value:t.proxyUrlData.host,placeholder:"host (e.g. localhost or 127.0.0.1)"},on:{input:function(e){return t.updateProxyUrl(e,"host")}}}),t._v(" "),t.isDesktop?i("span",[t._v(":")]):t._e(),t._v(" "),i("el-input",{staticClass:"proxy-url-value-input",attrs:{value:t.proxyUrlData.port,placeholder:"port (e.g 9020 or 3090)"},on:{input:function(e){return t.updateProxyUrl(e,"port")}}}),t._v(" "),i("div",{staticClass:"socks5-checkbox-container"},[i("el-checkbox",{attrs:{value:t.proxyUrlData.socks5},on:{change:function(e){return t.updateProxyUrl(e,"socks5")}}}),t._v(" "),i("span",{staticClass:"socks5-checkbox"},[t._v("Socks5")])],1)],1)},[],!1,null,null,null));K.options.__file="ProxyUrlInput.vue";var z=K.exports,q={name:"PruneInput",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{prune:{get:function(){return this.data[0]},set:function(t){this.updateRadioInput(t)}}},methods:{updateIntInput:function(t,e){this.updateSetting([e,t],this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},updateSetting:function(t,e,i,n,s){var a=t.includes(":disabled")?":disabled":t;this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:a,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t})},updateRadioInput:function(t){var e=":disabled"===t?[t]:[t,0];this.updateSetting(e,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)}}},N=(i("Ezi3"),Object(f.a)(q,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[i("el-radio-group",{staticClass:"prune-options",model:{value:t.prune,callback:function(e){t.prune=e},expression:"prune"}},[i("el-radio",{attrs:{label:":disabled"}},[t._v("Disabled")]),t._v(" "),i("el-radio",{attrs:{label:":maxlen"}},[t._v("Limit-based")]),t._v(" "),i("el-radio",{attrs:{label:":maxage"}},[t._v("Time-based")])],1),t._v(" "),":maxlen"===t.prune?i("el-form-item",{attrs:{label:"Max length","label-width":"100","label-position":"left"}},[i("el-input-number",{staticClass:"top-margin",attrs:{value:t.data[1],min:0,placeholder:"1500",size:"large"},on:{change:function(e){return t.updateIntInput(e,":maxlen")}}})],1):t._e(),t._v(" "),":maxage"===t.prune?i("el-form-item",{attrs:{label:"Max age","label-width":"100","label-position":"left"}},[i("el-input-number",{staticClass:"top-margin",attrs:{value:t.data[1],min:0,placeholder:"3600",size:"large"},on:{change:function(e){return t.updateIntInput(e,":maxage")}}})],1):t._e()],1)},[],!1,null,null,null));N.options.__file="PruneInput.vue";var B=N.exports,Q={name:"RateLimitInput",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},rateLimitAllUsers:function(){return this.data[this.setting.key]?this.data[this.setting.key]:["",""]},rateLimitAuthUsers:function(){return!(!this.data[this.setting.key]||!Array.isArray(this.data[this.setting.key][0]))&&this.data[this.setting.key][1]},rateLimitUnauthUsers:function(){return!(!this.data[this.setting.key]||!Array.isArray(this.data[this.setting.key][1]))&&this.data[this.setting.key][0]}},methods:{parseRateLimiter:function(t,e,i,n,s){var a;"oneLimit"===n?a="scale"===i?[t,s[1]]:[s[0],t]:"unauthUsersLimit"===n?a="scale"===i?[[t,s[0][1]],[s[1][0],s[1][1]]]:[[s[0][0],t],[s[1][0],s[1][1]]]:"authUserslimit"===n&&(a="scale"===i?[[s[0][0],s[0][1]],[t,s[1][1]]]:[[s[0][0],s[0][1]],[s[1][0],t]]),this.updateSetting(a,this.settingGroup.group,this.settingGroup.key,e,this.setting.type)},toggleLimits:function(t,e){this.updateSetting(t,this.settingGroup.group,this.settingGroup.key,e)},updateSetting:function(t,e,i,n,s){var a=Array.isArray(t[0])?t.map(function(t){return{tuple:t}}):{tuple:t};this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:a,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t})}}},H=(i("irif"),Object(f.a)(Q,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"rate-limit-container",attrs:{"data-search":t.setting.key||t.setting.group}},[t.rateLimitAuthUsers?t._e():i("div",[i("el-input-number",{staticClass:"scale-input",attrs:{value:t.rateLimitAllUsers[0],controls:!1,placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"scale","oneLimit",t.rateLimitAllUsers)}}}),t._v(" "),i("span",[t._v(":")]),t._v(" "),i("el-input-number",{staticClass:"limit-input",attrs:{value:t.rateLimitAllUsers[1],controls:!1,placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"limit","oneLimit",t.rateLimitAllUsers)}}}),t._v(" "),i("div",{staticClass:"limit-button-container"},[i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:function(e){return t.toggleLimits([["",""],["",""]],t.setting.key)}}}),t._v(" "),i("p",{staticClass:"expl limit-expl"},[t._v("Set different limits for unauthenticated and authenticated users")])],1)],1),t._v(" "),t.rateLimitAuthUsers?i("div",[i("el-form-item",{staticClass:"rate-limit"},[i("div",{staticClass:"rate-limit-label-container"},[i("span",{staticClass:"rate-limit-label"},[t._v("\n Unauthenticated users:\n ")])]),t._v(" "),i("div",{staticClass:"rate-limit-content"},[i("el-input-number",{staticClass:"scale-input",attrs:{value:t.rateLimitUnauthUsers[0],controls:!1,placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"scale","unauthUsersLimit",[t.rateLimitUnauthUsers,t.rateLimitAuthUsers])}}}),t._v(" "),i("span",[t._v(":")]),t._v(" "),i("el-input-number",{staticClass:"limit-input",attrs:{value:t.rateLimitUnauthUsers[1],controls:!1,placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"limit","unauthUsersLimit",[t.rateLimitUnauthUsers,t.rateLimitAuthUsers])}}})],1)]),t._v(" "),i("el-form-item",{staticClass:"rate-limit"},[i("div",{staticClass:"rate-limit-label-container"},[i("span",{staticClass:"rate-limit-label"},[t._v("\n Authenticated users:\n ")])]),t._v(" "),i("div",{staticClass:"rate-limit-content"},[i("el-input-number",{staticClass:"scale-input",attrs:{value:t.rateLimitAuthUsers[0],controls:!1,placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"scale","authUserslimit",[t.rateLimitUnauthUsers,t.rateLimitAuthUsers])}}}),t._v(" "),i("span",[t._v(":")]),t._v(" "),i("el-input-number",{staticClass:"limit-input",attrs:{value:t.rateLimitAuthUsers[1],controls:!1,placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"limit","authUserslimit",[t.rateLimitUnauthUsers,t.rateLimitAuthUsers])}}})],1)]),t._v(" "),i("div",{staticClass:"limit-button-container"},[i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(e){return t.toggleLimits(["",""],t.setting.key)}}}),t._v(" "),i("p",{staticClass:"expl limit-expl"},[t._v("Set limit for all users")])],1)],1):t._e()])},[],!1,null,null,null));H.options.__file="RateLimitInput.vue";var J=H.exports,Y={name:"RegInvitesInput",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},methods:{updateSetting:function(t,e,i,n,s){var a=this,r=this.$store.state.settings.settings[e][i][":registrations_open"],o=this.$store.state.settings.settings[e][i][":invites_enabled"];":registrations_open"===n&&t&&o?this.$confirm("Enabling this setting requires invites to be disabled. Are you sure you want to open registrations?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){a.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:t,type:s}),a.$store.dispatch("UpdateSettings",{group:e,key:i,input:":invites_enabled",value:!1,type:s}),a.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t}),a.$store.dispatch("UpdateState",{group:e,key:i,input:":invites_enabled",value:!1})}):":invites_enabled"===n&&t&&r?this.$confirm("Enabling this setting requires registrations to be disabled. Are you sure you want to enable invitations?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){a.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:t,type:s}),a.$store.dispatch("UpdateSettings",{group:e,key:i,input:":registrations_open",value:!1,type:s}),a.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t}),a.$store.dispatch("UpdateState",{group:e,key:i,input:":registrations_open",value:!1})}):(this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:t,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t}))}}},X=(i("9Hof"),Object(f.a)(Y,function(){var t=this,e=t.$createElement;return(t._self._c||e)("el-switch",{staticClass:"switch-input",attrs:{value:t.data[t.setting.key],"data-search":t.setting.key},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}})},[],!1,null,null,null));X.options.__file="RegInvitesInput.vue";var Z=X.exports,tt={name:"SelectInputWithReducedLabels",props:{data:{type:[Array,Object],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{inputValue:function(){return"Pleroma.Web.Auth.Authenticator"===this.setting.key?this.data.value:":policies"===this.setting.key&&"string"==typeof this.data[this.setting.key]?[this.data[this.setting.key]]:this.data[this.setting.key]},isMobile:function(){return"mobile"===this.$store.state.app.device}},methods:{options:function(t){var e=this,i={":policies":"Pleroma.Web.ActivityPub.MRF.","Pleroma.Web.Auth.Authenticator":"Pleroma.Web.Auth.",":method":"Pleroma.Captcha.",":adapter":"Swoosh.Adapters.",":providers":"Pleroma.Web.Metadata.Providers.",":parsers":"Pleroma.Web.RichMedia.Parsers.",":ttl_setters":"Pleroma.Web.RichMedia.Parser.",":scrub_policy":"Pleroma.HTML.",":federation_publisher_modules":"Pleroma.Web.",":uploader":"Pleroma.Uploaders.",":filters":"Pleroma.Upload.Filter."};return t.map(function(t){return{value:t,label:t.split(i[e.setting.key])[1]?t.split(i[e.setting.key])[1]:t}})},renderMultipleSelect:function(t){return Array.isArray(t)&&":backends"!==this.setting.key&&":args"!==this.setting.key&&(t.includes("module")||t.includes("list")&&t.includes("string")||t.includes("list")&&t.includes("atom")||t.includes("regex")&&t.includes("string")||":args"===this.setting.key)},updateSetting:function(t,e,i,n,s){var a=Object(m.b)(t);this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:a,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:a})}}},et=(i("3IoU"),Object(f.a)(tt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"input"},[t.renderMultipleSelect(t.setting.type)?i("el-select",{staticClass:"input",attrs:{value:t.inputValue,"data-search":t.setting.key,multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}},t._l(t.options(t.setting.suggestions),function(t,e){return i("el-option",{key:e,attrs:{value:t.value,label:t.label}})}),1):t._e(),t._v(" "),"module"===t.setting.type||t.setting.type.includes("atom")&&t.setting.type.includes("dropdown")?i("el-select",{staticClass:"input",attrs:{value:!1===t.inputValue?"false":t.inputValue,"data-search":t.setting.key||t.setting.group,clearable:""},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}},t._l(t.options(t.setting.suggestions),function(t,e){return i("el-option",{key:e,attrs:{value:t.value,label:t.label}})}),1):t._e()],1)},[],!1,null,null,null));et.options.__file="SelectInputWithReducedLabels.vue";var it=et.exports,nt={name:"SenderInput",props:{data:{type:[Object,Array],default:function(){return{}}},parents:{type:Array,default:function(){return[]},required:!1},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},settings:function(){return this.$store.state.settings.settings},updatedSettings:function(){return this.$store.state.settings.updatedSettings},sender:function(){return 0===Object.keys(this.data).length?{email:null,nickname:null}:this.data}},methods:{updateSender:function(t,e){var i;i="email"===e?u()({},this.sender,{email:t}):u()({},this.sender,{nickname:t}),this.updateSetting(i,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},updateSetting:function(t,e,i,n,s){var a=t.nickname?[t.nickname,t.email]:t.email;if(this.parents.length>0){var r=Object(m.e)(t,a,e,i,this.parents.reverse(),this.settings,this.updatedSettings),o=r.valueForState,l=r.valueForUpdatedSettings,u=r.setting;this.$store.dispatch("UpdateSettings",{group:e,key:i,input:u.key,value:l,type:u.type}),this.$store.dispatch("UpdateState",{group:e,key:i,input:u.key,value:o})}else this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:a,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t})}}},st=(i("OQQp"),Object(f.a)(nt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"sender-input",attrs:{"data-search":t.setting.key||t.setting.group}},[i("el-input",{staticClass:"email-address-input",attrs:{value:t.sender.email,placeholder:"email address"},on:{input:function(e){return t.updateSender(e,"email")}}}),t._v(" "),i("el-input",{staticClass:"nickname-input",attrs:{value:t.sender.nickname,placeholder:"nickname"},on:{input:function(e){return t.updateSender(e,"nickname")}}})],1)},[],!1,null,null,null));st.options.__file="SenderInput.vue";var at=st.exports,rt={name:"SpecificMultipleSelect",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},methods:{updateSetting:function(t,e,i,n,s){this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:t,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t})}}},ot=(i("UqcT"),Object(f.a)(rt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"multiple-select-container"},[":backends"===t.setting.key?i("el-select",{staticClass:"input",attrs:{value:t.data.value,"data-search":t.setting.key||t.setting.group,multiple:""},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}},[i("el-option",{attrs:{value:":console",label:"console"}}),t._v(" "),i("el-option",{attrs:{value:":ex_syslogger",label:"ExSyslogger"}}),t._v(" "),i("el-option",{attrs:{value:"Quack.Logger",label:"Quack.Logger"}})],1):t._e(),t._v(" "),":args"===t.setting.key?i("el-select",{staticClass:"input",attrs:{value:t.data[t.setting.key],"data-search":t.setting.key||t.setting.group,multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}},[i("el-option",{attrs:{value:"strip"}}),t._v(" "),i("el-option",{attrs:{value:"auto-orient"}}),t._v(" "),i("el-option",{attrs:{value:'{"implode", "1"}'}})],1):t._e()],1)},[],!1,null,null,null));ot.options.__file="SpecificMultipleSelect.vue";var lt=ot.exports,ut=i("4MG8"),ct=i.n(ut),pt={name:"Inputs",components:{EditableKeywordInput:y,IconsInput:S,ImageUploadInput:j,LinkFormatterInput:T,MascotsInput:R,ProxyUrlInput:z,PruneInput:B,RateLimitInput:J,RegInvitesInput:Z,SelectInputWithReducedLabels:it,SenderInput:at,SpecificMultipleSelect:lt},props:{customLabelWidth:{type:String,default:function(){return this.labelWidth},required:!1},data:{type:[Object,Array],default:function(){return{}}},labelClass:{type:String,default:function(){return"label"},required:!1},margin:{type:Number,default:function(){return 0},required:!1},nested:{type:Boolean,default:function(){return!1}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}},settingParent:{type:Array,default:function(){return[]},required:!1}},computed:{booleanCombinedInput:function(){return Array.isArray(this.setting.type)&&this.setting.type.includes("boolean")},canBeDeleted:function(){var t=this.settingGroup,e=t.group,i=t.key;return D.a.get(this.$store.state.settings.db,[e,i])&&this.$store.state.settings.db[e][i].includes(this.setting.key)},iconsData:function(){return Array.isArray(this.data)?this.data:[]},inputValue:function(){return[":esshd",":cors_plug",":quack",":tesla",":swoosh"].includes(this.settingGroup.group)&&this.data[this.setting.key]?"atom"===this.setting.type&&":"===this.data[this.setting.key].value[0]?this.data[this.setting.key].value.substr(1):this.data[this.setting.key].value:":logger"===this.settingGroup.group&&":backends"===this.setting.key||"Pleroma.Web.Auth.Authenticator"===this.setting.key||":admin_token"===this.setting.key?this.data.value:":mime"===this.settingGroup.group&&":types"===this.settingParent[0].key?this.data.value?this.data.value[this.setting.key]:[]:"atom"===this.setting.type?this.data[this.setting.key]&&":"===this.data[this.setting.key][0]?this.data[this.setting.key].substr(1):this.data[this.setting.key]:Array.isArray(this.setting.type)&&this.setting.type.find(function(t){return Array.isArray(t)&&t.includes("list")})&&"string"==typeof this.data[this.setting.key]?[this.data[this.setting.key]]:this.data[this.setting.key]},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},keywordData:function(){return this.settingParent.length>0||Array.isArray(this.setting.type)&&this.setting.type.includes("tuple")&&this.setting.type.includes("list")?Array.isArray(this.data[this.setting.key])?this.data[this.setting.key]:[]:Array.isArray(this.data)?this.data:[]},reducedSelects:function(){return[":filters",":uploader",":federation_publisher_modules",":scrub_policy",":ttl_setters",":parsers",":providers",":method",":policies","Pleroma.Web.Auth.Authenticator"].includes(this.setting.key)||"Pleroma.Emails.Mailer"===this.settingGroup.key&&":adapter"===this.setting.key},settings:function(){return this.$store.state.settings.settings},updatedSettings:function(){return this.$store.state.settings.updatedSettings},isImageUrl:function(){return Array.isArray(this.setting.type)&&this.setting.type.includes("image")}},methods:{editableKeyword:function(t,e){return Array.isArray(e)&&(e.includes("map")&&e.includes("string")||e.includes("map")&&-1!==e.findIndex(function(t){return t.includes("list")&&t.includes("string")})||e.includes("keyword")&&e.includes("integer")||e.includes("keyword")&&e.includes("string")||e.includes("tuple")&&e.includes("list")||e.includes("keyword")&&-1!==e.findIndex(function(t){return t.includes("list")&&t.includes("string")}))},getFormattedDescription:function(t){return ct()(t)},processNestedData:function(t,e,i,n){var s=Object(m.e)(t,t,e,i,n.reverse(),this.settings,this.updatedSettings),a=s.valueForState,r=s.valueForUpdatedSettings,o=s.setting;this.$store.dispatch("UpdateSettings",{group:e,key:i,input:o.key,value:r,type:o.type}),this.$store.dispatch("UpdateState",{group:e,key:i,input:o.key,value:a})},removeSetting:function(){var t=r()(s.a.mark(function t(){var e=this;return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:this.$confirm(this.$t("settings.removeSettingConfirmation"),{confirmButtonText:this.$t("users.ok"),cancelButtonText:this.$t("users.cancel"),type:"warning"}).then(r()(s.a.mark(function t(){var i;return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return i=e.settingGroup.key?[{group:e.settingGroup.group,key:e.settingGroup.key,delete:!0,subkeys:[e.setting.key]}]:[{group:e.settingGroup.group,key:e.setting.key,delete:!0}],t.prev=1,t.next=4,e.$store.dispatch("RemoveSetting",i);case 4:t.next=9;break;case 6:return t.prev=6,t.t0=t.catch(1),t.abrupt("return");case 9:e.$message({type:"success",message:o.a.t("settings.successfullyRemoved")});case 10:case"end":return t.stop()}},t,null,[[1,6]])}))).catch(function(){e.$message({type:"info",message:e.$t("users.canceled")})});case 1:case"end":return t.stop()}},t,this)}));return function(){return t.apply(this,arguments)}}(),renderMultipleSelect:function(t){return!this.reducedSelects&&Array.isArray(t)&&":backends"!==this.setting.key&&":args"!==this.setting.key&&(t.includes("module")||t.includes("list")&&t.includes("string")||t.includes("list")&&t.includes("atom")||!t.includes("keyword")&&t.includes("regex")&&t.includes("string"))},renderSingleSelect:function(t){return!this.reducedSelects&&("module"===t||t.includes("atom")&&t.includes("dropdown"))},senderInput:function(t){var e=t.key,i=t.type;return Array.isArray(i)&&i.includes("string")&&i.includes("tuple")&&":sender"===e},update:function(t,e,i,n,s,a,r){var o=this.renderSingleSelect(a)?Object(m.b)(t):t;r?this.processNestedData(o,e,i,n):this.updateSetting(o,e,i,s,a)},updateSetting:function(t,e,i,n,s){this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:t,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t})}}},dt=(i("y7KD"),Object(f.a)(pt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"input-container"},["keyword"===t.setting.type?i("div",{staticClass:"keyword-container"},[i("el-form-item",{class:t.labelClass,style:"margin-left:"+t.margin+"px;margin-bottom:0",attrs:{"label-width":t.customLabelWidth,"data-search":t.setting.key||t.setting.group}},[i("span",{attrs:{slot:"label"},slot:"label"},[t._v("\n "+t._s(t.setting.label)+"\n "),t.canBeDeleted&&t.isDesktop?i("el-tooltip",{attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticClass:"delete-setting-button",attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:t.removeSetting}})],1):t._e()],1)]),t._v(" "),t._l(t.setting.children,function(e){return i("el-form-item",{key:e.key},[i("inputs",{attrs:{"setting-group":t.settingGroup,"setting-parent":t.settingParent.concat([e]),setting:e,data:t.data[t.setting.key],"custom-label-width":t.isMobile?"100px":"120px","label-class":"keyword"===e.type?"center-label":"",margin:t.isDesktop?t.margin+15:t.margin+8,nested:!0}})],1)})],2):t._e(),t._v(" "),"keyword"!==t.setting.type?i("el-form-item",{class:t.labelClass,style:t.isDesktop?"":"margin-left:"+t.margin+"px",attrs:{"label-width":t.customLabelWidth}},[i("span",{attrs:{slot:"label"},slot:"label"},[t._v("\n "+t._s(t.setting.label)+"\n "),t.canBeDeleted&&(t.isDesktop||t.isMobile)?i("el-tooltip",{attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticClass:"delete-setting-button",attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:t.removeSetting}})],1):t._e()],1),t._v(" "),i("div",{staticClass:"input-row"},[t.isImageUrl?i("image-upload-input",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting,"input-value":t.inputValue},on:{change:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}}):"string"===t.setting.type||t.setting.type.includes("string")&&t.setting.type.includes("atom")?i("el-input",{staticClass:"input",attrs:{value:t.inputValue,placeholder:t.setting.suggestions?t.setting.suggestions[0]:null,"data-search":t.setting.key||t.setting.group},on:{input:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}}):t._e(),t._v(" "),"boolean"!==t.setting.type||[":registrations_open",":invites_enabled"].includes(t.setting.key)?t._e():i("el-switch",{staticClass:"switch-input",attrs:{value:t.inputValue,"data-search":t.setting.key||t.setting.group},on:{change:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}}),t._v(" "),"integer"===t.setting.type?i("el-input-number",{attrs:{value:null===t.inputValue?void 0:t.inputValue,placeholder:t.setting.suggestions?t.setting.suggestions[0].toString():null,min:0,size:t.isDesktop?"large":"medium","data-search":t.setting.key||t.setting.group},on:{change:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}}):t._e(),t._v(" "),t.renderSingleSelect(t.setting.type)?i("el-select",{staticClass:"input",attrs:{value:!1===t.inputValue?"false":t.inputValue,"data-search":t.setting.key||t.setting.group,clearable:""},on:{change:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}},t._l(t.setting.suggestions,function(t,e){return i("el-option",{key:e,attrs:{value:t}})}),1):t._e(),t._v(" "),t.renderMultipleSelect(t.setting.type)?i("el-select",{staticClass:"input",attrs:{value:t.inputValue,"data-search":t.setting.key||t.setting.group,multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}},t._l(t.setting.suggestions,function(t,e){return i("el-option",{key:e,attrs:{value:t}})}),1):t._e(),t._v(" "),":ip"===t.setting.key?i("el-input",{staticClass:"input",attrs:{value:t.inputValue,"data-search":t.setting.key||t.setting.group,placeholder:"xxx.xxx.xxx.xx"},on:{input:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}}):t._e(),t._v(" "),"atom"===t.setting.type?i("el-input",{staticClass:"input",attrs:{value:t.inputValue,placeholder:t.setting.suggestions&&t.setting.suggestions[0]?t.setting.suggestions[0].substr(1):"","data-search":t.setting.key||t.setting.group},on:{input:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}},[i("template",{slot:"prepend"},[t._v(":")])],2):t._e(),t._v(" "),t.editableKeyword(t.setting.key,t.setting.type)?i("editable-keyword-input",{attrs:{data:t.keywordData,"setting-group":t.settingGroup,setting:t.setting,parents:t.settingParent}}):t._e(),t._v(" "),":icons"===t.setting.key?i("icons-input",{attrs:{data:t.iconsData,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),t.booleanCombinedInput?i("link-formatter-input",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":mascots"===t.setting.key?i("mascots-input",{attrs:{data:t.keywordData,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":proxy_url"===t.setting.key?i("proxy-url-input",{attrs:{data:t.data[t.setting.key],"setting-group":t.settingGroup,setting:t.setting,parents:t.settingParent}}):t._e(),t._v(" "),":prune"===t.setting.key?i("prune-input",{attrs:{data:t.data[t.setting.key],"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":rate_limit"===t.settingGroup.key?i("rate-limit-input",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),[":registrations_open",":invites_enabled"].includes(t.setting.key)?i("reg-invites-input",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),t.reducedSelects?i("select-input-with-reduced-labels",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":backends"===t.setting.key||":args"===t.setting.key?i("specific-multiple-select",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),t.senderInput(t.setting)?i("sender-input",{attrs:{data:t.data[t.setting.key],"setting-group":t.settingGroup,setting:t.setting,parents:t.settingParent}}):t._e(),t._v(" "),t.canBeDeleted&&t.isTablet?i("el-tooltip",{staticClass:"delete-setting-button-container",attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticClass:"delete-setting-button",attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:t.removeSetting}})],1):t._e()],1),t._v(" "),t.setting.description&&"keyword"!==t.setting.type?i("div",{staticClass:"expl",domProps:{innerHTML:t._s(t.getFormattedDescription(t.setting.description))}}):t._e()]):t._e()],1)},[],!1,null,null,null));dt.options.__file="Inputs.vue";var gt={name:"Setting",components:{Inputs:dt.exports},props:{settingGroup:{type:Object,default:function(){return{}}},data:{type:Object,default:function(){return{}}}},computed:{emailAdapterChildren:function(){var t=this.$store.state.settings.settings[":pleroma"]["Pleroma.Emails.Mailer"][":adapter"];return this.settingGroup.children.filter(function(e){return e.group&&e.group.includes(t)})},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},loading:function(){return this.$store.state.settings.loading}},methods:{canBeDeleted:function(t){var e=this.settingGroup,i=e.group,n=e.key||t;return D.a.get(this.$store.state.settings.db,[i,n])&&this.$store.state.settings.db[i][n].includes(t)},compound:function(t){var e=t.type;t.key,t.children;return"keyword"===e||"map"===e||e.includes("keyword")||e.includes("map")},divideSetting:function(t){return[":sslopts",":tlsopts",":adapter",":poll_limits",":queues",":styling",":invalidation",":multi_factor_authentication"].includes(t)},getFormattedDescription:function(t){return ct()(t)},notLastInGroup:function(t){return this.settingGroup.children.slice(-1)[0].key!==t},removeSetting:function(){var t=r()(s.a.mark(function t(e){var i=this;return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:this.$confirm(this.$t("settings.removeSettingConfirmation"),{confirmButtonText:this.$t("users.ok"),cancelButtonText:this.$t("users.cancel"),type:"warning"}).then(r()(s.a.mark(function t(){var n;return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=i.settingGroup.key?[{group:i.settingGroup.group,key:i.settingGroup.key,delete:!0,subkeys:[e]}]:[{group:i.settingGroup.group,key:e,delete:!0}],t.prev=1,t.next=4,i.$store.dispatch("RemoveSetting",n);case 4:t.next=9;break;case 6:return t.prev=6,t.t0=t.catch(1),t.abrupt("return");case 9:i.$message({type:"success",message:o.a.t("settings.successfullyRemoved")});case 10:case"end":return t.stop()}},t,null,[[1,6]])}))).catch(function(){i.$message({type:"info",message:i.$t("users.canceled")})});case 1:case"end":return t.stop()}},t,this)}));return function(e){return t.apply(this,arguments)}}(),updateSetting:function(t,e,i){this.$store.dispatch("UpdateSettings",{tab:e,data:d()({},i,t)})}}},ht=(i("pnah"),Object(f.a)(gt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",[t.settingGroup.label||t.settingGroup.description?i("el-form-item",{staticClass:"description-container",attrs:{"data-search":t.settingGroup.key||t.settingGroup.group}},[t.settingGroup.label?i("span",{staticClass:"setting-label"},[t._v(t._s(t.settingGroup.label))]):t._e(),t._v(" "),t.settingGroup.description?i("span",{staticClass:"expl no-top-margin",domProps:{innerHTML:t._s(t.getFormattedDescription(t.settingGroup.description))}}):t._e()]):t._e(),t._v(" "),"Pleroma.Emails.Mailer"===t.settingGroup.key?i("div",[t._l(t.settingGroup.children.filter(function(t){return!t.group}),function(e){return i("div",{key:e.key},[i("inputs",{attrs:{"setting-group":t.settingGroup,setting:e,data:t.data}})],1)}),t._v(" "),t._l(t.emailAdapterChildren,function(e){return i("div",{key:e.key},[i("inputs",{attrs:{"setting-group":t.settingGroup,setting:e,data:t.data}})],1)})],2):i("div",t._l(t.settingGroup.children,function(e){return i("div",{key:e.key},[t.compound(e)?t._e():i("div",[i("inputs",{attrs:{"setting-group":t.settingGroup,setting:e,data:t.data,nested:!1}})],1),t._v(" "),t.compound(e)?i("div",[t.divideSetting(e.key)?i("el-divider",{staticClass:"divider"}):t._e(),t._v(" "),e.children?i("div",[i("div",{staticClass:"input-container"},[i("el-form-item",{staticClass:"grouped-settings-header",attrs:{"data-search":e.key||e.group}},[i("span",{attrs:{slot:"label"},slot:"label"},[t.isDesktop&&t.canBeDeleted(e.key)?i("el-tooltip",{attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticStyle:{"margin-left":"5px"},attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:function(i){return t.removeSetting(e.key)}}})],1):t._e()],1),t._v(" "),i("span",{staticClass:"label-font"},[t._v(t._s(e.label))]),t._v(" "),t.canBeDeleted(e.key)&&(t.isMobile||t.isTablet)?i("el-tooltip",{attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticClass:"settings-delete-button",attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:function(i){return t.removeSetting(e.key)}}})],1):t._e()],1)],1),t._v(" "),t._l(e.children,function(n){return i("div",{key:n.key},[i("inputs",{attrs:{"setting-group":t.settingGroup,"setting-parent":[e,n],setting:n,data:t.data[e.key],nested:!0}})],1)})],2):i("div",[i("inputs",{attrs:{"setting-group":t.settingGroup,setting:e,data:t.data[e.key],nested:!0}})],1),t._v(" "),t.notLastInGroup(e.key)?i("el-divider",{staticClass:"divider"}):t._e()],1):t._e()])}),0)],1)},[],!1,null,null,null));ht.options.__file="Setting.vue";var mt=ht.exports,bt={name:"ActivityPub",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{activitypub:function(){return this.settings.description.find(function(t){return":activitypub"===t.key})},activitypubData:function(){return D.a.get(this.settings.settings,[":pleroma",":activitypub"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.$store.state.settings.loading},user:function(){return this.settings.description.find(function(t){return":user"===t.key})},userData:function(){return D.a.get(this.settings.settings,[":pleroma",":user"])||{}}}),methods:{onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},ft=(i("qEST"),Object(f.a)(bt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{attrs:{model:t.activitypubData,"label-position":t.labelPosition,"label-width":t.labelWidth,"data-search":":activitypub"}},[i("setting",{attrs:{"setting-group":t.activitypub,data:t.activitypubData}})],1),t._v(" "),t.user?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.userData,"label-position":t.labelPosition,"label-width":t.labelWidth,"data-search":":user"}},[i("setting",{attrs:{"setting-group":t.user,data:t.userData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));ft.options.__file="ActivityPub.vue";var vt=ft.exports,yt={name:"Authentication",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{auth:function(){return this.settings.description.find(function(t){return":auth"===t.key})},authData:function(){return D.a.get(this.settings.settings,[":pleroma",":auth"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},ldap:function(){return this.settings.description.find(function(t){return":ldap"===t.key})},ldapData:function(){return D.a.get(this.settings.settings,[":pleroma",":ldap"])||{}},loading:function(){return this.settings.loading},oauth2:function(){return this.settings.description.find(function(t){return":oauth2"===t.key})},oauth2Data:function(){return D.a.get(this.settings.settings,[":pleroma",":oauth2"])||{}},pleromaAuthenticator:function(){return this.settings.description.find(function(t){return t.children&&"Pleroma.Web.Auth.Authenticator"===t.children[0].key})},pleromaAuthenticatorData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.Web.Auth.Authenticator"])||{}},restrictUnauthenticated:function(){return this.settings.description.find(function(t){return":restrict_unauthenticated"===t.key})},restrictUnauthenticatedData:function(){return D.a.get(this.settings.settings,[":pleroma",":restrict_unauthenticated"])||{}}}),methods:{onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},kt=(i("4b9x"),Object(f.a)(yt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{attrs:{model:t.pleromaAuthenticatorData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.pleromaAuthenticator,data:t.pleromaAuthenticatorData}})],1),t._v(" "),t.pleromaAuthenticator?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.authData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.auth,data:t.authData}})],1),t._v(" "),t.auth?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.ldapData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.ldap,data:t.ldapData}})],1),t._v(" "),t.ldap?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.oauth2Data,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.oauth2,data:t.oauth2Data}})],1),t._v(" "),t.oauth2?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.restrictUnauthenticatedData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.restrictUnauthenticated,data:t.restrictUnauthenticatedData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));kt.options.__file="Authentication.vue";var _t=kt.exports,St={name:"Captcha",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{captcha:function(){return this.settings.description.find(function(t){return"Pleroma.Captcha"===t.key})},captchaData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.Captcha"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},kocaptcha:function(){return this.settings.description.find(function(t){return"Pleroma.Captcha.Kocaptcha"===t.key})},kocaptchaData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.Captcha.Kocaptcha"])||{}},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading}}),methods:{onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},wt=(i("2q6O"),Object(f.a)(St,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{attrs:{model:t.captchaData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.captcha,data:t.captchaData}})],1),t._v(" "),t.captcha?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.kocaptchaData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.kocaptcha,data:t.kocaptchaData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));wt.options.__file="Captcha.vue";var Dt=wt.exports,Ct={name:"Esshd",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{esshd:function(){return this.settings.description.find(function(t){return":esshd"===t.group})},esshdData:function(){return D.a.get(this.settings.settings,[":esshd"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading}}),methods:{toggleEsshd:function(t){this.$store.dispatch("ToggleEsshd",t)},updateSetting:function(t,e,i){this.$store.dispatch("UpdateSettings",{tab:e,data:d()({},i,t)})},onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},xt=(i("FCne"),Object(f.a)(Ct,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{attrs:{model:t.esshdData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.esshd,data:t.esshdData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));xt.options.__file="Esshd.vue";var Pt=xt.exports,$t={name:"Frontend",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{assets:function(){return this.settings.description.find(function(t){return":assets"===t.key})},assetsData:function(){return D.a.get(this.settings.settings,[":pleroma",":assets"])||{}},chat:function(){return this.settings.description.find(function(t){return":chat"===t.key})},chatData:function(){return D.a.get(this.settings.settings,[":pleroma",":chat"])||{}},emoji:function(){return this.settings.description.find(function(t){return":emoji"===t.key})},emojiData:function(){return D.a.get(this.settings.settings,[":pleroma",":emoji"])||{}},frontend:function(){return this.settings.description.find(function(t){return":frontend_configurations"===t.key})},frontendData:function(){return D.a.get(this.settings.settings,[":pleroma",":frontend_configurations"])||{}},frontends:function(){return this.settings.description.find(function(t){return":frontends"===t.key})},frontendsData:function(){return D.a.get(this.settings.settings,[":pleroma",":frontends"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},markup:function(){return this.settings.description.find(function(t){return":markup"===t.key})},markupData:function(){return D.a.get(this.settings.settings,[":pleroma",":markup"])||{}},preload:function(){return this.settings.description.find(function(t){return"Pleroma.Web.Preload"===t.key})},preloadData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.Web.Preload"])||{}},staticFe:function(){return this.settings.description.find(function(t){return":static_fe"===t.key})},staticFeData:function(){return D.a.get(this.settings.settings,[":pleroma",":static_fe"])||{}}}),methods:{onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Ot=(i("hVXW"),Object(f.a)($t,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{attrs:{model:t.frontendData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.frontend,data:t.frontendData}})],1),t._v(" "),t.frontend?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.staticFeData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.staticFe,data:t.staticFeData}})],1),t._v(" "),t.staticFe?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.frontendsData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.frontends,data:t.frontendsData}})],1),t._v(" "),t.frontends?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.assetsData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.assets,data:t.assetsData}})],1),t._v(" "),t.assets?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.emojiData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.emoji,data:t.emojiData}})],1),t._v(" "),t.emoji?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.chatData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.chat,data:t.chatData}})],1),t._v(" "),t.chat?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.markupData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.markup,data:t.markupData}})],1),t._v(" "),t.preload?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.preloadData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.preload,data:t.preloadData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Ot.options.__file="Frontend.vue";var Ut=Ot.exports,jt={name:"Gopher",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{gopher:function(){return this.settings.description.find(function(t){return":gopher"===t.key})},gopherData:function(){return D.a.get(this.settings.settings,[":pleroma",":gopher"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading}}),methods:{onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},It=(i("w5cJ"),Object(f.a)(jt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[t.loading?t._e():i("el-form",{attrs:{model:t.gopherData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.gopher,data:t.gopherData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));It.options.__file="Gopher.vue";var Mt=It.exports,Tt={name:"HTTP",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{corsPlug:function(){return this.settings.description.find(function(t){return":cors_plug"===t.group})},corsPlugData:function(){return D.a.get(this.settings.settings,[":cors_plug"])||{}},http:function(){return this.settings.description.find(function(t){return":http"===t.key})},httpData:function(){return D.a.get(this.settings.settings,[":pleroma",":http"])||{}},httpSecurity:function(){return this.settings.description.find(function(t){return":http_security"===t.key})},httpSecurityData:function(){return D.a.get(this.settings.settings,[":pleroma",":http_security"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},webCacheTtl:function(){return this.settings.description.find(function(t){return":web_cache_ttl"===t.key})},webCacheTtlData:function(){return D.a.get(this.settings.settings,[":pleroma",":web_cache_ttl"])||{}}}),methods:{onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Wt=(i("KFE3"),Object(f.a)(Tt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{attrs:{model:t.httpData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.http,data:t.httpData}})],1),t._v(" "),t.http?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.corsPlugData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.corsPlug,data:t.corsPlugData}})],1),t._v(" "),t.corsPlug?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.httpSecurityData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.httpSecurity,data:t.httpSecurityData}})],1),t._v(" "),t.httpSecurity?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.webCacheTtlData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.webCacheTtl,data:t.webCacheTtlData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Wt.options.__file="Http.vue";var At=Wt.exports,Gt={name:"Instance",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{adminToken:function(){return this.settings.description.find(function(t){return t.children&&":admin_token"===t.children[0].key})},adminTokenData:function(){return D.a.get(this.settings.settings,[":pleroma",":admin_token"])||{}},favicons:function(){return this.settings.description.find(function(t){return":instances_favicons"===t.key})},faviconsData:function(){return D.a.get(this.settings.settings,[":pleroma",":instances_favicons"])||{}},feed:function(){return this.settings.description.find(function(t){return":feed"===t.key})},feedData:function(){return D.a.get(this.settings.settings,[":pleroma",":feed"])||{}},instance:function(){return this.settings.description.find(function(t){return":instance"===t.key})},instanceData:function(){return D.a.get(this.settings.settings,[":pleroma",":instance"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},manifest:function(){return this.settings.description.find(function(t){return":manifest"===t.key})},manifestData:function(){return D.a.get(this.settings.settings,[":pleroma",":manifest"])||{}},pleromaUser:function(){return this.settings.description.find(function(t){return"Pleroma.User"===t.key})},pleromaUserData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.User"])||{}},scheduledActivity:function(){return this.$store.state.settings.description.find(function(t){return"Pleroma.ScheduledActivity"===t.key})},scheduledActivityData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.ScheduledActivity"])||{}},streamer:function(){return this.$store.state.settings.description.find(function(t){return":streamer"===t.key})},streamerData:function(){return D.a.get(this.settings.settings,[":pleroma",":streamer"])||{}},uriSchemes:function(){return this.settings.description.find(function(t){return":uri_schemes"===t.key})},uriSchemesData:function(){return D.a.get(this.settings.settings,[":pleroma",":uri_schemes"])||{}},welcome:function(){return this.settings.description.find(function(t){return":welcome"===t.key})},welcomeData:function(){return D.a.get(this.settings.settings,[":pleroma",":welcome"])||{}}}),methods:{onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Lt=(i("e0P1"),Object(f.a)(Gt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{attrs:{model:t.instanceData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.instance,data:t.instanceData}})],1),t._v(" "),t.instance?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.adminTokenData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.adminToken,data:t.adminTokenData}})],1),t._v(" "),t.adminToken?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.welcomeData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.welcome,data:t.welcomeData}})],1),t._v(" "),t.welcome?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.scheduledActivityData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.scheduledActivity,data:t.scheduledActivityData}})],1),t._v(" "),t.scheduledActivity?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.manifestData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.manifest,data:t.manifestData}})],1),t._v(" "),t.manifest?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.pleromaUserData,"label-position":t.labelPosition,"label-width":t.labelWidth,"data-search":"Pleroma.User"}},[i("setting",{attrs:{"setting-group":t.pleromaUser,data:t.pleromaUserData}})],1),t._v(" "),t.pleromaUser?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.faviconsData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.favicons,data:t.faviconsData}})],1),t._v(" "),t.favicons?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.uriSchemesData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.uriSchemes,data:t.uriSchemesData}})],1),t._v(" "),t.uriSchemes?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.feedData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.feed,data:t.feedData}})],1),t._v(" "),t.feed?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.streamerData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.streamer,data:t.streamerData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Lt.options.__file="Instance.vue";var Et=Lt.exports,Ft={name:"JobQueue",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{activityExpiration:function(){return this.settings.description.find(function(t){return"Pleroma.ActivityExpiration"===t.key})},activityExpirationData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.ActivityExpiration"])||{}},connectionsPools:function(){return this.settings.description.find(function(t){return":connections_pool"===t.key})},connectionsPoolsData:function(){return D.a.get(this.settings.settings,[":pleroma",":connections_pool"])||{}},hackneyPools:function(){return this.settings.description.find(function(t){return":hackney_pools"===t.key})},hackneyPoolsData:function(){return D.a.get(this.settings.settings,[":pleroma",":hackney_pools"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},obanQueues:function(){return this.settings.description.find(function(t){return"Oban"===t.key})},obanQueuesData:function(){return D.a.get(this.settings.settings,[":pleroma","Oban"])||{}},pools:function(){return this.settings.description.find(function(t){return":pools"===t.key})},poolsData:function(){return D.a.get(this.settings.settings,[":pleroma",":pools"])||{}},workers:function(){return this.settings.description.find(function(t){return":workers"===t.key})},workersData:function(){return D.a.get(this.settings.settings,[":pleroma",":workers"])||{}}}),methods:{onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Rt=(i("lNpP"),Object(f.a)(Ft,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{attrs:{model:t.obanQueuesData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.obanQueues,data:t.obanQueuesData}})],1),t._v(" "),t.obanQueues?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.workersData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.workers,data:t.workersData}})],1),t._v(" "),t.workers?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.activityExpirationData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.activityExpiration,data:t.activityExpirationData}})],1),t._v(" "),t.activityExpiration?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.connectionsPoolsData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.connectionsPools,data:t.connectionsPoolsData}})],1),t._v(" "),t.connectionsPools?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.poolsData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.pools,data:t.poolsData}})],1),t._v(" "),t.pools?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.hackneyPoolsData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.hackneyPools,data:t.hackneyPoolsData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Rt.options.__file="JobQueue.vue";var Vt=Rt.exports,Kt={name:"LinkFormatter",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{linkFormatter:function(){return this.settings.description.find(function(t){return"Pleroma.Formatter"===t.key})},linkFormatterData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.Formatter"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading}}),methods:{onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},zt=(i("vnTa"),Object(f.a)(Kt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{attrs:{model:t.linkFormatterData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.linkFormatter,data:t.linkFormatterData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));zt.options.__file="LinkFormatter.vue";var qt=zt.exports,Nt={name:"Logger",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{console:function(){return this.settings.description.find(function(t){return":console"===t.key})},consoleData:function(){return D.a.get(this.settings.settings,[":logger",":console"])||{}},exsyslogger:function(){return this.settings.description.find(function(t){return":ex_syslogger"===t.key})},exsysloggerData:function(){return D.a.get(this.settings.settings,[":logger",":ex_syslogger"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},logger:function(){return this.settings.description.find(function(t){return":logger"===t.group})},loggerData:function(){return D.a.get(this.settings.settings,[":logger",":backends"])||{}},quack:function(){return this.settings.description.find(function(t){return":quack"===t.group})},quackData:function(){return D.a.get(this.settings.settings,[":quack"])||{}}}),methods:{onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Bt=(i("mADP"),Object(f.a)(Nt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{attrs:{model:t.loggerData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.logger,data:t.loggerData}})],1),t._v(" "),t.logger?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.consoleData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.console,data:t.consoleData}})],1),t._v(" "),t.console?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.exsysloggerData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.exsyslogger,data:t.exsysloggerData}})],1),t._v(" "),t.exsyslogger?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.quackData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.quack,data:t.quackData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Bt.options.__file="Logger.vue";var Qt=Bt.exports,Ht={name:"Mailer",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{emailNotifications:function(){return this.settings.description.find(function(t){return":email_notifications"===t.key})},emailNotificationsData:function(){return D.a.get(this.settings.settings,[":pleroma",":email_notifications"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.$store.state.settings.loading},mailer:function(){return this.settings.description.find(function(t){return"Pleroma.Emails.Mailer"===t.key})},mailerData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.Emails.Mailer"])||{}},newUsersDigestEmail:function(){return this.settings.description.find(function(t){return"Pleroma.Emails.NewUsersDigestEmail"===t.key})},newUsersDigestEmailData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.Emails.NewUsersDigestEmail"])||{}},swoosh:function(){return this.settings.description.find(function(t){return":swoosh"===t.group})},swooshData:function(){return D.a.get(this.settings.settings,[":swoosh"])||{}},userEmail:function(){return this.settings.description.find(function(t){return"Pleroma.Emails.UserEmail"===t.key})},userEmailData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.Emails.UserEmail"])||{}}}),methods:{onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Jt=(i("PygS"),Object(f.a)(Ht,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{attrs:{model:t.mailerData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mailer,data:t.mailerData}})],1),t._v(" "),t.mailer?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.swooshData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.swoosh,data:t.swooshData}})],1),t._v(" "),t.swoosh?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.emailNotificationsData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.emailNotifications,data:t.emailNotificationsData}})],1),t._v(" "),t.emailNotifications?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.userEmailData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.userEmail,data:t.userEmailData}})],1),t._v(" "),t.userEmail?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.newUsersDigestEmailData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.newUsersDigestEmail,data:t.newUsersDigestEmailData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Jt.options.__file="Mailer.vue";var Yt=Jt.exports,Xt={name:"MediaProxy",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{httpInvalidation:function(){return this.settings.description.find(function(t){return"Pleroma.Web.MediaProxy.Invalidation.Http"===t.key})},httpInvalidationData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.Web.MediaProxy.Invalidation.Http"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},mediaProxy:function(){return this.settings.description.find(function(t){return":media_proxy"===t.key})},mediaProxyData:function(){return D.a.get(this.settings.settings,[":pleroma",":media_proxy"])||{}},scriptInvalidation:function(){return this.settings.description.find(function(t){return"Pleroma.Web.MediaProxy.Invalidation.Script"===t.key})},scriptInvalidationData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.Web.MediaProxy.Invalidation.Script"])||{}}}),methods:{onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},Zt=(i("UdS4"),Object(f.a)(Xt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[t.loading?t._e():i("el-form",{attrs:{model:t.mediaProxyData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mediaProxy,data:t.mediaProxyData}})],1),t._v(" "),t.mediaProxy?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),t.loading?t._e():i("el-form",{attrs:{model:t.httpInvalidationData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.httpInvalidation,data:t.httpInvalidationData}})],1),t._v(" "),t.httpInvalidation?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),t.loading?t._e():i("el-form",{attrs:{model:t.scriptInvalidationData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.scriptInvalidation,data:t.scriptInvalidationData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Zt.options.__file="MediaProxy.vue";var te=Zt.exports,ee={name:"Metadata",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},metadata:function(){return this.settings.description.find(function(t){return"Pleroma.Web.Metadata"===t.key})},metadataData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.Web.Metadata"])||{}},richMedia:function(){return this.settings.description.find(function(t){return":rich_media"===t.key})},richMediaData:function(){return D.a.get(this.settings.settings,[":pleroma",":rich_media"])||{}}}),methods:{onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},ie=(i("apN7"),Object(f.a)(ee,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{attrs:{model:t.metadataData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.metadata,data:t.metadataData}})],1),t._v(" "),t.metadata?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.richMediaData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.richMedia,data:t.richMediaData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));ie.options.__file="Metadata.vue";var ne=ie.exports,se={name:"MRF",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},mrfSettings:function(){return this.settings.description.filter(function(t){return"mrf"===t.tab})}}),methods:{getSettingData:function(t){return D.a.get(this.settings.settings,[t.group,t.key])||{}},onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}(),showMrfPolicy:function(t){var e=D.a.get(this.settings.settings,[":pleroma",":mrf",":policies"]),i=this.mrfSettings.reduce(function(t,e){var i=e.key,n=e.related_policy;return":mrf"!==i&&(t[i]=n),t},{});return!Object.keys(i).includes(t)||e.includes(i[t])}}},ae=(i("h9z7"),Object(f.a)(se,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[t._l(t.mrfSettings,function(e){return i("div",{key:e.key},[t.showMrfPolicy(e.key)?i("el-form",{attrs:{model:t.getSettingData(e),"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":e,data:t.getSettingData(e)}}),t._v(" "),e?i("el-divider",{staticClass:"divider thick-line"}):t._e()],1):t._e()],1)}),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],2)},[],!1,null,null,null));ae.options.__file="MRF.vue";var re=ae.exports,oe={name:"Other",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{castAndValidate:function(){return this.settings.description.find(function(t){return"Pleroma.Web.ApiSpec.CastAndValidate"===t.key})},castAndValidateData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.Web.ApiSpec.CastAndValidate"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},mimeTypes:function(){return this.settings.description.find(function(t){return":mime"===t.group})},mimeTypesData:function(){return D.a.get(this.settings.settings,[":mime"])||{}},modules:function(){return this.settings.description.find(function(t){return":modules"===t.key})},modulesData:function(){return D.a.get(this.settings.settings,[":pleroma",":modules"])||{}},remoteIp:function(){return this.settings.description.find(function(t){return"Pleroma.Plugs.RemoteIp"===t.key})},remoteIpData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.Plugs.RemoteIp"])||{}}}),methods:{onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},le=(i("gFOO"),Object(f.a)(oe,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{attrs:{model:t.mimeTypesData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.mimeTypes,data:t.mimeTypesData}})],1),t._v(" "),t.mimeTypes?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.remoteIpData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.remoteIp,data:t.remoteIpData}})],1),t._v(" "),t.remoteIpData?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.modulesData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.modules,data:t.modulesData}})],1),t._v(" "),t.castAndValidate?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.castAndValidateData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.castAndValidate,data:t.castAndValidateData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));le.options.__file="Other.vue";var ue=le.exports,ce={name:"RateLimiters",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{rateLimiters:function(){return this.settings.description.find(function(t){return":rate_limit"===t.key})},rateLimitersData:function(){return D.a.get(this.settings.settings,[":pleroma",":rate_limit"])||{}},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.$store.state.settings.loading}}),methods:{onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},pe=(i("WvM+"),Object(f.a)(ce,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[t.loading?t._e():i("el-form",{attrs:{model:t.rateLimitersData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.rateLimiters,data:t.rateLimitersData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));pe.options.__file="RateLimiters.vue";var de=pe.exports,ge={name:"Relays",data:function(){return{newRelay:""}},computed:{getLabelWidth:function(){return this.isDesktop?"130px":"85px"},isDesktop:function(){return"desktop"===this.$store.state.app.device},loading:function(){return this.$store.state.relays.loading},relays:function(){return this.$store.state.relays.fetchedRelays}},mounted:function(){this.$store.dispatch("FetchRelays")},methods:{followRelay:function(){this.$store.dispatch("AddRelay",this.newRelay),this.newRelay=""},deleteRelay:function(t){this.$store.dispatch("DeleteRelay",t)}}},he=(i("J7+w"),Object(f.a)(ge,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"relays-container"},[i("div",{staticClass:"follow-relay-container"},[i("el-input",{staticClass:"follow-relay",attrs:{placeholder:t.$t("settings.followRelay")},nativeOn:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.followRelay(e)}},model:{value:t.newRelay,callback:function(e){t.newRelay=e},expression:"newRelay"}}),t._v(" "),i("el-button",{nativeOn:{click:function(e){return t.followRelay(e)}}},[t._v(t._s(t.$t("settings.follow")))])],1),t._v(" "),i("el-table",{attrs:{data:t.relays}},[i("el-table-column",{attrs:{label:t.$t("settings.instanceUrl"),prop:"actor"}}),t._v(" "),i("el-table-column",{attrs:{label:t.$t("settings.followedBack"),width:t.getLabelWidth,prop:"followed_back",align:"center"},scopedSlots:t._u([{key:"default",fn:function(t){return[i("i",{class:t.row.followed_back?"el-icon-check":"el-icon-minus"})]}}],null,!1,237257305)}),t._v(" "),i("el-table-column",{attrs:{label:t.$t("table.actions"),width:t.getLabelWidth,fixed:"right",align:"center"},scopedSlots:t._u([{key:"default",fn:function(e){return[i("el-button",{attrs:{type:"text",size:"small"},nativeOn:{click:function(i){return t.deleteRelay(e.row.actor)}}},[t._v("\n "+t._s(t.$t("table.unfollow"))+"\n ")])]}}],null,!1,877363589)})],1)],1)},[],!1,null,null,null));he.options.__file="Relays.vue";var me=he.exports,be={name:"Upload",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},s3:function(){return this.settings.description.find(function(t){return":s3"===t.key})},s3Data:function(){return D.a.get(this.settings.settings,[":ex_aws",":s3"])||{}},showUploadersS3:function(){return"Pleroma.Uploaders.S3"===D.a.get(this.settings.settings,[":pleroma","Pleroma.Upload",":uploader"])},showUploadersLocal:function(){return"Pleroma.Uploaders.Local"===D.a.get(this.settings.settings,[":pleroma","Pleroma.Upload",":uploader"])},upload:function(){return this.settings.description.find(function(t){return"Pleroma.Upload"===t.key})},uploadData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.Upload"])||{}},uploadersLocal:function(){return this.settings.description.find(function(t){return"Pleroma.Uploaders.Local"===t.key})},uploadersLocalData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.Uploaders.Local"])||{}},uploadersS3:function(){return this.settings.description.find(function(t){return"Pleroma.Uploaders.S3"===t.key})},uploadersS3Data:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.Uploaders.S3"])||{}},uploadFilterMogrify:function(){return this.settings.description.find(function(t){return"Pleroma.Upload.Filter.Mogrify"===t.key})},uploadFilterMogrifyData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.Upload.Filter.Mogrify"])||{}},uploadAnonymizeFilename:function(){return this.settings.description.find(function(t){return"Pleroma.Upload.Filter.AnonymizeFilename"===t.key})},uploadAnonymizeFilenameData:function(){return D.a.get(this.settings.settings,[":pleroma","Pleroma.Upload.Filter.AnonymizeFilename"])||{}}}),methods:{onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},fe=(i("DPt0"),Object(f.a)(be,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[i("el-form",{attrs:{model:t.uploadData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.upload,data:t.uploadData}})],1),t._v(" "),t.upload?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),t.showUploadersLocal?i("el-form",{attrs:{model:t.uploadersLocalData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.uploadersLocal,data:t.uploadersLocalData}}),t._v(" "),t.uploadersLocal?i("el-divider",{staticClass:"divider thick-line"}):t._e()],1):t._e(),t._v(" "),t.showUploadersS3?i("el-form",{attrs:{model:t.s3Data,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.s3,data:t.s3Data}}),t._v(" "),t.s3?i("el-divider",{staticClass:"divider thick-line"}):t._e()],1):t._e(),t._v(" "),t.showUploadersS3?i("el-form",{attrs:{model:t.uploadersS3Data,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.uploadersS3,data:t.uploadersS3Data}}),t._v(" "),t.uploadersS3?i("el-divider",{staticClass:"divider thick-line"}):t._e()],1):t._e(),t._v(" "),i("el-form",{attrs:{model:t.uploadFilterMogrifyData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.uploadFilterMogrify,data:t.uploadFilterMogrifyData}})],1),t._v(" "),t.uploadFilterMogrify?i("el-divider",{staticClass:"divider thick-line"}):t._e(),t._v(" "),i("el-form",{attrs:{model:t.uploadAnonymizeFilenameData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.uploadAnonymizeFilename,data:t.uploadAnonymizeFilenameData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));fe.options.__file="Upload.vue";var ve=fe.exports,ye={name:"WebPush",components:{Setting:mt},computed:u()({},Object(c.b)(["settings"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"sidebar-opened":"sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},loading:function(){return this.settings.loading},vapidDetails:function(){return this.settings.description.find(function(t){return":vapid_details"===t.key})},vapidDetailsData:function(){return D.a.get(this.settings.settings,[":web_push_encryption",":vapid_details"])||{}}}),methods:{onSubmit:function(){var t=r()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("SubmitChanges");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:o.a.t("settings.success")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},ke=(i("+qaP"),Object(f.a)(ye,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",{staticClass:"form-container",class:t.isSidebarOpen},[t.loading?t._e():i("el-form",{attrs:{model:t.vapidDetailsData,"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("setting",{attrs:{"setting-group":t.vapidDetails,data:t.vapidDetailsData}})],1),t._v(" "),i("div",{staticClass:"submit-button-container"},[i("el-button",{staticClass:"submit-button",attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));ke.options.__file="WebPush.vue";var _e=ke.exports,Se={components:{ActivityPub:vt,Authentication:_t,Captcha:Dt,Esshd:Pt,Frontend:Ut,Gopher:Mt,Http:At,Instance:Et,JobQueue:Vt,LinkFormatter:qt,Logger:Qt,Mailer:Yt,MediaProxy:te,Metadata:ne,Mrf:re,Other:ue,RateLimiters:de,Relays:me,RebootButton:i("rIUS").a,Upload:ve,WebPush:_e},data:function(){return{options:[{value:"activityPub",label:o.a.t("settings.activityPub")},{value:"auth",label:o.a.t("settings.auth")},{value:"linkFormatter",label:o.a.t("settings.linkFormatter")},{value:"esshd",label:o.a.t("settings.esshd")},{value:"captcha",label:o.a.t("settings.captcha")},{value:"frontend",label:o.a.t("settings.frontend")},{value:"gopher",label:o.a.t("settings.gopher")},{value:"http",label:o.a.t("settings.http")},{value:"instance",label:o.a.t("settings.instance")},{value:"jobQueue",label:o.a.t("settings.jobQueue")},{value:"logger",label:o.a.t("settings.logger")},{value:"mailer",label:o.a.t("settings.mailer")},{value:"mediaProxy",label:o.a.t("settings.mediaProxy")},{value:"metadata",label:o.a.t("settings.metadata")},{value:"mrf",label:o.a.t("settings.mrf")},{value:"rateLimiters",label:o.a.t("settings.rateLimiters")},{value:"relays",label:o.a.t("settings.relays")},{value:"webPush",label:o.a.t("settings.webPush")},{value:"upload",label:o.a.t("settings.upload")},{value:"other",label:o.a.t("settings.other")}],searchQuery:""}},computed:{activeTab:{get:function(){return this.$store.state.settings.activeTab},set:function(t){this.$store.dispatch("SetActiveTab",t)}},configDisabled:function(){return this.$store.state.settings.configDisabled},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"header-sidebar-opened":"header-sidebar-closed"},isTablet:function(){return"tablet"===this.$store.state.app.device},rebootIsSidebarOpen:function(){return this.$store.state.app.sidebar.opened?"reboot-sidebar-opened":"reboot-sidebar-closed"},searchData:function(){return this.$store.state.settings.searchData},tabs:function(){return function(t){return{"activity-pub":{label:"settings.activityPub",settings:[":activitypub",":user"]},authentication:{label:"settings.auth",settings:[":auth",":ldap",":oauth2","Pleroma.Web.Auth.Authenticator",":restrict_unauthenticated"]},esshd:{label:"settings.esshd",settings:[":esshd"]},captcha:{label:"settings.captcha",settings:["Pleroma.Captcha","Pleroma.Captcha.Kocaptcha"]},frontend:{label:"settings.frontend",settings:[":assets",":chat",":frontends",":emoji",":frontend_configurations",":markup",":static_fe"]},gopher:{label:"settings.gopher",settings:[":gopher"]},http:{label:"settings.http",settings:[":cors_plug",":http",":http_security",":web_cache_ttl"]},instance:{label:"settings.instance",settings:[":admin_token",":instance",":instances_favicons",":welcome",":manifest","Pleroma.User","Pleroma.ScheduledActivity",":uri_schemes",":feed",":streamer"]},"job-queue":{label:"settings.jobQueue",settings:["Pleroma.ActivityExpiration",":connections_pool",":hackney_pools","Oban",":pools",":workers"]},"link-formatter":{label:"settings.linkFormatter",settings:["Pleroma.Formatter"]},logger:{label:"settings.logger",settings:[":console",":ex_syslogger",":quack",":logger"]},mailer:{label:"settings.mailer",settings:[":email_notifications","Pleroma.Emails.Mailer","Pleroma.Emails.UserEmail",":swoosh","Pleroma.Emails.NewUsersDigestEmail"]},"media-proxy":{label:"settings.mediaProxy",settings:[":media_proxy","Pleroma.Web.MediaProxy.Invalidation.Http","Pleroma.Web.MediaProxy.Invalidation.Script"]},metadata:{label:"settings.metadata",settings:["Pleroma.Web.Metadata",":rich_media"]},mrf:{label:"settings.mrf",settings:t.filter(function(t){return"mrf"===t.tab}).map(function(t){return t.key})},"rate-limiters":{label:"settings.rateLimiters",settings:[":rate_limit"]},relays:{label:"settings.relays",settings:["relays"]},"web-push":{label:"settings.webPush",settings:[":vapid_details"]},upload:{label:"settings.upload",settings:["Pleroma.Upload.Filter.AnonymizeFilename","Pleroma.Upload.Filter.Mogrify","Pleroma.Uploaders.S3","Pleroma.Uploaders.Local","Pleroma.Upload",":s3"]},other:{label:"settings.other",settings:[":mime","Pleroma.Plugs.RemoteIp",":modules","Pleroma.Web.ApiSpec.CastAndValidate"]}}}(this.$store.state.settings.description)}},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchSettings")},methods:{handleSearchSelect:function(){var t=r()(s.a.mark(function t(e){var i,n,a=this;return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return i=Object.keys(this.tabs).find(function(t){return a.tabs[t].settings.includes(":pleroma"===e.group?e.key:e.group)}),t.next=3,this.$store.dispatch("SetActiveTab",i);case 3:(n=document.querySelector('[data-search="'.concat(e.key,'"]')))&&n.scrollIntoView({block:"start",behavior:"smooth"});case 5:case"end":return t.stop()}},t,this)}));return function(e){return t.apply(this,arguments)}}(),querySearch:function(t,e){e(this.searchData.filter(function(e){return e.search.find(function(e){return e.includes(t.toLowerCase())})}).map(function(t){return{value:"".concat(t.label," in ").concat(t.groupLabel),group:t.groupKey,key:t.key}}))},settingsCantBeChanged:function(t){var e=this;return 0===t.filter(function(t){return[":esshd",":cors_plug",":quack",":logger",":swoosh",":mime"].includes(t)?-1!==e.$store.state.settings.description.findIndex(function(e){return e.group===t}):"Pleroma.Web.Auth.Authenticator"===t||":admin_token"===t?-1!==e.$store.state.settings.description.findIndex(function(e){return e.children[0].key===t}):"relays"===t?[t]:-1!==e.$store.state.settings.description.findIndex(function(e){return e.key===t})}).length}}},we=(i("0FjT"),Object(f.a)(Se,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"settings-container",class:t.rebootIsSidebarOpen},[i("div",{staticClass:"reboot-button-container"},[i("reboot-button")],1),t._v(" "),t.isDesktop?i("div",[i("div",{staticClass:"settings-header-container",class:t.isSidebarOpen},[i("h1",{staticClass:"settings-header"},[t._v(t._s(t.$t("settings.settings")))]),t._v(" "),i("div",{staticClass:"docs-search-container"},[i("el-link",{attrs:{underline:!1,href:"https://docs-develop.pleroma.social/backend/administration/CLI_tasks/config/",target:"_blank"}},[i("el-button",{staticClass:"settings-docs-button"},[i("span",[i("i",{staticClass:"el-icon-document"}),t._v("\n "+t._s(t.$t("settings.seeDocs"))+"\n ")])])],1),t._v(" "),i("el-autocomplete",{staticClass:"settings-search-input",attrs:{"fetch-suggestions":t.querySearch,"trigger-on-focus":!1,clearable:"",placeholder:"Search","prefix-icon":"el-icon-search"},on:{select:t.handleSearchSelect},model:{value:t.searchQuery,callback:function(e){t.searchQuery=e},expression:"searchQuery"}})],1)]),t._v(" "),i("el-tabs",{attrs:{"tab-position":"left"},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},t._l(t.tabs,function(e,n){return i("el-tab-pane",{key:n,attrs:{label:t.$t(e.label),disabled:t.configDisabled||t.settingsCantBeChanged(e.settings),name:n,lazy:""}},[i(n,{tag:"component"})],1)}),1)],1):t._e(),t._v(" "),t.isMobile||t.isTablet?i("div",[i("div",{staticClass:"settings-header-container",class:t.isSidebarOpen},[i("h1",{staticClass:"settings-header"},[t._v(t._s(t.$t("settings.settings")))])]),t._v(" "),i("div",{staticClass:"nav-container"},[i("el-select",{staticClass:"settings-menu",attrs:{placeholder:"Select"},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},t._l(t.options,function(e){return i("el-option",{key:e.value,attrs:{label:e.label,value:e.value,disabled:t.configDisabled}})}),1),t._v(" "),i("el-link",{attrs:{underline:!1,href:"https://docs-develop.pleroma.social/backend/administration/CLI_tasks/config/",target:"_blank"}},[i("el-button",{staticClass:"settings-docs-button"},[i("span",[i("i",{staticClass:"el-icon-document"}),t._v("\n "+t._s(t.$t("settings.seeDocs"))+"\n ")])])],1)],1),t._v(" "),i("div",{staticClass:"settings-search-input-container"}),t._v(" "),"activityPub"===t.activeTab?i("activity-pub"):t._e(),t._v(" "),"auth"===t.activeTab?i("authentication"):t._e(),t._v(" "),"linkFormatter"===t.activeTab?i("link-formatter"):t._e(),t._v(" "),"esshd"===t.activeTab?i("esshd"):t._e(),t._v(" "),"captcha"===t.activeTab?i("captcha"):t._e(),t._v(" "),"frontend"===t.activeTab?i("frontend"):t._e(),t._v(" "),"gopher"===t.activeTab?i("gopher"):t._e(),t._v(" "),"http"===t.activeTab?i("http"):t._e(),t._v(" "),"instance"===t.activeTab?i("instance"):t._e(),t._v(" "),"jobQueue"===t.activeTab?i("job-queue"):t._e(),t._v(" "),"logger"===t.activeTab?i("logger"):t._e(),t._v(" "),"mailer"===t.activeTab?i("mailer"):t._e(),t._v(" "),"mediaProxy"===t.activeTab?i("media-proxy"):t._e(),t._v(" "),"metadata"===t.activeTab?i("metadata"):t._e(),t._v(" "),"mrf"===t.activeTab?i("mrf"):t._e(),t._v(" "),"rateLimiters"===t.activeTab?i("rate-limiters"):t._e(),t._v(" "),"relays"===t.activeTab?i("relays"):t._e(),t._v(" "),"webPush"===t.activeTab?i("web-push"):t._e(),t._v(" "),"upload"===t.activeTab?i("upload"):t._e(),t._v(" "),"other"===t.activeTab?i("other"):t._e()],1):t._e()])},[],!1,null,"82f78b3e",null));we.options.__file="index.vue";e.default=we.exports},apN7:function(t,e,i){"use strict";var n=i("9p49");i.n(n).a},dnRK:function(t,e,i){},e0P1:function(t,e,i){"use strict";var n=i("TudB");i.n(n).a},fyIw:function(t,e,i){},gFOO:function(t,e,i){"use strict";var n=i("jqM2");i.n(n).a},h9z7:function(t,e,i){"use strict";var n=i("TOIk");i.n(n).a},hVXW:function(t,e,i){"use strict";var n=i("uswN");i.n(n).a},irif:function(t,e,i){"use strict";var n=i("UtFC");i.n(n).a},jqM2:function(t,e,i){},lNpP:function(t,e,i){"use strict";var n=i("UbP/");i.n(n).a},ld6V:function(t,e,i){},mADP:function(t,e,i){"use strict";var n=i("qLeA");i.n(n).a},mGnP:function(t,e,i){"use strict";var n=i("smg2");i.n(n).a},mSK5:function(t,e,i){},nKzF:function(t,e,i){"use strict";var n=i("77pt");i.n(n).a},"ncj/":function(t,e,i){},pPJ2:function(t,e,i){},pnah:function(t,e,i){"use strict";var n=i("JqY8");i.n(n).a},qEST:function(t,e,i){"use strict";var n=i("4NUT");i.n(n).a},qLeA:function(t,e,i){},rKzx:function(t,e,i){},rdar:function(t,e,i){"use strict";var n=i("NiUD");i.n(n).a},smg2:function(t,e,i){},uswN:function(t,e,i){},vnTa:function(t,e,i){"use strict";var n=i("3YZA");i.n(n).a},w5cJ:function(t,e,i){"use strict";var n=i("PYLh");i.n(n).a},wgcy:function(t,e,i){},x6RV:function(t,e,i){},y7KD:function(t,e,i){"use strict";var n=i("YKHE");i.n(n).a},zzeU:function(t,e,i){"use strict";var n=i("EXm2");i.n(n).a}}]); -//# sourceMappingURL=chunk-565e.e1555105.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-565e.e1555105.js.map b/priv/static/adminfe/static/js/chunk-565e.e1555105.js.map deleted file mode 100644 index 1cfc4cdfa..000000000 --- a/priv/static/adminfe/static/js/chunk-565e.e1555105.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/settings/components/inputComponents/MascotsInput.vue?c65c","webpack:///./src/views/settings/components/WebPush.vue?38e3","webpack:///./src/views/settings/index.vue?0437","webpack:///./src/views/settings/components/Captcha.vue?029c","webpack:///./src/views/settings/components/inputComponents/SelectInputWithReducedLabels.vue?ac92","webpack:///./src/views/settings/components/Authentication.vue?4503","webpack:///./src/views/settings/components/inputComponents/RegInvitesInput.vue?b469","webpack:///./src/views/settings/components/inputComponents/LinkFormatterInput.vue?c837","webpack:///./src/views/settings/components/Upload.vue?33cd","webpack:///./src/views/settings/components/inputComponents/PruneInput.vue?cf11","webpack:///./src/views/settings/components/Esshd.vue?eedf","webpack:///./src/views/settings/components/Relays.vue?3141","webpack:///./src/views/settings/components/Http.vue?56b1","webpack:///./src/views/settings/components/inputComponents/SenderInput.vue?c641","webpack:///./src/views/settings/components/Mailer.vue?cb92","webpack:///./src/views/settings/components/MediaProxy.vue?e0fb","webpack:///./src/views/settings/components/inputComponents/SpecificMultipleSelect.vue?6f06","webpack:///./src/views/settings/components/RateLimiters.vue?0aac","webpack:///./src/views/settings/index.vue?dcc9","webpack:///./src/views/settings/components/inputComponents/EditableKeywordInput.vue?859c","webpack:///src/views/settings/components/inputComponents/EditableKeywordInput.vue","webpack:///./src/views/settings/components/inputComponents/EditableKeywordInput.vue","webpack:///./src/views/settings/components/inputComponents/EditableKeywordInput.vue?058f","webpack:///./src/views/settings/components/inputComponents/IconsInput.vue?bdb0","webpack:///src/views/settings/components/inputComponents/IconsInput.vue","webpack:///./src/views/settings/components/inputComponents/IconsInput.vue","webpack:///./src/views/settings/components/inputComponents/IconsInput.vue?a391","webpack:///./src/api/mediaUpload.js","webpack:///./src/views/settings/components/inputComponents/ImageUploadInput.vue?f296","webpack:///src/views/settings/components/inputComponents/ImageUploadInput.vue","webpack:///./src/views/settings/components/inputComponents/ImageUploadInput.vue","webpack:///./src/views/settings/components/inputComponents/ImageUploadInput.vue?28da","webpack:///./src/views/settings/components/inputComponents/LinkFormatterInput.vue?ae71","webpack:///src/views/settings/components/inputComponents/LinkFormatterInput.vue","webpack:///./src/views/settings/components/inputComponents/LinkFormatterInput.vue","webpack:///./src/views/settings/components/inputComponents/LinkFormatterInput.vue?acd6","webpack:///./src/views/settings/components/inputComponents/MascotsInput.vue?9cfe","webpack:///src/views/settings/components/inputComponents/MascotsInput.vue","webpack:///./src/views/settings/components/inputComponents/MascotsInput.vue","webpack:///./src/views/settings/components/inputComponents/MascotsInput.vue?df45","webpack:///./src/views/settings/components/inputComponents/ProxyUrlInput.vue?4183","webpack:///src/views/settings/components/inputComponents/ProxyUrlInput.vue","webpack:///./src/views/settings/components/inputComponents/ProxyUrlInput.vue","webpack:///./src/views/settings/components/inputComponents/ProxyUrlInput.vue?b4d0","webpack:///./src/views/settings/components/inputComponents/PruneInput.vue?663f","webpack:///src/views/settings/components/inputComponents/PruneInput.vue","webpack:///./src/views/settings/components/inputComponents/PruneInput.vue","webpack:///./src/views/settings/components/inputComponents/PruneInput.vue?2ccd","webpack:///./src/views/settings/components/inputComponents/RateLimitInput.vue?2905","webpack:///src/views/settings/components/inputComponents/RateLimitInput.vue","webpack:///./src/views/settings/components/inputComponents/RateLimitInput.vue","webpack:///./src/views/settings/components/inputComponents/RateLimitInput.vue?d732","webpack:///./src/views/settings/components/inputComponents/RegInvitesInput.vue?4de6","webpack:///src/views/settings/components/inputComponents/RegInvitesInput.vue","webpack:///./src/views/settings/components/inputComponents/RegInvitesInput.vue","webpack:///./src/views/settings/components/inputComponents/RegInvitesInput.vue?ce9b","webpack:///./src/views/settings/components/inputComponents/SelectInputWithReducedLabels.vue?b3f6","webpack:///src/views/settings/components/inputComponents/SelectInputWithReducedLabels.vue","webpack:///./src/views/settings/components/inputComponents/SelectInputWithReducedLabels.vue","webpack:///./src/views/settings/components/inputComponents/SelectInputWithReducedLabels.vue?dbe1","webpack:///./src/views/settings/components/inputComponents/SenderInput.vue?a1b5","webpack:///src/views/settings/components/inputComponents/SenderInput.vue","webpack:///./src/views/settings/components/inputComponents/SenderInput.vue","webpack:///./src/views/settings/components/inputComponents/SenderInput.vue?c9a0","webpack:///./src/views/settings/components/inputComponents/SpecificMultipleSelect.vue?8500","webpack:///src/views/settings/components/inputComponents/SpecificMultipleSelect.vue","webpack:///./src/views/settings/components/inputComponents/SpecificMultipleSelect.vue","webpack:///./src/views/settings/components/inputComponents/SpecificMultipleSelect.vue?2f90","webpack:///./src/views/settings/components/Inputs.vue?5b3f","webpack:///src/views/settings/components/Inputs.vue","webpack:///./src/views/settings/components/Inputs.vue","webpack:///./src/views/settings/components/Inputs.vue?18c3","webpack:///./src/views/settings/components/Setting.vue?39a1","webpack:///src/views/settings/components/Setting.vue","webpack:///./src/views/settings/components/Setting.vue","webpack:///./src/views/settings/components/Setting.vue?9ebb","webpack:///./src/views/settings/components/ActivityPub.vue?9ad8","webpack:///src/views/settings/components/ActivityPub.vue","webpack:///./src/views/settings/components/ActivityPub.vue","webpack:///./src/views/settings/components/ActivityPub.vue?1a9f","webpack:///./src/views/settings/components/Authentication.vue?1922","webpack:///src/views/settings/components/Authentication.vue","webpack:///./src/views/settings/components/Authentication.vue","webpack:///./src/views/settings/components/Authentication.vue?412c","webpack:///./src/views/settings/components/Captcha.vue?b5df","webpack:///src/views/settings/components/Captcha.vue","webpack:///./src/views/settings/components/Captcha.vue","webpack:///./src/views/settings/components/Captcha.vue?dc1b","webpack:///./src/views/settings/components/Esshd.vue?b0ed","webpack:///src/views/settings/components/Esshd.vue","webpack:///./src/views/settings/components/Esshd.vue","webpack:///./src/views/settings/components/Esshd.vue?b8c9","webpack:///./src/views/settings/components/Frontend.vue?1622","webpack:///src/views/settings/components/Frontend.vue","webpack:///./src/views/settings/components/Frontend.vue","webpack:///./src/views/settings/components/Frontend.vue?6107","webpack:///./src/views/settings/components/Gopher.vue?cb09","webpack:///src/views/settings/components/Gopher.vue","webpack:///./src/views/settings/components/Gopher.vue","webpack:///./src/views/settings/components/Gopher.vue?9f1a","webpack:///./src/views/settings/components/Http.vue?0ecb","webpack:///src/views/settings/components/Http.vue","webpack:///./src/views/settings/components/Http.vue","webpack:///./src/views/settings/components/Http.vue?2698","webpack:///./src/views/settings/components/Instance.vue?ea1e","webpack:///src/views/settings/components/Instance.vue","webpack:///./src/views/settings/components/Instance.vue","webpack:///./src/views/settings/components/Instance.vue?1b0b","webpack:///./src/views/settings/components/JobQueue.vue?e650","webpack:///src/views/settings/components/JobQueue.vue","webpack:///./src/views/settings/components/JobQueue.vue","webpack:///./src/views/settings/components/JobQueue.vue?2df5","webpack:///./src/views/settings/components/LinkFormatter.vue?9773","webpack:///src/views/settings/components/LinkFormatter.vue","webpack:///./src/views/settings/components/LinkFormatter.vue","webpack:///./src/views/settings/components/LinkFormatter.vue?2f8e","webpack:///./src/views/settings/components/Logger.vue?aa5f","webpack:///src/views/settings/components/Logger.vue","webpack:///./src/views/settings/components/Logger.vue","webpack:///./src/views/settings/components/Logger.vue?82f3","webpack:///./src/views/settings/components/Mailer.vue?48d6","webpack:///src/views/settings/components/Mailer.vue","webpack:///./src/views/settings/components/Mailer.vue","webpack:///./src/views/settings/components/Mailer.vue?7f76","webpack:///./src/views/settings/components/MediaProxy.vue?9571","webpack:///src/views/settings/components/MediaProxy.vue","webpack:///./src/views/settings/components/MediaProxy.vue","webpack:///./src/views/settings/components/MediaProxy.vue?a537","webpack:///./src/views/settings/components/Metadata.vue?7f4f","webpack:///src/views/settings/components/Metadata.vue","webpack:///./src/views/settings/components/Metadata.vue","webpack:///./src/views/settings/components/Metadata.vue?aa76","webpack:///./src/views/settings/components/MRF.vue?274b","webpack:///src/views/settings/components/MRF.vue","webpack:///./src/views/settings/components/MRF.vue","webpack:///./src/views/settings/components/MRF.vue?7860","webpack:///./src/views/settings/components/Other.vue?7bf4","webpack:///src/views/settings/components/Other.vue","webpack:///./src/views/settings/components/Other.vue","webpack:///./src/views/settings/components/Other.vue?088b","webpack:///./src/views/settings/components/RateLimiters.vue?15d2","webpack:///src/views/settings/components/RateLimiters.vue","webpack:///./src/views/settings/components/RateLimiters.vue","webpack:///./src/views/settings/components/RateLimiters.vue?c030","webpack:///./src/views/settings/components/Relays.vue?72ba","webpack:///src/views/settings/components/Relays.vue","webpack:///./src/views/settings/components/Relays.vue","webpack:///./src/views/settings/components/Relays.vue?cc82","webpack:///./src/views/settings/components/Upload.vue?304d","webpack:///src/views/settings/components/Upload.vue","webpack:///./src/views/settings/components/Upload.vue","webpack:///./src/views/settings/components/Upload.vue?58f3","webpack:///./src/views/settings/components/WebPush.vue?5451","webpack:///src/views/settings/components/WebPush.vue","webpack:///./src/views/settings/components/WebPush.vue","webpack:///./src/views/settings/components/WebPush.vue?0772","webpack:///./src/views/settings/index.vue?3c3a","webpack:///src/views/settings/index.vue","webpack:///./src/views/settings/components/tabs.js","webpack:///./src/views/settings/index.vue","webpack:///./src/views/settings/components/Metadata.vue?0952","webpack:///./src/views/settings/components/Instance.vue?2668","webpack:///./src/views/settings/components/Other.vue?8e53","webpack:///./src/views/settings/components/MRF.vue?8c92","webpack:///./src/views/settings/components/Frontend.vue?f18f","webpack:///./src/views/settings/components/inputComponents/RateLimitInput.vue?f3ab","webpack:///./src/views/settings/components/JobQueue.vue?d797","webpack:///./src/views/settings/components/Logger.vue?a62e","webpack:///./src/views/settings/components/inputComponents/ProxyUrlInput.vue?e239","webpack:///./src/views/settings/components/inputComponents/EditableKeywordInput.vue?5f84","webpack:///./src/views/settings/components/Setting.vue?ebdb","webpack:///./src/views/settings/components/ActivityPub.vue?48d9","webpack:///./src/views/settings/components/inputComponents/IconsInput.vue?5a78","webpack:///./src/views/settings/components/LinkFormatter.vue?264c","webpack:///./src/views/settings/components/Gopher.vue?5fd9","webpack:///./src/views/settings/components/Inputs.vue?e1ce","webpack:///./src/views/settings/components/inputComponents/ImageUploadInput.vue?6459"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MascotsInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_WebPush_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_82f78b3e_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Captcha_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_SelectInputWithReducedLabels_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Authentication_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_RegInvitesInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_LinkFormatterInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Upload_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_PruneInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Esshd_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Relays_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Http_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_SenderInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Mailer_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MediaProxy_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_SpecificMultipleSelect_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_RateLimiters_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","inputComponents_EditableKeywordInputvue_type_script_lang_js_","name","props","data","type","Array","default","parents","required","setting","Object","settingGroup","computed","editableKeywordWithInteger","this","includes","editableKeywordWithSelect","findIndex","el","editableKeywordWithString","key","isDesktop","$store","state","app","device","keyPlaceholder","settings","updatedSettings","valuePlaceholder","methods","addRowToEditableKeyword","updatedValue","concat","toConsumableArray_default","","value","id","generateID","updateSetting","group","deleteEditableKeywordRow","element","deletedId","getId","filteredValues","filter","values","Math","random","toString","getCrontabWorkerLabel","worker","workerKey","getKey","replace","keys","getSuggestion","_this","suggestions","find","suggestion","getValue","parseEditableKeyword","inputType","_this2","updatedId","map","index","defineProperty_default","objectSpread_default","updateCrontab","_this3","updatedValueWithType","reduce","acc","dispatch","input","wrappedSettings","wrapUpdatedSettings","length","_processNested","normalizers","reverse","valueForState","valueForUpdatedSettings","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","data-search","_l","label","placeholder","on","$event","_v","min","size","change","icon","circle","click","multiple","filterable","allow-create","_e","options","__file","EditableKeywordInput","inputComponents_IconsInputvue_type_script_lang_js_","addIconToIcons","addValueToIcons","i","deleteIcondRow","parseIcons","_ref","IconsInput_component","ref","IconsInput","UPLOAD_URL","authHeaders","Authorization","getToken","inputComponents_ImageUploadInputvue_type_script_lang_js_","inputValue","String","loading","vuex_esm","fullSize","lodash_default","a","dimensions","width","height","isDefault","defaultImage","baseName","get","utils","authHost","imageUrl","url","isString","startsWith","handleFiles","event","file","target","files","reader","FileReader","onload","formData","FormData","append","fetch","body","method","headers","then","json","uploadMedia","response","$emit","readAsDataURL","removeFile","ImageUploadInput_component","style","aria-label","$t","accept","_s","directives","rawName","expression","src","fit","staticStyle","margin-left","ImageUploadInput","inputComponents_LinkFormatterInputvue_type_script_lang_js_","autoLinkerAtomValue","substr","autoLinkerBooleanValue","autoLinkerIntegerValue","autoLinkerStringValue","processTwoTypeValue","LinkFormatterInput_component","slot","LinkFormatterInput","inputComponents_MascotsInputvue_type_script_lang_js_","addRowToMascots",":url",":mime_type","deleteMascotsRow","mascot","getName","getUrl","_Object$values","slicedToArray_default","getMimeType","_Object$values3","parseMascots","mascotsWithoutIDs","_Object$values$","mascotValue","objectWithoutProperties_default","MascotsInput_component","label-width","MascotsInput","inputComponents_ProxyUrlInputvue_type_script_lang_js_","proxyUrlData","socks5","host","port","updateProxyUrl","assembledData","ProxyUrlInput_component","ProxyUrlInput","inputComponents_PruneInputvue_type_script_lang_js_","prune","set","updateRadioInput","updateIntInput","updatedSetting","processedValue","PruneInput_component","model","callback","$$v","label-position","PruneInput","inputComponents_RateLimitInputvue_type_script_lang_js_","rateLimitAllUsers","rateLimitAuthUsers","isArray","rateLimitUnauthUsers","parseRateLimiter","typeOfInput","typeOfLimit","currentValue","valueToSend","toggleLimits","tuple","RateLimitInput_component","controls","RateLimitInput","inputComponents_RegInvitesInputvue_type_script_lang_js_","registrationsOpen","invitesEnabled","$confirm","confirmButtonText","cancelButtonText","RegInvitesInput_component","RegInvitesInput","inputComponents_SelectInputWithReducedLabelsvue_type_script_lang_js_","isMobile","prefixes",":policies","Pleroma.Web.Auth.Authenticator",":method",":adapter",":providers",":parsers",":ttl_setters",":scrub_policy",":federation_publisher_modules",":uploader",":filters","split","renderMultipleSelect","SelectInputWithReducedLabels_component","option","clearable","SelectInputWithReducedLabels","inputComponents_SenderInputvue_type_script_lang_js_","sender","email","nickname","updateSender","SenderInput_component","SenderInput","inputComponents_SpecificMultipleSelectvue_type_script_lang_js_","SpecificMultipleSelect_component","SpecificMultipleSelect","components_Inputsvue_type_script_lang_js_","components","customLabelWidth","labelWidth","labelClass","margin","Number","nested","Boolean","settingParent","booleanCombinedInput","canBeDeleted","_this$settingGroup","db","iconsData","isTablet","keywordData","reducedSelects","isImageUrl","editableKeyword","getFormattedDescription","desc","marked_default","processNestedData","parentKey","removeSetting","_removeSetting","asyncToGenerator_default","regenerator_default","mark","_callee2","wrap","_context2","prev","next","_callee","config","_context","delete","subkeys","t0","abrupt","$message","message","lang","t","stop","catch","apply","arguments","renderSingleSelect","senderInput","_ref2","update","Inputs_component","class","content","placement","subSetting","setting-group","setting-parent","custom-label-width","label-class","input-value","undefined","description","domProps","innerHTML","components_Settingvue_type_script_lang_js_","Inputs","emailAdapterChildren","adapter","children","child","settingKey","existingKey","compound","divideSetting","notLastInGroup","slice","_x","tab","Setting_component","Setting","components_ActivityPubvue_type_script_lang_js_","activitypub","activitypubData","isSidebarOpen","sidebar","opened","labelPosition","user","userData","onSubmit","_onSubmit","ActivityPub_component","ActivityPub","components_Authenticationvue_type_script_lang_js_","auth","authData","ldap","ldapData","oauth2","oauth2Data","pleromaAuthenticator","pleromaAuthenticatorData","restrictUnauthenticated","restrictUnauthenticatedData","Authentication_component","Authentication","components_Captchavue_type_script_lang_js_","captcha","captchaData","kocaptcha","kocaptchaData","Captcha_component","Captcha","components_Esshdvue_type_script_lang_js_","esshd","esshdData","toggleEsshd","Esshd_component","Esshd","components_Frontendvue_type_script_lang_js_","assets","assetsData","chat","chatData","emoji","emojiData","frontend","frontendData","frontends","frontendsData","markup","markupData","preload","preloadData","staticFe","staticFeData","Frontend_component","Frontend","components_Gophervue_type_script_lang_js_","gopher","gopherData","Gopher_component","Gopher","components_Httpvue_type_script_lang_js_","corsPlug","corsPlugData","http","httpData","httpSecurity","httpSecurityData","webCacheTtl","webCacheTtlData","Http_component","Http","components_Instancevue_type_script_lang_js_","adminToken","adminTokenData","favicons","faviconsData","feed","feedData","instance","instanceData","manifest","manifestData","pleromaUser","pleromaUserData","scheduledActivity","scheduledActivityData","streamer","streamerData","uriSchemes","uriSchemesData","welcome","welcomeData","Instance_component","Instance","components_JobQueuevue_type_script_lang_js_","activityExpiration","activityExpirationData","connectionsPools","connectionsPoolsData","hackneyPools","hackneyPoolsData","obanQueues","obanQueuesData","pools","poolsData","workers","workersData","JobQueue_component","JobQueue","components_LinkFormattervue_type_script_lang_js_","linkFormatter","linkFormatterData","LinkFormatter_component","LinkFormatter","components_Loggervue_type_script_lang_js_","console","consoleData","exsyslogger","exsysloggerData","logger","loggerData","quack","quackData","Logger_component","Logger","components_Mailervue_type_script_lang_js_","emailNotifications","emailNotificationsData","mailer","mailerData","newUsersDigestEmail","newUsersDigestEmailData","swoosh","swooshData","userEmail","userEmailData","Mailer_component","Mailer","components_MediaProxyvue_type_script_lang_js_","httpInvalidation","httpInvalidationData","mediaProxy","mediaProxyData","scriptInvalidation","scriptInvalidationData","MediaProxy_component","MediaProxy","components_Metadatavue_type_script_lang_js_","metadata","metadataData","richMedia","richMediaData","Metadata_component","Metadata","components_MRFvue_type_script_lang_js_","mrfSettings","getSettingData","showMrfPolicy","selectedMrfPolicies","mappedPolicies","related_policy","MRF_component","MRF","components_Othervue_type_script_lang_js_","castAndValidate","castAndValidateData","mimeTypes","mimeTypesData","modules","modulesData","remoteIp","remoteIpData","Other_component","Other","components_RateLimitersvue_type_script_lang_js_","rateLimiters","rateLimitersData","RateLimiters_component","RateLimiters","components_Relaysvue_type_script_lang_js_","newRelay","getLabelWidth","relays","fetchedRelays","mounted","followRelay","deleteRelay","relay","Relays_component","nativeOn","keyup","indexOf","_k","keyCode","prop","align","scopedSlots","_u","fn","scope","row","followed_back","fixed","actor","Relays","components_Uploadvue_type_script_lang_js_","s3","s3Data","showUploadersS3","showUploadersLocal","upload","uploadData","uploadersLocal","uploadersLocalData","uploadersS3","uploadersS3Data","uploadFilterMogrify","uploadFilterMogrifyData","uploadAnonymizeFilename","uploadAnonymizeFilenameData","Upload_component","Upload","components_WebPushvue_type_script_lang_js_","vapidDetails","vapidDetailsData","WebPush_component","WebPush","views_settingsvue_type_script_lang_js_","Mrf","RebootButton","searchQuery","activeTab","configDisabled","rebootIsSidebarOpen","searchData","tabs","activity-pub","authentication","job-queue","link-formatter","media-proxy","mrf","rate-limiters","web-push","other","tabs_tabs","handleSearchSelect","_handleSearchSelect","selectedValue","selectedSetting","document","querySelector","scrollIntoView","block","behavior","querySearch","queryString","cb","searchObj","search","toLowerCase","groupLabel","groupKey","settingsCantBeChanged","settings_component","underline","href","fetch-suggestions","trigger-on-focus","prefix-icon","select","tab-position","componentName","disabled","lazy","tag","item","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Metadata_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Instance_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Other_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MRF_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Frontend_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_RateLimitInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_JobQueue_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Logger_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ProxyUrlInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_EditableKeywordInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Setting_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ActivityPub_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_LinkFormatter_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Gopher_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Inputs_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ImageUploadInput_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__"],"mappings":"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","file":"static/js/chunk-565e.e1555105.js","sourcesContent":["import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MascotsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MascotsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebPush.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebPush.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=82f78b3e&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=82f78b3e&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Captcha.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Captcha.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectInputWithReducedLabels.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectInputWithReducedLabels.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegInvitesInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegInvitesInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkFormatterInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkFormatterInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Upload.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Upload.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PruneInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PruneInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Esshd.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Esshd.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Relays.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Relays.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Http.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Http.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SenderInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SenderInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mailer.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mailer.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaProxy.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaProxy.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpecificMultipleSelect.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpecificMultipleSelect.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimiters.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimiters.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings-container\",class:_vm.rebootIsSidebarOpen},[_c('div',{staticClass:\"reboot-button-container\"},[_c('reboot-button')],1),_vm._v(\" \"),(_vm.isDesktop)?_c('div',[_c('div',{staticClass:\"settings-header-container\",class:_vm.isSidebarOpen},[_c('h1',{staticClass:\"settings-header\"},[_vm._v(_vm._s(_vm.$t('settings.settings')))]),_vm._v(\" \"),_c('div',{staticClass:\"docs-search-container\"},[_c('el-link',{attrs:{\"underline\":false,\"href\":\"https://docs-develop.pleroma.social/backend/administration/CLI_tasks/config/\",\"target\":\"_blank\"}},[_c('el-button',{staticClass:\"settings-docs-button\"},[_c('span',[_c('i',{staticClass:\"el-icon-document\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.seeDocs'))+\"\\n \")])])],1),_vm._v(\" \"),_c('el-autocomplete',{staticClass:\"settings-search-input\",attrs:{\"fetch-suggestions\":_vm.querySearch,\"trigger-on-focus\":false,\"clearable\":\"\",\"placeholder\":\"Search\",\"prefix-icon\":\"el-icon-search\"},on:{\"select\":_vm.handleSearchSelect},model:{value:(_vm.searchQuery),callback:function ($$v) {_vm.searchQuery=$$v},expression:\"searchQuery\"}})],1)]),_vm._v(\" \"),_c('el-tabs',{attrs:{\"tab-position\":\"left\"},model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},_vm._l((_vm.tabs),function(value,componentName){return _c('el-tab-pane',{key:componentName,attrs:{\"label\":_vm.$t(value.label),\"disabled\":_vm.configDisabled || _vm.settingsCantBeChanged(value.settings),\"name\":componentName,\"lazy\":\"\"}},[_c(componentName,{tag:\"component\"})],1)}),1)],1):_vm._e(),_vm._v(\" \"),(_vm.isMobile || _vm.isTablet)?_c('div',[_c('div',{staticClass:\"settings-header-container\",class:_vm.isSidebarOpen},[_c('h1',{staticClass:\"settings-header\"},[_vm._v(_vm._s(_vm.$t('settings.settings')))])]),_vm._v(\" \"),_c('div',{staticClass:\"nav-container\"},[_c('el-select',{staticClass:\"settings-menu\",attrs:{\"placeholder\":\"Select\"},model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value,\"disabled\":_vm.configDisabled}})}),1),_vm._v(\" \"),_c('el-link',{attrs:{\"underline\":false,\"href\":\"https://docs-develop.pleroma.social/backend/administration/CLI_tasks/config/\",\"target\":\"_blank\"}},[_c('el-button',{staticClass:\"settings-docs-button\"},[_c('span',[_c('i',{staticClass:\"el-icon-document\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.seeDocs'))+\"\\n \")])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"settings-search-input-container\"}),_vm._v(\" \"),(_vm.activeTab === 'activityPub')?_c('activity-pub'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'auth')?_c('authentication'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'linkFormatter')?_c('link-formatter'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'esshd')?_c('esshd'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'captcha')?_c('captcha'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'frontend')?_c('frontend'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'gopher')?_c('gopher'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'http')?_c('http'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'instance')?_c('instance'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'jobQueue')?_c('job-queue'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'logger')?_c('logger'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'mailer')?_c('mailer'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'mediaProxy')?_c('media-proxy'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'metadata')?_c('metadata'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'mrf')?_c('mrf'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'rateLimiters')?_c('rate-limiters'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'relays')?_c('relays'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'webPush')?_c('web-push'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'upload')?_c('upload'):_vm._e(),_vm._v(\" \"),(_vm.activeTab === 'other')?_c('other'):_vm._e()],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditableKeywordInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditableKeywordInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./EditableKeywordInput.vue?vue&type=template&id=6670a702&\"\nimport script from \"./EditableKeywordInput.vue?vue&type=script&lang=js&\"\nexport * from \"./EditableKeywordInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditableKeywordInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"EditableKeywordInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"editable-keyword-container\"},[(_vm.setting.key === ':crontab')?_c('div',{staticClass:\"crontab\",attrs:{\"data-search\":_vm.setting.key}},_vm._l((_vm.data),function(worker){return _c('el-form-item',{key:_vm.getId(worker),staticClass:\"crontab-container\",attrs:{\"label\":_vm.getCrontabWorkerLabel(worker)}},[_c('el-input',{staticClass:\"input setting-input\",attrs:{\"value\":_vm.getValue(worker),\"placeholder\":_vm.getSuggestion(worker) || null},on:{\"input\":function($event){return _vm.updateCrontab($event, 'value', worker)}}})],1)}),1):(_vm.editableKeywordWithInteger)?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(element){return _c('div',{key:_vm.getId(element),staticClass:\"setting-input\"},[_c('el-input',{staticClass:\"name-input\",attrs:{\"value\":_vm.getKey(element),\"placeholder\":\"key\"},on:{\"input\":function($event){return _vm.parseEditableKeyword($event, 'key', element)}}}),_vm._v(\" :\\n \"),_c('el-input-number',{staticClass:\"value-input\",attrs:{\"value\":_vm.getValue(element),\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.parseEditableKeyword($event, 'value', element)}}}),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteEditableKeywordRow(element)}}})],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToEditableKeyword}})],2):(_vm.editableKeywordWithString)?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(element){return _c('div',{key:_vm.getId(element),staticClass:\"setting-input\"},[_c('el-input',{staticClass:\"name-input\",attrs:{\"value\":_vm.getKey(element),\"placeholder\":_vm.keyPlaceholder},on:{\"input\":function($event){return _vm.parseEditableKeyword($event, 'key', element)}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"value-input\",attrs:{\"value\":_vm.getValue(element),\"placeholder\":_vm.valuePlaceholder},on:{\"input\":function($event){return _vm.parseEditableKeyword($event, 'value', element)}}}),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteEditableKeywordRow(element)}}})],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToEditableKeyword}})],2):(_vm.editableKeywordWithSelect)?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(element){return _c('div',{key:_vm.getId(element),staticClass:\"setting-input\"},[_c('el-input',{staticClass:\"name-input\",attrs:{\"value\":_vm.getKey(element),\"placeholder\":\"key\"},on:{\"input\":function($event){return _vm.parseEditableKeyword($event, 'key', element)}}}),_vm._v(\" :\\n \"),_c('el-select',{staticClass:\"value-input\",attrs:{\"value\":_vm.getValue(element),\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.parseEditableKeyword($event, 'value', element)}}}),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteEditableKeywordRow(element)}}})],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToEditableKeyword}})],2):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconsInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconsInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./IconsInput.vue?vue&type=template&id=0e981ae9&\"\nimport script from \"./IconsInput.vue?vue&type=script&lang=js&\"\nexport * from \"./IconsInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./IconsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"IconsInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mascot-container\",attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(icon,index){return _c('div',{key:index,staticClass:\"mascot\"},[_c('div',{staticClass:\"icons-container\"},[_c('div',{staticClass:\"icon-container\"},_vm._l((icon),function(ref){\nvar key = ref.key;\nvar value = ref.value;\nvar id = ref.id;\nreturn _c('div',{key:id,staticClass:\"icon-values-container\"},[_c('el-input',{staticClass:\"icon-key-input\",attrs:{\"value\":key,\"placeholder\":\"key\"},on:{\"input\":function($event){return _vm.parseIcons($event, 'key', index, id)}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"icon-value-input\",attrs:{\"value\":value,\"placeholder\":\"value\"},on:{\"input\":function($event){return _vm.parseIcons($event, 'value', index, id)}}})],1)}),0),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteIcondRow(index)}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"icons-button-container\"},[_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.addValueToIcons(index)}}}),_vm._v(\" \"),_c('span',{staticClass:\"icons-button-desc\"},[_vm._v(\"Add another `key - value` pair to this icon\")])],1),_vm._v(\" \"),_c('el-divider',{staticClass:\"divider\"})],1)}),_vm._v(\" \"),_c('div',{staticClass:\"icons-button-container\"},[_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addIconToIcons}}),_vm._v(\" \"),_c('span',{staticClass:\"icons-button-desc\"},[_vm._v(\"Add another icon configuration\")])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nconst UPLOAD_URL = '/api/v1/media'\n\nexport function uploadMedia({ formData, authHost }) {\n const url = baseName(authHost) + UPLOAD_URL\n\n return fetch(url, {\n body: formData,\n method: 'POST',\n headers: authHeaders()\n })\n .then((data) => data.json())\n}\n\nconst authHeaders = () => {\n return { 'Authorization': `Bearer ${getToken()}` }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageUploadInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageUploadInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ImageUploadInput.vue?vue&type=template&id=dbef2262&\"\nimport script from \"./ImageUploadInput.vue?vue&type=script&lang=js&\"\nexport * from \"./ImageUploadInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ImageUploadInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ImageUploadInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"image-upload-area\"},[_c('div',{staticClass:\"input-row\"},[_c('div',{staticClass:\"image-upload-wrapper\",style:(_vm.dimensions)},[_c('div',{staticClass:\"image-upload-overlay\",style:(_vm.dimensions)},[_c('input',{staticClass:\"input-file\",attrs:{\"aria-label\":_vm.$t('settings.changeImage'),\"type\":\"file\",\"accept\":\".jpg,.jpeg,.png\"},on:{\"change\":_vm.handleFiles}}),_vm._v(\" \"),_c('div',{staticClass:\"caption\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.changeImage'))+\"\\n \")]),_vm._v(\" \"),_c('el-image',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"uploaded-image\",style:(_vm.dimensions),attrs:{\"src\":_vm.imageUrl(_vm.inputValue),\"fit\":\"cover\"}})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"image-button-group\"},[_c('el-button',{staticClass:\"upload-button\",attrs:{\"size\":\"small\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.uploadImage'))+\"\\n \"),_c('input',{staticClass:\"input-file\",attrs:{\"aria-label\":_vm.$t('settings.changeImage'),\"type\":\"file\",\"accept\":\".jpg,.jpeg,.png\"},on:{\"change\":_vm.handleFiles}})]),_vm._v(\" \"),(!_vm.isDefault)?_c('el-button',{staticStyle:{\"margin-left\":\"5px\"},attrs:{\"type\":\"danger\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.removeFile()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.remove'))+\"\\n \")]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkFormatterInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkFormatterInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./LinkFormatterInput.vue?vue&type=template&id=3e31f4e9&\"\nimport script from \"./LinkFormatterInput.vue?vue&type=script&lang=js&\"\nexport * from \"./LinkFormatterInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LinkFormatterInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"LinkFormatterInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.setting.type.includes('string'))?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-switch',{attrs:{\"value\":_vm.autoLinkerBooleanValue},on:{\"change\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}}),_vm._v(\" \"),(_vm.autoLinkerBooleanValue)?_c('el-input',{attrs:{\"value\":_vm.autoLinkerStringValue},on:{\"input\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.setting.type.includes('integer'))?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-switch',{attrs:{\"value\":_vm.autoLinkerBooleanValue},on:{\"change\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}}),_vm._v(\" \"),(_vm.autoLinkerBooleanValue)?_c('el-input-number',{attrs:{\"value\":_vm.autoLinkerIntegerValue},on:{\"input\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.setting.type.includes('atom'))?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-switch',{attrs:{\"value\":_vm.autoLinkerBooleanValue},on:{\"change\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}}),_vm._v(\" \"),(_vm.autoLinkerBooleanValue)?_c('el-input',{attrs:{\"value\":_vm.autoLinkerAtomValue},on:{\"input\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}},[_c('template',{slot:\"prepend\"},[_vm._v(\":\")])],2):_vm._e()],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MascotsInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MascotsInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./MascotsInput.vue?vue&type=template&id=0015a0e3&\"\nimport script from \"./MascotsInput.vue?vue&type=script&lang=js&\"\nexport * from \"./MascotsInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MascotsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"MascotsInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mascot-container\",attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(mascot){return _c('div',{key:_vm.getId(mascot),staticClass:\"mascot\"},[_c('el-form-item',{staticClass:\"mascot-form-item\",attrs:{\"label\":\"Name\",\"label-width\":\"85px\"}},[_c('div',{staticClass:\"mascot-name-container\"},[_c('el-input',{staticClass:\"mascot-name-input\",attrs:{\"value\":_vm.getName(mascot),\"placeholder\":\"Name\"},on:{\"input\":function($event){return _vm.parseMascots($event, 'name', mascot)}}}),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteMascotsRow(mascot)}}})],1)]),_vm._v(\" \"),_c('el-form-item',{staticClass:\"mascot-form-item\",attrs:{\"label\":\"URL\",\"label-width\":\"85px\"}},[_c('el-input',{staticClass:\"mascot-input\",attrs:{\"value\":_vm.getUrl(mascot),\"placeholder\":\"URL\"},on:{\"input\":function($event){return _vm.parseMascots($event, 'url', mascot)}}})],1),_vm._v(\" \"),_c('el-form-item',{staticClass:\"mascot-form-item\",attrs:{\"label\":\"Mime type\",\"label-width\":\"85px\"}},[_c('el-input',{staticClass:\"mascot-input\",attrs:{\"value\":_vm.getMimeType(mascot),\"placeholder\":\"Mime type\"},on:{\"input\":function($event){return _vm.parseMascots($event, 'mimeType', mascot)}}})],1)],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToMascots}})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProxyUrlInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProxyUrlInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ProxyUrlInput.vue?vue&type=template&id=9a053e1c&\"\nimport script from \"./ProxyUrlInput.vue?vue&type=script&lang=js&\"\nexport * from \"./ProxyUrlInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProxyUrlInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ProxyUrlInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"proxy-url-input\",attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-input',{staticClass:\"proxy-url-host-input\",attrs:{\"value\":_vm.proxyUrlData.host,\"placeholder\":\"host (e.g. localhost or 127.0.0.1)\"},on:{\"input\":function($event){return _vm.updateProxyUrl($event, 'host')}}}),_vm._v(\" \"),(_vm.isDesktop)?_c('span',[_vm._v(\":\")]):_vm._e(),_vm._v(\" \"),_c('el-input',{staticClass:\"proxy-url-value-input\",attrs:{\"value\":_vm.proxyUrlData.port,\"placeholder\":\"port (e.g 9020 or 3090)\"},on:{\"input\":function($event){return _vm.updateProxyUrl($event, 'port')}}}),_vm._v(\" \"),_c('div',{staticClass:\"socks5-checkbox-container\"},[_c('el-checkbox',{attrs:{\"value\":_vm.proxyUrlData.socks5},on:{\"change\":function($event){return _vm.updateProxyUrl($event, 'socks5')}}}),_vm._v(\" \"),_c('span',{staticClass:\"socks5-checkbox\"},[_vm._v(\"Socks5\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PruneInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PruneInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./PruneInput.vue?vue&type=template&id=0da6d714&\"\nimport script from \"./PruneInput.vue?vue&type=script&lang=js&\"\nexport * from \"./PruneInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PruneInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"PruneInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-radio-group',{staticClass:\"prune-options\",model:{value:(_vm.prune),callback:function ($$v) {_vm.prune=$$v},expression:\"prune\"}},[_c('el-radio',{attrs:{\"label\":\":disabled\"}},[_vm._v(\"Disabled\")]),_vm._v(\" \"),_c('el-radio',{attrs:{\"label\":\":maxlen\"}},[_vm._v(\"Limit-based\")]),_vm._v(\" \"),_c('el-radio',{attrs:{\"label\":\":maxage\"}},[_vm._v(\"Time-based\")])],1),_vm._v(\" \"),(_vm.prune === ':maxlen')?_c('el-form-item',{attrs:{\"label\":\"Max length\",\"label-width\":\"100\",\"label-position\":\"left\"}},[_c('el-input-number',{staticClass:\"top-margin\",attrs:{\"value\":_vm.data[1],\"min\":0,\"placeholder\":\"1500\",\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateIntInput($event, ':maxlen')}}})],1):_vm._e(),_vm._v(\" \"),(_vm.prune === ':maxage')?_c('el-form-item',{attrs:{\"label\":\"Max age\",\"label-width\":\"100\",\"label-position\":\"left\"}},[_c('el-input-number',{staticClass:\"top-margin\",attrs:{\"value\":_vm.data[1],\"min\":0,\"placeholder\":\"3600\",\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateIntInput($event, ':maxage')}}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimitInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimitInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./RateLimitInput.vue?vue&type=template&id=6c808afe&\"\nimport script from \"./RateLimitInput.vue?vue&type=script&lang=js&\"\nexport * from \"./RateLimitInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RateLimitInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"RateLimitInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"rate-limit-container\",attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[(!_vm.rateLimitAuthUsers)?_c('div',[_c('el-input-number',{staticClass:\"scale-input\",attrs:{\"value\":_vm.rateLimitAllUsers[0],\"controls\":false,\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, _vm.setting.key, 'scale', 'oneLimit', _vm.rateLimitAllUsers)}}}),_vm._v(\" \"),_c('span',[_vm._v(\":\")]),_vm._v(\" \"),_c('el-input-number',{staticClass:\"limit-input\",attrs:{\"value\":_vm.rateLimitAllUsers[1],\"controls\":false,\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, _vm.setting.key, 'limit', 'oneLimit', _vm.rateLimitAllUsers)}}}),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits([['', ''], ['', '']], _vm.setting.key)}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set different limits for unauthenticated and authenticated users\")])],1)],1):_vm._e(),_vm._v(\" \"),(_vm.rateLimitAuthUsers)?_c('div',[_c('el-form-item',{staticClass:\"rate-limit\"},[_c('div',{staticClass:\"rate-limit-label-container\"},[_c('span',{staticClass:\"rate-limit-label\"},[_vm._v(\"\\n Unauthenticated users:\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"rate-limit-content\"},[_c('el-input-number',{staticClass:\"scale-input\",attrs:{\"value\":_vm.rateLimitUnauthUsers[0],\"controls\":false,\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter(\n $event, _vm.setting.key, 'scale', 'unauthUsersLimit', [_vm.rateLimitUnauthUsers, _vm.rateLimitAuthUsers]\n )}}}),_vm._v(\" \"),_c('span',[_vm._v(\":\")]),_vm._v(\" \"),_c('el-input-number',{staticClass:\"limit-input\",attrs:{\"value\":_vm.rateLimitUnauthUsers[1],\"controls\":false,\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter(\n $event, _vm.setting.key, 'limit', 'unauthUsersLimit', [_vm.rateLimitUnauthUsers, _vm.rateLimitAuthUsers]\n )}}})],1)]),_vm._v(\" \"),_c('el-form-item',{staticClass:\"rate-limit\"},[_c('div',{staticClass:\"rate-limit-label-container\"},[_c('span',{staticClass:\"rate-limit-label\"},[_vm._v(\"\\n Authenticated users:\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"rate-limit-content\"},[_c('el-input-number',{staticClass:\"scale-input\",attrs:{\"value\":_vm.rateLimitAuthUsers[0],\"controls\":false,\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, _vm.setting.key, 'scale', 'authUserslimit', [_vm.rateLimitUnauthUsers, _vm.rateLimitAuthUsers])}}}),_vm._v(\" \"),_c('span',[_vm._v(\":\")]),_vm._v(\" \"),_c('el-input-number',{staticClass:\"limit-input\",attrs:{\"value\":_vm.rateLimitAuthUsers[1],\"controls\":false,\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, _vm.setting.key, 'limit', 'authUserslimit', [_vm.rateLimitUnauthUsers, _vm.rateLimitAuthUsers])}}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits(['', ''], _vm.setting.key)}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set limit for all users\")])],1)],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegInvitesInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegInvitesInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./RegInvitesInput.vue?vue&type=template&id=55c7fa7c&\"\nimport script from \"./RegInvitesInput.vue?vue&type=script&lang=js&\"\nexport * from \"./RegInvitesInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RegInvitesInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"RegInvitesInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-switch',{staticClass:\"switch-input\",attrs:{\"value\":_vm.data[_vm.setting.key],\"data-search\":_vm.setting.key},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectInputWithReducedLabels.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectInputWithReducedLabels.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SelectInputWithReducedLabels.vue?vue&type=template&id=f003bd80&\"\nimport script from \"./SelectInputWithReducedLabels.vue?vue&type=script&lang=js&\"\nexport * from \"./SelectInputWithReducedLabels.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SelectInputWithReducedLabels.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SelectInputWithReducedLabels.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input\"},[(_vm.renderMultipleSelect(_vm.setting.type))?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"data-search\":_vm.setting.key,\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}},_vm._l((_vm.options(_vm.setting.suggestions)),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option.value,\"label\":option.label}})}),1):_vm._e(),_vm._v(\" \"),(_vm.setting.type === 'module' || (_vm.setting.type.includes('atom') && _vm.setting.type.includes('dropdown')))?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue === false ? 'false' : _vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}},_vm._l((_vm.options(_vm.setting.suggestions)),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option.value,\"label\":option.label}})}),1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SenderInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SenderInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SenderInput.vue?vue&type=template&id=01973d3a&\"\nimport script from \"./SenderInput.vue?vue&type=script&lang=js&\"\nexport * from \"./SenderInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SenderInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SenderInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sender-input\",attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-input',{staticClass:\"email-address-input\",attrs:{\"value\":_vm.sender.email,\"placeholder\":\"email address\"},on:{\"input\":function($event){return _vm.updateSender($event, 'email')}}}),_vm._v(\" \"),_c('el-input',{staticClass:\"nickname-input\",attrs:{\"value\":_vm.sender.nickname,\"placeholder\":\"nickname\"},on:{\"input\":function($event){return _vm.updateSender($event, 'nickname')}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpecificMultipleSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpecificMultipleSelect.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SpecificMultipleSelect.vue?vue&type=template&id=755f759c&\"\nimport script from \"./SpecificMultipleSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./SpecificMultipleSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SpecificMultipleSelect.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SpecificMultipleSelect.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"multiple-select-container\"},[(_vm.setting.key === ':backends')?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.data.value,\"data-search\":_vm.setting.key || _vm.setting.group,\"multiple\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}},[_c('el-option',{attrs:{\"value\":\":console\",\"label\":\"console\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":ex_syslogger\",\"label\":\"ExSyslogger\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"Quack.Logger\",\"label\":\"Quack.Logger\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':args')?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.data[_vm.setting.key],\"data-search\":_vm.setting.key || _vm.setting.group,\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}},[_c('el-option',{attrs:{\"value\":\"strip\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"auto-orient\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"{\\\"implode\\\", \\\"1\\\"}\"}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Inputs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Inputs.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Inputs.vue?vue&type=template&id=6121f14a&\"\nimport script from \"./Inputs.vue?vue&type=script&lang=js&\"\nexport * from \"./Inputs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Inputs.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Inputs.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input-container\"},[(_vm.setting.type === 'keyword')?_c('div',{staticClass:\"keyword-container\"},[_c('el-form-item',{class:_vm.labelClass,style:((\"margin-left:\" + _vm.margin + \"px;margin-bottom:0\")),attrs:{\"label-width\":_vm.customLabelWidth,\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('span',{attrs:{\"slot\":\"label\"},slot:\"label\"},[_vm._v(\"\\n \"+_vm._s(_vm.setting.label)+\"\\n \"),(_vm.canBeDeleted && _vm.isDesktop)?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"delete-setting-button\",attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":_vm.removeSetting}})],1):_vm._e()],1)]),_vm._v(\" \"),_vm._l((_vm.setting.children),function(subSetting){return _c('el-form-item',{key:subSetting.key},[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting-parent\":_vm.settingParent.concat( [subSetting]),\"setting\":subSetting,\"data\":_vm.data[_vm.setting.key],\"custom-label-width\":_vm.isMobile ? '100px' : '120px',\"label-class\":subSetting.type === 'keyword' ? 'center-label' : '',\"margin\":_vm.isDesktop ? _vm.margin + 15 : _vm.margin + 8,\"nested\":true}})],1)})],2):_vm._e(),_vm._v(\" \"),(_vm.setting.type !== 'keyword')?_c('el-form-item',{class:_vm.labelClass,style:(_vm.isDesktop ? '' : (\"margin-left:\" + _vm.margin + \"px\")),attrs:{\"label-width\":_vm.customLabelWidth}},[_c('span',{attrs:{\"slot\":\"label\"},slot:\"label\"},[_vm._v(\"\\n \"+_vm._s(_vm.setting.label)+\"\\n \"),(_vm.canBeDeleted && (_vm.isDesktop || _vm.isMobile))?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"delete-setting-button\",attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":_vm.removeSetting}})],1):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"input-row\"},[(_vm.isImageUrl)?_c('image-upload-input',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting,\"input-value\":_vm.inputValue},on:{\"change\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}}):(_vm.setting.type === 'string' || (_vm.setting.type.includes('string') && _vm.setting.type.includes('atom')))?_c('el-input',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"placeholder\":_vm.setting.suggestions ? _vm.setting.suggestions[0] : null,\"data-search\":_vm.setting.key || _vm.setting.group},on:{\"input\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}}):_vm._e(),_vm._v(\" \"),(_vm.setting.type === 'boolean' && ![':registrations_open', ':invites_enabled'].includes(_vm.setting.key))?_c('el-switch',{staticClass:\"switch-input\",attrs:{\"value\":_vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group},on:{\"change\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}}):_vm._e(),_vm._v(\" \"),(_vm.setting.type === 'integer')?_c('el-input-number',{attrs:{\"value\":_vm.inputValue === null ? undefined : _vm.inputValue,\"placeholder\":_vm.setting.suggestions ? _vm.setting.suggestions[0].toString() : null,\"min\":0,\"size\":_vm.isDesktop ? 'large' : 'medium',\"data-search\":_vm.setting.key || _vm.setting.group},on:{\"change\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}}):_vm._e(),_vm._v(\" \"),(_vm.renderSingleSelect(_vm.setting.type))?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue === false ? 'false' : _vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}},_vm._l((_vm.setting.suggestions),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option}})}),1):_vm._e(),_vm._v(\" \"),(_vm.renderMultipleSelect(_vm.setting.type))?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group,\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}},_vm._l((_vm.setting.suggestions),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option}})}),1):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':ip')?_c('el-input',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group,\"placeholder\":\"xxx.xxx.xxx.xx\"},on:{\"input\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}}):_vm._e(),_vm._v(\" \"),(_vm.setting.type === 'atom')?_c('el-input',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"placeholder\":_vm.setting.suggestions && _vm.setting.suggestions[0] ? _vm.setting.suggestions[0].substr(1) : '',\"data-search\":_vm.setting.key || _vm.setting.group},on:{\"input\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}},[_c('template',{slot:\"prepend\"},[_vm._v(\":\")])],2):_vm._e(),_vm._v(\" \"),(_vm.editableKeyword(_vm.setting.key, _vm.setting.type))?_c('editable-keyword-input',{attrs:{\"data\":_vm.keywordData,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting,\"parents\":_vm.settingParent}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':icons')?_c('icons-input',{attrs:{\"data\":_vm.iconsData,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.booleanCombinedInput)?_c('link-formatter-input',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':mascots')?_c('mascots-input',{attrs:{\"data\":_vm.keywordData,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':proxy_url')?_c('proxy-url-input',{attrs:{\"data\":_vm.data[_vm.setting.key],\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting,\"parents\":_vm.settingParent}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':prune')?_c('prune-input',{attrs:{\"data\":_vm.data[_vm.setting.key],\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.settingGroup.key === ':rate_limit')?_c('rate-limit-input',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),([':registrations_open', ':invites_enabled'].includes(_vm.setting.key))?_c('reg-invites-input',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.reducedSelects)?_c('select-input-with-reduced-labels',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':backends' || _vm.setting.key === ':args')?_c('specific-multiple-select',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.senderInput(_vm.setting))?_c('sender-input',{attrs:{\"data\":_vm.data[_vm.setting.key],\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting,\"parents\":_vm.settingParent}}):_vm._e(),_vm._v(\" \"),(_vm.canBeDeleted && _vm.isTablet)?_c('el-tooltip',{staticClass:\"delete-setting-button-container\",attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"delete-setting-button\",attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":_vm.removeSetting}})],1):_vm._e()],1),_vm._v(\" \"),(_vm.setting.description && _vm.setting.type !== 'keyword')?_c('div',{staticClass:\"expl\",domProps:{\"innerHTML\":_vm._s(_vm.getFormattedDescription(_vm.setting.description))}}):_vm._e()]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Setting.vue?vue&type=template&id=25e5eaa4&\"\nimport script from \"./Setting.vue?vue&type=script&lang=js&\"\nexport * from \"./Setting.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Setting.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Setting.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',[(_vm.settingGroup.label || _vm.settingGroup.description)?_c('el-form-item',{staticClass:\"description-container\",attrs:{\"data-search\":_vm.settingGroup.key || _vm.settingGroup.group}},[(_vm.settingGroup.label)?_c('span',{staticClass:\"setting-label\"},[_vm._v(_vm._s(_vm.settingGroup.label))]):_vm._e(),_vm._v(\" \"),(_vm.settingGroup.description)?_c('span',{staticClass:\"expl no-top-margin\",domProps:{\"innerHTML\":_vm._s(_vm.getFormattedDescription(_vm.settingGroup.description))}}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.settingGroup.key === 'Pleroma.Emails.Mailer')?_c('div',[_vm._l((_vm.settingGroup.children.filter(function (setting) { return !setting.group; })),function(setting){return _c('div',{key:setting.key},[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting\":setting,\"data\":_vm.data}})],1)}),_vm._v(\" \"),_vm._l((_vm.emailAdapterChildren),function(setting){return _c('div',{key:setting.key},[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting\":setting,\"data\":_vm.data}})],1)})],2):_c('div',_vm._l((_vm.settingGroup.children),function(setting){return _c('div',{key:setting.key},[(!_vm.compound(setting))?_c('div',[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting\":setting,\"data\":_vm.data,\"nested\":false}})],1):_vm._e(),_vm._v(\" \"),(_vm.compound(setting))?_c('div',[(_vm.divideSetting(setting.key))?_c('el-divider',{staticClass:\"divider\"}):_vm._e(),_vm._v(\" \"),(!setting.children)?_c('div',[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting\":setting,\"data\":_vm.data[setting.key],\"nested\":true}})],1):_c('div',[_c('div',{staticClass:\"input-container\"},[_c('el-form-item',{staticClass:\"grouped-settings-header\",attrs:{\"data-search\":setting.key || setting.group}},[_c('span',{attrs:{\"slot\":\"label\"},slot:\"label\"},[(_vm.isDesktop && _vm.canBeDeleted(setting.key))?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticStyle:{\"margin-left\":\"5px\"},attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.removeSetting(setting.key)}}})],1):_vm._e()],1),_vm._v(\" \"),_c('span',{staticClass:\"label-font\"},[_vm._v(_vm._s(setting.label))]),_vm._v(\" \"),(_vm.canBeDeleted(setting.key) && (_vm.isMobile || _vm.isTablet))?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"settings-delete-button\",attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.removeSetting(setting.key)}}})],1):_vm._e()],1)],1),_vm._v(\" \"),_vm._l((setting.children),function(subSetting){return _c('div',{key:subSetting.key},[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting-parent\":[setting, subSetting],\"setting\":subSetting,\"data\":_vm.data[setting.key],\"nested\":true}})],1)})],2),_vm._v(\" \"),(_vm.notLastInGroup(setting.key))?_c('el-divider',{staticClass:\"divider\"}):_vm._e()],1):_vm._e()])}),0)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ActivityPub.vue?vue&type=template&id=54a49c6e&\"\nimport script from \"./ActivityPub.vue?vue&type=script&lang=js&\"\nexport * from \"./ActivityPub.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ActivityPub.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ActivityPub.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.activitypubData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth,\"data-search\":\":activitypub\"}},[_c('setting',{attrs:{\"setting-group\":_vm.activitypub,\"data\":_vm.activitypubData}})],1),_vm._v(\" \"),(_vm.user)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.userData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth,\"data-search\":\":user\"}},[_c('setting',{attrs:{\"setting-group\":_vm.user,\"data\":_vm.userData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Authentication.vue?vue&type=template&id=3be43836&\"\nimport script from \"./Authentication.vue?vue&type=script&lang=js&\"\nexport * from \"./Authentication.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Authentication.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Authentication.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.pleromaAuthenticatorData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.pleromaAuthenticator,\"data\":_vm.pleromaAuthenticatorData}})],1),_vm._v(\" \"),(_vm.pleromaAuthenticator)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.authData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.auth,\"data\":_vm.authData}})],1),_vm._v(\" \"),(_vm.auth)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.ldapData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.ldap,\"data\":_vm.ldapData}})],1),_vm._v(\" \"),(_vm.ldap)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.oauth2Data,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.oauth2,\"data\":_vm.oauth2Data}})],1),_vm._v(\" \"),(_vm.oauth2)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.restrictUnauthenticatedData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.restrictUnauthenticated,\"data\":_vm.restrictUnauthenticatedData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Captcha.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Captcha.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Captcha.vue?vue&type=template&id=66ab985a&\"\nimport script from \"./Captcha.vue?vue&type=script&lang=js&\"\nexport * from \"./Captcha.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Captcha.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Captcha.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.captchaData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.captcha,\"data\":_vm.captchaData}})],1),_vm._v(\" \"),(_vm.captcha)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.kocaptchaData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.kocaptcha,\"data\":_vm.kocaptchaData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Esshd.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Esshd.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Esshd.vue?vue&type=template&id=5a9ec988&\"\nimport script from \"./Esshd.vue?vue&type=script&lang=js&\"\nexport * from \"./Esshd.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Esshd.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Esshd.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.esshdData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.esshd,\"data\":_vm.esshdData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Frontend.vue?vue&type=template&id=cca7df2a&\"\nimport script from \"./Frontend.vue?vue&type=script&lang=js&\"\nexport * from \"./Frontend.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Frontend.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Frontend.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.frontendData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.frontend,\"data\":_vm.frontendData}})],1),_vm._v(\" \"),(_vm.frontend)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.staticFeData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.staticFe,\"data\":_vm.staticFeData}})],1),_vm._v(\" \"),(_vm.staticFe)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.frontendsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.frontends,\"data\":_vm.frontendsData}})],1),_vm._v(\" \"),(_vm.frontends)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.assetsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.assets,\"data\":_vm.assetsData}})],1),_vm._v(\" \"),(_vm.assets)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.emojiData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.emoji,\"data\":_vm.emojiData}})],1),_vm._v(\" \"),(_vm.emoji)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.chatData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.chat,\"data\":_vm.chatData}})],1),_vm._v(\" \"),(_vm.chat)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.markupData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.markup,\"data\":_vm.markupData}})],1),_vm._v(\" \"),(_vm.preload)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.preloadData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.preload,\"data\":_vm.preloadData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Gopher.vue?vue&type=template&id=6ff77a41&\"\nimport script from \"./Gopher.vue?vue&type=script&lang=js&\"\nexport * from \"./Gopher.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Gopher.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Gopher.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[(!_vm.loading)?_c('el-form',{attrs:{\"model\":_vm.gopherData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.gopher,\"data\":_vm.gopherData}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Http.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Http.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Http.vue?vue&type=template&id=e1a70b9a&\"\nimport script from \"./Http.vue?vue&type=script&lang=js&\"\nexport * from \"./Http.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Http.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Http.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.httpData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.http,\"data\":_vm.httpData}})],1),_vm._v(\" \"),(_vm.http)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.corsPlugData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.corsPlug,\"data\":_vm.corsPlugData}})],1),_vm._v(\" \"),(_vm.corsPlug)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.httpSecurityData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.httpSecurity,\"data\":_vm.httpSecurityData}})],1),_vm._v(\" \"),(_vm.httpSecurity)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.webCacheTtlData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.webCacheTtl,\"data\":_vm.webCacheTtlData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Instance.vue?vue&type=template&id=e19530e2&\"\nimport script from \"./Instance.vue?vue&type=script&lang=js&\"\nexport * from \"./Instance.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Instance.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Instance.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.instanceData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.instance,\"data\":_vm.instanceData}})],1),_vm._v(\" \"),(_vm.instance)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.adminTokenData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.adminToken,\"data\":_vm.adminTokenData}})],1),_vm._v(\" \"),(_vm.adminToken)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.welcomeData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.welcome,\"data\":_vm.welcomeData}})],1),_vm._v(\" \"),(_vm.welcome)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.scheduledActivityData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.scheduledActivity,\"data\":_vm.scheduledActivityData}})],1),_vm._v(\" \"),(_vm.scheduledActivity)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.manifestData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.manifest,\"data\":_vm.manifestData}})],1),_vm._v(\" \"),(_vm.manifest)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.pleromaUserData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth,\"data-search\":\"Pleroma.User\"}},[_c('setting',{attrs:{\"setting-group\":_vm.pleromaUser,\"data\":_vm.pleromaUserData}})],1),_vm._v(\" \"),(_vm.pleromaUser)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.faviconsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.favicons,\"data\":_vm.faviconsData}})],1),_vm._v(\" \"),(_vm.favicons)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.uriSchemesData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.uriSchemes,\"data\":_vm.uriSchemesData}})],1),_vm._v(\" \"),(_vm.uriSchemes)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.feedData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.feed,\"data\":_vm.feedData}})],1),_vm._v(\" \"),(_vm.feed)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.streamerData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.streamer,\"data\":_vm.streamerData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./JobQueue.vue?vue&type=template&id=75886b5e&\"\nimport script from \"./JobQueue.vue?vue&type=script&lang=js&\"\nexport * from \"./JobQueue.vue?vue&type=script&lang=js&\"\nimport style0 from \"./JobQueue.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"JobQueue.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.obanQueuesData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.obanQueues,\"data\":_vm.obanQueuesData}})],1),_vm._v(\" \"),(_vm.obanQueues)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.workersData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.workers,\"data\":_vm.workersData}})],1),_vm._v(\" \"),(_vm.workers)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.activityExpirationData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.activityExpiration,\"data\":_vm.activityExpirationData}})],1),_vm._v(\" \"),(_vm.activityExpiration)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.connectionsPoolsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.connectionsPools,\"data\":_vm.connectionsPoolsData}})],1),_vm._v(\" \"),(_vm.connectionsPools)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.poolsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.pools,\"data\":_vm.poolsData}})],1),_vm._v(\" \"),(_vm.pools)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.hackneyPoolsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.hackneyPools,\"data\":_vm.hackneyPoolsData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkFormatter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkFormatter.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./LinkFormatter.vue?vue&type=template&id=7fc32c68&\"\nimport script from \"./LinkFormatter.vue?vue&type=script&lang=js&\"\nexport * from \"./LinkFormatter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LinkFormatter.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"LinkFormatter.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.linkFormatterData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.linkFormatter,\"data\":_vm.linkFormatterData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Logger.vue?vue&type=template&id=17a20fb1&\"\nimport script from \"./Logger.vue?vue&type=script&lang=js&\"\nexport * from \"./Logger.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Logger.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Logger.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.loggerData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.logger,\"data\":_vm.loggerData}})],1),_vm._v(\" \"),(_vm.logger)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.consoleData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.console,\"data\":_vm.consoleData}})],1),_vm._v(\" \"),(_vm.console)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.exsysloggerData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.exsyslogger,\"data\":_vm.exsysloggerData}})],1),_vm._v(\" \"),(_vm.exsyslogger)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.quackData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.quack,\"data\":_vm.quackData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mailer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mailer.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Mailer.vue?vue&type=template&id=2076a984&\"\nimport script from \"./Mailer.vue?vue&type=script&lang=js&\"\nexport * from \"./Mailer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Mailer.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Mailer.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.mailerData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mailer,\"data\":_vm.mailerData}})],1),_vm._v(\" \"),(_vm.mailer)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.swooshData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.swoosh,\"data\":_vm.swooshData}})],1),_vm._v(\" \"),(_vm.swoosh)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.emailNotificationsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.emailNotifications,\"data\":_vm.emailNotificationsData}})],1),_vm._v(\" \"),(_vm.emailNotifications)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.userEmailData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.userEmail,\"data\":_vm.userEmailData}})],1),_vm._v(\" \"),(_vm.userEmail)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.newUsersDigestEmailData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.newUsersDigestEmail,\"data\":_vm.newUsersDigestEmailData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaProxy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaProxy.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./MediaProxy.vue?vue&type=template&id=2a6ebcaa&\"\nimport script from \"./MediaProxy.vue?vue&type=script&lang=js&\"\nexport * from \"./MediaProxy.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MediaProxy.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"MediaProxy.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[(!_vm.loading)?_c('el-form',{attrs:{\"model\":_vm.mediaProxyData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mediaProxy,\"data\":_vm.mediaProxyData}})],1):_vm._e(),_vm._v(\" \"),(_vm.mediaProxy)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('el-form',{attrs:{\"model\":_vm.httpInvalidationData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.httpInvalidation,\"data\":_vm.httpInvalidationData}})],1):_vm._e(),_vm._v(\" \"),(_vm.httpInvalidation)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('el-form',{attrs:{\"model\":_vm.scriptInvalidationData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.scriptInvalidation,\"data\":_vm.scriptInvalidationData}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Metadata.vue?vue&type=template&id=20e3cd95&\"\nimport script from \"./Metadata.vue?vue&type=script&lang=js&\"\nexport * from \"./Metadata.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Metadata.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Metadata.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.metadataData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.metadata,\"data\":_vm.metadataData}})],1),_vm._v(\" \"),(_vm.metadata)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.richMediaData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.richMedia,\"data\":_vm.richMediaData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./MRF.vue?vue&type=template&id=4c2e0bc2&\"\nimport script from \"./MRF.vue?vue&type=script&lang=js&\"\nexport * from \"./MRF.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MRF.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"MRF.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_vm._l((_vm.mrfSettings),function(setting){return _c('div',{key:setting.key},[(_vm.showMrfPolicy(setting.key))?_c('el-form',{attrs:{\"model\":_vm.getSettingData(setting),\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":setting,\"data\":_vm.getSettingData(setting)}}),_vm._v(\" \"),(setting)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e()],1):_vm._e()],1)}),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Other.vue?vue&type=template&id=3c7a4b1c&\"\nimport script from \"./Other.vue?vue&type=script&lang=js&\"\nexport * from \"./Other.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Other.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Other.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.mimeTypesData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mimeTypes,\"data\":_vm.mimeTypesData}})],1),_vm._v(\" \"),(_vm.mimeTypes)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.remoteIpData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.remoteIp,\"data\":_vm.remoteIpData}})],1),_vm._v(\" \"),(_vm.remoteIpData)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.modulesData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.modules,\"data\":_vm.modulesData}})],1),_vm._v(\" \"),(_vm.castAndValidate)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.castAndValidateData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.castAndValidate,\"data\":_vm.castAndValidateData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimiters.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimiters.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./RateLimiters.vue?vue&type=template&id=7dcebd79&\"\nimport script from \"./RateLimiters.vue?vue&type=script&lang=js&\"\nexport * from \"./RateLimiters.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RateLimiters.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"RateLimiters.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[(!_vm.loading)?_c('el-form',{attrs:{\"model\":_vm.rateLimitersData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.rateLimiters,\"data\":_vm.rateLimitersData}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Relays.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Relays.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Relays.vue?vue&type=template&id=ea95544e&\"\nimport script from \"./Relays.vue?vue&type=script&lang=js&\"\nexport * from \"./Relays.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Relays.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Relays.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"relays-container\"},[_c('div',{staticClass:\"follow-relay-container\"},[_c('el-input',{staticClass:\"follow-relay\",attrs:{\"placeholder\":_vm.$t('settings.followRelay')},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.followRelay($event)}},model:{value:(_vm.newRelay),callback:function ($$v) {_vm.newRelay=$$v},expression:\"newRelay\"}}),_vm._v(\" \"),_c('el-button',{nativeOn:{\"click\":function($event){return _vm.followRelay($event)}}},[_vm._v(_vm._s(_vm.$t('settings.follow')))])],1),_vm._v(\" \"),_c('el-table',{attrs:{\"data\":_vm.relays}},[_c('el-table-column',{attrs:{\"label\":_vm.$t('settings.instanceUrl'),\"prop\":\"actor\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('settings.followedBack'),\"width\":_vm.getLabelWidth,\"prop\":\"followed_back\",\"align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('i',{class:scope.row.followed_back ? 'el-icon-check' : 'el-icon-minus'})]}}],null,false,237257305)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('table.actions'),\"width\":_vm.getLabelWidth,\"fixed\":\"right\",\"align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},nativeOn:{\"click\":function($event){return _vm.deleteRelay(scope.row.actor)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('table.unfollow'))+\"\\n \")])]}}],null,false,877363589)})],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Upload.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Upload.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Upload.vue?vue&type=template&id=ae996124&\"\nimport script from \"./Upload.vue?vue&type=script&lang=js&\"\nexport * from \"./Upload.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Upload.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Upload.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.uploadData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.upload,\"data\":_vm.uploadData}})],1),_vm._v(\" \"),(_vm.upload)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),(_vm.showUploadersLocal)?_c('el-form',{attrs:{\"model\":_vm.uploadersLocalData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.uploadersLocal,\"data\":_vm.uploadersLocalData}}),_vm._v(\" \"),(_vm.uploadersLocal)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.showUploadersS3)?_c('el-form',{attrs:{\"model\":_vm.s3Data,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.s3,\"data\":_vm.s3Data}}),_vm._v(\" \"),(_vm.s3)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.showUploadersS3)?_c('el-form',{attrs:{\"model\":_vm.uploadersS3Data,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.uploadersS3,\"data\":_vm.uploadersS3Data}}),_vm._v(\" \"),(_vm.uploadersS3)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.uploadFilterMogrifyData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.uploadFilterMogrify,\"data\":_vm.uploadFilterMogrifyData}})],1),_vm._v(\" \"),(_vm.uploadFilterMogrify)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.uploadAnonymizeFilenameData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.uploadAnonymizeFilename,\"data\":_vm.uploadAnonymizeFilenameData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebPush.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebPush.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./WebPush.vue?vue&type=template&id=3ddc7c01&\"\nimport script from \"./WebPush.vue?vue&type=script&lang=js&\"\nexport * from \"./WebPush.vue?vue&type=script&lang=js&\"\nimport style0 from \"./WebPush.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"WebPush.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[(!_vm.loading)?_c('el-form',{attrs:{\"model\":_vm.vapidDetailsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.vapidDetails,\"data\":_vm.vapidDetailsData}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","export const tabs = description => {\n return {\n 'activity-pub': {\n label: 'settings.activityPub',\n settings: [':activitypub', ':user']\n },\n 'authentication': {\n label: 'settings.auth',\n settings: [':auth', ':ldap', ':oauth2', 'Pleroma.Web.Auth.Authenticator', ':restrict_unauthenticated']\n },\n 'esshd': {\n label: 'settings.esshd',\n settings: [':esshd']\n },\n 'captcha': {\n label: 'settings.captcha',\n settings: ['Pleroma.Captcha', 'Pleroma.Captcha.Kocaptcha']\n },\n 'frontend': {\n label: 'settings.frontend',\n settings: [':assets', ':chat', ':frontends', ':emoji', ':frontend_configurations', ':markup', ':static_fe']\n },\n 'gopher': {\n label: 'settings.gopher',\n settings: [':gopher']\n },\n 'http': {\n label: 'settings.http',\n settings: [':cors_plug', ':http', ':http_security', ':web_cache_ttl']\n },\n 'instance': {\n label: 'settings.instance',\n settings: [':admin_token', ':instance', ':instances_favicons', ':welcome', ':manifest', 'Pleroma.User', 'Pleroma.ScheduledActivity', ':uri_schemes', ':feed', ':streamer']\n },\n 'job-queue': {\n label: 'settings.jobQueue',\n settings: ['Pleroma.ActivityExpiration', ':connections_pool', ':hackney_pools', 'Oban', ':pools', ':workers']\n },\n 'link-formatter': {\n label: 'settings.linkFormatter',\n settings: ['Pleroma.Formatter']\n },\n 'logger': {\n label: 'settings.logger',\n settings: [':console', ':ex_syslogger', ':quack', ':logger']\n },\n 'mailer': {\n label: 'settings.mailer',\n settings: [':email_notifications', 'Pleroma.Emails.Mailer', 'Pleroma.Emails.UserEmail', ':swoosh', 'Pleroma.Emails.NewUsersDigestEmail']\n },\n 'media-proxy': {\n label: 'settings.mediaProxy',\n settings: [':media_proxy', 'Pleroma.Web.MediaProxy.Invalidation.Http', 'Pleroma.Web.MediaProxy.Invalidation.Script']\n },\n 'metadata': {\n label: 'settings.metadata',\n settings: ['Pleroma.Web.Metadata', ':rich_media']\n },\n 'mrf': {\n label: 'settings.mrf',\n settings: description.filter(el => el.tab === 'mrf').map(setting => setting.key)\n },\n 'rate-limiters': {\n label: 'settings.rateLimiters',\n settings: [':rate_limit']\n },\n 'relays': {\n label: 'settings.relays',\n settings: ['relays']\n },\n 'web-push': {\n label: 'settings.webPush',\n settings: [':vapid_details']\n },\n 'upload': {\n label: 'settings.upload',\n settings: ['Pleroma.Upload.Filter.AnonymizeFilename', 'Pleroma.Upload.Filter.Mogrify', 'Pleroma.Uploaders.S3', 'Pleroma.Uploaders.Local', 'Pleroma.Upload', ':s3']\n },\n 'other': {\n label: 'settings.other',\n settings: [':mime', 'Pleroma.Plugs.RemoteIp', ':modules', 'Pleroma.Web.ApiSpec.CastAndValidate']\n }\n }\n}\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=82f78b3e&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=82f78b3e&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"82f78b3e\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimitInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimitInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProxyUrlInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProxyUrlInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditableKeywordInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditableKeywordInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkFormatter.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkFormatter.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Inputs.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Inputs.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageUploadInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageUploadInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-60a9.22fe45f3.js b/priv/static/adminfe/static/js/chunk-60a9.22fe45f3.js deleted file mode 100644 index a23d46b72..000000000 --- a/priv/static/adminfe/static/js/chunk-60a9.22fe45f3.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-60a9"],{"/En5":function(e,t,n){},"0Ruq":function(e,t,n){"use strict";var a=n("/En5");n.n(a).a},"9/5/":function(e,t,n){(function(t){var n="Expected a function",a=NaN,r="[object Symbol]",i=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt,l="object"==typeof t&&t&&t.Object===Object&&t,d="object"==typeof self&&self&&self.Object===Object&&self,h=l||d||Function("return this")(),p=Object.prototype.toString,f=Math.max,v=Math.min,m=function(){return h.Date.now()};function b(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function g(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&p.call(e)==r}(e))return a;if(b(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=b(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(i,"");var n=s.test(e);return n||c.test(e)?u(e.slice(2),n?2:8):o.test(e)?a:+e}e.exports=function(e,t,a){var r,i,o,s,c,u,l=0,d=!1,h=!1,p=!0;if("function"!=typeof e)throw new TypeError(n);function y(t){var n=r,a=i;return r=i=void 0,l=t,s=e.apply(a,n)}function x(e){var n=e-u;return void 0===u||n>=t||n<0||h&&e-l>=o}function C(){var e=m();if(x(e))return _(e);c=setTimeout(C,function(e){var n=t-(e-u);return h?v(n,o-(e-l)):n}(e))}function _(e){return c=void 0,p&&r?y(e):(r=i=void 0,s)}function $(){var e=m(),n=x(e);if(r=arguments,i=this,u=e,n){if(void 0===c)return function(e){return l=e,c=setTimeout(C,t),d?y(e):s}(u);if(h)return c=setTimeout(C,t),y(u)}return void 0===c&&(c=setTimeout(C,t)),s}return t=g(t)||0,b(a)&&(d=!!a.leading,o=(h="maxWait"in a)?f(g(a.maxWait)||0,t):o,p="trailing"in a?!!a.trailing:p),$.cancel=function(){void 0!==c&&clearTimeout(c),l=0,r=u=i=c=void 0},$.flush=function(){return void 0===c?s:_(m())},$}}).call(this,n("yLpj"))},mAEd:function(e,t,n){"use strict";n.r(t);var a=n("9/5/"),r=n.n(a),i={name:"MediaProxyCache",components:{RebootButton:n("rIUS").a},data:function(){return{urls:"",ban:!1,search:"",selectedUrls:[]}},computed:{bannedUrls:function(){return this.$store.state.mediaProxyCache.bannedUrls},currentPage:function(){return this.$store.state.mediaProxyCache.currentPage},isDesktop:function(){return"desktop"===this.$store.state.app.device},loading:function(){return this.$store.state.mediaProxyCache.loading},pageSize:function(){return this.$store.state.mediaProxyCache.pageSize},removeSelectedDisabled:function(){return 0===this.selectedUrls.length},urlsCount:function(){return this.$store.state.mediaProxyCache.totalUrlsCount}},created:function(){var e=this;this.handleDebounceSearchInput=r()(function(t){e.$store.dispatch("SearchUrls",{query:t,page:1})},500)},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("ListBannedUrls",{page:1})},methods:{evictURL:function(){var e=this.urls.split(",").map(function(e){return e.trim()}).filter(function(e){return e.length>0});this.$store.dispatch("PurgeUrls",{urls:e,ban:this.ban}),this.urls=""},handlePageChange:function(e){this.$store.dispatch("ListBannedUrls",{page:e})},handleSelectionChange:function(e){this.$data.selectedUrls=e},removeSelected:function(){var e=this.selectedUrls.map(function(e){return e.url});this.$store.dispatch("RemoveBannedUrls",e),this.selectedUrls=[]},removeUrl:function(e){this.$store.dispatch("RemoveBannedUrls",[e])}}},o=(n("0Ruq"),n("KHd+")),s=Object(o.a)(i,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"media-proxy-cache-container"},[n("div",{staticClass:"media-proxy-cache-header-container"},[n("h1",[e._v(e._s(e.$t("mediaProxyCache.mediaProxyCache")))]),e._v(" "),n("reboot-button")],1),e._v(" "),n("p",{staticClass:"media-proxy-cache-header"},[e._v(e._s(e.$t("mediaProxyCache.evictObjectsHeader")))]),e._v(" "),n("div",{staticClass:"url-input-container"},[n("el-input",{staticClass:"url-input",attrs:{placeholder:e.$t("mediaProxyCache.url"),type:"textarea",autosize:"",clearable:""},model:{value:e.urls,callback:function(t){e.urls=t},expression:"urls"}}),e._v(" "),n("el-checkbox",{model:{value:e.ban,callback:function(t){e.ban=t},expression:"ban"}},[e._v(e._s(e.$t("mediaProxyCache.ban")))]),e._v(" "),n("el-button",{staticClass:"evict-button",on:{click:e.evictURL}},[e._v(e._s(e.$t("mediaProxyCache.evict")))])],1),e._v(" "),n("span",{staticClass:"expl url-input-expl"},[e._v(e._s(e.$t("mediaProxyCache.multipleInput")))]),e._v(" "),n("p",{staticClass:"media-proxy-cache-header"},[e._v(e._s(e.$t("mediaProxyCache.listBannedUrlsHeader")))]),e._v(" "),n("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],staticClass:"banned-urls-table",attrs:{data:e.bannedUrls},on:{"selection-change":e.handleSelectionChange}},[e._v(">\n "),n("el-table-column",{attrs:{type:"selection",align:"center",width:"55"}}),e._v(" "),n("el-table-column",{attrs:{"min-width":e.isDesktop?320:120,prop:"url"},scopedSlots:e._u([{key:"header",fn:function(t){return[n("el-input",{attrs:{placeholder:e.$t("users.search"),size:"mini","prefix-icon":"el-icon-search"},on:{input:e.handleDebounceSearchInput},model:{value:e.search,callback:function(t){e.search=t},expression:"search"}})]}}])}),e._v(" "),n("el-table-column",{scopedSlots:e._u([{key:"default",fn:function(t){return[n("el-button",{staticClass:"remove-url-button",attrs:{size:"mini"},on:{click:function(n){return e.removeUrl(t.row.url)}}},[e._v(e._s(e.$t("mediaProxyCache.remove")))])]}}])},[n("template",{slot:"header"},[n("el-button",{staticClass:"remove-url-button",attrs:{disabled:e.removeSelectedDisabled,size:"mini"},on:{click:function(t){return e.removeSelected()}}},[e._v(e._s(e.$t("mediaProxyCache.removeSelected")))])],1)],2)],1),e._v(" "),e.loading?e._e():n("div",{staticClass:"pagination"},[n("el-pagination",{attrs:{total:e.urlsCount,"current-page":e.currentPage,"page-size":e.pageSize,"hide-on-single-page":"",layout:"prev, pager, next"},on:{"current-change":e.handlePageChange}})],1)],1)},[],!1,null,"039e6dbb",null);s.options.__file="index.vue";t.default=s.exports}}]); -//# sourceMappingURL=chunk-60a9.22fe45f3.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-60a9.22fe45f3.js.map b/priv/static/adminfe/static/js/chunk-60a9.22fe45f3.js.map deleted file mode 100644 index 690979713..000000000 --- a/priv/static/adminfe/static/js/chunk-60a9.22fe45f3.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/mediaProxyCache/index.vue?a139","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./src/views/mediaProxyCache/index.vue?8634","webpack:///./src/views/mediaProxyCache/index.vue?888e","webpack:///src/views/mediaProxyCache/index.vue","webpack:///./src/views/mediaProxyCache/index.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_039e6dbb_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","global","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","Object","freeSelf","self","root","Function","objectToString","prototype","toString","nativeMax","Math","max","nativeMin","min","now","Date","isObject","value","type","toNumber","isObjectLike","call","isSymbol","other","valueOf","replace","isBinary","test","slice","module","exports","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","cancel","clearTimeout","flush","views_mediaProxyCachevue_type_script_lang_js_","name","components","RebootButton","data","urls","ban","search","selectedUrls","computed","bannedUrls","$store","state","mediaProxyCache","currentPage","isDesktop","app","device","loading","pageSize","removeSelectedDisabled","length","urlsCount","totalUrlsCount","created","_this","handleDebounceSearchInput","lodash_debounce_default","query","dispatch","page","mounted","methods","evictURL","split","map","url","trim","filter","el","handlePageChange","handleSelectionChange","$data","removeSelected","removeUrl","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","_v","_s","$t","attrs","placeholder","autosize","clearable","model","callback","$$v","expression","on","click","directives","rawName","selection-change","align","width","min-width","prop","scopedSlots","_u","key","fn","scope","size","prefix-icon","input","$event","row","slot","disabled","_e","total","current-page","page-size","hide-on-single-page","layout","current-change","__file","__webpack_exports__"],"mappings":"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","file":"static/js/chunk-60a9.22fe45f3.js","sourcesContent":["import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=039e6dbb&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=039e6dbb&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"media-proxy-cache-container\"},[_c('div',{staticClass:\"media-proxy-cache-header-container\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('mediaProxyCache.mediaProxyCache')))]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('p',{staticClass:\"media-proxy-cache-header\"},[_vm._v(_vm._s(_vm.$t('mediaProxyCache.evictObjectsHeader')))]),_vm._v(\" \"),_c('div',{staticClass:\"url-input-container\"},[_c('el-input',{staticClass:\"url-input\",attrs:{\"placeholder\":_vm.$t('mediaProxyCache.url'),\"type\":\"textarea\",\"autosize\":\"\",\"clearable\":\"\"},model:{value:(_vm.urls),callback:function ($$v) {_vm.urls=$$v},expression:\"urls\"}}),_vm._v(\" \"),_c('el-checkbox',{model:{value:(_vm.ban),callback:function ($$v) {_vm.ban=$$v},expression:\"ban\"}},[_vm._v(_vm._s(_vm.$t('mediaProxyCache.ban')))]),_vm._v(\" \"),_c('el-button',{staticClass:\"evict-button\",on:{\"click\":_vm.evictURL}},[_vm._v(_vm._s(_vm.$t('mediaProxyCache.evict')))])],1),_vm._v(\" \"),_c('span',{staticClass:\"expl url-input-expl\"},[_vm._v(_vm._s(_vm.$t('mediaProxyCache.multipleInput')))]),_vm._v(\" \"),_c('p',{staticClass:\"media-proxy-cache-header\"},[_vm._v(_vm._s(_vm.$t('mediaProxyCache.listBannedUrlsHeader')))]),_vm._v(\" \"),_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"banned-urls-table\",attrs:{\"data\":_vm.bannedUrls},on:{\"selection-change\":_vm.handleSelectionChange}},[_vm._v(\">\\n \"),_c('el-table-column',{attrs:{\"type\":\"selection\",\"align\":\"center\",\"width\":\"55\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"min-width\":_vm.isDesktop ? 320 : 120,\"prop\":\"url\"},scopedSlots:_vm._u([{key:\"header\",fn:function(scope){return [_c('el-input',{attrs:{\"placeholder\":_vm.$t('users.search'),\"size\":\"mini\",\"prefix-icon\":\"el-icon-search\"},on:{\"input\":_vm.handleDebounceSearchInput},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})]}}])}),_vm._v(\" \"),_c('el-table-column',{scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{staticClass:\"remove-url-button\",attrs:{\"size\":\"mini\"},on:{\"click\":function($event){return _vm.removeUrl(scope.row.url)}}},[_vm._v(_vm._s(_vm.$t('mediaProxyCache.remove')))])]}}])},[_c('template',{slot:\"header\"},[_c('el-button',{staticClass:\"remove-url-button\",attrs:{\"disabled\":_vm.removeSelectedDisabled,\"size\":\"mini\"},on:{\"click\":function($event){return _vm.removeSelected()}}},[_vm._v(_vm._s(_vm.$t('mediaProxyCache.removeSelected')))])],1)],2)],1),_vm._v(\" \"),(!_vm.loading)?_c('div',{staticClass:\"pagination\"},[_c('el-pagination',{attrs:{\"total\":_vm.urlsCount,\"current-page\":_vm.currentPage,\"page-size\":_vm.pageSize,\"hide-on-single-page\":\"\",\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.handlePageChange}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=039e6dbb&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=039e6dbb&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"039e6dbb\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-654e.38dd4b85.js b/priv/static/adminfe/static/js/chunk-654d.653b067f.js similarity index 58% rename from priv/static/adminfe/static/js/chunk-654e.38dd4b85.js rename to priv/static/adminfe/static/js/chunk-654d.653b067f.js index eecdac498..209873ec1 100644 --- a/priv/static/adminfe/static/js/chunk-654e.38dd4b85.js +++ b/priv/static/adminfe/static/js/chunk-654d.653b067f.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-654e"],{"0M56":function(t,e,s){"use strict";var n=s("JV9I");s.n(n).a},"0tb0":function(t,e,s){"use strict";var n=s("n2GA");s.n(n).a},"9/5/":function(t,e,s){(function(e){var s="Expected a function",n=NaN,r="[object Symbol]",a=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt,u="object"==typeof e&&e&&e.Object===Object&&e,j="object"==typeof self&&self&&self.Object===Object&&self,d=u||j||Function("return this")(),m=Object.prototype.toString,p=Math.max,f=Math.min,g=function(){return d.Date.now()};function h(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function v(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&m.call(t)==r}(t))return n;if(h(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=h(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(a,"");var s=i.test(t);return s||l.test(t)?c(t.slice(2),s?2:8):o.test(t)?n:+t}t.exports=function(t,e,n){var r,a,o,i,l,c,u=0,j=!1,d=!1,m=!0;if("function"!=typeof t)throw new TypeError(s);function b(e){var s=r,n=a;return r=a=void 0,u=e,i=t.apply(n,s)}function y(t){var s=t-c;return void 0===c||s>=e||s<0||d&&t-u>=o}function k(){var t=g();if(y(t))return x(t);l=setTimeout(k,function(t){var s=e-(t-c);return d?f(s,o-(t-u)):s}(t))}function x(t){return l=void 0,m&&r?b(t):(r=a=void 0,i)}function z(){var t=g(),s=y(t);if(r=arguments,a=this,c=t,s){if(void 0===l)return function(t){return u=t,l=setTimeout(k,e),j?b(t):i}(c);if(d)return l=setTimeout(k,e),b(c)}return void 0===l&&(l=setTimeout(k,e)),i}return e=v(e)||0,h(n)&&(j=!!n.leading,o=(d="maxWait"in n)?p(v(n.maxWait)||0,e):o,m="trailing"in n?!!n.trailing:m),z.cancel=function(){void 0!==l&&clearTimeout(l),u=0,r=c=a=l=void 0},z.flush=function(){return void 0===l?i:x(g())},z}}).call(this,s("yLpj"))},CmY0:function(t,e,s){"use strict";s.r(e);var n=s("wd/R"),r=s.n(n),a=s("LvDl"),o=s.n(a),i=s("9/5/"),l=s.n(i),c=s("rIUS"),u={name:"LogEntryMessage",props:{actor:{type:Object,required:!0},message:{type:String,required:!0}},computed:{logEntryMessage:function(){return this.message.split(this.actor.nickname)[1]}},methods:{propertyExists:function(t,e){return t[e]}}},j=(s("0tb0"),s("KHd+")),d=Object(j.a)(u,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("span",[t.propertyExists(t.actor,"id")?s("router-link",{staticClass:"router-link",attrs:{to:{name:"UsersShow",params:{id:t.actor.id}}}},[t.propertyExists(t.actor,"nickname")?s("span",{staticStyle:{"font-weight":"600"}},[t._v("\n @"+t._s(t.actor.nickname)+"\n ")]):t._e()]):t._e(),t._v(" "),s("span",[t._v(t._s(t.logEntryMessage))])],1)},[],!1,null,null,null);d.options.__file="LogEntryMessage.vue";var m=d.exports,p={components:{RebootButton:c.a,LogEntryMessage:m},data:function(){return{dateRange:"",search:"",user:"",currentPage:1}},computed:{isMobile:function(){return"mobile"===this.$store.state.app.device},loading:function(){return this.$store.state.moderationLog.logLoading&&this.$store.state.moderationLog.adminsLoading},log:function(){return this.$store.state.moderationLog.fetchedLog},total:function(){return this.$store.state.moderationLog.logItemsCount},users:function(){return[{label:"Admins",options:this.$store.state.moderationLog.admins.users},{label:"Moderators",options:this.$store.state.moderationLog.moderators.users}]}},created:function(){var t=this;this.handleDebounceSearchInput=l()(function(e){t.fetchLogWithFilters()},500)},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchModerationLog"),this.$store.dispatch("FetchAdmins")},methods:{fetchLogWithFilters:function(){var t=o.a.omitBy({start_date:this.dateRange?this.dateRange[0].toISOString():null,end_date:this.dateRange?this.dateRange[1].toISOString():null,user_id:this.user,search:this.search,page:this.currentPage},function(t){return""===t||null===t});this.$store.dispatch("FetchModerationLog",t)},normalizeTimestamp:function(t){return r()(1e3*t).format("YYYY-MM-DD HH:mm")},propertyExists:function(t,e){return t[e]}}},f=(s("0M56"),Object(j.a)(p,function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.loading?t._e():s("div",{staticClass:"moderation-log-container"},[s("div",{staticClass:"moderation-log-header-container"},[s("h1",[t._v(t._s(t.$t("moderationLog.moderationLog")))]),t._v(" "),s("reboot-button")],1),t._v(" "),s("div",{staticClass:"moderation-log-nav-container"},[s("el-select",{staticClass:"moderation-log-user-select",attrs:{clearable:"",placeholder:"Filter by admin/moderator"},on:{change:t.fetchLogWithFilters},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}},t._l(t.users,function(e){return s("el-option-group",{key:e.label,attrs:{label:e.label}},t._l(e.options,function(t){return s("el-option",{key:t.id,attrs:{label:t.nickname,value:t.id}})}),1)}),1),t._v(" "),s("el-input",{staticClass:"moderation-log-search",attrs:{placeholder:"Search logs",clearable:""},on:{input:t.handleDebounceSearchInput},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}})],1),t._v(" "),s("el-date-picker",{staticClass:"moderation-log-date-panel",attrs:{"default-time":["00:00:00","23:59:59"],type:"daterange","start-placeholder":"Start date","end-placeholder":"End date","unlink-panels":""},on:{change:t.fetchLogWithFilters},model:{value:t.dateRange,callback:function(e){t.dateRange=e},expression:"dateRange"}}),t._v(" "),s("el-timeline",t._l(t.log,function(e,n){return s("el-timeline-item",{key:n,attrs:{timestamp:t.normalizeTimestamp(e.time)}},[t.propertyExists(e.data.actor,"nickname")?s("log-entry-message",{attrs:{actor:e.data.actor,message:e.message}}):s("span",[t._v(t._s(e.message))])],1)}),1),t._v(" "),s("div",{staticClass:"pagination"},[s("el-pagination",{attrs:{"current-page":t.currentPage,"hide-on-single-page":!0,"page-size":50,total:t.total,small:t.isMobile,layout:"prev, pager, next"},on:{"update:currentPage":function(e){t.currentPage=e},"update:current-page":function(e){t.currentPage=e},"current-change":t.fetchLogWithFilters}})],1)],1)},[],!1,null,"60b585cf",null));f.options.__file="index.vue";e.default=f.exports},JV9I:function(t,e,s){},RnhZ:function(t,e,s){var n={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function r(t){var e=a(t);return s(e)}function a(t){if(!s.o(n,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return n[t]}r.keys=function(){return Object.keys(n)},r.resolve=a,t.exports=r,r.id="RnhZ"},n2GA:function(t,e,s){}}]); -//# sourceMappingURL=chunk-654e.38dd4b85.js.map \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-654d"],{"0M56":function(t,e,s){"use strict";var n=s("JV9I");s.n(n).a},"0tb0":function(t,e,s){"use strict";var n=s("n2GA");s.n(n).a},"9/5/":function(t,e,s){(function(e){var s="Expected a function",n=NaN,r="[object Symbol]",a=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt,u="object"==typeof e&&e&&e.Object===Object&&e,j="object"==typeof self&&self&&self.Object===Object&&self,d=u||j||Function("return this")(),m=Object.prototype.toString,g=Math.max,p=Math.min,f=function(){return d.Date.now()};function h(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function v(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&m.call(t)==r}(t))return n;if(h(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=h(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(a,"");var s=i.test(t);return s||l.test(t)?c(t.slice(2),s?2:8):o.test(t)?n:+t}t.exports=function(t,e,n){var r,a,o,i,l,c,u=0,j=!1,d=!1,m=!0;if("function"!=typeof t)throw new TypeError(s);function b(e){var s=r,n=a;return r=a=void 0,u=e,i=t.apply(n,s)}function y(t){var s=t-c;return void 0===c||s>=e||s<0||d&&t-u>=o}function k(){var t=f();if(y(t))return x(t);l=setTimeout(k,function(t){var s=e-(t-c);return d?p(s,o-(t-u)):s}(t))}function x(t){return l=void 0,m&&r?b(t):(r=a=void 0,i)}function z(){var t=f(),s=y(t);if(r=arguments,a=this,c=t,s){if(void 0===l)return function(t){return u=t,l=setTimeout(k,e),j?b(t):i}(c);if(d)return l=setTimeout(k,e),b(c)}return void 0===l&&(l=setTimeout(k,e)),i}return e=v(e)||0,h(n)&&(j=!!n.leading,o=(d="maxWait"in n)?g(v(n.maxWait)||0,e):o,m="trailing"in n?!!n.trailing:m),z.cancel=function(){void 0!==l&&clearTimeout(l),u=0,r=c=a=l=void 0},z.flush=function(){return void 0===l?i:x(f())},z}}).call(this,s("yLpj"))},CmY0:function(t,e,s){"use strict";s.r(e);var n=s("wd/R"),r=s.n(n),a=s("LvDl"),o=s.n(a),i=s("9/5/"),l=s.n(i),c=s("rIUS"),u={name:"LogEntryMessage",props:{actor:{type:Object,required:!0},message:{type:String,required:!0}},computed:{logEntryMessage:function(){return this.message.split(this.actor.nickname)[1]}},methods:{propertyExists:function(t,e){return t[e]}}},j=(s("0tb0"),s("KHd+")),d=Object(j.a)(u,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("span",[t.propertyExists(t.actor,"id")?s("router-link",{staticClass:"router-link",attrs:{to:{name:"UsersShow",params:{id:t.actor.id}}}},[t.propertyExists(t.actor,"nickname")?s("span",{staticStyle:{"font-weight":"600"}},[t._v("\n @"+t._s(t.actor.nickname)+"\n ")]):t._e()]):t._e(),t._v(" "),s("span",[t._v(t._s(t.logEntryMessage))])],1)},[],!1,null,null,null);d.options.__file="LogEntryMessage.vue";var m=d.exports,g={components:{RebootButton:c.a,LogEntryMessage:m},data:function(){return{dateRange:"",search:"",user:"",currentPage:1}},computed:{isMobile:function(){return"mobile"===this.$store.state.app.device},loading:function(){return this.$store.state.moderationLog.logLoading&&this.$store.state.moderationLog.adminsLoading},log:function(){return this.$store.state.moderationLog.fetchedLog},total:function(){return this.$store.state.moderationLog.logItemsCount},users:function(){return[{label:"Admins",options:this.$store.state.moderationLog.admins.users},{label:"Moderators",options:this.$store.state.moderationLog.moderators.users}]}},created:function(){var t=this;this.handleDebounceSearchInput=l()(function(e){t.fetchLogWithFilters()},500)},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchModerationLog"),this.$store.dispatch("FetchAdmins")},methods:{fetchLogWithFilters:function(){var t=o.a.omitBy({start_date:this.dateRange?this.dateRange[0].toISOString():null,end_date:this.dateRange?this.dateRange[1].toISOString():null,user_id:this.user,search:this.search,page:this.currentPage},function(t){return""===t||null===t});this.$store.dispatch("FetchModerationLog",t)},normalizeTimestamp:function(t){return r()(1e3*t).format("YYYY-MM-DD HH:mm")},propertyExists:function(t,e){return t[e]}}},p=(s("0M56"),Object(j.a)(g,function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.loading?t._e():s("div",{staticClass:"moderation-log-container"},[s("div",{staticClass:"moderation-log-header-container"},[s("h1",[t._v(t._s(t.$t("moderationLog.moderationLog")))]),t._v(" "),s("reboot-button")],1),t._v(" "),s("div",{staticClass:"moderation-log-nav-container"},[s("el-select",{staticClass:"moderation-log-user-select",attrs:{clearable:"",placeholder:"Filter by admin/moderator"},on:{change:t.fetchLogWithFilters},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}},t._l(t.users,function(e){return s("el-option-group",{key:e.label,attrs:{label:e.label}},t._l(e.options,function(t){return s("el-option",{key:t.id,attrs:{label:t.nickname,value:t.id}})}),1)}),1),t._v(" "),s("el-input",{staticClass:"moderation-log-search",attrs:{placeholder:"Search logs",clearable:""},on:{input:t.handleDebounceSearchInput},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}})],1),t._v(" "),s("el-date-picker",{staticClass:"moderation-log-date-panel",attrs:{"default-time":["00:00:00","23:59:59"],type:"daterange","start-placeholder":"Start date","end-placeholder":"End date","unlink-panels":""},on:{change:t.fetchLogWithFilters},model:{value:t.dateRange,callback:function(e){t.dateRange=e},expression:"dateRange"}}),t._v(" "),s("el-timeline",t._l(t.log,function(e,n){return s("el-timeline-item",{key:n,attrs:{timestamp:t.normalizeTimestamp(e.time)}},[t.propertyExists(e.data.actor,"nickname")?s("log-entry-message",{attrs:{actor:e.data.actor,message:e.message}}):s("span",[t._v(t._s(e.message))])],1)}),1),t._v(" "),s("div",{staticClass:"pagination"},[s("el-pagination",{attrs:{"current-page":t.currentPage,"hide-on-single-page":!0,"page-size":50,total:t.total,small:t.isMobile,layout:"prev, pager, next"},on:{"update:currentPage":function(e){t.currentPage=e},"update:current-page":function(e){t.currentPage=e},"current-change":t.fetchLogWithFilters}})],1)],1)},[],!1,null,"60b585cf",null));p.options.__file="index.vue";e.default=p.exports},JV9I:function(t,e,s){},RnhZ:function(t,e,s){var n={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-in":"7C5Q","./en-in.js":"7C5Q","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./en-sg":"t+mt","./en-sg.js":"t+mt","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fil":"1ppg","./fil.js":"1ppg","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-deva":"qvJo","./gom-deva.js":"qvJo","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./oc-lnc":"Fnuy","./oc-lnc.js":"Fnuy","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tk":"Wv91","./tk.js":"Wv91","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-mo":"OmwH","./zh-mo.js":"OmwH","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function r(t){var e=a(t);return s(e)}function a(t){if(!s.o(n,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return n[t]}r.keys=function(){return Object.keys(n)},r.resolve=a,t.exports=r,r.id="RnhZ"},n2GA:function(t,e,s){}}]); +//# sourceMappingURL=chunk-654d.653b067f.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-654d.653b067f.js.map b/priv/static/adminfe/static/js/chunk-654d.653b067f.js.map new file mode 100644 index 000000000..72aca0e98 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-654d.653b067f.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/moderation_log/index.vue?678d","webpack:///./src/views/moderation_log/LogEntryMessage.vue?45d8","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./src/views/moderation_log/index.vue?f0fa","webpack:///./src/views/moderation_log/LogEntryMessage.vue?15ac","webpack:///src/views/moderation_log/LogEntryMessage.vue","webpack:///./src/views/moderation_log/LogEntryMessage.vue","webpack:///./src/views/moderation_log/LogEntryMessage.vue?cbf8","webpack:///./src/views/moderation_log/index.vue?bce9","webpack:///src/views/moderation_log/index.vue","webpack:///./src/views/moderation_log/index.vue","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_60b585cf_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_LogEntryMessage_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","global","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","Object","freeSelf","self","root","Function","objectToString","prototype","toString","nativeMax","Math","max","nativeMin","min","now","Date","isObject","value","type","toNumber","isObjectLike","call","isSymbol","other","valueOf","replace","isBinary","test","slice","module","exports","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","cancel","clearTimeout","flush","moderation_log_LogEntryMessagevue_type_script_lang_js_","name","props","actor","required","message","String","computed","logEntryMessage","split","nickname","methods","propertyExists","account","property","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","to","params","id","staticStyle","font-weight","_v","_s","_e","__file","LogEntryMessage","views_moderation_logvue_type_script_lang_js_","components","RebootButton","data","dateRange","search","user","currentPage","isMobile","$store","state","app","device","loading","moderationLog","logLoading","adminsLoading","log","fetchedLog","total","logItemsCount","users","label","admins","moderators","created","_this","handleDebounceSearchInput","lodash_debounce_default","query","fetchLogWithFilters","mounted","dispatch","filters","lodash_default","a","omitBy","start_date","toISOString","end_date","user_id","page","val","normalizeTimestamp","timestamp","moment_default","format","moderation_log_component","$t","clearable","placeholder","on","change","model","callback","$$v","expression","_l","group","key","item","input","default-time","start-placeholder","end-placeholder","unlink-panels","logEntry","index","current-page","hide-on-single-page","page-size","small","layout","update:currentPage","$event","update:current-page","current-change","__webpack_exports__","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-in","./en-in.js","./en-nz","./en-nz.js","./en-sg","./en-sg.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fil","./fil.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-deva","./gom-deva.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./oc-lnc","./oc-lnc.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tk","./tk.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-mo","./zh-mo.js","./zh-tw","./zh-tw.js","webpackContext","req","webpackContextResolve","o","e","Error","code","keys","resolve"],"mappings":"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,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,WAAA,OACAC,cAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,QAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,WAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,QAIA,SAAAC,EAAAC,GACA,IAAAlW,EAAAmW,EAAAD,GACA,OAAA1c,EAAAwG,GAEA,SAAAmW,EAAAD,GACA,IAAA1c,EAAA4c,EAAA9Q,EAAA4Q,GAAA,CACA,IAAAG,EAAA,IAAAC,MAAA,uBAAAJ,EAAA,KAEA,MADAG,EAAAE,KAAA,mBACAF,EAEA,OAAA/Q,EAAA4Q,GAEAD,EAAAO,KAAA,WACA,OAAAlc,OAAAkc,KAAAlR,IAEA2Q,EAAAQ,QAAAN,EACAja,EAAAC,QAAA8Z,EACAA,EAAAjW,GAAA","file":"static/js/chunk-654d.653b067f.js","sourcesContent":["import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=60b585cf&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=60b585cf&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogEntryMessage.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogEntryMessage.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"moderation-log-container\"},[_c('div',{staticClass:\"moderation-log-header-container\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('moderationLog.moderationLog')))]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"moderation-log-nav-container\"},[_c('el-select',{staticClass:\"moderation-log-user-select\",attrs:{\"clearable\":\"\",\"placeholder\":\"Filter by admin/moderator\"},on:{\"change\":_vm.fetchLogWithFilters},model:{value:(_vm.user),callback:function ($$v) {_vm.user=$$v},expression:\"user\"}},_vm._l((_vm.users),function(group){return _c('el-option-group',{key:group.label,attrs:{\"label\":group.label}},_vm._l((group.options),function(item){return _c('el-option',{key:item.id,attrs:{\"label\":item.nickname,\"value\":item.id}})}),1)}),1),_vm._v(\" \"),_c('el-input',{staticClass:\"moderation-log-search\",attrs:{\"placeholder\":\"Search logs\",\"clearable\":\"\"},on:{\"input\":_vm.handleDebounceSearchInput},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_vm._v(\" \"),_c('el-date-picker',{staticClass:\"moderation-log-date-panel\",attrs:{\"default-time\":['00:00:00', '23:59:59'],\"type\":\"daterange\",\"start-placeholder\":\"Start date\",\"end-placeholder\":\"End date\",\"unlink-panels\":\"\"},on:{\"change\":_vm.fetchLogWithFilters},model:{value:(_vm.dateRange),callback:function ($$v) {_vm.dateRange=$$v},expression:\"dateRange\"}}),_vm._v(\" \"),_c('el-timeline',_vm._l((_vm.log),function(logEntry,index){return _c('el-timeline-item',{key:index,attrs:{\"timestamp\":_vm.normalizeTimestamp(logEntry.time)}},[(_vm.propertyExists(logEntry.data.actor, 'nickname'))?_c('log-entry-message',{attrs:{\"actor\":logEntry.data.actor,\"message\":logEntry.message}}):_c('span',[_vm._v(_vm._s(logEntry.message))])],1)}),1),_vm._v(\" \"),_c('div',{staticClass:\"pagination\"},[_c('el-pagination',{attrs:{\"current-page\":_vm.currentPage,\"hide-on-single-page\":true,\"page-size\":50,\"total\":_vm.total,\"small\":_vm.isMobile,\"layout\":\"prev, pager, next\"},on:{\"update:currentPage\":function($event){_vm.currentPage=$event},\"update:current-page\":function($event){_vm.currentPage=$event},\"current-change\":_vm.fetchLogWithFilters}})],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogEntryMessage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogEntryMessage.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./LogEntryMessage.vue?vue&type=template&id=da9d889c&\"\nimport script from \"./LogEntryMessage.vue?vue&type=script&lang=js&\"\nexport * from \"./LogEntryMessage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LogEntryMessage.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"LogEntryMessage.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[(_vm.propertyExists(_vm.actor, 'id'))?_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":{ name: 'UsersShow', params: { id: _vm.actor.id }}}},[(_vm.propertyExists(_vm.actor, 'nickname'))?_c('span',{staticStyle:{\"font-weight\":\"600\"}},[_vm._v(\"\\n @\"+_vm._s(_vm.actor.nickname)+\"\\n \")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.logEntryMessage))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=60b585cf&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=60b585cf&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"60b585cf\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-in\": \"7C5Q\",\n\t\"./en-in.js\": \"7C5Q\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./en-sg\": \"t+mt\",\n\t\"./en-sg.js\": \"t+mt\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fil\": \"1ppg\",\n\t\"./fil.js\": \"1ppg\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-deva\": \"qvJo\",\n\t\"./gom-deva.js\": \"qvJo\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./oc-lnc\": \"Fnuy\",\n\t\"./oc-lnc.js\": \"Fnuy\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tk\": \"Wv91\",\n\t\"./tk.js\": \"Wv91\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-mo\": \"OmwH\",\n\t\"./zh-mo.js\": \"OmwH\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-654e.38dd4b85.js.map b/priv/static/adminfe/static/js/chunk-654e.38dd4b85.js.map deleted file mode 100644 index 4fc105fb7..000000000 --- a/priv/static/adminfe/static/js/chunk-654e.38dd4b85.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/moderation_log/index.vue?678d","webpack:///./src/views/moderation_log/LogEntryMessage.vue?45d8","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./src/views/moderation_log/index.vue?f0fa","webpack:///./src/views/moderation_log/LogEntryMessage.vue?15ac","webpack:///src/views/moderation_log/LogEntryMessage.vue","webpack:///./src/views/moderation_log/LogEntryMessage.vue","webpack:///./src/views/moderation_log/LogEntryMessage.vue?cbf8","webpack:///./src/views/moderation_log/index.vue?bce9","webpack:///src/views/moderation_log/index.vue","webpack:///./src/views/moderation_log/index.vue","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_60b585cf_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_LogEntryMessage_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","global","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","Object","freeSelf","self","root","Function","objectToString","prototype","toString","nativeMax","Math","max","nativeMin","min","now","Date","isObject","value","type","toNumber","isObjectLike","call","isSymbol","other","valueOf","replace","isBinary","test","slice","module","exports","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","cancel","clearTimeout","flush","moderation_log_LogEntryMessagevue_type_script_lang_js_","name","props","actor","required","message","String","computed","logEntryMessage","split","nickname","methods","propertyExists","account","property","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","to","params","id","staticStyle","font-weight","_v","_s","_e","__file","LogEntryMessage","views_moderation_logvue_type_script_lang_js_","components","RebootButton","data","dateRange","search","user","currentPage","isMobile","$store","state","app","device","loading","moderationLog","logLoading","adminsLoading","log","fetchedLog","total","logItemsCount","users","label","admins","moderators","created","_this","handleDebounceSearchInput","lodash_debounce_default","query","fetchLogWithFilters","mounted","dispatch","filters","lodash_default","a","omitBy","start_date","toISOString","end_date","user_id","page","val","normalizeTimestamp","timestamp","moment_default","format","moderation_log_component","$t","clearable","placeholder","on","change","model","callback","$$v","expression","_l","group","key","item","input","default-time","start-placeholder","end-placeholder","unlink-panels","logEntry","index","current-page","hide-on-single-page","page-size","small","layout","update:currentPage","$event","update:current-page","current-change","__webpack_exports__","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-SG","./en-SG.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-nz","./en-nz.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-tw","./zh-tw.js","webpackContext","req","webpackContextResolve","o","e","Error","code","keys","resolve"],"mappings":"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,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,QAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,WAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,QAIA,SAAAC,EAAAC,GACA,IAAAtV,EAAAuV,EAAAD,GACA,OAAA9b,EAAAwG,GAEA,SAAAuV,EAAAD,GACA,IAAA9b,EAAAgc,EAAAlQ,EAAAgQ,GAAA,CACA,IAAAG,EAAA,IAAAC,MAAA,uBAAAJ,EAAA,KAEA,MADAG,EAAAE,KAAA,mBACAF,EAEA,OAAAnQ,EAAAgQ,GAEAD,EAAAO,KAAA,WACA,OAAAtb,OAAAsb,KAAAtQ,IAEA+P,EAAAQ,QAAAN,EACArZ,EAAAC,QAAAkZ,EACAA,EAAArV,GAAA","file":"static/js/chunk-654e.38dd4b85.js","sourcesContent":["import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=60b585cf&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=60b585cf&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogEntryMessage.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogEntryMessage.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"moderation-log-container\"},[_c('div',{staticClass:\"moderation-log-header-container\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('moderationLog.moderationLog')))]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"moderation-log-nav-container\"},[_c('el-select',{staticClass:\"moderation-log-user-select\",attrs:{\"clearable\":\"\",\"placeholder\":\"Filter by admin/moderator\"},on:{\"change\":_vm.fetchLogWithFilters},model:{value:(_vm.user),callback:function ($$v) {_vm.user=$$v},expression:\"user\"}},_vm._l((_vm.users),function(group){return _c('el-option-group',{key:group.label,attrs:{\"label\":group.label}},_vm._l((group.options),function(item){return _c('el-option',{key:item.id,attrs:{\"label\":item.nickname,\"value\":item.id}})}),1)}),1),_vm._v(\" \"),_c('el-input',{staticClass:\"moderation-log-search\",attrs:{\"placeholder\":\"Search logs\",\"clearable\":\"\"},on:{\"input\":_vm.handleDebounceSearchInput},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_vm._v(\" \"),_c('el-date-picker',{staticClass:\"moderation-log-date-panel\",attrs:{\"default-time\":['00:00:00', '23:59:59'],\"type\":\"daterange\",\"start-placeholder\":\"Start date\",\"end-placeholder\":\"End date\",\"unlink-panels\":\"\"},on:{\"change\":_vm.fetchLogWithFilters},model:{value:(_vm.dateRange),callback:function ($$v) {_vm.dateRange=$$v},expression:\"dateRange\"}}),_vm._v(\" \"),_c('el-timeline',_vm._l((_vm.log),function(logEntry,index){return _c('el-timeline-item',{key:index,attrs:{\"timestamp\":_vm.normalizeTimestamp(logEntry.time)}},[(_vm.propertyExists(logEntry.data.actor, 'nickname'))?_c('log-entry-message',{attrs:{\"actor\":logEntry.data.actor,\"message\":logEntry.message}}):_c('span',[_vm._v(_vm._s(logEntry.message))])],1)}),1),_vm._v(\" \"),_c('div',{staticClass:\"pagination\"},[_c('el-pagination',{attrs:{\"current-page\":_vm.currentPage,\"hide-on-single-page\":true,\"page-size\":50,\"total\":_vm.total,\"small\":_vm.isMobile,\"layout\":\"prev, pager, next\"},on:{\"update:currentPage\":function($event){_vm.currentPage=$event},\"update:current-page\":function($event){_vm.currentPage=$event},\"current-change\":_vm.fetchLogWithFilters}})],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogEntryMessage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogEntryMessage.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./LogEntryMessage.vue?vue&type=template&id=da9d889c&\"\nimport script from \"./LogEntryMessage.vue?vue&type=script&lang=js&\"\nexport * from \"./LogEntryMessage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LogEntryMessage.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"LogEntryMessage.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[(_vm.propertyExists(_vm.actor, 'id'))?_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":{ name: 'UsersShow', params: { id: _vm.actor.id }}}},[(_vm.propertyExists(_vm.actor, 'nickname'))?_c('span',{staticStyle:{\"font-weight\":\"600\"}},[_vm._v(\"\\n @\"+_vm._s(_vm.actor.nickname)+\"\\n \")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.logEntryMessage))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=60b585cf&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=60b585cf&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"60b585cf\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-SG\": \"zavE\",\n\t\"./en-SG.js\": \"zavE\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-68ea.0dae7e55.js b/priv/static/adminfe/static/js/chunk-68ea.0dae7e55.js deleted file mode 100644 index dc31a8bb0..000000000 --- a/priv/static/adminfe/static/js/chunk-68ea.0dae7e55.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-68ea"],{"/eX4":function(s,t,i){"use strict";i.r(t);var e=[function(){var s=this.$createElement,t=this._self._c||s;return t("div",{staticClass:"pic-404"},[t("img",{staticClass:"pic-404__parent",attrs:{src:i("o2sD"),alt:"404"}}),this._v(" "),t("img",{staticClass:"pic-404__child left",attrs:{src:i("Jvyq"),alt:"404"}}),this._v(" "),t("img",{staticClass:"pic-404__child mid",attrs:{src:i("Jvyq"),alt:"404"}}),this._v(" "),t("img",{staticClass:"pic-404__child right",attrs:{src:i("Jvyq"),alt:"404"}})])}],n={name:"Page404",computed:{message:function(){return"There is nothing here"}}},r=(i("J67/"),i("KHd+")),l=Object(r.a)(n,function(){var s=this,t=s.$createElement,i=s._self._c||t;return i("div",{staticClass:"wscn-http404-container"},[i("div",{staticClass:"wscn-http404"},[s._m(0),s._v(" "),i("div",{staticClass:"bullshit"},[i("div",{staticClass:"bullshit__oops"},[s._v("OOPS!")]),s._v(" "),i("div",{staticClass:"bullshit__headline"},[s._v(s._s(s.message))]),s._v(" "),i("div",{staticClass:"bullshit__info"},[s._v("Please make sure you URL is correct")]),s._v(" "),i("router-link",{staticClass:"bullshit__return-home",attrs:{to:"/"}},[s._v("Go to the home page")])],1)])])},e,!1,null,"1d6b2d2a",null);l.options.__file="404.vue";t.default=l.exports},"J67/":function(s,t,i){"use strict";var e=i("QCkX");i.n(e).a},Jvyq:function(s,t){s.exports="data:image/png;base64,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"},QCkX:function(s,t,i){},o2sD:function(s,t,i){s.exports=i.p+"static/img/404.a57b6f3.png"}}]); -//# sourceMappingURL=chunk-68ea.0dae7e55.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-68ea.0dae7e55.js.map b/priv/static/adminfe/static/js/chunk-68ea.0dae7e55.js.map deleted file mode 100644 index 6c87803a8..000000000 --- a/priv/static/adminfe/static/js/chunk-68ea.0dae7e55.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/errorPage/404.vue?e9e9","webpack:///./src/views/errorPage/404.vue?e36b","webpack:///src/views/errorPage/404.vue","webpack:///./src/views/errorPage/404.vue","webpack:///./src/views/errorPage/404.vue?ce30","webpack:///./src/assets/404_images/404_cloud.png","webpack:///./src/assets/404_images/404.png"],"names":["staticRenderFns","_h","this","$createElement","_c","_self","staticClass","attrs","src","__webpack_require__","alt","_v","errorPage_404vue_type_script_lang_js_","name","computed","message","component","Object","componentNormalizer","_vm","_m","_s","to","options","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_style_index_0_id_1d6b2d2a_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","n","module","exports","p"],"mappings":"+GAAA,IACAA,GAAA,WAAoC,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,YAAsBF,EAAA,OAAYE,YAAA,kBAAAC,OAAqCC,IAAMC,EAAQ,QAA6BC,IAAA,SAAlMR,KAAiNS,GAAA,KAAAP,EAAA,OAAwBE,YAAA,sBAAAC,OAAyCC,IAAMC,EAAQ,QAAmCC,IAAA,SAAnUR,KAAkVS,GAAA,KAAAP,EAAA,OAAwBE,YAAA,qBAAAC,OAAwCC,IAAMC,EAAQ,QAAmCC,IAAA,SAAncR,KAAkdS,GAAA,KAAAP,EAAA,OAAwBE,YAAA,uBAAAC,OAA0CC,IAAMC,EAAQ,QAAmCC,IAAA,aCDjaE,GCsBxMC,KAAA,UACAC,UACAC,QADA,WAEA,yDCjBAC,EAAgBC,OAAAC,EAAA,EAAAD,CACdL,EHTF,WAA0B,IAAAO,EAAAjB,KAAaD,EAAAkB,EAAAhB,eAA0BC,EAAAe,EAAAd,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,2BAAqCF,EAAA,OAAYE,YAAA,iBAA2Ba,EAAAC,GAAA,GAAAD,EAAAR,GAAA,KAAAP,EAAA,OAAkCE,YAAA,aAAuBF,EAAA,OAAYE,YAAA,mBAA6Ba,EAAAR,GAAA,WAAAQ,EAAAR,GAAA,KAAAP,EAAA,OAA0CE,YAAA,uBAAiCa,EAAAR,GAAAQ,EAAAE,GAAAF,EAAAJ,YAAAI,EAAAR,GAAA,KAAAP,EAAA,OAAsDE,YAAA,mBAA6Ba,EAAAR,GAAA,yCAAAQ,EAAAR,GAAA,KAAAP,EAAA,eAAgFE,YAAA,wBAAAC,OAA2Ce,GAAA,OAAUH,EAAAR,GAAA,kCGWzjBX,GACF,EACA,KACA,WACA,MAIAgB,EAAAO,QAAAC,OAAA,UACeC,EAAA,QAAAT,+CCpBf,IAAAU,EAAAjB,EAAA,QAAAA,EAAAkB,EAAAD,GAA6e,sBCA7eE,EAAAC,QAAA,0xMCAAD,EAAAC,QAAiBpB,EAAAqB,EAAuB","file":"static/js/chunk-68ea.0dae7e55.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"wscn-http404-container\"},[_c('div',{staticClass:\"wscn-http404\"},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"bullshit\"},[_c('div',{staticClass:\"bullshit__oops\"},[_vm._v(\"OOPS!\")]),_vm._v(\" \"),_c('div',{staticClass:\"bullshit__headline\"},[_vm._v(_vm._s(_vm.message))]),_vm._v(\" \"),_c('div',{staticClass:\"bullshit__info\"},[_vm._v(\"Please make sure you URL is correct\")]),_vm._v(\" \"),_c('router-link',{staticClass:\"bullshit__return-home\",attrs:{\"to\":\"/\"}},[_vm._v(\"Go to the home page\")])],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pic-404\"},[_c('img',{staticClass:\"pic-404__parent\",attrs:{\"src\":require(\"@/assets/404_images/404.png\"),\"alt\":\"404\"}}),_vm._v(\" \"),_c('img',{staticClass:\"pic-404__child left\",attrs:{\"src\":require(\"@/assets/404_images/404_cloud.png\"),\"alt\":\"404\"}}),_vm._v(\" \"),_c('img',{staticClass:\"pic-404__child mid\",attrs:{\"src\":require(\"@/assets/404_images/404_cloud.png\"),\"alt\":\"404\"}}),_vm._v(\" \"),_c('img',{staticClass:\"pic-404__child right\",attrs:{\"src\":require(\"@/assets/404_images/404_cloud.png\"),\"alt\":\"404\"}})])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./404.vue?vue&type=template&id=1d6b2d2a&scoped=true&\"\nimport script from \"./404.vue?vue&type=script&lang=js&\"\nexport * from \"./404.vue?vue&type=script&lang=js&\"\nimport style0 from \"./404.vue?vue&type=style&index=0&id=1d6b2d2a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d6b2d2a\",\n null\n \n)\n\ncomponent.options.__file = \"404.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=style&index=0&id=1d6b2d2a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=style&index=0&id=1d6b2d2a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/img/404.a57b6f3.png\";"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-68ea.6d56674a.js b/priv/static/adminfe/static/js/chunk-68ea.6d56674a.js new file mode 100644 index 000000000..1f43a39db --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-68ea.6d56674a.js @@ -0,0 +1,26 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-68ea"],{"+/fp":function(e,t){e.exports=class{strong(e){return e}em(e){return e}codespan(e){return e}del(e){return e}html(e){return e}text(e){return e}link(e,t,n){return""+n}image(e,t,n){return""+n}br(){return""}}},"+V57":function(e,t,n){"use strict";n.d(t,"a",function(){return i}),n.d(t,"b",function(){return a}),n.d(t,"c",function(){return p}),n.d(t,"d",function(){return l}),n.d(t,"e",function(){return u});var r=n("UxO+"),o=n("CsC6"),i=function(e,t){this.match=e,this.handler="string"==typeof t?function(e){return function(t,n,r,o){var i=e;if(n[1]){var s=n[0].lastIndexOf(n[1]);i+=n[0].slice(s+n[1].length);var a=(r+=s)-o;a>0&&(i=n[0].slice(s-a,s)+i,r=o)}return t.tr.insertText(i,r,o)}}(t):t};var s=500;function a(e){var t=e.rules,n=new r.Plugin({state:{init:function(){return null},apply:function(e,t){var n=e.getMeta(this);return n||(e.selectionSet||e.docChanged?null:t)}},props:{handleTextInput:function(e,r,o,i){return c(e,r,o,i,t,n)},handleDOMEvents:{compositionend:function(e){setTimeout(function(){var r=e.state.selection.$cursor;r&&c(e,r.pos,r.pos,"",t,n)})}}},isInputRules:!0});return n}function c(e,t,n,r,o,i){if(e.composing)return!1;var a=e.state,c=a.doc.resolve(t);if(c.parent.type.spec.code)return!1;for(var l=c.parent.textBetween(Math.max(0,c.parentOffset-s),c.parentOffset,null,"")+r,u=0;u=0;c--)s.step(a.steps[c].invert(a.docs[c]));var l=s.doc.resolve(i.from).marks();t(s.replaceWith(i.from,i.to,e.schema.text(i.text,l)))}return!0}}return!1}new i(/--$/,"—"),new i(/\.\.\.$/,"…"),new i(/(?:^|[\s\{\[\(\<'"\u2018\u201C])(")$/,"“"),new i(/"$/,"”"),new i(/(?:^|[\s\{\[\(\<'"\u2018\u201C])(')$/,"‘"),new i(/'$/,"’");function u(e,t,n,r){return new i(e,function(e,i,s,a){var c=n instanceof Function?n(i):n,l=e.tr.delete(s,a),u=l.doc.resolve(s).blockRange(),p=u&&Object(o.i)(u,t,c);if(!p)return null;l.wrap(u,p);var h=l.doc.resolve(s-1).nodeBefore;return h&&h.type==t&&Object(o.f)(l.doc,s-1)&&(!r||r(i,h))&&l.join(s-1),l})}function p(e,t,n){return new i(e,function(e,r,o,i){var s=e.doc.resolve(o),a=n instanceof Function?n(r):n;return s.node(-1).canReplaceWith(s.index(-1),s.indexAfter(-1),t)?e.tr.delete(o,i).setBlockType(o,o,t,a):null})}},"4MG8":function(e,t,n){const r=n("T9Ld"),o=n("66f7"),i=n("SbYC"),s=n("+/fp"),a=n("hyX7"),c=n("J7Ao"),{merge:l,checkSanitizeDeprecation:u,escape:p}=n("rUJ1"),{getDefaults:h,changeDefaults:d,defaults:f}=n("vbtb");function m(e,t,n){if(void 0===e||null===e)throw new Error("marked(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if(n||"function"==typeof t){n||(n=t,t=null),t=l({},m.defaults,t||{}),u(t);const i=t.highlight;let s,a,c=0;try{s=r.lex(e,t)}catch(e){return n(e)}a=s.length;const p=function(e){if(e)return t.highlight=i,n(e);let r;try{r=o.parse(s,t)}catch(t){e=t}return t.highlight=i,e?n(e):n(null,r)};if(!i||i.length<3)return p();if(delete t.highlight,!a)return p();for(;cAn error occurred:

    "+p(e.message+"",!0)+"
    ";throw e}}m.options=m.setOptions=function(e){return l(m.defaults,e),d(m.defaults),m},m.getDefaults=h,m.defaults=f,m.Parser=o,m.parser=o.parse,m.Renderer=i,m.TextRenderer=s,m.Lexer=r,m.lexer=r.lex,m.InlineLexer=a,m.inlineLexer=a.output,m.Slugger=c,m.parse=m,e.exports=m},"4r5K":function(e,t){function n(e){Object.freeze(e);var t="function"==typeof e;return Object.getOwnPropertyNames(e).forEach(function(r){!Object.hasOwnProperty.call(e,r)||null===e[r]||"object"!=typeof e[r]&&"function"!=typeof e[r]||t&&("caller"===r||"callee"===r||"arguments"===r)||Object.isFrozen(e[r])||n(e[r])}),e}class r{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}ignoreMatch(){this.ignore=!0}}function o(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function i(e,...t){var n={};for(const r in e)n[r]=e[r];return t.forEach(function(e){for(const t in e)n[t]=e[t]}),n}function s(e){return e.nodeName.toLowerCase()}var a=Object.freeze({__proto__:null,escapeHTML:o,inherit:i,nodeStream:function(e){var t=[];return function e(n,r){for(var o=n.firstChild;o;o=o.nextSibling)3===o.nodeType?r+=o.nodeValue.length:1===o.nodeType&&(t.push({event:"start",offset:r,node:o}),r=e(o,r),s(o).match(/br|hr|img|input/)||t.push({event:"stop",offset:r,node:o}));return r}(e,0),t},mergeStreams:function(e,t,n){var r=0,i="",a=[];function c(){return e.length&&t.length?e[0].offset!==t[0].offset?e[0].offset"}function u(e){i+=""}function p(e){("start"===e.event?l:u)(e.node)}for(;e.length||t.length;){var h=c();if(i+=o(n.substring(r,h[0].offset)),r=h[0].offset,h===e){a.reverse().forEach(u);do{p(h.splice(0,1)[0]),h=c()}while(h===e&&h.length&&h[0].offset===r);a.reverse().forEach(l)}else"start"===h[0].event?a.push(h[0].node):a.pop(),p(h.splice(0,1)[0])}return i+o(n.substr(r))}});const c="",l=e=>!!e.kind;class u{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=o(e)}openNode(e){if(!l(e))return;let t=e.kind;e.sublanguage||(t=`${this.classPrefix}${t}`),this.span(t)}closeNode(e){l(e)&&(this.buffer+=c)}value(){return this.buffer}span(e){this.buffer+=``}}class p{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(t=>this._walk(e,t)),e.closeNode(t)),e}static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(e=>"string"==typeof e)?e.children=[e.children.join("")]:e.children.forEach(e=>{p._collapse(e)}))}}class h extends p{constructor(e){super(),this.options=e}addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())}addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){return new u(this,this.options).value()}finalize(){return!0}}function d(e){return e?"string"==typeof e?e:e.source:null}const f="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",m={begin:"\\\\[\\s\\S]",relevance:0},v={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[m]},g={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[m]},y={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},b=function(e,t,n={}){var r=i({className:"comment",begin:e,end:t,contains:[]},n);return r.contains.push(y),r.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),r},w=b("//","$"),S=b("/\\*","\\*/"),x=b("#","$"),k={className:"number",begin:"\\b\\d+(\\.\\d+)?",relevance:0},C={className:"number",begin:f,relevance:0},O={className:"number",begin:"\\b(0b[01]+)",relevance:0},M={className:"number",begin:"\\b\\d+(\\.\\d+)?(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},N={begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[m,{begin:/\[/,end:/\]/,relevance:0,contains:[m]}]}]},T={className:"title",begin:"[a-zA-Z]\\w*",relevance:0},D={className:"title",begin:"[a-zA-Z_]\\w*",relevance:0},A={begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0};var E=Object.freeze({__proto__:null,IDENT_RE:"[a-zA-Z]\\w*",UNDERSCORE_IDENT_RE:"[a-zA-Z_]\\w*",NUMBER_RE:"\\b\\d+(\\.\\d+)?",C_NUMBER_RE:f,BINARY_NUMBER_RE:"\\b(0b[01]+)",RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=function(...e){return e.map(e=>d(e)).join("")}(t,/.*\b/,e.binary,/\b.*/)),i({className:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:m,APOS_STRING_MODE:v,QUOTE_STRING_MODE:g,PHRASAL_WORDS_MODE:y,COMMENT:b,C_LINE_COMMENT_MODE:w,C_BLOCK_COMMENT_MODE:S,HASH_COMMENT_MODE:x,NUMBER_MODE:k,C_NUMBER_MODE:C,BINARY_NUMBER_MODE:O,CSS_NUMBER_MODE:M,REGEXP_MODE:N,TITLE_MODE:T,UNDERSCORE_TITLE_MODE:D,METHOD_GUARD:A,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})}}),R="of and for in not or if then".split(" ");function _(e){function t(t,n){return new RegExp(d(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=function(e){return new RegExp(e.toString()+"|").exec("").length-1}(e)+1}compile(){0===this.regexes.length&&(this.exec=(()=>null));const e=this.regexes.map(e=>e[1]);this.matcherRe=t(function(e,t="|"){for(var n=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,r=0,o="",i=0;i0&&(o+=t),o+="(";a.length>0;){var c=n.exec(a);if(null==c){o+=a;break}o+=a.substring(0,c.index),a=a.substring(c.index+c[0].length),"\\"===c[0][0]&&c[1]?o+="\\"+String(Number(c[1])+s):(o+=c[0],"("===c[0]&&r++)}o+=")"}return o}(e),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t)return null;const n=t.findIndex((e,t)=>t>0&&void 0!==e),r=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,r)}}class r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t,t}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;const n=t.exec(e);return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&(this.regexIndex=0)),n}}function o(e,t){const n=e.input[e.index-1],r=e.input[e.index+e[0].length];"."!==n&&"."!==r||t.ignoreMatch()}if(e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return function n(s,a){const c=s;if(s.compiled)return c;s.compiled=!0,s.__beforeBegin=null,s.keywords=s.keywords||s.beginKeywords;let l=null;if("object"==typeof s.keywords&&(l=s.keywords.$pattern,delete s.keywords.$pattern),s.keywords&&(s.keywords=function(e,t){var n={};return"string"==typeof e?r("keyword",e):Object.keys(e).forEach(function(t){r(t,e[t])}),n;function r(e,r){t&&(r=r.toLowerCase()),r.split(" ").forEach(function(t){var r=t.split("|");n[r[0]]=[e,function(e,t){return t?Number(t):function(e){return R.includes(e.toLowerCase())}(e)?0:1}(r[0],r[1])]})}}(s.keywords,e.case_insensitive)),s.lexemes&&l)throw new Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");return c.keywordPatternRe=t(s.lexemes||l||/\w+/,!0),a&&(s.beginKeywords&&(s.begin="\\b("+s.beginKeywords.split(" ").join("|")+")(?=\\b|\\s)",s.__beforeBegin=o),s.begin||(s.begin=/\B|\b/),c.beginRe=t(s.begin),s.endSameAsBegin&&(s.end=s.begin),s.end||s.endsWithParent||(s.end=/\B|\b/),s.end&&(c.endRe=t(s.end)),c.terminator_end=d(s.end)||"",s.endsWithParent&&a.terminator_end&&(c.terminator_end+=(s.end?"|":"")+a.terminator_end)),s.illegal&&(c.illegalRe=t(s.illegal)),void 0===s.relevance&&(s.relevance=1),s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map(function(e){return function(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return i(e,{variants:null},t)})),e.cached_variants?e.cached_variants:function e(t){return!!t&&(t.endsWithParent||e(t.starts))}(e)?i(e,{starts:e.starts?i(e.starts):null}):Object.isFrozen(e)?i(e):e}("self"===e?s:e)})),s.contains.forEach(function(e){n(e,c)}),s.starts&&n(s.starts,a),c.matcher=function(e){const t=new r;return e.contains.forEach(e=>t.addRule(e.begin,{rule:e,type:"begin"})),e.terminator_end&&t.addRule(e.terminator_end,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t}(c),c}(e)}const P=o,$=i,{nodeStream:I,mergeStreams:z}=a,B=Symbol("nomatch");var F=function(e){var t=[],o=Object.create(null),i=Object.create(null),s=[],a=!0,c=/(^(<[^>]+>|\t|)+|\n)/gm,l="Could not find the language '{}', did you forget to load/include a language module?";const u={disableAutodetect:!0,name:"Plain text",contains:[]};var p={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:null,__emitter:h};function d(e){return p.noHighlightRe.test(e)}function f(e,t,n,r){var o={code:t,language:e};k("before:highlight",o);var i=o.result?o.result:m(o.language,o.code,n,r);return i.code=o.code,k("after:highlight",i),i}function m(e,t,n,i){var s=t;function c(e,t){var n=S.case_insensitive?t[0].toLowerCase():t[0];return Object.prototype.hasOwnProperty.call(e.keywords,n)&&e.keywords[n]}function u(){null!=C.subLanguage?function(){if(""!==N){var e=null;if("string"==typeof C.subLanguage){if(!o[C.subLanguage])return void M.addText(N);e=m(C.subLanguage,N,!0,O[C.subLanguage]),O[C.subLanguage]=e.top}else e=v(N,C.subLanguage.length?C.subLanguage:null);C.relevance>0&&(T+=e.relevance),M.addSublanguage(e.emitter,e.language)}}():function(){if(!C.keywords)return void M.addText(N);let e=0;C.keywordPatternRe.lastIndex=0;let t=C.keywordPatternRe.exec(N),n="";for(;t;){n+=N.substring(e,t.index);const r=c(C,t);if(r){const[e,o]=r;M.addText(n),n="",T+=o,M.addKeyword(t[0],e)}else n+=t[0];e=C.keywordPatternRe.lastIndex,t=C.keywordPatternRe.exec(N)}n+=N.substr(e),M.addText(n)}(),N=""}function h(e){return e.className&&M.openNode(e.className),C=Object.create(e,{parent:{value:C}})}function d(e){return 0===C.matcher.regexIndex?(N+=e[0],1):(E=!0,0)}function f(e){var t=e[0],n=e.rule;const o=new r(n),i=[n.__beforeBegin,n["on:begin"]];for(const r of i)if(r&&(r(e,o),o.ignore))return d(t);return n&&n.endSameAsBegin&&(n.endRe=function(e){return new RegExp(e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}(t)),n.skip?N+=t:(n.excludeBegin&&(N+=t),u(),n.returnBegin||n.excludeBegin||(N=t)),h(n),n.returnBegin?0:t.length}function g(e){var t=e[0],n=s.substr(e.index),o=function e(t,n,o){let i=function(e,t){var n=e&&e.exec(t);return n&&0===n.index}(t.endRe,o);if(i){if(t["on:end"]){const e=new r(t);t["on:end"](n,e),e.ignore&&(i=!1)}if(i){for(;t.endsParent&&t.parent;)t=t.parent;return t}}if(t.endsWithParent)return e(t.parent,n,o)}(C,e,n);if(!o)return B;var i=C;i.skip?N+=t:(i.returnEnd||i.excludeEnd||(N+=t),u(),i.excludeEnd&&(N=t));do{C.className&&M.closeNode(),C.skip||C.subLanguage||(T+=C.relevance),C=C.parent}while(C!==o.parent);return o.starts&&(o.endSameAsBegin&&(o.starts.endRe=o.endRe),h(o.starts)),i.returnEnd?0:t.length}var y={};function b(t,r){var o=r&&r[0];if(N+=t,null==o)return u(),0;if("begin"===y.type&&"end"===r.type&&y.index===r.index&&""===o){if(N+=s.slice(r.index,r.index+1),!a){const t=new Error("0 width match regex");throw t.languageName=e,t.badRule=y.rule,t}return 1}if(y=r,"begin"===r.type)return f(r);if("illegal"===r.type&&!n){const e=new Error('Illegal lexeme "'+o+'" for mode "'+(C.className||"")+'"');throw e.mode=C,e}if("end"===r.type){var i=g(r);if(i!==B)return i}if("illegal"===r.type&&""===o)return 1;if(A>1e5&&A>3*r.index)throw new Error("potential infinite loop, way more iterations than matches");return N+=o,o.length}var S=w(e);if(!S)throw console.error(l.replace("{}",e)),new Error('Unknown language: "'+e+'"');var x=_(S),k="",C=i||x,O={},M=new p.__emitter(p);!function(){for(var e=[],t=C;t!==S;t=t.parent)t.className&&e.unshift(t.className);e.forEach(e=>M.openNode(e))}();var N="",T=0,D=0,A=0,E=!1;try{for(C.matcher.considerAll();;){A++,E?E=!1:(C.matcher.lastIndex=D,C.matcher.considerAll());const e=C.matcher.exec(s);if(!e)break;const t=b(s.substring(D,e.index),e);D=e.index+t}return b(s.substr(D)),M.closeAllNodes(),M.finalize(),k=M.toHTML(),{relevance:T,value:k,language:e,illegal:!1,emitter:M,top:C}}catch(t){if(t.message&&t.message.includes("Illegal"))return{illegal:!0,illegalBy:{msg:t.message,context:s.slice(D-100,D+100),mode:t.mode},sofar:k,relevance:0,value:P(s),emitter:M};if(a)return{illegal:!1,relevance:0,value:P(s),emitter:M,language:e,top:C,errorRaised:t};throw t}}function v(e,t){t=t||p.languages||Object.keys(o);var n=function(e){const t={relevance:0,emitter:new p.__emitter(p),value:P(e),illegal:!1,top:u};return t.emitter.addText(e),t}(e),r=n;return t.filter(w).filter(x).forEach(function(t){var o=m(t,e,!1);o.language=t,o.relevance>r.relevance&&(r=o),o.relevance>n.relevance&&(r=n,n=o)}),r.language&&(n.second_best=r),n}function g(e){return p.tabReplace||p.useBR?e.replace(c,e=>"\n"===e?p.useBR?"
    ":e:p.tabReplace?e.replace(/\t/g,p.tabReplace):e):e}function y(e){let t=null;const n=function(e){var t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";const n=p.languageDetectRe.exec(t);if(n){var r=w(n[1]);return r||(console.warn(l.replace("{}",n[1])),console.warn("Falling back to no-highlight mode for this block.",e)),r?n[1]:"no-highlight"}return t.split(/\s+/).find(e=>d(e)||w(e))}(e);if(d(n))return;k("before:highlightBlock",{block:e,language:n}),p.useBR?(t=document.createElement("div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n"):t=e;const r=t.textContent,o=n?f(n,r,!0):v(r),s=I(t);if(s.length){const e=document.createElement("div");e.innerHTML=o.value,o.value=z(s,I(e),r)}o.value=g(o.value),k("after:highlightBlock",{block:e,result:o}),e.innerHTML=o.value,e.className=function(e,t,n){var r=t?i[t]:n,o=[e.trim()];return e.match(/\bhljs\b/)||o.push("hljs"),e.includes(r)||o.push(r),o.join(" ").trim()}(e.className,n,o.language),e.result={language:o.language,re:o.relevance,relavance:o.relevance},o.second_best&&(e.second_best={language:o.second_best.language,re:o.second_best.relevance,relavance:o.second_best.relevance})}const b=()=>{if(!b.called){b.called=!0;var e=document.querySelectorAll("pre code");t.forEach.call(e,y)}};function w(e){return e=(e||"").toLowerCase(),o[e]||o[i[e]]}function S(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach(e=>{i[e]=t})}function x(e){var t=w(e);return t&&!t.disableAutodetect}function k(e,t){var n=e;s.forEach(function(e){e[n]&&e[n](t)})}Object.assign(e,{highlight:f,highlightAuto:v,fixMarkup:g,highlightBlock:y,configure:function(e){p=$(p,e)},initHighlighting:b,initHighlightingOnLoad:function(){window.addEventListener("DOMContentLoaded",b,!1)},registerLanguage:function(t,n){var r=null;try{r=n(e)}catch(e){if(console.error("Language definition for '{}' could not be registered.".replace("{}",t)),!a)throw e;console.error(e),r=u}r.name||(r.name=t),o[t]=r,r.rawDefinition=n.bind(null,e),r.aliases&&S(r.aliases,{languageName:t})},listLanguages:function(){return Object.keys(o)},getLanguage:w,registerAliases:S,requireLanguage:function(e){var t=w(e);if(t)return t;throw new Error("The '{}' language is required, but not loaded.".replace("{}",e))},autoDetection:x,inherit:$,addPlugin:function(e){s.push(e)}}),e.debugMode=function(){a=!1},e.safeMode=function(){a=!0},e.versionString="10.1.2";for(const r in E)"object"==typeof E[r]&&n(E[r]);return Object.assign(e,E),e}({});e.exports=F},"66f7":function(e,t,n){const r=n("SbYC"),o=n("J7Ao"),i=n("hyX7"),s=n("+/fp"),{defaults:a}=n("vbtb"),{merge:c,unescape:l}=n("rUJ1");e.exports=class e{constructor(e){this.tokens=[],this.token=null,this.options=e||a,this.options.renderer=this.options.renderer||new r,this.renderer=this.options.renderer,this.renderer.options=this.options,this.slugger=new o}static parse(t,n){return new e(n).parse(t)}parse(e){this.inline=new i(e.links,this.options),this.inlineText=new i(e.links,c({},this.options,{renderer:new s})),this.tokens=e.reverse();let t="";for(;this.next();)t+=this.tok();return t}next(){return this.token=this.tokens.pop(),this.token}peek(){return this.tokens[this.tokens.length-1]||0}parseText(){let e=this.token.text;for(;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)}tok(){let e="";switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,l(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":{let t,n,r,o,i="";for(r="",t=0;t=t?l.empty:this.sliceInner(Math.max(0,e),Math.min(this.length,t))},l.prototype.get=function(e){if(!(e<0||e>=this.length))return this.getInner(e)},l.prototype.forEach=function(e,t,n){void 0===t&&(t=0),void 0===n&&(n=this.length),t<=n?this.forEachInner(e,t,n,0):this.forEachInvertedInner(e,t,n,0)},l.prototype.map=function(e,t,n){void 0===t&&(t=0),void 0===n&&(n=this.length);var r=[];return this.forEach(function(t,n){return r.push(e(t,n))},t,n),r},l.from=function(e){return e instanceof l?e:e&&e.length?new u(e):l.empty};var u=function(e){function t(t){e.call(this),this.values=t}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var n={length:{configurable:!0},depth:{configurable:!0}};return t.prototype.flatten=function(){return this.values},t.prototype.sliceInner=function(e,n){return 0==e&&n==this.length?this:new t(this.values.slice(e,n))},t.prototype.getInner=function(e){return this.values[e]},t.prototype.forEachInner=function(e,t,n,r){for(var o=t;o=n;o--)if(!1===e(this.values[o],r+o))return!1},t.prototype.leafAppend=function(e){if(this.length+e.length<=200)return new t(this.values.concat(e.flatten()))},t.prototype.leafPrepend=function(e){if(this.length+e.length<=200)return new t(e.flatten().concat(this.values))},n.length.get=function(){return this.values.length},n.depth.get=function(){return 0},Object.defineProperties(t.prototype,n),t}(l);l.empty=new u([]);var p=function(e){function t(t,n){e.call(this),this.left=t,this.right=n,this.length=t.length+n.length,this.depth=Math.max(t.depth,n.depth)+1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.flatten=function(){return this.left.flatten().concat(this.right.flatten())},t.prototype.getInner=function(e){return eo&&!1===this.right.forEachInner(e,Math.max(t-o,0),Math.min(this.length,n)-o,r+o))&&void 0)},t.prototype.forEachInvertedInner=function(e,t,n,r){var o=this.left.length;return!(t>o&&!1===this.right.forEachInvertedInner(e,t-o,Math.max(n,o)-o,r+o))&&(!(n=n?this.right.slice(e-n,t-n):this.left.slice(e,n).append(this.right.slice(0,t-n))},t.prototype.leafAppend=function(e){var n=this.right.leafAppend(e);if(n)return new t(this.left,n)},t.prototype.leafPrepend=function(e){var n=this.left.leafPrepend(e);if(n)return new t(n,this.right)},t.prototype.appendInner=function(e){return this.left.depth>=Math.max(this.right.depth,e.depth)+1?new t(this.left,new t(this.right,e)):new t(this,e)},t}(l),h=l,d=function(e,t){this.items=e,this.eventCount=t};d.prototype.popEvent=function(e,t){var n=this;if(0==this.eventCount)return null;for(var r,o,i=this.items.length;;i--){if(this.items.get(i-1).selection){--i;break}}t&&(r=this.remapping(i,this.items.length),o=r.maps.length);var s,a,c=e.tr,l=[],u=[];return this.items.forEach(function(e,t){if(!e.step)return r||(r=n.remapping(i,t+1),o=r.maps.length),o--,void u.push(e);if(r){u.push(new f(e.map));var p,h=e.step.map(r.slice(o));h&&c.maybeStep(h).doc&&(p=c.mapping.maps[c.mapping.maps.length-1],l.push(new f(p,null,null,l.length+u.length))),o--,p&&r.appendMap(p,o)}else c.maybeStep(e.step);return e.selection?(s=r?e.selection.map(r.slice(o)):e.selection,a=new d(n.items.slice(0,i).append(u.reverse().concat(l)),n.eventCount-1),!1):void 0},this.items.length,0),{remaining:a,transform:c,selection:s}},d.prototype.addTransform=function(e,t,n,r){for(var o=[],i=this.eventCount,s=this.items,a=!r&&s.length?s.get(s.length-1):null,c=0;cv&&(s=function(e,t){var n;return e.forEach(function(e,r){if(e.selection&&0==t--)return n=r,!1}),e.slice(n)}(s,h),i-=h),new d(s.append(o),i)},d.prototype.remapping=function(e,t){var n=new c.a;return this.items.forEach(function(t,r){var o=null!=t.mirrorOffset&&r-t.mirrorOffset>=e?n.maps.length-t.mirrorOffset:null;n.appendMap(t.map,o)},e,t),n},d.prototype.addMaps=function(e){return 0==this.eventCount?this:new d(this.items.append(e.map(function(e){return new f(e)})),this.eventCount)},d.prototype.rebased=function(e,t){if(!this.eventCount)return this;var n=[],r=Math.max(0,this.items.length-t),o=e.mapping,i=e.steps.length,s=this.eventCount;this.items.forEach(function(e){e.selection&&s--},r);var a=t;this.items.forEach(function(t){var r=o.getMirror(--a);if(null!=r){i=Math.min(i,r);var c=o.maps[r];if(t.step){var l=e.steps[r].invert(e.docs[r]),u=t.selection&&t.selection.map(o.slice(a+1,r));u&&s++,n.push(new f(c,l,u))}else n.push(new f(c))}},r);for(var c=[],l=t;l500&&(p=p.compress(this.items.length-n.length)),p},d.prototype.emptyItemCount=function(){var e=0;return this.items.forEach(function(t){t.step||e++}),e},d.prototype.compress=function(e){void 0===e&&(e=this.items.length);var t=this.remapping(0,e),n=t.maps.length,r=[],o=0;return this.items.forEach(function(i,s){if(s>=e)r.push(i),i.selection&&o++;else if(i.step){var a=i.step.map(t.slice(n)),c=a&&a.getMap();if(n--,c&&t.appendMap(c,n),a){var l=i.selection&&i.selection.map(t.slice(n));l&&o++;var u,p=new f(c.invert(),a,l),h=r.length-1;(u=r.length&&r[h].merge(p))?r[h]=u:r.push(p)}}else i.map&&n--},this.items.length,0),new d(h.from(r.reverse()),o)},d.empty=new d(h.empty,0);var f=function(e,t,n,r){this.map=e,this.step=t,this.selection=n,this.mirrorOffset=r};f.prototype.merge=function(e){if(this.step&&e.step&&!e.selection){var t=e.step.merge(this.step);if(t)return new f(t.getMap().invert(),t,this.selection)}};var m=function(e,t,n,r){this.done=e,this.undone=t,this.prevRanges=n,this.prevTime=r},v=20;function g(e){var t=[];return e.forEach(function(e,n,r,o){return t.push(r,o)}),t}function y(e,t){if(!e)return null;for(var n=[],r=0;r=t[o]&&(n=!0)}),n}(n,e.prevRanges)),c=s?y(e.prevRanges,n.mapping):g(n.mapping.maps[n.steps.length-1]);return new m(e.done.addTransform(n,a?t.selection.getBookmark():null,r,x(t)),d.empty,c,n.time)}(n,r,t,e)}},config:e})}function M(e,t){var n=k.getState(e);return!(!n||0==n.done.eventCount)&&(t&&b(n,e,t,!1),!0)}function N(e,t){var n=k.getState(e);return!(!n||0==n.undone.eventCount)&&(t&&b(n,e,t,!0),!0)} +/*! + * tiptap-extensions v1.32.6 + * (c) 2020 überdosis GbR (limited liability) + * @license MIT + */ +class T extends r.f{get name(){return"blockquote"}get schema(){return{content:"block*",group:"block",defining:!0,draggable:!1,parseDOM:[{tag:"blockquote"}],toDOM:()=>["blockquote",0]}}commands({type:e,schema:t}){return()=>Object(o.s)(e,t.nodes.paragraph)}keys({type:e}){return{"Ctrl->":Object(o.s)(e)}}inputRules({type:e}){return[Object(o.u)(/^\s*>\s$/,e)]}}class D extends r.f{get name(){return"bullet_list"}get schema(){return{content:"list_item+",group:"block",parseDOM:[{tag:"ul"}],toDOM:()=>["ul",0]}}commands({type:e,schema:t}){return()=>Object(o.q)(e,t.nodes.list_item)}keys({type:e,schema:t}){return{"Shift-Ctrl-8":Object(o.q)(e,t.nodes.list_item)}}inputRules({type:e}){return[Object(o.u)(/^\s*([-+*])\s$/,e)]}}class A extends r.f{get name(){return"code_block"}get schema(){return{content:"text*",marks:"",group:"block",code:!0,defining:!0,draggable:!1,parseDOM:[{tag:"pre",preserveWhitespace:"full"}],toDOM:()=>["pre",["code",0]]}}commands({type:e,schema:t}){return()=>Object(o.p)(e,t.nodes.paragraph)}keys({type:e}){return{"Shift-Ctrl-\\":Object(o.k)(e)}}inputRules({type:e}){return[Object(o.o)(/^```$/,e)]}}class E extends r.f{get name(){return"heading"}get defaultOptions(){return{levels:[1,2,3,4,5,6]}}get schema(){return{attrs:{level:{default:1}},content:"inline*",group:"block",defining:!0,draggable:!1,parseDOM:this.options.levels.map(e=>({tag:"h".concat(e),attrs:{level:e}})),toDOM:e=>["h".concat(e.attrs.level),0]}}commands({type:e,schema:t}){return n=>Object(o.p)(e,t.nodes.paragraph,n)}keys({type:e}){return this.options.levels.reduce((t,n)=>({...t,...{["Shift-Ctrl-".concat(n)]:Object(o.k)(e,{level:n})}}),{})}inputRules({type:e}){return this.options.levels.map(t=>Object(o.o)(new RegExp("^(#{1,".concat(t,"})\\s$")),e,()=>({level:t})))}}class R extends r.f{get name(){return"horizontal_rule"}get schema(){return{group:"block",parseDOM:[{tag:"hr"}],toDOM:()=>["hr"]}}commands({type:e}){return()=>(t,n)=>n(t.tr.replaceSelectionWith(e.create()))}inputRules({type:e}){return[Object(o.g)(/^(?:---|___\s|\*\*\*\s)$/,e)]}}class _ extends r.f{get name(){return"list_item"}get schema(){return{content:"paragraph block*",defining:!0,draggable:!1,parseDOM:[{tag:"li"}],toDOM:()=>["li",0]}}keys({type:e}){return{Enter:Object(o.m)(e),Tab:Object(o.l)(e),"Shift-Tab":Object(o.d)(e)}}}class P extends r.f{get name(){return"ordered_list"}get schema(){return{attrs:{order:{default:1}},content:"list_item+",group:"block",parseDOM:[{tag:"ol",getAttrs:e=>({order:e.hasAttribute("start")?+e.getAttribute("start"):1})}],toDOM:e=>1===e.attrs.order?["ol",0]:["ol",{start:e.attrs.order},0]}}commands({type:e,schema:t}){return()=>Object(o.q)(e,t.nodes.list_item)}keys({type:e,schema:t}){return{"Shift-Ctrl-9":Object(o.q)(e,t.nodes.list_item)}}inputRules({type:e}){return[Object(o.u)(/^(\d+)\.\s$/,e,e=>({order:+e[1]}),(e,t)=>t.childCount+t.attrs.order===+e[1])]}}Object(s.tableNodes)({tableGroup:"block",cellContent:"block+",cellAttributes:{background:{default:null,getFromDOM:e=>e.style.backgroundColor||null,setDOMAttr(e,t){if(e){const n={style:"".concat(t.style||"","background-color: ").concat(e,";")};Object.assign(t,n)}}}}});class $ extends r.e{get name(){return"bold"}get schema(){return{parseDOM:[{tag:"strong"},{tag:"b",getAttrs:e=>"normal"!==e.style.fontWeight&&null},{style:"font-weight",getAttrs:e=>/^(bold(er)?|[5-9]\d{2,})$/.test(e)&&null}],toDOM:()=>["strong",0]}}keys({type:e}){return{"Mod-b":Object(o.r)(e)}}commands({type:e}){return()=>Object(o.r)(e)}inputRules({type:e}){return[Object(o.e)(/(?:\*\*|__)([^*_]+)(?:\*\*|__)$/,e)]}pasteRules({type:e}){return[Object(o.f)(/(?:\*\*|__)([^*_]+)(?:\*\*|__)/g,e)]}}class I extends r.e{get name(){return"italic"}get schema(){return{parseDOM:[{tag:"i"},{tag:"em"},{style:"font-style=italic"}],toDOM:()=>["em",0]}}keys({type:e}){return{"Mod-i":Object(o.r)(e)}}commands({type:e}){return()=>Object(o.r)(e)}inputRules({type:e}){return[Object(o.e)(/(?:^|[^_])(_([^_]+)_)$/,e),Object(o.e)(/(?:^|[^*])(\*([^*]+)\*)$/,e)]}pasteRules({type:e}){return[Object(o.f)(/_([^_]+)_/g,e),Object(o.f)(/\*([^*]+)\*/g,e)]}}class z extends r.e{get name(){return"link"}get defaultOptions(){return{openOnClick:!0,target:null}}get schema(){return{attrs:{href:{default:null},target:{default:null}},inclusive:!1,parseDOM:[{tag:"a[href]",getAttrs:e=>({href:e.getAttribute("href"),target:e.getAttribute("target")})}],toDOM:e=>["a",{...e.attrs,rel:"noopener noreferrer nofollow",target:this.options.target},0]}}commands({type:e}){return t=>t.href?Object(o.t)(e,t):Object(o.i)(e)}pasteRules({type:e}){return[Object(o.h)(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z]{2,}\b([-a-zA-Z0-9@:%_+.~#?&//=,]*)/gi,e,e=>({href:e}))]}get plugins(){return this.options.openOnClick?[new r.g({props:{handleClick:(e,t,n)=>{const{schema:r}=e.state,o=Object(a.a)(e.state,r.marks.link);o.href&&n.target instanceof HTMLAnchorElement&&(n.stopPropagation(),window.open(o.href,o.target))}}})]:[]}}class B extends r.e{get name(){return"underline"}get schema(){return{parseDOM:[{tag:"u"},{style:"text-decoration",getAttrs:e=>"underline"===e}],toDOM:()=>["u",0]}}keys({type:e}){return{"Mod-u":Object(o.r)(e)}}commands({type:e}){return()=>Object(o.r)(e)}}class F extends r.d{get name(){return"history"}get defaultOptions(){return{depth:"",newGroupDelay:""}}keys(){return{"Mod-z":M,"Mod-y":N,"Shift-Mod-z":N,"Mod-я":M,"Shift-Mod-я":N}}get plugins(){return[O({depth:this.options.depth,newGroupDelay:this.options.newGroupDelay})]}commands(){return{undo:()=>M,redo:()=>N,undoDepth:()=>(function(e){var t=k.getState(e);return t?t.done.eventCount:0}),redoDepth:()=>(function(e){var t=k.getState(e);return t?t.undone.eventCount:0})}}}},ABBN:function(e,t,n){"use strict";n.d(t,"a",function(){return C}),n.d(t,"b",function(){return y}),n.d(t,"c",function(){return h}),n.d(t,"d",function(){return u}),n.d(t,"e",function(){return v}),n.d(t,"f",function(){return g}),n.d(t,"g",function(){return m});var r=n("CsC6"),o=n("MEpN"),i=n("UxO+");function s(e,t){return!e.selection.empty&&(t&&t(e.tr.deleteSelection().scrollIntoView()),!0)}function a(e,t){for(;e;e="start"==t?e.firstChild:e.lastChild)if(e.isTextblock)return!0;return!1}function c(e){if(!e.parent.type.spec.isolating)for(var t=e.depth-1;t>=0;t--){if(e.index(t)>0)return e.doc.resolve(e.before(t+1));if(e.node(t).type.spec.isolating)break}return null}function l(e){if(!e.parent.type.spec.isolating)for(var t=e.depth-1;t>=0;t--){var n=e.node(t);if(e.index(t)+1=0;h--)p=o.Fragment.from(s[h].create(null,p));p=o.Fragment.from(c.copy(p));var d=e.tr.step(new r.b(t.pos-1,u,t.pos,u,new o.Slice(p,1,0),s.length,!0)),f=u+2*s.length;Object(r.f)(d.doc,f)&&d.join(f),n(d.scrollIntoView())}return!0}var m=i.Selection.findFrom(t,1),v=m&&m.$from.blockRange(m.$to),g=v&&Object(r.k)(v);return null!=g&&g>=t.depth&&(n&&n(e.tr.lift(v,g).scrollIntoView()),!0)}function m(e,t){return function(n,o){var i=n.selection,s=i.$from,a=i.$to,c=s.blockRange(a),l=c&&Object(r.i)(c,e,t);return!!l&&(o&&o(n.tr.wrap(c,l).scrollIntoView()),!0)}}function v(e,t){return function(n,r){var o=n.selection,i=o.from,s=o.to,a=!1;return n.doc.nodesBetween(i,s,function(r,o){if(a)return!1;if(r.isTextblock&&!r.hasMarkup(e,t))if(r.type==e)a=!0;else{var i=n.doc.resolve(o),s=i.index();a=i.parent.canReplaceWith(s,s+1,e)}}),!!a&&(r&&r(n.tr.setBlockType(i,s,e,t).scrollIntoView()),!0)}}function g(e,t){return function(n,r){var o=n.selection,i=o.empty,s=o.$cursor,a=o.ranges;if(i&&!s||!function(e,t,n){for(var r=function(r){var o=t[r],i=o.$from,s=o.$to,a=0==i.depth&&e.type.allowsMarkType(n);if(e.nodesBetween(i.pos,s.pos,function(e){if(a)return!1;a=e.inlineContent&&e.type.allowsMarkType(n)}),a)return{v:!0}},o=0;o0))return!1;var s=c(o);if(!s){var l=o.blockRange(),u=l&&Object(r.k)(l);return null!=u&&(t&&t(e.tr.lift(l,u).scrollIntoView()),!0)}var p=s.nodeBefore;if(!p.type.spec.isolating&&f(e,s,t))return!0;if(0==o.parent.content.size&&(a(p,"end")||i.NodeSelection.isSelectable(p))){if(t){var h=e.tr.deleteRange(o.before(),o.after());h.setSelection(a(p,"end")?i.Selection.findFrom(h.doc.resolve(h.mapping.map(s.pos,-1)),-1):i.NodeSelection.create(h.doc,s.pos-p.nodeSize)),t(h.scrollIntoView())}return!0}return!(!p.isAtom||s.depth!=o.depth-1||(t&&t(e.tr.delete(s.pos-p.nodeSize,s.pos).scrollIntoView()),0))},function(e,t,n){var r=e.selection,o=r.$head,s=o;if(!r.empty)return!1;if(o.parent.isTextblock){if(n?!n.endOfTextblock("backward",e):o.parentOffset>0)return!1;s=c(o)}var a=s&&s.nodeBefore;return!(!a||!i.NodeSelection.isSelectable(a)||(t&&t(e.tr.setSelection(i.NodeSelection.create(e.doc,s.pos-a.nodeSize)).scrollIntoView()),0))}),w=y(s,function(e,t,n){var r=e.selection.$cursor;if(!r||(n?!n.endOfTextblock("forward",e):r.parentOffset1&&n.after()!=n.end(-1)){var o=n.before();if(Object(r.g)(e.doc,o))return t&&t(e.tr.split(o).scrollIntoView()),!0}var i=n.blockRange(),s=i&&Object(r.k)(i);return null!=s&&(t&&t(e.tr.lift(i,s).scrollIntoView()),!0)},d),"Mod-Enter":h,Backspace:b,"Mod-Backspace":b,Delete:w,"Mod-Delete":w,"Mod-a":function(e,t){return t&&t(e.tr.setSelection(new i.AllSelection(e.doc))),!0}},x={"Ctrl-h":S.Backspace,"Alt-Backspace":S["Mod-Backspace"],"Ctrl-d":S.Delete,"Ctrl-Alt-Backspace":S["Mod-Delete"],"Alt-Delete":S["Mod-Delete"],"Alt-d":S["Mod-Delete"]};for(var k in S)x[k]=S[k];var C=("undefined"!=typeof navigator?/Mac/.test(navigator.platform):"undefined"!=typeof os&&"darwin"==os.platform())?x:S},Bz7v:function(e,t,n){"use strict";var r=n("Xb7u"),o=i(Error);function i(e){return t.displayName=e.displayName||e.name,t;function t(t){return t&&(t=r.apply(null,arguments)),new e(t)}}e.exports=o,o.eval=i(EvalError),o.range=i(RangeError),o.reference=i(ReferenceError),o.syntax=i(SyntaxError),o.type=i(TypeError),o.uri=i(URIError),o.create=i},CsC6:function(e,t,n){"use strict";n.d(t,"a",function(){return u}),n.d(t,"b",function(){return b}),n.d(t,"c",function(){return y}),n.d(t,"d",function(){return v}),n.d(t,"e",function(){return h}),n.d(t,"f",function(){return M}),n.d(t,"g",function(){return O}),n.d(t,"h",function(){return D}),n.d(t,"i",function(){return k}),n.d(t,"j",function(){return T}),n.d(t,"k",function(){return x});var r=n("MEpN"),o=65535,i=Math.pow(2,16);function s(e,t){return e+t*i}function a(e){return e&o}var c=function(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=null),this.pos=e,this.deleted=t,this.recover=n},l=function(e,t){void 0===t&&(t=!1),this.ranges=e,this.inverted=t};l.prototype.recover=function(e){var t=0,n=a(e);if(!this.inverted)for(var r=0;re)break;var u=this.ranges[a+o],p=this.ranges[a+i],h=l+u;if(e<=h){var d=l+r+((u?e==l?-1:e==h?1:t:t)<0?0:p);if(n)return d;var f=e==(t<0?l:h)?null:s(a/3,e-l);return new c(d,t<0?e!=l:e!=h,f)}r+=p-u}return n?e+r:new c(e+r)},l.prototype.touches=function(e,t){for(var n=0,r=a(t),o=this.inverted?2:1,i=this.inverted?1:2,s=0;se)break;var l=this.ranges[s+o];if(e<=c+l&&s==3*r)return!0;n+=this.ranges[s+i]-l}return!1},l.prototype.forEach=function(e){for(var t=this.inverted?2:1,n=this.inverted?1:2,r=0,o=0;r=0;t--){var r=e.getMirror(t);this.appendMap(e.maps[t].invert(),null!=r&&r>t?n-r-1:null)}},u.prototype.invert=function(){var e=new u;return e.appendMappingInverted(this),e},u.prototype.map=function(e,t){if(void 0===t&&(t=1),this.mirror)return this._map(e,t,!0);for(var n=this.from;no&&s0},h.prototype.addStep=function(e,t){this.docs.push(this.doc),this.steps.push(e),this.mapping.appendMap(e.getMap()),this.doc=t},Object.defineProperties(h.prototype,d);var m=Object.create(null),v=function(){};v.prototype.apply=function(e){return f()},v.prototype.getMap=function(){return l.empty},v.prototype.invert=function(e){return f()},v.prototype.map=function(e){return f()},v.prototype.merge=function(e){return null},v.prototype.toJSON=function(){return f()},v.fromJSON=function(e,t){if(!t||!t.stepType)throw new RangeError("Invalid input for Step.fromJSON");var n=m[t.stepType];if(!n)throw new RangeError("No step type "+t.stepType+" defined");return n.fromJSON(e,t)},v.jsonID=function(e,t){if(e in m)throw new RangeError("Duplicate use of step JSON ID "+e);return m[e]=t,t.prototype.jsonID=e,t};var g=function(e,t){this.doc=e,this.failed=t};g.ok=function(e){return new g(e,null)},g.fail=function(e){return new g(null,e)},g.fromReplace=function(e,t,n,o){try{return g.ok(e.replace(t,n,o))}catch(e){if(e instanceof r.ReplaceError)return g.fail(e.message);throw e}};var y=function(e){function t(t,n,r,o){e.call(this),this.from=t,this.to=n,this.slice=r,this.structure=!!o}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.apply=function(e){return this.structure&&w(e,this.from,this.to)?g.fail("Structure replace would overwrite content"):g.fromReplace(e,this.from,this.to,this.slice)},t.prototype.getMap=function(){return new l([this.from,this.to-this.from,this.slice.size])},t.prototype.invert=function(e){return new t(this.from,this.from+this.slice.size,e.slice(this.from,this.to))},t.prototype.map=function(e){var n=e.mapResult(this.from,1),r=e.mapResult(this.to,-1);return n.deleted&&r.deleted?null:new t(n.pos,Math.max(n.pos,r.pos),this.slice)},t.prototype.merge=function(e){if(!(e instanceof t)||e.structure!=this.structure)return null;if(this.from+this.slice.size!=e.from||this.slice.openEnd||e.slice.openStart){if(e.to!=this.from||this.slice.openStart||e.slice.openEnd)return null;var n=this.slice.size+e.slice.size==0?r.Slice.empty:new r.Slice(e.slice.content.append(this.slice.content),e.slice.openStart,this.slice.openEnd);return new t(e.from,this.to,n,this.structure)}var o=this.slice.size+e.slice.size==0?r.Slice.empty:new r.Slice(this.slice.content.append(e.slice.content),this.slice.openStart,e.slice.openEnd);return new t(this.from,this.to+(e.to-e.from),o,this.structure)},t.prototype.toJSON=function(){var e={stepType:"replace",from:this.from,to:this.to};return this.slice.size&&(e.slice=this.slice.toJSON()),this.structure&&(e.structure=!0),e},t.fromJSON=function(e,n){if("number"!=typeof n.from||"number"!=typeof n.to)throw new RangeError("Invalid input for ReplaceStep.fromJSON");return new t(n.from,n.to,r.Slice.fromJSON(e,n.slice),!!n.structure)},t}(v);v.jsonID("replace",y);var b=function(e){function t(t,n,r,o,i,s,a){e.call(this),this.from=t,this.to=n,this.gapFrom=r,this.gapTo=o,this.slice=i,this.insert=s,this.structure=!!a}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.apply=function(e){if(this.structure&&(w(e,this.from,this.gapFrom)||w(e,this.gapTo,this.to)))return g.fail("Structure gap-replace would overwrite content");var t=e.slice(this.gapFrom,this.gapTo);if(t.openStart||t.openEnd)return g.fail("Gap is not a flat range");var n=this.slice.insertAt(this.insert,t.content);return n?g.fromReplace(e,this.from,this.to,n):g.fail("Content does not fit in gap")},t.prototype.getMap=function(){return new l([this.from,this.gapFrom-this.from,this.insert,this.gapTo,this.to-this.gapTo,this.slice.size-this.insert])},t.prototype.invert=function(e){var n=this.gapTo-this.gapFrom;return new t(this.from,this.from+this.slice.size+n,this.from+this.insert,this.from+this.insert+n,e.slice(this.from,this.to).removeBetween(this.gapFrom-this.from,this.gapTo-this.from),this.gapFrom-this.from,this.structure)},t.prototype.map=function(e){var n=e.mapResult(this.from,1),r=e.mapResult(this.to,-1),o=e.map(this.gapFrom,-1),i=e.map(this.gapTo,1);return n.deleted&&r.deleted||or.pos?null:new t(n.pos,r.pos,o,i,this.slice,this.insert,this.structure)},t.prototype.toJSON=function(){var e={stepType:"replaceAround",from:this.from,to:this.to,gapFrom:this.gapFrom,gapTo:this.gapTo,insert:this.insert};return this.slice.size&&(e.slice=this.slice.toJSON()),this.structure&&(e.structure=!0),e},t.fromJSON=function(e,n){if("number"!=typeof n.from||"number"!=typeof n.to||"number"!=typeof n.gapFrom||"number"!=typeof n.gapTo||"number"!=typeof n.insert)throw new RangeError("Invalid input for ReplaceAroundStep.fromJSON");return new t(n.from,n.to,n.gapFrom,n.gapTo,r.Slice.fromJSON(e,n.slice),n.insert,!!n.structure)},t}(v);function w(e,t,n){for(var r=e.resolve(t),o=n-t,i=r.depth;o>0&&i>0&&r.indexAfter(i)==r.node(i).childCount;)i--,o--;if(o>0)for(var s=r.node(i).maybeChild(r.indexAfter(i));o>0;){if(!s||s.isLeaf)return!0;s=s.firstChild,o--}return!1}function S(e,t,n){return(0==t||e.canReplace(t,e.childCount))&&(n==e.childCount||e.canReplace(0,n))}function x(e){for(var t=e.parent.content.cutByIndex(e.startIndex,e.endIndex),n=e.depth;;--n){var r=e.$from.node(n),o=e.$from.index(n),i=e.$to.indexAfter(n);if(ni;a--,c--){var l=o.node(a),u=o.index(a);if(l.type.spec.isolating)return!1;var p=l.content.cutByIndex(u,l.childCount),h=r&&r[c]||l;if(h!=l&&(p=p.replaceChild(0,h.type.create(h.attrs))),!l.canReplace(u+1,l.childCount)||!h.type.validContent(p))return!1}var d=o.indexAfter(i),f=r&&r[0];return o.node(i).canReplaceWith(d,d,f?f.type:o.node(i+1).type)}function M(e,t){var n=e.resolve(t),r=n.index();return N(n.nodeBefore,n.nodeAfter)&&n.parent.canReplace(r,r+1)}function N(e,t){return e&&t&&!e.isLeaf&&e.canAppend(t)}function T(e,t,n){void 0===n&&(n=-1);for(var r=e.resolve(t),o=r.depth;;o--){var i=void 0,s=void 0,a=r.index(o);if(o==r.depth?(i=r.nodeBefore,s=r.nodeAfter):n>0?(i=r.node(o+1),a++,s=r.node(o).maybeChild(a)):(i=r.node(o).maybeChild(a-1),s=r.node(o+1)),i&&!i.isTextblock&&N(i,s)&&r.node(o).canReplace(a,a+1))return t;if(0==o)break;t=n<0?r.before(o):r.after(o)}}function D(e,t,n){var r=e.resolve(t);if(!n.content.size)return t;for(var o=n.content,i=0;i=0;a--){var c=a==r.depth?0:r.pos<=(r.start(a+1)+r.end(a+1))/2?-1:1,l=r.index(a)+(c>0?1:0);if(1==s?r.node(a).canReplace(l,l,o):r.node(a).contentMatchAt(l).findWrapping(o.firstChild.type))return 0==c?r.pos:c<0?r.before(a+1):r.after(a+1)}return null}function A(e,t,n){for(var o=[],i=0;it;h--)d||n.index(h)>0?(d=!0,u=r.Fragment.from(n.node(h).copy(u)),p++):c--;for(var f=r.Fragment.empty,m=0,v=i,g=!1;v>t;v--)g||o.after(v+1)=0;o--)n=r.Fragment.from(t[o].type.create(t[o].attrs,n));var i=e.start,s=e.end;return this.step(new b(i,s,i,s,new r.Slice(n,0,0),t.length,!0))},h.prototype.setBlockType=function(e,t,n,o){var i=this;if(void 0===t&&(t=e),!n.isTextblock)throw new RangeError("Type given to setBlockType should be a textblock");var s=this.steps.length;return this.doc.nodesBetween(e,t,function(e,t){if(e.isTextblock&&!e.hasMarkup(n,o)&&function(e,t,n){var r=e.resolve(t),o=r.index();return r.parent.canReplaceWith(o,o+1,n)}(i.doc,i.mapping.slice(s).map(t),n)){i.clearIncompatible(i.mapping.slice(s).map(t,1),n);var a=i.mapping.slice(s),c=a.map(t,1),l=a.map(t+e.nodeSize,1);return i.step(new b(c,l,c+1,l-1,new r.Slice(r.Fragment.from(n.create(o,null,e.marks)),0,0),1,!0)),!1}}),this},h.prototype.setNodeMarkup=function(e,t,n,o){var i=this.doc.nodeAt(e);if(!i)throw new RangeError("No node at given position");t||(t=i.type);var s=t.create(n,null,o||i.marks);if(i.isLeaf)return this.replaceWith(e,e+i.nodeSize,s);if(!t.validContent(i.content))throw new RangeError("Invalid content for node type "+t.name);return this.step(new b(e,e+i.nodeSize,e+1,e+i.nodeSize-1,new r.Slice(r.Fragment.from(s),0,0),1,!0))},h.prototype.split=function(e,t,n){void 0===t&&(t=1);for(var o=this.doc.resolve(e),i=r.Fragment.empty,s=r.Fragment.empty,a=o.depth,c=o.depth-t,l=t-1;a>c;a--,l--){i=r.Fragment.from(o.node(a).copy(i));var u=n&&n[l];s=r.Fragment.from(u?u.type.create(u.attrs,s):o.node(a).copy(s))}return this.step(new y(e,e,new r.Slice(i.append(s),t,t),!0))},h.prototype.join=function(e,t){void 0===t&&(t=1);var n=new y(e-t,e+t,r.Slice.empty,!0);return this.step(n)};var E=function(e){function t(t,n,r){e.call(this),this.from=t,this.to=n,this.mark=r}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.apply=function(e){var t=this,n=e.slice(this.from,this.to),o=e.resolve(this.from),i=o.node(o.sharedDepth(this.to)),s=new r.Slice(A(n.content,function(e,n){return n.type.allowsMarkType(t.mark.type)?e.mark(t.mark.addToSet(e.marks)):e},i),n.openStart,n.openEnd);return g.fromReplace(e,this.from,this.to,s)},t.prototype.invert=function(){return new R(this.from,this.to,this.mark)},t.prototype.map=function(e){var n=e.mapResult(this.from,1),r=e.mapResult(this.to,-1);return n.deleted&&r.deleted||n.pos>=r.pos?null:new t(n.pos,r.pos,this.mark)},t.prototype.merge=function(e){if(e instanceof t&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from)return new t(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark)},t.prototype.toJSON=function(){return{stepType:"addMark",mark:this.mark.toJSON(),from:this.from,to:this.to}},t.fromJSON=function(e,n){if("number"!=typeof n.from||"number"!=typeof n.to)throw new RangeError("Invalid input for AddMarkStep.fromJSON");return new t(n.from,n.to,e.markFromJSON(n.mark))},t}(v);v.jsonID("addMark",E);var R=function(e){function t(t,n,r){e.call(this),this.from=t,this.to=n,this.mark=r}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.apply=function(e){var t=this,n=e.slice(this.from,this.to),o=new r.Slice(A(n.content,function(e){return e.mark(t.mark.removeFromSet(e.marks))}),n.openStart,n.openEnd);return g.fromReplace(e,this.from,this.to,o)},t.prototype.invert=function(){return new E(this.from,this.to,this.mark)},t.prototype.map=function(e){var n=e.mapResult(this.from,1),r=e.mapResult(this.to,-1);return n.deleted&&r.deleted||n.pos>=r.pos?null:new t(n.pos,r.pos,this.mark)},t.prototype.merge=function(e){if(e instanceof t&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from)return new t(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark)},t.prototype.toJSON=function(){return{stepType:"removeMark",mark:this.mark.toJSON(),from:this.from,to:this.to}},t.fromJSON=function(e,n){if("number"!=typeof n.from||"number"!=typeof n.to)throw new RangeError("Invalid input for RemoveMarkStep.fromJSON");return new t(n.from,n.to,e.markFromJSON(n.mark))},t}(v);function _(e,t,n){return!n.openStart&&!n.openEnd&&e.start()==t.start()&&e.parent.canReplace(e.index(),t.index(),n.content)}v.jsonID("removeMark",R),h.prototype.addMark=function(e,t,n){var r=this,o=[],i=[],s=null,a=null;return this.doc.nodesBetween(e,t,function(r,c,l){if(r.isInline){var u=r.marks;if(!n.isInSet(u)&&l.type.allowsMarkType(n.type)){for(var p=Math.max(c,e),h=Math.min(c+r.nodeSize,t),d=n.addToSet(u),f=0;f=0;d--)this.step(i[d]);return this},h.prototype.replace=function(e,t,n){void 0===t&&(t=e),void 0===n&&(n=r.Slice.empty);var o=function(e,t,n,o){if(void 0===n&&(n=t),void 0===o&&(o=r.Slice.empty),t==n&&!o.size)return null;var i=e.resolve(t),s=e.resolve(n);return _(i,s,o)?new y(t,n,o):new P(i,s,o).fit()}(this.doc,e,t,n);return o&&this.step(o),this},h.prototype.replaceWith=function(e,t,n){return this.replace(e,t,new r.Slice(r.Fragment.from(n),0,0))},h.prototype.delete=function(e,t){return this.replace(e,t,r.Slice.empty)},h.prototype.insert=function(e,t){return this.replaceWith(e,e,t)};var P=function(e,t,n){this.$to=t,this.$from=e,this.unplaced=n,this.frontier=[];for(var o=0;o<=e.depth;o++){var i=e.node(o);this.frontier.push({type:i.type,match:i.contentMatchAt(e.indexAfter(o))})}this.placed=r.Fragment.empty;for(var s=e.depth;s>0;s--)this.placed=r.Fragment.from(e.node(s).copy(this.placed))},$={depth:{configurable:!0}};function I(e,t,n){return 0==t?e.cutByIndex(n):e.replaceChild(0,e.firstChild.copy(I(e.firstChild.content,t-1,n)))}function z(e,t,n){return 0==t?e.append(n):e.replaceChild(e.childCount-1,e.lastChild.copy(z(e.lastChild.content,t-1,n)))}function B(e,t){for(var n=0;n1&&(o=o.replaceChild(0,F(o.firstChild,t-1,1==o.childCount?n-1:0))),t>0&&(o=e.type.contentMatch.fillBefore(o).append(o),n<=0&&(o=o.append(e.type.contentMatch.matchFragment(o).fillBefore(r.Fragment.empty,!0)))),e.copy(o)}function V(e,t,n,r,o){var i=e.node(t),s=o?e.indexAfter(t):e.index(t);if(s==i.childCount&&!n.compatibleContent(i.type))return null;var a=r.fillBefore(i.content,!0,s);return a&&!function(e,t,n){for(var r=n;ro){var a=i.contentMatchAt(0),c=a.fillBefore(e).append(e);e=c.append(a.matchFragment(c).fillBefore(r.Fragment.empty,!0))}return e}function L(e,t){for(var n=[],r=Math.min(e.depth,t.depth);r>=0;r--){var o=e.start(r);if(ot.pos+(t.depth-r)||e.node(r).type.spec.isolating||t.node(r).type.spec.isolating)break;o==t.start(r)&&n.push(r)}return n}$.depth.get=function(){return this.frontier.length-1},P.prototype.fit=function(){for(;this.unplaced.size;){var e=this.findFittable();e?this.placeNodes(e):this.openMore()||this.dropNode()}var t=this.mustMoveInline(),n=this.placed.size-this.depth-this.$from.depth,o=this.$from,i=this.close(t<0?this.$to:o.doc.resolve(t));if(!i)return null;for(var s=this.placed,a=o.depth,c=i.depth;a&&c&&1==s.childCount;)s=s.firstChild.content,a--,c--;var l=new r.Slice(s,a,c);return t>-1?new b(o.pos,t,this.$to.pos,this.$to.end(),l,n):l.size||o.pos!=this.$to.pos?new y(o.pos,i.pos,l):void 0},P.prototype.findFittable=function(){for(var e=1;e<=2;e++)for(var t=this.unplaced.openStart;t>=0;t--)for(var n=void 0,o=(t?(n=B(this.unplaced.content,t-1).firstChild).content:this.unplaced.content).firstChild,i=this.depth;i>=0;i--){var s=this.frontier[i],a=s.type,c=s.match,l=void 0,u=void 0;if(1==e&&(o?c.matchType(o.type)||(u=c.fillBefore(r.Fragment.from(o),!1)):a.compatibleContent(n.type)))return{sliceDepth:t,frontierDepth:i,parent:n,inject:u};if(2==e&&o&&(l=c.findWrapping(o.type)))return{sliceDepth:t,frontierDepth:i,parent:n,wrap:l};if(n&&c.matchType(n.type))break}},P.prototype.openMore=function(){var e=this.unplaced,t=e.content,n=e.openStart,o=e.openEnd,i=B(t,n);return!(!i.childCount||i.firstChild.isLeaf)&&(this.unplaced=new r.Slice(t,n+1,Math.max(o,i.size+n>=t.size-o?n+1:0)),!0)},P.prototype.dropNode=function(){var e=this.unplaced,t=e.content,n=e.openStart,o=e.openEnd,i=B(t,n);if(i.childCount<=1&&n>0){var s=t.size-n<=n+i.size;this.unplaced=new r.Slice(I(t,n-1,1),n-1,s?n-1:o)}else this.unplaced=new r.Slice(I(t,n,1),n,o)},P.prototype.placeNodes=function(e){for(var t=e.sliceDepth,n=e.frontierDepth,o=e.parent,i=e.inject,s=e.wrap;this.depth>n;)this.closeFrontierNode();if(s)for(var a=0;a1||0==u||y.content.size)&&(f=b,h.push(F(y.mark(m.allowedMarks(y.marks)),1==p?u:0,p==l.childCount?g:-1)))}var w=p==l.childCount;w||(g=-1),this.placed=z(this.placed,n,r.Fragment.from(h)),this.frontier[n].match=f,w&&g<0&&o&&o.type==this.frontier[this.depth].type&&this.frontier.length>1&&this.closeFrontierNode();for(var S=0,x=l;S1&&r==this.$to.end(--n);)++r;return r},P.prototype.findCloseLevel=function(e){e:for(var t=Math.min(this.depth,e.depth);t>=0;t--){var n=this.frontier[t],r=n.match,o=n.type,i=t=0;a--){var c=this.frontier[a],l=c.match,u=V(e,a,c.type,l,!0);if(!u||u.childCount)continue e}return{depth:t,fit:s,move:i?e.doc.resolve(e.after(t+1)):e}}}},P.prototype.close=function(e){var t=this.findCloseLevel(e);if(!t)return null;for(;this.depth>t.depth;)this.closeFrontierNode();t.fit.childCount&&(this.placed=z(this.placed,t.depth,t.fit)),e=t.move;for(var n=t.depth+1;n<=e.depth;n++){var r=e.node(n),o=r.type.contentMatch.fillBefore(r.content,!0,e.index(n));this.openFrontierNode(r.type,r.attrs,o)}return e},P.prototype.openFrontierNode=function(e,t,n){var o=this.frontier[this.depth];o.match=o.match.matchType(e),this.placed=z(this.placed,this.depth,r.Fragment.from(e.create(t,n))),this.frontier.push({type:e,match:e.contentMatch})},P.prototype.closeFrontierNode=function(){var e=this.frontier.pop().match.fillBefore(r.Fragment.empty,!0);e.childCount&&(this.placed=z(this.placed,this.frontier.length,e))},Object.defineProperties(P.prototype,$),h.prototype.replaceRange=function(e,t,n){if(!n.size)return this.deleteRange(e,t);var o=this.doc.resolve(e),i=this.doc.resolve(t);if(_(o,i,n))return this.step(new y(e,t,n));var s=L(o,this.doc.resolve(t));0==s[s.length-1]&&s.pop();var a=-(o.depth+1);s.unshift(a);for(var c=o.depth,l=o.pos-1;c>0;c--,l--){var u=o.node(c).type.spec;if(u.defining||u.isolating)break;s.indexOf(c)>-1?a=c:o.before(c)==l&&s.splice(1,0,-c)}for(var p=s.indexOf(a),h=[],d=n.openStart,f=n.content,m=0;;m++){var v=f.firstChild;if(h.push(v),m==n.openStart)break;f=v.content}d>0&&h[d-1].type.spec.defining&&o.node(p).type!=h[d-1].type?d-=1:d>=2&&h[d-1].isTextblock&&h[d-2].type.spec.defining&&o.node(p).type!=h[d-2].type&&(d-=2);for(var g=n.openStart;g>=0;g--){var b=(g+d+1)%(n.openStart+1),w=h[b];if(w)for(var S=0;S=0&&(this.replace(e,t,n),!(this.steps.length>M));N--){var T=s[N];N<0||(e=o.before(T),t=i.after(T))}return this},h.prototype.replaceRangeWith=function(e,t,n){if(!n.isInline&&e==t&&this.doc.resolve(e).parent.content.size){var o=function(e,t,n){var r=e.resolve(t);if(r.parent.canReplaceWith(r.index(),r.index(),n))return t;if(0==r.parentOffset)for(var o=r.depth-1;o>=0;o--){var i=r.index(o);if(r.node(o).canReplaceWith(i,i,n))return r.before(o+1);if(i>0)return null}if(r.parentOffset==r.parent.content.size)for(var s=r.depth-1;s>=0;s--){var a=r.indexAfter(s);if(r.node(s).canReplaceWith(a,a,n))return r.after(s+1);if(a0&&(a||n.node(s-1).canReplace(n.index(s-1),r.indexAfter(s-1))))return this.delete(n.before(s),r.after(s))}for(var c=1;c<=n.depth&&c<=r.depth;c++)if(e-n.start(c)==n.depth-c&&t>n.end(c)&&r.end(c)-t!=r.depth-c)return this.delete(n.before(c),t);return this.delete(e,t)}},J7Ao:function(e,t){e.exports=class{constructor(){this.seen={}}slug(e){let t=e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t)){const e=t;do{this.seen[e]++,t=e+"-"+this.seen[e]}while(this.seen.hasOwnProperty(t))}return this.seen[t]=0,t}}},MEpN:function(e,t,n){"use strict";function r(e){this.content=e}n.r(t),n.d(t,"ContentMatch",function(){return _}),n.d(t,"DOMParser",function(){return ee}),n.d(t,"DOMSerializer",function(){return de}),n.d(t,"Fragment",function(){return i}),n.d(t,"Mark",function(){return u}),n.d(t,"MarkType",function(){return Z}),n.d(t,"Node",function(){return D}),n.d(t,"NodeRange",function(){return M}),n.d(t,"NodeType",function(){return H}),n.d(t,"ReplaceError",function(){return p}),n.d(t,"ResolvedPos",function(){return S}),n.d(t,"Schema",function(){return Y}),n.d(t,"Slice",function(){return h}),r.prototype={constructor:r,find:function(e){for(var t=0;t>1}},r.from=function(e){if(e instanceof r)return e;var t=[];if(e)for(var n in e)t.push(n,e[n]);return new r(t)};var o=r;var i=function(e,t){if(this.content=e,this.size=t||0,null==t)for(var n=0;ne&&!1!==n(a,r+s,o,i)&&a.content.size){var l=s+1;a.nodesBetween(Math.max(0,e-l),Math.min(a.content.size,t-l),n,r+l)}s=c}},i.prototype.descendants=function(e){this.nodesBetween(0,this.size,e)},i.prototype.textBetween=function(e,t,n,r){var o="",i=!0;return this.nodesBetween(e,t,function(s,a){s.isText?(o+=s.text.slice(Math.max(e,a)-a,t-a),i=!n):s.isLeaf&&r?(o+=r,i=!n):!i&&s.isBlock&&(o+=n,i=!0)},0),o},i.prototype.append=function(e){if(!e.size)return this;if(!this.size)return e;var t=this.lastChild,n=e.firstChild,r=this.content.slice(),o=0;for(t.isText&&t.sameMarkup(n)&&(r[r.length-1]=t.withText(t.text+n.text),o=1);oe)for(var o=0,s=0;se&&((st)&&(a=a.isText?a.cut(Math.max(0,e-s),Math.min(a.text.length,t-s)):a.cut(Math.max(0,e-s-1),Math.min(a.content.size,t-s-1))),n.push(a),r+=a.nodeSize),s=c}return new i(n,r)},i.prototype.cutByIndex=function(e,t){return e==t?i.empty:0==e&&t==this.content.length?this:new i(this.content.slice(e,t))},i.prototype.replaceChild=function(e,t){var n=this.content[e];if(n==t)return this;var r=this.content.slice(),o=this.size+t.nodeSize-n.nodeSize;return r[e]=t,new i(r,o)},i.prototype.addToStart=function(e){return new i([e].concat(this.content),this.size+e.nodeSize)},i.prototype.addToEnd=function(e){return new i(this.content.concat(e),this.size+e.nodeSize)},i.prototype.eq=function(e){if(this.content.length!=e.content.length)return!1;for(var t=0;tthis.size||e<0)throw new RangeError("Position "+e+" outside of fragment ("+this+")");for(var n=0,r=0;;n++){var o=r+this.child(n).nodeSize;if(o>=e)return o==e||t>0?c(n+1,o):c(n,r);r=o}},i.prototype.toString=function(){return"<"+this.toStringInner()+">"},i.prototype.toStringInner=function(){return this.content.join(", ")},i.prototype.toJSON=function(){return this.content.length?this.content.map(function(e){return e.toJSON()}):null},i.fromJSON=function(e,t){if(!t)return i.empty;if(!Array.isArray(t))throw new RangeError("Invalid input for Fragment.fromJSON");return new i(t.map(e.nodeFromJSON))},i.fromArray=function(e){if(!e.length)return i.empty;for(var t,n=0,r=0;rthis.type.rank&&(t||(t=e.slice(0,r)),t.push(this),n=!0),t&&t.push(o)}}return t||(t=e.slice()),n||t.push(this),t},u.prototype.removeFromSet=function(e){for(var t=0;te.depth)throw new p("Inserted content deeper than insertion position");if(e.depth-n.openStart!=t.depth-n.openEnd)throw new p("Inconsistent open depths");return function e(t,n,r,o){var s=t.index(o),a=t.node(o);if(s==n.index(o)&&o=0;o--)r=t.node(o).copy(i.from(r));return{start:r.resolveNoCache(e.openStart+n),end:r.resolveNoCache(r.content.size-e.openEnd-n)}}(r,t),u=l.start,p=l.end;return b(a,function e(t,n,r,o,s){var a=t.depth>s&&v(t,n,s+1);var c=o.depth>s&&v(r,o,s+1);var l=[];y(null,t,s,l);a&&c&&n.index(s)==r.index(s)?(m(a,c),g(b(a,e(t,n,r,o,s+1)),l)):(a&&g(b(a,w(t,n,s+1)),l),y(n,r,s,l),c&&g(b(c,w(r,o,s+1)),l));y(o,null,s,l);return new i(l)}(t,u,p,n,o))}var h=t.parent,d=h.content;return b(h,d.cut(0,t.parentOffset).append(r.content).append(d.cut(n.parentOffset)))}return b(a,w(t,n,o))}(e,t,n,0)}function m(e,t){if(!t.type.compatibleContent(e.type))throw new p("Cannot join "+t.type.name+" onto "+e.type.name)}function v(e,t,n){var r=e.node(n);return m(r,t.node(n)),r}function g(e,t){var n=t.length-1;n>=0&&e.isText&&e.sameMarkup(t[n])?t[n]=e.withText(t[n].text+e.text):t.push(e)}function y(e,t,n,r){var o=(t||e).node(n),i=0,s=t?t.index(n):o.childCount;e&&(i=e.index(n),e.depth>n?i++:e.textOffset&&(g(e.nodeAfter,r),i++));for(var a=i;an)&&g(b(v(e,t,n+1),w(e,t,n+1)),r);return y(t,null,n,r),new i(r)}d.size.get=function(){return this.content.size-this.openStart-this.openEnd},h.prototype.insertAt=function(e,t){var n=function e(t,n,r,o){var i=t.findIndex(n);var s=i.index;var a=i.offset;var c=t.maybeChild(s);if(a==n||c.isText)return o&&!o.canReplace(s,s,r)?null:t.cut(0,n).append(r).append(t.cut(n));var l=e(c.content,n-a-1,r);return l&&t.replaceChild(s,c.copy(l))}(this.content,e+this.openStart,t,null);return n&&new h(n,this.openStart,this.openEnd)},h.prototype.removeBetween=function(e,t){return new h(function e(t,n,r){var o=t.findIndex(n);var i=o.index;var s=o.offset;var a=t.maybeChild(i);var c=t.findIndex(r);var l=c.index;var u=c.offset;if(s==n||a.isText){if(u!=r&&!t.child(l).isText)throw new RangeError("Removing non-flat range");return t.cut(0,n).append(t.cut(r))}if(i!=l)throw new RangeError("Removing non-flat range");return t.replaceChild(i,a.copy(e(a.content,n-s-1,r-s-1)))}(this.content,e+this.openStart,t+this.openStart),this.openStart,this.openEnd)},h.prototype.eq=function(e){return this.content.eq(e.content)&&this.openStart==e.openStart&&this.openEnd==e.openEnd},h.prototype.toString=function(){return this.content+"("+this.openStart+","+this.openEnd+")"},h.prototype.toJSON=function(){if(!this.content.size)return null;var e={content:this.content.toJSON()};return this.openStart>0&&(e.openStart=this.openStart),this.openEnd>0&&(e.openEnd=this.openEnd),e},h.fromJSON=function(e,t){if(!t)return h.empty;var n=t.openStart||0,r=t.openEnd||0;if("number"!=typeof n||"number"!=typeof r)throw new RangeError("Invalid input for Slice.fromJSON");return new h(i.fromJSON(e,t.content),t.openStart||0,t.openEnd||0)},h.maxOpen=function(e,t){void 0===t&&(t=!0);for(var n=0,r=0,o=e.firstChild;o&&!o.isLeaf&&(t||!o.type.spec.isolating);o=o.firstChild)n++;for(var i=e.lastChild;i&&!i.isLeaf&&(t||!i.type.spec.isolating);i=i.lastChild)r++;return new h(e,n,r)},Object.defineProperties(h.prototype,d),h.empty=new h(i.empty,0,0);var S=function(e,t,n){this.pos=e,this.path=t,this.depth=t.length/3-1,this.parentOffset=n},x={parent:{configurable:!0},doc:{configurable:!0},textOffset:{configurable:!0},nodeAfter:{configurable:!0},nodeBefore:{configurable:!0}};S.prototype.resolveDepth=function(e){return null==e?this.depth:e<0?this.depth+e:e},x.parent.get=function(){return this.node(this.depth)},x.doc.get=function(){return this.node(0)},S.prototype.node=function(e){return this.path[3*this.resolveDepth(e)]},S.prototype.index=function(e){return this.path[3*this.resolveDepth(e)+1]},S.prototype.indexAfter=function(e){return e=this.resolveDepth(e),this.index(e)+(e!=this.depth||this.textOffset?1:0)},S.prototype.start=function(e){return 0==(e=this.resolveDepth(e))?0:this.path[3*e-1]+1},S.prototype.end=function(e){return e=this.resolveDepth(e),this.start(e)+this.node(e).content.size},S.prototype.before=function(e){if(!(e=this.resolveDepth(e)))throw new RangeError("There is no position before the top-level node");return e==this.depth+1?this.pos:this.path[3*e-1]},S.prototype.after=function(e){if(!(e=this.resolveDepth(e)))throw new RangeError("There is no position after the top-level node");return e==this.depth+1?this.pos:this.path[3*e-1]+this.path[3*e].nodeSize},x.textOffset.get=function(){return this.pos-this.path[this.path.length-1]},x.nodeAfter.get=function(){var e=this.parent,t=this.index(this.depth);if(t==e.childCount)return null;var n=this.pos-this.path[this.path.length-1],r=e.child(t);return n?e.child(t).cut(n):r},x.nodeBefore.get=function(){var e=this.index(this.depth),t=this.pos-this.path[this.path.length-1];return t?this.parent.child(e).cut(0,t):0==e?null:this.parent.child(e-1)},S.prototype.marks=function(){var e=this.parent,t=this.index();if(0==e.content.size)return u.none;if(this.textOffset)return e.child(t).marks;var n=e.maybeChild(t-1),r=e.maybeChild(t);if(!n){var o=n;n=r,r=o}for(var i=n.marks,s=0;s0;t--)if(this.start(t)<=e&&this.end(t)>=e)return t;return 0},S.prototype.blockRange=function(e,t){if(void 0===e&&(e=this),e.pos=0;n--)if(e.pos<=this.end(n)&&(!t||t(this.node(n))))return new M(this,e,n)},S.prototype.sameParent=function(e){return this.pos-this.parentOffset==e.pos-e.parentOffset},S.prototype.max=function(e){return e.pos>this.pos?e:this},S.prototype.min=function(e){return e.pos=0&&t<=e.content.size))throw new RangeError("Position "+t+" out of range");for(var n=[],r=0,o=t,i=e;;){var s=i.content.findIndex(o),a=s.index,c=s.offset,l=o-c;if(n.push(i,a,r+c),!l)break;if((i=i.child(a)).isText)break;o=l-1,r+=c+1}return new S(t,n,o)},S.resolveCached=function(e,t){for(var n=0;ne&&this.nodesBetween(e,t,function(e){return n.isInSet(e.marks)&&(r=!0),!r}),r},A.isBlock.get=function(){return this.type.isBlock},A.isTextblock.get=function(){return this.type.isTextblock},A.inlineContent.get=function(){return this.type.inlineContent},A.isInline.get=function(){return this.type.isInline},A.isText.get=function(){return this.type.isText},A.isLeaf.get=function(){return this.type.isLeaf},A.isAtom.get=function(){return this.type.isAtom},D.prototype.toString=function(){if(this.type.spec.toDebugString)return this.type.spec.toDebugString(this);var e=this.type.name;return this.content.size&&(e+="("+this.content.toStringInner()+")"),R(this.marks,e)},D.prototype.contentMatchAt=function(e){var t=this.type.contentMatch.matchFragment(this.content,0,e);if(!t)throw new Error("Called contentMatchAt on a node with invalid content");return t},D.prototype.canReplace=function(e,t,n,r,o){void 0===n&&(n=i.empty),void 0===r&&(r=0),void 0===o&&(o=n.childCount);var s=this.contentMatchAt(e).matchFragment(n,r,o),a=s&&s.matchFragment(this.content,t);if(!a||!a.validEnd)return!1;for(var c=r;c=0;n--)t=e[n].type.name+"("+t+")";return t}var _=function(e){this.validEnd=e,this.next=[],this.wrapCache=[]},P={inlineContent:{configurable:!0},defaultType:{configurable:!0},edgeCount:{configurable:!0}};_.parse=function(e,t){var n=new $(e,t);if(null==n.next)return _.empty;var r=z(n);n.next&&n.err("Unexpected trailing text");var o=function(e){var t=Object.create(null);return function n(r){var o=[];r.forEach(function(t){e[t].forEach(function(t){var n=t.term,r=t.to;if(n){var i=o.indexOf(n),s=i>-1&&o[i+1];q(e,r).forEach(function(e){s||o.push(n,s=[]),-1==s.indexOf(e)&&s.push(e)})}})});var i=t[r.join(",")]=new _(r.indexOf(e.length-1)>-1);for(var s=0;s>1},_.prototype.edge=function(e){var t=e<<1;if(t>=this.next.length)throw new RangeError("There's no "+e+"th edge in this content match");return{type:this.next[t],next:this.next[t+1]}},_.prototype.toString=function(){var e=[];return function t(n){e.push(n);for(var r=1;r"+e.indexOf(t.next[o+1]);return r}).join("\n")},Object.defineProperties(_.prototype,P),_.empty=new _(!0);var $=function(e,t){this.string=e,this.nodeTypes=t,this.inline=null,this.pos=0,this.tokens=e.split(/\s*(?=\b|\W|$)/),""==this.tokens[this.tokens.length-1]&&this.tokens.pop(),""==this.tokens[0]&&this.tokens.unshift()},I={next:{configurable:!0}};function z(e){var t=[];do{t.push(B(e))}while(e.eat("|"));return 1==t.length?t[0]:{type:"choice",exprs:t}}function B(e){var t=[];do{t.push(F(e))}while(e.next&&")"!=e.next&&"|"!=e.next);return 1==t.length?t[0]:{type:"seq",exprs:t}}function F(e){for(var t=function(e){if(e.eat("(")){var t=z(e);return e.eat(")")||e.err("Missing closing paren"),t}if(!/\W/.test(e.next)){var n=function(e,t){var n=e.nodeTypes,r=n[t];if(r)return[r];var o=[];for(var i in n){var s=n[i];s.groups.indexOf(t)>-1&&o.push(s)}0==o.length&&e.err("No node type or group '"+t+"' found");return o}(e,e.next).map(function(t){return null==e.inline?e.inline=t.isInline:e.inline!=t.isInline&&e.err("Mixing inline and block content"),{type:"name",value:t}});return e.pos++,1==n.length?n[0]:{type:"choice",exprs:n}}e.err("Unexpected token '"+e.next+"'")}(e);;)if(e.eat("+"))t={type:"plus",expr:t};else if(e.eat("*"))t={type:"star",expr:t};else if(e.eat("?"))t={type:"opt",expr:t};else{if(!e.eat("{"))break;t=j(e,t)}return t}function V(e){/\D/.test(e.next)&&e.err("Expected number, got '"+e.next+"'");var t=Number(e.next);return e.pos++,t}function j(e,t){var n=V(e),r=n;return e.eat(",")&&(r="}"!=e.next?V(e):-1),e.eat("}")||e.err("Unclosed braced range"),{type:"range",min:n,max:r,expr:t}}function L(e,t){return t-e}function q(e,t){var n=[];return function t(r){var o=e[r];if(1==o.length&&!o[0].term)return t(o[0].to);n.push(r);for(var i=0;i-1},H.prototype.allowsMarks=function(e){if(null==this.markSet)return!0;for(var t=0;t-1};var Y=function(e){for(var t in this.spec={},e)this.spec[t]=e[t];this.spec.nodes=o.from(e.nodes),this.spec.marks=o.from(e.marks),this.nodes=H.compile(this.spec.nodes,this),this.marks=Z.compile(this.spec.marks,this);var n=Object.create(null);for(var r in this.nodes){if(r in this.marks)throw new RangeError(r+" can not be both a node and a mark");var i=this.nodes[r],s=i.spec.content||"",a=i.spec.marks;i.contentMatch=n[s]||(n[s]=_.parse(s,this.nodes)),i.inlineContent=i.contentMatch.inlineContent,i.markSet="_"==a?null:a?Q(this,a.split(" ")):""!=a&&i.inlineContent?null:[]}for(var c in this.marks){var l=this.marks[c],u=l.spec.excludes;l.excluded=null==u?[l]:""==u?[]:Q(this,u.split(" "))}this.nodeFromJSON=this.nodeFromJSON.bind(this),this.markFromJSON=this.markFromJSON.bind(this),this.topNodeType=this.nodes[this.spec.topNode||"doc"],this.cached=Object.create(null),this.cached.wrappings=Object.create(null)};function Q(e,t){for(var n=[],r=0;r-1)&&n.push(s=c)}if(!s)throw new SyntaxError("Unknown mark type: '"+t[r]+"'")}return n}Y.prototype.node=function(e,t,n,r){if("string"==typeof e)e=this.nodeType(e);else{if(!(e instanceof H))throw new RangeError("Invalid node type: "+e);if(e.schema!=this)throw new RangeError("Node type from different schema used ("+e.name+")")}return e.createChecked(t,n,r)},Y.prototype.text=function(e,t){var n=this.nodes.text;return new E(n,n.defaultAttrs,e,u.setFrom(t))},Y.prototype.mark=function(e,t){return"string"==typeof e&&(e=this.marks[e]),e.create(t)},Y.prototype.nodeFromJSON=function(e){return D.fromJSON(this,e)},Y.prototype.markFromJSON=function(e){return u.fromJSON(this,e)},Y.prototype.nodeType=function(e){var t=this.nodes[e];if(!t)throw new RangeError("Unknown node type: "+e);return t};var ee=function(e,t){var n=this;this.schema=e,this.rules=t,this.tags=[],this.styles=[],t.forEach(function(e){e.tag?n.tags.push(e):e.style&&n.styles.push(e)})};ee.prototype.parse=function(e,t){void 0===t&&(t={});var n=new ce(this,t,!1);return n.addAll(e,null,t.from,t.to),n.finish()},ee.prototype.parseSlice=function(e,t){void 0===t&&(t={});var n=new ce(this,t,!0);return n.addAll(e,null,t.from,t.to),h.maxOpen(n.finish())},ee.prototype.matchTag=function(e,t){for(var n=0;ne.length&&(61!=o.style.charCodeAt(e.length)||o.style.slice(e.length+1)!=t))){if(o.getAttrs){var i=o.getAttrs(t);if(!1===i)continue;o.attrs=i}return o}}},ee.schemaRules=function(e){var t=[];function n(e){for(var n=null==e.priority?50:e.priority,r=0;r=0;r--){var o=this.nodes[r],i=o.findWrapping(e);if(i&&(!t||t.length>i.length)&&(t=i,n=o,!i.length))break;if(o.solid)break}if(!t)return!1;this.sync(n);for(var s=0;sthis.open){for(;t>this.open;t--)this.nodes[t-1].content.push(this.nodes[t].finish(e));this.nodes.length=this.open+1}},ce.prototype.finish=function(){return this.open=0,this.closeExtra(this.isOpen),this.nodes[0].finish(this.isOpen||this.options.topOpen)},ce.prototype.sync=function(e){for(var t=this.open;t>=0;t--)if(this.nodes[t]==e)return void(this.open=t)},le.currentPos.get=function(){this.closeExtra();for(var e=0,t=this.open;t>=0;t--){for(var n=this.nodes[t].content,r=n.length-1;r>=0;r--)e+=n[r].nodeSize;t&&e++}return e},ce.prototype.findAtPoint=function(e,t){if(this.find)for(var n=0;n-1)return e.split(/\s*\|\s*/).some(this.matchesContext,this);var n=e.split("/"),r=this.options.context,o=!(this.isOpen||r&&r.parent.type!=this.nodes[0].type),i=-(r?r.depth+1:0)+(o?0:1),s=function(e,a){for(;e>=0;e--){var c=n[e];if(""==c){if(e==n.length-1||0==e)continue;for(;a>=i;a--)if(s(e-1,a))return!0;return!1}var l=a>0||0==a&&o?t.nodes[a].type:r&&a>=i?r.node(a-i).type:null;if(!l||l.name!=c&&-1==l.groups.indexOf(c))return!1;a--}return!0};return s(n.length-1,this.open)},ce.prototype.textblockFromContext=function(){var e=this.options.context;if(e)for(var t=e.depth;t>=0;t--){var n=e.node(t).contentMatchAt(e.indexAfter(t)).defaultType;if(n&&n.isTextblock&&n.defaultAttrs)return n}for(var r in this.parser.schema.nodes){var o=this.parser.schema.nodes[r];if(o.isTextblock&&o.defaultAttrs)return o}},ce.prototype.addPendingMark=function(e){this.top.pendingMarks=e.addToSet(this.top.pendingMarks)},ce.prototype.removePendingMark=function(e,t){for(var n=this.open;n>=0;n--){var r=this.nodes[n];if(r.pendingMarks.lastIndexOf(e)>-1?r.pendingMarks=e.removeFromSet(r.pendingMarks):r.activeMarks=e.removeFromSet(r.activeMarks),r==t)break}},Object.defineProperties(ce.prototype,le);var de=function(e,t){this.nodes=e||{},this.marks=t||{}};function fe(e){var t={};for(var n in e){var r=e[n].spec.toDOM;r&&(t[n]=r)}return t}function me(e){return e.document||window.document}de.prototype.serializeFragment=function(e,t,n){var r=this;void 0===t&&(t={}),n||(n=me(t).createDocumentFragment());var o=n,i=null;return e.forEach(function(e){if(i||e.marks.length){i||(i=[]);for(var n=0,s=0;n=0;r--){var o=this.serializeMark(e.marks[r],e.isInline,t);o&&((o.contentDOM||o.dom).appendChild(n),n=o.dom)}return n},de.prototype.serializeMark=function(e,t,n){void 0===n&&(n={});var r=this.marks[e.type.name];return r&&de.renderSpec(me(n),r(e,t))},de.renderSpec=function(e,t,n){if(void 0===n&&(n=null),"string"==typeof t)return{dom:e.createTextNode(t)};if(null!=t.nodeType)return{dom:t};var r=t[0],o=r.indexOf(" ");o>0&&(n=r.slice(0,o),r=r.slice(o+1));var i=null,s=n?e.createElementNS(n,r):e.createElement(r),a=t[1],c=1;if(a&&"object"==typeof a&&null==a.nodeType&&!Array.isArray(a))for(var l in c=2,a)if(null!=a[l]){var u=l.indexOf(" ");u>0?s.setAttributeNS(l.slice(0,u),l.slice(u+1),a[l]):s.setAttribute(l,a[l])}for(var p=c;pc)throw new RangeError("Content hole must be the only child of its parent node");return{dom:s,contentDOM:s}}var d=de.renderSpec(e,h,n),f=d.dom,m=d.contentDOM;if(s.appendChild(f),m){if(i)throw new RangeError("Multiple content holes");i=m}}return{dom:s,contentDOM:i}},de.fromSchema=function(e){return e.cached.domSerializer||(e.cached.domSerializer=new de(this.nodesFromSchema(e),this.marksFromSchema(e)))},de.nodesFromSchema=function(e){var t=fe(e.nodes);return t.text||(t.text=function(e){return e.text}),t},de.marksFromSchema=function(e){return fe(e.marks)}},POQ2:function(e,t,n){"use strict";var r=n("4r5K"),o=n("Bz7v");t.highlight=s,t.highlightAuto=function(e,t){var n,a,c,l,u=t||{},p=u.subset||r.listLanguages(),h=u.prefix,d=p.length,f=-1;null!==h&&void 0!==h||(h=i);if("string"!=typeof e)throw o("Expected `string` for value, got `%s`",e);a={relevance:0,language:null,value:[]},n={relevance:0,language:null,value:[]};for(;++fa.relevance&&(a=c),c.relevance>n.relevance&&(a=n,n=c));a.language&&(n.secondBest=a);return n},t.registerLanguage=function(e,t){r.registerLanguage(e,t)},t.listLanguages=function(){return r.listLanguages()},t.registerAlias=function(e,t){var n,o=e;t&&((o={})[e]=t);for(n in o)r.registerAliases(o[n],{languageName:n})},a.prototype.addText=function(e){var t,n,r=this.stack;if(""===e)return;t=r[r.length-1],(n=t.children[t.children.length-1])&&"text"===n.type?n.value+=e:t.children.push({type:"text",value:e})},a.prototype.addKeyword=function(e,t){this.openNode(t),this.addText(e),this.closeNode()},a.prototype.addSublanguage=function(e,t){var n=this.stack,r=n[n.length-1],o=e.rootNode.children,i=t?{type:"element",tagName:"span",properties:{className:[t]},children:o}:o;r.children=r.children.concat(i)},a.prototype.openNode=function(e){var t=this.stack,n=this.options.classPrefix+e,r=t[t.length-1],o={type:"element",tagName:"span",properties:{className:[n]},children:[]};r.children.push(o),t.push(o)},a.prototype.closeNode=function(){this.stack.pop()},a.prototype.closeAllNodes=c,a.prototype.finalize=c,a.prototype.toHTML=function(){return""};var i="hljs-";function s(e,t,n){var s,c=r.configure({}),l=(n||{}).prefix;if("string"!=typeof e)throw o("Expected `string` for name, got `%s`",e);if(!r.getLanguage(e))throw o("Unknown language: `%s` is not registered",e);if("string"!=typeof t)throw o("Expected `string` for value, got `%s`",t);if(null!==l&&void 0!==l||(l=i),r.configure({__emitter:a,classPrefix:l}),s=r.highlight(e,t,!0),r.configure(c),s.errorRaised)throw s.errorRaised;return{relevance:s.relevance,language:s.language,value:s.emitter.rootNode.children}}function a(e){this.options=e,this.rootNode={children:[]},this.stack=[this.rootNode]}function c(){}},SbYC:function(e,t,n){const{defaults:r}=n("vbtb"),{cleanUrl:o,escape:i}=n("rUJ1");e.exports=class{constructor(e){this.options=e||r}code(e,t,n){const r=(t||"").match(/\S*/)[0];if(this.options.highlight){const t=this.options.highlight(e,r);null!=t&&t!==e&&(n=!0,e=t)}return r?'
    '+(n?e:i(e,!0))+"
    \n":"
    "+(n?e:i(e,!0))+"
    "}blockquote(e){return"
    \n"+e+"
    \n"}html(e){return e}heading(e,t,n,r){return this.options.headerIds?"'+e+"\n":""+e+"\n"}hr(){return this.options.xhtml?"
    \n":"
    \n"}list(e,t,n){const r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"}listitem(e){return"
  • "+e+"
  • \n"}checkbox(e){return" "}paragraph(e){return"

    "+e+"

    \n"}table(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"}tablerow(e){return"\n"+e+"\n"}tablecell(e,t){const n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"\n"}strong(e){return""+e+""}em(e){return""+e+""}codespan(e){return""+e+""}br(){return this.options.xhtml?"
    ":"
    "}del(e){return""+e+""}link(e,t,n){if(null===(e=o(this.options.sanitize,this.options.baseUrl,e)))return n;let r='
    "}image(e,t,n){if(null===(e=o(this.options.sanitize,this.options.baseUrl,e)))return n;let r=''+n+'":">"}text(e){return e}}},T9Ld:function(e,t,n){const{defaults:r}=n("vbtb"),{block:o}=n("e56X"),{rtrim:i,splitCells:s,escape:a}=n("rUJ1");e.exports=class e{constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||r,this.rules=o.normal,this.options.pedantic?this.rules=o.pedantic:this.options.gfm&&(this.rules=o.gfm)}static get rules(){return o}static lex(t,n){return new e(n).lex(t)}lex(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.token(e,!0)}token(e,t){let n,r,c,l,u,p,h,d,f,m,v,g,y,b,w,S;for(e=e.replace(/^ +$/gm,"");e;)if((c=this.rules.newline.exec(e))&&(e=e.substring(c[0].length),c[0].length>1&&this.tokens.push({type:"space"})),c=this.rules.code.exec(e)){const t=this.tokens[this.tokens.length-1];e=e.substring(c[0].length),t&&"paragraph"===t.type?t.text+="\n"+c[0].trimRight():(c=c[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",codeBlockStyle:"indented",text:this.options.pedantic?c:i(c,"\n")}))}else if(c=this.rules.fences.exec(e))e=e.substring(c[0].length),this.tokens.push({type:"code",lang:c[2]?c[2].trim():c[2],text:c[3]||""});else if(c=this.rules.heading.exec(e))e=e.substring(c[0].length),this.tokens.push({type:"heading",depth:c[1].length,text:c[2]});else if((c=this.rules.nptable.exec(e))&&(p={type:"table",header:s(c[1].replace(/^ *| *\| *$/g,"")),align:c[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:c[3]?c[3].replace(/\n$/,"").split("\n"):[]}).header.length===p.align.length){for(e=e.substring(c[0].length),v=0;v ?/gm,""),this.token(c,t),this.tokens.push({type:"blockquote_end"});else if(c=this.rules.list.exec(e)){for(e=e.substring(c[0].length),h={type:"list_start",ordered:b=(l=c[2]).length>1,start:b?+l:"",loose:!1},this.tokens.push(h),d=[],n=!1,y=(c=c[0].match(this.rules.item)).length,v=0;v1?1===u.length:u.length>1||this.options.smartLists&&u!==l)&&(e=c.slice(v+1).join("\n")+e,v=y-1)),r=n||/\n\n(?!\s*$)/.test(p),v!==y-1&&(n="\n"===p.charAt(p.length-1),r||(r=n)),r&&(h.loose=!0),S=void 0,(w=/^\[[ xX]\] /.test(p))&&(S=" "!==p[1],p=p.replace(/^\[[ xX]\] +/,"")),f={type:"list_item_start",task:w,checked:S,loose:r},d.push(f),this.tokens.push(f),this.token(p,!1),this.tokens.push({type:"list_item_end"});if(h.loose)for(y=d.length,v=0;v=0;o--){var i=t<0?m(e.node(0),e.node(o),e.before(o+1),e.index(o),t,n):m(e.node(0),e.node(o),e.after(o+1),e.index(o)+1,t,n);if(i)return i}},s.near=function(e,t){return void 0===t&&(t=1),this.findFrom(e,t)||this.findFrom(e,-t)||new d(e.node(0))},s.atStart=function(e){return m(e,e,0,0,1)||new d(e)},s.atEnd=function(e){return m(e,e,e.content.size,e.childCount,-1)||new d(e)},s.fromJSON=function(e,t){if(!t||!t.type)throw new RangeError("Invalid input for Selection.fromJSON");var n=i[t.type];if(!n)throw new RangeError("No selection type "+t.type+" defined");return n.fromJSON(e,t)},s.jsonID=function(e,t){if(e in i)throw new RangeError("Duplicate use of selection JSON ID "+e);return i[e]=t,t.prototype.jsonID=e,t},s.prototype.getBookmark=function(){return l.between(this.$anchor,this.$head).getBookmark()},Object.defineProperties(s.prototype,a),s.prototype.visible=!0;var c=function(e,t){this.$from=e,this.$to=t},l=function(e){function t(t,n){void 0===n&&(n=t),e.call(this,t,n)}e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t;var n={$cursor:{configurable:!0}};return n.$cursor.get=function(){return this.$anchor.pos==this.$head.pos?this.$head:null},t.prototype.map=function(n,r){var o=n.resolve(r.map(this.head));if(!o.parent.inlineContent)return e.near(o);var i=n.resolve(r.map(this.anchor));return new t(i.parent.inlineContent?i:o,o)},t.prototype.replace=function(t,n){if(void 0===n&&(n=r.Slice.empty),e.prototype.replace.call(this,t,n),n==r.Slice.empty){var o=this.$from.marksAcross(this.$to);o&&t.ensureMarks(o)}},t.prototype.eq=function(e){return e instanceof t&&e.anchor==this.anchor&&e.head==this.head},t.prototype.getBookmark=function(){return new u(this.anchor,this.head)},t.prototype.toJSON=function(){return{type:"text",anchor:this.anchor,head:this.head}},t.fromJSON=function(e,n){if("number"!=typeof n.anchor||"number"!=typeof n.head)throw new RangeError("Invalid input for TextSelection.fromJSON");return new t(e.resolve(n.anchor),e.resolve(n.head))},t.create=function(e,t,n){void 0===n&&(n=t);var r=e.resolve(t);return new this(r,n==t?r:e.resolve(n))},t.between=function(n,r,o){var i=n.pos-r.pos;if(o&&!i||(o=i>=0?1:-1),!r.parent.inlineContent){var s=e.findFrom(r,o,!0)||e.findFrom(r,-o,!0);if(!s)return e.near(r,o);r=s.$head}return n.parent.inlineContent||(0==i?n=r:(n=(e.findFrom(n,-o,!0)||e.findFrom(n,o,!0)).$anchor).pos0?0:1);o>0?s=0;s+=o){var a=t.child(s);if(a.isAtom){if(!i&&p.isSelectable(a))return p.create(e,n-(o<0?a.nodeSize:0))}else{var c=m(e,a,n+o,o<0?a.childCount:0,o,i);if(c)return c}n+=a.nodeSize*o}}function v(e,t,n){var r=e.steps.length-1;if(!(r0},t.prototype.setStoredMarks=function(e){return this.storedMarks=e,this.updated|=2,this},t.prototype.ensureMarks=function(e){return r.Mark.sameSet(this.storedMarks||this.selection.$from.marks(),e)||this.setStoredMarks(e),this},t.prototype.addStoredMark=function(e){return this.ensureMarks(e.addToSet(this.storedMarks||this.selection.$head.marks()))},t.prototype.removeStoredMark=function(e){return this.ensureMarks(e.removeFromSet(this.storedMarks||this.selection.$head.marks()))},n.storedMarksSet.get=function(){return(2&this.updated)>0},t.prototype.addStep=function(t,n){e.prototype.addStep.call(this,t,n),this.updated=-3&this.updated,this.storedMarks=null},t.prototype.setTime=function(e){return this.time=e,this},t.prototype.replaceSelection=function(e){return this.selection.replace(this,e),this},t.prototype.replaceSelectionWith=function(e,t){var n=this.selection;return!1!==t&&(e=e.mark(this.storedMarks||(n.empty?n.$from.marks():n.$from.marksAcross(n.$to)||r.Mark.none))),n.replaceWith(this,e),this},t.prototype.deleteSelection=function(){return this.selection.replace(this),this},t.prototype.insertText=function(e,t,n){void 0===n&&(n=t);var r=this.doc.type.schema;if(null==t)return e?this.replaceSelectionWith(r.text(e),!0):this.deleteSelection();if(!e)return this.deleteRange(t,n);var o=this.storedMarks;if(!o){var i=this.doc.resolve(t);o=n==t?i.marks():i.marksAcross(this.doc.resolve(n))}return this.replaceRangeWith(t,n,r.text(e,o)),this.selection.empty||this.setSelection(s.near(this.selection.$to)),this},t.prototype.setMeta=function(e,t){return this.meta["string"==typeof e?e:e.key]=t,this},t.prototype.getMeta=function(e){return this.meta["string"==typeof e?e:e.key]},n.isGeneric.get=function(){for(var e in this.meta)return!1;return!0},t.prototype.scrollIntoView=function(){return this.updated|=4,this},n.scrolledIntoView.get=function(){return(4&this.updated)>0},Object.defineProperties(t.prototype,n),t}(o.e);function y(e,t){return t&&e?e.bind(t):e}var b=function(e,t,n){this.name=e,this.init=y(t.init,n),this.apply=y(t.apply,n)},w=[new b("doc",{init:function(e){return e.doc||e.schema.topNodeType.createAndFill()},apply:function(e){return e.doc}}),new b("selection",{init:function(e,t){return e.selection||s.atStart(t.doc)},apply:function(e){return e.selection}}),new b("storedMarks",{init:function(e){return e.storedMarks||null},apply:function(e,t,n,r){return r.selection.$cursor?e.storedMarks:null}}),new b("scrollToSelection",{init:function(){return 0},apply:function(e,t){return e.scrolledIntoView?t+1:t}})],S=function(e,t){var n=this;this.schema=e,this.fields=w.concat(),this.plugins=[],this.pluginsByKey=Object.create(null),t&&t.forEach(function(e){if(n.pluginsByKey[e.key])throw new RangeError("Adding different instances of a keyed plugin ("+e.key+")");n.plugins.push(e),n.pluginsByKey[e.key]=e,e.spec.state&&n.fields.push(new b(e.key,e.spec.state,e))})},x=function(e){this.config=e},k={schema:{configurable:!0},plugins:{configurable:!0},tr:{configurable:!0}};k.schema.get=function(){return this.config.schema},k.plugins.get=function(){return this.config.plugins},x.prototype.apply=function(e){return this.applyTransaction(e).state},x.prototype.filterTransaction=function(e,t){void 0===t&&(t=-1);for(var n=0;n-1&&C.splice(t,1)},Object.defineProperties(x.prototype,k);var C=[];var O=function(e){this.props={},e.props&&function e(t,n,r){for(var o in t){var i=t[o];i instanceof Function?i=i.bind(n):"handleDOMEvents"==o&&(i=e(i,n,{})),r[o]=i}return r}(e.props,this,this.props),this.spec=e,this.key=e.key?e.key.key:N("plugin")};O.prototype.getState=function(e){return e[this.key]};var M=Object.create(null);function N(e){return e in M?e+"$"+ ++M[e]:(M[e]=0,e+"$")}var T=function(e){void 0===e&&(e="key"),this.key=N(e)};T.prototype.get=function(e){return e.config.pluginsByKey[this.key]},T.prototype.getState=function(e){return e[this.key]}},V2qZ:function(e,t,n){"use strict";n.d(t,"a",function(){return wt}),n.d(t,"b",function(){return Ct});var r=n("UxO+"),o=n("MEpN"),i=n("CsC6"),s={};if("undefined"!=typeof navigator&&"undefined"!=typeof document){var a=/Edge\/(\d+)/.exec(navigator.userAgent),c=/MSIE \d/.test(navigator.userAgent),l=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);s.mac=/Mac/.test(navigator.platform);var u=s.ie=!!(c||l||a);s.ie_version=c?document.documentMode||6:l?+l[1]:a?+a[1]:null,s.gecko=!u&&/gecko\/(\d+)/i.test(navigator.userAgent),s.gecko_version=s.gecko&&+(/Firefox\/(\d+)/.exec(navigator.userAgent)||[0,0])[1];var p=!u&&/Chrome\/(\d+)/.exec(navigator.userAgent);s.chrome=!!p,s.chrome_version=p&&+p[1],s.ios=!u&&/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent),s.android=/Android \d/.test(navigator.userAgent),s.webkit="webkitFontSmoothing"in document.documentElement.style,s.safari=/Apple Computer/.test(navigator.vendor),s.webkit_version=s.webkit&&+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]}var h=function(e){for(var t=0;;t++)if(!(e=e.previousSibling))return t},d=function(e){var t=e.parentNode;return t&&11==t.nodeType?t.host:t},f=function(e,t,n){var r=document.createRange();return r.setEnd(e,null==n?e.nodeValue.length:n),r.setStart(e,t||0),r},m=function(e,t,n,r){return n&&(g(e,t,n,r,-1)||g(e,t,n,r,1))},v=/^(img|br|input|textarea|hr)$/i;function g(e,t,n,r,o){for(;;){if(e==n&&t==r)return!0;if(t==(o<0?0:y(e))){var i=e.parentNode;if(1!=i.nodeType||b(e)||v.test(e.nodeName)||"false"==e.contentEditable)return!1;t=h(e)+(o<0?0:1),e=i}else{if(1!=e.nodeType)return!1;if("false"==(e=e.childNodes[t+(o<0?-1:0)]).contentEditable)return!1;t=o<0?y(e):0}}}function y(e){return 3==e.nodeType?e.nodeValue.length:e.childNodes.length}function b(e){for(var t,n=e;n&&!(t=n.pmViewDesc);n=n.parentNode);return t&&t.node&&t.node.isBlock&&(t.dom==e||t.contentDOM==e)}var w=function(e){var t=e.isCollapsed;return t&&s.chrome&&e.rangeCount&&!e.getRangeAt(0).collapsed&&(t=!1),t};function S(e,t){var n=document.createEvent("Event");return n.initEvent("keydown",!0,!0),n.keyCode=e,n.key=n.code=t,n}function x(e){return{left:0,right:e.documentElement.clientWidth,top:0,bottom:e.documentElement.clientHeight}}function k(e,t){return"number"==typeof e?e:e[t]}function C(e){var t=e.getBoundingClientRect();return{left:t.left,right:t.left+e.clientWidth,top:t.top,bottom:t.top+e.clientHeight}}function O(e,t,n){for(var r=e.someProp("scrollThreshold")||0,o=e.someProp("scrollMargin")||5,i=e.dom.ownerDocument,s=n||e.dom;s;s=d(s))if(1==s.nodeType){var a=s==i.body||1!=s.nodeType,c=a?x(i):C(s),l=0,u=0;if(t.topc.bottom-k(r,"bottom")&&(u=t.bottom-c.bottom+k(o,"bottom")),t.leftc.right-k(r,"right")&&(l=t.right-c.right+k(o,"right")),l||u)if(a)i.defaultView.scrollBy(l,u);else{var p=s.scrollLeft,h=s.scrollTop;u&&(s.scrollTop+=u),l&&(s.scrollLeft+=l);var f=s.scrollLeft-p,m=s.scrollTop-h;t={left:t.left-f,top:t.top-m,right:t.right-f,bottom:t.bottom-m}}if(a)break}}function M(e){for(var t=[],n=e.ownerDocument;e&&(t.push({dom:e,top:e.scrollTop,left:e.scrollLeft}),e!=n);e=d(e));return t}function N(e,t){for(var n=0;n=a){s=Math.max(h.bottom,s),a=Math.min(h.top,a);var d=h.left>t.left?h.left-t.left:h.right=(h.left+h.right)/2?1:0));continue}}!n&&(t.left>=h.right&&t.top>=h.top||t.left>=h.left&&t.top>=h.bottom)&&(i=l+1)}}return n&&3==n.nodeType?function(e,t){for(var n=e.nodeValue.length,r=document.createRange(),o=0;o=(i.left+i.right)/2?1:0)}}return{node:e,offset:0}}(n,r):!n||o&&1==n.nodeType?{node:e,offset:i}:D(n,r)}function A(e,t){return e.left>=t.left-1&&e.left<=t.right+1&&e.top>=t.top-1&&e.top<=t.bottom+1}function E(e,t){var n,r,o,i,a=e.root;if(a.caretPositionFromPoint)try{var c=a.caretPositionFromPoint(t.left,t.top);c&&(o=(n=c).offsetNode,i=n.offset)}catch(e){}if(!o&&a.caretRangeFromPoint){var l=a.caretRangeFromPoint(t.left,t.top);l&&(o=(r=l).startContainer,i=r.startOffset)}var u,p=a.elementFromPoint(t.left,t.top+1);if(!p||!e.dom.contains(1!=p.nodeType?p.parentNode:p)){var h=e.dom.getBoundingClientRect();if(!A(t,h))return null;if(!(p=function e(t,n,r){var o=t.childNodes.length;if(o&&r.topt.top&&i++}o==e.dom&&i==o.childNodes.length-1&&1==o.lastChild.nodeType&&t.top>o.lastChild.getBoundingClientRect().bottom?u=e.state.doc.content.size:0!=i&&1==o.nodeType&&"BR"==o.childNodes[i-1].nodeName||(u=function(e,t,n,r){for(var o=-1,i=t;i!=e.dom;){var s=e.docView.nearestDesc(i,!0);if(!s)return null;if(s.node.isBlock&&s.parent){var a=s.dom.getBoundingClientRect();if(a.left>r.left||a.top>r.top)o=s.posBefore;else{if(!(a.right-1?o:e.docView.posFromDOM(t,n)}(e,o,i,t))}null==u&&(u=function(e,t,n){var r=D(t,n),o=r.node,i=r.offset,s=-1;if(1==o.nodeType&&!o.firstChild){var a=o.getBoundingClientRect();s=a.left!=a.right&&n.left>(a.left+a.right)/2?1:-1}return e.docView.posFromDOM(o,i,s)}(e,p,t));var m=e.docView.nearestDesc(p,!0);return{pos:u,inside:m?m.posAtStart-m.border:-1}}function R(e,t){var n=e.getClientRects();return n.length?n[t<0?0:n.length-1]:e.getBoundingClientRect()}function _(e,t){var n=e.docView.domFromPos(t),r=n.node,o=n.offset;if(3==r.nodeType&&(s.webkit||s.gecko)){var i=R(f(r,o,o),0);if(s.gecko&&o&&/\s/.test(r.nodeValue[o-1])&&o0&&ol.top&&("up"==n?l.bottomi.bottom-1))return!1}}return!0})}(e,t,n):function(e,t,n){var r=t.selection.$head;if(!r.parent.isTextblock)return!1;var o=r.parentOffset,i=!o,s=o==r.parent.content.size,a=getSelection();return I.test(r.parent.textContent)&&a.modify?$(e,t,function(){var t=a.getRangeAt(0),o=a.focusNode,i=a.focusOffset,s=a.caretBidiLevel;a.modify("move",n,"character");var c=!(r.depth?e.docView.domAfterPos(r.before()):e.dom).contains(1==a.focusNode.nodeType?a.focusNode:a.focusNode.parentNode)||o==a.focusNode&&i==a.focusOffset;return a.removeAllRanges(),a.addRange(t),null!=s&&(a.caretBidiLevel=s),c}):"left"==n||"backward"==n?i:s}(e,t,n))}var j=function(e,t,n,r){this.parent=e,this.children=t,this.dom=n,n.pmViewDesc=this,this.contentDOM=r,this.dirty=0},L={beforePosition:{configurable:!0},size:{configurable:!0},border:{configurable:!0},posBefore:{configurable:!0},posAtStart:{configurable:!0},posAfter:{configurable:!0},posAtEnd:{configurable:!0},contentLost:{configurable:!0}};j.prototype.matchesWidget=function(){return!1},j.prototype.matchesMark=function(){return!1},j.prototype.matchesNode=function(){return!1},j.prototype.matchesHack=function(){return!1},L.beforePosition.get=function(){return!1},j.prototype.parseRule=function(){return null},j.prototype.stopEvent=function(){return!1},L.size.get=function(){for(var e=0,t=0;t0:a)?this.posAtEnd:this.posAtStart},j.prototype.nearestDesc=function(e,t){for(var n=!0,r=e;r;r=r.parentNode){var o=this.getDesc(r);if(o&&(!t||o.node)){if(!n||!o.nodeDOM||(1==o.nodeDOM.nodeType?o.nodeDOM.contains(1==e.nodeType?e:e.parentNode):o.nodeDOM==e))return o;n=!1}}},j.prototype.getDesc=function(e){for(var t=e.pmViewDesc,n=t;n;n=n.parent)if(n==this)return t},j.prototype.posFromDOM=function(e,t,n){for(var r=e;r;r=r.parentNode){var o=this.getDesc(r);if(o)return o.localPosFromDOM(e,t,n)}return-1},j.prototype.descAt=function(e){for(var t=0,n=0;t=l&&t<=c-a.border&&a.node&&a.contentDOM&&this.contentDOM.contains(a.contentDOM))return a.parseRange(e,t,l);e=i;for(var u=s;u>0;u--){var p=this.children[u-1];if(p.size&&p.dom.parentNode==this.contentDOM&&!p.emptyChildAt(1)){r=h(p.dom)+1;break}e-=p.size}-1==r&&(r=0)}if(r>-1&&(c>t||s==this.children.length-1)){t=c;for(var d=s+1;dc&&it){var y=p;p=h,h=y}var b=document.createRange();b.setEnd(h.node,h.offset),b.setStart(p.node,p.offset),d.removeAllRanges(),d.addRange(b)}}},j.prototype.ignoreMutation=function(e){return!this.contentDOM&&"selection"!=e.type},L.contentLost.get=function(){return this.contentDOM&&this.contentDOM!=this.dom&&!this.dom.contains(this.contentDOM)},j.prototype.markDirty=function(e,t){for(var n=0,r=0;r=n:en){var s=n+o.border,a=i-o.border;if(e>=s&&t<=a)return this.dirty=e==n||t==i?2:1,void(e!=s||t!=a||!o.contentLost&&o.dom.parentNode==this.contentDOM?o.markDirty(e-s,t-s):o.dirty=3);o.dirty=3}n=i}this.dirty=2},j.prototype.markParentsDirty=function(){for(var e=1,t=this.parent;t;t=t.parent,e++){var n=1==e?2:1;t.dirty0&&(i=ce(i,0,e,r));for(var a=0;ai;)l.push(o[c++]);var y=i+m.nodeSize;if(m.isText){var b=y;c=0&&!a&&c.syncToMarks(s==n.node.childCount?o.Mark.none:n.node.child(s).marks,r,e),c.placeWidget(t,e,i)},function(t,n,o,s){c.syncToMarks(t.marks,r,e),c.findNodeMatch(t,n,o,s)||c.updateNextNode(t,n,o,e,s)||c.addNode(t,n,o,e,i),i+=t.nodeSize}),c.syncToMarks(q,r,e),this.node.isTextblock&&c.addTextblockHacks(),c.destroyRest(),(c.changed||2==this.dirty)&&(a&&this.protectLocalComposition(e,a),function e(t,n,r){var o=t.firstChild,i=!1;for(var s=0;st+this.node.content.size)){var s=e.root.getSelection(),a=function(e,t){for(;;){if(3==e.nodeType)return e;if(1==e.nodeType&&t>0){if(e.childNodes.length>t&&3==e.childNodes[t].nodeType)return e.childNodes[t];e=e.childNodes[t-1],t=y(e)}else{if(!(1==e.nodeType&&t=n){var u=c.lastIndexOf(t,r-a);if(u>=0&&u+t.length+a>=n)return a+u}}}return-1}(this.node.content,c,o-t,i-t);return l<0?null:{node:a,pos:l,text:c}}}},t.prototype.protectLocalComposition=function(e,t){var n=t.node,r=t.pos,o=t.text;if(!this.getDesc(n)){for(var i=n;i.parentNode!=this.contentDOM;i=i.parentNode){for(;i.previousSibling;)i.parentNode.removeChild(i.previousSibling);for(;i.nextSibling;)i.parentNode.removeChild(i.nextSibling);i.pmViewDesc&&(i.pmViewDesc=null)}var s=new K(this,i,n,o);e.compositionNodes.push(s),this.children=ce(this.children,r,r+o.length,e,s)}},t.prototype.update=function(e,t,n,r){return!(3==this.dirty||!e.sameMarkup(this.node))&&(this.updateInner(e,t,n,r),!0)},t.prototype.updateInner=function(e,t,n,r){this.updateOuterDeco(t),this.node=e,this.innerDeco=n,this.contentDOM&&this.updateChildren(r,this.posAtStart),this.dirty=0},t.prototype.updateOuterDeco=function(e){if(!oe(e,this.outerDeco)){var t=1!=this.nodeDOM.nodeType,n=this.dom;this.dom=te(this.dom,this.nodeDOM,ee(this.outerDeco,this.node,t),ee(e,this.node,t)),this.dom!=n&&(n.pmViewDesc=null,this.dom.pmViewDesc=this),this.outerDeco=e}},t.prototype.selectNode=function(){this.nodeDOM.classList.add("ProseMirror-selectednode"),!this.contentDOM&&this.node.type.spec.draggable||(this.dom.draggable=!0)},t.prototype.deselectNode=function(){this.nodeDOM.classList.remove("ProseMirror-selectednode"),!this.contentDOM&&this.node.type.spec.draggable||this.dom.removeAttribute("draggable")},Object.defineProperties(t.prototype,n),t}(j);function U(e,t,n,r,o){return re(r,t,e),new H(null,e,t,n,r,r,r,o,0)}var G=function(e){function t(t,n,r,o,i,s,a){e.call(this,t,n,r,o,i,null,s,a)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.parseRule=function(){for(var e=this.nodeDOM.parentNode;e&&e!=this.dom&&!e.pmIsDeco;)e=e.parentNode;return{skip:e||!0}},t.prototype.update=function(e,t,n,r){return!(3==this.dirty||0!=this.dirty&&!this.inParent()||!e.sameMarkup(this.node))&&(this.updateOuterDeco(t),0==this.dirty&&e.text==this.node.text||e.text==this.nodeDOM.nodeValue||(this.nodeDOM.nodeValue=e.text,r.trackWrites==this.nodeDOM&&(r.trackWrites=null)),this.node=e,this.dirty=0,!0)},t.prototype.inParent=function(){for(var e=this.parent.contentDOM,t=this.nodeDOM;t;t=t.parentNode)if(t==e)return!0;return!1},t.prototype.domFromPos=function(e){return{node:this.nodeDOM,offset:e}},t.prototype.localPosFromDOM=function(t,n,r){return t==this.nodeDOM?this.posAtStart+Math.min(n,this.node.text.length):e.prototype.localPosFromDOM.call(this,t,n,r)},t.prototype.ignoreMutation=function(e){return"characterData"!=e.type&&"selection"!=e.type},t.prototype.slice=function(e,n,r){var o=this.node.cut(e,n),i=document.createTextNode(o.text);return new t(this.parent,o,this.outerDeco,this.innerDeco,i,i,r)},t}(H),X=function(e){function t(){e.apply(this,arguments)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.parseRule=function(){return{ignore:!0}},t.prototype.matchesHack=function(){return 0==this.dirty},t}(j),Z=function(e){function t(t,n,r,o,i,s,a,c,l,u){e.call(this,t,n,r,o,i,s,a,l,u),this.spec=c}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.update=function(t,n,r,o){if(3==this.dirty)return!1;if(this.spec.update){var i=this.spec.update(t,n);return i&&this.updateInner(t,n,r,o),i}return!(!this.contentDOM&&!t.isLeaf)&&e.prototype.update.call(this,t,n,r,o)},t.prototype.selectNode=function(){this.spec.selectNode?this.spec.selectNode():e.prototype.selectNode.call(this)},t.prototype.deselectNode=function(){this.spec.deselectNode?this.spec.deselectNode():e.prototype.deselectNode.call(this)},t.prototype.setSelection=function(t,n,r,o){this.spec.setSelection?this.spec.setSelection(t,n,r):e.prototype.setSelection.call(this,t,n,r,o)},t.prototype.destroy=function(){this.spec.destroy&&this.spec.destroy(),e.prototype.destroy.call(this)},t.prototype.stopEvent=function(e){return!!this.spec.stopEvent&&this.spec.stopEvent(e)},t.prototype.ignoreMutation=function(t){return this.spec.ignoreMutation?this.spec.ignoreMutation(t):e.prototype.ignoreMutation.call(this,t)},t}(H);function Y(e){e&&(this.nodeName=e)}Y.prototype=Object.create(null);var Q=[new Y];function ee(e,t,n){if(0==e.length)return Q;for(var r=n?Q[0]:new Y,o=[r],i=0;i0&&o>=0;o--){var i=t[o],s=i.node;if(s){if(s!=e.child(r-1))break;n.push(i),--r}}return{nodes:n.reverse(),offset:r}}(e.node.content,e.children);this.preMatched=n.nodes,this.preMatchOffset=n.offset};function ae(e,t){return e.type.side-t.type.side}function ce(e,t,n,r,o){for(var i=[],s=0,a=0;s=n||u<=t?i.push(c):(ln&&i.push(c.slice(n-l,c.size,r)))}return i}function le(e,t){var n=e.root.getSelection(),o=e.state.doc;if(!n.focusNode)return null;var i=e.docView.nearestDesc(n.focusNode),s=i&&0==i.size,a=e.docView.posFromDOM(n.focusNode,n.focusOffset);if(a<0)return null;var c,l,u=o.resolve(a);if(w(n)){for(c=u;i&&!i.node;)i=i.parent;if(i&&i.node.isAtom&&r.NodeSelection.isSelectable(i.node)&&i.parent&&(!i.node.isInline||!function(e,t,n){for(var r=0==t,o=t==y(e);r||o;){if(e==n)return!0;var i=h(e);if(!(e=e.parentNode))return!1;r=r&&0==i,o=o&&i==y(e)}}(n.focusNode,n.focusOffset,i.dom))){var p=i.posBefore;l=new r.NodeSelection(a==p?u:o.resolve(p))}}else{var d=e.docView.posFromDOM(n.anchorNode,n.anchorOffset);if(d<0)return null;c=o.resolve(d)}l||(l=ge(e,c,u,"pointer"==t||e.state.selection.head=this.preMatchOffset?this.preMatched[e-this.preMatchOffset]:null},se.prototype.destroyBetween=function(e,t){if(e!=t){for(var n=e;n>1,i=Math.min(o,e.length);r-1)s>this.index&&(this.changed=!0,this.destroyBetween(this.index,s)),this.top=this.top.children[this.index];else{var c=J.create(this.top,e[o],t,n);this.top.children.splice(this.index,0,c),this.top=c,this.changed=!0}this.index=0,o++}},se.prototype.findNodeMatch=function(e,t,n,r){var o=-1,i=r<0?void 0:this.getPreMatch(r),s=this.top.children;if(i&&i.matchesNode(e,t,n))o=s.indexOf(i);else for(var a=this.index,c=Math.min(s.length,a+5);a-1&&a+this.preMatchOffset!=o)return!1;var c=s.dom;if(!(this.lock&&(c==this.lock||1==c.nodeType&&c.contains(this.lock.parentNode))&&!(e.isText&&s.node&&s.node.isText&&s.nodeDOM.nodeValue==e.text&&3!=s.dirty&&oe(t,s.outerDeco)))&&s.update(e,t,n,r))return this.destroyBetween(this.index,i),s.dom!=c&&(this.changed=!0),this.index++,!0;break}}return!1},se.prototype.addNode=function(e,t,n,r,o){this.top.children.splice(this.index++,0,H.create(this.top,e,t,n,r,o)),this.changed=!0},se.prototype.placeWidget=function(e,t,n){var r=this.index0?o.max(i):o.min(i),a=s.parent.inlineContent?s.depth?e.doc.resolve(t>0?s.after():s.before()):null:s;return a&&r.Selection.findFrom(a,t)}function we(e,t){return e.dispatch(e.state.tr.setSelection(t).scrollIntoView()),!0}function Se(e,t,n){var o=e.state.selection;if(!(o instanceof r.TextSelection)){if(o instanceof r.NodeSelection&&o.node.isInline)return we(e,new r.TextSelection(t>0?o.$to:o.$from));var i=be(e.state,t);return!!i&&we(e,i)}if(!o.empty||n.indexOf("s")>-1)return!1;if(e.endOfTextblock(t>0?"right":"left")){var a=be(e.state,t);return!!(a&&a instanceof r.NodeSelection)&&we(e,a)}if(!(s.mac&&n.indexOf("m")>-1)){var c,l=o.$head,u=l.textOffset?null:t<0?l.nodeBefore:l.nodeAfter;if(!u||u.isText)return!1;var p=t<0?l.pos-u.nodeSize:l.pos;return!!(u.isAtom||(c=e.docView.descAt(p))&&!c.contentDOM)&&(r.NodeSelection.isSelectable(u)?we(e,new r.NodeSelection(t<0?e.state.doc.resolve(l.pos-u.nodeSize):l)):!!s.webkit&&we(e,new r.TextSelection(e.state.doc.resolve(t<0?p:p+u.nodeSize))))}}function xe(e){return 3==e.nodeType?e.nodeValue.length:e.childNodes.length}function ke(e){var t=e.pmViewDesc;return t&&0==t.size&&(e.nextSibling||"BR"!=e.nodeName)}function Ce(e){var t=e.root.getSelection(),n=t.focusNode,r=t.focusOffset;if(n){var o,i,a=!1;for(s.gecko&&1==n.nodeType&&r0){if(1!=n.nodeType)break;var c=n.childNodes[r-1];if(ke(c))o=n,i=--r;else{if(3!=c.nodeType)break;r=(n=c).nodeValue.length}}else{if(Me(n))break;for(var l=n.previousSibling;l&&ke(l);)o=n.parentNode,i=h(l),l=l.previousSibling;if(l)r=xe(n=l);else{if((n=n.parentNode)==e.dom)break;r=0}}a?Ne(e,t,n,r):o&&Ne(e,t,o,i)}}function Oe(e){var t=e.root.getSelection(),n=t.focusNode,r=t.focusOffset;if(n){for(var o,i,s=xe(n);;)if(r-1)return!1;if(s.mac&&n.indexOf("m")>-1)return!1;var i=o.$from,a=o.$to;if(!i.parent.inlineContent||e.endOfTextblock(t<0?"up":"down")){var c=be(e.state,t);if(c&&c instanceof r.NodeSelection)return we(e,c)}if(!i.parent.inlineContent){var l=r.Selection.findFrom(t<0?i:a,t);return!l||we(e,l)}return!1}function De(e,t){if(!(e.state.selection instanceof r.TextSelection))return!0;var n=e.state.selection,o=n.$head,i=n.$anchor,s=n.empty;if(!o.sameParent(i))return!0;if(!s)return!1;if(e.endOfTextblock(t>0?"forward":"backward"))return!0;var a=!o.textOffset&&(t<0?o.nodeBefore:o.nodeAfter);if(a&&!a.isText){var c=e.state.tr;return t<0?c.delete(o.pos-a.nodeSize,o.pos):c.delete(o.pos,o.pos+a.nodeSize),e.dispatch(c),!0}return!1}function Ae(e,t,n){e.domObserver.stop(),t.contentEditable=n,e.domObserver.start()}function Ee(e,t){var n=t.keyCode,r=function(e){var t="";return e.ctrlKey&&(t+="c"),e.metaKey&&(t+="m"),e.altKey&&(t+="a"),e.shiftKey&&(t+="s"),t}(t);return 8==n||s.mac&&72==n&&"c"==r?De(e,-1)||Ce(e):46==n||s.mac&&68==n&&"c"==r?De(e,1)||Oe(e):13==n||27==n||(37==n?Se(e,-1,r)||Ce(e):39==n?Se(e,1,r)||Oe(e):38==n?Te(e,-1,r)||Ce(e):40==n?function(e){if(s.safari&&!(e.state.selection.$head.parentOffset>0)){var t=e.root.getSelection(),n=t.focusNode,r=t.focusOffset;if(n&&1==n.nodeType&&0==r&&n.firstChild&&"false"==n.firstChild.contentEditable){var o=n.firstChild;Ae(e,o,!0),setTimeout(function(){return Ae(e,o,!1)},20)}}}(e)||Te(e,1,r)||Oe(e):r==(s.mac?"m":"c")&&(66==n||73==n||89==n||90==n))}function Re(e){var t=e.pmViewDesc;if(t)return t.parseRule();if("BR"==e.nodeName&&e.parentNode){if(s.safari&&/^(ul|ol)$/i.test(e.parentNode.nodeName)){var n=document.createElement("div");return n.appendChild(document.createElement("li")),{skip:n}}if(e.parentNode.lastChild==e||s.safari&&/^(tr|table)$/i.test(e.parentNode.nodeName))return{ignore:!0}}else if("IMG"==e.nodeName&&e.getAttribute("mark-placeholder"))return{ignore:!0}}function _e(e,t,n,i,a){if(t<0){var c=e.lastSelectionTime>Date.now()-50?e.lastSelectionOrigin:null,l=le(e,c);if(l&&!e.state.selection.eq(l)){var u=e.state.tr.setSelection(l);"pointer"==c?u.setMeta("pointer",!0):"key"==c&&u.scrollIntoView(),e.dispatch(u)}}else{var p=e.state.doc.resolve(t),h=p.sharedDepth(n);t=p.before(h+1),n=e.state.doc.resolve(n).after(h+1);var d,f,m=e.state.selection,v=function(e,t,n){var r=e.docView.parseRange(t,n),i=r.node,a=r.fromOffset,c=r.toOffset,l=r.from,u=r.to,p=e.root.getSelection(),h=null,d=p.anchorNode;if(d&&e.dom.contains(1==d.nodeType?d:d.parentNode)&&(h=[{node:d,offset:p.anchorOffset}],w(p)||h.push({node:p.focusNode,offset:p.focusOffset})),s.chrome&&8===e.lastKeyCode)for(var f=c;f>a;f--){var m=i.childNodes[f-1],v=m.pmViewDesc;if("BR"==m.nodeType&&!v){c=f;break}if(!v||v.size)break}var g=e.state.doc,y=e.someProp("domParser")||o.DOMParser.fromSchema(e.state.schema),b=g.resolve(l),S=null,x=y.parse(i,{topNode:b.parent,topMatch:b.parent.contentMatchAt(b.index()),topOpen:!0,from:a,to:c,preserveWhitespace:!b.parent.type.spec.code||"full",editableContent:!0,findPositions:h,ruleFromNode:Re,context:b});if(h&&null!=h[0].pos){var k=h[0].pos,C=h[1]&&h[1].pos;null==C&&(C=k),S={anchor:k+l,head:C+l}}return{doc:x,sel:S,from:l,to:u}}(e,t,n),g=e.state.doc,y=g.slice(v.from,v.to);8===e.lastKeyCode&&Date.now()-100=a?i-r:0;c=(i-=u)+(c-a),a=i}else if(c=c?i-r:0;a=(i-=p)+(a-c),c=i}return{start:i,endA:a,endB:c}}(y.content,v.doc.content,v.from,d,f);if(!b){if(!(i&&m instanceof r.TextSelection&&!m.empty&&m.$head.sameParent(m.$anchor))||e.composing||v.sel&&v.sel.anchor!=v.sel.head){if(v.sel){var x=Pe(e,e.state.doc,v.sel);x&&!x.eq(e.state.selection)&&e.dispatch(e.state.tr.setSelection(x))}return}b={start:m.from,endA:m.to,endB:m.to}}e.domChangeCount++,e.state.selection.frome.state.selection.from&&b.start<=e.state.selection.from+2?b.start=e.state.selection.from:b.endA=e.state.selection.to-2&&(b.endB+=e.state.selection.to-b.endA,b.endA=e.state.selection.to)),s.ie&&s.ie_version<=11&&b.endB==b.start+1&&b.endA==b.start&&b.start>v.from&&"  "==v.doc.textBetween(b.start-v.from-1,b.start-v.from+1)&&(b.start--,b.endA--,b.endB--);var k,C=v.doc.resolveNoCache(b.start-v.from),O=v.doc.resolveNoCache(b.endB-v.from),M=C.sameParent(O)&&C.parent.inlineContent;if((s.ios&&e.lastIOSEnter>Date.now()-225&&(!M||a.some(function(e){return"DIV"==e.nodeName||"P"==e.nodeName}))||!M&&C.posb.start&&function(e,t,n,r,o){if(!r.parent.isTextblock||n-t<=o.pos-r.pos||$e(r,!0,!1)n||$e(s,!0,!1)t.content.size?null:ge(e,t.resolve(n.anchor),t.resolve(n.head))}function $e(e,t,n){for(var r=e.depth,o=t?e.end():e.pos;r>0&&(t||e.indexAfter(r)==e.node(r).childCount);)r--,o++,t=!1;if(n)for(var i=e.node(r).maybeChild(e.indexAfter(r));i&&!i.isLeaf;)i=i.firstChild,o++;return o}function Ie(e,t){for(var n=[],r=t.content,i=t.openStart,s=t.openEnd;i>1&&s>1&&1==r.childCount&&1==r.firstChild.childCount;){i--,s--;var a=r.firstChild;n.push(a.type.name,a.type.hasRequiredAttrs()?a.attrs:null),r=a.content}var c=e.someProp("clipboardSerializer")||o.DOMSerializer.fromSchema(e.state.schema),l=Le(),u=l.createElement("div");u.appendChild(c.serializeFragment(r,{document:l}));for(var p,h=u.firstChild;h&&1==h.nodeType&&(p=Ve[h.nodeName.toLowerCase()]);){for(var d=p.length-1;d>=0;d--){for(var f=l.createElement(p[d]);u.firstChild;)f.appendChild(u.firstChild);u.appendChild(f)}h=u.firstChild}return h&&1==h.nodeType&&h.setAttribute("data-pm-slice",i+" "+s+" "+JSON.stringify(n)),{dom:u,text:e.someProp("clipboardTextSerializer",function(e){return e(t)})||t.content.textBetween(0,t.content.size,"\n\n")}}function ze(e,t,n,r,i){var s,a,c=i.parent.type.spec.code;if(!n&&!t)return null;var l=t&&(r||c||!n);if(l){if(e.someProp("transformPastedText",function(e){t=e(t,c||r)}),c)return new o.Slice(o.Fragment.from(e.state.schema.text(t)),0,0);var u=e.someProp("clipboardTextParser",function(e){return e(t,i,r)});u?a=u:(s=document.createElement("div"),t.trim().split(/(?:\r\n?|\n)+/).forEach(function(e){s.appendChild(document.createElement("p")).textContent=e}))}else e.someProp("transformPastedHTML",function(e){n=e(n)}),s=function(e){var t=/(\s*]*>)*/.exec(e);t&&(e=e.slice(t[0].length));var n,r=Le().createElement("div"),o=/(?:]*>)*<([a-z][^>\s]+)/i.exec(e),i=0;(n=o&&Ve[o[1].toLowerCase()])&&(e=n.map(function(e){return"<"+e+">"}).join("")+e+n.map(function(e){return""}).reverse().join(""),i=n.length);r.innerHTML=e;for(var s=0;s=0;c-=2){var l=r.nodes[n[c]];if(!l||l.hasRequiredAttrs())break;i=o.Fragment.from(l.create(n[c+1],i)),s++,a++}return new o.Slice(i,s,a)}(function(e,t,n){t=0;r--){var i=n(r);if(i)return i.v}return e}(a.content,i),!1),e.someProp("transformPasted",function(e){a=e(a)}),a}function Be(e,t,n){void 0===n&&(n=0);for(var r=t.length-1;r>=n;r--)e=t[r].create(null,o.Fragment.from(e));return e}function Fe(e,t,n,r,i,s){var a=t<0?e.firstChild:e.lastChild,c=a.content;return i=n&&(c=t<0?a.contentMatchAt(0).fillBefore(c,e.childCount>1||s<=i).append(c):c.append(a.contentMatchAt(a.childCount).fillBefore(o.Fragment.empty,!0))),e.replaceChild(t<0?0:e.childCount-1,a.copy(c))}var Ve={thead:["table"],tbody:["table"],tfoot:["table"],caption:["table"],colgroup:["table"],col:["table","colgroup"],tr:["table","tbody"],td:["table","tbody","tr"],th:["table","tbody","tr"]},je=null;function Le(){return je||(je=document.implementation.createHTMLDocument("title"))}var qe={childList:!0,characterData:!0,characterDataOldValue:!0,attributes:!0,attributeOldValue:!0,subtree:!0},We=s.ie&&s.ie_version<=11,Ke=function(){this.anchorNode=this.anchorOffset=this.focusNode=this.focusOffset=null};Ke.prototype.set=function(e){this.anchorNode=e.anchorNode,this.anchorOffset=e.anchorOffset,this.focusNode=e.focusNode,this.focusOffset=e.focusOffset},Ke.prototype.eq=function(e){return e.anchorNode==this.anchorNode&&e.anchorOffset==this.anchorOffset&&e.focusNode==this.focusNode&&e.focusOffset==this.focusOffset};var Je=function(e,t){var n=this;this.view=e,this.handleDOMChange=t,this.queue=[],this.flushingSoon=-1,this.observer=window.MutationObserver&&new window.MutationObserver(function(e){for(var t=0;te.target.nodeValue.length})?n.flushSoon():n.flush()}),this.currentSelection=new Ke,We&&(this.onCharData=function(e){n.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),n.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.suppressingSelectionUpdates=!1};Je.prototype.flushSoon=function(){var e=this;this.flushingSoon<0&&(this.flushingSoon=window.setTimeout(function(){e.flushingSoon=-1,e.flush()},20))},Je.prototype.forceFlush=function(){this.flushingSoon>-1&&(window.clearTimeout(this.flushingSoon),this.flushingSoon=-1,this.flush())},Je.prototype.start=function(){this.observer&&this.observer.observe(this.view.dom,qe),We&&this.view.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.connectSelection()},Je.prototype.stop=function(){var e=this;if(this.observer){var t=this.observer.takeRecords();if(t.length){for(var n=0;n-1)){var e=this.observer?this.observer.takeRecords():[];this.queue.length&&(e=this.queue.concat(e),this.queue.length=0);var t=this.view.root.getSelection(),n=!this.suppressingSelectionUpdates&&!this.currentSelection.eq(t)&&ye(this.view)&&!this.ignoreSelectionChange(t),r=-1,o=-1,i=!1,a=[];if(this.view.editable)for(var c=0;c1){var u=a.filter(function(e){return"BR"==e.nodeName});if(2==u.length){var p=u[0],h=u[1];p.parentNode&&p.parentNode.parentNode==h.parentNode?h.remove():p.remove()}}(r>-1||n)&&(r>-1&&(this.view.docView.markDirty(r,o),function(e){if(He)return;He=!0,"normal"==getComputedStyle(e.dom).whiteSpace&&console.warn("ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.")}(this.view)),this.handleDOMChange(r,o,i,a),this.view.docView.dirty?this.view.updateState(this.view.state):this.currentSelection.eq(t)||ue(this.view))}},Je.prototype.registerMutation=function(e,t){if(t.indexOf(e.target)>-1)return null;var n=this.view.docView.nearestDesc(e.target);if("attributes"==e.type&&(n==this.view.docView||"contenteditable"==e.attributeName||"style"==e.attributeName&&!e.oldValue&&!e.target.getAttribute("style")))return null;if(!n||n.ignoreMutation(e))return null;if("childList"==e.type){var r=e.previousSibling,o=e.nextSibling;if(s.ie&&s.ie_version<=11&&e.addedNodes.length)for(var i=0;ii.depth?t(e,n,i.nodeAfter,i.before(r),o,!0):t(e,n,i.node(r),i.before(r),o,!1)}))return{v:!0}},a=i.depth+1;a>0;a--){var c=s(a);if(c)return c.v}return!1}function tt(e,t,n){e.focused||e.focus();var r=e.state.tr.setSelection(t);"pointer"==n&&r.setMeta("pointer",!0),e.dispatch(r)}function nt(e,t,n,o,i){return et(e,"handleClickOn",t,n,o)||e.someProp("handleClick",function(n){return n(e,t,o)})||(i?function(e,t){if(-1==t)return!1;var n,o,i=e.state.selection;i instanceof r.NodeSelection&&(n=i.node);for(var s=e.state.doc.resolve(t),a=s.depth+1;a>0;a--){var c=a>s.depth?s.nodeAfter:s.node(a);if(r.NodeSelection.isSelectable(c)){o=n&&i.$from.depth>0&&a>=i.$from.depth&&s.before(i.$from.depth+1)==i.$from.pos?s.before(i.$from.depth):s.before(a);break}}return null!=o&&(tt(e,r.NodeSelection.create(e.state.doc,o),"pointer"),!0)}(e,n):function(e,t){if(-1==t)return!1;var n=e.state.doc.resolve(t),o=n.nodeAfter;return!!(o&&o.isAtom&&r.NodeSelection.isSelectable(o))&&(tt(e,new r.NodeSelection(n),"pointer"),!0)}(e,n))}function rt(e,t,n,o){return et(e,"handleTripleClickOn",t,n,o)||e.someProp("handleTripleClick",function(n){return n(e,t,o)})||function(e,t){var n=e.state.doc;if(-1==t)return!!n.inlineContent&&(tt(e,r.TextSelection.create(n,0,n.content.size),"pointer"),!0);for(var o=n.resolve(t),i=o.depth+1;i>0;i--){var s=i>o.depth?o.nodeAfter:o.node(i),a=o.before(i);if(s.inlineContent)tt(e,r.TextSelection.create(n,a+1,a+1+s.content.size),"pointer");else{if(!r.NodeSelection.isSelectable(s))continue;tt(e,r.NodeSelection.create(n,a),"pointer")}return!0}}(e,n)}function ot(e){return pt(e)}Ge.keydown=function(e,t){if(e.shiftKey=16==t.keyCode||t.shiftKey,!at(e,t))if(e.domObserver.forceFlush(),e.lastKeyCode=t.keyCode,e.lastKeyCodeTime=Date.now(),!s.ios||13!=t.keyCode||t.ctrlKey||t.altKey||t.metaKey)e.someProp("handleKeyDown",function(n){return n(e,t)})||Ee(e,t)?t.preventDefault():Xe(e,"key");else{var n=Date.now();e.lastIOSEnter=n,e.lastIOSEnterFallbackTimeout=setTimeout(function(){e.lastIOSEnter==n&&(e.someProp("handleKeyDown",function(t){return t(e,S(13,"Enter"))}),e.lastIOSEnter=0)},200)}},Ge.keyup=function(e,t){16==t.keyCode&&(e.shiftKey=!1)},Ge.keypress=function(e,t){if(!(at(e,t)||!t.charCode||t.ctrlKey&&!t.altKey||s.mac&&t.metaKey))if(e.someProp("handleKeyPress",function(n){return n(e,t)}))t.preventDefault();else{var n=e.state.selection;if(!(n instanceof r.TextSelection&&n.$from.sameParent(n.$to))){var o=String.fromCharCode(t.charCode);e.someProp("handleTextInput",function(t){return t(e,n.$from.pos,n.$to.pos,o)})||e.dispatch(e.state.tr.insertText(o).scrollIntoView()),t.preventDefault()}}};var it=s.mac?"metaKey":"ctrlKey";Ue.mousedown=function(e,t){e.shiftKey=t.shiftKey;var n=ot(e),r=Date.now(),o="singleClick";r-e.lastClick.time<500&&function(e,t){var n=t.x-e.clientX,r=t.y-e.clientY;return n*n+r*r<100}(t,e.lastClick)&&!t[it]&&("singleClick"==e.lastClick.type?o="doubleClick":"doubleClick"==e.lastClick.type&&(o="tripleClick")),e.lastClick={time:r,x:t.clientX,y:t.clientY,type:o};var i=e.posAtCoords(Qe(t));i&&("singleClick"==o?e.mouseDown=new st(e,i,t,n):("doubleClick"==o?function(e,t,n,r){return et(e,"handleDoubleClickOn",t,n,r)||e.someProp("handleDoubleClick",function(n){return n(e,t,r)})}:rt)(e,i.pos,i.inside,t)?t.preventDefault():Xe(e,"pointer"))};var st=function(e,t,n,o){var i,a,c=this;if(this.view=e,this.startDoc=e.state.doc,this.pos=t,this.event=n,this.flushed=o,this.selectNode=n[it],this.allowDefault=n.shiftKey,t.inside>-1)i=e.state.doc.nodeAt(t.inside),a=t.inside;else{var l=e.state.doc.resolve(t.pos);i=l.parent,a=l.depth?l.before():0}this.mightDrag=null;var u=o?null:n.target,p=u?e.docView.nearestDesc(u,!0):null;this.target=p?p.dom:null,(i.type.spec.draggable&&!1!==i.type.spec.selectable||e.state.selection instanceof r.NodeSelection&&a==e.state.selection.from)&&(this.mightDrag={node:i,pos:a,addAttr:this.target&&!this.target.draggable,setUneditable:this.target&&s.gecko&&!this.target.hasAttribute("contentEditable")}),this.target&&this.mightDrag&&(this.mightDrag.addAttr||this.mightDrag.setUneditable)&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&(this.target.draggable=!0),this.mightDrag.setUneditable&&setTimeout(function(){return c.target.setAttribute("contentEditable","false")},20),this.view.domObserver.start()),e.root.addEventListener("mouseup",this.up=this.up.bind(this)),e.root.addEventListener("mousemove",this.move=this.move.bind(this)),Xe(e,"pointer")};function at(e,t){return!!e.composing||!!(s.safari&&Math.abs(t.timeStamp-e.compositionEndedAt)<500)&&(e.compositionEndedAt=-2e8,!0)}st.prototype.done=function(){this.view.root.removeEventListener("mouseup",this.up),this.view.root.removeEventListener("mousemove",this.move),this.mightDrag&&this.target&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&this.target.removeAttribute("draggable"),this.mightDrag.setUneditable&&this.target.removeAttribute("contentEditable"),this.view.domObserver.start()),this.view.mouseDown=null},st.prototype.up=function(e){if(this.done(),this.view.dom.contains(3==e.target.nodeType?e.target.parentNode:e.target)){var t=this.pos;this.view.state.doc!=this.startDoc&&(t=this.view.posAtCoords(Qe(e))),this.allowDefault||!t?Xe(this.view,"pointer"):nt(this.view,t.pos,t.inside,e,this.selectNode)?e.preventDefault():this.flushed||s.safari&&this.mightDrag&&!this.mightDrag.node.isAtom||s.chrome&&!(this.view.state.selection instanceof r.TextSelection)&&(t.pos==this.view.state.selection.from||t.pos==this.view.state.selection.to)?(tt(this.view,r.Selection.near(this.view.state.doc.resolve(t.pos)),"pointer"),e.preventDefault()):Xe(this.view,"pointer")}},st.prototype.move=function(e){!this.allowDefault&&(Math.abs(this.event.x-e.clientX)>4||Math.abs(this.event.y-e.clientY)>4)&&(this.allowDefault=!0),Xe(this.view,"pointer")},Ue.touchdown=function(e){ot(e),Xe(e,"pointer")},Ue.contextmenu=function(e){return ot(e)};var ct=s.android?5e3:-1;function lt(e,t){clearTimeout(e.composingTimeout),t>-1&&(e.composingTimeout=setTimeout(function(){return pt(e)},t))}function ut(e){for(e.composing=!1;e.compositionNodes.length>0;)e.compositionNodes.pop().markParentsDirty()}function pt(e,t){if(e.domObserver.forceFlush(),ut(e),t||e.docView.dirty){var n=le(e);return n&&!n.eq(e.state.selection)?e.dispatch(e.state.tr.setSelection(n)):e.updateState(e.state),!0}return!1}Ge.compositionstart=Ge.compositionupdate=function(e){if(!e.composing){e.domObserver.flush();var t=e.state,n=t.selection.$from;if(t.selection.empty&&(t.storedMarks||!n.textOffset&&n.parentOffset&&n.nodeBefore.marks.some(function(e){return!1===e.type.spec.inclusive})))e.markCursor=e.state.storedMarks||n.marks(),pt(e,!0),e.markCursor=null;else if(pt(e),s.gecko&&t.selection.empty&&n.parentOffset&&!n.textOffset&&n.nodeBefore.marks.length)for(var r=e.root.getSelection(),o=r.focusNode,i=r.focusOffset;o&&1==o.nodeType&&0!=i;){var a=i<0?o.lastChild:o.childNodes[i-1];if(!a)break;if(3==a.nodeType){r.collapse(a,a.nodeValue.length);break}o=a,i=-1}e.composing=!0}lt(e,ct)},Ge.compositionend=function(e,t){e.composing&&(e.composing=!1,e.compositionEndedAt=t.timeStamp,lt(e,20))};var ht=s.ie&&s.ie_version<15||s.ios&&s.webkit_version<604;function dt(e,t,n,r){var i=ze(e,t,n,e.shiftKey,e.state.selection.$from);if(!e.someProp("handlePaste",function(t){return t(e,r,i||o.Slice.empty)})&&i){var s=function(e){return 0==e.openStart&&0==e.openEnd&&1==e.content.childCount?e.content.firstChild:null}(i),a=s?e.state.tr.replaceSelectionWith(s,e.shiftKey):e.state.tr.replaceSelection(i);e.dispatch(a.scrollIntoView().setMeta("paste",!0).setMeta("uiEvent","paste"))}}Ue.copy=Ge.cut=function(e,t){var n=e.state.selection,r="cut"==t.type;if(!n.empty){var o=ht?null:t.clipboardData,i=Ie(e,n.content()),s=i.dom,a=i.text;o?(t.preventDefault(),o.clearData(),o.setData("text/html",s.innerHTML),o.setData("text/plain",a)):function(e,t){if(e.dom.parentNode){var n=e.dom.parentNode.appendChild(document.createElement("div"));n.appendChild(t),n.style.cssText="position: fixed; left: -10000px; top: 10px";var r=getSelection(),o=document.createRange();o.selectNodeContents(t),e.dom.blur(),r.removeAllRanges(),r.addRange(o),setTimeout(function(){n.parentNode&&n.parentNode.removeChild(n),e.focus()},50)}}(e,s),r&&e.dispatch(e.state.tr.deleteSelection().scrollIntoView().setMeta("uiEvent","cut"))}},Ge.paste=function(e,t){var n=ht?null:t.clipboardData,r=n&&n.getData("text/html"),o=n&&n.getData("text/plain");n&&(r||o||n.files.length)?(dt(e,o,r,t),t.preventDefault()):function(e,t){if(e.dom.parentNode){var n=e.shiftKey||e.state.selection.$from.parent.type.spec.code,r=e.dom.parentNode.appendChild(document.createElement(n?"textarea":"div"));n||(r.contentEditable="true"),r.style.cssText="position: fixed; left: -10000px; top: 10px",r.focus(),setTimeout(function(){e.focus(),r.parentNode&&r.parentNode.removeChild(r),n?dt(e,r.value,null,t):dt(e,r.textContent,r.innerHTML,t)},50)}}(e,t)};var ft=s.mac?"altKey":"ctrlKey";for(var mt in Ue.dragstart=function(e,t){var n=e.mouseDown;if(n&&n.done(),t.dataTransfer){var o=e.state.selection,i=o.empty?null:e.posAtCoords(Qe(t));if(i&&i.pos>=o.from&&i.pos<=(o instanceof r.NodeSelection?o.to-1:o.to));else if(n&&n.mightDrag)e.dispatch(e.state.tr.setSelection(r.NodeSelection.create(e.state.doc,n.mightDrag.pos)));else if(t.target&&1==t.target.nodeType){var s=e.docView.nearestDesc(t.target,!0);if(!s||!s.node.type.spec.draggable||s==e.docView)return;e.dispatch(e.state.tr.setSelection(r.NodeSelection.create(e.state.doc,s.posBefore)))}var a=e.state.selection.content(),c=Ie(e,a),l=c.dom,u=c.text;t.dataTransfer.clearData(),t.dataTransfer.setData(ht?"Text":"text/html",l.innerHTML),ht||t.dataTransfer.setData("text/plain",u),e.dragging=new function(e,t){this.slice=e,this.move=t}(a,!t[ft])}},Ue.dragend=function(e){window.setTimeout(function(){return e.dragging=null},50)},Ge.dragover=Ge.dragenter=function(e,t){return t.preventDefault()},Ge.drop=function(e,t){var n=e.dragging;if(e.dragging=null,t.dataTransfer){var s=e.posAtCoords(Qe(t));if(s){var a=e.state.doc.resolve(s.pos);if(a){var c=n&&n.slice||ze(e,t.dataTransfer.getData(ht?"Text":"text/plain"),ht?null:t.dataTransfer.getData("text/html"),!1,a),l=n&&!t[ft];if(e.someProp("handleDrop",function(n){return n(e,t,c||o.Slice.empty,l)}))t.preventDefault();else if(c){t.preventDefault();var u=c?Object(i.h)(e.state.doc,a.pos,c):a.pos;null==u&&(u=a.pos);var p=e.state.tr;l&&p.deleteSelection();var h=p.mapping.map(u),d=0==c.openStart&&0==c.openEnd&&1==c.content.childCount,f=p.doc;if(d?p.replaceRangeWith(h,h,c.content.firstChild):p.replaceRange(h,h,c),!p.doc.eq(f)){var m=p.doc.resolve(h);if(d&&r.NodeSelection.isSelectable(c.content.firstChild)&&m.nodeAfter&&m.nodeAfter.sameMarkup(c.content.firstChild))p.setSelection(new r.NodeSelection(m));else{var v=p.mapping.map(u);p.mapping.maps[p.mapping.maps.length-1].forEach(function(e,t,n,r){return v=r}),p.setSelection(ge(e,m,p.doc.resolve(v)))}e.focus(),e.dispatch(p.setMeta("uiEvent","drop"))}}}}}},Ue.focus=function(e){e.focused||(e.domObserver.stop(),e.dom.classList.add("ProseMirror-focused"),e.domObserver.start(),e.focused=!0,setTimeout(function(){e.docView&&e.hasFocus()&&!e.domObserver.currentSelection.eq(e.root.getSelection())&&ue(e)},20))},Ue.blur=function(e){e.focused&&(e.domObserver.stop(),e.dom.classList.remove("ProseMirror-focused"),e.domObserver.start(),e.domObserver.currentSelection.set({}),e.focused=!1)},Ue.beforeinput=function(e,t){if(s.chrome&&s.android&&"deleteContentBackward"==t.inputType){var n=e.domChangeCount;setTimeout(function(){if(e.domChangeCount==n&&(e.dom.blur(),e.focus(),!e.someProp("handleKeyDown",function(t){return t(e,S(8,"Backspace"))}))){var t=e.state.selection.$cursor;t&&t.pos>0&&e.dispatch(e.state.tr.delete(t.pos-1,t.pos).scrollIntoView())}},50)}},Ge)Ue[mt]=Ge[mt];function vt(e,t){if(e==t)return!0;for(var n in e)if(e[n]!==t[n])return!1;for(var r in t)if(!(r in e))return!1;return!0}var gt=function(e,t){this.spec=t||kt,this.side=this.spec.side||0,this.toDOM=e};gt.prototype.map=function(e,t,n,r){var o=e.mapResult(t.from+r,this.side<0?-1:1),i=o.pos;return o.deleted?null:new wt(i-n,i-n,this)},gt.prototype.valid=function(){return!0},gt.prototype.eq=function(e){return this==e||e instanceof gt&&(this.spec.key&&this.spec.key==e.spec.key||this.toDOM==e.toDOM&&vt(this.spec,e.spec))};var yt=function(e,t){this.spec=t||kt,this.attrs=e};yt.prototype.map=function(e,t,n,r){var o=e.map(t.from+r,this.spec.inclusiveStart?-1:1)-n,i=e.map(t.to+r,this.spec.inclusiveEnd?1:-1)-n;return o>=i?null:new wt(o,i,this)},yt.prototype.valid=function(e,t){return t.from=e&&(!o||o(s.spec))&&n.push(s.copy(s.from+r,s.to+r))}for(var a=0;ae){var c=this.children[a]+1;this.children[a+2].findInner(e-c,t-c,n,r+c,o)}},Ct.prototype.map=function(e,t,n){return this==Ot||0==e.maps.length?this:this.mapInner(e,t,0,0,n||kt)},Ct.prototype.mapInner=function(e,t,n,r,o){for(var i,s=0;sc+i||(t>=a[s]+i?a[s+1]=-1:n>=o&&(l=r-n-(t-e))&&(a[s]+=l,a[s+1]+=l))}},l=0;l=r.content.size){u=!0;continue}var f=n.map(e[p+1]+i,-1),m=f-o,v=r.content.findIndex(d),g=v.index,y=v.offset,b=r.maybeChild(g);if(b&&y==d&&y+b.nodeSize==m){var w=a[p+2].mapInner(n,b,h+1,e[p]+i+1,s);w!=Ot?(a[p]=d,a[p+1]=m,a[p+2]=w):(a[p+1]=-2,u=!0)}else u=!0}if(u){var S=function(e,t,n,r,o,i,s){function a(e,t){for(var i=0;is&&l.to=e){this.children[o]==e&&(n=this.children[o+2]);break}for(var i=e+1,s=i+t.content.size,a=0;ai&&c.type instanceof yt){var l=Math.max(i,c.from)-i,u=Math.min(s,c.to)-i;ln&&s.to0;)t++;e.splice(t,0,n)}function Pt(e){var t=[];return e.someProp("decorations",function(n){var r=n(e.state);r&&r!=Ot&&t.push(r)}),e.cursorWrapper&&t.push(Ct.create(e.state.doc,[e.cursorWrapper.deco])),Mt.from(t)}Mt.prototype.forChild=function(e,t){if(t.isLeaf)return Ct.empty;for(var n=[],r=0;ro.scrollToSelection?"to selection":"preserve",h=i||!this.docView.matchesNode(e.doc,u,l);!h&&e.selection.eq(o.selection)||(a=!0);var d="preserve"==p&&a&&null==this.dom.style.overflowAnchor&&function(e){for(var t,n,r=e.dom.getBoundingClientRect(),o=Math.max(0,r.top),i=(r.left+r.right)/2,s=o+1;s=o-20){t=a,n=c.top;break}}}return{refDOM:t,refTop:n,stack:M(e.dom)}}(this);if(a){this.domObserver.stop();var f=h&&(s.ie||s.chrome)&&!this.composing&&!o.selection.empty&&!e.selection.empty&&function(e,t){var n=Math.min(e.$anchor.sharedDepth(e.head),t.$anchor.sharedDepth(t.head));return e.$anchor.start(n)!=t.$anchor.start(n)}(o.selection,e.selection);if(h){var v=s.chrome?this.trackWrites=this.root.getSelection().focusNode:null;!i&&this.docView.update(e.doc,u,l,this)||(this.docView.updateOuterDeco([]),this.docView.destroy(),this.docView=U(e.doc,u,l,this.dom,this)),v&&!this.trackWrites&&(f=!0)}f||!(this.mouseDown&&this.domObserver.currentSelection.eq(this.root.getSelection())&&function(e){var t=e.docView.domFromPos(e.state.selection.anchor),n=e.root.getSelection();return m(t.node,t.offset,n.anchorNode,n.anchorOffset)}(this))?ue(this,f):(me(this,e.selection),this.domObserver.setCurSelection()),this.domObserver.start()}if(this.updatePluginViews(o),"reset"==p)this.dom.scrollTop=0;else if("to selection"==p){var g=this.root.getSelection().focusNode;this.someProp("handleScrollToSelection",function(e){return e(n)})||(e.selection instanceof r.NodeSelection?O(this,this.docView.domAfterPos(e.selection.from).getBoundingClientRect(),g):O(this,this.coordsAtPos(e.selection.head),g))}else d&&function(e){var t=e.refDOM,n=e.refTop,r=e.stack,o=t?t.getBoundingClientRect().top:0;N(r,0==o?0:o-n)}(d)},$t.prototype.destroyPluginViews=function(){for(var e;e=this.pluginViews.pop();)e.destroy&&e.destroy()},$t.prototype.updatePluginViews=function(e){if(e&&e.plugins==this.state.plugins)for(var t=0;tr&&(i+=l.attrs.colspan)}for(var u=0;u1&&(n=!0)}-1==t?t=i:t!=i&&(t=Math.max(t,i))}return t}(e),n=e.childCount,r=[],o=0,i=null,s=[],a=0,c=t*n;a=n){(i||(i=[])).push({type:"overlong_rowspan",pos:u,n:y-w});break}for(var S=o+w*t,x=0;x0;t--)if("row"==e.node(t).type.spec.tableRole)return e.node(0).resolve(e.before(t+1));return null}function x(e){for(var t=e.selection.$head,n=t.depth;n>0;n--)if("row"==t.node(n).type.spec.tableRole)return!0;return!1}function k(e){var t=e.selection;return t.$anchorCell?t.$anchorCell.pos>t.$headCell.pos?t.$anchorCell:t.$headCell:t.node&&"cell"==t.node.type.spec.tableRole?t.$anchor:S(t.$head)||function(e){for(var t=e.nodeAfter,n=e.pos;t;t=t.firstChild,n++){var r=t.type.spec.tableRole;if("cell"==r||"header_cell"==r)return e.doc.resolve(n)}for(var o=e.nodeBefore,i=e.pos;o;o=o.lastChild,i--){var s=o.type.spec.tableRole;if("cell"==s||"header_cell"==s)return e.doc.resolve(i-o.nodeSize)}}(t.$head)}function C(e){return"row"==e.parent.type.spec.tableRole&&e.nodeAfter}function O(e){return e.node(0).resolve(e.pos+e.nodeAfter.nodeSize)}function M(e,t){return e.depth==t.depth&&e.pos>=t.start(-1)&&e.pos<=t.end(-1)}function N(e){return f.get(e.node(-1)).findCell(e.pos-e.start(-1))}function T(e){return f.get(e.node(-1)).colCount(e.pos-e.start(-1))}function D(e,t,n){var r=e.start(-1),o=f.get(e.node(-1)).nextCell(e.pos-r,t,n);return null==o?null:e.node(0).resolve(r+o)}function A(e,t,n){var r={};for(var o in e)r[o]=e[o];return r[t]=n,r}function E(e,t,n){void 0===n&&(n=1);var r=A(e,"colspan",e.colspan-n);return r.colwidth&&(r.colwidth=r.colwidth.slice(),r.colwidth.splice(t,n),r.colwidth.some(function(e){return e>0})||(r.colwidth=null)),r}function R(e,t,n){void 0===n&&(n=1);var r=A(e,"colspan",e.colspan+n);if(r.colwidth){r.colwidth=r.colwidth.slice();for(var o=0;o0||v>0){var g=d.attrs;m>0&&(g=E(g,0,m)),v>0&&(g=E(g,g.colspan-v,v)),d=h.leftr.bottom){var y=A(d.attrs,"rowspan",Math.min(h.bottom,r.bottom)-Math.max(h.top,r.top));d=h.top0)return!1;var n=e+this.$anchorCell.nodeAfter.attrs.rowspan,r=t+this.$headCell.nodeAfter.attrs.rowspan;return Math.max(n,r)==this.$headCell.node(-1).childCount},t.colSelection=function(e,n){void 0===n&&(n=e);var r=f.get(e.node(-1)),o=e.start(-1),i=r.findCell(e.pos-o),s=r.findCell(n.pos-o),a=e.node(0);return i.top<=s.top?(i.top>0&&(e=a.resolve(o+r.map[i.left])),s.bottom0&&(n=a.resolve(o+r.map[s.left])),i.bottom0)return!1;var o=n+this.$anchorCell.nodeAfter.attrs.colspan,i=r+this.$headCell.nodeAfter.attrs.colspan;return Math.max(o,i)==e.width},t.prototype.eq=function(e){return e instanceof t&&e.$anchorCell.pos==this.$anchorCell.pos&&e.$headCell.pos==this.$headCell.pos},t.rowSelection=function(e,n){void 0===n&&(n=e);var r=f.get(e.node(-1)),o=e.start(-1),i=r.findCell(e.pos-o),s=r.findCell(n.pos-o),a=e.node(0);return i.left<=s.left?(i.left>0&&(e=a.resolve(o+r.map[i.top*r.width])),s.right0&&(n=a.resolve(o+r.map[s.top*r.width])),i.right0&&r>0||"table"==t.firstChild.type.spec.tableRole);)n--,r--,t=t.firstChild.content;var o=t.firstChild,i=o.type.spec.tableRole,a=o.type.schema,c=[];if("row"==i)for(var l=0;l=0;i--)for(var a=o.child(i).attrs,c=a.rowspan,l=a.colspan,u=r;u=t.length&&t.push(s.Fragment.empty),n[d]t&&(f=f.type.create(E(f.attrs,f.attrs.colspan,h+f.attrs.colspan-t),f.content)),p.push(f),h+=f.attrs.colspan;for(var m=1;mn&&(x=x.type.create(A(x.attrs,"rowspan",Math.max(1,n-x.attrs.rowspan)),x.content)),b.push(x)}v.push(s.Fragment.from(b))}i=v,o=n}return{width:r,height:o,rows:i}}function V(e,t,n,r,o,i,s,a){if(0==s||s==t.height)return!1;for(var c=!1,l=o;lt.width)for(var p=0,h=0;pt.height){for(var g=[],y=0,w=(t.height-1)*t.width;y=t.width)&&n.nodeAt(t.map[w+y]).type==u.header_cell;g.push(S?l||(l=u.header_cell.createAndFill()):c||(c=u.cell.createAndFill()))}for(var x=u.row.create(null,s.Fragment.from(g)),k=[],C=t.height;C=0;o--){var s=r.node(o);if((n<0?r.index(o):r.indexAfter(o))!=(n<0?0:s.childCount))return null;if("cell"==s.type.spec.tableRole||"header_cell"==s.type.spec.tableRole){var a=r.before(o),c="vert"==t?n>0?"down":"up":n>0?"right":"left";return e.endOfTextblock(c)?a:null}}return null}function Y(e,t){for(;t&&t!=e.dom;t=t.parentNode)if("TD"==t.nodeName||"TH"==t.nodeName)return t}function Q(e,t){var n=e.posAtCoords({left:t.clientX,top:t.clientY});return n&&n?S(e.state.doc.resolve(n.pos)):null}var ee=new i.PluginKey("fix-tables");function te(e,t){var n,r=function(t,r){"table"==t.type.spec.tableRole&&(n=function(e,t,n,r){var o=f.get(t);if(!o.problems)return r;r||(r=e.tr);for(var i,s,a=[],c=0;c0){var k="cell";w.firstChild&&(k=w.firstChild.type.spec.tableRole);for(var C=[],O=0;O0?-1:0;_(r,i,n+s)&&(s=0==n||n==r.width?null:0);for(var a=0;a0&&n0&&r.map[c-1]==l||n0?-1:0;ce(r,i,n+l)&&(l=0==n||n==r.height?null:0);for(var u=0,p=r.width*n;u0&&n0&&h==r.map[p-r.width]){var d=o.nodeAt(h).attrs;e.setNodeMarkup(e.mapping.slice(l).map(h+i),null,A(d,"rowspan",d.rowspan-1)),u+=d.colspan-1}else if(n0&&o[s]==o[s-1]||t.right0&&o[i]==o[i-n]||t.bottom0;t--){var n=e.node(t).type.spec.tableRole;if("cell"===n||"header_cell"===n)return e.node(t)}return null}(i.$from)))return!1;o=S(i.$from).pos}if(1==r.attrs.colspan&&1==r.attrs.rowspan)return!1;if(n){var s=r.attrs,a=[],c=s.colwidth;s.rowspan>1&&(s=A(s,"rowspan",1)),s.colspan>1&&(s=A(s,"colspan",1));for(var l,u=ne(t),p=t.tr,h=0;h=0;r--){var i=e.node(-1).child(r);if(i.childCount)return o-1-i.lastChild.nodeSize;o-=i.nodeSize}}else{if(e.index()0;r--){if("table"==n.node(r).type.spec.tableRole)return t&&t(e.tr.delete(n.before(r),n.after(r)).scrollIntoView()),!0}return!1}var Me=function(e,t){this.node=e,this.cellMinWidth=t,this.dom=document.createElement("div"),this.dom.className="tableWrapper",this.table=this.dom.appendChild(document.createElement("table")),this.colgroup=this.table.appendChild(document.createElement("colgroup")),Ne(e,this.colgroup,this.table,t),this.contentDOM=this.table.appendChild(document.createElement("tbody"))};function Ne(e,t,n,r,o,i){for(var s=0,a=!0,c=t.firstChild,l=e.firstChild,u=0,p=0;u-1?{class:"resize-cursor"}:null},handleDOMEvents:{mousemove:function(e,n){!function(e,t,n,r,o){var i=Te.getState(e.state);if(!i.dragging){var s=function(e){for(;e&&"TD"!=e.nodeName&&"TH"!=e.nodeName;)e=e.classList.contains("ProseMirror")?null:e.parentNode;return e}(t.target),a=-1;if(s){var c=s.getBoundingClientRect(),l=c.left,u=c.right;t.clientX-l<=n?a=Ee(e,t,"left"):u-t.clientX<=n&&(a=Ee(e,t,"right"))}if(a!=i.activeHandle){if(!o&&-1!==a){var p=e.state.doc.resolve(a),h=p.node(-1),d=f.get(h),m=p.start(-1),v=d.colCount(p.pos-m)+p.nodeAfter.attrs.colspan-1;if(v==d.width-1)return}_e(e,a)}}}(e,n,t,0,o)},mouseleave:function(e){!function(e){var t=Te.getState(e.state);t.activeHandle>-1&&!t.dragging&&_e(e,-1)}(e)},mousedown:function(e,t){!function(e,t,n){var r=Te.getState(e.state);if(-1==r.activeHandle||r.dragging)return!1;var o=e.state.doc.nodeAt(r.activeHandle),i=function(e,t,n){var r=n.colspan,o=n.colwidth,i=o&&o[o.length-1];if(i)return i;var s=e.domAtPos(t),a=s.node.childNodes[s.offset].offsetWidth,c=r;if(o)for(var l=0;l-1)return function(e,t){for(var n=[],r=e.doc.resolve(t),o=r.node(-1),i=f.get(o),s=r.start(-1),a=i.colCount(r.pos-s)+r.nodeAfter.attrs.colspan,l=0;l=0&&!(t.after(i+1)=0&&!(n.before(s+1)>n.start(s));s--,o--);return r==o&&/row|table/.test(t.node(i).type.spec.tableRole)}(s)?r=i.TextSelection.create(a,s.from):s instanceof i.TextSelection&&function(e){for(var t,n,r=e.$from,o=e.$to,i=r.depth;i>0;i--){var s=r.node(i);if("cell"===s.type.spec.tableRole||"header_cell"===s.type.spec.tableRole){t=s;break}}for(var a=o.depth;a>0;a--){var c=o.node(a);if("cell"===c.type.spec.tableRole||"header_cell"===c.type.spec.tableRole){n=c;break}}return t!==n&&0===o.parentOffset}(s)&&(r=i.TextSelection.create(a,s.$from.start(),s.$from.end()));return r&&(t||(t=e.tr)).setSelection(r),t}(r,te(r,n),t)}})}Ae.prototype.apply=function(e){var t=this,n=e.getMeta(Te);if(n&&null!=n.setHandle)return new Ae(n.setHandle,null);if(n&&void 0!==n.setDragging)return new Ae(t.activeHandle,n.setDragging);if(t.activeHandle>-1&&e.docChanged){var r=e.mapping.map(t.activeHandle,-1);C(e.doc.resolve(r))||(r=null),t=new Ae(r,t.dragging)}return t}},Xb7u:function(e,t,n){!function(){var t;function n(e){for(var t,n,r,o,i=1,s=[].slice.call(arguments),a=0,c=e.length,l="",u=!1,p=!1,h=function(){return s[i++]},d=function(){for(var n="";/\d/.test(e[a]);)n+=e[a++],t=e[a];return n.length>0?parseInt(n):null};a ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|\\n*|\\n*|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:r,table:r,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};s.def=o(s.def).replace("label",s._label).replace("title",s._title).getRegex(),s.bullet=/(?:[*+-]|\d{1,9}\.)/,s.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,s.item=o(s.item,"gm").replace(/bull/g,s.bullet).getRegex(),s.list=o(s.list).replace(/bull/g,s.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+s.def.source+")").getRegex(),s._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",s._comment=//,s.html=o(s.html,"i").replace("comment",s._comment).replace("tag",s._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),s.paragraph=o(s._paragraph).replace("hr",s.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",s._tag).getRegex(),s.blockquote=o(s.blockquote).replace("paragraph",s.paragraph).getRegex(),s.normal=i({},s),s.gfm=i({},s.normal,{nptable:"^ *([^|\\n ].*\\|.*)\\n *([-:]+ *\\|[-| :]*)(?:\\n((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)",table:"^ *\\|(.+)\\n *\\|?( *[-:]+[-| :]*)(?:\\n *((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),s.gfm.nptable=o(s.gfm.nptable).replace("hr",s.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",s._tag).getRegex(),s.gfm.table=o(s.gfm.table).replace("hr",s.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",s._tag).getRegex(),s.pedantic=i({},s.normal,{html:o("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",s._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,fences:r,paragraph:o(s.normal._paragraph).replace("hr",s.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",s.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});const a={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:r,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,em:/^_([^\s_])_(?!_)|^\*([^\s*<\[])\*(?!\*)|^_([^\s<][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_<][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s<"][\s\S]*?[^\s\*])\*(?!\*|[^\spunctuation])|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:r,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\?@\\[^_{|}~"};a.em=o(a.em).replace(/punctuation/g,a._punctuation).getRegex(),a._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,a._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,a._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,a.autolink=o(a.autolink).replace("scheme",a._scheme).replace("email",a._email).getRegex(),a._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,a.tag=o(a.tag).replace("comment",s._comment).replace("attribute",a._attribute).getRegex(),a._label=/(?:\[[^\[\]]*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,a._href=/<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*/,a._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,a.link=o(a.link).replace("label",a._label).replace("href",a._href).replace("title",a._title).getRegex(),a.reflink=o(a.reflink).replace("label",a._label).getRegex(),a.normal=i({},a),a.pedantic=i({},a.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:o(/^!?\[(label)\]\((.*?)\)/).replace("label",a._label).getRegex(),reflink:o(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",a._label).getRegex()}),a.gfm=i({},a.normal,{escape:o(a.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"',229:"Q"},i="undefined"!=typeof navigator&&/Chrome\/(\d+)/.exec(navigator.userAgent),s="undefined"!=typeof navigator&&/Apple Computer/.test(navigator.vendor),a="undefined"!=typeof navigator&&/Gecko\/\d+/.test(navigator.userAgent),c="undefined"!=typeof navigator&&/Mac/.test(navigator.platform),l="undefined"!=typeof navigator&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),u=i&&(c||+i[1]<57)||a&&c,p=0;p<10;p++)r[48+p]=r[96+p]=String(p);for(p=1;p<=24;p++)r[p+111]="F"+p;for(p=65;p<=90;p++)r[p]=String.fromCharCode(p+32),o[p]=String.fromCharCode(p);for(var h in r)o.hasOwnProperty(h)||(o[h]=r[h]);var d=n("UxO+"),f="undefined"!=typeof navigator&&/Mac/.test(navigator.platform);function m(e){var t,n,r,o,i=e.split(/-(?!$)/),s=i[i.length-1];"Space"==s&&(s=" ");for(var a=0;a127)&&(i=r[n.keyCode])&&i!=a){var h=t[v(i,n,!0)];if(h&&h(e.state,e.dispatch,e))return!0}else if(c&&n.shiftKey){var d=t[v(a,n,!0)];if(d&&d(e.state,e.dispatch,e))return!0}return!1}}},hyX7:function(e,t,n){const r=n("SbYC"),{defaults:o}=n("vbtb"),{inline:i}=n("e56X"),{findClosingBracket:s,escape:a}=n("rUJ1");e.exports=class e{constructor(e,t){if(this.options=t||o,this.links=e,this.rules=i.normal,this.options.renderer=this.options.renderer||new r,this.renderer=this.options.renderer,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.pedantic?this.rules=i.pedantic:this.options.gfm&&(this.options.breaks?this.rules=i.breaks:this.rules=i.gfm)}static get rules(){return i}static output(t,n,r){return new e(n,r).output(t)}output(t){let n,r,o,i,c,l,u="";for(;t;)if(c=this.rules.escape.exec(t))t=t.substring(c[0].length),u+=a(c[1]);else if(c=this.rules.tag.exec(t))!this.inLink&&/^/i.test(c[0])&&(this.inLink=!1),!this.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(c[0])?this.inRawBlock=!0:this.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(c[0])&&(this.inRawBlock=!1),t=t.substring(c[0].length),u+=this.renderer.html(this.options.sanitize?this.options.sanitizer?this.options.sanitizer(c[0]):a(c[0]):c[0]);else if(c=this.rules.link.exec(t)){const r=s(c[2],"()");if(r>-1){const e=(0===c[0].indexOf("!")?5:4)+c[1].length+r;c[2]=c[2].substring(0,r),c[0]=c[0].substring(0,e).trim(),c[3]=""}t=t.substring(c[0].length),this.inLink=!0,o=c[2],this.options.pedantic?(n=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(o))?(o=n[1],i=n[3]):i="":i=c[3]?c[3].slice(1,-1):"",o=o.trim().replace(/^<([\s\S]*)>$/,"$1"),u+=this.outputLink(c,{href:e.escapes(o),title:e.escapes(i)}),this.inLink=!1}else if((c=this.rules.reflink.exec(t))||(c=this.rules.nolink.exec(t))){if(t=t.substring(c[0].length),n=(c[2]||c[1]).replace(/\s+/g," "),!(n=this.links[n.toLowerCase()])||!n.href){u+=c[0].charAt(0),t=c[0].substring(1)+t;continue}this.inLink=!0,u+=this.outputLink(c,n),this.inLink=!1}else if(c=this.rules.strong.exec(t))t=t.substring(c[0].length),u+=this.renderer.strong(this.output(c[4]||c[3]||c[2]||c[1]));else if(c=this.rules.em.exec(t))t=t.substring(c[0].length),u+=this.renderer.em(this.output(c[6]||c[5]||c[4]||c[3]||c[2]||c[1]));else if(c=this.rules.code.exec(t))t=t.substring(c[0].length),u+=this.renderer.codespan(a(c[2].trim(),!0));else if(c=this.rules.br.exec(t))t=t.substring(c[0].length),u+=this.renderer.br();else if(c=this.rules.del.exec(t))t=t.substring(c[0].length),u+=this.renderer.del(this.output(c[1]));else if(c=this.rules.autolink.exec(t))t=t.substring(c[0].length),o="@"===c[2]?"mailto:"+(r=a(this.mangle(c[1]))):r=a(c[1]),u+=this.renderer.link(o,null,r);else if(this.inLink||!(c=this.rules.url.exec(t))){if(c=this.rules.text.exec(t))t=t.substring(c[0].length),this.inRawBlock?u+=this.renderer.text(this.options.sanitize?this.options.sanitizer?this.options.sanitizer(c[0]):a(c[0]):c[0]):u+=this.renderer.text(a(this.smartypants(c[0])));else if(t)throw new Error("Infinite loop on byte: "+t.charCodeAt(0))}else{if("@"===c[2])o="mailto:"+(r=a(c[0]));else{do{l=c[0],c[0]=this.rules._backpedal.exec(c[0])[0]}while(l!==c[0]);r=a(c[0]),o="www."===c[1]?"http://"+r:r}t=t.substring(c[0].length),u+=this.renderer.link(o,null,r)}return u}static escapes(t){return t?t.replace(e.rules._escapes,"$1"):t}outputLink(e,t){const n=t.href,r=t.title?a(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,a(e[1]))}smartypants(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e}mangle(e){if(!this.options.mangle)return e;const t=e.length;let n,r="",o=0;for(;o.5&&(n="x"+n.toString(16)),r+="&#"+n+";";return r}}},mG1W:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("UxO+"),o=n("MEpN"),i=n("Vb5C"),s=function(e,t){return function(n){Array.isArray(e)||(e=[e]);for(var r=0,o=e.length;r1&&void 0!==arguments[1]?arguments[1]:1;return function(n){var o=r.Selection.findFrom(n.doc.resolve(e),t,!0);return o?n.setSelection(o):n}},l=function(e){return e.type&&e.type.spec.selectable},u=function(e,t,n){return function(e){return l(e)&&e.type.isLeaf}(e)?n.setSelection(new r.NodeSelection(n.doc.resolve(t))):c(t)(n)},p=function(e,t,n){return function(r){var o="number"==typeof t,i=r.selection.$from,c=o?r.doc.resolve(t):h(r.selection)?r.doc.resolve(i.pos+1):i,p=c.parent;if(h(r.selection)&&n&&r!==(r=a(e)(r)))return r;if(w(p)&&r!==(r=s(p.type,e)(r))){var d=l(e)?c.before(c.depth):c.pos;return u(e,d,r)}if(b(c,e)){r.insert(c.pos,e);var m=o?c.pos:l(e)?r.selection.$anchor.pos-1:r.selection.$anchor.pos;return f(u(e,m,r))}for(var v=c.depth;v>0;v--){var g=c.after(v),y=r.doc.resolve(g);if(b(y,e))return r.insert(g,e),f(u(e,g,r))}return r}},h=function(e){return e instanceof r.NodeSelection},d=function(e,t){return Array.isArray(e)&&e.indexOf(t.type)>-1||t.type===e},f=function(e){return Object.assign(Object.create(e),e).setTime(Date.now())},m=function(e,t){return function(n){var r=n.doc.nodeAt(e),o=n.doc.resolve(e);if(v(o,t)){var i=(n=n.replaceWith(e,e+r.nodeSize,t)).selection.$from.pos-1;return n=c(Math.max(i,0),-1)(n),n=c(n.selection.$from.start())(n),f(n)}return n}},v=function(e,t){var n=e.node(e.depth);return n&&n.type.validContent(t instanceof o.Fragment?t:o.Fragment.from(t))},g=function(e){return function(t){var n=t.doc.nodeAt(e);return f(t.delete(e,e+n.nodeSize))}},y=function(e){if(e.cached.tableNodeTypes)return e.cached.tableNodeTypes;var t={};return Object.keys(e.nodes).forEach(function(n){var r=e.nodes[n];r.spec.tableRole&&(t[r.spec.tableRole]=r)}),e.cached.tableNodeTypes=t,t},b=function(e,t){var n=e.index();return t instanceof o.Fragment?e.parent.canReplace(n,n,t):t instanceof o.Node&&e.parent.canReplaceWith(n,n,t.type)},w=function(e){return!e||"paragraph"===e.type.name&&2===e.nodeSize},S=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t?e.createChecked(null,t):e.createAndFill()},x=function(e){return function(t){for(var n=i.TableMap.get(t.$anchorCell.node(-1)),r=t.$anchorCell.start(-1),o=n.cellsInRect(e),s=n.cellsInRect(n.rectBetween(t.$anchorCell.pos-r,t.$headCell.pos-r)),a=0,c=o.length;an[0]?-1:1,i=e.splice(t[0],t.length),s=i.length%2==0?1:0,a=void 0;return a=-1===r&&1===o?n[0]-1:1===r&&-1===o?n[n.length-1]-s+1:-1===o?n[0]:n[n.length-1]-s,e.splice.apply(e,[a,0].concat(i)),e},N=function(e,t,n,r){var o="Target position is invalid, you can't move the "+r+" "+e+" to "+t+", the target can't be split. You could use tryToFit option.";if(1===(e>t?-1:1)){if(-1!==n.slice(0,n.length-1).indexOf(t))throw new Error(o)}else if(-1!==n.slice(1).indexOf(t))throw new Error(o);return!0},T=function(e){return function(t){var n=t.$from;return D(n,e)}},D=function(e,t){for(var n=e.depth;n>0;n--){var r=e.node(n);if(t(r))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:r}}},A=function(e,t){return function(n){var r=T(e)(n);if(r)return P(r.pos,t)}},E=function(e){return function(t){return!!T(e)(t)}},R=function(e){return function(t){return T(function(t){return d(e,t)})(t)}},_=function(e){var t=e.$from.nodeBefore,n=r.Selection.findFrom(e.$from,-1);if(n&&t){var o=R(t.type)(n);return o?o.pos:n.$from.pos}},P=function(e,t){var n=t(e),r=n.node.childNodes[n.offset];return n.node.nodeType===Node.TEXT_NODE?n.node.parentNode:r&&r.nodeType!==Node.TEXT_NODE?r:n.node},$=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!e)throw new Error('Invalid "node" parameter');var n=[];return e.descendants(function(e,r){if(n.push({node:e,pos:r}),!t)return!1}),n},I=function(e,t,n){if(!e)throw new Error('Invalid "node" parameter');if(!t)throw new Error('Invalid "predicate" parameter');return $(e,n).filter(function(e){return t(e.node)})},z=function(e,t,n){return I(e,function(e){return e.type===t},n)};var B=function(e){return T(function(e){return e.type.spec.tableRole&&"table"===e.type.spec.tableRole})(e)},F=function(e){return e instanceof i.CellSelection},V=function(e){if(F(e)){var t=i.TableMap.get(e.$anchorCell.node(-1));return x({left:0,right:t.width,top:0,bottom:t.height})(e)}return!1},j=function(e){return function(t){var n=B(t);if(n){var r=i.TableMap.get(n.node);return(Array.isArray(e)?e:Array.from([e])).reduce(function(e,t){if(t>=0&&t<=r.width-1){var o=r.cellsInRect({left:t,right:t+1,top:0,bottom:r.height});return e.concat(o.map(function(e){var t=n.node.nodeAt(e),r=e+n.start;return{pos:r,start:r+1,node:t}}))}},[])}}},L=function(e){return function(t){var n=B(t);if(n){var r=i.TableMap.get(n.node);return(Array.isArray(e)?e:Array.from([e])).reduce(function(e,t){if(t>=0&&t<=r.height-1){var o=r.cellsInRect({left:0,right:r.width,top:t,bottom:t+1});return e.concat(o.map(function(e){var t=n.node.nodeAt(e),r=e+n.start;return{pos:r,start:r+1,node:t}}))}},[])}}},q=function(e){return function(t,n){return function(r){var o=B(r.selection),s="row"===e;if(o){var a=i.TableMap.get(o.node);if(t>=0&&t<(s?a.height:a.width)){var c=s?0:t,l=s?t:0,u=s?a.width:t+1,p=s?t+1:a.height;if(n){var h=Z(r.selection.$from);if(!h)return r;var d=a.findCell(h.pos-o.start);s?(l=Math.min(l,d.top),p=Math.max(p,d.bottom)):(c=Math.min(c,d.left),u=Math.max(u,d.right))}var m=a.cellsInRect({left:c,top:l,right:s?u:c+1,bottom:s?l+1:p}),v=p-l==1?m:a.cellsInRect({left:s?c:u-1,top:s?p-1:l,right:u,bottom:p}),g=o.start+m[0],y=o.start+v[v.length-1],b=r.doc.resolve(g),w=r.doc.resolve(y);return f(r.setSelection(new i.CellSelection(w,b)))}}return r}}},W=q("column"),K=q("row"),J=function(e){return function(t){var n=B(t.selection);if(n){var r=i.TableMap.get(n.node);if(e>=0&&e<=r.height){for(var o=n.node,s=y(o.type.schema),a=n.start,c=0;c1&&n+o>e})(t);d.push.apply(d,function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t=0;m--)f(m);d.length&&d.forEach(function(e){t=X(e,{rowspan:e.node.attrs.rowspan+1})(t)})}return p(s.row.create(l.attrs,u),a)(t)}}return t}},H=function(e){return function(t){var n=B(t.selection);if(n){var r=i.TableMap.get(n.node);if(0===e&&1===r.width)return G(t);if(e>=0&&e<=r.width)return i.removeColumn(t,{map:r,tableStart:n.start,table:n.node},e),f(t)}return t}},U=function(e){return function(t){var n=B(t.selection);if(n){var r=i.TableMap.get(n.node);if(0===e&&1===r.height)return G(t);if(e>=0&&e<=r.height)return i.removeRow(t,{map:r,tableStart:n.start,table:n.node},e),f(t)}return t}},G=function(e){for(var t=e.selection.$from,n=t.depth;n>0;n--){if("table"===t.node(n).type.spec.tableRole)return f(e.delete(t.before(n),t.after(n)))}return e},X=function(e,t){return function(n){return e?(n.setNodeMarkup(e.pos,null,Object.assign({},e.node.attrs,t)),f(n)):n}},Z=function(e){return D(e,function(e){return e.type.spec.tableRole&&/cell/i.test(e.type.spec.tableRole)})},Y=function(e){var t=Z(e);if(t){var n=function(e){return D(e,function(e){return e.type.spec.tableRole&&/table/i.test(e.type.spec.tableRole)})}(e),r=i.TableMap.get(n.node),o=t.pos-n.start;return r.rectBetween(o,o)}},Q=function(e,t){return function(n){var r=[],o=L(e)(n.selection);if(o)for(var i=o.length-1;i>=0;i--)t(o[i],n)&&r.push(o[i]);return r}},ee=function(e){return function(t){for(var n=e,r=e,o=function(e){var o=j(e)(t.selection);o&&o.forEach(function(t){var o=t.node.attrs.colspan+e-1;o>=n&&(n=e),o>r&&(r=o)})},i=e;i>=0;i--)o(i);var s=function(e){var n=j(e)(t.selection);n&&n.forEach(function(t){var n=t.node.attrs.colspan+e-1;t.node.attrs.colspan>1&&n>r&&(r=n)})};for(i=e;i<=r;i++)s(i);var a=[];for(i=n;i<=r;i++){var c=j(i)(t.selection);c&&c.length&&a.push(i)}n=a[0],r=a[a.length-1];for(var l=j(n)(t.selection),u=L(0)(t.selection),p=t.doc.resolve(l[l.length-1].pos),h=void 0,d=r;d>=n;d--){var f=j(d)(t.selection);if(f&&f.length){for(var m=u.length-1;m>=0;m--)if(u[m].pos===f[0].pos){h=f[0];break}if(h)break}}return{$anchor:p,$head:t.doc.resolve(h.pos),indexes:a}}},te=function(e){return function(t){for(var n=e,r=e,o=function(e){L(e)(t.selection).forEach(function(t){var o=t.node.attrs.rowspan+e-1;o>=n&&(n=e),o>r&&(r=o)})},i=e;i>=0;i--)o(i);var s=function(e){L(e)(t.selection).forEach(function(t){var n=t.node.attrs.rowspan+e-1;t.node.attrs.rowspan>1&&n>r&&(r=n)})};for(i=e;i<=r;i++)s(i);var a=[];for(i=n;i<=r;i++){var c=L(i)(t.selection);c&&c.length&&a.push(i)}n=a[0],r=a[a.length-1];for(var l=L(n)(t.selection),u=j(0)(t.selection),p=t.doc.resolve(l[l.length-1].pos),h=void 0,d=r;d>=n;d--){var f=L(d)(t.selection);if(f&&f.length){for(var m=u.length-1;m>=0;m--)if(u[m].pos===f[0].pos){h=f[0];break}if(h)break}}return{$anchor:p,$head:t.doc.resolve(h.pos),indexes:a}}};t.isNodeSelection=h,t.canInsert=b,t.convertTableNodeToArrayOfRows=C,t.convertArrayOfRowsToTableNode=O,t.findParentNode=T,t.findParentNodeClosestToPos=D,t.findParentDomRef=A,t.hasParentNode=E,t.findParentNodeOfType=R,t.findParentNodeOfTypeClosestToPos=function(e,t){return D(e,function(e){return d(t,e)})},t.hasParentNodeOfType=function(e){return function(t){return E(function(t){return d(e,t)})(t)}},t.findParentDomRefOfType=function(e,t){return function(n){return A(function(t){return d(e,t)},t)(n)}},t.findSelectedNodeOfType=function(e){return function(t){if(h(t)){var n=t.node,r=t.$from;if(d(e,n))return{node:n,pos:r.pos,depth:r.depth}}}},t.findPositionOfNodeBefore=_,t.findDomRefAtPos=P,t.flatten=$,t.findChildren=I,t.findTextNodes=function(e,t){return I(e,function(e){return e.isText},t)},t.findInlineNodes=function(e,t){return I(e,function(e){return e.isInline},t)},t.findBlockNodes=function(e,t){return I(e,function(e){return e.isBlock},t)},t.findChildrenByAttr=function(e,t,n){return I(e,function(e){return!!t(e.attrs)},n)},t.findChildrenByType=z,t.findChildrenByMark=function(e,t,n){return I(e,function(e){return t.isInSet(e.marks)},n)},t.contains=function(e,t){return!!z(e,t).length},t.findTable=B,t.isCellSelection=F,t.getSelectionRect=function(e){if(F(e)){var t=e.$anchorCell.start(-1);return i.TableMap.get(e.$anchorCell.node(-1)).rectBetween(e.$anchorCell.pos-t,e.$headCell.pos-t)}},t.isColumnSelected=function(e){return function(t){if(F(t)){var n=i.TableMap.get(t.$anchorCell.node(-1));return x({left:e,right:e+1,top:0,bottom:n.height})(t)}return!1}},t.isRowSelected=function(e){return function(t){if(F(t)){var n=i.TableMap.get(t.$anchorCell.node(-1));return x({left:0,right:n.width,top:e,bottom:e+1})(t)}return!1}},t.isTableSelected=V,t.getCellsInColumn=j,t.getCellsInRow=L,t.getCellsInTable=function(e){var t=B(e);if(t){var n=i.TableMap.get(t.node);return n.cellsInRect({left:0,right:n.width,top:0,bottom:n.height}).map(function(e){var n=t.node.nodeAt(e),r=e+t.start;return{pos:r,start:r+1,node:n}})}},t.selectColumn=W,t.selectRow=K,t.selectTable=function(e){var t=B(e.selection);if(t){var n=i.TableMap.get(t.node).map;if(n&&n.length){var r=t.start+n[0],o=t.start+n[n.length-1],s=e.doc.resolve(r),a=e.doc.resolve(o);return f(e.setSelection(new i.CellSelection(a,s)))}}return e},t.emptyCell=function(e,t){return function(n){if(e){var r=y(t).cell.createAndFill().content;if(!e.node.content.eq(r))return n.replaceWith(e.pos+1,e.pos+e.node.nodeSize,r),f(n)}return n}},t.addColumnAt=function(e){return function(t){var n=B(t.selection);if(n){var r=i.TableMap.get(n.node);if(e>=0&&e<=r.width)return f(i.addColumn(t,{map:r,tableStart:n.start,table:n.node},e))}return t}},t.moveRow=function(e,t,n){return function(r){var o=Object.assign({tryToFit:!1,direction:0},n),i=B(r.selection);if(!i)return r;var s=te(e)(r).indexes,a=te(t)(r).indexes;if(s.indexOf(t)>-1)return r;!o.tryToFit&&a.length>1&&N(e,t,a,"row");var c=function(e,t,n,r){var o=C(e.node);return o=M(o,t,n,r),O(e.node,o)}(i,s,a,o.direction);return f(r).replaceWith(i.pos,i.pos+i.node.nodeSize,c)}},t.moveColumn=function(e,t,n){return function(r){var o=Object.assign({tryToFit:!1,direction:0},n),i=B(r.selection);if(!i)return r;var s=ee(e)(r).indexes,a=ee(t)(r).indexes;if(s.indexOf(t)>-1)return r;!o.tryToFit&&a.length>1&&N(e,t,a,"column");var c=function(e,t,n,r){var o=k(C(e.node));return o=M(o,t,n,r),o=k(o),O(e.node,o)}(i,s,a,o.direction);return f(r).replaceWith(i.pos,i.pos+i.node.nodeSize,c)}},t.addRowAt=function(e,t){return function(n){var r=B(n.selection);if(r){var o=i.TableMap.get(r.node),s=e-1;if(t&&s>=0)return f(J(s)(n));if(e>=0&&e<=o.height)return f(i.addRow(n,{map:o,tableStart:r.start,table:r.node},e))}return n}},t.cloneRowAt=J,t.removeColumnAt=H,t.removeRowAt=U,t.removeTable=G,t.removeSelectedColumns=function(e){var t=e.selection;if(V(t))return G(e);if(F(t)){var n=B(t);if(n){var r=i.TableMap.get(n.node),o=r.rectBetween(t.$anchorCell.pos-n.start,t.$headCell.pos-n.start);if(0==o.left&&o.right==r.width)return!1;for(var s=Object.assign({},o,{map:r,table:n.node,tableStart:n.start}),a=s.right-1;i.removeColumn(e,s,a),a!==s.left;a--)s.table=s.tableStart?e.doc.nodeAt(s.tableStart-1):e.doc,s.map=i.TableMap.get(s.table);return f(e)}}return e},t.removeSelectedRows=function(e){var t=e.selection;if(V(t))return G(e);if(F(t)){var n=B(t);if(n){var r=i.TableMap.get(n.node),o=r.rectBetween(t.$anchorCell.pos-n.start,t.$headCell.pos-n.start);if(0==o.top&&o.bottom==r.height)return!1;for(var s=Object.assign({},o,{map:r,table:n.node,tableStart:n.start}),a=s.bottom-1;i.removeRow(e,s,a),a!==s.top;a--)s.table=s.tableStart?e.doc.nodeAt(s.tableStart-1):e.doc,s.map=i.TableMap.get(s.table);return f(e)}}return e},t.removeColumnClosestToPos=function(e){return function(t){var n=Y(e);return n?H(n.left)(c(e.pos)(t)):t}},t.removeRowClosestToPos=function(e){return function(t){var n=Y(e);return n?U(n.top)(c(e.pos)(t)):t}},t.forEachCellInColumn=function(e,t,n){return function(o){var i=j(e)(o.selection);if(i){for(var s=i.length-1;s>=0;s--)o=t(i[s],o);if(n){var a=o.doc.resolve(o.mapping.map(i[i.length-1].pos));o.setSelection(r.Selection.near(a))}return f(o)}return o}},t.forEachCellInRow=function(e,t,n){return function(o){var i=L(e)(o.selection);if(i){for(var s=i.length-1;s>=0;s--)o=t(i[s],o);if(n){var a=o.doc.resolve(o.mapping.map(i[i.length-1].pos));o.setSelection(r.Selection.near(a))}}return o}},t.setCellAttrs=X,t.createTable=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:3,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,i=y(e),s=i.cell,a=i.header_cell,c=i.row,l=i.table,u=[],p=[],h=0;he.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!e||!t)return!1;var n=e.parent.childAfter(e.parentOffset);if(!n.node)return!1;var r=n.node.marks.find(function(e){return e.type===t});if(!r)return!1;for(var o=e.index(),i=e.start()+n.offset,s=o+1,a=i+n.node.nodeSize;o>0&&r.isInSet(e.parent.child(o-1).marks);)o-=1,i-=e.parent.child(o).nodeSize;for(;s2&&void 0!==arguments[2]?arguments[2]:{},o=Object(r.findSelectedNodeOfType)(t)(e.selection)||Object(r.findParentNode)(function(e){return e.type===t})(e.selection);return Object.keys(n).length&&o?o.node.hasMarkup(t,s(s({},o.node.attrs),n)):!!o}},"qd4/":function(e,t,n){"use strict";n.d(t,"a",function(){return r.b}),n.d(t,"b",function(){return r.c}),n.d(t,"k",function(){return r.e}),n.d(t,"r",function(){return r.f}),n.d(t,"d",function(){return c}),n.d(t,"l",function(){return l}),n.d(t,"m",function(){return a}),n.d(t,"o",function(){return u.c}),n.d(t,"u",function(){return u.e}),n.d(t,"c",function(){return f}),n.d(t,"e",function(){return m}),n.d(t,"f",function(){return y}),n.d(t,"g",function(){return v}),n.d(t,"h",function(){return g}),n.d(t,"i",function(){return b}),n.d(t,"j",function(){return w}),n.d(t,"n",function(){return S}),n.d(t,"p",function(){return x}),n.d(t,"q",function(){return C}),n.d(t,"s",function(){return O}),n.d(t,"t",function(){return M});var r=n("ABBN"),o=n("CsC6"),i=n("MEpN");function s(e,t){return function(n,r){var s=n.selection,a=s.$from,c=s.$to,l=a.blockRange(c),u=!1,p=l;if(!l)return!1;if(l.depth>=2&&a.node(l.depth-1).type.compatibleContent(e)&&0==l.startIndex){if(0==a.index(l.depth-1))return!1;var h=n.doc.resolve(l.start-2);p=new i.NodeRange(h,h,l.depth),l.endIndex=0;c--)a=i.Fragment.from(n[c].type.create(n[c].attrs,a));e.step(new o.b(t.start-(r?2:0),t.end,t.start,t.end,new i.Slice(a,0,0),n.length,!0));for(var l=0,u=0;u0,h=s.depth-(p?1:2);h>=s.depth-3;h--)u=i.Fragment.from(s.node(h).copy(u));u=u.append(i.Fragment.from(e.createAndFill()));var d=t.tr.replace(s.before(p?null:-1),s.after(-3),new i.Slice(u,p?3:2,2));d.setSelection(t.selection.constructor.near(d.doc.resolve(s.pos+(p?3:2)))),n(d.scrollIntoView())}return!0}var f=a.pos==s.end()?l.contentMatchAt(0).defaultType:null,m=t.tr.delete(s.pos,a.pos),v=f&&[null,{type:f}];return!!Object(o.g)(m.doc,s.pos,2,v)&&(n&&n(m.split(s.pos,2,v).scrollIntoView()),!0)}}function c(e){return function(t,n){var r=t.selection,s=r.$from,a=r.$to,c=s.blockRange(a,function(t){return t.childCount&&t.firstChild.type==e});return!!c&&(!n||(s.node(c.depth-1).type==e?function(e,t,n,r){var s=e.tr,a=r.end,c=r.$to.end(r.depth);al;c--)a-=s.child(c).nodeSize,r.delete(a-1,a+1);var u=r.doc.resolve(n.start),p=u.nodeAfter,h=0==n.startIndex,d=n.endIndex==s.childCount,f=u.node(-1),m=u.index(-1);if(!f.canReplace(m+(h?0:1),m+1,p.content.append(d?i.Fragment.empty:i.Fragment.from(s))))return!1;var v=u.pos,g=v+p.nodeSize;return r.step(new o.b(v-(h?1:0),g+(d?1:0),v+1,g-1,new i.Slice((h?i.Fragment.empty:i.Fragment.from(s.copy(i.Fragment.empty))).append(d?i.Fragment.empty:i.Fragment.from(s.copy(i.Fragment.empty))),h?0:1,d?0:1),h?0:1)),t(r.scrollIntoView()),!0}(t,n,c)))}}function l(e){return function(t,n){var r=t.selection,s=r.$from,a=r.$to,c=s.blockRange(a,function(t){return t.childCount&&t.firstChild.type==e});if(!c)return!1;var l=c.startIndex;if(0==l)return!1;var u=c.parent,p=u.child(l-1);if(p.type!=e)return!1;if(n){var h=p.lastChild&&p.lastChild.type==u.type,d=i.Fragment.from(h?e.create():null),f=new i.Slice(i.Fragment.from(e.create(null,i.Fragment.from(u.type.create(null,d)))),h?3:1,0),m=c.start,v=c.end;n(t.tr.step(new o.b(m-(h?3:1),v,m,v,f,1,!0)).scrollIntoView())}return!0}}var u=n("+V57"),p=n("UxO+"),h=n("oV9I"),d=n("mG1W"); +/*! + * tiptap-commands v1.14.5 + * (c) 2020 überdosis GbR (limited liability) + * @license MIT + */ +function f(e=""){return(t,n)=>{const{$from:r}=t.selection,{pos:o}=r.pos;return n(t.tr.insertText(e,o)),!0}}function m(e,t,n){return new u.a(e,(e,r,o,i)=>{const s=n instanceof Function?n(r):n,{tr:a}=e,c=r.length-1;let l=i,u=o;if(r[c]){const n=o+r[0].indexOf(r[c-1]),s=n+r[c-1].length-1,p=n+r[c-1].lastIndexOf(r[c]),h=p+r[c].length;if(function(e,t,n){let r=[];return n.doc.nodesBetween(e,t,(e,t)=>{r=[...r,...e.marks.map(n=>({start:t,end:t+e.nodeSize,mark:n}))]}),r}(o,i,e).filter(e=>{const{excluded:n}=e.mark.type;return n.find(e=>e.name===t.name)}).filter(e=>e.end>n).length)return!1;hn&&a.delete(n,p),l=(u=n)+r[c].length}return a.addMark(u,l,t.create(s)),a.removeStoredMark(t),a})}function v(e,t,n){return new u.a(e,(e,r,o,i)=>{const s=n instanceof Function?n(r):n,{tr:a}=e;return r[0]&&a.replaceWith(o-1,i,t.create(s)),a})}function g(e,t,n){const r=o=>{const s=[];return o.forEach(o=>{if(o.isText){const{text:r}=o;let i,a=0;do{if(i=e.exec(r)){const e=i.index,r=e+i[0].length,c=n instanceof Function?n(i[0]):n;e>0&&s.push(o.cut(a,e)),s.push(o.cut(e,r).mark(t.create(c).addToSet(o.marks))),a=r}}while(i);anew i.Slice(r(e.content),e.openStart,e.openEnd)}})}function y(e,t,n){const r=(o,s)=>{const a=[];return o.forEach(o=>{if(o.isText){const{text:r,marks:i}=o;let c,l=0;const u=!!i.filter(e=>"link"===e.type.name)[0];for(;!u&&null!==(c=e.exec(r));)if(s&&s.type.allowsMarkType(t)&&c[1]){const e=c.index,r=e+c[0].length,i=e+c[0].indexOf(c[1]),s=i+c[1].length,u=n instanceof Function?n(c):n;e>0&&a.push(o.cut(l,e)),a.push(o.cut(i,s).mark(t.create(u).addToSet(o.marks))),l=r}lnew i.Slice(r(e.content),e.openStart,e.openEnd)}})}function b(e){return(t,n)=>{const{tr:r,selection:o}=t;let{from:i,to:s}=o;const{$from:a,empty:c}=o;if(c){const t=Object(h.b)(a,e);i=t.from,s=t.to}return r.removeMark(i,s,e),n(r)}}function w(e=null,t,n={}){return(r,o)=>{const{$from:i,$to:s}=r.selection,a=i.index(),c=e?e.from:i.pos,l=e?e.to:s.pos;return!!i.parent.canReplaceWith(a,a,t)&&(o&&o(r.tr.replaceWith(c,l,t.create(n))),!0)}}function S(e){return function(t,n){const{$from:r,$to:o,node:s}=t.selection;if(s&&s.isBlock||r.depth<2||!r.sameParent(o))return!1;const a=r.node(-1);if(a.type!=e)return!1;if(0==r.parent.content.size){if(2==r.depth||r.node(-3).type!=e||r.index(-2)!=r.node(-2).childCount-1)return!1;if(n){let o=i.Fragment.empty;const s=r.index(-1)>0;for(let e=r.depth-(s?1:2);e>=r.depth-3;e--)o=i.Fragment.from(r.node(e).copy(o));o=o.append(i.Fragment.from(e.createAndFill()));const a=t.tr.replace(r.before(s?null:-1),r.after(-3),new i.Slice(o,s?3:2,2));a.setSelection(t.selection.constructor.near(a.doc.resolve(r.pos+(s?3:2)))),n(a.scrollIntoView())}return!0}const c=o.pos==r.end()?a.contentMatchAt(r.indexAfter(-1)).defaultType:null,l=t.tr.delete(r.pos,o.pos);let u=c&&[{type:e},{type:c}];return u||(u=[{type:e},null]),!!function(e,t,n=1,r){const o=e.resolve(t),i=o.depth-n,s=r&&r[r.length-1]||o.parent;if(i<0||o.parent.type.spec.isolating||!o.parent.canReplace(o.index(),o.parent.childCount)||!s.type.validContent(o.parent.content.cutByIndex(o.index(),o.parent.childCount)))return!1;for(let l=o.depth-1,u=n-2;l>i;l--,u--){const e=o.node(l),t=o.index(l);if(e.type.spec.isolating)return!1;let n=e.content.cutByIndex(t,e.childCount);const i=r&&r[u]||e;if(i!=e&&(n=n.replaceChild(0,i.type.create(i.attrs))),!e.canReplace(t+1,e.childCount))return!1}const a=o.indexAfter(i),c=r&&r[0];return o.node(i).canReplaceWith(a,a,c?c.type:o.node(i+1).type)}(l.doc,r.pos,2,u)&&(n&&n(l.split(r.pos,2,u).scrollIntoView()),!0)}}function x(e,t,n={}){return(o,i,s)=>{return Object(h.f)(o,e,n)?Object(r.e)(t)(o,i,s):Object(r.e)(e,n)(o,i,s)}}function k(e,t){return e.type===t.nodes.bullet_list||e.type===t.nodes.ordered_list||e.type===t.nodes.todo_list}function C(e,t){return(n,r,o)=>{const{schema:i,selection:a}=n,{$from:l,$to:u}=a,p=l.blockRange(u);if(!p)return!1;const h=Object(d.findParentNode)(e=>k(e,i))(a);if(p.depth>=1&&h&&p.depth-h.depth<=1){if(h.node.type===e)return c(t)(n,r,o);if(k(h.node,i)&&e.validContent(h.node.content)){const{tr:t}=n;return t.setNodeMarkup(h.pos,e),r&&r(t),!1}}return s(e)(n,r,o)}}function O(e,t={}){return(n,o,i)=>{return Object(h.f)(n,e,t)?Object(r.d)(n,o):Object(r.g)(e,t)(n,o,i)}}function M(e,t){return(n,r)=>{const{tr:o,selection:i,doc:s}=n;let{from:a,to:c}=i;const{$from:l,empty:u}=i;if(u){const t=Object(h.b)(l,e);a=t.from,c=t.to}return s.rangeHasMark(a,c,e)&&o.removeMark(a,c,e),o.addMark(a,c,e.create(t)),r(o)}}},rUJ1:function(e,t){const n=/[&<>"']/,r=/[&<>"']/g,o=/[<>"']|&(?!#?\w+;)/,i=/[<>"']|&(?!#?\w+;)/g,s={"&":"&","<":"<",">":">",'"':""","'":"'"},a=e=>s[e];const c=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function l(e){return e.replace(c,(e,t)=>"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):"")}const u=/(^|[^\[])\^/g;const p=/[^\w:]/g,h=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;const d={},f=/^[^:]+:\/*[^/]*$/,m=/^([^:]+:)[\s\S]*$/,v=/^([^:]+:\/*[^/]*)[\s\S]*$/;function g(e,t){d[" "+e]||(f.test(e)?d[" "+e]=e+"/":d[" "+e]=y(e,"/",!0));const n=-1===(e=d[" "+e]).indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(m,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(v,"$1")+t:e+t}function y(e,t,n){const r=e.length;if(0===r)return"";let o=0;for(;o(r=(r=r.source||r).replace(u,"$1"),e=e.replace(t,r),n),getRegex:()=>new RegExp(e,t)};return n},cleanUrl:function(e,t,n){if(e){let e;try{e=decodeURIComponent(l(n)).replace(p,"").toLowerCase()}catch(e){return null}if(0===e.indexOf("javascript:")||0===e.indexOf("vbscript:")||0===e.indexOf("data:"))return null}t&&!h.test(n)&&(n=g(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(e){return null}return n},resolveUrl:g,noopTest:{exec:function(){}},merge:function(e){let t,n,r=1;for(;r{let r=!1,o=t;for(;--o>=0&&"\\"===n[o];)r=!r;return r?"|":" |"}).split(/ \|/);let r=0;if(n.length>t)n.splice(t);else for(;n.lengthc.bottom-k(r,"bottom")&&(u=t.bottom-c.bottom+k(o,"bottom")),t.leftc.right-k(r,"right")&&(l=t.right-c.right+k(o,"right")),l||u)if(a)i.defaultView.scrollBy(l,u);else{var p=s.scrollLeft,h=s.scrollTop;u&&(s.scrollTop+=u),l&&(s.scrollLeft+=l);var f=s.scrollLeft-p,m=s.scrollTop-h;t={left:t.left-f,top:t.top-m,right:t.right-f,bottom:t.bottom-m}}if(a)break}}function M(e){for(var t=[],n=e.ownerDocument;e&&(t.push({dom:e,top:e.scrollTop,left:e.scrollLeft}),e!=n);e=d(e));return t}function N(e,t){for(var n=0;n=a){s=Math.max(h.bottom,s),a=Math.min(h.top,a);var d=h.left>t.left?h.left-t.left:h.right=(h.left+h.right)/2?1:0));continue}}!n&&(t.left>=h.right&&t.top>=h.top||t.left>=h.left&&t.top>=h.bottom)&&(i=l+1)}}return n&&3==n.nodeType?function(e,t){for(var n=e.nodeValue.length,r=document.createRange(),o=0;o=(i.left+i.right)/2?1:0)}}return{node:e,offset:0}}(n,r):!n||o&&1==n.nodeType?{node:e,offset:i}:D(n,r)}function A(e,t){return e.left>=t.left-1&&e.left<=t.right+1&&e.top>=t.top-1&&e.top<=t.bottom+1}function E(e,t){var n,r,o,i,a=e.root;if(a.caretPositionFromPoint)try{var c=a.caretPositionFromPoint(t.left,t.top);c&&(o=(n=c).offsetNode,i=n.offset)}catch(e){}if(!o&&a.caretRangeFromPoint){var l=a.caretRangeFromPoint(t.left,t.top);l&&(o=(r=l).startContainer,i=r.startOffset)}var u,p=a.elementFromPoint(t.left,t.top+1);if(!p||!e.dom.contains(1!=p.nodeType?p.parentNode:p)){var h=e.dom.getBoundingClientRect();if(!A(t,h))return null;if(!(p=function e(t,n,r){var o=t.childNodes.length;if(o&&r.topt.top&&i++}o==e.dom&&i==o.childNodes.length-1&&1==o.lastChild.nodeType&&t.top>o.lastChild.getBoundingClientRect().bottom?u=e.state.doc.content.size:0!=i&&1==o.nodeType&&"BR"==o.childNodes[i-1].nodeName||(u=function(e,t,n,r){for(var o=-1,i=t;i!=e.dom;){var s=e.docView.nearestDesc(i,!0);if(!s)return null;if(s.node.isBlock&&s.parent){var a=s.dom.getBoundingClientRect();if(a.left>r.left||a.top>r.top)o=s.posBefore;else{if(!(a.right-1?o:e.docView.posFromDOM(t,n)}(e,o,i,t))}null==u&&(u=function(e,t,n){var r=D(t,n),o=r.node,i=r.offset,s=-1;if(1==o.nodeType&&!o.firstChild){var a=o.getBoundingClientRect();s=a.left!=a.right&&n.left>(a.left+a.right)/2?1:-1}return e.docView.posFromDOM(o,i,s)}(e,p,t));var m=e.docView.nearestDesc(p,!0);return{pos:u,inside:m?m.posAtStart-m.border:-1}}function R(e,t){var n=e.getClientRects();return n.length?n[t<0?0:n.length-1]:e.getBoundingClientRect()}function _(e,t){var n=e.docView.domFromPos(t),r=n.node,o=n.offset;if(3==r.nodeType&&(s.webkit||s.gecko)){var i=R(f(r,o,o),0);if(s.gecko&&o&&/\s/.test(r.nodeValue[o-1])&&o0&&ol.top&&("up"==n?l.bottomi.bottom-1))return!1}}return!0})}(e,t,n):function(e,t,n){var r=t.selection.$head;if(!r.parent.isTextblock)return!1;var o=r.parentOffset,i=!o,s=o==r.parent.content.size,a=getSelection();return I.test(r.parent.textContent)&&a.modify?$(e,t,function(){var t=a.getRangeAt(0),o=a.focusNode,i=a.focusOffset,s=a.caretBidiLevel;a.modify("move",n,"character");var c=!(r.depth?e.docView.domAfterPos(r.before()):e.dom).contains(1==a.focusNode.nodeType?a.focusNode:a.focusNode.parentNode)||o==a.focusNode&&i==a.focusOffset;return a.removeAllRanges(),a.addRange(t),null!=s&&(a.caretBidiLevel=s),c}):"left"==n||"backward"==n?i:s}(e,t,n))}var j=function(e,t,n,r){this.parent=e,this.children=t,this.dom=n,n.pmViewDesc=this,this.contentDOM=r,this.dirty=0},L={beforePosition:{configurable:!0},size:{configurable:!0},border:{configurable:!0},posBefore:{configurable:!0},posAtStart:{configurable:!0},posAfter:{configurable:!0},posAtEnd:{configurable:!0},contentLost:{configurable:!0}};j.prototype.matchesWidget=function(){return!1},j.prototype.matchesMark=function(){return!1},j.prototype.matchesNode=function(){return!1},j.prototype.matchesHack=function(){return!1},L.beforePosition.get=function(){return!1},j.prototype.parseRule=function(){return null},j.prototype.stopEvent=function(){return!1},L.size.get=function(){for(var e=0,t=0;t0:a)?this.posAtEnd:this.posAtStart},j.prototype.nearestDesc=function(e,t){for(var n=!0,r=e;r;r=r.parentNode){var o=this.getDesc(r);if(o&&(!t||o.node)){if(!n||!o.nodeDOM||(1==o.nodeDOM.nodeType?o.nodeDOM.contains(1==e.nodeType?e:e.parentNode):o.nodeDOM==e))return o;n=!1}}},j.prototype.getDesc=function(e){for(var t=e.pmViewDesc,n=t;n;n=n.parent)if(n==this)return t},j.prototype.posFromDOM=function(e,t,n){for(var r=e;r;r=r.parentNode){var o=this.getDesc(r);if(o)return o.localPosFromDOM(e,t,n)}return-1},j.prototype.descAt=function(e){for(var t=0,n=0;t=l&&t<=c-a.border&&a.node&&a.contentDOM&&this.contentDOM.contains(a.contentDOM))return a.parseRange(e,t,l);e=i;for(var u=s;u>0;u--){var p=this.children[u-1];if(p.size&&p.dom.parentNode==this.contentDOM&&!p.emptyChildAt(1)){r=h(p.dom)+1;break}e-=p.size}-1==r&&(r=0)}if(r>-1&&(c>t||s==this.children.length-1)){t=c;for(var d=s+1;dc&&it){var y=p;p=h,h=y}var b=document.createRange();b.setEnd(h.node,h.offset),b.setStart(p.node,p.offset),d.removeAllRanges(),d.addRange(b)}}},j.prototype.ignoreMutation=function(e){return!this.contentDOM&&"selection"!=e.type},L.contentLost.get=function(){return this.contentDOM&&this.contentDOM!=this.dom&&!this.dom.contains(this.contentDOM)},j.prototype.markDirty=function(e,t){for(var n=0,r=0;r=n:en){var s=n+o.border,a=i-o.border;if(e>=s&&t<=a)return this.dirty=e==n||t==i?2:1,void(e!=s||t!=a||!o.contentLost&&o.dom.parentNode==this.contentDOM?o.markDirty(e-s,t-s):o.dirty=3);o.dirty=3}n=i}this.dirty=2},j.prototype.markParentsDirty=function(){for(var e=1,t=this.parent;t;t=t.parent,e++){var n=1==e?2:1;t.dirty0&&(i=ce(i,0,e,r));for(var a=0;ai;)l.push(o[c++]);var y=i+m.nodeSize;if(m.isText){var b=y;c=0&&!a&&c.syncToMarks(s==n.node.childCount?o.Mark.none:n.node.child(s).marks,r,e),c.placeWidget(t,e,i)},function(t,n,o,s){c.syncToMarks(t.marks,r,e),c.findNodeMatch(t,n,o,s)||c.updateNextNode(t,n,o,e,s)||c.addNode(t,n,o,e,i),i+=t.nodeSize}),c.syncToMarks(q,r,e),this.node.isTextblock&&c.addTextblockHacks(),c.destroyRest(),(c.changed||2==this.dirty)&&(a&&this.protectLocalComposition(e,a),function e(t,n,r){var o=t.firstChild,i=!1;for(var s=0;st+this.node.content.size)){var s=e.root.getSelection(),a=function(e,t){for(;;){if(3==e.nodeType)return e;if(1==e.nodeType&&t>0){if(e.childNodes.length>t&&3==e.childNodes[t].nodeType)return e.childNodes[t];e=e.childNodes[t-1],t=y(e)}else{if(!(1==e.nodeType&&t=n){var u=c.lastIndexOf(t,r-a);if(u>=0&&u+t.length+a>=n)return a+u}}}return-1}(this.node.content,c,o-t,i-t);return l<0?null:{node:a,pos:l,text:c}}}},t.prototype.protectLocalComposition=function(e,t){var n=t.node,r=t.pos,o=t.text;if(!this.getDesc(n)){for(var i=n;i.parentNode!=this.contentDOM;i=i.parentNode){for(;i.previousSibling;)i.parentNode.removeChild(i.previousSibling);for(;i.nextSibling;)i.parentNode.removeChild(i.nextSibling);i.pmViewDesc&&(i.pmViewDesc=null)}var s=new K(this,i,n,o);e.compositionNodes.push(s),this.children=ce(this.children,r,r+o.length,e,s)}},t.prototype.update=function(e,t,n,r){return!(3==this.dirty||!e.sameMarkup(this.node))&&(this.updateInner(e,t,n,r),!0)},t.prototype.updateInner=function(e,t,n,r){this.updateOuterDeco(t),this.node=e,this.innerDeco=n,this.contentDOM&&this.updateChildren(r,this.posAtStart),this.dirty=0},t.prototype.updateOuterDeco=function(e){if(!oe(e,this.outerDeco)){var t=1!=this.nodeDOM.nodeType,n=this.dom;this.dom=te(this.dom,this.nodeDOM,ee(this.outerDeco,this.node,t),ee(e,this.node,t)),this.dom!=n&&(n.pmViewDesc=null,this.dom.pmViewDesc=this),this.outerDeco=e}},t.prototype.selectNode=function(){this.nodeDOM.classList.add("ProseMirror-selectednode"),!this.contentDOM&&this.node.type.spec.draggable||(this.dom.draggable=!0)},t.prototype.deselectNode=function(){this.nodeDOM.classList.remove("ProseMirror-selectednode"),!this.contentDOM&&this.node.type.spec.draggable||this.dom.removeAttribute("draggable")},Object.defineProperties(t.prototype,n),t}(j);function U(e,t,n,r,o){return re(r,t,e),new H(null,e,t,n,r,r,r,o,0)}var G=function(e){function t(t,n,r,o,i,s,a){e.call(this,t,n,r,o,i,null,s,a)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.parseRule=function(){for(var e=this.nodeDOM.parentNode;e&&e!=this.dom&&!e.pmIsDeco;)e=e.parentNode;return{skip:e||!0}},t.prototype.update=function(e,t,n,r){return!(3==this.dirty||0!=this.dirty&&!this.inParent()||!e.sameMarkup(this.node))&&(this.updateOuterDeco(t),0==this.dirty&&e.text==this.node.text||e.text==this.nodeDOM.nodeValue||(this.nodeDOM.nodeValue=e.text,r.trackWrites==this.nodeDOM&&(r.trackWrites=null)),this.node=e,this.dirty=0,!0)},t.prototype.inParent=function(){for(var e=this.parent.contentDOM,t=this.nodeDOM;t;t=t.parentNode)if(t==e)return!0;return!1},t.prototype.domFromPos=function(e){return{node:this.nodeDOM,offset:e}},t.prototype.localPosFromDOM=function(t,n,r){return t==this.nodeDOM?this.posAtStart+Math.min(n,this.node.text.length):e.prototype.localPosFromDOM.call(this,t,n,r)},t.prototype.ignoreMutation=function(e){return"characterData"!=e.type&&"selection"!=e.type},t.prototype.slice=function(e,n,r){var o=this.node.cut(e,n),i=document.createTextNode(o.text);return new t(this.parent,o,this.outerDeco,this.innerDeco,i,i,r)},t}(H),X=function(e){function t(){e.apply(this,arguments)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.parseRule=function(){return{ignore:!0}},t.prototype.matchesHack=function(){return 0==this.dirty},t}(j),Z=function(e){function t(t,n,r,o,i,s,a,c,l,u){e.call(this,t,n,r,o,i,s,a,l,u),this.spec=c}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.update=function(t,n,r,o){if(3==this.dirty)return!1;if(this.spec.update){var i=this.spec.update(t,n);return i&&this.updateInner(t,n,r,o),i}return!(!this.contentDOM&&!t.isLeaf)&&e.prototype.update.call(this,t,n,r,o)},t.prototype.selectNode=function(){this.spec.selectNode?this.spec.selectNode():e.prototype.selectNode.call(this)},t.prototype.deselectNode=function(){this.spec.deselectNode?this.spec.deselectNode():e.prototype.deselectNode.call(this)},t.prototype.setSelection=function(t,n,r,o){this.spec.setSelection?this.spec.setSelection(t,n,r):e.prototype.setSelection.call(this,t,n,r,o)},t.prototype.destroy=function(){this.spec.destroy&&this.spec.destroy(),e.prototype.destroy.call(this)},t.prototype.stopEvent=function(e){return!!this.spec.stopEvent&&this.spec.stopEvent(e)},t.prototype.ignoreMutation=function(t){return this.spec.ignoreMutation?this.spec.ignoreMutation(t):e.prototype.ignoreMutation.call(this,t)},t}(H);function Y(e){e&&(this.nodeName=e)}Y.prototype=Object.create(null);var Q=[new Y];function ee(e,t,n){if(0==e.length)return Q;for(var r=n?Q[0]:new Y,o=[r],i=0;i0&&o>=0;o--){var i=t[o],s=i.node;if(s){if(s!=e.child(r-1))break;n.push(i),--r}}return{nodes:n.reverse(),offset:r}}(e.node.content,e.children);this.preMatched=n.nodes,this.preMatchOffset=n.offset};function ae(e,t){return e.type.side-t.type.side}function ce(e,t,n,r,o){for(var i=[],s=0,a=0;s=n||u<=t?i.push(c):(ln&&i.push(c.slice(n-l,c.size,r)))}return i}function le(e,t){var n=e.selection,o=n.$anchor,i=n.$head,s=t>0?o.max(i):o.min(i),a=s.parent.inlineContent?s.depth?e.doc.resolve(t>0?s.after():s.before()):null:s;return a&&r.Selection.findFrom(a,t)}function ue(e,t){return e.dispatch(e.state.tr.setSelection(t).scrollIntoView()),!0}function pe(e,t,n){var o=e.state.selection;if(!(o instanceof r.TextSelection)){if(o instanceof r.NodeSelection&&o.node.isInline)return ue(e,new r.TextSelection(t>0?o.$to:o.$from));var i=le(e.state,t);return!!i&&ue(e,i)}if(!o.empty||n.indexOf("s")>-1)return!1;if(e.endOfTextblock(t>0?"right":"left")){var a=le(e.state,t);return!!(a&&a instanceof r.NodeSelection)&&ue(e,a)}if(!(s.mac&&n.indexOf("m")>-1)){var c,l=o.$head,u=l.textOffset?null:t<0?l.nodeBefore:l.nodeAfter;if(!u||u.isText)return!1;var p=t<0?l.pos-u.nodeSize:l.pos;return!!(u.isAtom||(c=e.docView.descAt(p))&&!c.contentDOM)&&(r.NodeSelection.isSelectable(u)?ue(e,new r.NodeSelection(t<0?e.state.doc.resolve(l.pos-u.nodeSize):l)):!!s.webkit&&ue(e,new r.TextSelection(e.state.doc.resolve(t<0?p:p+u.nodeSize))))}}function he(e){return 3==e.nodeType?e.nodeValue.length:e.childNodes.length}function de(e){var t=e.pmViewDesc;return t&&0==t.size&&(e.nextSibling||"BR"!=e.nodeName)}function fe(e){var t=e.root.getSelection(),n=t.focusNode,r=t.focusOffset;if(n){var o,i,a=!1;for(s.gecko&&1==n.nodeType&&r0){if(1!=n.nodeType)break;var c=n.childNodes[r-1];if(de(c))o=n,i=--r;else{if(3!=c.nodeType)break;r=(n=c).nodeValue.length}}else{if(ve(n))break;for(var l=n.previousSibling;l&&de(l);)o=n.parentNode,i=h(l),l=l.previousSibling;if(l)r=he(n=l);else{if((n=n.parentNode)==e.dom)break;r=0}}a?ge(e,t,n,r):o&&ge(e,t,o,i)}}function me(e){var t=e.root.getSelection(),n=t.focusNode,r=t.focusOffset;if(n){for(var o,i,s=he(n);;)if(r-1)return!1;if(s.mac&&n.indexOf("m")>-1)return!1;var i=o.$from,a=o.$to;if(!i.parent.inlineContent||e.endOfTextblock(t<0?"up":"down")){var c=le(e.state,t);if(c&&c instanceof r.NodeSelection)return ue(e,c)}if(!i.parent.inlineContent){var l=r.Selection.findFrom(t<0?i:a,t);return!l||ue(e,l)}return!1}function be(e,t){if(!(e.state.selection instanceof r.TextSelection))return!0;var n=e.state.selection,o=n.$head,i=n.$anchor,s=n.empty;if(!o.sameParent(i))return!0;if(!s)return!1;if(e.endOfTextblock(t>0?"forward":"backward"))return!0;var a=!o.textOffset&&(t<0?o.nodeBefore:o.nodeAfter);if(a&&!a.isText){var c=e.state.tr;return t<0?c.delete(o.pos-a.nodeSize,o.pos):c.delete(o.pos,o.pos+a.nodeSize),e.dispatch(c),!0}return!1}function we(e,t,n){e.domObserver.stop(),t.contentEditable=n,e.domObserver.start()}function Se(e,t){var n=t.keyCode,r=function(e){var t="";return e.ctrlKey&&(t+="c"),e.metaKey&&(t+="m"),e.altKey&&(t+="a"),e.shiftKey&&(t+="s"),t}(t);return 8==n||s.mac&&72==n&&"c"==r?be(e,-1)||fe(e):46==n||s.mac&&68==n&&"c"==r?be(e,1)||me(e):13==n||27==n||(37==n?pe(e,-1,r)||fe(e):39==n?pe(e,1,r)||me(e):38==n?ye(e,-1,r)||fe(e):40==n?function(e){if(s.chrome&&!(e.state.selection.$head.parentOffset>0)){var t=e.root.getSelection(),n=t.focusNode,r=t.focusOffset;if(n&&1==n.nodeType&&0==r&&n.firstChild&&"false"==n.firstChild.contentEditable){var o=n.firstChild;we(e,o,!0),setTimeout(function(){return we(e,o,!1)},20)}}}(e)||ye(e,1,r)||me(e):r==(s.mac?"m":"c")&&(66==n||73==n||89==n||90==n))}function xe(e,t){var n=e.root.getSelection(),o=e.state.doc;if(!n.focusNode)return null;var i=e.docView.nearestDesc(n.focusNode),s=i&&0==i.size,a=e.docView.posFromDOM(n.focusNode,n.focusOffset);if(a<0)return null;var c,l,u=o.resolve(a);if(w(n)){for(c=u;i&&!i.node;)i=i.parent;if(i&&i.node.isAtom&&r.NodeSelection.isSelectable(i.node)&&i.parent&&(!i.node.isInline||!function(e,t,n){for(var r=0==t,o=t==y(e);r||o;){if(e==n)return!0;var i=h(e);if(!(e=e.parentNode))return!1;r=r&&0==i,o=o&&i==y(e)}}(n.focusNode,n.focusOffset,i.dom))){var p=i.posBefore;l=new r.NodeSelection(a==p?u:o.resolve(p))}}else{var d=e.docView.posFromDOM(n.anchorNode,n.anchorOffset);if(d<0)return null;c=o.resolve(d)}l||(l=Ae(e,c,u,"pointer"==t||e.state.selection.head=this.preMatchOffset?this.preMatched[e-this.preMatchOffset]:null},se.prototype.destroyBetween=function(e,t){if(e!=t){for(var n=e;n>1,i=Math.min(o,e.length);r-1)s>this.index&&(this.changed=!0,this.destroyBetween(this.index,s)),this.top=this.top.children[this.index];else{var c=J.create(this.top,e[o],t,n);this.top.children.splice(this.index,0,c),this.top=c,this.changed=!0}this.index=0,o++}},se.prototype.findNodeMatch=function(e,t,n,r){var o=-1,i=r<0?void 0:this.getPreMatch(r),s=this.top.children;if(i&&i.matchesNode(e,t,n))o=s.indexOf(i);else for(var a=this.index,c=Math.min(s.length,a+5);a-1&&a+this.preMatchOffset!=o)return!1;var c=s.dom;if(!(this.lock&&(c==this.lock||1==c.nodeType&&c.contains(this.lock.parentNode))&&!(e.isText&&s.node&&s.node.isText&&s.nodeDOM.nodeValue==e.text&&3!=s.dirty&&oe(t,s.outerDeco)))&&s.update(e,t,n,r))return this.destroyBetween(this.index,i),s.dom!=c&&(this.changed=!0),this.index++,!0;break}}return!1},se.prototype.addNode=function(e,t,n,r,o){this.top.children.splice(this.index++,0,H.create(this.top,e,t,n,r,o)),this.changed=!0},se.prototype.placeWidget=function(e,t,n){var r=this.indexDate.now()-50?e.lastSelectionOrigin:null,l=xe(e,c);if(l&&!e.state.selection.eq(l)){var u=e.state.tr.setSelection(l);"pointer"==c?u.setMeta("pointer",!0):"key"==c&&u.scrollIntoView(),e.dispatch(u)}}else{var p=e.state.doc.resolve(t),h=p.sharedDepth(n);t=p.before(h+1),n=e.state.doc.resolve(n).after(h+1);var d,f,m=e.state.selection,v=function(e,t,n){var r=e.docView.parseRange(t,n),i=r.node,a=r.fromOffset,c=r.toOffset,l=r.from,u=r.to,p=e.root.getSelection(),h=null,d=p.anchorNode;if(d&&e.dom.contains(1==d.nodeType?d:d.parentNode)&&(h=[{node:d,offset:p.anchorOffset}],w(p)||h.push({node:p.focusNode,offset:p.focusOffset})),s.chrome&&8===e.lastKeyCode)for(var f=c;f>a;f--){var m=i.childNodes[f-1],v=m.pmViewDesc;if("BR"==m.nodeType&&!v){c=f;break}if(!v||v.size)break}var g=e.state.doc,y=e.someProp("domParser")||o.DOMParser.fromSchema(e.state.schema),b=g.resolve(l),S=null,x=y.parse(i,{topNode:b.parent,topMatch:b.parent.contentMatchAt(b.index()),topOpen:!0,from:a,to:c,preserveWhitespace:!b.parent.type.spec.code||"full",editableContent:!0,findPositions:h,ruleFromNode:Re,context:b});if(h&&null!=h[0].pos){var k=h[0].pos,C=h[1]&&h[1].pos;null==C&&(C=k),S={anchor:k+l,head:C+l}}return{doc:x,sel:S,from:l,to:u}}(e,t,n),g=e.state.doc,y=g.slice(v.from,v.to);8===e.lastKeyCode&&Date.now()-100=a?i-r:0;c=(i-=u)+(c-a),a=i}else if(c=c?i-r:0;a=(i-=p)+(a-c),c=i}return{start:i,endA:a,endB:c}}(y.content,v.doc.content,v.from,d,f);if(!b){if(!(i&&m instanceof r.TextSelection&&!m.empty&&m.$head.sameParent(m.$anchor))||e.composing||v.sel&&v.sel.anchor!=v.sel.head){if(v.sel){var x=Pe(e,e.state.doc,v.sel);x&&!x.eq(e.state.selection)&&e.dispatch(e.state.tr.setSelection(x))}return}b={start:m.from,endA:m.to,endB:m.to}}e.domChangeCount++,e.state.selection.frome.state.selection.from&&b.start<=e.state.selection.from+2?b.start=e.state.selection.from:b.endA=e.state.selection.to-2&&(b.endB+=e.state.selection.to-b.endA,b.endA=e.state.selection.to)),s.ie&&s.ie_version<=11&&b.endB==b.start+1&&b.endA==b.start&&b.start>v.from&&"  "==v.doc.textBetween(b.start-v.from-1,b.start-v.from+1)&&(b.start--,b.endA--,b.endB--);var k,C=v.doc.resolveNoCache(b.start-v.from),O=v.doc.resolveNoCache(b.endB-v.from),M=C.sameParent(O)&&C.parent.inlineContent;if((s.ios&&e.lastIOSEnter>Date.now()-225&&(!M||a.some(function(e){return"DIV"==e.nodeName||"P"==e.nodeName}))||!M&&C.posb.start&&function(e,t,n,r,o){if(!r.parent.isTextblock||n-t<=o.pos-r.pos||$e(r,!0,!1)n||$e(s,!0,!1)t.content.size?null:Ae(e,t.resolve(n.anchor),t.resolve(n.head))}function $e(e,t,n){for(var r=e.depth,o=t?e.end():e.pos;r>0&&(t||e.indexAfter(r)==e.node(r).childCount);)r--,o++,t=!1;if(n)for(var i=e.node(r).maybeChild(e.indexAfter(r));i&&!i.isLeaf;)i=i.firstChild,o++;return o}function Ie(e,t){for(var n=[],r=t.content,i=t.openStart,s=t.openEnd;i>1&&s>1&&1==r.childCount&&1==r.firstChild.childCount;){i--,s--;var a=r.firstChild;n.push(a.type.name,a.type.hasRequiredAttrs()?a.attrs:null),r=a.content}var c=e.someProp("clipboardSerializer")||o.DOMSerializer.fromSchema(e.state.schema),l=Le(),u=l.createElement("div");u.appendChild(c.serializeFragment(r,{document:l}));for(var p,h=u.firstChild;h&&1==h.nodeType&&(p=Ve[h.nodeName.toLowerCase()]);){for(var d=p.length-1;d>=0;d--){for(var f=l.createElement(p[d]);u.firstChild;)f.appendChild(u.firstChild);u.appendChild(f)}h=u.firstChild}return h&&1==h.nodeType&&h.setAttribute("data-pm-slice",i+" "+s+" "+JSON.stringify(n)),{dom:u,text:e.someProp("clipboardTextSerializer",function(e){return e(t)})||t.content.textBetween(0,t.content.size,"\n\n")}}function ze(e,t,n,r,i){var s,a,c=i.parent.type.spec.code;if(!n&&!t)return null;var l=t&&(r||c||!n);if(l){if(e.someProp("transformPastedText",function(e){t=e(t,c||r)}),c)return new o.Slice(o.Fragment.from(e.state.schema.text(t)),0,0);var u=e.someProp("clipboardTextParser",function(e){return e(t,i,r)});u?a=u:(s=document.createElement("div"),t.trim().split(/(?:\r\n?|\n)+/).forEach(function(e){s.appendChild(document.createElement("p")).textContent=e}))}else e.someProp("transformPastedHTML",function(e){n=e(n)}),s=function(e){var t=/(\s*]*>)*/.exec(e);t&&(e=e.slice(t[0].length));var n,r=Le().createElement("div"),o=/(?:]*>)*<([a-z][^>\s]+)/i.exec(e),i=0;(n=o&&Ve[o[1].toLowerCase()])&&(e=n.map(function(e){return"<"+e+">"}).join("")+e+n.map(function(e){return""}).reverse().join(""),i=n.length);r.innerHTML=e;for(var s=0;s=0;c-=2){var l=r.nodes[n[c]];if(!l||l.hasRequiredAttrs())break;i=o.Fragment.from(l.create(n[c+1],i)),s++,a++}return new o.Slice(i,s,a)}(function(e,t,n){t=0;r--){var i=n(r);if(i)return i.v}return e}(a.content,i),!1),e.someProp("transformPasted",function(e){a=e(a)}),a}function Be(e,t,n){void 0===n&&(n=0);for(var r=t.length-1;r>=n;r--)e=t[r].create(null,o.Fragment.from(e));return e}function Fe(e,t,n,r,i,s){var a=t<0?e.firstChild:e.lastChild,c=a.content;return i=n&&(c=t<0?a.contentMatchAt(0).fillBefore(c,e.childCount>1||s<=i).append(c):c.append(a.contentMatchAt(a.childCount).fillBefore(o.Fragment.empty,!0))),e.replaceChild(t<0?0:e.childCount-1,a.copy(c))}var Ve={thead:["table"],tbody:["table"],tfoot:["table"],caption:["table"],colgroup:["table"],col:["table","colgroup"],tr:["table","tbody"],td:["table","tbody","tr"],th:["table","tbody","tr"]},je=null;function Le(){return je||(je=document.implementation.createHTMLDocument("title"))}var qe={childList:!0,characterData:!0,characterDataOldValue:!0,attributes:!0,attributeOldValue:!0,subtree:!0},We=s.ie&&s.ie_version<=11,Ke=function(){this.anchorNode=this.anchorOffset=this.focusNode=this.focusOffset=null};Ke.prototype.set=function(e){this.anchorNode=e.anchorNode,this.anchorOffset=e.anchorOffset,this.focusNode=e.focusNode,this.focusOffset=e.focusOffset},Ke.prototype.eq=function(e){return e.anchorNode==this.anchorNode&&e.anchorOffset==this.anchorOffset&&e.focusNode==this.focusNode&&e.focusOffset==this.focusOffset};var Je=function(e,t){var n=this;this.view=e,this.handleDOMChange=t,this.queue=[],this.flushingSoon=-1,this.observer=window.MutationObserver&&new window.MutationObserver(function(e){for(var t=0;te.target.nodeValue.length})?n.flushSoon():n.flush()}),this.currentSelection=new Ke,We&&(this.onCharData=function(e){n.queue.push({target:e.target,type:"characterData",oldValue:e.prevValue}),n.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.suppressingSelectionUpdates=!1};Je.prototype.flushSoon=function(){var e=this;this.flushingSoon<0&&(this.flushingSoon=window.setTimeout(function(){e.flushingSoon=-1,e.flush()},20))},Je.prototype.forceFlush=function(){this.flushingSoon>-1&&(window.clearTimeout(this.flushingSoon),this.flushingSoon=-1,this.flush())},Je.prototype.start=function(){this.observer&&this.observer.observe(this.view.dom,qe),We&&this.view.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.connectSelection()},Je.prototype.stop=function(){var e=this;if(this.observer){var t=this.observer.takeRecords();if(t.length){for(var n=0;n-1)){var e=this.observer?this.observer.takeRecords():[];this.queue.length&&(e=this.queue.concat(e),this.queue.length=0);var t=this.view.root.getSelection(),n=!this.suppressingSelectionUpdates&&!this.currentSelection.eq(t)&&Ee(this.view)&&!this.ignoreSelectionChange(t),r=-1,o=-1,i=!1,a=[];if(this.view.editable)for(var c=0;c1){var u=a.filter(function(e){return"BR"==e.nodeName});if(2==u.length){var p=u[0],h=u[1];p.parentNode&&p.parentNode.parentNode==h.parentNode?h.remove():p.remove()}}(r>-1||n)&&(r>-1&&(this.view.docView.markDirty(r,o),function(e){if(He)return;He=!0,"normal"==getComputedStyle(e.dom).whiteSpace&&console.warn("ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.")}(this.view)),this.handleDOMChange(r,o,i,a),this.view.docView.dirty?this.view.updateState(this.view.state):this.currentSelection.eq(t)||ke(this.view))}},Je.prototype.registerMutation=function(e,t){if(t.indexOf(e.target)>-1)return null;var n=this.view.docView.nearestDesc(e.target);if("attributes"==e.type&&(n==this.view.docView||"contenteditable"==e.attributeName||"style"==e.attributeName&&!e.oldValue&&!e.target.getAttribute("style")))return null;if(!n||n.ignoreMutation(e))return null;if("childList"==e.type){var r=e.previousSibling,o=e.nextSibling;if(s.ie&&s.ie_version<=11&&e.addedNodes.length)for(var i=0;ii.depth?t(e,n,i.nodeAfter,i.before(r),o,!0):t(e,n,i.node(r),i.before(r),o,!1)}))return{v:!0}},a=i.depth+1;a>0;a--){var c=s(a);if(c)return c.v}return!1}function tt(e,t,n){e.focused||e.focus();var r=e.state.tr.setSelection(t);"pointer"==n&&r.setMeta("pointer",!0),e.dispatch(r)}function nt(e,t,n,o,i){return et(e,"handleClickOn",t,n,o)||e.someProp("handleClick",function(n){return n(e,t,o)})||(i?function(e,t){if(-1==t)return!1;var n,o,i=e.state.selection;i instanceof r.NodeSelection&&(n=i.node);for(var s=e.state.doc.resolve(t),a=s.depth+1;a>0;a--){var c=a>s.depth?s.nodeAfter:s.node(a);if(r.NodeSelection.isSelectable(c)){o=n&&i.$from.depth>0&&a>=i.$from.depth&&s.before(i.$from.depth+1)==i.$from.pos?s.before(i.$from.depth):s.before(a);break}}return null!=o&&(tt(e,r.NodeSelection.create(e.state.doc,o),"pointer"),!0)}(e,n):function(e,t){if(-1==t)return!1;var n=e.state.doc.resolve(t),o=n.nodeAfter;return!!(o&&o.isAtom&&r.NodeSelection.isSelectable(o))&&(tt(e,new r.NodeSelection(n),"pointer"),!0)}(e,n))}function rt(e,t,n,o){return et(e,"handleTripleClickOn",t,n,o)||e.someProp("handleTripleClick",function(n){return n(e,t,o)})||function(e,t){var n=e.state.doc;if(-1==t)return!!n.inlineContent&&(tt(e,r.TextSelection.create(n,0,n.content.size),"pointer"),!0);for(var o=n.resolve(t),i=o.depth+1;i>0;i--){var s=i>o.depth?o.nodeAfter:o.node(i),a=o.before(i);if(s.inlineContent)tt(e,r.TextSelection.create(n,a+1,a+1+s.content.size),"pointer");else{if(!r.NodeSelection.isSelectable(s))continue;tt(e,r.NodeSelection.create(n,a),"pointer")}return!0}}(e,n)}function ot(e){return pt(e)}Ge.keydown=function(e,t){if(e.shiftKey=16==t.keyCode||t.shiftKey,!at(e,t))if(e.domObserver.forceFlush(),e.lastKeyCode=t.keyCode,e.lastKeyCodeTime=Date.now(),!s.ios||13!=t.keyCode||t.ctrlKey||t.altKey||t.metaKey)e.someProp("handleKeyDown",function(n){return n(e,t)})||Se(e,t)?t.preventDefault():Xe(e,"key");else{var n=Date.now();e.lastIOSEnter=n,e.lastIOSEnterFallbackTimeout=setTimeout(function(){e.lastIOSEnter==n&&(e.someProp("handleKeyDown",function(t){return t(e,S(13,"Enter"))}),e.lastIOSEnter=0)},200)}},Ge.keyup=function(e,t){16==t.keyCode&&(e.shiftKey=!1)},Ge.keypress=function(e,t){if(!(at(e,t)||!t.charCode||t.ctrlKey&&!t.altKey||s.mac&&t.metaKey))if(e.someProp("handleKeyPress",function(n){return n(e,t)}))t.preventDefault();else{var n=e.state.selection;if(!(n instanceof r.TextSelection&&n.$from.sameParent(n.$to))){var o=String.fromCharCode(t.charCode);e.someProp("handleTextInput",function(t){return t(e,n.$from.pos,n.$to.pos,o)})||e.dispatch(e.state.tr.insertText(o).scrollIntoView()),t.preventDefault()}}};var it=s.mac?"metaKey":"ctrlKey";Ue.mousedown=function(e,t){e.shiftKey=t.shiftKey;var n=ot(e),r=Date.now(),o="singleClick";r-e.lastClick.time<500&&function(e,t){var n=t.x-e.clientX,r=t.y-e.clientY;return n*n+r*r<100}(t,e.lastClick)&&!t[it]&&("singleClick"==e.lastClick.type?o="doubleClick":"doubleClick"==e.lastClick.type&&(o="tripleClick")),e.lastClick={time:r,x:t.clientX,y:t.clientY,type:o};var i=e.posAtCoords(Qe(t));i&&("singleClick"==o?e.mouseDown=new st(e,i,t,n):("doubleClick"==o?function(e,t,n,r){return et(e,"handleDoubleClickOn",t,n,r)||e.someProp("handleDoubleClick",function(n){return n(e,t,r)})}:rt)(e,i.pos,i.inside,t)?t.preventDefault():Xe(e,"pointer"))};var st=function(e,t,n,o){var i,a,c=this;if(this.view=e,this.startDoc=e.state.doc,this.pos=t,this.event=n,this.flushed=o,this.selectNode=n[it],this.allowDefault=n.shiftKey,t.inside>-1)i=e.state.doc.nodeAt(t.inside),a=t.inside;else{var l=e.state.doc.resolve(t.pos);i=l.parent,a=l.depth?l.before():0}this.mightDrag=null;var u=o?null:n.target,p=u?e.docView.nearestDesc(u,!0):null;this.target=p?p.dom:null,(i.type.spec.draggable&&!1!==i.type.spec.selectable||e.state.selection instanceof r.NodeSelection&&a==e.state.selection.from)&&(this.mightDrag={node:i,pos:a,addAttr:this.target&&!this.target.draggable,setUneditable:this.target&&s.gecko&&!this.target.hasAttribute("contentEditable")}),this.target&&this.mightDrag&&(this.mightDrag.addAttr||this.mightDrag.setUneditable)&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&(this.target.draggable=!0),this.mightDrag.setUneditable&&setTimeout(function(){return c.target.setAttribute("contentEditable","false")},20),this.view.domObserver.start()),e.root.addEventListener("mouseup",this.up=this.up.bind(this)),e.root.addEventListener("mousemove",this.move=this.move.bind(this)),Xe(e,"pointer")};function at(e,t){return!!e.composing||!!(s.safari&&Math.abs(t.timeStamp-e.compositionEndedAt)<500)&&(e.compositionEndedAt=-2e8,!0)}st.prototype.done=function(){this.view.root.removeEventListener("mouseup",this.up),this.view.root.removeEventListener("mousemove",this.move),this.mightDrag&&this.target&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&this.target.removeAttribute("draggable"),this.mightDrag.setUneditable&&this.target.removeAttribute("contentEditable"),this.view.domObserver.start()),this.view.mouseDown=null},st.prototype.up=function(e){if(this.done(),this.view.dom.contains(3==e.target.nodeType?e.target.parentNode:e.target)){var t=this.pos;this.view.state.doc!=this.startDoc&&(t=this.view.posAtCoords(Qe(e))),this.allowDefault||!t?Xe(this.view,"pointer"):nt(this.view,t.pos,t.inside,e,this.selectNode)?e.preventDefault():this.flushed||s.safari&&this.mightDrag&&!this.mightDrag.node.isAtom||s.chrome&&!(this.view.state.selection instanceof r.TextSelection)&&(t.pos==this.view.state.selection.from||t.pos==this.view.state.selection.to)?(tt(this.view,r.Selection.near(this.view.state.doc.resolve(t.pos)),"pointer"),e.preventDefault()):Xe(this.view,"pointer")}},st.prototype.move=function(e){!this.allowDefault&&(Math.abs(this.event.x-e.clientX)>4||Math.abs(this.event.y-e.clientY)>4)&&(this.allowDefault=!0),Xe(this.view,"pointer")},Ue.touchdown=function(e){ot(e),Xe(e,"pointer")},Ue.contextmenu=function(e){return ot(e)};var ct=s.android?5e3:-1;function lt(e,t){clearTimeout(e.composingTimeout),t>-1&&(e.composingTimeout=setTimeout(function(){return pt(e)},t))}function ut(e){for(e.composing=!1;e.compositionNodes.length>0;)e.compositionNodes.pop().markParentsDirty()}function pt(e,t){if(e.domObserver.forceFlush(),ut(e),t||e.docView.dirty){var n=xe(e);return n&&!n.eq(e.state.selection)?e.dispatch(e.state.tr.setSelection(n)):e.updateState(e.state),!0}return!1}Ge.compositionstart=Ge.compositionupdate=function(e){if(!e.composing){e.domObserver.flush();var t=e.state,n=t.selection.$from;if(t.selection.empty&&(t.storedMarks||!n.textOffset&&n.parentOffset&&n.nodeBefore.marks.some(function(e){return!1===e.type.spec.inclusive})))e.markCursor=e.state.storedMarks||n.marks(),pt(e,!0),e.markCursor=null;else if(pt(e),s.gecko&&t.selection.empty&&n.parentOffset&&!n.textOffset&&n.nodeBefore.marks.length)for(var r=e.root.getSelection(),o=r.focusNode,i=r.focusOffset;o&&1==o.nodeType&&0!=i;){var a=i<0?o.lastChild:o.childNodes[i-1];if(!a)break;if(3==a.nodeType){r.collapse(a,a.nodeValue.length);break}o=a,i=-1}e.composing=!0}lt(e,ct)},Ge.compositionend=function(e,t){e.composing&&(e.composing=!1,e.compositionEndedAt=t.timeStamp,lt(e,20))};var ht=s.ie&&s.ie_version<15||s.ios&&s.webkit_version<604;function dt(e,t,n,r){var i=ze(e,t,n,e.shiftKey,e.state.selection.$from);if(!e.someProp("handlePaste",function(t){return t(e,r,i||o.Slice.empty)})&&i){var s=function(e){return 0==e.openStart&&0==e.openEnd&&1==e.content.childCount?e.content.firstChild:null}(i),a=s?e.state.tr.replaceSelectionWith(s,e.shiftKey):e.state.tr.replaceSelection(i);e.dispatch(a.scrollIntoView().setMeta("paste",!0).setMeta("uiEvent","paste"))}}Ue.copy=Ge.cut=function(e,t){var n=e.state.selection,r="cut"==t.type;if(!n.empty){var o=ht?null:t.clipboardData,i=Ie(e,n.content()),s=i.dom,a=i.text;o?(t.preventDefault(),o.clearData(),o.setData("text/html",s.innerHTML),o.setData("text/plain",a)):function(e,t){if(e.dom.parentNode){var n=e.dom.parentNode.appendChild(document.createElement("div"));n.appendChild(t),n.style.cssText="position: fixed; left: -10000px; top: 10px";var r=getSelection(),o=document.createRange();o.selectNodeContents(t),e.dom.blur(),r.removeAllRanges(),r.addRange(o),setTimeout(function(){n.parentNode&&n.parentNode.removeChild(n),e.focus()},50)}}(e,s),r&&e.dispatch(e.state.tr.deleteSelection().scrollIntoView().setMeta("uiEvent","cut"))}},Ge.paste=function(e,t){var n=ht?null:t.clipboardData,r=n&&n.getData("text/html"),o=n&&n.getData("text/plain");n&&(r||o||n.files.length)?(dt(e,o,r,t),t.preventDefault()):function(e,t){if(e.dom.parentNode){var n=e.shiftKey||e.state.selection.$from.parent.type.spec.code,r=e.dom.parentNode.appendChild(document.createElement(n?"textarea":"div"));n||(r.contentEditable="true"),r.style.cssText="position: fixed; left: -10000px; top: 10px",r.focus(),setTimeout(function(){e.focus(),r.parentNode&&r.parentNode.removeChild(r),n?dt(e,r.value,null,t):dt(e,r.textContent,r.innerHTML,t)},50)}}(e,t)};var ft=s.mac?"altKey":"ctrlKey";for(var mt in Ue.dragstart=function(e,t){var n=e.mouseDown;if(n&&n.done(),t.dataTransfer){var o=e.state.selection,i=o.empty?null:e.posAtCoords(Qe(t));if(i&&i.pos>=o.from&&i.pos<=(o instanceof r.NodeSelection?o.to-1:o.to));else if(n&&n.mightDrag)e.dispatch(e.state.tr.setSelection(r.NodeSelection.create(e.state.doc,n.mightDrag.pos)));else if(t.target&&1==t.target.nodeType){var s=e.docView.nearestDesc(t.target,!0);if(!s||!s.node.type.spec.draggable||s==e.docView)return;e.dispatch(e.state.tr.setSelection(r.NodeSelection.create(e.state.doc,s.posBefore)))}var a=e.state.selection.content(),c=Ie(e,a),l=c.dom,u=c.text;t.dataTransfer.clearData(),t.dataTransfer.setData(ht?"Text":"text/html",l.innerHTML),ht||t.dataTransfer.setData("text/plain",u),e.dragging=new function(e,t){this.slice=e,this.move=t}(a,!t[ft])}},Ue.dragend=function(e){window.setTimeout(function(){return e.dragging=null},50)},Ge.dragover=Ge.dragenter=function(e,t){return t.preventDefault()},Ge.drop=function(e,t){var n=e.dragging;if(e.dragging=null,t.dataTransfer){var s=e.posAtCoords(Qe(t));if(s){var a=e.state.doc.resolve(s.pos);if(a){var c=n&&n.slice||ze(e,t.dataTransfer.getData(ht?"Text":"text/plain"),ht?null:t.dataTransfer.getData("text/html"),!1,a);if(e.someProp("handleDrop",function(r){return r(e,t,c||o.Slice.empty,n&&n.move)}))t.preventDefault();else if(c){t.preventDefault();var l=c?Object(i.h)(e.state.doc,a.pos,c):a.pos;null==l&&(l=a.pos);var u=e.state.tr;n&&n.move&&u.deleteSelection();var p=u.mapping.map(l),h=0==c.openStart&&0==c.openEnd&&1==c.content.childCount,d=u.doc;if(h?u.replaceRangeWith(p,p,c.content.firstChild):u.replaceRange(p,p,c),!u.doc.eq(d)){var f=u.doc.resolve(p);h&&r.NodeSelection.isSelectable(c.content.firstChild)&&f.nodeAfter&&f.nodeAfter.sameMarkup(c.content.firstChild)?u.setSelection(new r.NodeSelection(f)):u.setSelection(Ae(e,f,u.doc.resolve(u.mapping.map(l)))),e.focus(),e.dispatch(u.setMeta("uiEvent","drop"))}}}}}},Ue.focus=function(e){e.focused||(e.domObserver.stop(),e.dom.classList.add("ProseMirror-focused"),e.domObserver.start(),e.focused=!0,setTimeout(function(){e.docView&&e.hasFocus()&&!e.domObserver.currentSelection.eq(e.root.getSelection())&&ke(e)},20))},Ue.blur=function(e){e.focused&&(e.domObserver.stop(),e.dom.classList.remove("ProseMirror-focused"),e.domObserver.start(),e.domObserver.currentSelection.set({}),e.focused=!1)},Ue.beforeinput=function(e,t){if(s.chrome&&s.android&&"deleteContentBackward"==t.inputType){var n=e.domChangeCount;setTimeout(function(){if(e.domChangeCount==n&&(e.dom.blur(),e.focus(),!e.someProp("handleKeyDown",function(t){return t(e,S(8,"Backspace"))}))){var t=e.state.selection.$cursor;t&&t.pos>0&&e.dispatch(e.state.tr.delete(t.pos-1,t.pos).scrollIntoView())}},50)}},Ge)Ue[mt]=Ge[mt];function vt(e,t){if(e==t)return!0;for(var n in e)if(e[n]!==t[n])return!1;for(var r in t)if(!(r in e))return!1;return!0}var gt=function(e,t){this.spec=t||kt,this.side=this.spec.side||0,this.toDOM=e};gt.prototype.map=function(e,t,n,r){var o=e.mapResult(t.from+r,this.side<0?-1:1),i=o.pos;return o.deleted?null:new wt(i-n,i-n,this)},gt.prototype.valid=function(){return!0},gt.prototype.eq=function(e){return this==e||e instanceof gt&&(this.spec.key&&this.spec.key==e.spec.key||this.toDOM==e.toDOM&&vt(this.spec,e.spec))};var yt=function(e,t){this.spec=t||kt,this.attrs=e};yt.prototype.map=function(e,t,n,r){var o=e.map(t.from+r,this.spec.inclusiveStart?-1:1)-n,i=e.map(t.to+r,this.spec.inclusiveEnd?1:-1)-n;return o>=i?null:new wt(o,i,this)},yt.prototype.valid=function(e,t){return t.from=e&&(!o||o(s.spec))&&n.push(s.copy(s.from+r,s.to+r))}for(var a=0;ae){var c=this.children[a]+1;this.children[a+2].findInner(e-c,t-c,n,r+c,o)}},Ct.prototype.map=function(e,t,n){return this==Ot||0==e.maps.length?this:this.mapInner(e,t,0,0,n||kt)},Ct.prototype.mapInner=function(e,t,n,r,o){for(var i,s=0;sc+i||(t>=a[s]+i?a[s+1]=-1:n>=o&&(l=r-n-(t-e))&&(a[s]+=l,a[s+1]+=l))}},l=0;l=r.content.size){u=!0;continue}var f=n.map(e[p+1]+i,-1),m=f-o,v=r.content.findIndex(d),g=v.index,y=v.offset,b=r.maybeChild(g);if(b&&y==d&&y+b.nodeSize==m){var w=a[p+2].mapInner(n,b,h+1,a[p]+i+1,s);w!=Ot?(a[p]=d,a[p+1]=m,a[p+2]=w):(a[p+1]=-2,u=!0)}else u=!0}if(u){var S=function(e,t,n,r,o,i,s){function a(e,t){for(var i=0;is&&l.to=e){this.children[o]==e&&(n=this.children[o+2]);break}for(var i=e+1,s=i+t.content.size,a=0;ai&&c.type instanceof yt){var l=Math.max(i,c.from)-i,u=Math.min(s,c.to)-i;ln&&s.to0;)t++;e.splice(t,0,n)}function Pt(e){var t=[];return e.someProp("decorations",function(n){var r=n(e.state);r&&r!=Ot&&t.push(r)}),e.cursorWrapper&&t.push(Ct.create(e.state.doc,[e.cursorWrapper.deco])),Mt.from(t)}Mt.prototype.forChild=function(e,t){if(t.isLeaf)return Ct.empty;for(var n=[],r=0;ro.scrollToSelection?"to selection":"preserve",h=i||!this.docView.matchesNode(e.doc,u,l);!h&&e.selection.eq(o.selection)||(a=!0);var d="preserve"==p&&a&&null==this.dom.style.overflowAnchor&&function(e){for(var t,n,r=e.dom.getBoundingClientRect(),o=Math.max(0,r.top),i=(r.left+r.right)/2,s=o+1;s=o-20){t=a,n=c.top;break}}}return{refDOM:t,refTop:n,stack:M(e.dom)}}(this);if(a){this.domObserver.stop();var f=h&&(s.ie||s.chrome)&&!this.composing&&!o.selection.empty&&!e.selection.empty&&function(e,t){var n=Math.min(e.$anchor.sharedDepth(e.head),t.$anchor.sharedDepth(t.head));return e.$anchor.start(n)!=t.$anchor.start(n)}(o.selection,e.selection);if(h){var v=s.chrome?this.trackWrites=this.root.getSelection().focusNode:null;!i&&this.docView.update(e.doc,u,l,this)||(this.docView.updateOuterDeco([]),this.docView.destroy(),this.docView=U(e.doc,u,l,this.dom,this)),v&&!this.trackWrites&&(f=!0)}f||!(this.mouseDown&&this.domObserver.currentSelection.eq(this.root.getSelection())&&function(e){var t=e.docView.domFromPos(e.state.selection.anchor),n=e.root.getSelection();return m(t.node,t.offset,n.anchorNode,n.anchorOffset)}(this))?ke(this,f):(Te(this,e.selection),this.domObserver.setCurSelection()),this.domObserver.start()}if(this.updatePluginViews(o),"reset"==p)this.dom.scrollTop=0;else if("to selection"==p){var g=this.root.getSelection().focusNode;this.someProp("handleScrollToSelection",function(e){return e(n)})||(e.selection instanceof r.NodeSelection?O(this,this.docView.domAfterPos(e.selection.from).getBoundingClientRect(),g):O(this,this.coordsAtPos(e.selection.head),g))}else d&&function(e){var t=e.refDOM,n=e.refTop,r=e.stack,o=t?t.getBoundingClientRect().top:0;N(r,0==o?0:o-n)}(d)},$t.prototype.destroyPluginViews=function(){for(var e;e=this.pluginViews.pop();)e.destroy&&e.destroy()},$t.prototype.updatePluginViews=function(e){if(e&&e.plugins==this.state.plugins)for(var t=0;t=0;t--){var n=e.index(t);if(0!=n)for(var r=e.node(t).child(n-1);;r=r.lastChild){if(0==r.childCount&&!r.inlineContent||r.isAtom||r.type.spec.isolating)return!0;if(r.inlineContent)return!1}}return!0}(e)||!function(e){for(var t=e.depth;t>=0;t--){var n=e.indexAfter(t),r=e.node(t);if(n!=r.childCount)for(var o=r.child(n);;o=o.firstChild){if(0==o.childCount&&!o.inlineContent||o.isAtom||o.type.spec.isolating)return!0;if(o.inlineContent)return!1}}return!0}(e))return!1;var n=t.type.spec.allowGapCursor;if(null!=n)return n;var r=t.contentMatchAt(e.index()).defaultType;return r&&r.isTextblock},t.findFrom=function(e,n,o){e:for(;;){if(!o&&t.valid(e))return e;for(var i=e.pos,s=null,a=e.depth;;a--){var c=e.node(a);if(n>0?e.indexAfter(a)0){s=c.child(n>0?e.indexAfter(a):e.index(a)-1);break}if(0==a)return null;i+=n;var l=e.doc.resolve(i);if(t.valid(l))return l}for(;;){var u=n>0?s.firstChild:s.lastChild;if(!u){if(s.isAtom&&!s.isText&&!r.NodeSelection.isSelectable(s)){e=e.doc.resolve(i+s.nodeSize*n),o=!1;continue e}break}s=u,i+=n;var p=e.doc.resolve(i);if(t.valid(p))return p}return null}},t}(r.Selection);Wt.prototype.visible=!1,r.Selection.jsonID("gapcursor",Wt);var Kt=function(e){this.pos=e};Kt.prototype.map=function(e){return new Kt(e.map(this.pos))},Kt.prototype.resolve=function(e){var t=e.resolve(this.pos);return Wt.valid(t)?new Wt(t):r.Selection.near(t)};var Jt=function(){return new r.Plugin({props:{decorations:Xt,createSelectionBetween:function(e,t,n){if(t.pos==n.pos&&Wt.valid(n))return new Wt(n)},handleClick:Gt,handleKeyDown:Ht}})},Ht=Object(Lt.a)({ArrowLeft:Ut("horiz",-1),ArrowRight:Ut("horiz",1),ArrowUp:Ut("vert",-1),ArrowDown:Ut("vert",1)});function Ut(e,t){var n="vert"==e?t>0?"down":"up":t>0?"right":"left";return function(e,o,i){var s=e.selection,a=t>0?s.$to:s.$from,c=s.empty;if(s instanceof r.TextSelection){if(!i.endOfTextblock(n)||0==a.depth)return!1;c=!1,a=e.doc.resolve(t>0?a.after():a.before())}var l=Wt.findFrom(a,t,c);return!!l&&(o&&o(e.tr.setSelection(new Wt(l))),!0)}}function Gt(e,t,n){if(!e.editable)return!1;var o=e.state.doc.resolve(t);if(!Wt.valid(o))return!1;var i=e.posAtCoords({left:n.clientX,top:n.clientY}).inside;return!(i>-1&&r.NodeSelection.isSelectable(e.state.doc.nodeAt(i)))&&(e.dispatch(e.state.tr.setSelection(new Wt(o))),!0)}function Xt(e){if(!(e.selection instanceof Wt))return null;var t=document.createElement("div");return t.className="ProseMirror-gapcursor",qt.b.create(e.doc,[qt.a.widget(e.selection.head,t,{key:"gapcursor"})])}var Zt=n("ABBN"),Yt=n("+V57"),Qt=n("oV9I"),en=n("Kw5r"),tn=n("qd4/");class nn{constructor(e,{editor:t,extension:n,parent:r,node:o,view:i,decorations:s,getPos:a}){this.component=e,this.editor=t,this.extension=n,this.parent=r,this.node=o,this.view=i,this.decorations=s,this.isNode=!!this.node.marks,this.isMark=!this.isNode,this.getPos=this.isMark?this.getMarkPos:a,this.captureEvents=!0,this.dom=this.createDOM(),this.contentDOM=this.vm.$refs.content}createDOM(){const e=en.default.extend(this.component),t={editor:this.editor,node:this.node,view:this.view,getPos:()=>this.getPos(),decorations:this.decorations,selected:!1,options:this.extension.options,updateAttrs:e=>this.updateAttrs(e)};return"function"==typeof this.extension.setSelection&&(this.setSelection=this.extension.setSelection),"function"==typeof this.extension.update&&(this.update=this.extension.update),this.vm=new e({parent:this.parent,propsData:t}).$mount(),this.vm.$el}update(e,t){return e.type===this.node.type&&(e===this.node&&this.decorations===t||(this.node=e,this.decorations=t,this.updateComponentProps({node:e,decorations:t}),!0))}updateComponentProps(e){if(!this.vm._props)return;const t=en.default.config.silent;en.default.config.silent=!0,Object.entries(e).forEach(([e,t])=>{this.vm._props[e]=t}),en.default.config.silent=t}updateAttrs(e){if(!this.view.editable)return;const{state:t}=this.view,{type:n}=this.node,r=this.getPos(),o={...this.node.attrs,...e},i=this.isMark?t.tr.removeMark(r.from,r.to,n).addMark(r.from,r.to,n.create(o)):t.tr.setNodeMarkup(r,null,o);this.view.dispatch(i)}ignoreMutation(e){return"selection"!==e.type&&(!this.contentDOM||!this.contentDOM.contains(e.target))}stopEvent(e){if("function"==typeof this.extension.stopEvent)return this.extension.stopEvent(e);const t=!!this.extension.schema.draggable;if(t&&"mousedown"===e.type){const t=e.target.closest&&e.target.closest("[data-drag-handle]");t&&(this.dom===t||this.dom.contains(t))&&(this.captureEvents=!1,document.addEventListener("dragend",()=>{this.captureEvents=!0},{once:!0}))}const n="copy"===e.type,r="paste"===e.type,o="cut"===e.type,i=e.type.startsWith("drag")||"drop"===e.type;return!(t&&i||n||r||o)&&this.captureEvents}selectNode(){this.updateComponentProps({selected:!0})}deselectNode(){this.updateComponentProps({selected:!1})}getMarkPos(){const e=this.view.posAtDOM(this.dom),t=this.view.state.doc.resolve(e);return Object(Qt.b)(t,this.node.type)}destroy(){this.vm.$destroy()}}class rn{on(e,t){return this._callbacks=this._callbacks||{},this._callbacks[e]||(this._callbacks[e]=[]),this._callbacks[e].push(t),this}emit(e,...t){this._callbacks=this._callbacks||{};const n=this._callbacks[e];return n&&n.forEach(e=>e.apply(this,t)),this}off(e,t){if(arguments.length){const n=this._callbacks?this._callbacks[e]:null;n&&(t?this._callbacks[e]=n.filter(e=>e!==t):delete this._callbacks[e])}else this._callbacks={};return this}}class on{constructor(e={}){this.options={...this.defaultOptions,...e}}init(){return null}bindEditor(e=null){this.editor=e}get name(){return null}get type(){return"extension"}get defaultOptions(){return{}}get plugins(){return[]}inputRules(){return[]}pasteRules(){return[]}keys(){return{}}}class sn{constructor(e=[],t){e.forEach(e=>{e.bindEditor(t),e.init()}),this.extensions=e}get nodes(){return this.extensions.filter(e=>"node"===e.type).reduce((e,{name:t,schema:n})=>({...e,[t]:n}),{})}get options(){const{view:e}=this;return this.extensions.reduce((t,n)=>({...t,[n.name]:new Proxy(n.options,{set(t,n,r){const o=t[n]!==r;return Object.assign(t,{[n]:r}),o&&e.updateState(e.state),!0}})}),{})}get marks(){return this.extensions.filter(e=>"mark"===e.type).reduce((e,{name:t,schema:n})=>({...e,[t]:n}),{})}get plugins(){return this.extensions.filter(e=>e.plugins).reduce((e,{plugins:t})=>[...e,...t],[])}keymaps({schema:e}){const t=this.extensions.filter(e=>["extension"].includes(e.type)).filter(e=>e.keys).map(t=>t.keys({schema:e})),n=this.extensions.filter(e=>["node","mark"].includes(e.type)).filter(e=>e.keys).map(t=>t.keys({type:e["".concat(t.type,"s")][t.name],schema:e}));return[...t,...n].map(e=>Object(Lt.b)(e))}inputRules({schema:e,excludedExtensions:t}){if(!(t instanceof Array)&&t)return[];const n=t instanceof Array?this.extensions.filter(e=>!t.includes(e.name)):this.extensions,r=n.filter(e=>["extension"].includes(e.type)).filter(e=>e.inputRules).map(t=>t.inputRules({schema:e})),o=n.filter(e=>["node","mark"].includes(e.type)).filter(e=>e.inputRules).map(t=>t.inputRules({type:e["".concat(t.type,"s")][t.name],schema:e}));return[...r,...o].reduce((e,t)=>[...e,...t],[])}pasteRules({schema:e,excludedExtensions:t}){if(!(t instanceof Array)&&t)return[];const n=t instanceof Array?this.extensions.filter(e=>!t.includes(e.name)):this.extensions,r=n.filter(e=>["extension"].includes(e.type)).filter(e=>e.pasteRules).map(t=>t.pasteRules({schema:e})),o=n.filter(e=>["node","mark"].includes(e.type)).filter(e=>e.pasteRules).map(t=>t.pasteRules({type:e["".concat(t.type,"s")][t.name],schema:e}));return[...r,...o].reduce((e,t)=>[...e,...t],[])}commands({schema:e,view:t}){return this.extensions.filter(e=>e.commands).reduce((n,r)=>{const{name:o,type:i}=r,s={},a=r.commands({schema:e,...["node","mark"].includes(i)?{type:e["".concat(i,"s")][o]}:{}}),c=(e,n)=>!!t.editable&&(t.focus(),e(n)(t.state,t.dispatch,t)),l=(e,t)=>{Array.isArray(t)?s[e]=(e=>t.forEach(t=>c(t,e))):"function"==typeof t&&(s[e]=(e=>c(t,e)))};return"object"==typeof a?Object.entries(a).forEach(([e,t])=>{l(e,t)}):l(o,a),{...n,...s}},{})}}class an extends on{constructor(e={}){super(e)}get type(){return"mark"}get view(){return null}get schema(){return null}command(){return()=>{}}}function cn(e=0,t=0,n=0){return Math.min(Math.max(parseInt(e,10),t),n)}class ln extends on{constructor(e={}){super(e)}get type(){return"node"}get view(){return null}get schema(){return null}command(){return()=>{}}}class un extends ln{get name(){return"doc"}get schema(){return{content:"block+"}}}class pn extends ln{get name(){return"paragraph"}get schema(){return{content:"inline*",group:"block",draggable:!1,parseDOM:[{tag:"p"}],toDOM:()=>["p",0]}}commands({type:e}){return()=>Object(tn.k)(e)}}class hn extends ln{get name(){return"text"}get schema(){return{group:"inline"}}}var dn='.ProseMirror {\n position: relative;\n}\n\n.ProseMirror {\n word-wrap: break-word;\n white-space: pre-wrap;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n}\n\n.ProseMirror pre {\n white-space: pre-wrap;\n}\n\n.ProseMirror-gapcursor {\n display: none;\n pointer-events: none;\n position: absolute;\n}\n\n.ProseMirror-gapcursor:after {\n content: "";\n display: block;\n position: absolute;\n top: -2px;\n width: 20px;\n border-top: 1px solid black;\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\n}\n\n@keyframes ProseMirror-cursor-blink {\n to {\n visibility: hidden;\n }\n}\n\n.ProseMirror-hideselection *::selection {\n background: transparent;\n}\n\n.ProseMirror-hideselection *::-moz-selection {\n background: transparent;\n}\n\n.ProseMirror-hideselection * {\n caret-color: transparent;\n}\n\n.ProseMirror-focused .ProseMirror-gapcursor {\n display: block;\n}\n';class fn extends rn{constructor(e={}){super(),this.defaultOptions={editorProps:{},editable:!0,autoFocus:null,extensions:[],content:"",topNode:"doc",emptyDocument:{type:"doc",content:[{type:"paragraph"}]},useBuiltInExtensions:!0,disableInputRules:!1,disablePasteRules:!1,dropCursor:{},enableDropCursor:!0,enableGapCursor:!0,parseOptions:{},injectCSS:!0,onInit:()=>{},onTransaction:()=>{},onUpdate:()=>{},onFocus:()=>{},onBlur:()=>{},onPaste:()=>{},onDrop:()=>{}},this.events=["init","transaction","update","focus","blur","paste","drop"],this.init(e)}init(e={}){this.setOptions({...this.defaultOptions,...e}),this.focused=!1,this.selection={from:0,to:0},this.element=document.createElement("div"),this.extensions=this.createExtensions(),this.nodes=this.createNodes(),this.marks=this.createMarks(),this.schema=this.createSchema(),this.plugins=this.createPlugins(),this.keymaps=this.createKeymaps(),this.inputRules=this.createInputRules(),this.pasteRules=this.createPasteRules(),this.view=this.createView(),this.commands=this.createCommands(),this.setActiveNodesAndMarks(),this.options.injectCSS&&function(e){{const t=document.createElement("style");t.type="text/css",t.textContent=e;const{head:n}=document,{firstChild:r}=n;r?n.insertBefore(t,r):n.appendChild(t)}}(dn),null!==this.options.autoFocus&&this.focus(this.options.autoFocus),this.events.forEach(e=>{this.on(e,this.options[ +/*! + * tiptap v1.29.5 + * (c) 2020 überdosis GbR (limited liability) + * @license MIT + */ +function(e){return e.replace(/(?:^\w|[A-Z]|\b\w)/g,(e,t)=>0===t?e.toLowerCase():e.toUpperCase()).replace(/\s+/g,"")}("on ".concat(e))]||(()=>{}))}),this.emit("init",{view:this.view,state:this.state}),this.extensions.view=this.view}setOptions(e){this.options={...this.options,...e},this.view&&this.state&&this.view.updateState(this.state)}get builtInExtensions(){return this.options.useBuiltInExtensions?[new un,new hn,new pn]:[]}get state(){return this.view?this.view.state:null}createExtensions(){return new sn([...this.builtInExtensions,...this.options.extensions],this)}createPlugins(){return this.extensions.plugins}createKeymaps(){return this.extensions.keymaps({schema:this.schema})}createInputRules(){return this.extensions.inputRules({schema:this.schema,excludedExtensions:this.options.disableInputRules})}createPasteRules(){return this.extensions.pasteRules({schema:this.schema,excludedExtensions:this.options.disablePasteRules})}createCommands(){return this.extensions.commands({schema:this.schema,view:this.view})}createNodes(){return this.extensions.nodes}createMarks(){return this.extensions.marks}createSchema(){return new o.Schema({topNode:this.options.topNode,nodes:this.nodes,marks:this.marks})}createState(){return r.EditorState.create({schema:this.schema,doc:this.createDocument(this.options.content),plugins:[...this.plugins,Object(Yt.b)({rules:this.inputRules}),...this.pasteRules,...this.keymaps,Object(Lt.b)({Backspace:Yt.d}),Object(Lt.b)(Zt.a),...this.options.enableDropCursor?[function(e){return void 0===e&&(e={}),new r.Plugin({view:function(t){return new jt(t,e)}})}(this.options.dropCursor)]:[],...this.options.enableGapCursor?[Jt()]:[],new r.Plugin({key:new r.PluginKey("editable"),props:{editable:()=>this.options.editable}}),new r.Plugin({props:{attributes:{tabindex:0},handleDOMEvents:{focus:(e,t)=>{this.focused=!0,this.emit("focus",{event:t,state:e.state,view:e});const n=this.state.tr.setMeta("focused",!0);this.view.dispatch(n)},blur:(e,t)=>{this.focused=!1,this.emit("blur",{event:t,state:e.state,view:e});const n=this.state.tr.setMeta("focused",!1);this.view.dispatch(n)}}}}),new r.Plugin({props:this.options.editorProps})]})}createDocument(e,t=this.options.parseOptions){if(null===e)return this.schema.nodeFromJSON(this.options.emptyDocument);if("object"==typeof e)try{return this.schema.nodeFromJSON(e)}catch(t){return console.warn("[tiptap warn]: Invalid content.","Passed value:",e,"Error:",t),this.schema.nodeFromJSON(this.options.emptyDocument)}if("string"==typeof e){const n="
    ".concat(e,"
    "),r=(new window.DOMParser).parseFromString(n,"text/html").body.firstElementChild;return o.DOMParser.fromSchema(this.schema).parse(r,t)}return!1}createView(){return new $t(this.element,{state:this.createState(),handlePaste:(...e)=>{this.emit("paste",...e)},handleDrop:(...e)=>{this.emit("drop",...e)},dispatchTransaction:this.dispatchTransaction.bind(this)})}setParentComponent(e=null){e&&this.view.setProps({nodeViews:this.initNodeViews({parent:e,extensions:[...this.builtInExtensions,...this.options.extensions]})})}initNodeViews({parent:e,extensions:t}){return t.filter(e=>["node","mark"].includes(e.type)).filter(e=>e.view).reduce((t,n)=>{return{...t,[n.name]:(t,r,o,i)=>{const s=n.view;return new nn(s,{editor:this,extension:n,parent:e,node:t,view:r,getPos:o,decorations:i})}}},{})}dispatchTransaction(e){const t=this.state.apply(e);this.view.updateState(t),this.selection={from:this.state.selection.from,to:this.state.selection.to},this.setActiveNodesAndMarks(),this.emit("transaction",{getHTML:this.getHTML.bind(this),getJSON:this.getJSON.bind(this),state:this.state,transaction:e}),e.docChanged&&!e.getMeta("preventUpdate")&&this.emitUpdate(e)}emitUpdate(e){this.emit("update",{getHTML:this.getHTML.bind(this),getJSON:this.getJSON.bind(this),state:this.state,transaction:e})}resolveSelection(e=null){if(this.selection&&null===e)return this.selection;if("start"===e||!0===e)return{from:0,to:0};if("end"===e){const{doc:e}=this.state;return{from:e.content.size,to:e.content.size}}return{from:e,to:e}}focus(e=null){if(this.view.focused&&null===e||!1===e)return;const{from:t,to:n}=this.resolveSelection(e);this.setSelection(t,n),setTimeout(()=>this.view.focus(),10)}setSelection(e=0,t=0){const{doc:n,tr:o}=this.state,i=cn(e,0,n.content.size),s=cn(t,0,n.content.size),a=r.TextSelection.create(n,i,s),c=o.setSelection(a);this.view.dispatch(c)}blur(){this.view.dom.blur()}getSchemaJSON(){return JSON.parse(JSON.stringify({nodes:this.extensions.nodes,marks:this.extensions.marks}))}getHTML(){const e=document.createElement("div"),t=o.DOMSerializer.fromSchema(this.schema).serializeFragment(this.state.doc.content);return e.appendChild(t),e.innerHTML}getJSON(){return this.state.doc.toJSON()}setContent(e={},t=!1,n){const{doc:o,tr:i}=this.state,s=this.createDocument(e,n),a=r.TextSelection.create(o,0,o.content.size),c=i.setSelection(a).replaceSelectionWith(s,!1).setMeta("preventUpdate",!t);this.view.dispatch(c)}clearContent(e=!1){this.setContent(this.options.emptyDocument,e)}setActiveNodesAndMarks(){this.activeMarks=Object.entries(this.schema.marks).reduce((e,[t,n])=>({...e,[t]:(e={})=>Object(Qt.d)(this.state,n,e)}),{}),this.activeMarkAttrs=Object.entries(this.schema.marks).reduce((e,[t,n])=>({...e,[t]:Object(Qt.a)(this.state,n)}),{}),this.activeNodes=Object.entries(this.schema.nodes).reduce((e,[t,n])=>({...e,[t]:(e={})=>Object(Qt.f)(this.state,n,e)}),{})}getMarkAttrs(e=null){return this.activeMarkAttrs[e]}getNodeAttrs(e=null){return{...Object(Qt.c)(this.state,this.schema.nodes[e])}}get isActive(){return Object.entries({...this.activeMarks,...this.activeNodes}).reduce((e,[t,n])=>({...e,[t]:(e={})=>n(e)}),{})}registerPlugin(e=null,t){const n="function"==typeof t?t(e,this.state.plugins):[e,...this.state.plugins],r=this.state.reconfigure({plugins:n});this.view.updateState(r)}unregisterPlugin(e=null){if(!e||!this.view.docView)return;const t=this.state.reconfigure({plugins:this.state.plugins.filter(t=>!t.key.startsWith("".concat(e,"$")))});this.view.updateState(t)}destroy(){this.view&&this.view.destroy()}}var mn={props:{editor:{default:null,type:Object}},watch:{editor:{immediate:!0,handler(e){e&&e.element&&this.$nextTick(()=>{this.$el.appendChild(e.element.firstChild),e.setParentComponent(this)})}}},render:e=>e("div"),beforeDestroy(){this.editor.element=this.$el}};class vn{constructor({options:e}){this.options=e,this.preventHide=!1,this.mousedownHandler=this.handleClick.bind(this),this.options.element.addEventListener("mousedown",this.mousedownHandler,{capture:!0}),this.blurHandler=(()=>{this.preventHide?this.preventHide=!1:this.options.editor.emit("menubar:focusUpdate",!1)}),this.options.editor.on("blur",this.blurHandler)}handleClick(){this.preventHide=!0}destroy(){this.options.element.removeEventListener("mousedown",this.mousedownHandler),this.options.editor.off("blur",this.blurHandler)}}var gn={props:{editor:{default:null,type:Object}},data:()=>({focused:!1}),watch:{editor:{immediate:!0,handler(e){e&&this.$nextTick(()=>{e.registerPlugin(function(e){return new r.Plugin({key:new r.PluginKey("menu_bar"),view:t=>new vn({editorView:t,options:e})})}({editor:e,element:this.$el})),this.focused=e.focused,e.on("focus",()=>{this.focused=!0}),e.on("menubar:focusUpdate",e=>{this.focused=e})})}}},render(){return this.editor?this.$scopedSlots.default({focused:this.focused,focus:this.editor.focus,commands:this.editor.commands,isActive:this.editor.isActive,getMarkAttrs:this.editor.getMarkAttrs.bind(this.editor),getNodeAttrs:this.editor.getNodeAttrs.bind(this.editor)}):null}};Object,Boolean;Object}}]); +//# sourceMappingURL=chunk-68ea.6d56674a.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-68ea.6d56674a.js.map b/priv/static/adminfe/static/js/chunk-68ea.6d56674a.js.map new file mode 100644 index 000000000..45000a1b0 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-68ea.6d56674a.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/marked/src/TextRenderer.js","webpack:///./node_modules/prosemirror-inputrules/dist/index.es.js","webpack:///./node_modules/marked/src/marked.js","webpack:///./node_modules/lowlight/node_modules/highlight.js/lib/core.js","webpack:///./node_modules/marked/src/Parser.js","webpack:///./node_modules/prosemirror-collab/dist/index.es.js","webpack:///./node_modules/rope-sequence/dist/index.es.js","webpack:///./node_modules/prosemirror-history/dist/index.es.js","webpack:///./node_modules/tiptap-extensions/dist/extensions.esm.js","webpack:///./node_modules/prosemirror-commands/dist/index.es.js","webpack:///./node_modules/fault/index.js","webpack:///./node_modules/prosemirror-transform/dist/index.es.js","webpack:///./node_modules/marked/src/Slugger.js","webpack:///./node_modules/orderedmap/index.es.js","webpack:///./node_modules/prosemirror-model/dist/index.es.js","webpack:///./node_modules/lowlight/lib/core.js","webpack:///./node_modules/marked/src/Renderer.js","webpack:///./node_modules/marked/src/Lexer.js","webpack:///./node_modules/prosemirror-state/dist/index.es.js","webpack:///./node_modules/prosemirror-view/dist/index.es.js","webpack:///./node_modules/prosemirror-tables/dist/index.es.js","webpack:///./node_modules/format/format.js","webpack:///./node_modules/marked/src/rules.js","webpack:///./node_modules/w3c-keyname/index.es.js","webpack:///./node_modules/prosemirror-keymap/dist/index.es.js","webpack:///./node_modules/marked/src/InlineLexer.js","webpack:///./node_modules/prosemirror-utils/dist/index.js","webpack:///./node_modules/tiptap-utils/dist/utils.esm.js","webpack:///./node_modules/prosemirror-schema-list/dist/index.es.js","webpack:///./node_modules/tiptap-commands/dist/commands.esm.js","webpack:///./node_modules/marked/src/helpers.js","webpack:///./node_modules/marked/src/defaults.js","webpack:///./node_modules/tiptap/node_modules/prosemirror-view/dist/index.es.js","webpack:///./node_modules/prosemirror-dropcursor/dist/index.es.js","webpack:///./node_modules/prosemirror-gapcursor/dist/index.es.js","webpack:///./node_modules/tiptap/dist/tiptap.esm.js"],"names":["module","exports","[object Object]","text","href","title","__webpack_require__","d","__webpack_exports__","InputRule","inputRules","textblockTypeInputRule","undoInputRule","wrappingInputRule","prosemirror_state__WEBPACK_IMPORTED_MODULE_0__","prosemirror_transform__WEBPACK_IMPORTED_MODULE_1__","match","handler","this","string","state","start","end","insert","offset","lastIndexOf","slice","length","cutOff","tr","insertText","stringHandler","MAX_MATCH","ref","rules","plugin","init","apply","prev","stored","getMeta","selectionSet","docChanged","props","handleTextInput","view","from","to","run","handleDOMEvents","compositionend","setTimeout","$cursor","selection","pos","isInputRules","composing","$from","doc","resolve","parent","type","spec","code","textBefore","textBetween","Math","max","parentOffset","i","exec","dispatch","setMeta","transform","plugins","undoable","getState","toUndo","j","steps","step","invert","docs","marks","replaceWith","schema","regexp","nodeType","getAttrs","joinPredicate","attrs","Function","delete","range","blockRange","wrapping","Object","wrap","before","nodeBefore","join","$start","node","canReplaceWith","index","indexAfter","setBlockType","Lexer","Parser","Renderer","TextRenderer","InlineLexer","Slugger","merge","checkSanitizeDeprecation","escape","getDefaults","changeDefaults","defaults","marked","src","opt","callback","Error","prototype","toString","call","highlight","tokens","pending","lex","e","done","err","out","parse","token","lang","escaped","message","silent","options","setOptions","parser","lexer","inlineLexer","output","deepFreeze","obj","freeze","objIsFunction","getOwnPropertyNames","forEach","prop","hasOwnProperty","isFrozen","Response","mode","undefined","data","ignore","escapeHTML","value","replace","inherit","original","objects","result","key","tag","nodeName","toLowerCase","utils","__proto__","nodeStream","_nodeStream","child","firstChild","nextSibling","nodeValue","push","event","mergeStreams","highlighted","processed","nodeStack","selectStream","open","map","attributes","attr","close","render","stream","substring","reverse","splice","pop","substr","SPAN_CLOSE","emitsWrappingTags","kind","HTMLRenderer","parseTree","buffer","classPrefix","walk","className","sublanguage","span","TokenTree","rootNode","children","stack","top","root","add","closeNode","JSON","stringify","builder","constructor","_walk","addText","openNode","every","el","_collapse","TokenTreeEmitter","super","emitter","name","source","re","C_NUMBER_RE","BACKSLASH_ESCAPE","begin","relevance","APOS_STRING_MODE","illegal","contains","QUOTE_STRING_MODE","PHRASAL_WORDS_MODE","COMMENT","modeOptions","C_LINE_COMMENT_MODE","C_BLOCK_COMMENT_MODE","HASH_COMMENT_MODE","NUMBER_MODE","C_NUMBER_MODE","BINARY_NUMBER_MODE","CSS_NUMBER_MODE","NUMBER_RE","REGEXP_MODE","TITLE_MODE","UNDERSCORE_TITLE_MODE","METHOD_GUARD","MODES","IDENT_RE","UNDERSCORE_IDENT_RE","BINARY_NUMBER_RE","RE_STARTERS_RE","SHEBANG","opts","beginShebang","binary","args","x","concat","on:begin","m","resp","ignoreMatch","END_SAME_AS_BEGIN","assign","_beginMatch","on:end","COMMON_KEYWORDS","split","compileLanguage","language","langRe","global","RegExp","case_insensitive","MultiRegex","matchIndexes","regexes","matchAt","position","countMatchGroups","terminators","matcherRe","regexps","separator","backreferenceRe","numCaptures","ret","String","Number","lastIndex","s","findIndex","matchData","ResumableMultiRegex","multiRegexes","count","regexIndex","matcher","addRule","compile","getMatcher","skipIfhasPrecedingOrTrailingDot","response","input","after","includes","compileMode","cmode","compiled","__beforeBegin","keywords","beginKeywords","kw_pattern","$pattern","rawKeywords","compiled_keywords","splitAndCompile","keys","keywordList","keyword","pair","providedScore","commonKeyword","scoreForKeyword","compileKeywords","lexemes","keywordPatternRe","beginRe","endSameAsBegin","endsWithParent","endRe","terminator_end","illegalRe","c","variants","cached_variants","variant","dependencyOnParent","starts","expand_or_clone_mode","mm","term","rule","buildModeRegex","escape$1","inherit$1","nodeStream$1","mergeStreams$1","NO_MATCH","Symbol","hljs","ArrayProto","languages","create","aliases","SAFE_MODE","fixMarkupRe","LANGUAGE_NOT_FOUND","PLAINTEXT_LANGUAGE","disableAutodetect","noHighlightRe","languageDetectRe","tabReplace","useBR","__emitter","shouldNotHighlight","languageName","test","ignoreIllegals","continuation","context","fire","_highlight","codeToHighlight","keywordData","matchText","processBuffer","subLanguage","mode_buffer","continuations","highlightAuto","addSublanguage","processSubLanguage","last_index","buf","keywordRelevance","addKeyword","processKeywords","startNewMode","doIgnore","lexeme","continueScanAtSamePosition","doBeginMatch","new_mode","beforeCallbacks","cb","skip","excludeBegin","returnBegin","doEndMatch","matchPlusRemainder","end_mode","endOfMode","matched","startsWith","endsParent","origin","returnEnd","excludeEnd","lastMatch","processLexeme","textBeforeMatch","badRule","iterations","getLanguage","console","error","md","list","current","unshift","item","processContinuations","considerAll","processedCount","closeAllNodes","finalize","toHTML","illegalBy","msg","sofar","errorRaised","languageSubset","justTextHighlightResult","secondBest","filter","autoDetection","second_best","fixMarkup","html","highlightBlock","element","block","classes","parentNode","warn","find","_class","blockLanguage","document","createElement","innerHTML","textContent","originalStream","resultNode","prevClassName","currentLang","resultLang","trim","buildClassName","relavance","initHighlighting","called","blocks","querySelectorAll","registerAliases","aliasList","alias","configure","userOptions","initHighlightingOnLoad","window","addEventListener","registerLanguage","languageDefinition","rawDefinition","bind","listLanguages","requireLanguage","addPlugin","debugMode","safeMode","versionString","HLJS","unescape","renderer","slugger","inline","links","inlineText","next","tok","body","peek","hr","heading","depth","row","cell","header","tablecell","align","tablerow","cells","table","blockquote","ordered","loose","checked","task","nextToken","checkbox","parseText","listitem","paragraph","errMsg","log","dist_index_es","RopeSequence","append","other","leafAppend","leafPrepend","appendInner","prepend","Append","empty","sliceInner","min","get","getInner","f","forEachInner","forEachInvertedInner","elt","values","Leaf","prototypeAccessors","configurable","flatten","defineProperties","left","right","leftLen","inner","rope_sequence_dist_index_es","Branch","items","eventCount","popEvent","preserveItems","this$1","remap","mapFrom","remapping","maps","remaining","addAfter","addBefore","Item","maybeStep","mapping","appendMap","addTransform","histOptions","newItems","oldItems","lastItem","merged","overflow","DEPTH_OVERFLOW","n","cutPoint","cutOffEvents","prosemirror_transform_dist_index_es","mirrorPos","mirrorOffset","addMaps","array","rebased","rebasedTransform","rebasedCount","rebasedItems","newUntil","iRebased","getMirror","newMaps","branch","emptyItemCount","compress","upto","events","getMap","newItem","last","HistoryState","undone","prevRanges","prevTime","rangesFor","_from","_to","mapRanges","ranges","histTransaction","history","redo","mustPreserveItems","historyKey","config","added","getBookmark","newHist","setSelection","historyState","scrollIntoView","cachedPreserveItems","cachedPreserveItemsPlugins","historyPreserveItems","closeHistoryKey","index_es_history","newGroupDelay","hist","historyTr","appended","newGroup","time","adjacent","isAdjacentTo","applyTransaction","undo","extensions_esm_Blockquote","tiptap_esm","content","group","defining","draggable","parseDOM","toDOM","commands_esm","nodes","Ctrl->","extensions_esm_BulletList","list_item","Shift-Ctrl-8","extensions_esm_CodeBlock","preserveWhitespace","Shift-Ctrl-\\","extensions_esm_Heading","defaultOptions","levels","level","default","reduce","extensions_esm_HorizontalRule","replaceSelectionWith","extensions_esm_ListItem","Enter","Tab","Shift-Tab","extensions_esm_OrderedList","order","dom","hasAttribute","getAttribute","Shift-Ctrl-9","childCount","prosemirror_tables_dist_index_es","tableGroup","cellContent","cellAttributes","background","getFromDOM","style","backgroundColor","extensions_esm_Bold","fontWeight","Mod-b","extensions_esm_Italic","Mod-i","extensions_esm_Link","openOnClick","target","inclusive","rel","url","handleClick","utils_esm","link","HTMLAnchorElement","stopPropagation","extensions_esm_Underline","Mod-u","extensions_esm_History","Mod-z","Mod-y","Shift-Mod-z","Mod-я","Shift-Mod-я","undoDepth","redoDepth","baseKeymap","chainCommands","exitCode","lift","toggleMark","wrapIn","prosemirror_transform__WEBPACK_IMPORTED_MODULE_0__","prosemirror_model__WEBPACK_IMPORTED_MODULE_1__","prosemirror_state__WEBPACK_IMPORTED_MODULE_2__","deleteSelection","textblockAt","side","lastChild","isTextblock","findCutBefore","$pos","isolating","findCutAfter","$to","defaultBlockAt","edgeCount","edge","hasRequiredAttrs","$head","$anchor","sameParent","above","contentMatchAt","createAndFill","near","splitBlock","isBlock","atEnd","size","deflt","types","can","canReplace","setNodeMarkup","deleteBarrier","$cut","conn","nodeAfter","compatibleContent","nodeSize","clearIncompatible","joinMaybeClear","findWrapping","matchType","validEnd","copy","joinAt","selAfter","findFrom","applicable","nodesBetween","hasMarkup","markType","loop","allowsMarkType","inlineContent","v","returned","markApplies","isInSet","storedMarks","removeStoredMark","addStoredMark","has","ref$1","rangeHasMark","i$1","ref$2","$from$1","$to$1","removeMark","addMark","commands","len","arguments","backspace","endOfTextblock","isSelectable","deleteRange","isAtom","del","pcBaseKeymap","Mod-Enter","Backspace","Mod-Backspace","Delete","Mod-Delete","Mod-a","macBaseKeymap","Ctrl-h","Alt-Backspace","Ctrl-d","Ctrl-Alt-Backspace","Alt-Delete","Alt-d","navigator","platform","os","formatter","fault","EConstructor","FormattedError","displayName","format","eval","EvalError","RangeError","reference","ReferenceError","syntax","SyntaxError","TypeError","uri","URIError","Mapping","ReplaceAroundStep","ReplaceStep","Step","Transform","canJoin","canSplit","dropPoint","joinPoint","liftTarget","prosemirror_model__WEBPACK_IMPORTED_MODULE_0__","lower16","factor16","pow","makeRecover","recoverIndex","MapResult","deleted","recover","StepMap","inverted","diff","recoverOffset","mapResult","assoc","_map","simple","oldIndex","newIndex","oldSize","newSize","touches","oldStart","newStart","mirror","TransformError","mirrors","setMirror","appendMapping","startSize","mirr","appendMappingInverted","totalSize","inverse","corr","mustOverride","object","failed","addStep","stepsByID","_doc","_mapping","_other","toJSON","fromJSON","json","stepType","jsonID","id","stepClass","StepResult","ok","fail","fromReplace","structure","contentBetween","openEnd","openStart","slice$1","gapFrom","gapTo","gap","inserted","insertAt","removeBetween","dist","maybeChild","isLeaf","canCut","cutByIndex","startIndex","endIndex","innerRange","around","outer","findWrappingOutside","inside","contentMatch","innerMatch","findWrappingInside","withAttrs","typesAfter","base","innerType","validContent","index$1","rest","replaceChild","baseType","joinable","a","b","canAppend","dir","pass","bias","insertPos","mapFragment","fragment","mapped","isInline","fromArray","gapStart","gapEnd","splitting","d$1","splitting$1","wrappers","canChangeType","startM","endM","nodeAt","newNode","typeAfter","AddMarkStep","mark","oldSlice","sharedDepth","addToSet","RemoveMarkStep","eq","markFromJSON","removeFromSet","fitsTrivially","removed","removing","adding","newSet","toRemove","found","found$1","parentType","delSteps","cur","allowed","fill","fillBefore","Fitter","fit","replaceStep","unplaced","frontier","placed","prototypeAccessors$1","dropFromFragment","addToFragment","contentAt","closeNodeStart","frag","matchFragment","contentAfterFits","allowsMarks","invalidMarks","closeFragment","oldOpen","newOpen","first","coveredDepths","findFittable","placeNodes","openMore","dropNode","moveInline","mustMoveInline","placedSize","sliceDepth","frontierDepth","inject","openAtEnd","closeFrontierNode","openFrontierNode","taken","openEndCount","matches","allowedMarks","toEnd","i$2","findCloseLevel","scan","dropInner","match$1","move","replaceRange","targetDepths","preferredTarget","indexOf","preferredTargetIndex","leftNodes","preferredDepth","openDepth","targetDepth","expand","startSteps","replaceRangeWith","point","insertPoint","covered","seen","slug","originalSlug","OrderedMap","update","newKey","self","remove","addToStart","addToEnd","place","without","subtract","index_es","Fragment","nodeStart","descendants","blockSeparator","leafText","separated","isText","sameMarkup","withText","cut","p","findDiffStart","childA","childB","findDiffEnd","otherPos","posA","posB","iA","iB","same","minSize","round","retIndex","curPos","toStringInner","Array","isArray","nodeFromJSON","joined","compareDeep","p$1","Mark","ReplaceError","set","excludes","rank","_","sameSet","setFrom","none","sort","Slice","replaceOuter","$along","extra","resolveNoCache","prepareSliceForReplace","index_es_close","replaceThreeWay","$end","addRange","checkJoin","addNode","replaceTwoWay","main","sub","$before","$after","textOffset","insertInto","removeRange","indexTo","offsetTo","maxOpen","openIsolating","n$1","ResolvedPos","path","prototypeAccessors$2","resolveDepth","val","dOff","tmp","marksAcross","pred","NodeRange","str","rem","resolveCached","resolveCache","cached","resolveCachePos","resolveCacheSize","prototypeAccessors$1$1","emptyAttrs","Node","prototypeAccessors$3","startPos","defaultAttrs","includeParents","childAfter","childBefore","toDebugString","wrapMarks","replacement","one","two","check","TextNode","ContentMatch","wrapCache","prototypeAccessors$4","defaultType","nodeTypes","TokenStream","expr","parseExpr","nfa","labeled","explore","states","known","nullFrom","states$1","cmp","dfa","connect","exprs","loop$1","next$1","next$2","edges","work","dead","checkForDeadEnds","compatible","search","finished","tp","computed","computeWrapping","active","via","shift","prototypeAccessors$1$2","parseExprSeq","eat","parseExprSubscript","typeName","type$1","groups","resolveName","parseExprAtom","parseExprRange","parseNum","attrName","hasDefault","computeAttrs","built","given","initAttrs","Attribute","NodeType","markSet","prototypeAccessors$5","atom","isRequired","createChecked","topType","topNode","prototypeAccessors$1$3","MarkType","excluded","instance","index_es_Schema","contentExprCache","prop$1","contentExpr","markExpr","gatherMarks","prop$2","excl","topNodeType","wrappings","mark$1","text$1","DOMParser","tags","styles","ParseContext","addAll","finish","parseSlice","matchTag","namespace","namespaceURI","matchesContext","matchStyle","charCodeAt","schemaRules","priority","rules$1","name$1","fromSchema","domParser","blockTags","address","article","aside","canvas","dd","div","dl","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","hgroup","li","noscript","ol","pre","section","tfoot","ul","ignoreTags","head","script","listTags","OPT_PRESERVE_WS","OPT_PRESERVE_WS_FULL","wsOptionsFor","NodeContext","pendingMarks","solid","activeMarks","applyPending","nextType","markMayApply","isOpen","topContext","topOptions","topMatch","findPositions","needsBlock","prototypeAccessors$6","currentPos","selector","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","addDOM","addTextNode","readStyles","parseStyles","addPendingMark","addElement","removePendingMark","domNodeBefore","previousSibling","insertNode","findInText","findInside","prevItem","appendChild","normalizeList","ruleFromNode","sync","oldNeedsBlock","leafFallback","addElementByRule","ownerDocument","createTextNode","enter","startIn","getContent","contentDOM","contentElement","querySelector","findAround","childNodes","findAtPoint","findPlace","route","cx","enterInner","textblockFromContext","closeExtra","preserveWS","topOpen","compareDocumentPosition","textNode","some","parts","option","useRoot","minDepth","part","$context","DOMSerializer","gatherToDOM","serializeFragment","createDocumentFragment","keep","rendered","spanning","markDOM","serializeMark","serializeNode","renderSpec","onContent","serializeNodeAndMarks","xmlNS","tagName","space","createElementNS","space$1","setAttributeNS","setAttribute","innerContent","domSerializer","nodesFromSchema","marksFromSchema","high","settings","subset","prefix","defaultPrefix","registerAlias","Emitter","tail","results","properties","noop","cleanUrl","infostring","langPrefix","quote","raw","headerIds","headerPrefix","xhtml","flags","sanitize","baseUrl","rtrim","splitCells","normal","pedantic","gfm","cap","bull","listStart","listItems","t","l","isordered","istask","ischecked","newline","lastToken","trimRight","codeBlockStyle","fences","nptable","bullet","smartLists","charAt","sanitizer","def","lheading","r","AllSelection","EditorState","NodeSelection","Plugin","PluginKey","Selection","SelectionRange","TextSelection","Transaction","classesById","anchor","lastNode","lastParent","selectionToInsertionEnd","textOnly","findSelectionIn","atStart","cls","selectionClass","between","visible","ensureMarks","TextBookmark","dPos","NodeBookmark","selectable","sel","AllBookmark","startLen","_newFrom","newTo","Date","now","curSelection","curSelectionFor","updated","meta","storedMarksSet","isGeneric","scrolledIntoView","setStoredMarks","setTime","replaceSelection","inheritMarks","FieldDesc","desc","baseFields","_marks","_old","Configuration","fields","pluginsByKey","filterTransaction","rootTr","transactions","trs","newState","applyInner","haveNew","appendTransaction","oldState","newInstance","field","applyListeners","$config","reconfigure","pluginFields","addApplyListener","removeApplyListener","bindProps","createKey","Decoration","DecorationSet","prosemirror_transform__WEBPACK_IMPORTED_MODULE_2__","ie_edge","userAgent","ie_upto10","ie_11up","mac","ie","ie_version","documentMode","gecko","gecko_version","chrome","chrome_version","ios","android","webkit","documentElement","safari","vendor","webkit_version","domIndex","host","textRange","createRange","setEnd","setStart","isEquivalentPosition","off","targetNode","targetOff","scanFor","atomElements","hasBlockDesc","contentEditable","pmViewDesc","selectionCollapsed","domSel","collapsed","isCollapsed","rangeCount","getRangeAt","keyEvent","keyCode","createEvent","initEvent","windowRect","clientWidth","bottom","clientHeight","getSide","clientRect","rect","getBoundingClientRect","scrollRectIntoView","startDOM","scrollThreshold","someProp","scrollMargin","atTop","bounding","moveX","moveY","defaultView","scrollBy","startX","scrollLeft","startY","scrollTop","dX","dY","scrollStack","restoreScrollStack","dTop","preventScrollSupported","findOffsetInNode","coords","closest","coordsClosest","dxClosest","rowBot","rowTop","childIndex","rects","getClientRects","dx","singleRect","inRect","findOffsetInText","posAtCoords","assign$1","caretPositionFromPoint","pos$1","offsetNode","caretRangeFromPoint","startContainer","startOffset","elementFromPoint","box","startI","floor","targetKludge","box$1","outside","docView","nearestDesc","posBefore","posAfter","posFromDOM","posFromCaret","posFromElement","posAtStart","border","coordsAtPos","domFromPos","rectBefore","rectAfter","flattenV","rect$1","height","y","flattenH","rect$2","target$1","rect$3","width","withFlushedState","viewState","activeElement","updateState","focus","maybeRTL","cachedState","cachedDir","cachedResult","nearest","boxes","endOfTextblockVertical","getSelection","modify","oldRange","oldNode","focusNode","oldOff","focusOffset","oldBidiLevel","caretBidiLevel","domAfterPos","removeAllRanges","endOfTextblockHorizontal","ViewDesc","dirty","beforePosition","posAtEnd","contentLost","matchesWidget","matchesMark","matchesNode","matchesHack","parseRule","stopEvent","destroy","posBeforeChild","localPosFromDOM","domBefore","domAfter","desc$1","search$1","onlyNodes","getDesc","nodeDOM","descAt","parseRange","fromOffset","toOffset","childBase","emptyChildAt","j$1","force","anchorDOM","headDOM","brKludge","anchorNode","anchorOffset","domSelExtended","extend","collapse","DOMException","ignoreMutation","mutation","markDirty","startInside","endInside","markParentsDirty","nothing","WidgetViewDesc","widget","classList","stop","ignoreSelection","CompositionViewDesc","textDOM","mut","oldValue","MarkViewDesc","custom","nodeViews","replaceNodes","NodeViewDesc","outerDeco","innerDeco","updateChildren","descObj","applyOuterDeco","CustomNodeViewDesc","TextViewDesc","reparseInView","sameOuterDeco","composition","localCompositionNode","updater","ViewTreeUpdater","deco","onWidget","onNode","locals","forChild","decoIndex","restNode","parentIndex","widgets","compareSide","child$1","cutAt","i$3","iterDeco","insideNode","syncToMarks","placeWidget","findNodeMatch","updateNextNode","addTextblockHacks","destroyRest","changed","protectLocalComposition","renderDescs","parentDOM","descs","written","childDOM","rm","insertBefore","trackWrites","oldCSS","cssText","getComputedStyle","listStyle","iosHacks","nearbyTextNode","textPos","childStart","findTextInFragment","removeChild","compositionNodes","updateInner","updateOuterDeco","needsWrap","oldDOM","patchOuterDeco","computeOuterDeco","selectNode","deselectNode","removeAttribute","docViewDesc","pmIsDeco","inParent","BRHackViewDesc","OuterDecoLevel","noDeco","class","outerDOM","prevComputed","curComputed","curDOM","patchAttributes","prevList","curList","removeProperty","lockedNode","lock","preMatch","preMatched","preMatchOffset","selectionFromDOM","inWidget","isOnEdge","selectionBetween","selectionToDOM","syncNodeSelection","editable","hasFocus","hasSelection","domObserver","disconnectSelection","cursorWrapper","img","disabled","selectCursorWrapper","resetEditableFrom","resetEditableTo","brokenSelectBetweenUneditable","temporarilyEditableNear","resetEditable","removeEventListener","hideSelectionGuard","removeClassOnSelectionChange","setCurSelection","connectSelection","getPreMatch","destroyBetween","maxKeep","markDesc","nextDOM","setEditable","wasDraggable","lastSelectedViewDesc","clearNodeSelection","moveSelectionBlock","$side","selectHorizontally","mods","nodePos","nodeLen","isIgnorable","skipIgnoredNodesLeft","moveNode","moveOffset","isBlockNode","setSelFocus","skipIgnoredNodesRight","selectVertically","beyond","stopNativeHorizontalDelete","nextNode","switchEditable","captureKeyDown","ctrlKey","metaKey","altKey","shiftKey","getMods","safariDownArrowBug","readDOMChange","typeOver","addedNodes","lastSelectionTime","lastSelectionOrigin","newSel","tr$1","shared","preferredPos","preferredSide","from_","to_","lastKeyCode","startDoc","editableContent","anchor$1","parseBetween","compare","lastKeyCodeTime","change","endA","endB","adjust","move$1","findDiff","sel$1","resolveSelection","domChangeCount","nextSel","inlineChange","lastIOSEnter","old","$newStart","$newEnd","skipClosingAndOpening","$next","looksLikeJoin","suppressSelectionUpdates","markChange","$from1","chFrom","chTo","curMarks","prevMarks","isMarkChange","sel$2","parsedSel","fromEnd","mayOpen","serializeForClipboard","serializer","detachedDoc","wrapMap","wrapper","parseFromClipboard","plainText","inCode","asText","parsed","metas","firstTag","readHTML","contextNode","sliceData","addContext","closeRange","closeSlice","lastWrap","inLast","addToSibling","sibling","withWrappers","closeRight","wrapped","normalizeSiblings","thead","tbody","caption","colgroup","col","td","th","_detachedDoc","implementation","createHTMLDocument","observeOptions","childList","characterData","characterDataOldValue","attributeOldValue","subtree","useCharData","SelectionState","DOMObserver","handleDOMChange","queue","flushingSoon","observer","MutationObserver","mutations","removedNodes","flushSoon","flush","currentSelection","onCharData","prevValue","onSelectionChange","suppressingSelectionUpdates","forceFlush","clearTimeout","observe","take","takeRecords","disconnect","hasFocusAndSelection","ignoreSelectionChange","container","commonAncestorContainer","result$1","registerMutation","brs","cssChecked","whiteSpace","checkCSS","attributeName","handlers","editHandlers","setSelectionOrigin","ensureListeners","currentHandlers","eventHandlers","runCustomHandler","defaultPrevented","eventCoords","clientX","clientY","runHandlerOnContext","propName","updateSelection","focused","handleSingleClick","selectedNode","selectAt","selectClickedNode","selectClickedLeaf","handleTripleClick","defaultTripleClick","forceDOMFlush","endComposition","keydown","inOrNearComposition","preventDefault","lastIOSEnterFallbackTimeout","keyup","keypress","charCode","fromCharCode","selectNodeModifier","mousedown","flushed","lastClick","click","dy","isNear","mouseDown","MouseDown","targetPos","allowDefault","mightDrag","targetDesc","addAttr","setUneditable","up","abs","timeStamp","compositionEndedAt","touchdown","contextmenu","timeoutComposition","scheduleComposeEnd","delay","composingTimeout","clearComposition","forceUpdate","compositionstart","compositionupdate","markCursor","brokenClipboardAPI","doPaste","singleNode","sliceSingleNode","clipboardData","clearData","setData","selectNodeContents","blur","captureCopy","paste","getData","files","capturePaste","dragCopyModifier","dragstart","dataTransfer","dragging","dragend","dragover","dragenter","drop","eventPos","$mouse","isNode","beforeInsert","beforeinput","inputType","compareObjs","WidgetType","noSpec","oldOffset","valid","InlineType","inclusiveStart","inclusiveEnd","is","local","decorations","buildTree","predicate","findInner","childOff","mapInner","newLocal","onRemove","oldChildren","oldEnd","newEnd","dSize","mustRebuild","fromLocal","toLocal","childOffset","childNode","gather","mapAndGatherRemainingDecorations","from$1","byPos","mapChildren","addInner","baseOffset","takeSpansForNode","moveSpans","withoutNulls","removeInner","span$1","dec","localSet","DecorationGroup","removeOverlap","localsInner","members","spans","hasNulls","localStart","working","insertAhead","viewDecorations","sorted","EditorView","_props","_root","mount","mounted","getEditable","updateCursorWrapper","buildNodeViews","computeDocDeco","bubbles","eventBelongsToView","initInput","pluginViews","updatePluginViews","contenteditable","updateStateInner","setProps","reconfigured","redraw","updateSel","nA","nB","changedNodeViews","scroll","scrollToSelection","updateDoc","oldScrollPos","overflowAnchor","refDOM","refTop","innerHeight","localRect","storeScrollPos","forceSelUpdate","sel1","sel2","selectionContextChanged","chromeKludge","anchorInRightPlace","newRefTop","resetScrollPos","destroyPluginViews","prevState","pluginView","setActive","preventScroll","focusPreventScroll","getPrototypeOf","domAtPos","posAtDOM","destroyInput","dispatchEvent","dispatchTransaction","CellSelection","TableMap","TableView","clipCells","insertCells","pastedCells","addColSpan","addColumn","addColumnAfter","addColumnBefore","addRow","addRowAfter","addRowBefore","cellAround","colCount","columnIsHeader","columnResizing","key$1","deleteColumn","deleteRow","deleteTable","findCell","fixTables","fixTablesKey","goToNextCell","handlePaste","inSameTable","isInTable","mergeCells","moveCellForward","nextCell","pointsAtCell","removeColSpan","removeColumn","removeRow","rowIsHeader","selectedRect","selectionCell","setAttr","setCellAttr","splitCell","splitCellWithType","tableEditing","tableNodeTypes","tableNodes","toggleHeader","toggleHeaderCell","toggleHeaderColumn","toggleHeaderRow","updateColumns","readFromCache","addToCache","prosemirror_keymap__WEBPACK_IMPORTED_MODULE_2__","prosemirror_view__WEBPACK_IMPORTED_MODULE_3__","prosemirror_transform__WEBPACK_IMPORTED_MODULE_4__","WeakMap","cache","cache$1","cachePos","Rect","problems","freshColWidth","colwidth","colspan","getCellAttrs","extraAttrs","widthAttr","widths","rowspan","getter","setCellAttrs","setter","setDOMAttr","cellAttrs","tableRole","table_row","table_cell","table_header","role","axis","rectBetween","leftA","rightA","topA","bottomA","leftB","rightB","topB","bottomB","cellsInRect","positionAt","rowStart","rowEnd","rowEndIndex","hasRowSpan","rowNode","rowWidth","prevRow","cell$1","findWidth","mapPos","colWidths","cellNode","h","w","colW","widthIndex","expectedPos","missing","tableMap","badWidths","colWidth","findBadColWidths","computeMap","$anchorCell","$headCell","role$1","cellNear","$a","$b","moved","headerCell","header_cell","tableChanged","isRowSelection","rowSelection","isColSelection","colSelection","rows","rowContent","cellRect","extraLeft","extraRight","attrs$1","forEachCell","anchorTop","headTop","anchorBot","headBot","anchorRect","headRect","anchorLeft","headLeft","anchorRight","headRight","anchorCell","headCell","CellBookmark","drawCellSelection","fitSlice","r$1","r$2","ensureRectangular","newWidth","newHeight","newRows","newRows$1","row$1","cells$1","isolateHorizontal","cellTop","cellLeft","isolateVertical","updatePos","tableStart","recomp","emptyHead","start$1","emptyRow","growTable","handleKeyDown","ArrowLeft","arrow","ArrowRight","ArrowUp","ArrowDown","Shift-ArrowLeft","shiftArrow","Shift-ArrowRight","Shift-ArrowUp","Shift-ArrowDown","deleteCellSelection","maybeSetSelection","atEndOfCell","$cell","baseContent","handleMouseDown","startEvent","startDOMCell","domInCell","setCellSelection","cellUnderMouse","starting","cellPos","dirStr","mousePos","tablePos","mustAdd","prob","cell$2","tableNodeType","fixTable","changedDescendants","curSize","refColumn","mapStart","rowPos","refRow","nextRow","newPos","isEmpty","indexTop","indexLeft","indexBottom","indexRight","cellsOverlapRectangle","mergedPos","mergedCell","getCellType","cellWrapping","baseAttrs","lastCell","isHeaderEnabledByType","cellPositions","useDeprecatedLogic","deprecated_toggleHeader","isHeaderRowEnabled","isHeaderColumnEnabled","selectionStartsAt","cellsRect","newType","relativeCellPos","direction","rowNode$1","findNextCell","cellMinWidth","overrideCol","overrideValue","totalWidth","fixedWidth","hasWidth","cssWidth","minWidth","record","handleWidth","View","lastColumnResizable","ResizeState","activeHandle","mousemove","pluginState","domCellAround","edgeCell","updateHandle","handleMouseMove","mouseleave","handleMouseLeave","domWidth","offsetWidth","currentColWidth","mapIndex","zeroes","updateColumnWidth","draggedWidth","setDragging","which","dragged","displayColumnWidth","startWidth","handleMouseDown$1","handleDecorations","setHandle","allowTableNodeSelection","createSelectionBetween","normalize","afterFrom","beforeTo","isCellBoundarySelection","fromCellBoundaryNode","toCellBoundaryNode","node$1","isTextSelectionAcrossCells","normalizeSelection","action","handle","fmt","arg","precision","argIndex","leadingZero","nextArg","slurpNumber","digits","parseInt","parseFloat","toFixed","toUpperCase","vsprintf","replacements","printf","noopTest","edit","_paragraph","_label","_title","getRegex","_tag","_comment","autolink","reflink","nolink","strong","em","br","_punctuation","_escapes","_scheme","_email","_attribute","_href","_extended_email","_backpedal","breaks","8","9","10","12","13","16","17","18","20","27","32","33","34","35","36","37","38","39","40","44","45","46","59","61","91","92","106","107","108","109","110","111","144","145","160","161","162","163","164","165","173","186","187","188","189","190","191","192","219","220","221","222","229","48","49","50","51","52","53","54","55","56","57","brokenModifierNames","index_es_mac","normalizeKeyName","alt","ctrl","mod","modifiers","keymap","bindings","keydownHandler","baseName","keyName","isChar","direct","fromCode","withShift","findClosingBracket","prevCapZero","inLink","inRawBlock","lastParenIndex","linkLen","outputLink","escapes","codespan","mangle","smartypants","image","ch","random","defineProperty","prosemirrorState","prosemirrorModel","prosemirrorTables","replaceParentNodeOfType","findParentNodeOfType","newTr","replaceNodeAtPos","replaceSelectedNode","isNodeSelection","_tr$selection","cloneTr","setTextSelection","nextSelection","isSelectableNode","shouldSelectNode","safeInsert","tryToReplace","hasPosition","$insertPos","isEmptyParagraph","canInsert","_pos","_pos2","equalNodeType","removeNodeAtPos","roles","createCell","cellType","isRectSelected","selectedCells","transpose","column","convertTableNodeToArrayOfRows","tableNode","rowIndex","rowCells","colIndex","convertArrayOfRowsToTableNode","arrayOfNodes","rowsPM","newCell","moveRowInArrayOfRows","indexesOrigin","indexesTarget","directionOverride","rowsExtracted","positionOffset","checkInvalidMovements","originIndex","targetIndex","targets","errorMessage","findParentNode","_ref","findParentNodeClosestToPos","findParentDomRef","findDomRefAtPos","hasParentNode","findPositionOfNodeBefore","maybeSelection","TEXT_NODE","descend","findChildren","findChildrenByType","findTable","isCellSelection","isTableSelected","getCellsInColumn","columnIndex","acc","getCellsInRow","select","findCellClosestToPos","selRect","cellsInFirstRow","cellsInLastRow","selectColumn","selectRow","cloneRowAt","cloneRow","rowSpanCells","_loop","_i","foundCells","filterCellsInRow","arr","arr2","_toConsumableArray","removeColumnAt","removeTable","removeRowAt","findCellRectClosestToPos","findTableClosestToPos","getSelectionRangeInColumn","_loop2","maybeEndIndex","_loop3","indexes","maybeCells","firstSelectedColumnCells","firstRowCells","_i3","columnCells","getSelectionRangeInRow","_loop4","_loop5","firstSelectedRowCells","firstColumnCells","_i4","findParentNodeOfTypeClosestToPos","hasParentNodeOfType","findParentDomRefOfType","findSelectedNodeOfType","findTextNodes","findInlineNodes","findBlockNodes","findChildrenByAttr","findChildrenByMark","getSelectionRect","isColumnSelected","isRowSelected","getCellsInTable","selectTable","emptyCell","addColumnAt","moveRow","originRowIndex","targetRowIndex","tryToFit","indexesOriginRow","indexesTargetRow","newTable","moveTableRow","moveColumn","originColumnIndex","targetColumnIndex","indexesOriginColumn","indexesTargetColumn","moveTableColumn","addRowAt","clonePreviousRow","cloneRowIndex","removeSelectedColumns","pmTableRect","removeSelectedRows","removeColumnClosestToPos","removeRowClosestToPos","forEachCellInColumn","cellTransform","setCursorToLastCell","forEachCellInRow","createTable","rowsCount","colsCount","withHeaderRow","_tableNodeTypes","tableCell","tableHeader","tableRow","headerCells","_i2","removeParentNodeOfType","removeSelectedNode","setParentNodeMarkup","selectParentNodeOfType","removeNodeBefore","_defineProperty","enumerable","writable","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","getOwnPropertyDescriptors","_arrayLikeToArray","_arrayWithoutHoles","iter","iterator","_iterableToArray","o","minLen","_unsupportedIterableToArray","_nonIterableSpread","getMarkAttrs","_state$selection","markItem","getNodeAttrs","nodeItem","getMarkRange","endPos","markIsActive","nodeEqualsType","nodeIsActive","prosemirror_utils__WEBPACK_IMPORTED_MODULE_0__","wrapInList","listType","doJoin","outerRange","$insert","prosemirror_model_dist_index_es","joinBefore","splitDepth","splitPos","doWrapInList","splitListItem","itemType","grandParent","keepItem","liftListItem","endOfList","liftToOuterList","indexBefore","liftOutOfList","sinkListItem","nestedBefore","markInputRule","prosemirror_inputrules_dist_index_es","markEnd","markStart","matchStart","matchEnd","textStart","textEnd","getMarksBetween","nodeInputRule","pasteRule","prosemirror_state_dist_index_es","transformPasted","markPasteRule","isLink","replaceText","splitToDefaultListItem","toggleBlockType","toggletype","isList","bullet_list","ordered_list","todo_list","toggleList","parentList","toggleWrap","updateMark","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","&","<",">","\"","'","getEscapeReplacement","unescapeTest","caret","nonWordAndColonTest","originIndependentUrl","baseUrls","justDomain","protocol","domain","resolveUrl","relativeBase","suffLen","currChar","encode","regex","prot","decodeURIComponent","encodeURI","curr","newDefaults","index_es_result","index_es_ViewDesc","geckoKludge","index_es_MarkViewDesc","index_es_NodeViewDesc","chromeDownArrowBug","index_es_MouseDown","index_es_empty","DropCursorView","editorView","color","cursorPos","timeout","updateOverlay","setCursor","nodeRect","offsetParent","parentRect","pageXOffset","pageYOffset","scheduleRemoval","dragleave","relatedTarget","index_es_GapCursor","GapCursor","GapBookmark","closedBefore","closedAfter","override","allowGapCursor","mustMove","$cur","$cur$1","gapCursor","drawGapCursor","_view","prosemirror_keymap_dist_index_es","$found","prosemirror_view_dist_index_es","tiptap_esm_ComponentView","component","editor","extension","getPos","isMark","getMarkPos","captureEvents","createDOM","vm","$refs","Component","vue_runtime_esm","selected","updateAttrs","propsData","$mount","$el","updateComponentProps","originalSilent","entries","newAttrs","transaction","dragHandle","once","isCopy","isPaste","isCut","isDrag","resolvedPos","$destroy","fn","_callbacks","callbacks","Extension","tiptap_esm_ExtensionManager","extensions","bindEditor","Proxy","allPlugins","extensionKeymaps","nodeMarkKeymaps","excludedExtensions","allowedExtensions","extensionInputRules","nodeMarkInputRules","allInputRules","extensionPasteRules","pasteRules","nodeMarkPasteRules","allPasteRules","allCommands","_name","_value","commandName","commandValue","minMax","Doc","tiptap_esm_Paragraph","Text","css","tiptap_esm_Editor","editorProps","autoFocus","emptyDocument","useBuiltInExtensions","disableInputRules","disablePasteRules","dropCursor","enableDropCursor","enableGapCursor","parseOptions","injectCSS","onInit","onTransaction","onUpdate","onFocus","onBlur","onPaste","onDrop","createExtensions","createNodes","createMarks","createSchema","createPlugins","keymaps","createKeymaps","createInputRules","createPasteRules","createView","createCommands","setActiveNodesAndMarks","on","word","camelCase","emit","builtInExtensions","createDocument","prosemirror_commands_dist_index_es","tabindex","htmlString","parseFromString","firstElementChild","createState","handleDrop","initNodeViews","getHTML","getJSON","emitUpdate","resolvedFrom","resolvedEnd","setContent","activeMarkAttrs","activeNodes","isActive","handlePlugins","EditorContent","watch","immediate","$nextTick","setParentComponent","Menu","preventHide","mousedownHandler","capture","blurHandler","EditorMenuBar","registerPlugin","MenuBar","$scopedSlots","Boolean"],"mappings":"yFAIAA,EAAAC,cAEAC,OAAAC,GACA,OAAAA,EAGAD,GAAAC,GACA,OAAAA,EAGAD,SAAAC,GACA,OAAAA,EAGAD,IAAAC,GACA,OAAAA,EAGAD,KAAAC,GACA,OAAAA,EAGAD,KAAAC,GACA,OAAAA,EAGAD,KAAAE,EAAAC,EAAAF,GACA,SAAAA,EAGAD,MAAAE,EAAAC,EAAAF,GACA,SAAAA,EAGAD,KACA,gDCvCAI,EAAAC,EAAAC,EAAA,sBAAAC,IAAAH,EAAAC,EAAAC,EAAA,sBAAAE,IAAAJ,EAAAC,EAAAC,EAAA,sBAAAG,IAAAL,EAAAC,EAAAC,EAAA,sBAAAI,IAAAN,EAAAC,EAAAC,EAAA,sBAAAK,IAAA,IAAAC,EAAAR,EAAA,QAAAS,EAAAT,EAAA,QAOAG,EAAA,SAAAO,EAAAC,GACAC,KAAAF,QACAE,KAAAD,QAAA,iBAAAA,EAGA,SAAAE,GACA,gBAAAC,EAAAJ,EAAAK,EAAAC,GACA,IAAAC,EAAAJ,EACA,GAAAH,EAAA,IACA,IAAAQ,EAAAR,EAAA,GAAAS,YAAAT,EAAA,IACAO,GAAAP,EAAA,GAAAU,MAAAF,EAAAR,EAAA,GAAAW,QAEA,IAAAC,GADAP,GAAAG,GACAF,EACAM,EAAA,IACAL,EAAAP,EAAA,GAAAU,MAAAF,EAAAI,EAAAJ,GAAAD,EACAF,EAAAC,GAGA,OAAAF,EAAAS,GAAAC,WAAAP,EAAAF,EAAAC,IAhBAS,CAAAd,MAoBA,IAAAe,EAAA,IAMA,SAAAtB,EAAAuB,GACA,IAAAC,EAAAD,EAAAC,MAEAC,EAAA,IAAmBrB,EAAA,QACnBM,OACAgB,KAAA,WAA6B,aAC7BC,MAAA,SAAAR,EAAAS,GACA,IAAAC,EAAAV,EAAAW,QAAAtB,MACA,OAAAqB,IACAV,EAAAY,cAAAZ,EAAAa,WAAA,KAAAJ,KAIAK,OACAC,gBAAA,SAAAC,EAAAC,EAAAC,EAAA5C,GACA,OAAA6C,EAAAH,EAAAC,EAAAC,EAAA5C,EAAA+B,EAAAC,IAEAc,iBACAC,eAAA,SAAAL,GACAM,WAAA,WACA,IACAC,EADAP,EAAAzB,MAAAiC,UACAD,QACAA,GAA0BJ,EAAAH,EAAAO,EAAAE,IAAAF,EAAAE,IAAA,GAAApB,EAAAC,QAM1BoB,cAAA,IAEA,OAAApB,EAGA,SAAAa,EAAAH,EAAAC,EAAAC,EAAA5C,EAAA+B,EAAAC,GACA,GAAAU,EAAAW,UAAuB,SACvB,IAAApC,EAAAyB,EAAAzB,MAAAqC,EAAArC,EAAAsC,IAAAC,QAAAb,GACA,GAAAW,EAAAG,OAAAC,KAAAC,KAAAC,KAAoC,SAGpC,IAFA,IAAAC,EAAAP,EAAAG,OAAAK,YAAAC,KAAAC,IAAA,EAAAV,EAAAW,aAAApC,GAAAyB,EAAAW,aACA,UAAAjE,EACAkE,EAAA,EAAiBA,EAAAnC,EAAAP,OAAkB0C,IAAA,CACnC,IAAArD,EAAAkB,EAAAmC,GAAArD,MAAAsD,KAAAN,GACAnC,EAAAb,GAAAkB,EAAAmC,GAAApD,QAAAG,EAAAJ,EAAA8B,GAAA9B,EAAA,GAAAW,OAAAxB,EAAAwB,QAAAoB,GACA,GAAAlB,EAEA,OADAgB,EAAA0B,SAAA1C,EAAA2C,QAAArC,GAAsCsC,UAAA5C,EAAAiB,OAAAC,KAAA5C,WACtC,EAEA,SAMA,SAAAS,EAAAQ,EAAAmD,GAEA,IADA,IAAAG,EAAAtD,EAAAsD,QACAL,EAAA,EAAiBA,EAAAK,EAAA/C,OAAoB0C,IAAA,CACrC,IAAAlC,EAAAuC,EAAAL,GAAAM,OAAA,EACA,GAAAxC,EAAA2B,KAAAP,eAAAoB,EAAAxC,EAAAyC,SAAAxD,IAAA,CACA,GAAAmD,EAAA,CAEA,IADA,IAAA1C,EAAAT,EAAAS,GAAAgD,EAAAF,EAAAF,UACAK,EAAAD,EAAAE,MAAApD,OAAA,EAA6CmD,GAAA,EAAQA,IAC1CjD,EAAAmD,KAAAH,EAAAE,MAAAD,GAAAG,OAAAJ,EAAAK,KAAAJ,KACX,IAAAK,EAAAtD,EAAA6B,IAAAC,QAAAgB,EAAA7B,MAAAqC,QACAZ,EAAA1C,EAAAuD,YAAAT,EAAA7B,KAAA6B,EAAA5B,GAAA3B,EAAAiE,OAAAlF,KAAAwE,EAAAxE,KAAAgF,KAEA,UAGA,SAIA,IAAA1E,EAAA,WAEA,IAAAA,EAAA,eAEA,IAAAA,EAAA,uCAA+C,KAE/C,IAAAA,EAAA,UAEA,IAAAA,EAAA,uCAA+C,KAE/C,IAAAA,EAAA,UAqBA,SAAAI,EAAAyE,EAAAC,EAAAC,EAAAC,GACA,WAAAhF,EAAA6E,EAAA,SAAAlE,EAAAJ,EAAAK,EAAAC,GACA,IAAAoE,EAAAF,aAAAG,SAAAH,EAAAxE,GAAAwE,EACA3D,EAAAT,EAAAS,GAAA+D,OAAAvE,EAAAC,GACAuE,EAAAhE,EAAA6B,IAAAC,QAAAtC,GAAAyE,aAAAC,EAAAF,GAAyFG,OAAAjF,EAAA,EAAAiF,CAAYH,EAAAN,EAAAG,GACrG,IAAAK,EAAoB,YACpBlE,EAAAoE,KAAAJ,EAAAE,GACA,IAAAG,EAAArE,EAAA6B,IAAAC,QAAAtC,EAAA,GAAA8E,WAIA,OAHAD,KAAArC,MAAA0B,GAA6CS,OAAAjF,EAAA,EAAAiF,CAAOnE,EAAA6B,IAAArC,EAAA,MACpDoE,KAAAzE,EAAAkF,KACOrE,EAAAuE,KAAA/E,EAAA,GACPQ,IAWA,SAAAlB,EAAA2E,EAAAC,EAAAC,GACA,WAAA/E,EAAA6E,EAAA,SAAAlE,EAAAJ,EAAAK,EAAAC,GACA,IAAA+E,EAAAjF,EAAAsC,IAAAC,QAAAtC,GACAqE,EAAAF,aAAAG,SAAAH,EAAAxE,GAAAwE,EACA,OAAAa,EAAAC,MAAA,GAAAC,eAAAF,EAAAG,OAAA,GAAAH,EAAAI,YAAA,GAAAlB,GACAnE,EAAAS,GACA+D,OAAAvE,EAAAC,GACAoF,aAAArF,IAAAkE,EAAAG,GAH6F,gCCnK7F,MAAAiB,EAAcrG,EAAQ,QACtBsG,EAAetG,EAAQ,QACvBuG,EAAiBvG,EAAQ,QACzBwG,EAAqBxG,EAAQ,QAC7ByG,EAAoBzG,EAAQ,QAC5B0G,EAAgB1G,EAAQ,SACxB2G,MACAA,EAAAC,yBACAA,EAAAC,OACAA,GACI7G,EAAQ,SACZ8G,YACAA,EAAAC,eACAA,EAAAC,SACAA,GACIhH,EAAQ,QAKZ,SAAAiH,EAAAC,EAAAC,EAAAC,GAEA,YAAAF,GAAA,OAAAA,EACA,UAAAG,MAAA,kDAEA,oBAAAH,EACA,UAAAG,MAAA,wCACA3B,OAAA4B,UAAAC,SAAAC,KAAAN,GAAA,qBAGA,GAAAE,GAAA,mBAAAD,EAAA,CACAC,IACAA,EAAAD,EACAA,EAAA,MAGAA,EAAAR,KAAkBM,EAAAD,SAAAG,OAClBP,EAAAO,GACA,MAAAM,EAAAN,EAAAM,UACA,IAAAC,EACAC,EACA5D,EAAA,EAEA,IACA2D,EAAArB,EAAAuB,IAAAV,EAAAC,GACK,MAAAU,GACL,OAAAT,EAAAS,GAGAF,EAAAD,EAAArG,OAEA,MAAAyG,EAAA,SAAAC,GACA,GAAAA,EAEA,OADAZ,EAAAM,YACAL,EAAAW,GAGA,IAAAC,EAEA,IACAA,EAAA1B,EAAA2B,MAAAP,EAAAP,GACO,MAAAU,GACPE,EAAAF,EAKA,OAFAV,EAAAM,YAEAM,EACAX,EAAAW,GACAX,EAAA,KAAAY,IAGA,IAAAP,KAAApG,OAAA,EACA,OAAAyG,IAKA,UAFAX,EAAAM,WAEAE,EAAA,OAAAG,IAEA,KAAU/D,EAAA2D,EAAArG,OAAmB0C,KAC7B,SAAAmE,GACA,SAAAA,EAAA3E,OACAoE,GAAAG,IAEAL,EAAAS,EAAArI,KAAAqI,EAAAC,KAAA,SAAAJ,EAAAtE,GACA,OAAAsE,EAAAD,EAAAC,GACA,MAAAtE,OAAAyE,EAAArI,OACA8H,GAAAG,KAEAI,EAAArI,KAAA4D,EACAyE,EAAAE,SAAA,SACAT,GAAAG,QAXA,CAaOJ,EAAA3D,SAKP,IAGA,OAFAoD,EAAAR,KAAkBM,EAAAD,SAAAG,OAClBP,EAAAO,GACAb,EAAA2B,MAAA5B,EAAAuB,IAAAV,EAAAC,MACG,MAAAU,GAEH,GADAA,EAAAQ,SAAA,+DACAlB,GAAAF,EAAAD,UAAAsB,OACA,uCACAzB,EAAAgB,EAAAQ,QAAA,OACA,SAEA,MAAAR,GAQAZ,EAAAsB,QACAtB,EAAAuB,WAAA,SAAArB,GAGA,OAFAR,EAAAM,EAAAD,SAAAG,GACAJ,EAAAE,EAAAD,UACAC,GAGAA,EAAAH,cAEAG,EAAAD,WAMAC,EAAAX,SACAW,EAAAwB,OAAAnC,EAAA2B,MAEAhB,EAAAV,WACAU,EAAAT,eAEAS,EAAAZ,QACAY,EAAAyB,MAAArC,EAAAuB,IAEAX,EAAAR,cACAQ,EAAA0B,YAAAlC,EAAAmC,OAEA3B,EAAAP,UAEAO,EAAAgB,MAAAhB,EAEAvH,EAAAC,QAAAsH,wBCnJA,SAAA4B,EAAAC,GACApD,OAAAqD,OAAAD,GAEA,IAAAE,EAAA,mBAAAF,EAcA,OAZApD,OAAAuD,oBAAAH,GAAAI,QAAA,SAAAC,IACAzD,OAAA0D,eAAA5B,KAAAsB,EAAAK,IACA,OAAAL,EAAAK,IACA,iBAAAL,EAAAK,IAAA,mBAAAL,EAAAK,IAGAH,IAAA,WAAAG,GAAA,WAAAA,GAAA,cAAAA,IACAzD,OAAA2D,SAAAP,EAAAK,KACAN,EAAAC,EAAAK,MAIAL,QAGAQ,EAIA1J,YAAA2J,QAEAC,IAAAD,EAAAE,OAAAF,EAAAE,SAEA7I,KAAA6I,KAAAF,EAAAE,KAGA7J,cACAgB,KAAA8I,QAAA,GAQA,SAAAC,EAAAC,GACA,OAAAA,EACAC,QAAA,cACAA,QAAA,aACAA,QAAA,aACAA,QAAA,eACAA,QAAA,eAWA,SAAAC,EAAAC,KAAAC,GAEA,IAAAC,KAEA,UAAAC,KAAAH,EACAE,EAAAC,GAAAH,EAAAG,GAOA,OALAF,EAAAd,QAAA,SAAAJ,GACA,UAAAoB,KAAApB,EACAmB,EAAAC,GAAApB,EAAAoB,KAGsB,EAetB,SAAAC,EAAAnE,GACA,OAAAA,EAAAoE,SAAAC,cAgIA,IAAAC,EAAA5E,OAAAqD,QACAwB,UAAA,KACAZ,aACAG,UACAU,WA9HA,SAAAxE,GAEA,IAAAiE,KA0BA,OAzBA,SAAAQ,EAAAzE,EAAA9E,GACA,QAAAwJ,EAAA1E,EAAA2E,WAAqCD,EAAOA,IAAAE,YAC5C,IAAAF,EAAAzF,SACA/D,GAAAwJ,EAAAG,UAAAxJ,OACO,IAAAqJ,EAAAzF,WACPgF,EAAAa,MACAC,MAAA,QACA7J,SACA8E,KAAA0E,IAEAxJ,EAAAuJ,EAAAC,EAAAxJ,GAIAiJ,EAAAO,GAAAhK,MAAA,oBACAuJ,EAAAa,MACAC,MAAA,OACA7J,SACA8E,KAAA0E,KAKA,OAAAxJ,EAvBA,CAwBG8E,EAAA,GACHiE,GAmGAe,aA3FA,SAAAjB,EAAAkB,EAAArB,GACA,IAAAsB,EAAA,EACAjB,EAAA,GACAkB,KAEA,SAAAC,IACA,OAAArB,EAAA1I,QAAA4J,EAAA5J,OAGA0I,EAAA,GAAA7I,SAAA+J,EAAA,GAAA/J,OACA6I,EAAA,GAAA7I,OAAA+J,EAAA,GAAA/J,OAAA6I,EAAAkB,EAkBA,UAAAA,EAAA,GAAAF,MAAAhB,EAAAkB,EArBAlB,EAAA1I,OAAA0I,EAAAkB,EA2BA,SAAAI,EAAArF,GAMAiE,GAAA,IAAAE,EAAAnE,MAAAsF,IAAA9D,KAAAxB,EAAAuF,WAJA,SAAAC,GACA,UAAAA,EAAApB,SAAA,KAAAT,EAAA6B,EAAA5B,OAAA,MAGA9D,KAAA,QAMA,SAAA2F,EAAAzF,GACAiE,GAAA,KAAAE,EAAAnE,GAAA,IAMA,SAAA0F,EAAAX,IACA,UAAAA,QAAAM,EAAAI,GAAAV,EAAA/E,MAGA,KAAA+D,EAAA1I,QAAA4J,EAAA5J,QAAA,CACA,IAAAsK,EAAAP,IAGA,GAFAnB,GAAAN,EAAAC,EAAAgC,UAAAV,EAAAS,EAAA,GAAAzK,SACAgK,EAAAS,EAAA,GAAAzK,OACAyK,IAAA5B,EAAA,CAOAoB,EAAAU,UAAA3C,QAAAuC,GACA,GACAC,EAAAC,EAAAG,OAAA,SACAH,EAAAP,UACOO,IAAA5B,GAAA4B,EAAAtK,QAAAsK,EAAA,GAAAzK,SAAAgK,GACPC,EAAAU,UAAA3C,QAAAmC,OAEA,UAAAM,EAAA,GAAAZ,MACAI,EAAAL,KAAAa,EAAA,GAAA3F,MAEAmF,EAAAY,MAEAL,EAAAC,EAAAG,OAAA,SAGA,OAAA7B,EAAAN,EAAAC,EAAAoC,OAAAd,OAuBA,MAAAe,EAAA,UAMAC,EAAAlG,KACAA,EAAAmG,WAIAC,EAOAxM,YAAAyM,EAAA9D,GACA3H,KAAA0L,OAAA,GACA1L,KAAA2L,YAAAhE,EAAAgE,YACAF,EAAAG,KAAA5L,MAOAhB,QAAAC,GACAe,KAAA0L,QAAA3C,EAAA9J,GAOAD,SAAAoG,GACA,IAAAkG,EAAAlG,GAAA,OAEA,IAAAyG,EAAAzG,EAAAmG,KACAnG,EAAA0G,cACAD,KAAqB7L,KAAA2L,cAAmBE,KAExC7L,KAAA+L,KAAAF,GAOA7M,UAAAoG,GACAkG,EAAAlG,KAEApF,KAAA0L,QAAAL,GAMArM,QACA,OAAAgB,KAAA0L,OASA1M,KAAA6M,GACA7L,KAAA0L,wBAAmCG,aAQnCG,EACAhN,cAEAgB,KAAAiM,UAAqBC,aACrBlM,KAAAmM,OAAAnM,KAAAiM,UAGAG,UACA,OAAApM,KAAAmM,MAAAnM,KAAAmM,MAAA1L,OAAA,GAGA4L,WAAc,OAAArM,KAAAiM,SAGdjN,IAAAoG,GACApF,KAAAoM,IAAAF,SAAAhC,KAAA9E,GAIApG,SAAAuM,GAEA,MAAAnG,GAAkBmG,OAAAW,aAClBlM,KAAAsM,IAAAlH,GACApF,KAAAmM,MAAAjC,KAAA9E,GAGApG,YACA,GAAAgB,KAAAmM,MAAA1L,OAAA,EACA,OAAAT,KAAAmM,MAAAhB,MAMAnM,gBACA,KAAAgB,KAAAuM,eAGAvN,SACA,OAAAwN,KAAAC,UAAAzM,KAAAiM,SAAA,QAOAjN,KAAA0N,GAEA,OAAA1M,KAAA2M,YAAAC,MAAAF,EAAA1M,KAAAiM,UASAjN,aAAA0N,EAAAtH,GAQA,MAPA,iBAAAA,EACAsH,EAAAG,QAAAzH,GACKA,EAAA8G,WACLQ,EAAAI,SAAA1H,GACAA,EAAA8G,SAAA5D,QAAAwB,GAAA9J,KAAA4M,MAAAF,EAAA5C,IACA4C,EAAAH,UAAAnH,IAEAsH,EAMA1N,iBAAAoG,GACA,iBAAAA,GACAA,EAAA8G,WAEA9G,EAAA8G,SAAAa,MAAAC,GAAA,iBAAAA,GAGA5H,EAAA8G,UAAA9G,EAAA8G,SAAAhH,KAAA,KAEAE,EAAA8G,SAAA5D,QAAAwB,IACAkC,EAAAiB,UAAAnD,aA0BAoD,UAAAlB,EAIAhN,YAAA2I,GACAwF,QACAnN,KAAA2H,UAOA3I,WAAAC,EAAAsM,GACA,KAAAtM,IAEAe,KAAA8M,SAAAvB,GACAvL,KAAA6M,QAAA5N,GACAe,KAAAuM,aAMAvN,QAAAC,GACA,KAAAA,GAEAe,KAAAsM,IAAArN,GAOAD,eAAAoO,EAAAC,GAEA,MAAAjI,EAAAgI,EAAAf,KACAjH,EAAAmG,KAAA8B,EACAjI,EAAA0G,aAAA,EACA9L,KAAAsM,IAAAlH,GAGApG,SAEA,OADA,IAAAwM,EAAAxL,UAAA2H,SACAqB,QAGAhK,WACA,UAgBA,SAAAsO,EAAAC,GACA,OAAAA,EACA,iBAAAA,IAEAA,EAAAD,OAHA,KAsFA,MAGAE,EAAA,yEA6BAC,GACAC,MAAA,eAAAC,UAAA,GAEAC,GACA/B,UAAA,SACA6B,MAAA,IACAtN,IAAA,IACAyN,QAAA,MACAC,UAAAL,IAEAM,GACAlC,UAAA,SACA6B,MAAA,IACAtN,IAAA,IACAyN,QAAA,MACAC,UAAAL,IAEAO,GACAN,MAAA,8IAUAO,EAAA,SAAAP,EAAAtN,EAAA8N,MACA,IAAAvF,EAAAO,GAEA2C,UAAA,UACA6B,QACAtN,MACA0N,aAEAI,GAQA,OANAvF,EAAAmF,SAAA5D,KAAA8D,GACArF,EAAAmF,SAAA5D,MACA2B,UAAA,SACA6B,MAAA,6CACAC,UAAA,IAEAhF,GAEAwF,EAAAF,EAAA,UACAG,EAAAH,EAAA,eACAI,EAAAJ,EAAA,SACAK,GACAzC,UAAA,SACA6B,MAjFA,oBAkFAC,UAAA,GAEAY,GACA1C,UAAA,SACA6B,MAAAF,EACAG,UAAA,GAEAa,GACA3C,UAAA,SACA6B,MAzFA,eA0FAC,UAAA,GAEAc,GACA5C,UAAA,SACA6B,MAAAgB,mHASAf,UAAA,GAEAgB,GAOAjB,MAAA,kBACAI,WACAjC,UAAA,SACA6B,MAAA,KACAtN,IAAA,aACAyN,QAAA,KACAC,UACAL,GAEAC,MAAA,KACAtN,IAAA,KACAuN,UAAA,EACAG,UAAAL,QAKAmB,GACA/C,UAAA,QACA6B,MAvIA,eAwIAC,UAAA,GAEAkB,GACAhD,UAAA,QACA6B,MA3IA,gBA4IAC,UAAA,GAEAmB,GAEApB,MAAA,uBACAC,UAAA,GAoBA,IAAAoB,EAAAjK,OAAAqD,QACAwB,UAAA,KACAqF,SAxKA,eAyKAC,oBAxKA,gBAyKAP,UAxKA,oBAyKAlB,cACA0B,iBAxKA,eAyKAC,eAxKA,+IAyKAC,QApKA,CAAAC,QACA,MAAAC,EAAA,YAQA,OAPAD,EAAAE,SACAF,EAAA3B,MAzFA,YAAA8B,GAEA,OADAA,EAAA9E,IAAA+E,GAAAnC,EAAAmC,IAAAvK,KAAA,IAwFAwK,CACAJ,EACA,OACAD,EAAAE,OACA,SAEArG,GACA2C,UAAA,OACA6B,MAAA4B,EACAlP,IAAA,IACAuN,UAAA,EAEAgC,WAAA,CAAAC,EAAAC,KACA,IAAAD,EAAAtK,OAAAuK,EAAAC,gBAEGT,IAmJH5B,mBACAG,mBACAG,oBACAC,qBACAC,UACAE,sBACAC,uBACAC,oBACAC,cACAC,gBACAC,qBACAC,kBACAE,cACAC,aACAC,wBACAC,eACAiB,kBAnCA,SAAApH,GACA,OAAA7D,OAAAkL,OAAArH,GAGAgH,WAAA,CAAAC,EAAAC,KAAgCA,EAAAhH,KAAAoH,YAAAL,EAAA,IAEhCM,SAAA,CAAAN,EAAAC,KAA8BA,EAAAhH,KAAAoH,cAAAL,EAAA,IAAAC,EAAAC,oBAiC9BK,EAAA,+BAAAC,MAAA,KAYA,SAAAC,EAAAC,GAOA,SAAAC,EAAAvH,EAAAwH,GACA,WAAAC,OACAnD,EAAAtE,GACA,KAAAsH,EAAAI,iBAAA,SAAAF,EAAA,eAiBAG,EACA3R,cACAgB,KAAA4Q,gBAEA5Q,KAAA6Q,WACA7Q,KAAA8Q,QAAA,EACA9Q,KAAA+Q,SAAA,EAIA/R,QAAAuO,EAAA8B,GACAA,EAAA0B,SAAA/Q,KAAA+Q,WAEA/Q,KAAA4Q,aAAA5Q,KAAA8Q,SAAAzB,EACArP,KAAA6Q,QAAA3G,MAAAmF,EAAA9B,IACAvN,KAAA8Q,SA5TA,SAAAvD,GACA,WAAAkD,OAAAlD,EAAA5G,WAAA,KAAAvD,KAAA,IAAA3C,OAAA,EA2TAuQ,CAAAzD,GAAA,EAGAvO,UACA,IAAAgB,KAAA6Q,QAAApQ,SAGAT,KAAAoD,KAAA,YAEA,MAAA6N,EAAAjR,KAAA6Q,QAAAnG,IAAAsC,KAAA,IACAhN,KAAAkR,UAAAX,EA9SA,SAAAY,EAAAC,EAAA,KAWA,IAHA,IAAAC,EAAA,iDACAC,EAAA,EACAC,EAAA,GACApO,EAAA,EAAiBA,EAAAgO,EAAA1Q,OAAoB0C,IAAA,CAErC,IAAA7C,EADAgR,GAAA,EAEA/D,EAAAD,EAAA6D,EAAAhO,IAKA,IAJAA,EAAA,IACAoO,GAAAH,GAEAG,GAAA,IACAhE,EAAA9M,OAAA,IACA,IAAAX,EAAAuR,EAAAjO,KAAAmK,GACA,SAAAzN,EAAA,CACAyR,GAAAhE,EACA,MAEAgE,GAAAhE,EAAAvC,UAAA,EAAAlL,EAAAwF,OACAiI,IAAAvC,UAAAlL,EAAAwF,MAAAxF,EAAA,GAAAW,QACA,OAAAX,EAAA,OAAAA,EAAA,GAEAyR,GAAA,KAAAC,OAAAC,OAAA3R,EAAA,IAAAQ,IAEAiR,GAAAzR,EAAA,GACA,MAAAA,EAAA,IACAwR,KAIAC,GAAA,IAEA,OAAAA,EAuQArM,CAAA+L,IAAA,GACAjR,KAAA0R,UAAA,EAIA1S,KAAA2S,GACA3R,KAAAkR,UAAAQ,UAAA1R,KAAA0R,UACA,MAAA5R,EAAAE,KAAAkR,UAAA9N,KAAAuO,GACA,IAAA7R,EAAmB,YAGnB,MAAAqD,EAAArD,EAAA8R,UAAA,CAAA5E,EAAA7J,MAAA,QAAAyF,IAAAoE,GAEA6E,EAAA7R,KAAA4Q,aAAAzN,GAKA,OAFArD,EAAAoL,OAAA,EAAA/H,GAEA2B,OAAAkL,OAAAlQ,EAAA+R,UAmCAC,EACA9S,cAEAgB,KAAAgB,SAEAhB,KAAA+R,gBACA/R,KAAAgS,MAAA,EAEAhS,KAAA0R,UAAA,EACA1R,KAAAiS,WAAA,EAIAjT,WAAAsG,GACA,GAAAtF,KAAA+R,aAAAzM,GAAA,OAAAtF,KAAA+R,aAAAzM,GAEA,MAAA4M,EAAA,IAAAvB,EAIA,OAHA3Q,KAAAgB,MAAAR,MAAA8E,GAAAgD,QAAA,EAAAiF,EAAA8B,KAAA6C,EAAAC,QAAA5E,EAAA8B,IACA6C,EAAAE,UACApS,KAAA+R,aAAAzM,GAAA4M,EACAA,EAGAlT,cACAgB,KAAAiS,WAAA,EAIAjT,QAAAuO,EAAA8B,GACArP,KAAAgB,MAAAkJ,MAAAqD,EAAA8B,IACA,UAAAA,EAAA1M,MAAA3C,KAAAgS,QAIAhT,KAAA2S,GACA,MAAA/B,EAAA5P,KAAAqS,WAAArS,KAAAiS,YACArC,EAAA8B,UAAA1R,KAAA0R,UACA,MAAArI,EAAAuG,EAAAxM,KAAAuO,GASA,OARAtI,IACArJ,KAAAiS,YAAA5I,EAAA0H,SAAA,EACA/Q,KAAAiS,aAAAjS,KAAAgS,QACAhS,KAAAiS,WAAA,IAKA5I,GAoCA,SAAAiJ,EAAAxS,EAAAyS,GACA,MAAAvN,EAAAlF,EAAA0S,MAAA1S,EAAAwF,MAAA,GACAmN,EAAA3S,EAAA0S,MAAA1S,EAAAwF,MAAAxF,EAAA,GAAAW,QACA,MAAAuE,GAAA,MAAAyN,GACAF,EAAAzC,cA+GA,GAAAQ,EAAAxC,UAAAwC,EAAAxC,SAAA4E,SAAA,QACA,UAAAjM,MAAA,6FAEA,OAvEA,SAAAkM,EAAAhK,EAAAjG,GACA,MAAAkQ,EAAA,EACA,GAAAjK,EAAAkK,SAAA,OAAAD,EACAjK,EAAAkK,UAAA,EAGAlK,EAAAmK,cAAA,KAEAnK,EAAAoK,SAAApK,EAAAoK,UAAApK,EAAAqK,cAEA,IAAAC,EAAA,KAWA,GAVA,iBAAAtK,EAAAoK,WACAE,EAAAtK,EAAAoK,SAAAG,gBACAvK,EAAAoK,SAAAG,UAGAvK,EAAAoK,WACApK,EAAAoK,SA4HA,SAAAI,EAAAzC,GAEA,IAAA0C,KASA,MAPA,iBAAAD,EACAE,EAAA,UAAAF,GAEArO,OAAAwO,KAAAH,GAAA7K,QAAA,SAAAuD,GACAwH,EAAAxH,EAAAsH,EAAAtH,MAGAuH,EAYA,SAAAC,EAAAxH,EAAA0H,GACA7C,IACA6C,IAAA9J,eAEA8J,EAAAnD,MAAA,KAAA9H,QAAA,SAAAkL,GACA,IAAAC,EAAAD,EAAApD,MAAA,KACAgD,EAAAK,EAAA,KAAA5H,EAaA,SAAA2H,EAAAE,GAGA,OAAAA,EACAjC,OAAAiC,GAUA,SAAAF,GACA,OAAArD,EAAAuC,SAAAc,EAAA/J,eARAkK,CAAAH,GAAA,IApBAI,CAAAH,EAAA,GAAAA,EAAA,QAzJAI,CAAAlL,EAAAoK,SAAAzC,EAAAI,mBAIA/H,EAAAmL,SAAAb,EACA,UAAAxM,MAAA,kGA0CA,OArCAmM,EAAAmB,iBAAAxD,EAAA5H,EAAAmL,SAAAb,GAAA,UAEAvQ,IACAiG,EAAAqK,gBAMArK,EAAA+E,MAAA,OAAA/E,EAAAqK,cAAA5C,MAAA,KAAAlL,KAAA,oBACAyD,EAAAmK,cAAAR,GAEA3J,EAAA+E,QAAA/E,EAAA+E,MAAA,SACAkF,EAAAoB,QAAAzD,EAAA5H,EAAA+E,OACA/E,EAAAsL,iBAAAtL,EAAAvI,IAAAuI,EAAA+E,OACA/E,EAAAvI,KAAAuI,EAAAuL,iBAAAvL,EAAAvI,IAAA,SACAuI,EAAAvI,MAAAwS,EAAAuB,MAAA5D,EAAA5H,EAAAvI,MACAwS,EAAAwB,eAAA9G,EAAA3E,EAAAvI,MAAA,GACAuI,EAAAuL,gBAAAxR,EAAA0R,iBACAxB,EAAAwB,iBAAAzL,EAAAvI,IAAA,QAAAsC,EAAA0R,iBAGAzL,EAAAkF,UAAA+E,EAAAyB,UAAA9D,EAAA5H,EAAAkF,eAEAjF,IAAAD,EAAAgF,YAAAhF,EAAAgF,UAAA,GACAhF,EAAAmF,WAAAnF,EAAAmF,aAEAnF,EAAAmF,YAAA4B,UAAA/G,EAAAmF,SAAApD,IAAA,SAAA4J,GACA,OA8CA,SAAA3L,GAUA,OATAA,EAAA4L,WAAA5L,EAAA6L,kBACA7L,EAAA6L,gBAAA7L,EAAA4L,SAAA7J,IAAA,SAAA+J,GACA,OAAAvL,EAAAP,GAA4B4L,SAAA,MAAiBE,MAO7C9L,EAAA6L,gBACA7L,EAAA6L,gBA3BA,SAAAE,EAAA/L,GACA,QAAAA,IAEAA,EAAAuL,gBAAAQ,EAAA/L,EAAAgM,SA+BAD,CAAA/L,GACAO,EAAAP,GAA0BgM,OAAAhM,EAAAgM,OAAAzL,EAAAP,EAAAgM,QAAA,OAG1B7P,OAAA2D,SAAAE,GACAO,EAAAP,GAIAA,EAzEAiM,CAAA,SAAAN,EAAA3L,EAAA2L,MAEA3L,EAAAmF,SAAAxF,QAAA,SAAAgM,GAAuC3B,EAAA,EAAAC,KAEvCjK,EAAAgM,QACAhC,EAAAhK,EAAAgM,OAAAjS,GAGAkQ,EAAAV,QAvIA,SAAAvJ,GACA,MAAAkM,EAAA,IAAA/C,EAWA,OATAnJ,EAAAmF,SAAAxF,QAAAwM,GAAAD,EAAA1C,QAAA2C,EAAApH,OAA0DqH,KAAAD,EAAAnS,KAAA,WAE1DgG,EAAAyL,gBACAS,EAAA1C,QAAAxJ,EAAAyL,gBAAuCzR,KAAA,QAEvCgG,EAAAkF,SACAgH,EAAA1C,QAAAxJ,EAAAkF,SAAgClL,KAAA,YAGhCkS,EA2HAG,CAAApC,GACAA,EAOAD,CAAA,GAyIA,MAAAsC,EAAAlM,EACAmM,EAAAhM,GAEOU,WAAAuL,EAAA/K,aAAAgL,GAAyD1L,EAChE2L,EAAAC,OAAA,WAq1BA,IAAAzO,EA/0BA,SAAA0O,GAGA,IAAAC,KAIAC,EAAA3Q,OAAA4Q,OAAA,MAEAC,EAAA7Q,OAAA4Q,OAAA,MAEAlS,KAIAoS,GAAA,EACAC,EAAA,yBACAC,EAAA,sFAEA,MAAAC,GAA8BC,mBAAA,EAAA3I,KAAA,aAAAS,aAK9B,IAAAnG,GACAsO,cAAA,qBACAC,iBAAA,8BACAvK,YAAA,QACAwK,WAAA,KACAC,OAAA,EACAX,UAAA,KAGAY,UAAAnJ,GASA,SAAAoJ,EAAAC,GACA,OAAA5O,EAAAsO,cAAAO,KAAAD,GA2CA,SAAA1P,EAAA0P,EAAA1T,EAAA4T,EAAAC,GAEA,IAAAC,GACA9T,OACAyN,SAAAiG,GAIAK,EAAA,mBAAAD,GAIA,IAAAtN,EAAAsN,EAAAtN,OACAsN,EAAAtN,OACAwN,EAAAF,EAAArG,SAAAqG,EAAA9T,KAAA4T,EAAAC,GAMA,OAJArN,EAAAxG,KAAA8T,EAAA9T,KAEA+T,EAAA,kBAAAvN,GAEAA,EAWA,SAAAwN,EAAAN,EAAA1T,EAAA4T,EAAAC,GACA,IAAAI,EAAAjU,EAQA,SAAAkU,EAAApO,EAAA7I,GACA,IAAAkX,EAAA1G,EAAAI,iBAAA5Q,EAAA,GAAA2J,cAAA3J,EAAA,GACA,OAAAgF,OAAA4B,UAAA8B,eAAA5B,KAAA+B,EAAAoK,SAAAiE,IAAArO,EAAAoK,SAAAiE,GA4DA,SAAAC,IACA,MAAA7K,EAAA8K,YA3BA,WACA,QAAAC,EAAA,CAEA,IAAA9N,EAAA,KAEA,oBAAA+C,EAAA8K,YAAA,CACA,IAAAzB,EAAArJ,EAAA8K,aAEA,YADA9J,EAAAP,QAAAsK,GAGA9N,EAAAwN,EAAAzK,EAAA8K,YAAAC,GAAA,EAAAC,EAAAhL,EAAA8K,cACAE,EAAAhL,EAAA8K,aAAA7N,EAAA+C,SAEA/C,EAAAgO,EAAAF,EAAA/K,EAAA8K,YAAAzW,OAAA2L,EAAA8K,YAAA,MAOA9K,EAAAuB,UAAA,IACAA,GAAAtE,EAAAsE,WAEAP,EAAAkK,eAAAjO,EAAA+D,QAAA/D,EAAAiH,WAKAiH,GA3DA,WACA,IAAAnL,EAAA2G,SAEA,YADA3F,EAAAP,QAAAsK,GAIA,IAAAK,EAAA,EACApL,EAAA2H,iBAAArC,UAAA,EACA,IAAA5R,EAAAsM,EAAA2H,iBAAA3Q,KAAA+T,GACAM,EAAA,GAEA,KAAA3X,GAAA,CACA2X,GAAAN,EAAAnM,UAAAwM,EAAA1X,EAAAwF,OACA,MAAAuD,EAAAkO,EAAA3K,EAAAtM,GACA,GAAA+I,EAAA,CACA,MAAA0C,EAAAmM,GAAA7O,EACAuE,EAAAP,QAAA4K,GACAA,EAAA,GAEA9J,GAAA+J,EACAtK,EAAAuK,WAAA7X,EAAA,GAAAyL,QAEAkM,GAAA3X,EAAA,GAEA0X,EAAApL,EAAA2H,iBAAArC,UACA5R,EAAAsM,EAAA2H,iBAAA3Q,KAAA+T,GAEAM,GAAAN,EAAA/L,OAAAoM,GACApK,EAAAP,QAAA4K,GAiCAG,GAEAT,EAAA,GAMA,SAAAU,EAAAlP,GAKA,OAJAA,EAAAkD,WACAuB,EAAAN,SAAAnE,EAAAkD,WAEAO,EAAAtH,OAAA4Q,OAAA/M,GAAiCjG,QAAUsG,MAAAoD,KAuC3C,SAAA0L,EAAAC,GACA,WAAA3L,EAAA8F,QAAAD,YAGAkF,GAAAY,EAAA,GACA,IAIAC,GAAA,EACA,GAUA,SAAAC,EAAAnY,GACA,IAAAiY,EAAAjY,EAAA,GACAoY,EAAApY,EAAAiV,KAEA,MAAAlF,EAAA,IAAAnH,EAAAwP,GAEAC,GAAAD,EAAApF,cAAAoF,EAAA,aACA,UAAAE,KAAAD,EACA,GAAAC,IACAA,EAAAtY,EAAA+P,GACAA,EAAA/G,QAAA,OAAAgP,EAAAC,GAuBA,OApBAG,KAAAjE,iBACAiE,EAAA/D,MAvgCA,SAAAnL,GACA,WAAAyH,OAAAzH,EAAAC,QAAA,wBAAsD,aAsgCtDhD,CAAA8R,IAGAG,EAAAG,KACAlB,GAAAY,GAEAG,EAAAI,eACAnB,GAAAY,GAEAd,IACAiB,EAAAK,aAAAL,EAAAI,eACAnB,EAAAY,IAGAF,EAAAK,GAKAA,EAAAK,YAAA,EAAAR,EAAAtX,OAQA,SAAA+X,EAAA1Y,GACA,IAAAiY,EAAAjY,EAAA,GACA2Y,EAAA3B,EAAA1L,OAAAtL,EAAAwF,OAEAoT,EA9FA,SAAAC,EAAAhQ,EAAA7I,EAAA2Y,GACA,IAAAG,EAp6BA,SAAArL,EAAAwK,GACA,IAAAjY,EAAAyN,KAAAnK,KAAA2U,GACA,OAAAjY,GAAA,IAAAA,EAAAwF,MAk6BAuT,CAAAlQ,EAAAwL,MAAAsE,GAEA,GAAAG,EAAA,CACA,GAAAjQ,EAAA,WACA,MAAAkH,EAAA,IAAAnH,EAAAC,GACAA,EAAA,UAAA7I,EAAA+P,GACAA,EAAA/G,SAAA8P,GAAA,GAGA,GAAAA,EAAA,CACA,KAAAjQ,EAAAmQ,YAAAnQ,EAAAjG,QACAiG,IAAAjG,OAEA,OAAAiG,GAKA,GAAAA,EAAAuL,eACA,OAAAyE,EAAAhQ,EAAAjG,OAAA5C,EAAA2Y,GA0EAE,CAAAvM,EAAAtM,EAAA2Y,GACA,IAAAC,EAAsB,OAAArD,EAEtB,IAAA0D,EAAA3M,EACA2M,EAAAV,KACAlB,GAAAY,GAEAgB,EAAAC,WAAAD,EAAAE,aACA9B,GAAAY,GAEAd,IACA8B,EAAAE,aACA9B,EAAAY,IAGA,GACA3L,EAAAP,WACAuB,EAAAb,YAEAH,EAAAiM,MAAAjM,EAAA8K,cACAvJ,GAAAvB,EAAAuB,WAEAvB,IAAA1J,aACO0J,IAAAsM,EAAAhW,QAOP,OANAgW,EAAA/D,SACA+D,EAAAzE,iBACAyE,EAAA/D,OAAAR,MAAAuE,EAAAvE,OAEA0D,EAAAa,EAAA/D,SAEAoE,EAAAC,UAAA,EAAAjB,EAAAtX,OAcA,IAAAyY,KAQA,SAAAC,EAAAC,EAAAtZ,GACA,IAAAiY,EAAAjY,KAAA,GAKA,GAFAqX,GAAAiC,EAEA,MAAArB,EAEA,OADAd,IACA,EAOA,aAAAiC,EAAAvW,MAAA,QAAA7C,EAAA6C,MAAAuW,EAAA5T,QAAAxF,EAAAwF,OAAA,KAAAyS,EAAA,CAGA,GADAZ,GAAAL,EAAAtW,MAAAV,EAAAwF,MAAAxF,EAAAwF,MAAA,IACAsQ,EAAA,CAEA,MAAAzO,EAAA,IAAAV,MAAA,uBAGA,MAFAU,EAAAoP,eACApP,EAAAkS,QAAAH,EAAAnE,KACA5N,EAEA,SAIA,GAFA+R,EAAApZ,EAEA,UAAAA,EAAA6C,KACA,OAAAsV,EAAAnY,GACO,eAAAA,EAAA6C,OAAA8T,EAAA,CAGP,MAAAtP,EAAA,IAAAV,MAAA,mBAAAsR,EAAA,gBAAA3L,EAAAP,WAAA,kBAEA,MADA1E,EAAAwB,KAAAyD,EACAjF,EACO,WAAArH,EAAA6C,KAAA,CACP,IAAA2H,EAAAkO,EAAA1Y,GACA,GAAAwK,IAAA+K,EACA,OAAA/K,EAOA,eAAAxK,EAAA6C,MAAA,KAAAoV,EAEA,SAOA,GAAAuB,EAAA,KAAAA,EAAA,EAAAxZ,EAAAwF,MAEA,MADA,IAAAmB,MAAA,6DAiBA,OADA0Q,GAAAY,EACAA,EAAAtX,OAGA,IAAA6P,EAAAiJ,EAAAhD,GACA,IAAAjG,EAEA,MADAkJ,QAAAC,MAAA3D,EAAA7M,QAAA,KAAkDsN,IAClD,IAAA9P,MAAA,sBAAA8P,EAAA,KAGA,IAAAmD,EAAArJ,EAAAC,GACAjH,EAAA,GAEA+C,EAAAsK,GAAAgD,EAEAtC,KACAhK,EAAA,IAAAzF,EAAA0O,UAAA1O,IA5GA,WAEA,IADA,IAAAgS,KACAC,EAAAxN,EAA6BwN,IAAAtJ,EAAsBsJ,IAAAlX,OACnDkX,EAAA/N,WACA8N,EAAAE,QAAAD,EAAA/N,WAGA8N,EAAArR,QAAAwR,GAAA1M,EAAAN,SAAAgN,IAsGAC,GACA,IAAA5C,EAAA,GACAxJ,EAAA,EACArI,EAAA,EACAgU,EAAA,EACAtB,GAAA,EAEA,IAGA,IAFA5L,EAAA8F,QAAA8H,gBAEa,CACbV,IACAtB,EAGAA,GAAA,GAEA5L,EAAA8F,QAAAR,UAAApM,EACA8G,EAAA8F,QAAA8H,eAEA,MAAAla,EAAAsM,EAAA8F,QAAA9O,KAAA0T,GAEA,IAAAhX,EAAA,MAEA,MACAma,EAAAd,EADArC,EAAA9L,UAAA1F,EAAAxF,EAAAwF,OACAxF,GACAwF,EAAAxF,EAAAwF,MAAA2U,EAOA,OALAd,EAAArC,EAAA1L,OAAA9F,IACA8H,EAAA8M,gBACA9M,EAAA+M,WACA9Q,EAAA+D,EAAAgN,UAGAzM,YACA3E,MAAAK,EACAiH,SAAAiG,EACA1I,SAAA,EACAT,UACAhB,OAEK,MAAAjF,GACL,GAAAA,EAAAM,SAAAN,EAAAM,QAAAiL,SAAA,WACA,OACA7E,SAAA,EACAwM,WACAC,IAAAnT,EAAAM,QACAkP,QAAAG,EAAAtW,MAAA8E,EAAA,IAAAA,EAAA,KACAqD,KAAAxB,EAAAwB,MAEA4R,MAAAlR,EACAsE,UAAA,EACA3E,MAAAiM,EAAA6B,GACA1J,WAEO,GAAAwI,EACP,OACA/H,SAAA,EACAF,UAAA,EACA3E,MAAAiM,EAAA6B,GACA1J,UACAkD,SAAAiG,EACAnK,MACAoO,YAAArT,GAGA,MAAAA,GAsCA,SAAAkQ,EAAAxU,EAAA4X,GACAA,KAAA9S,EAAA8N,WAAA3Q,OAAAwO,KAAAmC,GACA,IAAApM,EA5BA,SAAAxG,GACA,MAAAwG,GACAsE,UAAA,EACAP,QAAA,IAAAzF,EAAA0O,UAAA1O,GACAqB,MAAAiM,EAAApS,GACAgL,SAAA,EACAzB,IAAA2J,GAGA,OADA1M,EAAA+D,QAAAP,QAAAhK,GACAwG,EAmBAqR,CAAA7X,GACA8X,EAAAtR,EAgBA,OAfAoR,EAAAG,OAAArB,GAAAqB,OAAAC,GAAAvS,QAAA,SAAA+E,GACA,IAAAuM,EAAA/C,EAAAxJ,EAAAxK,GAAA,GACA+W,EAAAtJ,SAAAjD,EACAuM,EAAAjM,UAAAgN,EAAAhN,YACAgN,EAAAf,GAEAA,EAAAjM,UAAAtE,EAAAsE,YACAgN,EAAAtR,EACAA,EAAAuQ,KAGAe,EAAArK,WAEAjH,EAAAyR,YAAAH,GAEAtR,EAYA,SAAA0R,EAAAC,GACA,OAAArT,EAAAwO,YAAAxO,EAAAyO,MAIA4E,EAAA/R,QAAA4M,EAAA/V,GACA,OAAAA,EACA6H,EAAAyO,MAAA,OAAAtW,EACO6H,EAAAwO,WACPrW,EAAAmJ,QAAA,MAAAtB,EAAAwO,YAEArW,GATAkb,EAyCA,SAAAC,EAAAC,GAEA,IAAA9V,EAAA,KACA,MAAAkL,EAtkBA,SAAA6K,GACA,IAAAC,EAAAD,EAAAtP,UAAA,IAEAuP,GAAAD,EAAAE,WAAAF,EAAAE,WAAAxP,UAAA,GAGA,MAAA/L,EAAA6H,EAAAuO,iBAAA9S,KAAAgY,GACA,GAAAtb,EAAA,CACA,IAAAwQ,EAAAiJ,EAAAzZ,EAAA,IAKA,OAJAwQ,IACAkJ,QAAA8B,KAAAxF,EAAA7M,QAAA,KAAmDnJ,EAAA,KACnD0Z,QAAA8B,KAAA,oDAAAH,IAEA7K,EAAAxQ,EAAA,kBAGA,OAAAsb,EACAhL,MAAA,OACAmL,KAAAC,GAAAlF,EAAAkF,IAAAjC,EAAAiC,IAojBAC,CAAAP,GAEA,GAAA5E,EAAAhG,GAAA,OAEAsG,EAAA,yBACOuE,MAAAD,EAAA5K,aAEP3I,EAAAyO,OACAhR,EAAAsW,SAAAC,cAAA,QACAC,UAAAV,EAAAU,UAAA3S,QAAA,UAAAA,QAAA,mBAEA7D,EAAA8V,EAEA,MAAAjc,EAAAmG,EAAAyW,YACAxS,EAAAiH,EAAAzJ,EAAAyJ,EAAArR,GAAA,GAAAoY,EAAApY,GAEA6c,EAAA3G,EAAA/P,GACA,GAAA0W,EAAArb,OAAA,CACA,MAAAsb,EAAAL,SAAAC,cAAA,OACAI,EAAAH,UAAAvS,EAAAL,MACAK,EAAAL,MAAAoM,EAAA0G,EAAA3G,EAAA4G,GAAA9c,GAEAoK,EAAAL,MAAA+R,EAAA1R,EAAAL,OAEA4N,EAAA,wBAAkCuE,MAAAD,EAAA7R,WAElC6R,EAAAU,UAAAvS,EAAAL,MACAkS,EAAArP,UAnDA,SAAAmQ,EAAAC,EAAAC,GACA,IAAA5L,EAAA2L,EAAAtG,EAAAsG,GAAAC,EACA7S,GAAA2S,EAAAG,QAUA,OARAH,EAAAlc,MAAA,aACAuJ,EAAAa,KAAA,QAGA8R,EAAAtJ,SAAApC,IACAjH,EAAAa,KAAAoG,GAGAjH,EAAAnE,KAAA,KAAAiX,OAuCAC,CAAAlB,EAAArP,UAAAyE,EAAAjH,EAAAiH,UACA4K,EAAA7R,QACAiH,SAAAjH,EAAAiH,SAEA/C,GAAAlE,EAAAsE,UACA0O,UAAAhT,EAAAsE,WAEAtE,EAAAyR,cACAI,EAAAJ,aACAxK,SAAAjH,EAAAyR,YAAAxK,SAEA/C,GAAAlE,EAAAyR,YAAAnN,UACA0O,UAAAhT,EAAAyR,YAAAnN,YAmBA,MAAA2O,EAAA,KACA,IAAAA,EAAAC,OAAA,CACAD,EAAAC,QAAA,EAEA,IAAAC,EAAAd,SAAAe,iBAAA,YACAjH,EAAAlN,QAAA1B,KAAA4V,EAAAvB,KAmEA,SAAA1B,EAAAlM,GAEA,OADAA,MAAA,IAAA5D,cACAgM,EAAApI,IAAAoI,EAAAE,EAAAtI,IAQA,SAAAqP,EAAAC,GAAApG,aAAuCA,IACvC,iBAAAoG,IACAA,OAEAA,EAAArU,QAAAsU,IAAgCjH,EAAAiH,GAAArG,IAOhC,SAAAsE,EAAAxN,GACA,IAAA9F,EAAAgS,EAAAlM,GACA,OAAA9F,MAAAyO,kBAeA,SAAAY,EAAAzM,EAAAqF,GACA,IAAA4I,EAAAjO,EACA3G,EAAA8E,QAAA,SAAArH,GACAA,EAAAmX,IACAnX,EAAAmX,GAAA5I,KAOA1K,OAAAkL,OAAAuF,GACA1O,YACAwQ,gBACA0D,YACAE,iBACA4B,UAvIA,SAAAC,GACAnV,EAAAuN,EAAAvN,EAAAmV,IAuIAR,mBACAS,uBAvHA,WAEAC,OAAAC,iBAAA,mBAAAX,GAAA,IAsHAY,iBA7GA,SAAA3G,EAAA4G,GACA,IAAA5V,EAAA,KACA,IACAA,EAAA4V,EAAA5H,GACK,MAAAkE,GAGL,GAFAD,QAAAC,MAAA,wDAAgDxQ,QAAA,KAAuCsN,KAEvFX,EAAuB,MAAA6D,EAAsBD,QAAAC,SAK7ClS,EAAAwO,EAGAxO,EAAA8F,OAAA9F,EAAA8F,KAAAkJ,GACAd,EAAAc,GAAAhP,EACAA,EAAA6V,cAAAD,EAAAE,KAAA,KAAA9H,GAEAhO,EAAAoO,SACA+G,EAAAnV,EAAAoO,SAAqCY,kBA0FrC+G,cAnFA,WACA,OAAAxY,OAAAwO,KAAAmC,IAmFA8D,cACAmD,kBACAa,gBAzEA,SAAAlQ,GACA,IAAA9F,EAAAgS,EAAAlM,GACA,GAAA9F,EAAe,OAAAA,EAGf,MADA,IAAAd,MAAA,iDAAiCwC,QAAA,KAAqDoE,KAsEtFwN,gBACA3R,QAAAgM,EACAsI,UAnCA,SAAAvc,GACAuC,EAAA0G,KAAAjJ,MAqCAsU,EAAAkI,UAAA,WAA+B7H,GAAA,GAC/BL,EAAAmI,SAAA,WAA8B9H,GAAA,GAC9BL,EAAAoI,cA/0BA,SAi1BA,UAAArU,KAAAyF,EAEA,iBAAAA,EAAAzF,IAEArB,EAAA8G,EAAAzF,IAOA,OAFAxE,OAAAkL,OAAAuF,EAAAxG,GAEAwG,EAIAqI,KAEA9e,EAAAC,QAAA8H,0BC/hEA,MAAAlB,EAAiBvG,EAAQ,QACzB0G,EAAgB1G,EAAQ,QACxByG,EAAoBzG,EAAQ,QAC5BwG,EAAqBxG,EAAQ,SAC7BgH,SAAOA,GAAchH,EAAQ,SAC7B2G,MACAA,EAAA8X,SACAA,GACIze,EAAQ,QAKZN,EAAAC,cAAA2G,EACA1G,YAAA2I,GACA3H,KAAA8G,UACA9G,KAAAsH,MAAA,KACAtH,KAAA2H,WAAAvB,EACApG,KAAA2H,QAAAmW,SAAA9d,KAAA2H,QAAAmW,UAAA,IAAAnY,EACA3F,KAAA8d,SAAA9d,KAAA2H,QAAAmW,SACA9d,KAAA8d,SAAAnW,QAAA3H,KAAA2H,QACA3H,KAAA+d,QAAA,IAAAjY,EAMA9G,aAAA8H,EAAAa,GAEA,OADA,IAAAjC,EAAAiC,GACAN,MAAAP,GAMA9H,MAAA8H,GACA9G,KAAAge,OAAA,IAAAnY,EAAAiB,EAAAmX,MAAAje,KAAA2H,SAEA3H,KAAAke,WAAA,IAAArY,EACAiB,EAAAmX,MACAlY,KAAc/F,KAAA2H,SAAiBmW,SAAA,IAAAlY,KAE/B5F,KAAA8G,SAAAmE,UAEA,IAAA7D,EAAA,GACA,KAAApH,KAAAme,QACA/W,GAAApH,KAAAoe,MAGA,OAAAhX,EAMApI,OAEA,OADAgB,KAAAsH,MAAAtH,KAAA8G,OAAAqE,MACAnL,KAAAsH,MAMAtI,OACA,OAAAgB,KAAA8G,OAAA9G,KAAA8G,OAAArG,OAAA,MAMAzB,YACA,IAAAqf,EAAAre,KAAAsH,MAAArI,KAEA,cAAAe,KAAAse,OAAA3b,MACA0b,GAAA,KAAAre,KAAAme,OAAAlf,KAGA,OAAAe,KAAAge,OAAAhW,OAAAqW,GAMArf,MACA,IAAAqf,EAAA,GACA,OAAAre,KAAAsH,MAAA3E,MACA,YACA,SAEA,SACA,OAAA3C,KAAA8d,SAAAS,KAEA,cACA,OAAAve,KAAA8d,SAAAU,QACAxe,KAAAge,OAAAhW,OAAAhI,KAAAsH,MAAArI,MACAe,KAAAsH,MAAAmX,MACAZ,EAAA7d,KAAAke,WAAAlW,OAAAhI,KAAAsH,MAAArI,OACAe,KAAA+d,SAEA,WACA,OAAA/d,KAAA8d,SAAAjb,KAAA7C,KAAAsH,MAAArI,KACAe,KAAAsH,MAAAC,KACAvH,KAAAsH,MAAAE,SAEA,aACA,IACArE,EACAub,EACAC,EACA/a,EAJAgb,EAAA,GAQA,IADAD,EAAA,GACAxb,EAAA,EAAmBA,EAAAnD,KAAAsH,MAAAsX,OAAAne,OAA8B0C,IACjDwb,GAAA3e,KAAA8d,SAAAe,UACA7e,KAAAge,OAAAhW,OAAAhI,KAAAsH,MAAAsX,OAAAzb,KACayb,QAAA,EAAAE,MAAA9e,KAAAsH,MAAAwX,MAAA3b,KAKb,IAFAyb,GAAA5e,KAAA8d,SAAAiB,SAAAJ,GAEAxb,EAAA,EAAmBA,EAAAnD,KAAAsH,MAAA0X,MAAAve,OAA6B0C,IAAA,CAIhD,IAHAub,EAAA1e,KAAAsH,MAAA0X,MAAA7b,GAEAwb,EAAA,GACA/a,EAAA,EAAqBA,EAAA8a,EAAAje,OAAgBmD,IACrC+a,GAAA3e,KAAA8d,SAAAe,UACA7e,KAAAge,OAAAhW,OAAA0W,EAAA9a,KACegb,QAAA,EAAAE,MAAA9e,KAAAsH,MAAAwX,MAAAlb,KAIfya,GAAAre,KAAA8d,SAAAiB,SAAAJ,GAEA,OAAA3e,KAAA8d,SAAAmB,MAAAL,EAAAP,GAEA,uBAGA,IAFAA,EAAA,GAEA,mBAAAre,KAAAme,OAAAxb,MACA0b,GAAAre,KAAAoe,MAGA,OAAApe,KAAA8d,SAAAoB,WAAAb,GAEA,kBACAA,EAAA,GACA,MAAAc,EAAAnf,KAAAsH,MAAA6X,QACAhf,EAAAH,KAAAsH,MAAAnH,MAEA,kBAAAH,KAAAme,OAAAxb,MACA0b,GAAAre,KAAAoe,MAGA,OAAApe,KAAA8d,SAAAnE,KAAA0E,EAAAc,EAAAhf,GAEA,uBACAke,EAAA,GACA,MAAAe,EAAApf,KAAAsH,MAAA8X,MACAC,EAAArf,KAAAsH,MAAA+X,QACAC,EAAAtf,KAAAsH,MAAAgY,KAEA,GAAAtf,KAAAsH,MAAAgY,KACA,GAAAF,EACA,YAAApf,KAAAse,OAAA3b,KAAA,CACA,MAAA4c,EAAAvf,KAAAse,OACAiB,EAAAtgB,KAAAe,KAAA8d,SAAA0B,SAAAH,GAAA,IAAAE,EAAAtgB,UAEAe,KAAA8G,OAAAoD,MACAvH,KAAA,OACA1D,KAAAe,KAAA8d,SAAA0B,SAAAH,UAIAhB,GAAAre,KAAA8d,SAAA0B,SAAAH,GAIA,uBAAArf,KAAAme,OAAAxb,MACA0b,GAAAe,GAAA,SAAApf,KAAAsH,MAAA3E,KAEA3C,KAAAoe,MADApe,KAAAyf,YAGA,OAAAzf,KAAA8d,SAAA4B,SAAArB,EAAAiB,EAAAD,GAEA,WAEA,OAAArf,KAAA8d,SAAA9C,KAAAhb,KAAAsH,MAAArI,MAEA,gBACA,OAAAe,KAAA8d,SAAA6B,UAAA3f,KAAAge,OAAAhW,OAAAhI,KAAAsH,MAAArI,OAEA,WACA,OAAAe,KAAA8d,SAAA6B,UAAA3f,KAAAyf,aAEA,SACA,MAAAG,EAAA,eAAA5f,KAAAsH,MAAA3E,KAAA,wBACA,IAAA3C,KAAA2H,QAAAD,OAGA,UAAAjB,MAAAmZ,GAFApG,QAAAqG,IAAAD,whBChJA,IAAoBE,EAAA,UAAS,UCtD7B,IAKAC,EAAA,aAEAA,EAAArZ,UAAAsZ,OAAA,SAAAC,GACA,OAAAA,EAAAxf,QACAwf,EAAAF,EAAAne,KAAAqe,IAEAjgB,KAAAS,QAAAwf,GACAA,EAAAxf,OAZA,KAYAT,KAAAkgB,WAAAD,IACAjgB,KAAAS,OAbA,KAaAwf,EAAAE,YAAAngB,OACAA,KAAAogB,YAAAH,IANsBjgB,MAWtB+f,EAAArZ,UAAA2Z,QAAA,SAAAJ,GACA,OAAAA,EAAAxf,OACAsf,EAAAne,KAAAqe,GAAAD,OAAAhgB,MADsBA,MAItB+f,EAAArZ,UAAA0Z,YAAA,SAAAH,GACA,WAAAK,EAAAtgB,KAAAigB,IAKAF,EAAArZ,UAAAlG,MAAA,SAAAoB,EAAAC,GAIA,YAHA,IAAAD,MAAA,QACA,IAAAC,MAAA7B,KAAAS,QAEAmB,GAAAC,EAAmBke,EAAAQ,MACnBvgB,KAAAwgB,WAAAxd,KAAAC,IAAA,EAAArB,GAAAoB,KAAAyd,IAAAzgB,KAAAS,OAAAoB,KAKAke,EAAArZ,UAAAga,IAAA,SAAAvd,GACA,KAAAA,EAAA,GAAAA,GAAAnD,KAAAS,QACA,OAAAT,KAAA2gB,SAAAxd,IAQA4c,EAAArZ,UAAA4B,QAAA,SAAAsY,EAAAhf,EAAAC,QACA,IAAAD,MAAA,QACA,IAAAC,MAAA7B,KAAAS,QAEAmB,GAAAC,EACK7B,KAAA6gB,aAAAD,EAAAhf,EAAAC,EAAA,GAEA7B,KAAA8gB,qBAAAF,EAAAhf,EAAAC,EAAA,IAMLke,EAAArZ,UAAAgE,IAAA,SAAAkW,EAAAhf,EAAAC,QACA,IAAAD,MAAA,QACA,IAAAC,MAAA7B,KAAAS,QAEA,IAAA4I,KAEA,OADArJ,KAAAsI,QAAA,SAAAyY,EAAA5d,GAAkC,OAAAkG,EAAAa,KAAA0W,EAAAG,EAAA5d,KAAiCvB,EAAAC,GACnEwH,GAMA0W,EAAAne,KAAA,SAAAof,GACA,OAAAA,aAAAjB,EAAuCiB,EACvCA,KAAAvgB,OAAA,IAAAwgB,EAAAD,GAAAjB,EAAAQ,OAGA,IAAAU,EAAA,SAAAlB,GACA,SAAAkB,EAAAD,GACAjB,EAAAnZ,KAAA5G,MACAA,KAAAghB,SAGAjB,IAAAkB,EAAAtX,UAAAoW,GACAkB,EAAAva,UAAA5B,OAAA4Q,OAAAqK,KAAArZ,WACAua,EAAAva,UAAAiG,YAAAsU,EAEA,IAAAC,GAA4BzgB,QAAU0gB,cAAA,GAAqB1C,OAAS0C,cAAA,IAyCpE,OAvCAF,EAAAva,UAAA0a,QAAA,WACA,OAAAphB,KAAAghB,QAGAC,EAAAva,UAAA8Z,WAAA,SAAA5e,EAAAC,GACA,UAAAD,GAAAC,GAAA7B,KAAAS,OAAyCT,KACzC,IAAAihB,EAAAjhB,KAAAghB,OAAAxgB,MAAAoB,EAAAC,KAGAof,EAAAva,UAAAia,SAAA,SAAAxd,GACA,OAAAnD,KAAAghB,OAAA7d,IAGA8d,EAAAva,UAAAma,aAAA,SAAAD,EAAAhf,EAAAC,EAAA1B,GACA,QAAAgD,EAAAvB,EAAsBuB,EAAAtB,EAAQsB,IACvB,QAAAyd,EAAA5gB,KAAAghB,OAAA7d,GAAAhD,EAAAgD,GAA8C,UAGrD8d,EAAAva,UAAAoa,qBAAA,SAAAF,EAAAhf,EAAAC,EAAA1B,GACA,QAAAgD,EAAAvB,EAAA,EAA0BuB,GAAAtB,EAASsB,IAC5B,QAAAyd,EAAA5gB,KAAAghB,OAAA7d,GAAAhD,EAAAgD,GAA8C,UAGrD8d,EAAAva,UAAAwZ,WAAA,SAAAD,GACA,GAAAjgB,KAAAS,OAAAwf,EAAAxf,QApHA,IAqHO,WAAAwgB,EAAAjhB,KAAAghB,OAAAtR,OAAAuQ,EAAAmB,aAGPH,EAAAva,UAAAyZ,YAAA,SAAAF,GACA,GAAAjgB,KAAAS,OAAAwf,EAAAxf,QAzHA,IA0HO,WAAAwgB,EAAAhB,EAAAmB,UAAA1R,OAAA1P,KAAAghB,UAGPE,EAAAzgB,OAAAigB,IAAA,WAA+C,OAAA1gB,KAAAghB,OAAAvgB,QAE/CygB,EAAAzC,MAAAiC,IAAA,WAA8C,UAE9C5b,OAAAuc,iBAAAJ,EAAAva,UAAAwa,GAEAD,EAnDA,CAoDClB,GAIDA,EAAAQ,MAAA,IAAAU,MAEA,IAAAX,EAAA,SAAAP,GACA,SAAAO,EAAAgB,EAAAC,GACAxB,EAAAnZ,KAAA5G,MACAA,KAAAshB,OACAthB,KAAAuhB,QACAvhB,KAAAS,OAAA6gB,EAAA7gB,OAAA8gB,EAAA9gB,OACAT,KAAAye,MAAAzb,KAAAC,IAAAqe,EAAA7C,MAAA8C,EAAA9C,OAAA,EA2DA,OAxDAsB,IAAAO,EAAA3W,UAAAoW,GACAO,EAAA5Z,UAAA5B,OAAA4Q,OAAAqK,KAAArZ,WACA4Z,EAAA5Z,UAAAiG,YAAA2T,EAEAA,EAAA5Z,UAAA0a,QAAA,WACA,OAAAphB,KAAAshB,KAAAF,UAAA1R,OAAA1P,KAAAuhB,MAAAH,YAGAd,EAAA5Z,UAAAia,SAAA,SAAAxd,GACA,OAAAA,EAAAnD,KAAAshB,KAAA7gB,OAAAT,KAAAshB,KAAAZ,IAAAvd,GAAAnD,KAAAuhB,MAAAb,IAAAvd,EAAAnD,KAAAshB,KAAA7gB,SAGA6f,EAAA5Z,UAAAma,aAAA,SAAAD,EAAAhf,EAAAC,EAAA1B,GACA,IAAAqhB,EAAAxhB,KAAAshB,KAAA7gB,OACA,QAAAmB,EAAA4f,IACA,IAAAxhB,KAAAshB,KAAAT,aAAAD,EAAAhf,EAAAoB,KAAAyd,IAAA5e,EAAA2f,GAAArhB,QAEA0B,EAAA2f,IACA,IAAAxhB,KAAAuhB,MAAAV,aAAAD,EAAA5d,KAAAC,IAAArB,EAAA4f,EAAA,GAAAxe,KAAAyd,IAAAzgB,KAAAS,OAAAoB,GAAA2f,EAAArhB,EAAAqhB,UADA,IAKAlB,EAAA5Z,UAAAoa,qBAAA,SAAAF,EAAAhf,EAAAC,EAAA1B,GACA,IAAAqhB,EAAAxhB,KAAAshB,KAAA7gB,OACA,QAAAmB,EAAA4f,IACA,IAAAxhB,KAAAuhB,MAAAT,qBAAAF,EAAAhf,EAAA4f,EAAAxe,KAAAC,IAAApB,EAAA2f,KAAArhB,EAAAqhB,QAEA3f,EAAA2f,IACA,IAAAxhB,KAAAshB,KAAAR,qBAAAF,EAAA5d,KAAAyd,IAAA7e,EAAA4f,GAAA3f,EAAA1B,UADA,IAKAmgB,EAAA5Z,UAAA8Z,WAAA,SAAA5e,EAAAC,GACA,MAAAD,GAAAC,GAAA7B,KAAAS,OAAyC,OAAAT,KACzC,IAAAwhB,EAAAxhB,KAAAshB,KAAA7gB,OACA,OAAAoB,GAAA2f,EAAwBxhB,KAAAshB,KAAA9gB,MAAAoB,EAAAC,GACxBD,GAAA4f,EAA0BxhB,KAAAuhB,MAAA/gB,MAAAoB,EAAA4f,EAAA3f,EAAA2f,GAC1BxhB,KAAAshB,KAAA9gB,MAAAoB,EAAA4f,GAAAxB,OAAAhgB,KAAAuhB,MAAA/gB,MAAA,EAAAqB,EAAA2f,KAGAlB,EAAA5Z,UAAAwZ,WAAA,SAAAD,GACA,IAAAwB,EAAAzhB,KAAAuhB,MAAArB,WAAAD,GACA,GAAAwB,EAAgB,WAAAnB,EAAAtgB,KAAAshB,KAAAG,IAGhBnB,EAAA5Z,UAAAyZ,YAAA,SAAAF,GACA,IAAAwB,EAAAzhB,KAAAshB,KAAAnB,YAAAF,GACA,GAAAwB,EAAgB,WAAAnB,EAAAmB,EAAAzhB,KAAAuhB,QAGhBjB,EAAA5Z,UAAA0Z,YAAA,SAAAH,GACA,OAAAjgB,KAAAshB,KAAA7C,OAAAzb,KAAAC,IAAAjD,KAAAuhB,MAAA9C,MAAAwB,EAAAxB,OAAA,EACO,IAAA6B,EAAAtgB,KAAAshB,KAAA,IAAAhB,EAAAtgB,KAAAuhB,MAAAtB,IACP,IAAAK,EAAAtgB,KAAAigB,IAGAK,EAjEA,CAkECP,GAIc2B,EAFf3B,ECvLA4B,EAAA,SAAAC,EAAAC,GACA7hB,KAAA4hB,QACA5hB,KAAA6hB,cAMAF,EAAAjb,UAAAob,SAAA,SAAA5hB,EAAA6hB,GACA,IAAAC,EAAAhiB,KAEA,MAAAA,KAAA6hB,WAA6B,YAG7B,IADA,IAMAI,EAAAC,EANA9hB,EAAAJ,KAAA4hB,MAAAnhB,QACSL,IAAA,CAET,GADAJ,KAAA4hB,MAAAlB,IAAAtgB,EAAA,GACA+B,UAAA,GAAyB/B,EAAO,OAIhC2hB,IACAE,EAAAjiB,KAAAmiB,UAAA/hB,EAAAJ,KAAA4hB,MAAAnhB,QACAyhB,EAAAD,EAAAG,KAAA3hB,QAEA,IACA0B,EAAAkgB,EADA9e,EAAArD,EAAAS,GAEA2hB,KAAAC,KAkCA,OAhCAviB,KAAA4hB,MAAAtZ,QAAA,SAAAwR,EAAA3W,GACA,IAAA2W,EAAAhW,KAOA,OANAme,IACAA,EAAAD,EAAAG,UAAA/hB,EAAA+C,EAAA,GACA+e,EAAAD,EAAAG,KAAA3hB,QAEAyhB,SACAK,EAAArY,KAAA4P,GAIA,GAAAmI,EAAA,CACAM,EAAArY,KAAA,IAAAsY,EAAA1I,EAAApP,MACA,IAAAA,EAAA5G,EAAAgW,EAAAhW,KAAA4G,IAAAuX,EAAAzhB,MAAA0hB,IAEApe,GAAAP,EAAAkf,UAAA3e,GAAAtB,MACAkI,EAAAnH,EAAAmf,QAAAN,KAAA7e,EAAAmf,QAAAN,KAAA3hB,OAAA,GACA6hB,EAAApY,KAAA,IAAAsY,EAAA9X,EAAA,UAAA4X,EAAA7hB,OAAA8hB,EAAA9hB,UAEAyhB,IACAxX,GAAgBuX,EAAAU,UAAAjY,EAAAwX,QAEhB3e,EAAAkf,UAAA3I,EAAAhW,MAGA,OAAAgW,EAAA3X,WACAA,EAAA8f,EAAAnI,EAAA3X,UAAAuI,IAAAuX,EAAAzhB,MAAA0hB,IAAApI,EAAA3X,UACAkgB,EAAA,IAAAV,EAAAK,EAAAJ,MAAAphB,MAAA,EAAAJ,GAAA4f,OAAAuC,EAAAtX,UAAAyE,OAAA4S,IAAAN,EAAAH,WAAA,IACA,QAHA,GAKG7hB,KAAA4hB,MAAAnhB,OAAA,IAEO4hB,YAAA9e,YAAApB,cAKVwf,EAAAjb,UAAAkc,aAAA,SAAArf,EAAApB,EAAA0gB,EAAAd,GAIA,IAHA,IAAAe,KAAAjB,EAAA7hB,KAAA6hB,WACAkB,EAAA/iB,KAAA4hB,MAAAoB,GAAAjB,GAAAgB,EAAAtiB,OAAAsiB,EAAArC,IAAAqC,EAAAtiB,OAAA,QAEA0C,EAAA,EAAiBA,EAAAI,EAAAM,MAAApD,OAA4B0C,IAAA,CAC7C,IACA8f,EADAnf,EAAAP,EAAAM,MAAAV,GAAAY,OAAAR,EAAAS,KAAAb,IACA2W,EAAA,IAAA0I,EAAAjf,EAAAmf,QAAAN,KAAAjf,GAAAW,EAAA3B,IACA8gB,EAAAD,KAAAjd,MAAA+T,MACAA,EAAAmJ,EACA9f,EAAc2f,EAAA3X,MACF4X,IAAAviB,MAAA,EAAAuiB,EAAAtiB,OAAA,IAEZqiB,EAAA5Y,KAAA4P,GACA3X,IACA0f,IACA1f,EAAA,MAEA4f,IAAyBiB,EAAAlJ,GAEzB,IAAAoJ,EAAArB,EAAAgB,EAAApE,MAKA,OAJAyE,EAAAC,IACAJ,EA0GA,SAAAnB,EAAAwB,GACA,IAAAC,EAOA,OANAzB,EAAAtZ,QAAA,SAAAwR,EAAA3W,GACA,GAAA2W,EAAA3X,WAAA,GAAAihB,IAEA,OADAC,EAAAlgB,GACA,IAGAye,EAAAphB,MAAA6iB,GAlHAC,CAAAP,EAAAG,GACArB,GAAAqB,GAEA,IAAAvB,EAAAoB,EAAA/C,OAAA8C,GAAAjB,IAGAF,EAAAjb,UAAAyb,UAAA,SAAAvgB,EAAAC,GACA,IAAAugB,EAAA,IAAiBmB,EAAA,EAMjB,OALAvjB,KAAA4hB,MAAAtZ,QAAA,SAAAwR,EAAA3W,GACA,IAAAqgB,EAAA,MAAA1J,EAAA2J,cAAAtgB,EAAA2W,EAAA2J,cAAA7hB,EACAwgB,OAAA3hB,OAAAqZ,EAAA2J,aAAA,KACArB,EAAAO,UAAA7I,EAAApP,IAAA8Y,IACG5hB,EAAAC,GACHugB,GAGAT,EAAAjb,UAAAgd,QAAA,SAAAC,GACA,UAAA3jB,KAAA6hB,WAA6B7hB,KAC7B,IAAA2hB,EAAA3hB,KAAA4hB,MAAA5B,OAAA2D,EAAAjZ,IAAA,SAAAA,GAAgE,WAAA8X,EAAA9X,MAAwB1K,KAAA6hB,aAQxFF,EAAAjb,UAAAkd,QAAA,SAAAC,EAAAC,GACA,IAAA9jB,KAAA6hB,WAAyB,OAAA7hB,KAEzB,IAAA+jB,KAAA5jB,EAAA6C,KAAAC,IAAA,EAAAjD,KAAA4hB,MAAAnhB,OAAAqjB,GAEApB,EAAAmB,EAAAnB,QACAsB,EAAAH,EAAAhgB,MAAApD,OACAohB,EAAA7hB,KAAA6hB,WACA7hB,KAAA4hB,MAAAtZ,QAAA,SAAAwR,GAAsCA,EAAA3X,WAAsB0f,KAAkB1hB,GAE9E,IAAA8jB,EAAAH,EACA9jB,KAAA4hB,MAAAtZ,QAAA,SAAAwR,GACA,IAAA1X,EAAAsgB,EAAAwB,YAAAD,GACA,SAAA7hB,EAAA,CACA4hB,EAAAhhB,KAAAyd,IAAAuD,EAAA5hB,GACA,IAAAsI,EAAAgY,EAAAN,KAAAhgB,GACA,GAAA0X,EAAAhW,KAAA,CACA,IAAAA,EAAA+f,EAAAhgB,MAAAzB,GAAA2B,OAAA8f,EAAA7f,KAAA5B,IACAD,EAAA2X,EAAA3X,WAAA2X,EAAA3X,UAAAuI,IAAAgY,EAAAliB,MAAAyjB,EAAA,EAAA7hB,IACAD,GAAsB0f,IACtBkC,EAAA7Z,KAAA,IAAAsY,EAAA9X,EAAA5G,EAAA3B,SAEA4hB,EAAA7Z,KAAA,IAAAsY,EAAA9X,MAEGvK,GAGH,IADA,IAAAgkB,KACAhhB,EAAA2gB,EAA4B3gB,EAAA6gB,EAAc7gB,IACrCghB,EAAAja,KAAA,IAAAsY,EAAAE,EAAAN,KAAAjf,KACL,IAAAye,EAAA5hB,KAAA4hB,MAAAphB,MAAA,EAAAL,GAAA6f,OAAAmE,GAAAnE,OAAA+D,GACAK,EAAA,IAAAzC,EAAAC,EAAAC,GAIA,OAFAuC,EAAAC,iBAlJA,MAmJKD,IAAAE,SAAAtkB,KAAA4hB,MAAAnhB,OAAAsjB,EAAAtjB,SACL2jB,GAGAzC,EAAAjb,UAAA2d,eAAA,WACA,IAAArS,EAAA,EAEA,OADAhS,KAAA4hB,MAAAtZ,QAAA,SAAAwR,GAAsCA,EAAAhW,MAAkBkO,MACxDA,GASA2P,EAAAjb,UAAA4d,SAAA,SAAAC,QACA,IAAAA,MAAAvkB,KAAA4hB,MAAAnhB,QAEA,IAAAwhB,EAAAjiB,KAAAmiB,UAAA,EAAAoC,GAAArC,EAAAD,EAAAG,KAAA3hB,OACAmhB,KAAA4C,EAAA,EAsBA,OArBAxkB,KAAA4hB,MAAAtZ,QAAA,SAAAwR,EAAA3W,GACA,GAAAA,GAAAohB,EACA3C,EAAA1X,KAAA4P,GACAA,EAAA3X,WAA2BqiB,SACtB,GAAA1K,EAAAhW,KAAA,CACL,IAAAA,EAAAgW,EAAAhW,KAAA4G,IAAAuX,EAAAzhB,MAAA0hB,IAAAxX,EAAA5G,KAAA2gB,SAGA,GAFAvC,IACAxX,GAAgBuX,EAAAU,UAAAjY,EAAAwX,GAChBpe,EAAA,CACA,IAAA3B,EAAA2X,EAAA3X,WAAA2X,EAAA3X,UAAAuI,IAAAuX,EAAAzhB,MAAA0hB,IACA/f,GAAwBqiB,IACxB,IAAAvB,EAAAyB,EAAA,IAAAlC,EAAA9X,EAAA3G,SAAAD,EAAA3B,GAAAwiB,EAAA/C,EAAAnhB,OAAA,GACAwiB,EAAArB,EAAAnhB,QAAAmhB,EAAA+C,GAAA5e,MAAA2e,IACW9C,EAAA+C,GAAA1B,EAEArB,EAAA1X,KAAAwa,SAEN5K,EAAApP,KACLwX,KAEGliB,KAAA4hB,MAAAnhB,OAAA,GACH,IAAAkhB,EAAoBD,EAAY9f,KAAAggB,EAAA3W,WAAAuZ,IAGhC7C,EAAApB,MAAA,IAAAoB,EAA0BD,EAAYnB,MAAA,GAatC,IAAAiC,EAAA,SAAA9X,EAAA5G,EAAA3B,EAAAshB,GAEAzjB,KAAA0K,MAEA1K,KAAA8D,OAIA9D,KAAAmC,YAGAnC,KAAAyjB,gBAGAjB,EAAA9b,UAAAX,MAAA,SAAAka,GACA,GAAAjgB,KAAA8D,MAAAmc,EAAAnc,OAAAmc,EAAA9d,UAAA,CACA,IAAA2B,EAAAmc,EAAAnc,KAAAiC,MAAA/F,KAAA8D,MACA,GAAAA,EAAe,WAAA0e,EAAA1e,EAAA2gB,SAAA1gB,SAAAD,EAAA9D,KAAAmC,aAOf,IAAAyiB,EAAA,SAAA1d,EAAA2d,EAAAC,EAAAC,GACA/kB,KAAAkH,OACAlH,KAAA6kB,SACA7kB,KAAA8kB,aACA9kB,KAAA+kB,YAGA5B,EAAA,GAsDA,SAAA6B,EAAAta,GACA,IAAArB,KAEA,OADAqB,EAAApC,QAAA,SAAA2c,EAAAC,EAAAtjB,EAAAC,GAA+C,OAAAwH,EAAAa,KAAAtI,EAAAC,KAC/CwH,EAGA,SAAA8b,EAAAC,EAAA1C,GACA,IAAA0C,EAAgB,YAEhB,IADA,IAAA/b,KACAlG,EAAA,EAAiBA,EAAAiiB,EAAA3kB,OAAmB0C,GAAA,GACpC,IAAAvB,EAAA8gB,EAAAhY,IAAA0a,EAAAjiB,GAAA,GAAAtB,EAAA6gB,EAAAhY,IAAA0a,EAAAjiB,EAAA,OACAvB,GAAAC,GAAqBwH,EAAAa,KAAAtI,EAAAC,GAErB,OAAAwH,EAMA,SAAAgc,EAAAC,EAAAplB,EAAAmD,EAAAkiB,GACA,IAAAxD,EAAAyD,EAAAtlB,GAAA2iB,EAAA4C,EAAA/E,IAAAxgB,GAAA0C,KAAA8iB,OACAva,GAAAoa,EAAAD,EAAAT,OAAAS,EAAApe,MAAA4a,SAAA5hB,EAAA6hB,GACA,GAAA5W,EAAA,CAEA,IAAAhJ,EAAAgJ,EAAAhJ,UAAAM,QAAA0I,EAAA5H,UAAAf,KACAmjB,GAAAJ,EAAAD,EAAApe,KAAAoe,EAAAT,QAAAjC,aAAAzX,EAAA5H,UAAArD,EAAAiC,UAAAyjB,cACA/C,EAAAd,GAEA8D,EAAA,IAAAjB,EAAAW,EAAAI,EAAAxa,EAAAkX,UAAAkD,EAAApa,EAAAkX,UAAAsD,EAAA,QACAtiB,EAAA8H,EAAA5H,UAAAuiB,aAAA3jB,GAAAmB,QAAAmiB,GAAsEF,OAAAQ,aAAAF,IAAkCG,mBAGxG,IAAAC,GAAA,EAAAC,EAAA,KAKA,SAAAV,EAAAtlB,GACA,IAAAsD,EAAAtD,EAAAsD,QACA,GAAA0iB,GAAA1iB,EAAA,CACAyiB,GAAA,EACAC,EAAA1iB,EACA,QAAAL,EAAA,EAAmBA,EAAAK,EAAA/C,OAAoB0C,IAAO,GAAAK,EAAAL,GAAAP,KAAAujB,qBAAA,CAC9CF,GAAA,EACA,OAGA,OAAAA,EAWA,IAAAR,EAAA,IAAqB3F,EAAA,UAAS,WAC9BsG,EAAA,IAA0BtG,EAAA,UAAS,gBAsBnC,SAASuG,EAAOX,GAGhB,OAFAA,GAAYjH,MAAAiH,KAAAjH,OAAA,IACZ6H,cAAAZ,KAAAY,eAAA,KACA,IAAaxG,EAAA,QACbxW,IAAAmc,EAEAvlB,OACAgB,KAAA,WACA,WAAA0jB,EAAAjD,EAAApB,MAAAoB,EAAApB,MAAA,SAEApf,MAAA,SAAAR,EAAA4lB,EAAArmB,GACA,OA9IA,SAAAolB,EAAAplB,EAAAS,EAAAgH,GACA,IAAAic,EAAA4C,EAAA7lB,EAAAW,QAAAmkB,GACA,GAAAe,EAAkB,OAAAA,EAAAT,aAElBplB,EAAAW,QAAA8kB,KAAoCd,EAAA,IAAAV,EAAAU,EAAApe,KAAAoe,EAAAT,OAAA,SAEpC,IAAA4B,EAAA9lB,EAAAW,QAAA,uBAEA,MAAAX,EAAAkD,MAAApD,OACA,OAAA6kB,EACG,GAAAmB,KAAAnlB,QAAAmkB,GACH,OAAAgB,EAAAnlB,QAAAmkB,GAAAF,KACO,IAAAX,EAAAU,EAAApe,KAAA0b,aAAAjiB,EAAA,KAAAgH,EAAA6d,EAAAtlB,IACPolB,EAAAT,OAAAG,EAAArkB,EAAA+hB,QAAAN,KAAAzhB,EAAAkD,MAAApD,OAAA,IAAA6kB,EAAAP,UAEO,IAAAH,EAAAU,EAAApe,KAAAoe,EAAAT,OAAAjC,aAAAjiB,EAAA,KAAAgH,EAAA6d,EAAAtlB,IACP,KAAAolB,EAAAP,UACG,QAAApkB,EAAAW,QAAA,iBAAAmlB,IAAA,IAAAA,EAAAnlB,QAAA,gBAQA,OAAAsiB,EAAAjjB,EAAAW,QAAA,YAGH,IAAAsjB,EAAAU,EAAApe,KAAA0c,QAAAjjB,EAAAijB,GACA0B,EAAAT,OAAAjB,QAAAjjB,EAAAijB,GACAuB,EAAAG,EAAAR,WAAAnkB,EAAA+hB,SAAA4C,EAAAP,UAEA,IAAAH,EAAAU,EAAApe,KAAAwc,QAAA/iB,EAAA+hB,QAAAN,MACAkD,EAAAT,OAAAnB,QAAA/iB,EAAA+hB,QAAAN,MACA+C,EAAAG,EAAAR,WAAAnkB,EAAA+hB,SAAA4C,EAAAP,UAfA,IAAA2B,EAAA,GAAApB,EAAAP,WAAA0B,IAAAnB,EAAAP,UAAApkB,EAAAgmB,MAAA,GAAAhf,EAAA2e,gBAmBA,SAAA/iB,EAAAuhB,GACA,IAAAA,EAAoB,SACpB,IAAAvhB,EAAA/B,WAA8B,SAC9B,IAAAolB,GAAA,EAMA,OALArjB,EAAAmf,QAAAN,KAAA,GAAA9Z,QAAA,SAAAnI,EAAAC,GACA,QAAA+C,EAAA,EAAmBA,EAAA2hB,EAAArkB,OAAuB0C,GAAA,EACnChD,GAAA2kB,EAAA3hB,EAAA,IAAA/C,GAAA0kB,EAAA3hB,KACEyjB,GAAA,KAETA,EA3BAC,CAAAlmB,EAAA2kB,EAAAR,aACAA,EAAA2B,EAAAtB,EAAAG,EAAAR,WAAAnkB,EAAA+hB,SAAAsC,EAAArkB,EAAA+hB,QAAAN,KAAAzhB,EAAAkD,MAAApD,OAAA,IACA,WAAAmkB,EAAAU,EAAApe,KAAA0b,aAAAjiB,EAAA+lB,EAAAxmB,EAAAiC,UAAAyjB,cAAA,KACAje,EAAA6d,EAAAtlB,IACAyhB,EAAApB,MAAAuE,EAAAnkB,EAAAgmB,MAsHAG,CAAAP,EAAArmB,EAAAS,EAAA+kB,KAIAA,WAMA,SAAAqB,EAAA7mB,EAAAmD,GACA,IAAAkjB,EAAAd,EAAA/hB,SAAAxD,GACA,SAAAqmB,GAAA,GAAAA,EAAArf,KAAA2a,cACAxe,GAAiBgiB,EAAAkB,EAAArmB,EAAAmD,GAAA,IACjB,GAKA,SAAAkiB,EAAArlB,EAAAmD,GACA,IAAAkjB,EAAAd,EAAA/hB,SAAAxD,GACA,SAAAqmB,GAAA,GAAAA,EAAA1B,OAAAhD,cACAxe,GAAiBgiB,EAAAkB,EAAArmB,EAAAmD,GAAA,IACjB;;;;;;MCvZM2jB,UAAmBC,EAAA,EACzB5Z,WACA,mBAGAlJ,aACA,OACA+iB,QAAA,SACAC,MAAA,QACAC,UAAA,EACAC,WAAA,EACAC,WACA/d,IAAA,eAEAge,MAAA,sBAIAvoB,UAAA2D,KACAA,EAAAwB,OACAA,IAEA,UAAiBW,OAAA0iB,EAAA,EAAA1iB,CAAUnC,EAAAwB,EAAAsjB,MAAA9H,WAG3B3gB,MAAA2D,KACAA,IAEA,OACA+kB,SAAgB5iB,OAAA0iB,EAAA,EAAA1iB,CAAUnC,IAI1B3D,YAAA2D,KACAA,IAEA,OAAYmC,OAAA0iB,EAAA,EAAA1iB,CAAiB,WAAAnC,WAKvBglB,UAAmBV,EAAA,EACzB5Z,WACA,oBAGAlJ,aACA,OACA+iB,QAAA,aACAC,MAAA,QACAG,WACA/d,IAAA,OAEAge,MAAA,cAIAvoB,UAAA2D,KACAA,EAAAwB,OACAA,IAEA,UAAiBW,OAAA0iB,EAAA,EAAA1iB,CAAUnC,EAAAwB,EAAAsjB,MAAAG,WAG3B5oB,MAAA2D,KACAA,EAAAwB,OACAA,IAEA,OACA0jB,eAAsB/iB,OAAA0iB,EAAA,EAAA1iB,CAAUnC,EAAAwB,EAAAsjB,MAAAG,YAIhC5oB,YAAA2D,KACAA,IAEA,OAAYmC,OAAA0iB,EAAA,EAAA1iB,CAAiB,iBAAAnC,WAKvBmlB,UAAkBb,EAAA,EACxB5Z,WACA,mBAGAlJ,aACA,OACA+iB,QAAA,QACAjjB,MAAA,GACAkjB,MAAA,QACAtkB,MAAA,EACAukB,UAAA,EACAC,WAAA,EACAC,WACA/d,IAAA,MACAwe,mBAAA,SAEAR,MAAA,wBAIAvoB,UAAA2D,KACAA,EAAAwB,OACAA,IAEA,UAAiBW,OAAA0iB,EAAA,EAAA1iB,CAAenC,EAAAwB,EAAAsjB,MAAA9H,WAGhC3gB,MAAA2D,KACAA,IAEA,OACAqlB,gBAAuBljB,OAAA0iB,EAAA,EAAA1iB,CAAYnC,IAInC3D,YAAA2D,KACAA,IAEA,OAAYmC,OAAA0iB,EAAA,EAAA1iB,CAAsB,QAAAnC,WA6L5BslB,UAAgBhB,EAAA,EACtB5Z,WACA,gBAGA6a,qBACA,OACAC,QAAA,cAIAhkB,aACA,OACAK,OACA4jB,OACAC,QAAA,IAGAnB,QAAA,UACAC,MAAA,QACAC,UAAA,EACAC,WAAA,EACAC,SAAAtnB,KAAA2H,QAAAwgB,OAAAzd,IAAA0d,KACA7e,IAAA,IAAAmG,OAAA0Y,GACA5jB,OACA4jB,YAGAb,MAAAniB,IAAA,IAAAsK,OAAAtK,EAAAZ,MAAA4jB,OAAA,IAIAppB,UAAA2D,KACAA,EAAAwB,OACAA,IAEA,OAAAK,GAAoBM,OAAA0iB,EAAA,EAAA1iB,CAAenC,EAAAwB,EAAAsjB,MAAA9H,UAAAnb,GAGnCxF,MAAA2D,KACAA,IAEA,OAAA3C,KAAA2H,QAAAwgB,OAAAG,OAAA,CAAA1G,EAAAwG,SAA0DxG,MAE1D5iB,CAAA,cAAA0Q,OAAA0Y,IAAuCtjB,OAAA0iB,EAAA,EAAA1iB,CAAYnC,GACnDylB,iBAMAppB,YAAA2D,KACAA,IAEA,OAAA3C,KAAA2H,QAAAwgB,OAAAzd,IAAA0d,GAA4CtjB,OAAA0iB,EAAA,EAAA1iB,CAAsB,IAAA2L,OAAA,SAAiBf,OAAA0Y,EAAA,WAAoBzlB,EAAA,MACvGylB,mBAMMG,UAAuBtB,EAAA,EAC7B5Z,WACA,wBAGAlJ,aACA,OACAgjB,MAAA,QACAG,WACA/d,IAAA,OAEAge,MAAA,YAIAvoB,UAAA2D,KACAA,IAEA,WAAAzC,EAAAmD,MAAAnD,EAAAS,GAAA6nB,qBAAA7lB,EAAA+S,WAGA1W,YAAA2D,KACAA,IAEA,OAAYmC,OAAA0iB,EAAA,EAAA1iB,CAAa,2BAAAnC,WAwHnB8lB,UAAiBxB,EAAA,EACvB5Z,WACA,kBAGAlJ,aACA,OACA+iB,QAAA,mBACAE,UAAA,EACAC,WAAA,EACAC,WACA/d,IAAA,OAEAge,MAAA,cAIAvoB,MAAA2D,KACAA,IAEA,OACA+lB,MAAa5jB,OAAA0iB,EAAA,EAAA1iB,CAAanC,GAC1BgmB,IAAW7jB,OAAA0iB,EAAA,EAAA1iB,CAAYnC,GACvBimB,YAAmB9jB,OAAA0iB,EAAA,EAAA1iB,CAAYnC,WAgUzBkmB,UAAoB5B,EAAA,EAC1B5Z,WACA,qBAGAlJ,aACA,OACAK,OACAskB,OACAT,QAAA,IAGAnB,QAAA,aACAC,MAAA,QACAG,WACA/d,IAAA,KACAjF,SAAAykB,KACAD,MAAAC,EAAAC,aAAA,UAAAD,EAAAE,aAAA,eAGA1B,MAAAniB,GAAA,IAAAA,EAAAZ,MAAAskB,OAAA,eACA3oB,MAAAiF,EAAAZ,MAAAskB,OACO,IAIP9pB,UAAA2D,KACAA,EAAAwB,OACAA,IAEA,UAAiBW,OAAA0iB,EAAA,EAAA1iB,CAAUnC,EAAAwB,EAAAsjB,MAAAG,WAG3B5oB,MAAA2D,KACAA,EAAAwB,OACAA,IAEA,OACA+kB,eAAsBpkB,OAAA0iB,EAAA,EAAA1iB,CAAUnC,EAAAwB,EAAAsjB,MAAAG,YAIhC5oB,YAAA2D,KACAA,IAEA,OAAYmC,OAAA0iB,EAAA,EAAA1iB,CAAiB,cAAAnC,EAAA7C,KAC7BgpB,OAAAhpB,EAAA,KACK,CAAAA,EAAAsF,MAAA+jB,WAAA/jB,EAAAZ,MAAAskB,SAAAhpB,EAAA,MAKYgF,OAAAskB,EAAA,WAAAtkB,EACjBukB,WAAA,QACAC,YAAA,SACAC,gBACAC,YACAnB,QAAA,KAEAoB,WAAAV,GACAA,EAAAW,MAAAC,iBAAA,KAGA3qB,WAAAgK,EAAAxE,GACA,GAAAwE,EAAA,CACA,MAAA0gB,GACAA,MAAA,GAAAha,OAAAlL,EAAAklB,OAAA,yBAAAha,OAAA1G,EAAA,MAEAlE,OAAAkL,OAAAxL,EAAAklB,eAsNME,UAAa3C,EAAA,EACnB5Z,WACA,aAGAlJ,aACA,OACAmjB,WACA/d,IAAA,WAEAA,IAAA,IACAjF,SAAAc,GAAA,WAAAA,EAAAskB,MAAAG,YAAA,OAEAH,MAAA,cACAplB,SAAA0E,GAAA,4BAAmDwN,KAAAxN,IAAA,OAEnDue,MAAA,kBAIAvoB,MAAA2D,KACAA,IAEA,OACAmnB,QAAehlB,OAAA0iB,EAAA,EAAA1iB,CAAUnC,IAIzB3D,UAAA2D,KACAA,IAEA,UAAiBmC,OAAA0iB,EAAA,EAAA1iB,CAAUnC,GAG3B3D,YAAA2D,KACAA,IAEA,OAAYmC,OAAA0iB,EAAA,EAAA1iB,CAAa,kCAAAnC,IAGzB3D,YAAA2D,KACAA,IAEA,OAAYmC,OAAA0iB,EAAA,EAAA1iB,CAAa,kCAAAnC,WAgDnBonB,UAAe9C,EAAA,EACrB5Z,WACA,eAGAlJ,aACA,OACAmjB,WACA/d,IAAA,MAEAA,IAAA,OAEAmgB,MAAA,sBAEAnC,MAAA,cAIAvoB,MAAA2D,KACAA,IAEA,OACAqnB,QAAellB,OAAA0iB,EAAA,EAAA1iB,CAAUnC,IAIzB3D,UAAA2D,KACAA,IAEA,UAAiBmC,OAAA0iB,EAAA,EAAA1iB,CAAUnC,GAG3B3D,YAAA2D,KACAA,IAEA,OAAYmC,OAAA0iB,EAAA,EAAA1iB,CAAa,yBAAAnC,GAAkCmC,OAAA0iB,EAAA,EAAA1iB,CAAa,2BAAAnC,IAGxE3D,YAAA2D,KACAA,IAEA,OAAYmC,OAAA0iB,EAAA,EAAA1iB,CAAa,aAAAnC,GAAsBmC,OAAA0iB,EAAA,EAAA1iB,CAAa,eAAAnC,WAKtDsnB,UAAahD,EAAA,EACnB5Z,WACA,aAGA6a,qBACA,OACAgC,aAAA,EACAC,OAAA,MAIAhmB,aACA,OACAK,OACAtF,MACAmpB,QAAA,MAEA8B,QACA9B,QAAA,OAGA+B,WAAA,EACA9C,WACA/d,IAAA,UACAjF,SAAAykB,KACA7pB,KAAA6pB,EAAAE,aAAA,QACAkB,OAAApB,EAAAE,aAAA,cAGA1B,MAAAniB,IAAA,QAA4BA,EAAAZ,MAC5B6lB,IAAA,+BACAF,OAAAnqB,KAAA2H,QAAAwiB,QACO,IAIPnrB,UAAA2D,KACAA,IAEA,OAAA6B,GACAA,EAAAtF,KACe4F,OAAA0iB,EAAA,EAAA1iB,CAAUnC,EAAA6B,GAGZM,OAAA0iB,EAAA,EAAA1iB,CAAUnC,GAIvB3D,YAAA2D,KACAA,IAEA,OAAYmC,OAAA0iB,EAAA,EAAA1iB,CAAS,iGAA+DnC,EAAA2nB,KACpFprB,KAAAorB,MAIA9mB,cACA,OAAAxD,KAAA2H,QAAAuiB,aAIA,IAAgBjD,EAAA,GAChBxlB,OACA8oB,YAAA,CAAA5oB,EAAAS,EAAA+H,KACA,MAAAhG,OACAA,GACWxC,EAAAzB,MACXsE,EAAwBM,OAAA0lB,EAAA,EAAA1lB,CAAYnD,EAAAzB,MAAAiE,EAAAF,MAAAwmB,MAEpCjmB,EAAAtF,MAAAiL,EAAAggB,kBAAAO,oBACAvgB,EAAAwgB,kBACA3N,OAAAvS,KAAAjG,EAAAtF,KAAAsF,EAAA2lB,wBA0DMS,UAAkB3D,EAAA,EACxB5Z,WACA,kBAGAlJ,aACA,OACAmjB,WACA/d,IAAA,MAEAmgB,MAAA,kBACAplB,SAAA0E,GAAA,cAAAA,IAEAue,MAAA,aAIAvoB,MAAA2D,KACAA,IAEA,OACAkoB,QAAe/lB,OAAA0iB,EAAA,EAAA1iB,CAAUnC,IAIzB3D,UAAA2D,KACAA,IAEA,UAAiBmC,OAAA0iB,EAAA,EAAA1iB,CAAUnC,UAuIrBmoB,UAAgB7D,EAAA,EACtB5Z,WACA,gBAGA6a,qBACA,OACAzJ,MAAA,GACA6H,cAAA,IAIAtnB,OASA,OAPA+rB,QAAehE,EACfiE,QAAezF,EACf0F,cAAqB1F,EAErB2F,QAAenE,EACfoE,cAAqB5F,GAKrB/hB,cACA,OAAY6iB,GACZ5H,MAAAze,KAAA2H,QAAA8W,MACA6H,cAAAtmB,KAAA2H,QAAA2e,iBAIAtnB,WACA,OACA+nB,KAAA,IAAkBA,EAClBxB,KAAA,IAAkBA,EAClB6F,UAAA,KDxqCA,SAAAlrB,GACA,IAAAqmB,EAAAd,EAAA/hB,SAAAxD,GACA,OAAAqmB,IAAArf,KAAA2a,WAAA,ICuqCAwJ,UAAA,KDlqCA,SAAAnrB,GACA,IAAAqmB,EAAAd,EAAA/hB,SAAAxD,GACA,OAAAqmB,IAAA1B,OAAAhD,WAAA,0CExbAziB,EAAAC,EAAAC,EAAA,sBAAAgsB,IAAAlsB,EAAAC,EAAAC,EAAA,sBAAAisB,IAAAnsB,EAAAC,EAAAC,EAAA,sBAAAksB,IAAApsB,EAAAC,EAAAC,EAAA,sBAAAmsB,IAAArsB,EAAAC,EAAAC,EAAA,sBAAAkG,IAAApG,EAAAC,EAAAC,EAAA,sBAAAosB,IAAAtsB,EAAAC,EAAAC,EAAA,sBAAAqsB,IAAA,IAAAC,EAAAxsB,EAAA,QAAAysB,EAAAzsB,EAAA,QAAA0sB,EAAA1sB,EAAA,QAMA,SAAA2sB,EAAA7rB,EAAAmD,GACA,OAAAnD,EAAAiC,UAAAoe,QACAld,GAAiBA,EAAAnD,EAAAS,GAAAorB,kBAAA/F,mBACjB,GAuDA,SAAAgG,EAAA5mB,EAAA6mB,GACA,KAAQ7mB,EAAMA,EAAA,SAAA6mB,EAAA7mB,EAAA2E,WAAA3E,EAAA8mB,UACT,GAAA9mB,EAAA+mB,YAAwB,SAC7B,SA4BA,SAAAC,EAAAC,GACA,IAAAA,EAAA3pB,OAAAC,KAAAC,KAAA0pB,UAAyC,QAAAnpB,EAAAkpB,EAAA5N,MAAA,EAA6Btb,GAAA,EAAQA,IAAA,CAC9E,GAAAkpB,EAAA/mB,MAAAnC,GAAA,EAA4B,OAAAkpB,EAAA7pB,IAAAC,QAAA4pB,EAAArnB,OAAA7B,EAAA,IAC5B,GAAAkpB,EAAAjnB,KAAAjC,GAAAR,KAAAC,KAAA0pB,UAA2C,MAE3C,YAwEA,SAAAC,EAAAF,GACA,IAAAA,EAAA3pB,OAAAC,KAAAC,KAAA0pB,UAAyC,QAAAnpB,EAAAkpB,EAAA5N,MAAA,EAA6Btb,GAAA,EAAQA,IAAA,CAC9E,IAAAT,EAAA2pB,EAAAjnB,KAAAjC,GACA,GAAAkpB,EAAA/mB,MAAAnC,GAAA,EAAAT,EAAAymB,WAAgD,OAAAkD,EAAA7pB,IAAAC,QAAA4pB,EAAA5Z,MAAAtP,EAAA,IAChD,GAAAT,EAAAC,KAAAC,KAAA0pB,UAAqC,MAErC,YA4CA,SAAAb,EAAAvrB,EAAAmD,GACA,IAAAtC,EAAAb,EAAAiC,UACAI,EAAAxB,EAAAwB,MACAiqB,EAAAzrB,EAAAyrB,IACA7nB,EAAApC,EAAAqC,WAAA4nB,GAAArC,EAAAxlB,GAAuDG,OAAA8mB,EAAA,EAAA9mB,CAAUH,GACjE,aAAAwlB,IACA9mB,GAAiBA,EAAAnD,EAAAS,GAAA8qB,KAAA9mB,EAAAwlB,GAAAnE,mBACjB,GAgBA,SAAAyG,EAAA3sB,GACA,QAAAqD,EAAA,EAAiBA,EAAArD,EAAA4sB,UAAqBvpB,IAAA,CACtC,IACAR,EADA7C,EAAA6sB,KAAAxpB,GACAR,KACA,GAAAA,EAAAwpB,cAAAxpB,EAAAiqB,mBAAuD,OAAAjqB,EAEvD,YAOA,SAAA6oB,EAAAtrB,EAAAmD,GACA,IAAAtC,EAAAb,EAAAiC,UACA0qB,EAAA9rB,EAAA8rB,MACAC,EAAA/rB,EAAA+rB,QACA,IAAAD,EAAAnqB,OAAAC,KAAAC,KAAAC,OAAAgqB,EAAAE,WAAAD,GAAmE,SACnE,IAAAE,EAAAH,EAAAznB,MAAA,GAAAqN,EAAAoa,EAAAtnB,YAAA,GAAA5C,EAAA8pB,EAAAO,EAAAC,eAAAxa,IACA,IAAAua,EAAA3nB,eAAAoN,IAAA9P,GAAkD,SAClD,GAAAU,EAAA,CACA,IAAAjB,EAAAyqB,EAAApa,QAAA9R,EAAAT,EAAAS,GAAAuD,YAAA9B,IAAAO,EAAAuqB,iBACAvsB,EAAAmlB,aAAoBgG,EAAA,UAASqB,KAAAxsB,EAAA6B,IAAAC,QAAAL,GAAA,IAC7BiB,EAAA1C,EAAAqlB,kBAEA,SA6CA,SAAAoH,EAAAltB,EAAAmD,GACA,IAAAtC,EAAAb,EAAAiC,UACAI,EAAAxB,EAAAwB,MACAiqB,EAAAzrB,EAAAyrB,IACA,GAAAtsB,EAAAiC,qBAAiC2pB,EAAA,eAAa5rB,EAAAiC,UAAAiD,KAAAioB,QAC9C,SAAA9qB,EAAAW,eAAgC4B,OAAA8mB,EAAA,EAAA9mB,CAAQ5E,EAAAsC,IAAAD,EAAAH,QACxCiB,GAAmBA,EAAAnD,EAAAS,GAAAyP,MAAA7N,EAAAH,KAAA4jB,mBACnB,GAGA,IAAAzjB,EAAAG,OAAA2qB,QAA8B,SAE9B,GAAAhqB,EAAA,CACA,IAAAiqB,EAAAd,EAAAtpB,cAAAspB,EAAA9pB,OAAAwkB,QAAAqG,KACA5sB,EAAAT,EAAAS,GACAT,EAAAiC,qBAAmC2pB,EAAA,eAAgBnrB,EAAAorB,kBACnD,IAAAyB,EAAA,GAAAjrB,EAAAkc,MAAA,KAAAgO,EAAAlqB,EAAA6C,MAAA,GAAA6nB,eAAA1qB,EAAAgD,YAAA,KACAkoB,EAAAH,GAAAE,IAAmC7qB,KAAA6qB,IAAY,KAC/CE,EAAc5oB,OAAA8mB,EAAA,EAAA9mB,CAAQnE,EAAA6B,IAAA7B,EAAA+hB,QAAAhY,IAAAnI,EAAAH,KAAA,EAAAqrB,GACtBA,GAAAC,IAA0B5oB,OAAA8mB,EAAA,EAAA9mB,CAAQnE,EAAA6B,IAAA7B,EAAA+hB,QAAAhY,IAAAnI,EAAAH,KAAA,EAAAorB,KAAkD7qB,KAAA6qB,OACpFC,IAAgB9qB,KAAA6qB,IAChBE,GAAA,GAEAA,IACA/sB,EAAAyP,MAAAzP,EAAA+hB,QAAAhY,IAAAnI,EAAAH,KAAA,EAAAqrB,GACAH,GAAA/qB,EAAAW,cAAAX,EAAAG,OAAAC,MAAA6qB,IACAjrB,EAAA6C,MAAA,GAAAuoB,WAAAprB,EAAA+C,OAAA,GAAA/C,EAAAgD,YAAA,GAA2EsmB,EAAA,SAAQjqB,KAAA4rB,EAAA9X,SAAAnT,EAAAG,UAC1E/B,EAAAitB,cAAAjtB,EAAA+hB,QAAAhY,IAAAnI,EAAAyC,UAAAwoB,IAETnqB,EAAA1C,EAAAqlB,kBAEA,SAqDA,SAAA6H,EAAA3tB,EAAA4tB,EAAAzqB,GACA,IAAA0qB,EAAAjuB,EAAAkF,EAAA8oB,EAAA7oB,WAAAwN,EAAAqb,EAAAE,UACA,GAAAhpB,EAAArC,KAAAC,KAAA0pB,WAAA7Z,EAAA9P,KAAAC,KAAA0pB,UAAgE,SAChE,GApBA,SAAApsB,EAAAmsB,EAAAhpB,GACA,IAAA2B,EAAAqnB,EAAApnB,WAAAwN,EAAA4Z,EAAA2B,UAAA1oB,EAAA+mB,EAAA/mB,QACA,UAAAN,GAAAyN,GAAAzN,EAAArC,KAAAsrB,kBAAAxb,EAAA9P,UACAqC,EAAAkiB,QAAAqG,MAAAlB,EAAA3pB,OAAAirB,WAAAroB,EAAA,EAAAA,IACAjC,GAAmBA,EAAAnD,EAAAS,GAAA+D,OAAA2nB,EAAAjqB,IAAA4C,EAAAkpB,SAAA7B,EAAAjqB,KAAA4jB,kBACnB,IAEAqG,EAAA3pB,OAAAirB,WAAAroB,IAAA,KAAAmN,EAAA0Z,cAA0ErnB,OAAA8mB,EAAA,EAAA9mB,CAAO5E,EAAAsC,IAAA6pB,EAAAjqB,OAEjFiB,GACKA,EAAAnD,EAAAS,GACLwtB,kBAAA9B,EAAAjqB,IAAA4C,EAAArC,KAAAqC,EAAAioB,eAAAjoB,EAAAmkB,aACAjkB,KAAAmnB,EAAAjqB,KACA4jB,kBACA,KAMAoI,CAAAluB,EAAA4tB,EAAAzqB,GAA8C,SAE9C,GAAAyqB,EAAAprB,OAAAirB,WAAAG,EAAAxoB,QAAAwoB,EAAAxoB,QAAA,KACAyoB,GAAAjuB,EAAAkF,EAAAioB,eAAAjoB,EAAAmkB,aAAAkF,aAAA5b,EAAA9P,QACA7C,EAAAwuB,UAAAP,EAAA,IAAAtb,EAAA9P,MAAA4rB,SAAA,CACA,GAAAlrB,EAAA,CAEA,IADA,IAAAjD,EAAA0tB,EAAA1rB,IAAAqQ,EAAAyb,SAAAnpB,EAAkD8mB,EAAA,SAAQtL,MAC1Dpd,EAAA4qB,EAAAttB,OAAA,EAAmC0C,GAAA,EAAQA,IAClC4B,EAAQ8mB,EAAA,SAAQjqB,KAAAmsB,EAAA5qB,GAAAuS,OAAA,KAAA3Q,IACzBA,EAAa8mB,EAAA,SAAQjqB,KAAAoD,EAAAwpB,KAAAzpB,IACrB,IAAApE,EAAAT,EAAAS,GAAAmD,KAAA,IAAiC8nB,EAAA,EAAiBkC,EAAA1rB,IAAA,EAAAhC,EAAA0tB,EAAA1rB,IAAAhC,EAAA,IAAuCyrB,EAAA,MAAK9mB,EAAA,KAAAgpB,EAAAttB,QAAA,IAC9FguB,EAAAruB,EAAA,EAAA2tB,EAAAttB,OACUqE,OAAA8mB,EAAA,EAAA9mB,CAAOnE,EAAA6B,IAAAisB,IAAmB9tB,EAAAuE,KAAAupB,GACpCprB,EAAA1C,EAAAqlB,kBAEA,SAGA,IAAA0I,EAAiB5C,EAAA,UAAS6C,SAAAb,EAAA,GAC1BnpB,EAAA+pB,KAAAnsB,MAAAqC,WAAA8pB,EAAAlC,KAAArC,EAAAxlB,GAAqFG,OAAA8mB,EAAA,EAAA9mB,CAAUH,GAC/F,aAAAwlB,MAAA2D,EAAArP,QACApb,GAAmBA,EAAAnD,EAAAS,GAAA8qB,KAAA9mB,EAAAwlB,GAAAnE,mBACnB,GAWA,SAAA2F,EAAAtnB,EAAAG,GACA,gBAAAtE,EAAAmD,GACA,IAAAtC,EAAAb,EAAAiC,UACAI,EAAAxB,EAAAwB,MACAiqB,EAAAzrB,EAAAyrB,IACA7nB,EAAApC,EAAAqC,WAAA4nB,GAAA3nB,EAAAF,GAA2DG,OAAA8mB,EAAA,EAAA9mB,CAAYH,EAAAN,EAAAG,GACvE,QAAAK,IACAxB,GAAmBA,EAAAnD,EAAAS,GAAAoE,KAAAJ,EAAAE,GAAAmhB,mBACnB,IAOA,SAAAxgB,EAAAnB,EAAAG,GACA,gBAAAtE,EAAAmD,GACA,IAAAtC,EAAAb,EAAAiC,UACAP,EAAAb,EAAAa,KACAC,EAAAd,EAAAc,GACA+sB,GAAA,EAWA,OAVA1uB,EAAAsC,IAAAqsB,aAAAjtB,EAAAC,EAAA,SAAAuD,EAAAhD,GACA,GAAAwsB,EAAuB,SACvB,GAAAxpB,EAAA+mB,cAAA/mB,EAAA0pB,UAAAzqB,EAAAG,GACA,GAAAY,EAAAzC,MAAA0B,EACAuqB,GAAA,MACO,CACP,IAAAvC,EAAAnsB,EAAAsC,IAAAC,QAAAL,GAAAkD,EAAA+mB,EAAA/mB,QACAspB,EAAAvC,EAAA3pB,OAAA2C,eAAAC,IAAA,EAAAjB,QAGAuqB,IACAvrB,GAAmBA,EAAAnD,EAAAS,GAAA6E,aAAA5D,EAAAC,EAAAwC,EAAAG,GAAAwhB,mBACnB,IAiCA,SAAA0F,EAAAqD,EAAAvqB,GACA,gBAAAtE,EAAAmD,GACA,IAAAtC,EAAAb,EAAAiC,UACAoe,EAAAxf,EAAAwf,MACAre,EAAAnB,EAAAmB,QACAkjB,EAAArkB,EAAAqkB,OACA,GAAA7E,IAAAre,IAnCA,SAAAM,EAAA4iB,EAAAziB,GAaA,IAZA,IAAAqsB,EAAA,SAAA7rB,GACA,IAAApC,EAAAqkB,EAAAjiB,GACAZ,EAAAxB,EAAAwB,MACAiqB,EAAAzrB,EAAAyrB,IACAkB,EAAA,GAAAnrB,EAAAkc,OAAAjc,EAAAG,KAAAssB,eAAAtsB,GAKA,GAJAH,EAAAqsB,aAAAtsB,EAAAH,IAAAoqB,EAAApqB,IAAA,SAAAgD,GACA,GAAAsoB,EAAgB,SAChBA,EAAAtoB,EAAA8pB,eAAA9pB,EAAAzC,KAAAssB,eAAAtsB,KAEA+qB,EAAc,OAASyB,GAAA,IAGvBhsB,EAAA,EAAiBA,EAAAiiB,EAAA3kB,OAAmB0C,IAAA,CACpC,IAAAisB,EAAAJ,EAAA7rB,GAEA,GAAAisB,EAAA,OAAAA,EAAAD,EAEA,SAiBAE,CAAAnvB,EAAAsC,IAAA4iB,EAAA2J,GAA2E,SAC3E,GAAA1rB,EACA,GAAAnB,EACA6sB,EAAAO,QAAApvB,EAAAqvB,aAAArtB,EAAA+B,SACWZ,EAAAnD,EAAAS,GAAA6uB,iBAAAT,IAEA1rB,EAAAnD,EAAAS,GAAA8uB,cAAAV,EAAArZ,OAAAlR,SACJ,CAEP,IADA,IAAAkrB,GAAA,EAAA/uB,EAAAT,EAAAS,GACAwC,EAAA,GAAuBusB,GAAAvsB,EAAAiiB,EAAA3kB,OAA2B0C,IAAA,CAClD,IAAAwsB,EAAAvK,EAAAjiB,GACAZ,EAAAotB,EAAAptB,MACAiqB,EAAAmD,EAAAnD,IACAkD,EAAAxvB,EAAAsC,IAAAotB,aAAArtB,EAAAH,IAAAoqB,EAAApqB,IAAA2sB,GAEA,QAAAc,EAAA,EAAyBA,EAAAzK,EAAA3kB,OAAqBovB,IAAA,CAC9C,IAAAC,EAAA1K,EAAAyK,GACAE,EAAAD,EAAAvtB,MACAytB,EAAAF,EAAAtD,IACAkD,EAAoB/uB,EAAAsvB,WAAAF,EAAA3tB,IAAA4tB,EAAA5tB,IAAA2sB,GACJpuB,EAAAuvB,QAAAH,EAAA3tB,IAAA4tB,EAAA5tB,IAAA2sB,EAAArZ,OAAAlR,IAEhBnB,EAAA1C,EAAAqlB,kBAGA,UA4DA,SAAAuF,IAEA,IADA,IAAA4E,KAAAC,EAAAC,UAAA5vB,OACA2vB,KAAAD,EAAAC,GAAAC,UAAAD,GAEA,gBAAAlwB,EAAAmD,EAAA1B,GACA,QAAAwB,EAAA,EAAmBA,EAAAgtB,EAAA1vB,OAAqB0C,IACjC,GAAAgtB,EAAAhtB,GAAAjD,EAAAmD,EAAA1B,GAA0C,SACjD,UAIA,IAAA2uB,EAAA/E,EAAAQ,EAvkBA,SAAA7rB,EAAAmD,EAAA1B,GACA,IACAO,EADAhC,EAAAiC,UACAD,QACA,IAAAA,IAAAP,KAAA4uB,eAAA,WAAArwB,GACAgC,EAAAgB,aAAA,GACK,SAEL,IAAA4qB,EAAA1B,EAAAlqB,GAGA,IAAA4rB,EAAA,CACA,IAAAnpB,EAAAzC,EAAA0C,aAAAulB,EAAAxlB,GAAwDG,OAAA8mB,EAAA,EAAA9mB,CAAUH,GAClE,aAAAwlB,IACA9mB,GAAmBA,EAAAnD,EAAAS,GAAA8qB,KAAA9mB,EAAAwlB,GAAAnE,mBACnB,GAGA,IAAAhhB,EAAA8oB,EAAA7oB,WAEA,IAAAD,EAAArC,KAAAC,KAAA0pB,WAAAuB,EAAA3tB,EAAA4tB,EAAAzqB,GACK,SAIL,MAAAnB,EAAAQ,OAAAwkB,QAAAqG,OACAvB,EAAAhnB,EAAA,QAAqC8mB,EAAA,cAAa0E,aAAAxrB,IAAA,CAClD,GAAA3B,EAAA,CACA,IAAA1C,EAAAT,EAAAS,GAAA8vB,YAAAvuB,EAAA8C,SAAA9C,EAAAuQ,SACA9R,EAAAmlB,aAAAkG,EAAAhnB,EAAA,OAAmD8mB,EAAA,UAAS6C,SAAAhuB,EAAA6B,IAAAC,QAAA9B,EAAA+hB,QAAAhY,IAAAojB,EAAA1rB,KAAA,QACpC0pB,EAAA,cAAapW,OAAA/U,EAAA6B,IAAAsrB,EAAA1rB,IAAA4C,EAAAkpB,WACrC7qB,EAAA1C,EAAAqlB,kBAEA,SAIA,SAAAhhB,EAAA0rB,QAAA5C,EAAArP,OAAAvc,EAAAuc,MAAA,IACApb,GAAmBA,EAAAnD,EAAAS,GAAA+D,OAAAopB,EAAA1rB,IAAA4C,EAAAkpB,SAAAJ,EAAA1rB,KAAA4jB,kBACnB,KAmBA,SAAA9lB,EAAAmD,EAAA1B,GACA,IAAAZ,EAAAb,EAAAiC,UACA0qB,EAAA9rB,EAAA8rB,MAEAiB,EAAAjB,EACA,IAFA9rB,EAAAwf,MAEe,SAEf,GAAAsM,EAAAnqB,OAAAypB,YAAA,CACA,GAAAxqB,KAAA4uB,eAAA,WAAArwB,GAAA2sB,EAAA3pB,aAAA,EAAkF,SAClF4qB,EAAA1B,EAAAS,GAEA,IAAAznB,EAAA0oB,KAAA7oB,WACA,SAAAG,IAAgB0mB,EAAA,cAAa0E,aAAAprB,KAC7B/B,GACKA,EAAAnD,EAAAS,GAAAmlB,aAAgCgG,EAAA,cAAapW,OAAAxV,EAAAsC,IAAAsrB,EAAA1rB,IAAAgD,EAAA8oB,WAAAlI,kBAClD,MAggBA2K,EAAApF,EAAAQ,EA/eA,SAAA7rB,EAAAmD,EAAA1B,GACA,IACAO,EADAhC,EAAAiC,UACAD,QACA,IAAAA,IAAAP,KAAA4uB,eAAA,UAAArwB,GACAgC,EAAAgB,aAAAhB,EAAAQ,OAAAwkB,QAAAqG,MACK,SAEL,IAAAO,EAAAvB,EAAArqB,GAGA,IAAA4rB,EAAc,SAEd,IAAArb,EAAAqb,EAAAE,UAEA,GAAAH,EAAA3tB,EAAA4tB,EAAAzqB,GAA6C,SAI7C,MAAAnB,EAAAQ,OAAAwkB,QAAAqG,OACAvB,EAAAvZ,EAAA,UAAsCqZ,EAAA,cAAa0E,aAAA/d,IAAA,CACnD,GAAApP,EAAA,CACA,IAAA1C,EAAAT,EAAAS,GAAA8vB,YAAAvuB,EAAA8C,SAAA9C,EAAAuQ,SACA9R,EAAAmlB,aAAAkG,EAAAvZ,EAAA,SAAoDqZ,EAAA,UAAS6C,SAAAhuB,EAAA6B,IAAAC,QAAA9B,EAAA+hB,QAAAhY,IAAAojB,EAAA1rB,MAAA,GACrC0pB,EAAA,cAAapW,OAAA/U,EAAA6B,IAAA7B,EAAA+hB,QAAAhY,IAAAojB,EAAA1rB,OACrCiB,EAAA1C,EAAAqlB,kBAEA,SAIA,SAAAvT,EAAAie,QAAA5C,EAAArP,OAAAvc,EAAAuc,MAAA,IACApb,GAAmBA,EAAAnD,EAAAS,GAAA+D,OAAAopB,EAAA1rB,IAAA0rB,EAAA1rB,IAAAqQ,EAAAyb,UAAAlI,kBACnB,KAaA,SAAA9lB,EAAAmD,EAAA1B,GACA,IAAAZ,EAAAb,EAAAiC,UACA0qB,EAAA9rB,EAAA8rB,MAEAiB,EAAAjB,EACA,IAFA9rB,EAAAwf,MAEe,SACf,GAAAsM,EAAAnqB,OAAAypB,YAAA,CACA,GAAAxqB,KAAA4uB,eAAA,UAAArwB,GAAA2sB,EAAA3pB,aAAA2pB,EAAAnqB,OAAAwkB,QAAAqG,KACO,SACPO,EAAAvB,EAAAM,GAEA,IAAAznB,EAAA0oB,KAAAE,UACA,SAAA5oB,IAAgB0mB,EAAA,cAAa0E,aAAAprB,KAC7B/B,GACKA,EAAAnD,EAAAS,GAAAmlB,aAAgCgG,EAAA,cAAapW,OAAAxV,EAAAsC,IAAAsrB,EAAA1rB,MAAA4jB,kBAClD,MAgcA4K,GACAlI,MAAA6C,EA9XA,SAAArrB,EAAAmD,GACA,IAAAtC,EAAAb,EAAAiC,UACA0qB,EAAA9rB,EAAA8rB,MACAC,EAAA/rB,EAAA+rB,QACA,SAAAD,EAAAnqB,OAAAC,KAAAC,KAAAC,OAAAgqB,EAAAE,WAAAD,KACAzpB,GAAiBA,EAAAnD,EAAAS,GAAAC,WAAA,MAAAolB,kBACjB,KAkCA,SAAA9lB,EAAAmD,GACA,IAAAtC,EAAAb,EAAAiC,UACAI,EAAAxB,EAAAwB,MACAiqB,EAAAzrB,EAAAyrB,IACA,GAAAjqB,EAAAG,OAAAwsB,eAAA1C,EAAA9pB,OAAAwsB,cAA+D,SAC/D,IAAAvsB,EAAA8pB,EAAAlqB,EAAAG,OAAAuqB,eAAAT,EAAAjnB,eACA,IAAA5C,MAAAwpB,YAAmC,SACnC,GAAA9oB,EAAA,CACA,IAAA4oB,IAAA1pB,EAAAW,cAAAspB,EAAAlnB,QAAAknB,EAAA9pB,OAAAymB,WAAA5mB,EAAAiqB,GAAApqB,IACAzB,EAAAT,EAAAS,GAAAN,OAAA4rB,EAAAtpB,EAAAuqB,iBACAvsB,EAAAmlB,aAAoBgG,EAAA,cAAapW,OAAA/U,EAAA6B,IAAAypB,EAAA,IACjC5oB,EAAA1C,EAAAqlB,kBAEA,UAMA,SAAA9lB,EAAAmD,GACA,IACAnB,EADAhC,EAAAiC,UACAD,QACA,IAAAA,KAAAQ,OAAAwkB,QAAAqG,KAAgD,SAChD,GAAArrB,EAAAuc,MAAA,GAAAvc,EAAAuQ,SAAAvQ,EAAA9B,KAAA,IACA,IAAA4E,EAAA9C,EAAA8C,SACA,GAAQF,OAAA8mB,EAAA,EAAA9mB,CAAQ5E,EAAAsC,IAAAwC,GAEhB,OADA3B,GAAqBA,EAAAnD,EAAAS,GAAAyP,MAAApL,GAAAghB,mBACrB,EAGA,IAAArhB,EAAAzC,EAAA0C,aAAAulB,EAAAxlB,GAAsDG,OAAA8mB,EAAA,EAAA9mB,CAAUH,GAChE,aAAAwlB,IACA9mB,GAAiBA,EAAAnD,EAAAS,GAAA8qB,KAAA9mB,EAAAwlB,GAAAnE,mBACjB,IAqTAoH,GACAyD,YAAArF,EACAsF,UAAAR,EACAS,gBAAAT,EACAU,OAAAL,EACAM,aAAAN,EACAO,QAvPA,SAAAhxB,EAAAmD,GAEA,OADAA,GAAiBA,EAAAnD,EAAAS,GAAAmlB,aAAA,IAAoCgG,EAAA,aAAY5rB,EAAAsC,QACjE,IA6PA2uB,GACAC,SAAAR,EAAA,UACAS,gBAAAT,EAAA,iBACAU,SAAAV,EAAA,OACAW,qBAAAX,EAAA,cACAY,aAAAZ,EAAA,cACAa,QAAAb,EAAA,eAEA,QAAAtnB,KAAAsnB,EAA+BO,EAAA7nB,GAAAsnB,EAAAtnB,GAG/B,IAOAgiB,GAPA,oBAAAoG,UAAA,MAAAlb,KAAAkb,UAAAC,UACA,oBAAAC,IAAA,UAAAA,GAAAD,YAMAR,EAAAP,qCCxoBA,IAAAiB,EAAgBzyB,EAAQ,QAExB0yB,EAAApc,EAAAjP,OAcA,SAAAiP,EAAAqc,GAGA,OAFAC,EAAAC,YAAAF,EAAAE,aAAAF,EAAA1kB,KAEA2kB,EAEA,SAAAA,EAAAE,GAKA,OAJAA,IACAA,EAAAL,EAAA1wB,MAAA,KAAAkvB,YAGA,IAAA0B,EAAAG,IAtBApzB,EAAAC,QAAA+yB,EAEAA,EAAAK,KAAAzc,EAAA0c,WACAN,EAAAntB,MAAA+Q,EAAA2c,YACAP,EAAAQ,UAAA5c,EAAA6c,gBACAT,EAAAU,OAAA9c,EAAA+c,aACAX,EAAAnvB,KAAA+S,EAAAgd,WACAZ,EAAAa,IAAAjd,EAAAkd,UAEAd,EAAApc,4CCfAtW,EAAAC,EAAAC,EAAA,sBAAAuzB,IAAAzzB,EAAAC,EAAAC,EAAA,sBAAAwzB,IAAA1zB,EAAAC,EAAAC,EAAA,sBAAAyzB,IAAA3zB,EAAAC,EAAAC,EAAA,sBAAA0zB,IAAA5zB,EAAAC,EAAAC,EAAA,sBAAA2zB,IAAA7zB,EAAAC,EAAAC,EAAA,sBAAA4zB,IAAA9zB,EAAAC,EAAAC,EAAA,sBAAA6zB,IAAA/zB,EAAAC,EAAAC,EAAA,sBAAA8zB,IAAAh0B,EAAAC,EAAAC,EAAA,sBAAA+uB,IAAAjvB,EAAAC,EAAAC,EAAA,sBAAA+zB,IAAAj0B,EAAAC,EAAAC,EAAA,sBAAAg0B,IAAA,IAAAC,EAAAn0B,EAAA,QA8BAo0B,EAAA,MACAC,EAAAzwB,KAAA0wB,IAAA,MAEA,SAAAC,EAAAruB,EAAAhF,GAAqC,OAAAgF,EAAAhF,EAAAmzB,EACrC,SAAAG,EAAA5qB,GAA8B,OAAAA,EAAAwqB,EAK9B,IAAAK,EAAA,SAAAzxB,EAAA0xB,EAAAC,QACA,IAAAD,OAAA,QACA,IAAAC,MAAA,MAGA/zB,KAAAoC,MAGApC,KAAA8zB,UACA9zB,KAAA+zB,WAQAC,EAAA,SAAA5O,EAAA6O,QACA,IAAAA,OAAA,GAEAj0B,KAAAolB,SACAplB,KAAAi0B,YAGAD,EAAAttB,UAAAqtB,QAAA,SAAA/qB,GACA,IAAAkrB,EAAA,EAAA5uB,EAAAsuB,EAAA5qB,GACA,IAAAhJ,KAAAi0B,SAAuB,QAAA9wB,EAAA,EAAgBA,EAAAmC,EAAWnC,IAC7C+wB,GAAAl0B,KAAAolB,OAAA,EAAAjiB,EAAA,GAAAnD,KAAAolB,OAAA,EAAAjiB,EAAA,GACL,OAAAnD,KAAAolB,OAAA,EAAA9f,GAAA4uB,EAhCA,SAAAlrB,GAA+B,OAAAA,KAAAwqB,IAAAC,EAgC/BU,CAAAnrB,IAIAgrB,EAAAttB,UAAA0tB,UAAA,SAAAhyB,EAAAiyB,GAEA,YADA,IAAAA,MAAA,GACAr0B,KAAAs0B,KAAAlyB,EAAAiyB,GAAA,IAGAL,EAAAttB,UAAAgE,IAAA,SAAAtI,EAAAiyB,GAEA,YADA,IAAAA,MAAA,GACAr0B,KAAAs0B,KAAAlyB,EAAAiyB,GAAA,IAEAL,EAAAttB,UAAA4tB,KAAA,SAAAlyB,EAAAiyB,EAAAE,GAEA,IADA,IAAAL,EAAA,EAAAM,EAAAx0B,KAAAi0B,SAAA,IAAAQ,EAAAz0B,KAAAi0B,SAAA,IACA9wB,EAAA,EAAiBA,EAAAnD,KAAAolB,OAAA3kB,OAAwB0C,GAAA,GACzC,IAAAhD,EAAAH,KAAAolB,OAAAjiB,IAAAnD,KAAAi0B,SAAAC,EAAA,GACA,GAAA/zB,EAAAiC,EAAsB,MACtB,IAAAsyB,EAAA10B,KAAAolB,OAAAjiB,EAAAqxB,GAAAG,EAAA30B,KAAAolB,OAAAjiB,EAAAsxB,GAAAr0B,EAAAD,EAAAu0B,EACA,GAAAtyB,GAAAhC,EAAA,CACA,IACAiJ,EAAAlJ,EAAA+zB,IADAQ,EAAAtyB,GAAAjC,GAAA,EAAAiC,GAAAhC,EAAA,EAAAi0B,KACA,IAAAM,GACA,GAAAJ,EAAmB,OAAAlrB,EACnB,IAAA0qB,EAAA3xB,IAAAiyB,EAAA,EAAAl0B,EAAAC,GAAA,KAAAuzB,EAAAxwB,EAAA,EAAAf,EAAAjC,GACA,WAAA0zB,EAAAxqB,EAAAgrB,EAAA,EAAAjyB,GAAAjC,EAAAiC,GAAAhC,EAAA2zB,GAEAG,GAAAS,EAAAD,EAEA,OAAAH,EAAAnyB,EAAA8xB,EAAA,IAAAL,EAAAzxB,EAAA8xB,IAGAF,EAAAttB,UAAAkuB,QAAA,SAAAxyB,EAAA2xB,GAGA,IAFA,IAAAG,EAAA,EAAA5uB,EAAAsuB,EAAAG,GACAS,EAAAx0B,KAAAi0B,SAAA,IAAAQ,EAAAz0B,KAAAi0B,SAAA,IACA9wB,EAAA,EAAiBA,EAAAnD,KAAAolB,OAAA3kB,OAAwB0C,GAAA,GACzC,IAAAhD,EAAAH,KAAAolB,OAAAjiB,IAAAnD,KAAAi0B,SAAAC,EAAA,GACA,GAAA/zB,EAAAiC,EAAsB,MACtB,IAAAsyB,EAAA10B,KAAAolB,OAAAjiB,EAAAqxB,GACA,GAAApyB,GADAjC,EAAAu0B,GACAvxB,GAAA,EAAAmC,EAAuC,SACvC4uB,GAAAl0B,KAAAolB,OAAAjiB,EAAAsxB,GAAAC,EAEA,UAMAV,EAAAttB,UAAA4B,QAAA,SAAAsY,GAEA,IADA,IAAA4T,EAAAx0B,KAAAi0B,SAAA,IAAAQ,EAAAz0B,KAAAi0B,SAAA,IACA9wB,EAAA,EAAA+wB,EAAA,EAA2B/wB,EAAAnD,KAAAolB,OAAA3kB,OAAwB0C,GAAA,GACnD,IAAAhD,EAAAH,KAAAolB,OAAAjiB,GAAA0xB,EAAA10B,GAAAH,KAAAi0B,SAAAC,EAAA,GAAAY,EAAA30B,GAAAH,KAAAi0B,SAAA,EAAAC,GACAQ,EAAA10B,KAAAolB,OAAAjiB,EAAAqxB,GAAAG,EAAA30B,KAAAolB,OAAAjiB,EAAAsxB,GACA7T,EAAAiU,IAAAH,EAAAI,IAAAH,GACAT,GAAAS,EAAAD,IAOAV,EAAAttB,UAAA3C,OAAA,WACA,WAAAiwB,EAAAh0B,KAAAolB,QAAAplB,KAAAi0B,WAGAD,EAAAttB,UAAAC,SAAA,WACA,OAAA3G,KAAAi0B,SAAA,QAAAznB,KAAAC,UAAAzM,KAAAolB,SAOA4O,EAAA1zB,OAAA,SAAA8iB,GACA,UAAAA,EAAA4Q,EAAAzT,MAAA,IAAAyT,EAAA5Q,EAAA,MAAAA,EAAA,QAAAA,KAGA4Q,EAAAzT,MAAA,IAAAyT,MASA,IAAAnB,EAAA,SAAAzQ,EAAA2S,EAAAnzB,EAAAC,GAGA7B,KAAAoiB,WAIApiB,KAAA4B,QAAA,EAGA5B,KAAA6B,GAAA,MAAAA,EAAA7B,KAAAoiB,KAAA3hB,OAAAoB,EACA7B,KAAA+0B,UAyGA,SAAAC,EAAAvtB,GACA,IAAAN,EAAAV,MAAAG,KAAA5G,KAAAyH,GAEA,OADAN,EAAAwC,UAAAqrB,EAAAtuB,UACAS,EAvGA0rB,EAAAnsB,UAAAlG,MAAA,SAAAoB,EAAAC,GAIA,YAHA,IAAAD,MAAA,QACA,IAAAC,MAAA7B,KAAAoiB,KAAA3hB,QAEA,IAAAoyB,EAAA7yB,KAAAoiB,KAAApiB,KAAA+0B,OAAAnzB,EAAAC,IAGAgxB,EAAAnsB,UAAA8nB,KAAA,WACA,WAAAqE,EAAA7yB,KAAAoiB,KAAA5hB,QAAAR,KAAA+0B,QAAA/0B,KAAA+0B,OAAAv0B,QAAAR,KAAA4B,KAAA5B,KAAA6B,KAOAgxB,EAAAnsB,UAAAic,UAAA,SAAAjY,EAAAuqB,GACAj1B,KAAA6B,GAAA7B,KAAAoiB,KAAAlY,KAAAQ,GACA,MAAAuqB,GAAwBj1B,KAAAk1B,UAAAl1B,KAAAoiB,KAAA3hB,OAAA,EAAAw0B,IAMxBpC,EAAAnsB,UAAAyuB,cAAA,SAAAzS,GACA,QAAAvf,EAAA,EAAAiyB,EAAAp1B,KAAAoiB,KAAA3hB,OAA+C0C,EAAAuf,EAAAN,KAAA3hB,OAAyB0C,IAAA,CACxE,IAAAkyB,EAAA3S,EAAAwB,UAAA/gB,GACAnD,KAAA2iB,UAAAD,EAAAN,KAAAjf,GAAA,MAAAkyB,KAAAlyB,EAAAiyB,EAAAC,EAAA,QAQAxC,EAAAnsB,UAAAwd,UAAA,SAAAd,GACA,GAAApjB,KAAA+0B,OAAoB,QAAA5xB,EAAA,EAAgBA,EAAAnD,KAAA+0B,OAAAt0B,OAAwB0C,IACvD,GAAAnD,KAAA+0B,OAAA5xB,IAAAigB,EAA2B,OAAApjB,KAAA+0B,OAAA5xB,KAAA,UAGhC0vB,EAAAnsB,UAAAwuB,UAAA,SAAA9R,EAAAxT,GACA5P,KAAA+0B,SAAqB/0B,KAAA+0B,WACrB/0B,KAAA+0B,OAAA7qB,KAAAkZ,EAAAxT,IAKAijB,EAAAnsB,UAAA4uB,sBAAA,SAAA5S,GACA,QAAAvf,EAAAuf,EAAAN,KAAA3hB,OAAA,EAAA80B,EAAAv1B,KAAAoiB,KAAA3hB,OAAAiiB,EAAAN,KAAA3hB,OAA2F0C,GAAA,EAAQA,IAAA,CACnG,IAAAkyB,EAAA3S,EAAAwB,UAAA/gB,GACAnD,KAAA2iB,UAAAD,EAAAN,KAAAjf,GAAAY,SAAA,MAAAsxB,KAAAlyB,EAAAoyB,EAAAF,EAAA,UAMAxC,EAAAnsB,UAAA3C,OAAA,WACA,IAAAyxB,EAAA,IAAA3C,EAEA,OADA2C,EAAAF,sBAAAt1B,MACAw1B,GAKA3C,EAAAnsB,UAAAgE,IAAA,SAAAtI,EAAAiyB,GAGA,QAFA,IAAAA,MAAA,GAEAr0B,KAAA+0B,OAAoB,OAAA/0B,KAAAs0B,KAAAlyB,EAAAiyB,GAAA,GACpB,QAAAlxB,EAAAnD,KAAA4B,KAAyBuB,EAAAnD,KAAA6B,GAAasB,IACjCf,EAAApC,KAAAoiB,KAAAjf,GAAAuH,IAAAtI,EAAAiyB,GACL,OAAAjyB,GAMAywB,EAAAnsB,UAAA0tB,UAAA,SAAAhyB,EAAAiyB,GAEA,YADA,IAAAA,MAAA,GACAr0B,KAAAs0B,KAAAlyB,EAAAiyB,GAAA,IAEAxB,EAAAnsB,UAAA4tB,KAAA,SAAAlyB,EAAAiyB,EAAAE,GAGA,IAFA,IAAAT,GAAA,EAEA3wB,EAAAnD,KAAA4B,KAAyBuB,EAAAnD,KAAA6B,GAAasB,IAAA,CACtC,IAAAkG,EAAArJ,KAAAoiB,KAAAjf,GAAAixB,UAAAhyB,EAAAiyB,GACA,SAAAhrB,EAAA0qB,QAAA,CACA,IAAA0B,EAAAz1B,KAAAkkB,UAAA/gB,GACA,SAAAsyB,KAAAtyB,GAAAsyB,EAAAz1B,KAAA6B,GAAA,CACAsB,EAAAsyB,EACArzB,EAAApC,KAAAoiB,KAAAqT,GAAA1B,QAAA1qB,EAAA0qB,SACA,UAIA1qB,EAAAyqB,UAAyBA,GAAA,GACzB1xB,EAAAiH,EAAAjH,IAGA,OAAAmyB,EAAAnyB,EAAA,IAAAyxB,EAAAzxB,EAAA0xB,IASAkB,EAAAtuB,UAAA5B,OAAA4Q,OAAAjP,MAAAC,WACAsuB,EAAAtuB,UAAAiG,YAAAqoB,EACAA,EAAAtuB,UAAA2G,KAAA,iBAOA,IAAA4lB,EAAA,SAAAzwB,GAIAxC,KAAAwC,MAGAxC,KAAA6D,SAGA7D,KAAAgE,QAGAhE,KAAA0iB,QAAA,IAAAmQ,GAGA3R,GAA0Blc,QAAUmc,cAAA,GAAqB3f,YAAc2f,cAAA,IAuCvE,SAAAuU,IAAyB,UAAAjvB,MAAA,eApCzBya,EAAAlc,OAAA0b,IAAA,WAA6C,OAAA1gB,KAAAgE,KAAAvD,OAAAT,KAAAgE,KAAA,GAAAhE,KAAAwC,KAK7CywB,EAAAvsB,UAAA5C,KAAA,SAAA6xB,GACA,IAAAtsB,EAAArJ,KAAAyiB,UAAAkT,GACA,GAAAtsB,EAAAusB,OAAsB,UAAAZ,EAAA3rB,EAAAusB,QACtB,OAAA51B,MAMAizB,EAAAvsB,UAAA+b,UAAA,SAAA3e,GACA,IAAAuF,EAAAvF,EAAA3C,MAAAnB,KAAAwC,KAEA,OADA6G,EAAAusB,QAAuB51B,KAAA61B,QAAA/xB,EAAAuF,EAAA7G,KACvB6G,GAMA6X,EAAA1f,WAAAkf,IAAA,WACA,OAAA1gB,KAAA6D,MAAApD,OAAA,GAGAwyB,EAAAvsB,UAAAmvB,QAAA,SAAA/xB,EAAAtB,GACAxC,KAAAgE,KAAAkG,KAAAlK,KAAAwC,KACAxC,KAAA6D,MAAAqG,KAAApG,GACA9D,KAAA0iB,QAAAC,UAAA7e,EAAA2gB,UACAzkB,KAAAwC,OAGAsC,OAAAuc,iBAAA4R,EAAAvsB,UAAAwa,GAIA,IAAA4U,EAAAhxB,OAAA4Q,OAAA,MAWAsd,EAAA,aAEAA,EAAAtsB,UAAAvF,MAAA,SAAA40B,GAA8C,OAAAL,KAM9C1C,EAAAtsB,UAAA+d,OAAA,WAA4C,OAAAuP,EAAAzT,OAK5CyS,EAAAtsB,UAAA3C,OAAA,SAAAgyB,GAAgD,OAAAL,KAMhD1C,EAAAtsB,UAAAgE,IAAA,SAAAsrB,GAA8C,OAAAN,KAM9C1C,EAAAtsB,UAAAX,MAAA,SAAAkwB,GAAgD,aAOhDjD,EAAAtsB,UAAAwvB,OAAA,WAA4C,OAAAR,KAK5C1C,EAAAmD,SAAA,SAAAhyB,EAAAiyB,GACA,IAAAA,MAAAC,SAAgC,UAAAhE,WAAA,mCAChC,IAAA1vB,EAAAmzB,EAAAM,EAAAC,UACA,IAAA1zB,EAAc,UAAA0vB,WAAA,gBAAA+D,EAAA,qBACd,OAAAzzB,EAAAwzB,SAAAhyB,EAAAiyB,IAQApD,EAAAsD,OAAA,SAAAC,EAAAC,GACA,GAAAD,KAAAT,EAAwB,UAAAzD,WAAA,iCAAAkE,GAGxB,OAFAT,EAAAS,GAAAC,EACAA,EAAA9vB,UAAA4vB,OAAAC,EACAC,GAKA,IAAAC,EAAA,SAAAj0B,EAAAozB,GAEA51B,KAAAwC,MAEAxC,KAAA41B,UAKAa,EAAAC,GAAA,SAAAl0B,GAAmC,WAAAi0B,EAAAj0B,EAAA,OAInCi0B,EAAAE,KAAA,SAAAlvB,GAA2C,WAAAgvB,EAAA,KAAAhvB,IAM3CgvB,EAAAG,YAAA,SAAAp0B,EAAAZ,EAAAC,EAAArB,GACA,IACA,OAAAi2B,EAAAC,GAAAl0B,EAAAyG,QAAArH,EAAAC,EAAArB,IACG,MAAAyG,GACH,GAAAA,aAAqBssB,EAAA,aAAe,OAAAkD,EAAAE,KAAA1vB,EAAAQ,SACpC,MAAAR,IAKA,IAAA8rB,EAAA,SAAAC,GACA,SAAAD,EAAAnxB,EAAAC,EAAArB,EAAAq2B,GACA7D,EAAApsB,KAAA5G,MACAA,KAAA4B,OACA5B,KAAA6B,KACA7B,KAAAQ,QACAR,KAAA62B,cAwDA,OArDA7D,IAAAD,EAAAppB,UAAAqpB,GACAD,EAAArsB,UAAA5B,OAAA4Q,OAAAsd,KAAAtsB,WACAqsB,EAAArsB,UAAAiG,YAAAomB,EAEAA,EAAArsB,UAAAvF,MAAA,SAAAqB,GACA,OAAAxC,KAAA62B,WAAAC,EAAAt0B,EAAAxC,KAAA4B,KAAA5B,KAAA6B,IACO40B,EAAAE,KAAA,6CACPF,EAAAG,YAAAp0B,EAAAxC,KAAA4B,KAAA5B,KAAA6B,GAAA7B,KAAAQ,QAGAuyB,EAAArsB,UAAA+d,OAAA,WACA,WAAAuP,GAAAh0B,KAAA4B,KAAA5B,KAAA6B,GAAA7B,KAAA4B,KAAA5B,KAAAQ,MAAA+sB,QAGAwF,EAAArsB,UAAA3C,OAAA,SAAAvB,GACA,WAAAuwB,EAAA/yB,KAAA4B,KAAA5B,KAAA4B,KAAA5B,KAAAQ,MAAA+sB,KAAA/qB,EAAAhC,MAAAR,KAAA4B,KAAA5B,KAAA6B,MAGAkxB,EAAArsB,UAAAgE,IAAA,SAAAgY,GACA,IAAA9gB,EAAA8gB,EAAA0R,UAAAp0B,KAAA4B,KAAA,GAAAC,EAAA6gB,EAAA0R,UAAAp0B,KAAA6B,IAAA,GACA,OAAAD,EAAAkyB,SAAAjyB,EAAAiyB,QAAqC,KACrC,IAAAf,EAAAnxB,EAAAQ,IAAAY,KAAAC,IAAArB,EAAAQ,IAAAP,EAAAO,KAAApC,KAAAQ,QAGAuyB,EAAArsB,UAAAX,MAAA,SAAAka,GACA,KAAAA,aAAA8S,IAAA9S,EAAA4W,WAAA72B,KAAA62B,UAA+E,YAE/E,GAAA72B,KAAA4B,KAAA5B,KAAAQ,MAAA+sB,MAAAtN,EAAAre,MAAA5B,KAAAQ,MAAAu2B,SAAA9W,EAAAzf,MAAAw2B,UAIK,IAAA/W,EAAApe,IAAA7B,KAAA4B,MAAA5B,KAAAQ,MAAAw2B,WAAA/W,EAAAzf,MAAAu2B,QAKL,YAJA,IAAAE,EAAAj3B,KAAAQ,MAAA+sB,KAAAtN,EAAAzf,MAAA+sB,MAAA,EAA8DgG,EAAA,MAAKhT,MACnE,IAAgBgT,EAAA,MAAKtT,EAAAzf,MAAA0mB,QAAAlH,OAAAhgB,KAAAQ,MAAA0mB,SAAAjH,EAAAzf,MAAAw2B,UAAAh3B,KAAAQ,MAAAu2B,SACrB,WAAAhE,EAAA9S,EAAAre,KAAA5B,KAAA6B,GAAAo1B,EAAAj3B,KAAA62B,WANA,IAAAr2B,EAAAR,KAAAQ,MAAA+sB,KAAAtN,EAAAzf,MAAA+sB,MAAA,EAA4DgG,EAAA,MAAKhT,MACjE,IAAgBgT,EAAA,MAAKvzB,KAAAQ,MAAA0mB,QAAAlH,OAAAC,EAAAzf,MAAA0mB,SAAAlnB,KAAAQ,MAAAw2B,UAAA/W,EAAAzf,MAAAu2B,SACrB,WAAAhE,EAAA/yB,KAAA4B,KAAA5B,KAAA6B,IAAAoe,EAAApe,GAAAoe,EAAAre,MAAApB,EAAAR,KAAA62B,YAUA9D,EAAArsB,UAAAwvB,OAAA,WACA,IAAAE,GAAgBC,SAAA,UAAAz0B,KAAA5B,KAAA4B,KAAAC,GAAA7B,KAAA6B,IAGhB,OAFA7B,KAAAQ,MAAA+sB,OAA0B6I,EAAA51B,MAAAR,KAAAQ,MAAA01B,UAC1Bl2B,KAAA62B,YAAyBT,EAAAS,WAAA,GACzBT,GAGArD,EAAAoD,SAAA,SAAAhyB,EAAAiyB,GACA,oBAAAA,EAAAx0B,MAAA,iBAAAw0B,EAAAv0B,GACO,UAAAwwB,WAAA,0CACP,WAAAU,EAAAqD,EAAAx0B,KAAAw0B,EAAAv0B,GAA+C0xB,EAAA,MAAK4C,SAAAhyB,EAAAiyB,EAAA51B,SAAA41B,EAAAS,YAGpD9D,EA9DA,CA+DCC,GAEDA,EAAAsD,OAAA,UAAAvD,GAKA,IAAAD,EAAA,SAAAE,GACA,SAAAF,EAAAlxB,EAAAC,EAAAq1B,EAAAC,EAAA32B,EAAAH,EAAAw2B,GACA7D,EAAApsB,KAAA5G,MACAA,KAAA4B,OACA5B,KAAA6B,KACA7B,KAAAk3B,UACAl3B,KAAAm3B,QACAn3B,KAAAQ,QACAR,KAAAK,SACAL,KAAA62B,cAwDA,OArDA7D,IAAAF,EAAAnpB,UAAAqpB,GACAF,EAAApsB,UAAA5B,OAAA4Q,OAAAsd,KAAAtsB,WACAosB,EAAApsB,UAAAiG,YAAAmmB,EAEAA,EAAApsB,UAAAvF,MAAA,SAAAqB,GACA,GAAAxC,KAAA62B,YAAAC,EAAAt0B,EAAAxC,KAAA4B,KAAA5B,KAAAk3B,UACAJ,EAAAt0B,EAAAxC,KAAAm3B,MAAAn3B,KAAA6B,KACO,OAAA40B,EAAAE,KAAA,iDAEP,IAAAS,EAAA50B,EAAAhC,MAAAR,KAAAk3B,QAAAl3B,KAAAm3B,OACA,GAAAC,EAAAJ,WAAAI,EAAAL,QACO,OAAAN,EAAAE,KAAA,2BACP,IAAAU,EAAAr3B,KAAAQ,MAAA82B,SAAAt3B,KAAAK,OAAA+2B,EAAAlQ,SACA,OAAAmQ,EACAZ,EAAAG,YAAAp0B,EAAAxC,KAAA4B,KAAA5B,KAAA6B,GAAAw1B,GADoBZ,EAAAE,KAAA,gCAIpB7D,EAAApsB,UAAA+d,OAAA,WACA,WAAAuP,GAAAh0B,KAAA4B,KAAA5B,KAAAk3B,QAAAl3B,KAAA4B,KAAA5B,KAAAK,OACAL,KAAAm3B,MAAAn3B,KAAA6B,GAAA7B,KAAAm3B,MAAAn3B,KAAAQ,MAAA+sB,KAAAvtB,KAAAK,UAGAyyB,EAAApsB,UAAA3C,OAAA,SAAAvB,GACA,IAAA40B,EAAAp3B,KAAAm3B,MAAAn3B,KAAAk3B,QACA,WAAApE,EAAA9yB,KAAA4B,KAAA5B,KAAA4B,KAAA5B,KAAAQ,MAAA+sB,KAAA6J,EACAp3B,KAAA4B,KAAA5B,KAAAK,OAAAL,KAAA4B,KAAA5B,KAAAK,OAAA+2B,EACA50B,EAAAhC,MAAAR,KAAA4B,KAAA5B,KAAA6B,IAAA01B,cAAAv3B,KAAAk3B,QAAAl3B,KAAA4B,KAAA5B,KAAAm3B,MAAAn3B,KAAA4B,MACA5B,KAAAk3B,QAAAl3B,KAAA4B,KAAA5B,KAAA62B,YAGA/D,EAAApsB,UAAAgE,IAAA,SAAAgY,GACA,IAAA9gB,EAAA8gB,EAAA0R,UAAAp0B,KAAA4B,KAAA,GAAAC,EAAA6gB,EAAA0R,UAAAp0B,KAAA6B,IAAA,GACAq1B,EAAAxU,EAAAhY,IAAA1K,KAAAk3B,SAAA,GAAAC,EAAAzU,EAAAhY,IAAA1K,KAAAm3B,MAAA,GACA,OAAAv1B,EAAAkyB,SAAAjyB,EAAAiyB,SAAAoD,EAAAt1B,EAAAQ,KAAA+0B,EAAAt1B,EAAAO,IAA+E,KAC/E,IAAA0wB,EAAAlxB,EAAAQ,IAAAP,EAAAO,IAAA80B,EAAAC,EAAAn3B,KAAAQ,MAAAR,KAAAK,OAAAL,KAAA62B,YAGA/D,EAAApsB,UAAAwvB,OAAA,WACA,IAAAE,GAAgBC,SAAA,gBAAAz0B,KAAA5B,KAAA4B,KAAAC,GAAA7B,KAAA6B,GAChBq1B,QAAAl3B,KAAAk3B,QAAAC,MAAAn3B,KAAAm3B,MAAA92B,OAAAL,KAAAK,QAGA,OAFAL,KAAAQ,MAAA+sB,OAA0B6I,EAAA51B,MAAAR,KAAAQ,MAAA01B,UAC1Bl2B,KAAA62B,YAAyBT,EAAAS,WAAA,GACzBT,GAGAtD,EAAAqD,SAAA,SAAAhyB,EAAAiyB,GACA,oBAAAA,EAAAx0B,MAAA,iBAAAw0B,EAAAv0B,IACA,iBAAAu0B,EAAAc,SAAA,iBAAAd,EAAAe,OAAA,iBAAAf,EAAA/1B,OACO,UAAAgyB,WAAA,gDACP,WAAAS,EAAAsD,EAAAx0B,KAAAw0B,EAAAv0B,GAAAu0B,EAAAc,QAAAd,EAAAe,MACiC5D,EAAA,MAAK4C,SAAAhyB,EAAAiyB,EAAA51B,OAAA41B,EAAA/1B,SAAA+1B,EAAAS,YAGtC/D,EAjEA,CAkECE,GAID,SAAA8D,EAAAt0B,EAAAZ,EAAAC,GAEA,IADA,IAAAU,EAAAC,EAAAC,QAAAb,GAAA41B,EAAA31B,EAAAD,EAAA6c,EAAAlc,EAAAkc,MACA+Y,EAAA,GAAA/Y,EAAA,GAAAlc,EAAAgD,WAAAkZ,IAAAlc,EAAA6C,KAAAqZ,GAAA0K,YACA1K,IACA+Y,IAEA,GAAAA,EAAA,EAEA,IADA,IAAArZ,EAAA5b,EAAA6C,KAAAqZ,GAAAgZ,WAAAl1B,EAAAgD,WAAAkZ,IACA+Y,EAAA,IACA,IAAArZ,KAAAuZ,OAAiC,SACjCvZ,IAAApU,WACAytB,IAGA,SAGA,SAAAG,EAAAvyB,EAAAjF,EAAAC,GACA,UAAAD,GAAAiF,EAAAuoB,WAAAxtB,EAAAiF,EAAA+jB,eACA/oB,GAAAgF,EAAA+jB,YAAA/jB,EAAAuoB,WAAA,EAAAvtB,IAOA,SAAAkzB,EAAA3uB,GAGA,IAFA,IACAuiB,EADAviB,EAAAjC,OACAwkB,QAAA0Q,WAAAjzB,EAAAkzB,WAAAlzB,EAAAmzB,UACArZ,EAAA9Z,EAAA8Z,SAAgCA,EAAA,CAChC,IAAArZ,EAAAT,EAAApC,MAAA6C,KAAAqZ,GACAnZ,EAAAX,EAAApC,MAAA+C,MAAAmZ,GAAAqZ,EAAAnzB,EAAA6nB,IAAAjnB,WAAAkZ,GACA,GAAAA,EAAA9Z,EAAA8Z,OAAArZ,EAAAuoB,WAAAroB,EAAAwyB,EAAA5Q,GACO,OAAAzI,EACP,MAAAA,GAAArZ,EAAAzC,KAAAC,KAAA0pB,YAAAqL,EAAAvyB,EAAAE,EAAAwyB,GAAmF,OAiDnF,SAAAzJ,EAAA1pB,EAAAN,EAAAG,EAAAuzB,QACA,IAAAA,MAAApzB,GAEA,IAAAqzB,EAQA,SAAArzB,EAAAhC,GACA,IAAAD,EAAAiC,EAAAjC,OACAm1B,EAAAlzB,EAAAkzB,WACAC,EAAAnzB,EAAAmzB,SACAE,EAAAt1B,EAAAuqB,eAAA4K,GAAAxJ,aAAA1rB,GACA,IAAAq1B,EAAgB,YAChB,IAAAC,EAAAD,EAAAv3B,OAAAu3B,EAAA,GAAAr1B,EACA,OAAAD,EAAA2C,eAAAwyB,EAAAC,EAAAG,GAAAD,EAAA,KAfAE,CAAAvzB,EAAAN,GACAod,EAAAuW,GAiBA,SAAArzB,EAAAhC,GACA,IAAAD,EAAAiC,EAAAjC,OACAm1B,EAAAlzB,EAAAkzB,WACAC,EAAAnzB,EAAAmzB,SACArW,EAAA/e,EAAAoH,MAAA+tB,GACAM,EAAAx1B,EAAAy1B,aAAA/J,aAAA5M,EAAA9e,MACA,IAAAw1B,EAAgB,YAGhB,IAFA,IACAE,GADAF,EAAA13B,OAAA03B,IAAA13B,OAAA,GAAAkC,GACAy1B,aACAj1B,EAAA00B,EAA0BQ,GAAAl1B,EAAA20B,EAA4B30B,IACjDk1B,IAAA/J,UAAA5rB,EAAAoH,MAAA3G,GAAAR,MACL,IAAA01B,MAAA9J,SAA4C,YAC5C,OAAA4J,EA7BAG,CAAAP,EAAA1zB,GACA,OAAAod,EACAuW,EAAAttB,IAAA6tB,GAAA7oB,QAAuC/M,KAAA0B,EAAAG,UAA6BkL,OAAA+R,EAAA/W,IAAA6tB,IADrD,KAIf,SAAAA,EAAA51B,GAA0B,OAASA,OAAA6B,MAAA,MAwFnC,SAAA2uB,EAAA3wB,EAAAJ,EAAAqc,EAAA+Z,QACA,IAAA/Z,MAAA,GAEA,IAAA4N,EAAA7pB,EAAAC,QAAAL,GAAAq2B,EAAApM,EAAA5N,QACAia,EAAAF,OAAA/3B,OAAA,IAAA4rB,EAAA3pB,OACA,GAAA+1B,EAAA,GAAApM,EAAA3pB,OAAAC,KAAAC,KAAA0pB,YACAD,EAAA3pB,OAAAirB,WAAAtB,EAAA/mB,QAAA+mB,EAAA3pB,OAAAymB,cACAuP,EAAA/1B,KAAAg2B,aAAAtM,EAAA3pB,OAAAwkB,QAAA0Q,WAAAvL,EAAA/mB,QAAA+mB,EAAA3pB,OAAAymB,aACK,SACL,QAAA9pB,EAAAgtB,EAAA5N,MAAA,EAAAtb,EAAAsb,EAAA,EAA6Cpf,EAAAo5B,EAAUp5B,IAAA8D,IAAA,CACvD,IAAAiC,EAAAinB,EAAAjnB,KAAA/F,GAAAu5B,EAAAvM,EAAA/mB,MAAAjG,GACA,GAAA+F,EAAAzC,KAAAC,KAAA0pB,UAAmC,SACnC,IAAAuM,EAAAzzB,EAAA8hB,QAAA0Q,WAAAgB,EAAAxzB,EAAA+jB,YACA1W,EAAA+lB,KAAAr1B,IAAAiC,EAEA,GADAqN,GAAArN,IAAwByzB,IAAAC,aAAA,EAAArmB,EAAA9P,KAAA+S,OAAAjD,EAAAjO,UACxBY,EAAAuoB,WAAAiL,EAAA,EAAAxzB,EAAA+jB,cAAA1W,EAAA9P,KAAAg2B,aAAAE,GACO,SAEP,IAAAvzB,EAAA+mB,EAAA9mB,WAAAkzB,GACAM,EAAAP,KAAA,GACA,OAAAnM,EAAAjnB,KAAAqzB,GAAApzB,eAAAC,IAAAyzB,IAAAp2B,KAAA0pB,EAAAjnB,KAAAqzB,EAAA,GAAA91B,MAwBA,SAAAuwB,EAAA1wB,EAAAJ,GACA,IAAAiqB,EAAA7pB,EAAAC,QAAAL,GAAAkD,EAAA+mB,EAAA/mB,QACA,OAAA0zB,EAAA3M,EAAApnB,WAAAonB,EAAA2B,YACA3B,EAAA3pB,OAAAirB,WAAAroB,IAAA,GAGA,SAAA0zB,EAAAC,EAAAC,GACA,OAAAD,GAAAC,IAAAD,EAAAvB,QAAAuB,EAAAE,UAAAD,GAOA,SAAA7F,EAAA7wB,EAAAJ,EAAAg3B,QACA,IAAAA,OAAA,GAGA,IADA,IAAA/M,EAAA7pB,EAAAC,QAAAL,GACA/C,EAAAgtB,EAAA5N,OAA2Bpf,IAAA,CAC3B,IAAA2F,OAAA,EAAAyN,OAAA,EAAAnN,EAAA+mB,EAAA/mB,MAAAjG,GAYA,GAXAA,GAAAgtB,EAAA5N,OACAzZ,EAAAqnB,EAAApnB,WACAwN,EAAA4Z,EAAA2B,WACKoL,EAAA,GACLp0B,EAAAqnB,EAAAjnB,KAAA/F,EAAA,GACAiG,IACAmN,EAAA4Z,EAAAjnB,KAAA/F,GAAAo4B,WAAAnyB,KAEAN,EAAAqnB,EAAAjnB,KAAA/F,GAAAo4B,WAAAnyB,EAAA,GACAmN,EAAA4Z,EAAAjnB,KAAA/F,EAAA,IAEA2F,MAAAmnB,aAAA6M,EAAAh0B,EAAAyN,IACA4Z,EAAAjnB,KAAA/F,GAAAsuB,WAAAroB,IAAA,GAAoD,OAAAlD,EACpD,MAAA/C,EAAiB,MACjB+C,EAAAg3B,EAAA,EAAA/M,EAAArnB,OAAA3F,GAAAgtB,EAAA5Z,MAAApT,IA0CA,SAAA+zB,EAAA5wB,EAAAJ,EAAA5B,GACA,IAAA6rB,EAAA7pB,EAAAC,QAAAL,GACA,IAAA5B,EAAA0mB,QAAAqG,KAA4B,OAAAnrB,EAE5B,IADA,IAAA8kB,EAAA1mB,EAAA0mB,QACA/jB,EAAA,EAAiBA,EAAA3C,EAAAw2B,UAAqB7zB,IAAO+jB,IAAAnd,WAAAmd,QAC7C,QAAAmS,EAAA,EAAoBA,IAAA,GAAA74B,EAAAw2B,WAAAx2B,EAAA+sB,KAAA,KAAsD8L,IAC1E,QAAAh6B,EAAAgtB,EAAA5N,MAA4Bpf,GAAA,EAAQA,IAAA,CACpC,IAAAi6B,EAAAj6B,GAAAgtB,EAAA5N,MAAA,EAAA4N,EAAAjqB,MAAAiqB,EAAAlsB,MAAAd,EAAA,GAAAgtB,EAAAjsB,IAAAf,EAAA,WACAk6B,EAAAlN,EAAA/mB,MAAAjG,IAAAi6B,EAAA,OACA,MAAAD,EACAhN,EAAAjnB,KAAA/F,GAAAsuB,WAAA4L,IAAArS,GACAmF,EAAAjnB,KAAA/F,GAAA4tB,eAAAsM,GAAAlL,aAAAnH,EAAAnd,WAAApH,MACS,UAAA22B,EAAAjN,EAAAjqB,IAAAk3B,EAAA,EAAAjN,EAAArnB,OAAA3F,EAAA,GAAAgtB,EAAA5Z,MAAApT,EAAA,GAGT,YAGA,SAAAm6B,EAAAC,EAAA7Y,EAAAle,GAEA,IADA,IAAAg3B,KACAv2B,EAAA,EAAiBA,EAAAs2B,EAAAtQ,WAAyBhmB,IAAA,CAC1C,IAAA2G,EAAA2vB,EAAA3vB,MAAA3G,GACA2G,EAAAod,QAAAqG,OAA6BzjB,IAAA0kB,KAAAgL,EAAA1vB,EAAAod,QAAAtG,EAAA9W,KAC7BA,EAAA6vB,WAAyB7vB,EAAA8W,EAAA9W,EAAApH,EAAAS,IACzBu2B,EAAAxvB,KAAAJ,GAEA,OAASypB,EAAA,SAAQqG,UAAAF,GAxUjB1G,EAAAsD,OAAA,gBAAAxD,GA8CAG,EAAAvsB,UAAA+kB,KAAA,SAAA9mB,EAAAwlB,GASA,IARA,IAAA5nB,EAAAoC,EAAApC,MACAiqB,EAAA7nB,EAAA6nB,IACA/N,EAAA9Z,EAAA8Z,MAEAob,EAAAt3B,EAAAyC,OAAAyZ,EAAA,GAAAqb,EAAAtN,EAAA/Z,MAAAgM,EAAA,GACAte,EAAA05B,EAAAz5B,EAAA05B,EAEA90B,EAAeuuB,EAAA,SAAQhT,MAAAyW,EAAA,EACvB33B,EAAAof,EAAAsb,GAAA,EAAwC16B,EAAA8qB,EAAY9qB,IAC/C06B,GAAAx3B,EAAA+C,MAAAjG,GAAA,GACL06B,GAAA,EACA/0B,EAAeuuB,EAAA,SAAQ3xB,KAAAW,EAAA6C,KAAA/F,GAAAmvB,KAAAxpB,IACvBgyB,KAEA72B,IAGA,IADA,IAAAsS,EAAc8gB,EAAA,SAAQhT,MAAAwW,EAAA,EACtBiD,EAAAvb,EAAAwb,GAAA,EAA4CD,EAAA7P,EAAc6P,IACrDC,GAAAzN,EAAA/Z,MAAAunB,EAAA,GAAAxN,EAAApsB,IAAA45B,IACLC,GAAA,EACAxnB,EAAc8gB,EAAA,SAAQ3xB,KAAA4qB,EAAApnB,KAAA40B,GAAAxL,KAAA/b,IACtBskB,KAEA32B,IAGA,OAAAJ,KAAA8D,KAAA,IAAAgvB,EAAA3yB,EAAAC,EAAAy5B,EAAAC,EACA,IAA6CvG,EAAA,MAAKvuB,EAAAgb,OAAAvN,GAAAukB,EAAAD,GAClD/xB,EAAAuoB,KAAAyJ,GAAA,KAkDA/D,EAAAvsB,UAAA3B,KAAA,SAAAJ,EAAAu1B,GAEA,IADA,IAAAhT,EAAgBqM,EAAA,SAAQhT,MACxBpd,EAAA+2B,EAAAz5B,OAAA,EAAmC0C,GAAA,EAAQA,IACtC+jB,EAAWqM,EAAA,SAAQ3xB,KAAAs4B,EAAA/2B,GAAAR,KAAA+S,OAAAwkB,EAAA/2B,GAAAqB,MAAA0iB,IAExB,IAAA/mB,EAAAwE,EAAAxE,MAAAC,EAAAuE,EAAAvE,IACA,OAAAJ,KAAA8D,KAAA,IAAAgvB,EAAA3yB,EAAAC,EAAAD,EAAAC,EAAA,IAAqEmzB,EAAA,MAAKrM,EAAA,KAAAgT,EAAAz5B,QAAA,KAM1EwyB,EAAAvsB,UAAAlB,aAAA,SAAA5D,EAAAC,EAAAc,EAAA6B,GACA,IAAAwd,EAAAhiB,KAGA,QAFA,IAAA6B,MAAAD,IAEAe,EAAAwpB,YAA0B,UAAAkG,WAAA,oDAC1B,IAAAnQ,EAAAliB,KAAA6D,MAAApD,OAYA,OAXAT,KAAAwC,IAAAqsB,aAAAjtB,EAAAC,EAAA,SAAAuD,EAAAhD,GACA,GAAAgD,EAAA+mB,cAAA/mB,EAAA0pB,UAAAnsB,EAAA6B,IAaA,SAAAhC,EAAAJ,EAAAO,GACA,IAAA0pB,EAAA7pB,EAAAC,QAAAL,GAAAkD,EAAA+mB,EAAA/mB,QACA,OAAA+mB,EAAA3pB,OAAA2C,eAAAC,IAAA,EAAA3C,GAfAw3B,CAAAnY,EAAAxf,IAAAwf,EAAAU,QAAAliB,MAAA0hB,GAAAxX,IAAAtI,GAAAO,GAAA,CAEAqf,EAAAmM,kBAAAnM,EAAAU,QAAAliB,MAAA0hB,GAAAxX,IAAAtI,EAAA,GAAAO,GACA,IAAA+f,EAAAV,EAAAU,QAAAliB,MAAA0hB,GACAkY,EAAA1X,EAAAhY,IAAAtI,EAAA,GAAAi4B,EAAA3X,EAAAhY,IAAAtI,EAAAgD,EAAA8oB,SAAA,GAGA,OAFAlM,EAAAle,KAAA,IAAAgvB,EAAAsH,EAAAC,EAAAD,EAAA,EAAAC,EAAA,EACA,IAA0C9G,EAAA,MAAMA,EAAA,SAAQ3xB,KAAAe,EAAA+S,OAAAlR,EAAA,KAAAY,EAAAnB,QAAA,aACxD,KAGAjE,MAWAizB,EAAAvsB,UAAAknB,cAAA,SAAAxrB,EAAAO,EAAA6B,EAAAP,GACA,IAAAmB,EAAApF,KAAAwC,IAAA83B,OAAAl4B,GACA,IAAAgD,EAAc,UAAAitB,WAAA,6BACd1vB,IAAcA,EAAAyC,EAAAzC,MACd,IAAA43B,EAAA53B,EAAA+S,OAAAlR,EAAA,KAAAP,GAAAmB,EAAAnB,OACA,GAAAmB,EAAAsyB,OACK,OAAA13B,KAAAkE,YAAA9B,IAAAgD,EAAA8oB,SAAAqM,GAEL,IAAA53B,EAAAg2B,aAAAvzB,EAAA8hB,SACK,UAAAmL,WAAA,iCAAA1vB,EAAA0K,MAEL,OAAArN,KAAA8D,KAAA,IAAAgvB,EAAA1wB,IAAAgD,EAAA8oB,SAAA9rB,EAAA,EAAAA,EAAAgD,EAAA8oB,SAAA,EACA,IAA6CqF,EAAA,MAAMA,EAAA,SAAQ3xB,KAAA24B,GAAA,aAkC3DtH,EAAAvsB,UAAA0J,MAAA,SAAAhO,EAAAqc,EAAA+Z,QACA,IAAA/Z,MAAA,GAGA,IADA,IAAA4N,EAAArsB,KAAAwC,IAAAC,QAAAL,GAAA4C,EAA6CuuB,EAAA,SAAQhT,MAAA9N,EAAgB8gB,EAAA,SAAQhT,MAC7ElhB,EAAAgtB,EAAA5N,MAAAxX,EAAAolB,EAAA5N,QAAAtb,EAAAsb,EAAA,EAAiEpf,EAAA4H,EAAO5H,IAAA8D,IAAA,CACxE6B,EAAauuB,EAAA,SAAQ3xB,KAAAyqB,EAAAjnB,KAAA/F,GAAAmvB,KAAAxpB,IACrB,IAAAw1B,EAAAhC,KAAAr1B,GACAsP,EAAY8gB,EAAA,SAAQ3xB,KAAA44B,IAAA73B,KAAA+S,OAAA8kB,EAAAh2B,MAAAiO,GAAA4Z,EAAAjnB,KAAA/F,GAAAmvB,KAAA/b,IAEpB,OAAAzS,KAAA8D,KAAA,IAAAivB,EAAA3wB,IAAA,IAAiDmxB,EAAA,MAAKvuB,EAAAgb,OAAAvN,GAAAgM,MAAA,KA+CtDwU,EAAAvsB,UAAAxB,KAAA,SAAA9C,EAAAqc,QACA,IAAAA,MAAA,GAEA,IAAA3a,EAAA,IAAAivB,EAAA3wB,EAAAqc,EAAArc,EAAAqc,EAAuD8U,EAAA,MAAKhT,OAAA,GAC5D,OAAAvgB,KAAA8D,SA6DA,IAAA22B,EAAA,SAAAzH,GACA,SAAAyH,EAAA74B,EAAAC,EAAA64B,GACA1H,EAAApsB,KAAA5G,MACAA,KAAA4B,OACA5B,KAAA6B,KACA7B,KAAA06B,OAgDA,OA7CA1H,IAAAyH,EAAA9wB,UAAAqpB,GACAyH,EAAA/zB,UAAA5B,OAAA4Q,OAAAsd,KAAAtsB,WACA+zB,EAAA/zB,UAAAiG,YAAA8tB,EAEAA,EAAA/zB,UAAAvF,MAAA,SAAAqB,GACA,IAAAwf,EAAAhiB,KAEA26B,EAAAn4B,EAAAhC,MAAAR,KAAA4B,KAAA5B,KAAA6B,IAAAU,EAAAC,EAAAC,QAAAzC,KAAA4B,MACAc,EAAAH,EAAA6C,KAAA7C,EAAAq4B,YAAA56B,KAAA6B,KACArB,EAAA,IAAoB+yB,EAAA,MAAKiG,EAAAmB,EAAAzT,QAAA,SAAA9hB,EAAA1C,GACzB,OAAAA,EAAAC,KAAAssB,eAAAjN,EAAA0Y,KAAA/3B,MACAyC,EAAAs1B,KAAA1Y,EAAA0Y,KAAAG,SAAAz1B,EAAAnB,QAD0DmB,GAErD1C,GAAAi4B,EAAA3D,UAAA2D,EAAA5D,SACL,OAAAN,EAAAG,YAAAp0B,EAAAxC,KAAA4B,KAAA5B,KAAA6B,GAAArB,IAGAi6B,EAAA/zB,UAAA3C,OAAA,WACA,WAAA+2B,EAAA96B,KAAA4B,KAAA5B,KAAA6B,GAAA7B,KAAA06B,OAGAD,EAAA/zB,UAAAgE,IAAA,SAAAgY,GACA,IAAA9gB,EAAA8gB,EAAA0R,UAAAp0B,KAAA4B,KAAA,GAAAC,EAAA6gB,EAAA0R,UAAAp0B,KAAA6B,IAAA,GACA,OAAAD,EAAAkyB,SAAAjyB,EAAAiyB,SAAAlyB,EAAAQ,KAAAP,EAAAO,IAA2D,KAC3D,IAAAq4B,EAAA74B,EAAAQ,IAAAP,EAAAO,IAAApC,KAAA06B,OAGAD,EAAA/zB,UAAAX,MAAA,SAAAka,GACA,GAAAA,aAAAwa,GACAxa,EAAAya,KAAAK,GAAA/6B,KAAA06B,OACA16B,KAAA4B,MAAAqe,EAAApe,IAAA7B,KAAA6B,IAAAoe,EAAAre,KACO,WAAA64B,EAAAz3B,KAAAyd,IAAAzgB,KAAA4B,KAAAqe,EAAAre,MACPoB,KAAAC,IAAAjD,KAAA6B,GAAAoe,EAAApe,IAAA7B,KAAA06B,OAGAD,EAAA/zB,UAAAwvB,OAAA,WACA,OAAYG,SAAA,UAAAqE,KAAA16B,KAAA06B,KAAAxE,SACZt0B,KAAA5B,KAAA4B,KAAAC,GAAA7B,KAAA6B,KAGA44B,EAAAtE,SAAA,SAAAhyB,EAAAiyB,GACA,oBAAAA,EAAAx0B,MAAA,iBAAAw0B,EAAAv0B,GACO,UAAAwwB,WAAA,0CACP,WAAAoI,EAAArE,EAAAx0B,KAAAw0B,EAAAv0B,GAAAsC,EAAA62B,aAAA5E,EAAAsE,QAGAD,EArDA,CAsDCzH,GAEDA,EAAAsD,OAAA,UAAAmE,GAGA,IAAAK,EAAA,SAAA9H,GACA,SAAA8H,EAAAl5B,EAAAC,EAAA64B,GACA1H,EAAApsB,KAAA5G,MACAA,KAAA4B,OACA5B,KAAA6B,KACA7B,KAAA06B,OA8CA,OA3CA1H,IAAA8H,EAAAnxB,UAAAqpB,GACA8H,EAAAp0B,UAAA5B,OAAA4Q,OAAAsd,KAAAtsB,WACAo0B,EAAAp0B,UAAAiG,YAAAmuB,EAEAA,EAAAp0B,UAAAvF,MAAA,SAAAqB,GACA,IAAAwf,EAAAhiB,KAEA26B,EAAAn4B,EAAAhC,MAAAR,KAAA4B,KAAA5B,KAAA6B,IACArB,EAAA,IAAoB+yB,EAAA,MAAKiG,EAAAmB,EAAAzT,QAAA,SAAA9hB,GACzB,OAAAA,EAAAs1B,KAAA1Y,EAAA0Y,KAAAO,cAAA71B,EAAAnB,UACK02B,EAAA3D,UAAA2D,EAAA5D,SACL,OAAAN,EAAAG,YAAAp0B,EAAAxC,KAAA4B,KAAA5B,KAAA6B,GAAArB,IAGAs6B,EAAAp0B,UAAA3C,OAAA,WACA,WAAA02B,EAAAz6B,KAAA4B,KAAA5B,KAAA6B,GAAA7B,KAAA06B,OAGAI,EAAAp0B,UAAAgE,IAAA,SAAAgY,GACA,IAAA9gB,EAAA8gB,EAAA0R,UAAAp0B,KAAA4B,KAAA,GAAAC,EAAA6gB,EAAA0R,UAAAp0B,KAAA6B,IAAA,GACA,OAAAD,EAAAkyB,SAAAjyB,EAAAiyB,SAAAlyB,EAAAQ,KAAAP,EAAAO,IAA2D,KAC3D,IAAA04B,EAAAl5B,EAAAQ,IAAAP,EAAAO,IAAApC,KAAA06B,OAGAI,EAAAp0B,UAAAX,MAAA,SAAAka,GACA,GAAAA,aAAA6a,GACA7a,EAAAya,KAAAK,GAAA/6B,KAAA06B,OACA16B,KAAA4B,MAAAqe,EAAApe,IAAA7B,KAAA6B,IAAAoe,EAAAre,KACO,WAAAk5B,EAAA93B,KAAAyd,IAAAzgB,KAAA4B,KAAAqe,EAAAre,MACPoB,KAAAC,IAAAjD,KAAA6B,GAAAoe,EAAApe,IAAA7B,KAAA06B,OAGAI,EAAAp0B,UAAAwvB,OAAA,WACA,OAAYG,SAAA,aAAAqE,KAAA16B,KAAA06B,KAAAxE,SACZt0B,KAAA5B,KAAA4B,KAAAC,GAAA7B,KAAA6B,KAGAi5B,EAAA3E,SAAA,SAAAhyB,EAAAiyB,GACA,oBAAAA,EAAAx0B,MAAA,iBAAAw0B,EAAAv0B,GACO,UAAAwwB,WAAA,6CACP,WAAAyI,EAAA1E,EAAAx0B,KAAAw0B,EAAAv0B,GAAAsC,EAAA62B,aAAA5E,EAAAsE,QAGAI,EAnDA,CAoDC9H,GA+JD,SAAAkI,EAAA34B,EAAAiqB,EAAAhsB,GACA,OAAAA,EAAAw2B,YAAAx2B,EAAAu2B,SAAAx0B,EAAApC,SAAAqsB,EAAArsB,SACAoC,EAAAG,OAAAirB,WAAAprB,EAAA+C,QAAAknB,EAAAlnB,QAAA9E,EAAA0mB,SA/JA8L,EAAAsD,OAAA,aAAAwE,GAIA7H,EAAAvsB,UAAAwpB,QAAA,SAAAtuB,EAAAC,EAAA64B,GACA,IAAA1Y,EAAAhiB,KAEAm7B,KAAAxV,KAAAyV,EAAA,KAAAC,EAAA,KA0BA,OAzBAr7B,KAAAwC,IAAAqsB,aAAAjtB,EAAAC,EAAA,SAAAuD,EAAAhD,EAAAM,GACA,GAAA0C,EAAAu0B,SAAA,CACA,IAAA11B,EAAAmB,EAAAnB,MACA,IAAAy2B,EAAApL,QAAArrB,IAAAvB,EAAAC,KAAAssB,eAAAyL,EAAA/3B,MAAA,CAIA,IAHA,IAAAxC,EAAA6C,KAAAC,IAAAb,EAAAR,GAAAxB,EAAA4C,KAAAyd,IAAAre,EAAAgD,EAAA8oB,SAAArsB,GACAy5B,EAAAZ,EAAAG,SAAA52B,GAEAd,EAAA,EAAqBA,EAAAc,EAAAxD,OAAkB0C,IACvCc,EAAAd,GAAAmsB,QAAAgM,KACAF,KAAAv5B,IAAA1B,GAAAi7B,EAAAV,KAAAK,GAAA92B,EAAAd,IACai4B,EAAAv5B,GAAAzB,EAEA+6B,EAAAjxB,KAAAkxB,EAAA,IAAAN,EAAA36B,EAAAC,EAAA6D,EAAAd,MAIbk4B,KAAAx5B,IAAA1B,EACSk7B,EAAAx5B,GAAAzB,EAEAulB,EAAAzb,KAAAmxB,EAAA,IAAAZ,EAAAt6B,EAAAC,EAAAs6B,QAITS,EAAA7yB,QAAA,SAAAqJ,GAAgC,OAAAqQ,EAAAle,KAAA6N,KAChCgU,EAAArd,QAAA,SAAAqJ,GAA8B,OAAAqQ,EAAAle,KAAA6N,KAC9B3R,MAQAizB,EAAAvsB,UAAAupB,WAAA,SAAAruB,EAAAC,EAAA64B,GACA,IAAA1Y,EAAAhiB,UACA,IAAA06B,MAAA,MAEA,IAAA9hB,KAAA9U,EAAA,EA+BA,OA9BA9D,KAAAwC,IAAAqsB,aAAAjtB,EAAAC,EAAA,SAAAuD,EAAAhD,GACA,GAAAgD,EAAAu0B,SAAA,CACA71B,IACA,IAAAy3B,EAAA,KACA,GAAAb,aAAwBnH,EAAA,SAAQ,CAChC,IAAAiI,EAAAd,EAAApL,QAAAlqB,EAAAnB,OACAu3B,IAAkBD,GAAAC,SACbd,EACLA,EAAApL,QAAAlqB,EAAAnB,SAAqCs3B,GAAAb,IAErCa,EAAAn2B,EAAAnB,MAEA,GAAAs3B,KAAA96B,OAEA,IADA,IAAAL,EAAA4C,KAAAyd,IAAAre,EAAAgD,EAAA8oB,SAAArsB,GACAsB,EAAA,EAAqBA,EAAAo4B,EAAA96B,OAAqB0C,IAAA,CAE1C,IADA,IAAAumB,EAAA6R,EAAAp4B,GAAAs4B,OAAA,EACA73B,EAAA,EAAuBA,EAAAgV,EAAAnY,OAAoBmD,IAAA,CAC3C,IAAAgM,EAAAgJ,EAAAhV,GACAgM,EAAA9L,QAAA,GAAA4lB,EAAAqR,GAAAniB,EAAAhV,GAAA8lB,SAAiE+R,EAAA7rB,GAEjE6rB,GACAA,EAAA55B,GAAAzB,EACAq7B,EAAA33B,QAEA8U,EAAA1O,MAAwBwf,QAAA9nB,KAAAoB,KAAAC,IAAAb,EAAAR,GAAAC,GAAAzB,EAAA0D,aAKxB8U,EAAAtQ,QAAA,SAAAsH,GAAgC,OAAAoS,EAAAle,KAAA,IAAAg3B,EAAAlrB,EAAAhO,KAAAgO,EAAA/N,GAAA+N,EAAA8Z,UAChC1pB,MAQAizB,EAAAvsB,UAAAynB,kBAAA,SAAA/rB,EAAAs5B,EAAA57B,QACA,IAAAA,MAAA47B,EAAAtD,cAIA,IAFA,IAAAhzB,EAAApF,KAAAwC,IAAA83B,OAAAl4B,GACAu5B,KAAAC,EAAAx5B,EAAA,EACAe,EAAA,EAAiBA,EAAAiC,EAAA+jB,WAAqBhmB,IAAA,CACtC,IAAA2G,EAAA1E,EAAA0E,MAAA3G,GAAA/C,EAAAw7B,EAAA9xB,EAAAokB,SACA2N,EAAA/7B,EAAAwuB,UAAAxkB,EAAAnH,KAAAmH,EAAAtF,OACA,GAAAq3B,EAEK,CACL/7B,EAAA+7B,EACA,QAAAj4B,EAAA,EAAqBA,EAAAkG,EAAA7F,MAAAxD,OAAwBmD,IAAO83B,EAAAzM,eAAAnlB,EAAA7F,MAAAL,GAAAjB,OAC3C3C,KAAA8D,KAAA,IAAAg3B,EAAAc,EAAAx7B,EAAA0J,EAAA7F,MAAAL,UAJT+3B,EAAAzxB,KAAA,IAAA6oB,EAAA6I,EAAAx7B,EAA8CmzB,EAAA,MAAKhT,QAMnDqb,EAAAx7B,EAEA,IAAAN,EAAAyuB,SAAA,CACA,IAAAuN,EAAAh8B,EAAAi8B,WAAgCxI,EAAA,SAAQhT,OAAA,GACxCvgB,KAAAiJ,QAAA2yB,IAAA,IAA+BrI,EAAA,MAAKuI,EAAA,MAEpC,QAAAjM,EAAA8L,EAAAl7B,OAAA,EAAqCovB,GAAA,EAAUA,IAAS7vB,KAAA8D,KAAA63B,EAAA9L,IACxD,OAAA7vB,MAuBAizB,EAAAvsB,UAAAuC,QAAA,SAAArH,EAAAC,EAAArB,QACA,IAAAqB,MAAAD,QACA,IAAApB,MAAkC+yB,EAAA,MAAKhT,OAEvC,IAAAzc,EAnBA,SAAAtB,EAAAZ,EAAAC,EAAArB,GAIA,QAHA,IAAAqB,MAAAD,QACA,IAAApB,MAAkC+yB,EAAA,MAAKhT,OAEvC3e,GAAAC,IAAArB,EAAA+sB,KAAkC,YAElC,IAAAhrB,EAAAC,EAAAC,QAAAb,GAAA4qB,EAAAhqB,EAAAC,QAAAZ,GAEA,OAAAq5B,EAAA34B,EAAAiqB,EAAAhsB,GAAyC,IAAAuyB,EAAAnxB,EAAAC,EAAArB,GACzC,IAAAw7B,EAAAz5B,EAAAiqB,EAAAhsB,GAAAy7B,MAUAC,CAAAl8B,KAAAwC,IAAAZ,EAAAC,EAAArB,GAEA,OADAsD,GAAa9D,KAAA8D,QACb9D,MAMAizB,EAAAvsB,UAAAxC,YAAA,SAAAtC,EAAAC,EAAAqlB,GACA,OAAAlnB,KAAAiJ,QAAArH,EAAAC,EAAA,IAAoC0xB,EAAA,MAAMA,EAAA,SAAQ3xB,KAAAslB,GAAA,OAKlD+L,EAAAvsB,UAAAhC,OAAA,SAAA9C,EAAAC,GACA,OAAA7B,KAAAiJ,QAAArH,EAAAC,EAAgC0xB,EAAA,MAAKhT,QAKrC0S,EAAAvsB,UAAArG,OAAA,SAAA+B,EAAA8kB,GACA,OAAAlnB,KAAAkE,YAAA9B,IAAA8kB,IA4BA,IAAA8U,EAAA,SAAAz5B,EAAAiqB,EAAAhsB,GACAR,KAAAwsB,MACAxsB,KAAAuC,QACAvC,KAAAm8B,SAAA37B,EAEAR,KAAAo8B,YACA,QAAAj5B,EAAA,EAAiBA,GAAAZ,EAAAkc,MAAkBtb,IAAA,CACnC,IAAAiC,EAAA7C,EAAA6C,KAAAjC,GACAnD,KAAAo8B,SAAAlyB,MACAvH,KAAAyC,EAAAzC,KACA7C,MAAAsF,EAAA6nB,eAAA1qB,EAAAgD,WAAApC,MAIAnD,KAAAq8B,OAAgB9I,EAAA,SAAQhT,MACxB,QAAAsP,EAAAttB,EAAAkc,MAA6BoR,EAAA,EAASA,IACjC7vB,KAAAq8B,OAAe9I,EAAA,SAAQ3xB,KAAAW,EAAA6C,KAAAyqB,GAAArB,KAAAxuB,KAAAq8B,UAG5BC,GAA4B7d,OAAS0C,cAAA,IAqOrC,SAAAob,EAAA9C,EAAAhb,EAAAzM,GACA,UAAAyM,EAAmBgb,EAAA7B,WAAA5lB,GACnBynB,EAAAX,aAAA,EAAAW,EAAA1vB,WAAAykB,KAAA+N,EAAA9C,EAAA1vB,WAAAmd,QAAAzI,EAAA,EAAAzM,KAGA,SAAAwqB,EAAA/C,EAAAhb,EAAAyI,GACA,UAAAzI,EAAmBgb,EAAAzZ,OAAAkH,GACnBuS,EAAAX,aAAAW,EAAAtQ,WAAA,EACAsQ,EAAAvN,UAAAsC,KAAAgO,EAAA/C,EAAAvN,UAAAhF,QAAAzI,EAAA,EAAAyI,KAGA,SAAAuV,EAAAhD,EAAAhb,GACA,QAAAtb,EAAA,EAAiBA,EAAAsb,EAAWtb,IAAOs2B,IAAA1vB,WAAAmd,QACnC,OAAAuS,EAGA,SAAAiD,EAAAt3B,EAAA4xB,EAAAD,GACA,GAAAC,GAAA,EAAuB,OAAA5xB,EACvB,IAAAu3B,EAAAv3B,EAAA8hB,QAOA,OANA8P,EAAA,IACK2F,IAAA7D,aAAA,EAAA4D,EAAAC,EAAA5yB,WAAAitB,EAAA,KAAA2F,EAAAxT,WAAA4N,EAAA,OACLC,EAAA,IACA2F,EAAAv3B,EAAAzC,KAAAy1B,aAAA2D,WAAAY,GAAA3c,OAAA2c,GACA5F,GAAA,IAAuB4F,IAAA3c,OAAA5a,EAAAzC,KAAAy1B,aAAAwE,cAAAD,GAAAZ,WAA0ExI,EAAA,SAAQhT,OAAA,MAEzGnb,EAAAopB,KAAAmO,GAGA,SAAAE,EAAArQ,EAAA/N,EAAA9b,EAAA7C,EAAA2K,GACA,IAAArF,EAAAonB,EAAApnB,KAAAqZ,GAAAnZ,EAAAmF,EAAA+hB,EAAAjnB,WAAAkZ,GAAA+N,EAAAlnB,MAAAmZ,GACA,GAAAnZ,GAAAF,EAAA+jB,aAAAxmB,EAAAsrB,kBAAA7oB,EAAAzC,MAAuE,YACvE,IAAAs5B,EAAAn8B,EAAAi8B,WAAA32B,EAAA8hB,SAAA,EAAA5hB,GACA,OAAA22B,IAGA,SAAAt5B,EAAA82B,EAAAt5B,GACA,QAAAgD,EAAAhD,EAAqBgD,EAAAs2B,EAAAtQ,WAAyBhmB,IACzC,IAAAR,EAAAm6B,YAAArD,EAAA3vB,MAAA3G,GAAAc,OAAkD,SACvD,SANA84B,CAAAp6B,EAAAyC,EAAA8hB,QAAA5hB,GAAA22B,EAAA,KAiGA,SAAAe,EAAAvD,EAAAhb,EAAAwe,EAAAC,EAAAx6B,GACA,GAAA+b,EAAAwe,EAAA,CACA,IAAAE,EAAA1D,EAAA1vB,WACA0vB,IAAAX,aAAA,EAAAqE,EAAA3O,KAAAwO,EAAAG,EAAAjW,QAAAzI,EAAA,EAAAwe,EAAAC,EAAAC,KAEA,GAAA1e,EAAAye,EAAA,CACA,IAAAp9B,EAAA4C,EAAAuqB,eAAA,GACA9sB,EAAAL,EAAAi8B,WAAAtC,GAAAzZ,OAAAyZ,GACAA,EAAAt5B,EAAA6f,OAAAlgB,EAAA88B,cAAAz8B,GAAA47B,WAAkExI,EAAA,SAAQhT,OAAA,IAE1E,OAAAkZ,EA0CA,SAAA2D,EAAA76B,EAAAiqB,GAEA,IADA,IAAAnjB,KACAhK,EADA2D,KAAAyd,IAAAle,EAAAkc,MAAA+N,EAAA/N,OACwBpf,GAAA,EAAQA,IAAA,CAChC,IAAAc,EAAAoC,EAAApC,MAAAd,GACA,GAAAc,EAAAoC,EAAAH,KAAAG,EAAAkc,MAAApf,IACAmtB,EAAApsB,IAAAf,GAAAmtB,EAAApqB,KAAAoqB,EAAA/N,MAAApf,IACAkD,EAAA6C,KAAA/F,GAAAsD,KAAAC,KAAA0pB,WACAE,EAAApnB,KAAA/F,GAAAsD,KAAAC,KAAA0pB,UAA0C,MAC1CnsB,GAAAqsB,EAAArsB,MAAAd,IAAgCgK,EAAAa,KAAA7K,GAEhC,OAAAgK,EAlaAizB,EAAA7d,MAAAiC,IAAA,WAA8C,OAAA1gB,KAAAo8B,SAAA37B,OAAA,GAE9Cu7B,EAAAt1B,UAAAu1B,IAAA,WAIA,KAAAj8B,KAAAm8B,SAAA5O,MAAA,CACA,IAAA0O,EAAAj8B,KAAAq9B,eACApB,EAAcj8B,KAAAs9B,WAAArB,GACJj8B,KAAAu9B,YAAAv9B,KAAAw9B,WAOV,IAAAC,EAAAz9B,KAAA09B,iBAAAC,EAAA39B,KAAAq8B,OAAA9O,KAAAvtB,KAAAye,MAAAze,KAAAuC,MAAAkc,MACAlc,EAAAvC,KAAAuC,MAAAiqB,EAAAxsB,KAAA6K,MAAA4yB,EAAA,EAAAz9B,KAAAwsB,IAAAjqB,EAAAC,IAAAC,QAAAg7B,IACA,IAAAjR,EAAa,YAIb,IADA,IAAAtF,EAAAlnB,KAAAq8B,OAAArF,EAAAz0B,EAAAkc,MAAAsY,EAAAvK,EAAA/N,MACAuY,GAAAD,GAAA,GAAA7P,EAAAiC,YACAjC,IAAAnd,WAAAmd,QACA8P,IAAgBD,IAEhB,IAAAv2B,EAAA,IAAkB+yB,EAAA,MAAKrM,EAAA8P,EAAAD,GACvB,OAAA0G,GAAA,EACK,IAAA3K,EAAAvwB,EAAAH,IAAAq7B,EAAAz9B,KAAAwsB,IAAApqB,IAAApC,KAAAwsB,IAAApsB,MAAAI,EAAAm9B,GACLn9B,EAAA+sB,MAAAhrB,EAAAH,KAAApC,KAAAwsB,IAAApqB,IACK,IAAA2wB,EAAAxwB,EAAAH,IAAAoqB,EAAApqB,IAAA5B,QADL,GAOAw7B,EAAAt1B,UAAA22B,aAAA,WAGA,QAAAhE,EAAA,EAAoBA,GAAA,EAAWA,IAC/B,QAAAuE,EAAA59B,KAAAm8B,SAAAnF,UAAkD4G,GAAA,EAAiBA,IASnE,IARA,IAAAl7B,OAAA,EAOAy6B,GANAS,GACAl7B,EAAA+5B,EAAAz8B,KAAAm8B,SAAAjV,QAAA0W,EAAA,GAAA7zB,YACAmd,QAEAlnB,KAAAm8B,SAAAjV,SAEAnd,WACA8zB,EAAA79B,KAAAye,MAA0Cof,GAAA,EAAoBA,IAAA,CAC9D,IAAA98B,EAAAf,KAAAo8B,SAAAyB,GACAl7B,EAAA5B,EAAA4B,KACA7C,EAAAiB,EAAAjB,MACAiF,OAAA,EAAA+4B,OAAA,EAIA,MAAAzE,IAAA8D,EAAAr9B,EAAAwuB,UAAA6O,EAAAx6B,QAAAm7B,EAAAh+B,EAAAi8B,WAA4FxI,EAAA,SAAQ3xB,KAAAu7B,IAAA,IACpGx6B,EAAAsrB,kBAAAvrB,EAAAC,OACW,OAASi7B,aAAAC,gBAAAn7B,SAAAo7B,UAGpB,MAAAzE,GAAA8D,IAAAp4B,EAAAjF,EAAAuuB,aAAA8O,EAAAx6B,OACW,OAASi7B,aAAAC,gBAAAn7B,SAAAqC,QAGpB,GAAArC,GAAA5C,EAAAwuB,UAAA5rB,EAAAC,MAAqD,QAMrDq5B,EAAAt1B,UAAA62B,SAAA,WACA,IAAAx8B,EAAAf,KAAAm8B,SACAjV,EAAAnmB,EAAAmmB,QACA8P,EAAAj2B,EAAAi2B,UACAD,EAAAh2B,EAAAg2B,QACAtV,EAAAgb,EAAAvV,EAAA8P,GACA,SAAAvV,EAAA0H,YAAA1H,EAAA1X,WAAA2tB,UACA13B,KAAAm8B,SAAA,IAAsB5I,EAAA,MAAKrM,EAAA8P,EAAA,EAC3Bh0B,KAAAC,IAAA8zB,EAAAtV,EAAA8L,KAAAyJ,GAAA9P,EAAAqG,KAAAwJ,EAAAC,EAAA,OACA,IAGAgF,EAAAt1B,UAAA82B,SAAA,WACA,IAAAz8B,EAAAf,KAAAm8B,SACAjV,EAAAnmB,EAAAmmB,QACA8P,EAAAj2B,EAAAi2B,UACAD,EAAAh2B,EAAAg2B,QACAtV,EAAAgb,EAAAvV,EAAA8P,GACA,GAAAvV,EAAA0H,YAAA,GAAA6N,EAAA,GACA,IAAA+G,EAAA7W,EAAAqG,KAAAyJ,KAAAvV,EAAA8L,KACAvtB,KAAAm8B,SAAA,IAAwB5I,EAAA,MAAKgJ,EAAArV,EAAA8P,EAAA,KAAAA,EAAA,EAC7B+G,EAAA/G,EAAA,EAAAD,QAEA/2B,KAAAm8B,SAAA,IAAwB5I,EAAA,MAAKgJ,EAAArV,EAAA8P,EAAA,GAAAA,EAAAD,IAQ7BiF,EAAAt1B,UAAA42B,WAAA,SAAAv8B,GAOA,IANA,IAAA68B,EAAA78B,EAAA68B,WACAC,EAAA98B,EAAA88B,cACAn7B,EAAA3B,EAAA2B,OACAo7B,EAAA/8B,EAAA+8B,OACA/4B,EAAAhE,EAAAgE,KAEA/E,KAAAye,MAAAof,GAAsC79B,KAAAg+B,oBACtC,GAAAj5B,EAAa,QAAA5B,EAAA,EAAgBA,EAAA4B,EAAAtE,OAAiB0C,IAAOnD,KAAAi+B,iBAAAl5B,EAAA5B,IAErD,IAAA3C,EAAAR,KAAAm8B,SAAA1C,EAAA/2B,IAAAwkB,QAAA1mB,EAAA0mB,QACA8P,EAAAx2B,EAAAw2B,UAAA4G,EACAM,EAAA,EAAA5xB,KACAqjB,EAAA3vB,KAAAo8B,SAAAyB,GACA/9B,EAAA6vB,EAAA7vB,MACA6C,EAAAgtB,EAAAhtB,KACA,GAAAm7B,EAAA,CACA,QAAAjO,EAAA,EAAqBA,EAAAiO,EAAA3U,WAAyB0G,IAASvjB,EAAApC,KAAA4zB,EAAAh0B,MAAA+lB,IACvD/vB,IAAA88B,cAAAkB,GAQA,IAHA,IAAAK,EAAA1E,EAAAlM,KAAAqQ,GAAAp9B,EAAA0mB,QAAAqG,KAAA/sB,EAAAu2B,SAGAmH,EAAAzE,EAAAtQ,YAAA,CACA,IAAAhL,EAAAsb,EAAA3vB,MAAAo0B,GAAAE,EAAAt+B,EAAAwuB,UAAAnQ,EAAAxb,MACA,IAAAy7B,EAAmB,SACnBF,EACA,MAAAlH,GAAA7Y,EAAA+I,QAAAqG,QACAztB,EAAAs+B,EACA9xB,EAAApC,KAAAwyB,EAAAve,EAAAuc,KAAA/3B,EAAA07B,aAAAlgB,EAAAla,QAAA,GAAAi6B,EAAAlH,EAAA,EACAkH,GAAAzE,EAAAtQ,WAAAgV,GAAA,KAGA,IAAAG,EAAAJ,GAAAzE,EAAAtQ,WACAmV,IAAeH,GAAA,GAEfn+B,KAAAq8B,OAAAG,EAAAx8B,KAAAq8B,OAAAwB,EAA0DtK,EAAA,SAAQ3xB,KAAA0K,IAClEtM,KAAAo8B,SAAAyB,GAAA/9B,QAIAw+B,GAAAH,EAAA,GAAAz7B,KAAAC,MAAA3C,KAAAo8B,SAAAp8B,KAAAye,OAAA9b,MAAA3C,KAAAo8B,SAAA37B,OAAA,GACKT,KAAAg+B,oBAGL,QAAAO,EAAA,EAAA3C,EAAAnC,EAAmC8E,EAAAJ,EAAoBI,IAAA,CACvD,IAAAn5B,EAAAw2B,EAAA1P,UACAlsB,KAAAo8B,SAAAlyB,MAAwBvH,KAAAyC,EAAAzC,KAAA7C,MAAAsF,EAAA6nB,eAAA7nB,EAAA+jB,cACxByS,EAAAx2B,EAAA8hB,QAMAlnB,KAAAm8B,SAAAmC,EACA,GAAAV,EAAwBrK,EAAA,MAAKhT,MAC7B,IAAUgT,EAAA,MAAKgJ,EAAA/7B,EAAA0mB,QAAA0W,EAAA,KACfA,EAAA,EAAAO,EAAA,EAAA39B,EAAAu2B,QAAA6G,EAAA,GAHA,IAA+BrK,EAAA,MAAKgJ,EAAA/7B,EAAA0mB,QAAA0W,EAAAM,GAAA19B,EAAAw2B,UAAAx2B,EAAAu2B,UAMpCiF,EAAAt1B,UAAAg3B,eAAA,WACA,IAAA19B,KAAAwsB,IAAA9pB,OAAAypB,aAAAnsB,KAAAwsB,IAAApsB,OAAAJ,KAAAwsB,IAAApqB,IAAuE,SACvE,IAAAgmB,EAAAhc,EAAApM,KAAAo8B,SAAAp8B,KAAAye,OACA,IAAArS,EAAAzJ,KAAAwpB,cAAA0Q,EAAA78B,KAAAwsB,IAAAxsB,KAAAwsB,IAAA/N,MAAArS,EAAAzJ,KAAAyJ,EAAAtM,OAAA,IACAE,KAAAwsB,IAAA/N,OAAAze,KAAAye,QAAA2J,EAAApoB,KAAAw+B,eAAAx+B,KAAAwsB,OAAApE,EAAA3J,OAAAze,KAAAye,MAA+G,SAK/G,IAHA,IACAA,EADAze,KAAAwsB,IACA/N,MACAhM,EAAAzS,KAAAwsB,IAAA/Z,MAAAgM,GACAA,EAAA,GAAAhM,GAAAzS,KAAAwsB,IAAApsB,MAAAqe,MAAuDhM,EACvD,OAAAA,GAGAupB,EAAAt1B,UAAA83B,eAAA,SAAAhS,GACAiS,EAAA,QAAAt7B,EAAAH,KAAAyd,IAAAzgB,KAAAye,MAAA+N,EAAA/N,OAAqDtb,GAAA,EAAQA,IAAA,CAC7D,IAAApC,EAAAf,KAAAo8B,SAAAj5B,GACArD,EAAAiB,EAAAjB,MACA6C,EAAA5B,EAAA4B,KACA+7B,EAAAv7B,EAAAqpB,EAAA/N,OAAA+N,EAAApsB,IAAA+C,EAAA,IAAAqpB,EAAApqB,KAAAoqB,EAAA/N,OAAAtb,EAAA,IACA84B,EAAAY,EAAArQ,EAAArpB,EAAAR,EAAA7C,EAAA4+B,GACA,GAAAzC,EAAA,CACA,QAAA58B,EAAA8D,EAAA,EAAuB9D,GAAA,EAAQA,IAAA,CAC/B,IAAAswB,EAAA3vB,KAAAo8B,SAAA/8B,GACAs/B,EAAAhP,EAAA7vB,MAEAs+B,EAAAvB,EAAArQ,EAAAntB,EADAswB,EAAAhtB,KACAg8B,GAAA,GACA,IAAAP,KAAAjV,WAA2C,SAAAsV,EAE3C,OAAYhgB,MAAAtb,EAAA84B,MAAA2C,KAAAF,EAAAlS,EAAAhqB,IAAAC,QAAA+pB,EAAA/Z,MAAAtP,EAAA,IAAAqpB,MAIZwP,EAAAt1B,UAAAmE,MAAA,SAAA2hB,GACA,IAAA3hB,EAAA7K,KAAAw+B,eAAAhS,GACA,IAAA3hB,EAAe,YAEf,KAAA7K,KAAAye,MAAA5T,EAAA4T,OAAoCze,KAAAg+B,oBACpCnzB,EAAAoxB,IAAA9S,aAA6BnpB,KAAAq8B,OAAAG,EAAAx8B,KAAAq8B,OAAAxxB,EAAA4T,MAAA5T,EAAAoxB,MAC7BzP,EAAA3hB,EAAA+zB,KACA,QAAAv/B,EAAAwL,EAAA4T,MAAA,EAA+Bpf,GAAAmtB,EAAA/N,MAAgBpf,IAAA,CAC/C,IAAA+F,EAAAonB,EAAApnB,KAAA/F,GAAAiN,EAAAlH,EAAAzC,KAAAy1B,aAAA2D,WAAA32B,EAAA8hB,SAAA,EAAAsF,EAAAlnB,MAAAjG,IACAW,KAAAi+B,iBAAA74B,EAAAzC,KAAAyC,EAAAZ,MAAA8H,GAEA,OAAAkgB,GAGAwP,EAAAt1B,UAAAu3B,iBAAA,SAAAt7B,EAAA6B,EAAA0iB,GACA,IAAA9a,EAAApM,KAAAo8B,SAAAp8B,KAAAye,OACArS,EAAAtM,MAAAsM,EAAAtM,MAAAwuB,UAAA3rB,GACA3C,KAAAq8B,OAAAG,EAAAx8B,KAAAq8B,OAAAr8B,KAAAye,MAAuD8U,EAAA,SAAQ3xB,KAAAe,EAAA+S,OAAAlR,EAAA0iB,KAC/DlnB,KAAAo8B,SAAAlyB,MAAsBvH,OAAA7C,MAAA6C,EAAAy1B,gBAGtB4D,EAAAt1B,UAAAs3B,kBAAA,WACA,IACA1xB,EADAtM,KAAAo8B,SAAAjxB,MACArL,MAAAi8B,WAAkCxI,EAAA,SAAQhT,OAAA,GAC1CjU,EAAA6c,aAAuBnpB,KAAAq8B,OAAAG,EAAAx8B,KAAAq8B,OAAAr8B,KAAAo8B,SAAA37B,OAAA6L,KAGvBxH,OAAAuc,iBAAA2a,EAAAt1B,UAAA41B,GA2DArJ,EAAAvsB,UAAAm4B,aAAA,SAAAj9B,EAAAC,EAAArB,GACA,IAAAA,EAAA+sB,KAAoB,OAAAvtB,KAAAywB,YAAA7uB,EAAAC,GAEpB,IAAAU,EAAAvC,KAAAwC,IAAAC,QAAAb,GAAA4qB,EAAAxsB,KAAAwC,IAAAC,QAAAZ,GACA,GAAAq5B,EAAA34B,EAAAiqB,EAAAhsB,GACK,OAAAR,KAAA8D,KAAA,IAAAivB,EAAAnxB,EAAAC,EAAArB,IAEL,IAAAs+B,EAAA1B,EAAA76B,EAAAvC,KAAAwC,IAAAC,QAAAZ,IAEA,GAAAi9B,IAAAr+B,OAAA,IAAmDq+B,EAAA3zB,MAGnD,IAAA4zB,IAAAx8B,EAAAkc,MAAA,GACAqgB,EAAAjlB,QAAAklB,GAKA,QAAA1/B,EAAAkD,EAAAkc,MAAArc,EAAAG,EAAAH,IAAA,EAAgD/C,EAAA,EAAOA,IAAA+C,IAAA,CACvD,IAAAQ,EAAAL,EAAA6C,KAAA/F,GAAAsD,KAAAC,KACA,GAAAA,EAAAwkB,UAAAxkB,EAAA0pB,UAA0C,MAC1CwS,EAAAE,QAAA3/B,IAAA,EAAuC0/B,EAAA1/B,EACvCkD,EAAAyC,OAAA3F,IAAA+C,GAAsC08B,EAAA5zB,OAAA,KAAA7L,GAOtC,IAHA,IAAA4/B,EAAAH,EAAAE,QAAAD,GAEAG,KAAAC,EAAA3+B,EAAAw2B,UACA9P,EAAA1mB,EAAA0mB,QAAA/jB,EAAA,GAA2CA,IAAA,CAC3C,IAAAiC,EAAA8hB,EAAAnd,WAEA,GADAm1B,EAAAh1B,KAAA9E,GACAjC,GAAA3C,EAAAw2B,UAA+B,MAC/B9P,EAAA9hB,EAAA8hB,QAIAiY,EAAA,GAAAD,EAAAC,EAAA,GAAAx8B,KAAAC,KAAAwkB,UACA7kB,EAAA6C,KAAA65B,GAAAt8B,MAAAu8B,EAAAC,EAAA,GAAAx8B,KACKw8B,GAAA,EACLA,GAAA,GAAAD,EAAAC,EAAA,GAAAhT,aAAA+S,EAAAC,EAAA,GAAAx8B,KAAAC,KAAAwkB,UACA7kB,EAAA6C,KAAA65B,GAAAt8B,MAAAu8B,EAAAC,EAAA,GAAAx8B,OACKw8B,GAAA,GAEL,QAAAv7B,EAAApD,EAAAw2B,UAA+BpzB,GAAA,EAAQA,IAAA,CACvC,IAAAw7B,GAAAx7B,EAAAu7B,EAAA,IAAA3+B,EAAAw2B,UAAA,GACA32B,EAAA6+B,EAAAE,GACA,GAAA/+B,EACA,QAAAwvB,EAAA,EAAqBA,EAAAiP,EAAAr+B,OAA2BovB,IAAA,CAGhD,IAAAwP,EAAAP,GAAAjP,EAAAoP,GAAAH,EAAAr+B,QAAA6+B,GAAA,EACAD,EAAA,IAA4BC,GAAA,EAAgBD,MAC5C,IAAA38B,EAAAH,EAAA6C,KAAAi6B,EAAA,GAAA/5B,EAAA/C,EAAA+C,MAAA+5B,EAAA,GACA,GAAA38B,EAAA2C,eAAAC,IAAAjF,EAAAsC,KAAAtC,EAAA4D,OACS,OAAAjE,KAAAiJ,QAAA1G,EAAAyC,OAAAq6B,GAAAC,EAAA9S,EAAA/Z,MAAA4sB,GAAAx9B,EACT,IAAgC0xB,EAAA,MAAKyJ,EAAAx8B,EAAA0mB,QAAA,EAAA1mB,EAAAw2B,UAAAoI,GACrCA,EAAA5+B,EAAAu2B,WAKA,IADA,IAAAwI,EAAAv/B,KAAA6D,MAAApD,OACA89B,EAAAO,EAAAr+B,OAAA,EAAyC89B,GAAA,IACzCv+B,KAAAiJ,QAAArH,EAAAC,EAAArB,KACAR,KAAA6D,MAAApD,OAAA8+B,IAFmDhB,IAAA,CAGnD,IAAA9f,EAAAqgB,EAAAP,GACAA,EAAA,IACA38B,EAAAW,EAAAyC,OAAAyZ,GAA+B5c,EAAA2qB,EAAA/Z,MAAAgM,IAE/B,OAAAze,MAwBAizB,EAAAvsB,UAAA84B,iBAAA,SAAA59B,EAAAC,EAAAuD,GACA,IAAAA,EAAAu0B,UAAA/3B,GAAAC,GAAA7B,KAAAwC,IAAAC,QAAAb,GAAAc,OAAAwkB,QAAAqG,KAAA,CACA,IAAAkS,EA5uBA,SAAAj9B,EAAAJ,EAAAiC,GACA,IAAAgoB,EAAA7pB,EAAAC,QAAAL,GACA,GAAAiqB,EAAA3pB,OAAA2C,eAAAgnB,EAAA/mB,QAAA+mB,EAAA/mB,QAAAjB,GAAyE,OAAAjC,EAEzE,MAAAiqB,EAAAnpB,aACK,QAAA7D,EAAAgtB,EAAA5N,MAAA,EAA6Bpf,GAAA,EAAQA,IAAA,CAC1C,IAAAiG,EAAA+mB,EAAA/mB,MAAAjG,GACA,GAAAgtB,EAAAjnB,KAAA/F,GAAAgG,eAAAC,IAAAjB,GAAgE,OAAAgoB,EAAArnB,OAAA3F,EAAA,GAChE,GAAAiG,EAAA,EAAsB,YAEtB,GAAA+mB,EAAAnpB,cAAAmpB,EAAA3pB,OAAAwkB,QAAAqG,KACK,QAAAyM,EAAA3N,EAAA5N,MAAA,EAA+Bub,GAAA,EAAUA,IAAA,CAC9C,IAAApB,EAAAvM,EAAA9mB,WAAAy0B,GACA,GAAA3N,EAAAjnB,KAAA40B,GAAA30B,eAAAuzB,IAAAv0B,GAAsE,OAAAgoB,EAAA5Z,MAAAunB,EAAA,GACtE,GAAApB,EAAAvM,EAAAjnB,KAAA40B,GAAA7Q,WAAgD,aA8tBhDuW,CAAA1/B,KAAAwC,IAAAZ,EAAAwD,EAAAzC,MACA,MAAA88B,IAAwB79B,EAAAC,EAAA49B,GAExB,OAAAz/B,KAAA6+B,aAAAj9B,EAAAC,EAAA,IAAyC0xB,EAAA,MAAMA,EAAA,SAAQ3xB,KAAAwD,GAAA,OAMvD6tB,EAAAvsB,UAAA+pB,YAAA,SAAA7uB,EAAAC,GAGA,IAFA,IAAAU,EAAAvC,KAAAwC,IAAAC,QAAAb,GAAA4qB,EAAAxsB,KAAAwC,IAAAC,QAAAZ,GACA89B,EAAAvC,EAAA76B,EAAAiqB,GACArpB,EAAA,EAAiBA,EAAAw8B,EAAAl/B,OAAoB0C,IAAA,CACrC,IAAAsb,EAAAkhB,EAAAx8B,GAAAwhB,EAAAxhB,GAAAw8B,EAAAl/B,OAAA,EACA,GAAAkkB,GAAA,GAAAlG,GAAAlc,EAAA6C,KAAAqZ,GAAA9b,KAAAy1B,aAAA7J,SACO,OAAAvuB,KAAA0E,OAAAnC,EAAApC,MAAAse,GAAA+N,EAAApsB,IAAAqe,IACP,GAAAA,EAAA,IAAAkG,GAAApiB,EAAA6C,KAAAqZ,EAAA,GAAAkP,WAAAprB,EAAA+C,MAAAmZ,EAAA,GAAA+N,EAAAjnB,WAAAkZ,EAAA,KACO,OAAAze,KAAA0E,OAAAnC,EAAAyC,OAAAyZ,GAAA+N,EAAA/Z,MAAAgM,IAEP,QAAApf,EAAA,EAAiBA,GAAAkD,EAAAkc,OAAApf,GAAAmtB,EAAA/N,MAAoCpf,IACrD,GAAAuC,EAAAW,EAAApC,MAAAd,IAAAkD,EAAAkc,MAAApf,GAAAwC,EAAAU,EAAAnC,IAAAf,IAAAmtB,EAAApsB,IAAAf,GAAAwC,GAAA2qB,EAAA/N,MAAApf,EACO,OAAAW,KAAA0E,OAAAnC,EAAAyC,OAAA3F,GAAAwC,GAEP,OAAA7B,KAAA0E,OAAA9C,EAAAC,wBCvlDA/C,EAAAC,cACAC,cACAgB,KAAA4/B,QAMA5gC,KAAAgK,GACA,IAAA62B,EAAA72B,EACAS,cACA0S,OAEAlT,QAAA,sBAEAA,QAAA,gEAA0E,IAC1EA,QAAA,WAEA,GAAAjJ,KAAA4/B,KAAAp3B,eAAAq3B,GAAA,CACA,MAAAC,EAAAD,EACA,GACA7/B,KAAA4/B,KAAAE,KACAD,EAAAC,EAAA,IAAA9/B,KAAA4/B,KAAAE,SACO9/B,KAAA4/B,KAAAp3B,eAAAq3B,IAIP,OAFA7/B,KAAA4/B,KAAAC,GAAA,EAEAA,uCC5BA,SAAAE,EAAA7Y,GACAlnB,KAAAknB,mhBAGA6Y,EAAAr5B,WACAiG,YAAAozB,EAEAxkB,KAAA,SAAAjS,GACA,QAAAnG,EAAA,EAAmBA,EAAAnD,KAAAknB,QAAAzmB,OAAyB0C,GAAA,EAC5C,GAAAnD,KAAAknB,QAAA/jB,KAAAmG,EAAA,OAAAnG,EACA,UAMAud,IAAA,SAAApX,GACA,IAAAkyB,EAAAx7B,KAAAub,KAAAjS,GACA,UAAAkyB,OAAA5yB,EAAA5I,KAAAknB,QAAAsU,EAAA,IAOAwE,OAAA,SAAA12B,EAAAN,EAAAi3B,GACA,IAAAC,EAAAD,MAAA32B,EAAAtJ,KAAAmgC,OAAAF,GAAAjgC,KACAw7B,EAAA0E,EAAA3kB,KAAAjS,GAAA4d,EAAAgZ,EAAAhZ,QAAA1mB,QAOA,OANA,GAAAg7B,EACAtU,EAAAhd,KAAA+1B,GAAA32B,EAAAN,IAEAke,EAAAsU,EAAA,GAAAxyB,EACAi3B,IAAA/Y,EAAAsU,GAAAyE,IAEA,IAAAF,EAAA7Y,IAKAiZ,OAAA,SAAA72B,GACA,IAAAkyB,EAAAx7B,KAAAub,KAAAjS,GACA,OAAAkyB,EAAA,OAAAx7B,KACA,IAAAknB,EAAAlnB,KAAAknB,QAAA1mB,QAEA,OADA0mB,EAAAhc,OAAAswB,EAAA,GACA,IAAAuE,EAAA7Y,IAKAkZ,WAAA,SAAA92B,EAAAN,GACA,WAAA+2B,GAAAz2B,EAAAN,GAAA0G,OAAA1P,KAAAmgC,OAAA72B,GAAA4d,WAKAmZ,SAAA,SAAA/2B,EAAAN,GACA,IAAAke,EAAAlnB,KAAAmgC,OAAA72B,GAAA4d,QAAA1mB,QAEA,OADA0mB,EAAAhd,KAAAZ,EAAAN,GACA,IAAA+2B,EAAA7Y,IAMA3E,UAAA,SAAA+d,EAAAh3B,EAAAN,GACA,IAAAu3B,EAAAvgC,KAAAmgC,OAAA72B,GAAA4d,EAAAqZ,EAAArZ,QAAA1mB,QACAg7B,EAAA+E,EAAAhlB,KAAA+kB,GAEA,OADApZ,EAAAhc,QAAA,GAAAswB,EAAAtU,EAAAzmB,OAAA+6B,EAAA,EAAAlyB,EAAAN,GACA,IAAA+2B,EAAA7Y,IAMA5e,QAAA,SAAAsY,GACA,QAAAzd,EAAA,EAAmBA,EAAAnD,KAAAknB,QAAAzmB,OAAyB0C,GAAA,EAC5Cyd,EAAA5gB,KAAAknB,QAAA/jB,GAAAnD,KAAAknB,QAAA/jB,EAAA,KAMAkd,QAAA,SAAA3V,GAEA,OADAA,EAAAq1B,EAAAn+B,KAAA8I,IACA6iB,KACA,IAAAwS,EAAAr1B,EAAAwc,QAAAxX,OAAA1P,KAAAwgC,SAAA91B,GAAAwc,UADAlnB,MAOAggB,OAAA,SAAAtV,GAEA,OADAA,EAAAq1B,EAAAn+B,KAAA8I,IACA6iB,KACA,IAAAwS,EAAA//B,KAAAwgC,SAAA91B,GAAAwc,QAAAxX,OAAAhF,EAAAwc,UADAlnB,MAOAwgC,SAAA,SAAA91B,GACA,IAAArB,EAAArJ,KACA0K,EAAAq1B,EAAAn+B,KAAA8I,GACA,QAAAvH,EAAA,EAAmBA,EAAAuH,EAAAwc,QAAAzmB,OAAwB0C,GAAA,EAC3CkG,IAAA82B,OAAAz1B,EAAAwc,QAAA/jB,IACA,OAAAkG,GAKAkkB,WACA,OAAAvtB,KAAAknB,QAAAzmB,QAAA,IAQAs/B,EAAAn+B,KAAA,SAAAoH,GACA,GAAAA,aAAA+2B,EAAA,OAAA/2B,EACA,IAAAke,KACA,GAAAle,EAAA,QAAAT,KAAAS,EAAAke,EAAAhd,KAAA3B,EAAAS,EAAAT,IACA,WAAAw3B,EAAA7Y,IAGA,IAEeuZ,EAFfV,ECtEA,IAAAW,EAAA,SAAAxZ,EAAAqG,GAMA,GALAvtB,KAAAknB,UAIAlnB,KAAAutB,QAAA,EACA,MAAAA,EAAqB,QAAApqB,EAAA,EAAgBA,EAAA+jB,EAAAzmB,OAAoB0C,IACpDnD,KAAAutB,MAAArG,EAAA/jB,GAAA+qB,UAGLhN,GAA0BnX,YAAcoX,cAAA,GAAqB+K,WAAa/K,cAAA,GAAqBgI,YAAchI,cAAA,IAM7Guf,EAAAh6B,UAAAmoB,aAAA,SAAAjtB,EAAAC,EAAA+e,EAAA+f,EAAAj+B,QACA,IAAAi+B,MAAA,GAEA,QAAAx9B,EAAA,EAAAf,EAAA,EAA0BA,EAAAP,EAAUsB,IAAA,CACpC,IAAA2G,EAAA9J,KAAAknB,QAAA/jB,GAAA/C,EAAAgC,EAAA0H,EAAAokB,SACA,GAAA9tB,EAAAwB,IAAA,IAAAgf,EAAA9W,EAAA62B,EAAAv+B,EAAAM,EAAAS,IAAA2G,EAAAod,QAAAqG,KAAA,CACA,IAAAptB,EAAAiC,EAAA,EACA0H,EAAA+kB,aAAA7rB,KAAAC,IAAA,EAAArB,EAAAzB,GACA6C,KAAAyd,IAAA3W,EAAAod,QAAAqG,KAAA1rB,EAAA1B,GACAygB,EAAA+f,EAAAxgC,GAEAiC,EAAAhC,IAOAsgC,EAAAh6B,UAAAk6B,YAAA,SAAAhgB,GACA5gB,KAAA6uB,aAAA,EAAA7uB,KAAAutB,KAAA3M,IAIA8f,EAAAh6B,UAAA3D,YAAA,SAAAnB,EAAAC,EAAAg/B,EAAAC,GACA,IAAA7hC,EAAA,GAAA8hC,GAAA,EAaA,OAZA/gC,KAAA6uB,aAAAjtB,EAAAC,EAAA,SAAAuD,EAAAhD,GACAgD,EAAA47B,QACA/hC,GAAAmG,EAAAnG,KAAAuB,MAAAwC,KAAAC,IAAArB,EAAAQ,KAAAP,EAAAO,GACA2+B,GAAAF,GACKz7B,EAAAsyB,QAAAoJ,GACL7hC,GAAA6hC,EACAC,GAAAF,IACKE,GAAA37B,EAAAioB,UACLpuB,GAAA4hC,EACAE,GAAA,IAEG,GACH9hC,GAMAyhC,EAAAh6B,UAAAsZ,OAAA,SAAAC,GACA,IAAAA,EAAAsN,KAAoB,OAAAvtB,KACpB,IAAAA,KAAAutB,KAAmB,OAAAtN,EACnB,IAAA0E,EAAA3kB,KAAAksB,UAAAiR,EAAAld,EAAAlW,WAAAmd,EAAAlnB,KAAAknB,QAAA1mB,QAAA2C,EAAA,EAKA,IAJAwhB,EAAAqc,QAAArc,EAAAsc,WAAA9D,KACAjW,IAAAzmB,OAAA,GAAAkkB,EAAAuc,SAAAvc,EAAA1lB,KAAAk+B,EAAAl+B,MACAkE,EAAA,GAEQA,EAAA8c,EAAAiH,QAAAzmB,OAA0B0C,IAAO+jB,EAAAhd,KAAA+V,EAAAiH,QAAA/jB,IACzC,WAAAu9B,EAAAxZ,EAAAlnB,KAAAutB,KAAAtN,EAAAsN,OAKAmT,EAAAh6B,UAAAy6B,IAAA,SAAAv/B,EAAAC,GAEA,GADA,MAAAA,IAAmBA,EAAA7B,KAAAutB,MACnB,GAAA3rB,GAAAC,GAAA7B,KAAAutB,KAAqC,OAAAvtB,KACrC,IAAAqJ,KAAAkkB,EAAA,EACA,GAAA1rB,EAAAD,EAAkB,QAAAuB,EAAA,EAAAf,EAAA,EAAyBA,EAAAP,EAAUsB,IAAA,CACrD,IAAA2G,EAAA9J,KAAAknB,QAAA/jB,GAAA/C,EAAAgC,EAAA0H,EAAAokB,SACA9tB,EAAAwB,KACAQ,EAAAR,GAAAxB,EAAAyB,KAEWiI,EADXA,EAAAk3B,OACWl3B,EAAAq3B,IAAAn+B,KAAAC,IAAA,EAAArB,EAAAQ,GAAAY,KAAAyd,IAAA3W,EAAA7K,KAAAwB,OAAAoB,EAAAO,IAEA0H,EAAAq3B,IAAAn+B,KAAAC,IAAA,EAAArB,EAAAQ,EAAA,GAAAY,KAAAyd,IAAA3W,EAAAod,QAAAqG,KAAA1rB,EAAAO,EAAA,KAEXiH,EAAAa,KAAAJ,GACAyjB,GAAAzjB,EAAAokB,UAEA9rB,EAAAhC,EAEA,WAAAsgC,EAAAr3B,EAAAkkB,IAGAmT,EAAAh6B,UAAAkxB,WAAA,SAAAh2B,EAAAC,GACA,OAAAD,GAAAC,EAAmB6+B,EAAAngB,MACnB,GAAA3e,GAAAC,GAAA7B,KAAAknB,QAAAzmB,OAA+CT,KAC/C,IAAA0gC,EAAA1gC,KAAAknB,QAAA1mB,MAAAoB,EAAAC,KAMA6+B,EAAAh6B,UAAAoyB,aAAA,SAAAxzB,EAAAF,GACA,IAAAwU,EAAA5Z,KAAAknB,QAAA5hB,GACA,GAAAsU,GAAAxU,EAAwB,OAAApF,KACxB,IAAAwuB,EAAAxuB,KAAAknB,QAAA1mB,QACA+sB,EAAAvtB,KAAAutB,KAAAnoB,EAAA8oB,SAAAtU,EAAAsU,SAEA,OADAM,EAAAlpB,GAAAF,EACA,IAAAs7B,EAAAlS,EAAAjB,IAMAmT,EAAAh6B,UAAA05B,WAAA,SAAAh7B,GACA,WAAAs7B,GAAAt7B,GAAAsK,OAAA1P,KAAAknB,SAAAlnB,KAAAutB,KAAAnoB,EAAA8oB,WAMAwS,EAAAh6B,UAAA25B,SAAA,SAAAj7B,GACA,WAAAs7B,EAAA1gC,KAAAknB,QAAAxX,OAAAtK,GAAApF,KAAAutB,KAAAnoB,EAAA8oB,WAKAwS,EAAAh6B,UAAAq0B,GAAA,SAAA9a,GACA,GAAAjgB,KAAAknB,QAAAzmB,QAAAwf,EAAAiH,QAAAzmB,OAAoD,SACpD,QAAA0C,EAAA,EAAiBA,EAAAnD,KAAAknB,QAAAzmB,OAAyB0C,IACrC,IAAAnD,KAAAknB,QAAA/jB,GAAA43B,GAAA9a,EAAAiH,QAAA/jB,IAA6C,SAClD,UAKA+d,EAAAnX,WAAA2W,IAAA,WAAiD,OAAA1gB,KAAAknB,QAAAzmB,OAAAT,KAAAknB,QAAA,SAIjDhG,EAAAgL,UAAAxL,IAAA,WAAgD,OAAA1gB,KAAAknB,QAAAzmB,OAAAT,KAAAknB,QAAAlnB,KAAAknB,QAAAzmB,OAAA,SAIhDygB,EAAAiI,WAAAzI,IAAA,WAAiD,OAAA1gB,KAAAknB,QAAAzmB,QAKjDigC,EAAAh6B,UAAAoD,MAAA,SAAAxE,GACA,IAAAk2B,EAAAx7B,KAAAknB,QAAA5hB,GACA,IAAAk2B,EAAe,UAAAnJ,WAAA,SAAA/sB,EAAA,qBAAAtF,MACf,OAAAw7B,GAKAkF,EAAAh6B,UAAA+wB,WAAA,SAAAnyB,GACA,OAAAtF,KAAAknB,QAAA5hB,IAMAo7B,EAAAh6B,UAAA4B,QAAA,SAAAsY,GACA,QAAAzd,EAAA,EAAAi+B,EAAA,EAAwBj+B,EAAAnD,KAAAknB,QAAAzmB,OAAyB0C,IAAA,CACjD,IAAA2G,EAAA9J,KAAAknB,QAAA/jB,GACAyd,EAAA9W,EAAAs3B,EAAAj+B,GACAi+B,GAAAt3B,EAAAokB,WAOAwS,EAAAh6B,UAAA26B,cAAA,SAAAphB,EAAA7d,GAGA,YAFA,IAAAA,MAAA,GAzOA,SAAAi/B,EAAApI,EAAAC,EAAA92B,GACA,QAAAe,EAAA,GAAkBA,IAAA,CAClB,GAAAA,GAAA81B,EAAA9P,YAAAhmB,GAAA+1B,EAAA/P,WACO,OAAA8P,EAAA9P,YAAA+P,EAAA/P,WAAA,KAAA/mB,EAEP,IAAAk/B,EAAArI,EAAAnvB,MAAA3G,GAAAo+B,EAAArI,EAAApvB,MAAA3G,GACA,GAAAm+B,GAAAC,EAAA,CAEA,IAAAD,EAAAL,WAAAM,GAAqC,OAAAn/B,EAErC,GAAAk/B,EAAAN,QAAAM,EAAAriC,MAAAsiC,EAAAtiC,KAAA,CACA,QAAA2E,EAAA,EAAqB09B,EAAAriC,KAAA2E,IAAA29B,EAAAtiC,KAAA2E,GAAkCA,IAC9CxB,IACT,OAAAA,EAEA,GAAAk/B,EAAApa,QAAAqG,MAAAgU,EAAAra,QAAAqG,KAAA,CACA,IAAA9L,EAAA4f,EAAAC,EAAApa,QAAAqa,EAAAra,QAAA9kB,EAAA,GACA,SAAAqf,EAA0B,OAAAA,EAE1Brf,GAAAk/B,EAAApT,cAb2B9rB,GAAAk/B,EAAApT,UAqO3BmT,CAAArhC,KAAAigB,EAAA7d,IAQAs+B,EAAAh6B,UAAA86B,YAAA,SAAAvhB,EAAA7d,EAAAq/B,GAIA,YAHA,IAAAr/B,MAAApC,KAAAutB,WACA,IAAAkU,MAAAxhB,EAAAsN,MA9NA,SAAAiU,EAAAvI,EAAAC,EAAAwI,EAAAC,GACA,QAAAC,EAAA3I,EAAA9P,WAAA0Y,EAAA3I,EAAA/P,aAAiD,CACjD,MAAAyY,GAAA,GAAAC,EACO,OAAAD,GAAAC,EAAA,MAA2B5I,EAAAyI,EAAAxI,EAAAyI,GAElC,IAAAL,EAAArI,EAAAnvB,QAAA83B,GAAAL,EAAArI,EAAApvB,QAAA+3B,GAAAtU,EAAA+T,EAAApT,SACA,GAAAoT,GAAAC,EAAA,CAKA,IAAAD,EAAAL,WAAAM,GAAqC,OAAStI,EAAAyI,EAAAxI,EAAAyI,GAE9C,GAAAL,EAAAN,QAAAM,EAAAriC,MAAAsiC,EAAAtiC,KAAA,CAEA,IADA,IAAA6iC,EAAA,EAAAC,EAAA/+B,KAAAyd,IAAA6gB,EAAAriC,KAAAwB,OAAA8gC,EAAAtiC,KAAAwB,QACAqhC,EAAAC,GAAAT,EAAAriC,KAAAqiC,EAAAriC,KAAAwB,OAAAqhC,EAAA,IAAAP,EAAAtiC,KAAAsiC,EAAAtiC,KAAAwB,OAAAqhC,EAAA,IACAA,IAAeJ,IAAQC,IAEvB,OAAc1I,EAAAyI,EAAAxI,EAAAyI,GAEd,GAAAL,EAAApa,QAAAqG,MAAAgU,EAAAra,QAAAqG,KAAA,CACA,IAAA9L,EAAA+f,EAAAF,EAAApa,QAAAqa,EAAAra,QAAAwa,EAAA,EAAAC,EAAA,GACA,GAAAlgB,EAAkB,OAAAA,EAElBigB,GAAAnU,EAAiBoU,GAAApU,OAjBjBmU,GAAAnU,EAAmBoU,GAAApU,GAyNnBiU,CAAAxhC,KAAAigB,EAAA7d,EAAAq/B,IAOAf,EAAAh6B,UAAAkL,UAAA,SAAAxP,EAAA4/B,GAGA,QAFA,IAAAA,OAAA,GAEA,GAAA5/B,EAAiB,OAAA6/B,EAAA,EAAA7/B,GACjB,GAAAA,GAAApC,KAAAutB,KAAyB,OAAA0U,EAAAjiC,KAAAknB,QAAAzmB,OAAA2B,GACzB,GAAAA,EAAApC,KAAAutB,MAAAnrB,EAAA,EAAmC,UAAAiwB,WAAA,YAAAjwB,EAAA,mCACnC,QAAAe,EAAA,EAAA++B,EAAA,GAA8B/+B,IAAA,CAC9B,IAAA/C,EAAA8hC,EAAAliC,KAAA8J,MAAA3G,GAAA+qB,SACA,GAAA9tB,GAAAgC,EACA,OAAAhC,GAAAgC,GAAA4/B,EAAA,EAAoCC,EAAA9+B,EAAA,EAAA/C,GACpC6hC,EAAA9+B,EAAA++B,GAEAA,EAAA9hC,IAMAsgC,EAAAh6B,UAAAC,SAAA,WAAoD,UAAA3G,KAAAmiC,gBAAA,KAEpDzB,EAAAh6B,UAAAy7B,cAAA,WAA8D,OAAAniC,KAAAknB,QAAAhiB,KAAA,OAI9Dw7B,EAAAh6B,UAAAwvB,OAAA,WACA,OAAAl2B,KAAAknB,QAAAzmB,OAAAT,KAAAknB,QAAAxc,IAAA,SAAA0Y,GAA8D,OAAAA,EAAA8S,WAAqB,MAKnFwK,EAAAvK,SAAA,SAAAhyB,EAAA6E,GACA,IAAAA,EAAe,OAAA03B,EAAAngB,MACf,IAAA6hB,MAAAC,QAAAr5B,GAA8B,UAAAqpB,WAAA,uCAC9B,WAAAqO,EAAA13B,EAAA0B,IAAAvG,EAAAm+B,gBAMA5B,EAAA9G,UAAA,SAAAjW,GACA,IAAAA,EAAAljB,OAAsB,OAAAigC,EAAAngB,MAEtB,IADA,IAAAgiB,EAAAhV,EAAA,EACApqB,EAAA,EAAiBA,EAAAwgB,EAAAljB,OAAkB0C,IAAA,CACnC,IAAAiC,EAAAue,EAAAxgB,GACAoqB,GAAAnoB,EAAA8oB,SACA/qB,GAAAiC,EAAA47B,QAAArd,EAAAxgB,EAAA,GAAA89B,WAAA77B,IACAm9B,IAAoBA,EAAA5e,EAAAnjB,MAAA,EAAA2C,IACpBo/B,IAAA9hC,OAAA,GAAA2E,EAAA87B,SAAAqB,IAAA9hC,OAAA,GAAAxB,KAAAmG,EAAAnG,OACKsjC,GACLA,EAAAr4B,KAAA9E,GAGA,WAAAs7B,EAAA6B,GAAA5e,EAAA4J,IAQAmT,EAAA9+B,KAAA,SAAA6lB,GACA,IAAAA,EAAe,OAAAiZ,EAAAngB,MACf,GAAAkH,aAAAiZ,EAAkC,OAAAjZ,EAClC,GAAA2a,MAAAC,QAAA5a,GAA6B,OAAAznB,KAAA45B,UAAAnS,GAC7B,GAAAA,EAAAjjB,MAAoB,WAAAk8B,GAAAjZ,KAAAyG,UACpB,UAAAmE,WAAA,mBAAA5K,EAAA,kBACAA,EAAAoH,aAAA,yEAGA/pB,OAAAuc,iBAAAqf,EAAAh6B,UAAAwa,GAEA,IAAAsa,GAAal2B,MAAA,EAAAhF,OAAA,GACb,SAAA2hC,EAAA38B,EAAAhF,GAGA,OAFAk7B,EAAAl2B,QACAk2B,EAAAl7B,SACAk7B,EASA,SAAAgH,EAAAvJ,EAAAC,GACA,GAAAD,IAAAC,EAAgB,SAChB,IAAAD,GAAA,iBAAAA,IACAC,GAAA,iBAAAA,EAAqC,SACrC,IAAAvV,EAAAye,MAAAC,QAAApJ,GACA,GAAAmJ,MAAAC,QAAAnJ,IAAAvV,EAAkC,SAClC,GAAAA,EAAA,CACA,GAAAsV,EAAAx4B,QAAAy4B,EAAAz4B,OAA+B,SAC/B,QAAA0C,EAAA,EAAmBA,EAAA81B,EAAAx4B,OAAc0C,IAAO,IAAAq/B,EAAAvJ,EAAA91B,GAAA+1B,EAAA/1B,IAAgC,aACrE,CACH,QAAAi+B,KAAAnI,EAAsB,KAAAmI,KAAAlI,GAAAsJ,EAAAvJ,EAAAmI,GAAAlI,EAAAkI,KAA6C,SACnE,QAAAqB,KAAAvJ,EAAwB,KAAAuJ,KAAAxJ,GAAmB,SAE3C,SAfAyH,EAAAngB,MAAA,IAAAmgB,KAAA,GAwBA,IAAAgC,EAAA,SAAA//B,EAAA6B,GAGAxE,KAAA2C,OAGA3C,KAAAwE,SAyGA,SAAAm+B,EAAAl7B,GACA,IAAAN,EAAAV,MAAAG,KAAA5G,KAAAyH,GAEA,OADAN,EAAAwC,UAAAg5B,EAAAj8B,UACAS,EAnGAu7B,EAAAh8B,UAAAm0B,SAAA,SAAA+H,GAEA,IADA,IAAApU,EAAA6N,GAAA,EACAl5B,EAAA,EAAiBA,EAAAy/B,EAAAniC,OAAgB0C,IAAA,CACjC,IAAA8c,EAAA2iB,EAAAz/B,GACA,GAAAnD,KAAA+6B,GAAA9a,GAAyB,OAAA2iB,EACzB,GAAA5iC,KAAA2C,KAAAkgC,SAAA5iB,EAAAtd,MACA6rB,IAAkBA,EAAAoU,EAAApiC,MAAA,EAAA2C,QACb,IAAA8c,EAAAtd,KAAAkgC,SAAA7iC,KAAA2C,MACL,OAAAigC,GAEAvG,GAAApc,EAAAtd,KAAAmgC,KAAA9iC,KAAA2C,KAAAmgC,OACAtU,IAAoBA,EAAAoU,EAAApiC,MAAA,EAAA2C,IACpBqrB,EAAAtkB,KAAAlK,MACAq8B,GAAA,GAEA7N,GAAiBA,EAAAtkB,KAAA+V,IAKjB,OAFAuO,IAAcA,EAAAoU,EAAApiC,SACd67B,GAAgB7N,EAAAtkB,KAAAlK,MAChBwuB,GAMAkU,EAAAh8B,UAAAu0B,cAAA,SAAA2H,GACA,QAAAz/B,EAAA,EAAiBA,EAAAy/B,EAAAniC,OAAgB0C,IAC5B,GAAAnD,KAAA+6B,GAAA6H,EAAAz/B,IACE,OAAAy/B,EAAApiC,MAAA,EAAA2C,GAAAuM,OAAAkzB,EAAApiC,MAAA2C,EAAA,IACP,OAAAy/B,GAKAF,EAAAh8B,UAAA4oB,QAAA,SAAAsT,GACA,QAAAz/B,EAAA,EAAiBA,EAAAy/B,EAAAniC,OAAgB0C,IAC5B,GAAAnD,KAAA+6B,GAAA6H,EAAAz/B,IAAuB,SAC5B,UAMAu/B,EAAAh8B,UAAAq0B,GAAA,SAAA9a,GACA,OAAAjgB,MAAAigB,GACAjgB,KAAA2C,MAAAsd,EAAAtd,MAAA6/B,EAAAxiC,KAAAwE,MAAAyb,EAAAzb,QAKAk+B,EAAAh8B,UAAAwvB,OAAA,WACA,IAAAhuB,GAAavF,KAAA3C,KAAA2C,KAAA0K,MACb,QAAA01B,KAAA/iC,KAAAwE,MAAA,CACA0D,EAAA1D,MAAAxE,KAAAwE,MACA,MAEA,OAAA0D,GAIAw6B,EAAAvM,SAAA,SAAAhyB,EAAAiyB,GACA,IAAAA,EAAc,UAAA/D,WAAA,mCACd,IAAA1vB,EAAAwB,EAAAF,MAAAmyB,EAAAzzB,MACA,IAAAA,EAAc,UAAA0vB,WAAA,yBAAA+D,EAAA,wBACd,OAAAzzB,EAAA+S,OAAA0gB,EAAA5xB,QAKAk+B,EAAAM,QAAA,SAAA/J,EAAAC,GACA,GAAAD,GAAAC,EAAe,SACf,GAAAD,EAAAx4B,QAAAy4B,EAAAz4B,OAA6B,SAC7B,QAAA0C,EAAA,EAAiBA,EAAA81B,EAAAx4B,OAAc0C,IAC1B,IAAA81B,EAAA91B,GAAA43B,GAAA7B,EAAA/1B,IAAsB,SAC3B,UAMAu/B,EAAAO,QAAA,SAAAh/B,GACA,IAAAA,GAAA,GAAAA,EAAAxD,OAAoC,OAAAiiC,EAAAQ,KACpC,GAAAj/B,aAAAy+B,EAA8B,OAAAz+B,GAC9B,IAAAuqB,EAAAvqB,EAAAzD,QAEA,OADAguB,EAAA2U,KAAA,SAAAlK,EAAAC,GAA6B,OAAAD,EAAAt2B,KAAAmgC,KAAA5J,EAAAv2B,KAAAmgC,OAC7BtU,GAIAkU,EAAAQ,QAYAP,EAAAj8B,UAAA5B,OAAA4Q,OAAAjP,MAAAC,WACAi8B,EAAAj8B,UAAAiG,YAAAg2B,EACAA,EAAAj8B,UAAA2G,KAAA,eAKA,IAAA+1B,EAAA,SAAAlc,EAAA8P,EAAAD,GAEA/2B,KAAAknB,UAEAlnB,KAAAg3B,YAEAh3B,KAAA+2B,WAGAuF,GAA4B/O,MAAQpM,cAAA,IA8FpC,SAAAlY,EAAA1G,EAAAiqB,EAAAhsB,GACA,GAAAA,EAAAw2B,UAAAz0B,EAAAkc,MACK,UAAAkkB,EAAA,mDACL,GAAApgC,EAAAkc,MAAAje,EAAAw2B,WAAAxK,EAAA/N,MAAAje,EAAAu2B,QACK,UAAA4L,EAAA,4BACL,OAGA,SAAAU,EAAA9gC,EAAAiqB,EAAAhsB,EAAAie,GACA,IAAAnZ,EAAA/C,EAAA+C,MAAAmZ,GAAArZ,EAAA7C,EAAA6C,KAAAqZ,GACA,GAAAnZ,GAAAknB,EAAAlnB,MAAAmZ,MAAAlc,EAAAkc,MAAAje,EAAAw2B,UAAA,CACA,IAAAvV,EAAA4hB,EAAA9gC,EAAAiqB,EAAAhsB,EAAAie,EAAA,GACA,OAAArZ,EAAAopB,KAAAppB,EAAA8hB,QAAA4R,aAAAxzB,EAAAmc,IACG,GAAAjhB,EAAA0mB,QAAAqG,KAEA,IAAA/sB,EAAAw2B,WAAAx2B,EAAAu2B,SAAAx0B,EAAAkc,UAAA+N,EAAA/N,SAGA,CACH,IAAA1d,EAgFA,SAAAP,EAAA8iC,GAGA,IAFA,IAAAC,EAAAD,EAAA7kB,MAAAje,EAAAw2B,UACA5xB,EADAk+B,EAAAl+B,KAAAm+B,GACA/U,KAAAhuB,EAAA0mB,SACA/jB,EAAAogC,EAAA,EAAyBpgC,GAAA,EAAQA,IAC5BiC,EAAAk+B,EAAAl+B,KAAAjC,GAAAqrB,KAAAkS,EAAA9+B,KAAAwD,IACL,OAAUjF,MAAAiF,EAAAo+B,eAAAhjC,EAAAw2B,UAAAuM,GACVnjC,IAAAgF,EAAAo+B,eAAAp+B,EAAA8hB,QAAAqG,KAAA/sB,EAAAu2B,QAAAwM,IAtFAE,CAAAjjC,EAAA+B,GACApC,EAAAY,EAAAZ,MACAC,EAAAW,EAAAX,IACA,OAAWsjC,EAAKt+B,EA8ChB,SAAAu+B,EAAAphC,EAAA4C,EAAAy+B,EAAApX,EAAA/N,GACA,IAAAuY,EAAAz0B,EAAAkc,SAAAua,EAAAz2B,EAAA4C,EAAAsZ,EAAA,GACA,IAAAsY,EAAAvK,EAAA/N,SAAAua,EAAA4K,EAAApX,EAAA/N,EAAA,GAEA,IAAAyI,KACA2c,EAAA,KAAAthC,EAAAkc,EAAAyI,GACA8P,GAAAD,GAAA5xB,EAAAG,MAAAmZ,IAAAmlB,EAAAt+B,MAAAmZ,IACAqlB,EAAA9M,EAAAD,GACAgN,EAAYL,EAAK1M,EAAA2M,EAAAphC,EAAA4C,EAAAy+B,EAAApX,EAAA/N,EAAA,IAAAyI,KAEjB8P,GACO+M,EAASL,EAAK1M,EAAAgN,EAAAzhC,EAAA4C,EAAAsZ,EAAA,IAAAyI,GACrB2c,EAAA1+B,EAAAy+B,EAAAnlB,EAAAyI,GACA6P,GACOgN,EAASL,EAAK3M,EAAAiN,EAAAJ,EAAApX,EAAA/N,EAAA,IAAAyI,IAErB2c,EAAArX,EAAA,KAAA/N,EAAAyI,GACA,WAAAwZ,EAAAxZ,GA/DgByc,CAAAphC,EAAApC,EAAAC,EAAAosB,EAAA/N,IANhB,IAAA/b,EAAAH,EAAAG,OAAAwkB,EAAAxkB,EAAAwkB,QACA,OAAWwc,EAAKhhC,EAAAwkB,EAAAia,IAAA,EAAA5+B,EAAAW,cAAA8c,OAAAxf,EAAA0mB,SAAAlH,OAAAkH,EAAAia,IAAA3U,EAAAtpB,gBAHhB,OAAWwgC,EAAKt+B,EAAA4+B,EAAAzhC,EAAAiqB,EAAA/N,IAThB4kB,CAAA9gC,EAAAiqB,EAAAhsB,EAAA,GAqBA,SAAAsjC,EAAAG,EAAAC,GACA,IAAAA,EAAAvhC,KAAAsrB,kBAAAgW,EAAAthC,MACK,UAAAggC,EAAA,eAAAuB,EAAAvhC,KAAA0K,KAAA,SAAA42B,EAAAthC,KAAA0K,MAGL,SAAA2rB,EAAAmL,EAAAC,EAAA3lB,GACA,IAAArZ,EAAA++B,EAAA/+B,KAAAqZ,GAEA,OADAqlB,EAAA1+B,EAAAg/B,EAAAh/B,KAAAqZ,IACArZ,EAGA,SAAA2+B,EAAAj6B,EAAAqgB,GACA,IAAAxF,EAAAwF,EAAA1pB,OAAA,EACAkkB,GAAA,GAAA7a,EAAAk3B,QAAAl3B,EAAAm3B,WAAA9W,EAAAxF,IACKwF,EAAAxF,GAAA7a,EAAAo3B,SAAA/W,EAAAxF,GAAA1lB,KAAA6K,EAAA7K,MAEAkrB,EAAAjgB,KAAAJ,GAGL,SAAA+5B,EAAA1+B,EAAAy+B,EAAAnlB,EAAA0L,GACA,IAAA/kB,GAAAw+B,GAAAz+B,GAAAC,KAAAqZ,GACAoZ,EAAA,EAAAC,EAAA8L,IAAAt+B,MAAAmZ,GAAArZ,EAAA+jB,WACAhkB,IACA0yB,EAAA1yB,EAAAG,MAAAmZ,GACAtZ,EAAAsZ,QACAoZ,IACK1yB,EAAAk/B,aACLN,EAAA5+B,EAAA6oB,UAAA7D,GACA0N,MAGA,QAAA10B,EAAA00B,EAA0B10B,EAAA20B,EAAc30B,IAAO4gC,EAAA3+B,EAAA0E,MAAA3G,GAAAgnB,GAC/CyZ,KAAAnlB,UAAAmlB,EAAAS,YACKN,EAAAH,EAAA3+B,WAAAklB,GAGL,SAASuZ,EAAKt+B,EAAA8hB,GACd,IAAA9hB,EAAAzC,KAAAg2B,aAAAzR,GACK,UAAAyb,EAAA,4BAAAv9B,EAAAzC,KAAA0K,MACL,OAAAjI,EAAAopB,KAAAtH,GAuBA,SAAA8c,EAAAzhC,EAAAiqB,EAAA/N,GACA,IAAAyI,MACA2c,EAAA,KAAAthC,EAAAkc,EAAAyI,GACA3kB,EAAAkc,UAEAslB,EAAYL,EADZ1K,EAAAz2B,EAAAiqB,EAAA/N,EAAA,GACiBulB,EAAAzhC,EAAAiqB,EAAA/N,EAAA,IAAAyI,GAGjB,OADA2c,EAAArX,EAAA,KAAA/N,EAAAyI,GACA,IAAAwZ,EAAAxZ,GA1LAoV,EAAA/O,KAAA7M,IAAA,WACA,OAAA1gB,KAAAknB,QAAAqG,KAAAvtB,KAAAg3B,UAAAh3B,KAAA+2B,SAGAqM,EAAA18B,UAAA4wB,SAAA,SAAAl1B,EAAAq3B,GACA,IAAAvS,EAoEA,SAAAod,EAAApd,EAAAsQ,EAAAn3B,EAAAqC,GACA,IAAA3B,EAAAmmB,EAAAtV,UAAA4lB,GACA,IAAAlyB,EAAAvE,EAAAuE,MACA,IAAAhF,EAAAS,EAAAT,OACA,IAAAwJ,EAAAod,EAAAuQ,WAAAnyB,GACA,GAAAhF,GAAAk3B,GAAA1tB,EAAAk3B,OACA,OAAAt+B,MAAAirB,WAAAroB,IAAAjF,GAA6D,KAC7D6mB,EAAAia,IAAA,EAAA3J,GAAAxX,OAAA3f,GAAA2f,OAAAkH,EAAAia,IAAA3J,IAEA,IAAA/V,EAAA6iB,EAAAx6B,EAAAod,QAAAsQ,EAAAl3B,EAAA,EAAAD,GACA,OAAAohB,GAAAyF,EAAA4R,aAAAxzB,EAAAwE,EAAA0kB,KAAA/M,IA9EA6iB,CAAAtkC,KAAAknB,QAAA9kB,EAAApC,KAAAg3B,UAAAyC,EAAA,MACA,OAAAvS,GAAA,IAAAkc,EAAAlc,EAAAlnB,KAAAg3B,UAAAh3B,KAAA+2B,UAGAqM,EAAA18B,UAAA6wB,cAAA,SAAA31B,EAAAC,GACA,WAAAuhC,EA+CA,SAAAmB,EAAArd,EAAAtlB,EAAAC,GACA,IAAAd,EAAAmmB,EAAAtV,UAAAhQ,GACA,IAAA0D,EAAAvE,EAAAuE,MACA,IAAAhF,EAAAS,EAAAT,OACA,IAAAwJ,EAAAod,EAAAuQ,WAAAnyB,GACA,IAAAqqB,EAAAzI,EAAAtV,UAAA/P,GACA,IAAA2iC,EAAA7U,EAAArqB,MACA,IAAAm/B,EAAA9U,EAAArvB,OACA,GAAAA,GAAAsB,GAAAkI,EAAAk3B,OAAA,CACA,GAAAyD,GAAA5iC,IAAAqlB,EAAApd,MAAA06B,GAAAxD,OAA2D,UAAA3O,WAAA,2BAC3D,OAAAnL,EAAAia,IAAA,EAAAv/B,GAAAoe,OAAAkH,EAAAia,IAAAt/B,IAEA,GAAAyD,GAAAk/B,EAAyB,UAAAnS,WAAA,2BACzB,OAAAnL,EAAA4R,aAAAxzB,EAAAwE,EAAA0kB,KAAA+V,EAAAz6B,EAAAod,QAAAtlB,EAAAtB,EAAA,EAAAuB,EAAAvB,EAAA,KA5DAikC,CAAAvkC,KAAAknB,QAAAtlB,EAAA5B,KAAAg3B,UAAAn1B,EAAA7B,KAAAg3B,WAAAh3B,KAAAg3B,UAAAh3B,KAAA+2B,UAKAqM,EAAA18B,UAAAq0B,GAAA,SAAA9a,GACA,OAAAjgB,KAAAknB,QAAA6T,GAAA9a,EAAAiH,UAAAlnB,KAAAg3B,WAAA/W,EAAA+W,WAAAh3B,KAAA+2B,SAAA9W,EAAA8W,SAGAqM,EAAA18B,UAAAC,SAAA,WACA,OAAA3G,KAAAknB,QAAA,IAAAlnB,KAAAg3B,UAAA,IAAAh3B,KAAA+2B,QAAA,KAKAqM,EAAA18B,UAAAwvB,OAAA,WACA,IAAAl2B,KAAAknB,QAAAqG,KAA2B,YAC3B,IAAA6I,GAAclP,QAAAlnB,KAAAknB,QAAAgP,UAGd,OAFAl2B,KAAAg3B,UAAA,IAA2BZ,EAAAY,UAAAh3B,KAAAg3B,WAC3Bh3B,KAAA+2B,QAAA,IAAyBX,EAAAW,QAAA/2B,KAAA+2B,SACzBX,GAKAgN,EAAAjN,SAAA,SAAAhyB,EAAAiyB,GACA,IAAAA,EAAc,OAAAgN,EAAA7iB,MACd,IAAAyW,EAAAZ,EAAAY,WAAA,EAAAD,EAAAX,EAAAW,SAAA,EACA,oBAAAC,GAAA,iBAAAD,EACK,UAAA1E,WAAA,oCACL,WAAA+Q,EAAA1C,EAAAvK,SAAAhyB,EAAAiyB,EAAAlP,SAAAkP,EAAAY,WAAA,EAAAZ,EAAAW,SAAA,IAMAqM,EAAAsB,QAAA,SAAAjL,EAAAkL,QACA,IAAAA,OAAA,GAGA,IADA,IAAA3N,EAAA,EAAAD,EAAA,EACA3T,EAAAqW,EAAA1vB,WAAmCqZ,MAAAsU,SAAAiN,IAAAvhB,EAAAzgB,KAAAC,KAAA0pB,WAA6DlJ,IAAArZ,WAAoBitB,IACpH,QAAA4N,EAAAnL,EAAAvN,UAAoC0Y,MAAAlN,SAAAiN,IAAAC,EAAAjiC,KAAAC,KAAA0pB,WAAmEsY,IAAA1Y,UAAuB6K,IAC9H,WAAAqM,EAAA3J,EAAAzC,EAAAD,IAGAjyB,OAAAuc,iBAAA+hB,EAAA18B,UAAA41B,GAiCA8G,EAAA7iB,MAAA,IAAA6iB,EAAA1C,EAAAngB,MAAA,KAsHA,IAAAskB,EAAA,SAAAziC,EAAA0iC,EAAA5hC,GAEAlD,KAAAoC,MACApC,KAAA8kC,OAKA9kC,KAAAye,MAAAqmB,EAAArkC,OAAA,IAEAT,KAAAkD,gBAGA6hC,GAA4BriC,QAAUye,cAAA,GAAqB3e,KAAO2e,cAAA,GAAqBkjB,YAAcljB,cAAA,GAAqB6M,WAAa7M,cAAA,GAAqBlc,YAAckc,cAAA,IAE1K0jB,EAAAn+B,UAAAs+B,aAAA,SAAAC,GACA,aAAAA,EAAoBjlC,KAAAye,MACpBwmB,EAAA,EAAgBjlC,KAAAye,MAAAwmB,EAChBA,GAOAF,EAAAriC,OAAAge,IAAA,WAA+C,OAAA1gB,KAAAoF,KAAApF,KAAAye,QAI/CsmB,EAAAviC,IAAAke,IAAA,WAA4C,OAAA1gB,KAAAoF,KAAA,IAK5Cy/B,EAAAn+B,UAAAtB,KAAA,SAAAqZ,GAAoD,OAAAze,KAAA8kC,KAAA,EAAA9kC,KAAAglC,aAAAvmB,KAMpDomB,EAAAn+B,UAAApB,MAAA,SAAAmZ,GAAsD,OAAAze,KAAA8kC,KAAA,EAAA9kC,KAAAglC,aAAAvmB,GAAA,IAKtDomB,EAAAn+B,UAAAnB,WAAA,SAAAkZ,GAEA,OADAA,EAAAze,KAAAglC,aAAAvmB,GACAze,KAAAsF,MAAAmZ,OAAAze,KAAAye,OAAAze,KAAAqkC,WAAA,MAMAQ,EAAAn+B,UAAAvG,MAAA,SAAAse,GAEA,WADAA,EAAAze,KAAAglC,aAAAvmB,IACA,EAAAze,KAAA8kC,KAAA,EAAArmB,EAAA,MAMAomB,EAAAn+B,UAAAtG,IAAA,SAAAqe,GAEA,OADAA,EAAAze,KAAAglC,aAAAvmB,GACAze,KAAAG,MAAAse,GAAAze,KAAAoF,KAAAqZ,GAAAyI,QAAAqG,MAOAsX,EAAAn+B,UAAA1B,OAAA,SAAAyZ,GAEA,KADAA,EAAAze,KAAAglC,aAAAvmB,IACe,UAAA4T,WAAA,kDACf,OAAA5T,GAAAze,KAAAye,MAAA,EAAAze,KAAAoC,IAAApC,KAAA8kC,KAAA,EAAArmB,EAAA,IAMAomB,EAAAn+B,UAAA+L,MAAA,SAAAgM,GAEA,KADAA,EAAAze,KAAAglC,aAAAvmB,IACe,UAAA4T,WAAA,iDACf,OAAA5T,GAAAze,KAAAye,MAAA,EAAAze,KAAAoC,IAAApC,KAAA8kC,KAAA,EAAArmB,EAAA,GAAAze,KAAA8kC,KAAA,EAAArmB,GAAAyP,UAOA6W,EAAAV,WAAA3jB,IAAA,WAAmD,OAAA1gB,KAAAoC,IAAApC,KAAA8kC,KAAA9kC,KAAA8kC,KAAArkC,OAAA,IAMnDskC,EAAA/W,UAAAtN,IAAA,WACA,IAAAhe,EAAA1C,KAAA0C,OAAA4C,EAAAtF,KAAAsF,MAAAtF,KAAAye,OACA,GAAAnZ,GAAA5C,EAAAymB,WAAmC,YACnC,IAAA+b,EAAAllC,KAAAoC,IAAApC,KAAA8kC,KAAA9kC,KAAA8kC,KAAArkC,OAAA,GAAAqJ,EAAApH,EAAAoH,MAAAxE,GACA,OAAA4/B,EAAAxiC,EAAAoH,MAAAxE,GAAA67B,IAAA+D,GAAAp7B,GAOAi7B,EAAA9/B,WAAAyb,IAAA,WACA,IAAApb,EAAAtF,KAAAsF,MAAAtF,KAAAye,OACAymB,EAAAllC,KAAAoC,IAAApC,KAAA8kC,KAAA9kC,KAAA8kC,KAAArkC,OAAA,GACA,OAAAykC,EAAallC,KAAA0C,OAAAoH,MAAAxE,GAAA67B,IAAA,EAAA+D,GACb,GAAA5/B,EAAA,KAAAtF,KAAA0C,OAAAoH,MAAAxE,EAAA,IAQAu/B,EAAAn+B,UAAAzC,MAAA,WACA,IAAAvB,EAAA1C,KAAA0C,OAAA4C,EAAAtF,KAAAsF,QAGA,MAAA5C,EAAAwkB,QAAAqG,KAAiC,OAAAmV,EAAAQ,KAGjC,GAAAljC,KAAAqkC,WAAwB,OAAA3hC,EAAAoH,MAAAxE,GAAArB,MAExB,IAAAggC,EAAAvhC,EAAA+0B,WAAAnyB,EAAA,GAAA2a,EAAAvd,EAAA+0B,WAAAnyB,GAGA,IAAA2+B,EAAA,CAAc,IAAAkB,EAAAlB,EAAgBA,EAAAhkB,EAAcA,EAAAklB,EAK5C,IADA,IAAAlhC,EAAAggC,EAAAhgC,MACAd,EAAA,EAAiBA,EAAAc,EAAAxD,OAAkB0C,KAC9B,IAAAc,EAAAd,GAAAR,KAAAC,KAAAwnB,WAAAnK,GAAAhc,EAAAd,GAAAmsB,QAAArP,EAAAhc,SACEA,IAAAd,KAAA83B,cAAAh3B,IAEP,OAAAA,GAUA4gC,EAAAn+B,UAAA0+B,YAAA,SAAAxB,GACA,IAAAnxB,EAAAzS,KAAA0C,OAAA+0B,WAAAz3B,KAAAsF,SACA,IAAAmN,MAAAknB,SAAkC,YAGlC,IADA,IAAA11B,EAAAwO,EAAAxO,MAAAka,EAAAylB,EAAAlhC,OAAA+0B,WAAAmM,EAAAt+B,SACAnC,EAAA,EAAiBA,EAAAc,EAAAxD,OAAkB0C,KAC9B,IAAAc,EAAAd,GAAAR,KAAAC,KAAAwnB,WAAAjM,GAAAla,EAAAd,GAAAmsB,QAAAnR,EAAAla,SACEA,IAAAd,KAAA83B,cAAAh3B,IACP,OAAAA,GAMA4gC,EAAAn+B,UAAAk0B,YAAA,SAAAx4B,GACA,QAAAqc,EAAAze,KAAAye,MAA8BA,EAAA,EAAWA,IACpC,GAAAze,KAAAG,MAAAse,IAAArc,GAAApC,KAAAI,IAAAqe,IAAArc,EAA0D,OAAAqc,EAC/D,UAWAomB,EAAAn+B,UAAA9B,WAAA,SAAAqb,EAAAolB,GAGA,QAFA,IAAAplB,MAAAjgB,MAEAigB,EAAA7d,IAAApC,KAAAoC,IAA6B,OAAA6d,EAAArb,WAAA5E,MAC7B,QAAAX,EAAAW,KAAAye,OAAAze,KAAA0C,OAAAwsB,eAAAlvB,KAAAoC,KAAA6d,EAAA7d,IAAA,KAAyF/C,GAAA,EAAQA,IAC5F,GAAA4gB,EAAA7d,KAAApC,KAAAI,IAAAf,MAAAgmC,KAAArlC,KAAAoF,KAAA/F,KACE,WAAAimC,EAAAtlC,KAAAigB,EAAA5gB,IAKPwlC,EAAAn+B,UAAAqmB,WAAA,SAAA9M,GACA,OAAAjgB,KAAAoC,IAAApC,KAAAkD,cAAA+c,EAAA7d,IAAA6d,EAAA/c,cAKA2hC,EAAAn+B,UAAAzD,IAAA,SAAAgd,GACA,OAAAA,EAAA7d,IAAApC,KAAAoC,IAAA6d,EAAAjgB,MAKA6kC,EAAAn+B,UAAA+Z,IAAA,SAAAR,GACA,OAAAA,EAAA7d,IAAApC,KAAAoC,IAAA6d,EAAAjgB,MAGA6kC,EAAAn+B,UAAAC,SAAA,WAEA,IADA,IAAA4+B,EAAA,GACApiC,EAAA,EAAiBA,GAAAnD,KAAAye,MAAiBtb,IAC7BoiC,MAAA,QAAAvlC,KAAAoF,KAAAjC,GAAAR,KAAA0K,KAAA,IAAArN,KAAAsF,MAAAnC,EAAA,GACL,OAAAoiC,EAAA,IAAAvlC,KAAAkD,cAGA2hC,EAAApiC,QAAA,SAAAD,EAAAJ,GACA,KAAAA,GAAA,GAAAA,GAAAI,EAAA0kB,QAAAqG,MAA+C,UAAA8E,WAAA,YAAAjwB,EAAA,iBAG/C,IAFA,IAAA0iC,KACA3kC,EAAA,EAAA+C,EAAAd,EACAgD,EAAA5C,IAAuB,CACvB,IAAAzB,EAAAqE,EAAA8hB,QAAAtV,UAAA1O,GACAoC,EAAAvE,EAAAuE,MACAhF,EAAAS,EAAAT,OACAklC,EAAAtiC,EAAA5C,EAEA,GADAwkC,EAAA56B,KAAA9E,EAAAE,EAAAnF,EAAAG,IACAklC,EAAe,MAEf,IADApgC,IAAA0E,MAAAxE,IACA07B,OAAsB,MACtB99B,EAAAsiC,EAAA,EACArlC,GAAAG,EAAA,EAEA,WAAAukC,EAAAziC,EAAA0iC,EAAA5hC,IAGA2hC,EAAAY,cAAA,SAAAjjC,EAAAJ,GACA,QAAAe,EAAA,EAAiBA,EAAAuiC,EAAAjlC,OAAyB0C,IAAA,CAC1C,IAAAwiC,EAAAD,EAAAviC,GACA,GAAAwiC,EAAAvjC,QAAAujC,EAAAnjC,OAAiD,OAAAmjC,EAEjD,IAAAt8B,EAAAq8B,EAAAE,GAAAf,EAAApiC,QAAAD,EAAAJ,GAEA,OADAwjC,KAAA,GAAAC,EACAx8B,GAGAvE,OAAAuc,iBAAAwjB,EAAAn+B,UAAAq+B,GAEA,IAAAW,KAAAE,EAAA,EAAAC,EAAA,GAIAP,EAAA,SAAA/iC,EAAAiqB,EAAA/N,GAMAze,KAAAuC,QAGAvC,KAAAwsB,MAEAxsB,KAAAye,SAGAqnB,GAA8B3lC,OAASghB,cAAA,GAAqB/gB,KAAO+gB,cAAA,GAAqBze,QAAUye,cAAA,GAAqB0W,YAAc1W,cAAA,GAAqB2W,UAAY3W,cAAA,IAGtK2kB,EAAA3lC,MAAAugB,IAAA,WAAgD,OAAA1gB,KAAAuC,MAAAyC,OAAAhF,KAAAye,MAAA,IAEhDqnB,EAAA1lC,IAAAsgB,IAAA,WAA8C,OAAA1gB,KAAAwsB,IAAA/Z,MAAAzS,KAAAye,MAAA,IAG9CqnB,EAAApjC,OAAAge,IAAA,WAAiD,OAAA1gB,KAAAuC,MAAA6C,KAAApF,KAAAye,QAEjDqnB,EAAAjO,WAAAnX,IAAA,WAAqD,OAAA1gB,KAAAuC,MAAA+C,MAAAtF,KAAAye,QAErDqnB,EAAAhO,SAAApX,IAAA,WAAmD,OAAA1gB,KAAAwsB,IAAAjnB,WAAAvF,KAAAye,QAEnD3Z,OAAAuc,iBAAAikB,EAAA5+B,UAAAo/B,GAEA,IAAAC,EAAAjhC,OAAA4Q,OAAA,MAcAswB,EAAA,SAAArjC,EAAA6B,EAAA0iB,EAAAjjB,GAGAjE,KAAA2C,OAMA3C,KAAAwE,QAIAxE,KAAAknB,WAAAwZ,EAAAngB,MAKAvgB,KAAAiE,SAAAy+B,EAAAQ,MAGA+C,GAA4B/X,UAAY/M,cAAA,GAAqBgI,YAAchI,cAAA,GAAqBtF,aAAesF,cAAA,GAAqBpX,YAAcoX,cAAA,GAAqB+K,WAAa/K,cAAA,GAAqBkM,SAAWlM,cAAA,GAAqBgL,aAAehL,cAAA,GAAqB+N,eAAiB/N,cAAA,GAAqBwY,UAAYxY,cAAA,GAAqB6f,QAAU7f,cAAA,GAAqBuW,QAAUvW,cAAA,GAAqBuP,QAAUvP,cAAA,IAW5Z8kB,EAAA/X,SAAAxN,IAAA,WAAiD,OAAA1gB,KAAA03B,OAAA,IAAA13B,KAAAknB,QAAAqG,MAIjD0Y,EAAA9c,WAAAzI,IAAA,WAAmD,OAAA1gB,KAAAknB,QAAAiC,YAKnD6c,EAAAt/B,UAAAoD,MAAA,SAAAxE,GAA+C,OAAAtF,KAAAknB,QAAApd,MAAAxE,IAI/C0gC,EAAAt/B,UAAA+wB,WAAA,SAAAnyB,GAAyD,OAAAtF,KAAAknB,QAAAuQ,WAAAnyB,IAKzD0gC,EAAAt/B,UAAA4B,QAAA,SAAAsY,GAA+C5gB,KAAAknB,QAAA5e,QAAAsY,IAU/ColB,EAAAt/B,UAAAmoB,aAAA,SAAAjtB,EAAAC,EAAA+e,EAAAslB,QACA,IAAAA,MAAA,GAEAlmC,KAAAknB,QAAA2H,aAAAjtB,EAAAC,EAAA+e,EAAAslB,EAAAlmC,OAMAgmC,EAAAt/B,UAAAk6B,YAAA,SAAAhgB,GACA5gB,KAAA6uB,aAAA,EAAA7uB,KAAAknB,QAAAqG,KAAA3M,IAMAqlB,EAAApqB,YAAA6E,IAAA,WAAoD,OAAA1gB,KAAA+C,YAAA,EAAA/C,KAAAknB,QAAAqG,KAAA,KAOpDyY,EAAAt/B,UAAA3D,YAAA,SAAAnB,EAAAC,EAAAg/B,EAAAC,GACA,OAAA9gC,KAAAknB,QAAAnkB,YAAAnB,EAAAC,EAAAg/B,EAAAC,IAMAmF,EAAAl8B,WAAA2W,IAAA,WAAmD,OAAA1gB,KAAAknB,QAAAnd,YAKnDk8B,EAAA/Z,UAAAxL,IAAA,WAAkD,OAAA1gB,KAAAknB,QAAAgF,WAIlD8Z,EAAAt/B,UAAAq0B,GAAA,SAAA9a,GACA,OAAAjgB,MAAAigB,GAAAjgB,KAAAihC,WAAAhhB,IAAAjgB,KAAAknB,QAAA6T,GAAA9a,EAAAiH,UAMA8e,EAAAt/B,UAAAu6B,WAAA,SAAAhhB,GACA,OAAAjgB,KAAA8uB,UAAA7O,EAAAtd,KAAAsd,EAAAzb,MAAAyb,EAAAhc,QAMA+hC,EAAAt/B,UAAAooB,UAAA,SAAAnsB,EAAA6B,EAAAP,GACA,OAAAjE,KAAA2C,SACA6/B,EAAAxiC,KAAAwE,SAAA7B,EAAAwjC,cAAAJ,IACArD,EAAAM,QAAAhjC,KAAAiE,SAAAy+B,EAAAQ,OAMA8C,EAAAt/B,UAAA8nB,KAAA,SAAAtH,GAGA,YAFA,IAAAA,MAAA,MAEAA,GAAAlnB,KAAAknB,QAAgClnB,KAChC,IAAAA,KAAA2M,YAAA3M,KAAA2C,KAAA3C,KAAAwE,MAAA0iB,EAAAlnB,KAAAiE,QAMA+hC,EAAAt/B,UAAAg0B,KAAA,SAAAz2B,GACA,OAAAA,GAAAjE,KAAAiE,MAAAjE,KAAA,IAAAA,KAAA2M,YAAA3M,KAAA2C,KAAA3C,KAAAwE,MAAAxE,KAAAknB,QAAAjjB,IAOA+hC,EAAAt/B,UAAAy6B,IAAA,SAAAv/B,EAAAC,GACA,UAAAD,GAAAC,GAAA7B,KAAAknB,QAAAqG,KAA6CvtB,KAC7CA,KAAAwuB,KAAAxuB,KAAAknB,QAAAia,IAAAv/B,EAAAC,KAMAmkC,EAAAt/B,UAAAlG,MAAA,SAAAoB,EAAAC,EAAAukC,GAIA,QAHA,IAAAvkC,MAAA7B,KAAAknB,QAAAqG,WACA,IAAA6Y,OAAA,GAEAxkC,GAAAC,EAAmB,OAAAuhC,EAAA7iB,MAEnB,IAAAhe,EAAAvC,KAAAyC,QAAAb,GAAA4qB,EAAAxsB,KAAAyC,QAAAZ,GACA4c,EAAA2nB,EAAA,EAAA7jC,EAAAq4B,YAAA/4B,GACA1B,EAAAoC,EAAApC,MAAAse,GACAyI,EADA3kB,EAAA6C,KAAAqZ,GACAyI,QAAAia,IAAA5+B,EAAAH,IAAAjC,EAAAqsB,EAAApqB,IAAAjC,GACA,WAAAijC,EAAAlc,EAAA3kB,EAAAkc,QAAA+N,EAAA/N,UAUAunB,EAAAt/B,UAAAuC,QAAA,SAAArH,EAAAC,EAAArB,GACA,OAAAyI,EAAAjJ,KAAAyC,QAAAb,GAAA5B,KAAAyC,QAAAZ,GAAArB,IAKAwlC,EAAAt/B,UAAA4zB,OAAA,SAAAl4B,GACA,QAAAgD,EAAApF,OAAwB,CACxB,IAAAe,EAAAqE,EAAA8hB,QAAAtV,UAAAxP,GACAkD,EAAAvE,EAAAuE,MACAhF,EAAAS,EAAAT,OAEA,KADA8E,IAAAqyB,WAAAnyB,IACgB,YAChB,GAAAhF,GAAA8B,GAAAgD,EAAA47B,OAAuC,OAAA57B,EACvChD,GAAA9B,EAAA,IAQA0lC,EAAAt/B,UAAA2/B,WAAA,SAAAjkC,GACA,IAAArB,EAAAf,KAAAknB,QAAAtV,UAAAxP,GACAkD,EAAAvE,EAAAuE,MACAhF,EAAAS,EAAAT,OACA,OAAU8E,KAAApF,KAAAknB,QAAAuQ,WAAAnyB,WAAAhF,WAOV0lC,EAAAt/B,UAAA4/B,YAAA,SAAAlkC,GACA,MAAAA,EAAiB,OAASgD,KAAA,KAAAE,MAAA,EAAAhF,OAAA,GAC1B,IAAAS,EAAAf,KAAAknB,QAAAtV,UAAAxP,GACAkD,EAAAvE,EAAAuE,MACAhF,EAAAS,EAAAT,OACA,GAAAA,EAAA8B,EAAqB,OAASgD,KAAApF,KAAAknB,QAAApd,MAAAxE,WAAAhF,UAC9B,IAAA8E,EAAApF,KAAAknB,QAAApd,MAAAxE,EAAA,GACA,OAAUF,OAAAE,QAAA,EAAAhF,SAAA8E,EAAA8oB,WAMV8X,EAAAt/B,UAAAjE,QAAA,SAAAL,GAAiD,OAAAyiC,EAAAY,cAAAzlC,KAAAoC,IAEjD4jC,EAAAt/B,UAAA88B,eAAA,SAAAphC,GAA+D,OAAAyiC,EAAApiC,QAAAzC,KAAAoC,IAK/D4jC,EAAAt/B,UAAAkpB,aAAA,SAAAhuB,EAAAC,EAAAc,GACA,IAAA64B,GAAA,EAKA,OAJA35B,EAAAD,GAAkB5B,KAAA6uB,aAAAjtB,EAAAC,EAAA,SAAAuD,GAElB,OADAzC,EAAA2sB,QAAAlqB,EAAAnB,SAAmCu3B,GAAA,IACnCA,IAEAA,GAKAyK,EAAA5Y,QAAA3M,IAAA,WAAgD,OAAA1gB,KAAA2C,KAAA0qB,SAKhD4Y,EAAA9Z,YAAAzL,IAAA,WAAoD,OAAA1gB,KAAA2C,KAAAwpB,aAIpD8Z,EAAA/W,cAAAxO,IAAA,WAAsD,OAAA1gB,KAAA2C,KAAAusB,eAKtD+W,EAAAtM,SAAAjZ,IAAA,WAAiD,OAAA1gB,KAAA2C,KAAAg3B,UAIjDsM,EAAAjF,OAAAtgB,IAAA,WAA+C,OAAA1gB,KAAA2C,KAAAq+B,QAI/CiF,EAAAvO,OAAAhX,IAAA,WAA+C,OAAA1gB,KAAA2C,KAAA+0B,QAQ/CuO,EAAAvV,OAAAhQ,IAAA,WAA+C,OAAA1gB,KAAA2C,KAAA+tB,QAK/CsV,EAAAt/B,UAAAC,SAAA,WACA,GAAA3G,KAAA2C,KAAAC,KAAA2jC,cAAqC,OAAAvmC,KAAA2C,KAAAC,KAAA2jC,cAAAvmC,MACrC,IAAAqN,EAAArN,KAAA2C,KAAA0K,KAGA,OAFArN,KAAAknB,QAAAqG,OACKlgB,GAAA,IAAArN,KAAAknB,QAAAib,gBAAA,KACLqE,EAAAxmC,KAAAiE,MAAAoJ,IAKA24B,EAAAt/B,UAAAumB,eAAA,SAAA3nB,GACA,IAAAxF,EAAAE,KAAA2C,KAAAy1B,aAAAwE,cAAA58B,KAAAknB,QAAA,EAAA5hB,GACA,IAAAxF,EAAe,UAAA2G,MAAA,wDACf,OAAA3G,GASAkmC,EAAAt/B,UAAAinB,WAAA,SAAA/rB,EAAAC,EAAA4kC,EAAAtmC,EAAAC,QACA,IAAAqmC,MAAA/F,EAAAngB,YACA,IAAApgB,MAAA,QACA,IAAAC,MAAAqmC,EAAAtd,YAEA,IAAAud,EAAA1mC,KAAAitB,eAAArrB,GAAAg7B,cAAA6J,EAAAtmC,EAAAC,GACAumC,EAAAD,KAAA9J,cAAA58B,KAAAknB,QAAArlB,GACA,IAAA8kC,MAAApY,SAA8B,SAC9B,QAAAprB,EAAAhD,EAAqBgD,EAAA/C,EAAS+C,IAAO,IAAAnD,KAAA2C,KAAAm6B,YAAA2J,EAAA38B,MAAA3G,GAAAc,OAA0D,SAC/F,UAMA+hC,EAAAt/B,UAAArB,eAAA,SAAAzD,EAAAC,EAAAc,EAAAsB,GACA,GAAAA,IAAAjE,KAAA2C,KAAAm6B,YAAA74B,GAA+C,SAC/C,IAAA9D,EAAAH,KAAAitB,eAAArrB,GAAA0sB,UAAA3rB,GACAvC,EAAAD,KAAAy8B,cAAA58B,KAAAknB,QAAArlB,GACA,QAAAzB,KAAAmuB,UAQAyX,EAAAt/B,UAAAyyB,UAAA,SAAAlZ,GACA,OAAAA,EAAAiH,QAAAqG,KAA2BvtB,KAAA2tB,WAAA3tB,KAAAmpB,WAAAnpB,KAAAmpB,WAAAlJ,EAAAiH,SACnBlnB,KAAA2C,KAAAsrB,kBAAAhO,EAAAtd,OAMRqjC,EAAAt/B,UAAAkgC,MAAA,WACA,IAAA5mC,KAAA2C,KAAAg2B,aAAA34B,KAAAknB,SACK,UAAAmL,WAAA,4BAAAryB,KAAA2C,KAAA,UAAA3C,KAAAknB,QAAAvgB,WAAAnG,MAAA,OACLR,KAAAknB,QAAA5e,QAAA,SAAAlD,GAAwC,OAAAA,EAAAwhC,WAKxCZ,EAAAt/B,UAAAwvB,OAAA,WACA,IAAAhuB,GAAavF,KAAA3C,KAAA2C,KAAA0K,MACb,QAAA01B,KAAA/iC,KAAAwE,MAAA,CACA0D,EAAA1D,MAAAxE,KAAAwE,MACA,MAMA,OAJAxE,KAAAknB,QAAAqG,OACKrlB,EAAAgf,QAAAlnB,KAAAknB,QAAAgP,UACLl2B,KAAAiE,MAAAxD,SACKyH,EAAAjE,MAAAjE,KAAAiE,MAAAyG,IAAA,SAAA0Y,GAA0C,OAAAA,EAAA8S,YAC/ChuB,GAKA89B,EAAA7P,SAAA,SAAAhyB,EAAAiyB,GACA,IAAAA,EAAc,UAAA/D,WAAA,mCACd,IAAApuB,EAAA,KACA,GAAAmyB,EAAAnyB,MAAA,CACA,IAAAm+B,MAAAC,QAAAjM,EAAAnyB,OAAqC,UAAAouB,WAAA,uCACrCpuB,EAAAmyB,EAAAnyB,MAAAyG,IAAAvG,EAAA62B,cAEA,WAAA5E,EAAAzzB,KAAA,CACA,oBAAAyzB,EAAAn3B,KAAuC,UAAAozB,WAAA,6BACvC,OAAAluB,EAAAlF,KAAAm3B,EAAAn3B,KAAAgF,GAEA,IAAAijB,EAAAwZ,EAAAvK,SAAAhyB,EAAAiyB,EAAAlP,SACA,OAAA/iB,EAAAE,SAAA+xB,EAAAzzB,MAAA+S,OAAA0gB,EAAA5xB,MAAA0iB,EAAAjjB,IAGAa,OAAAuc,iBAAA2kB,EAAAt/B,UAAAu/B,GAEA,IAAAY,EAAA,SAAAb,GACA,SAAAa,EAAAlkC,EAAA6B,EAAA0iB,EAAAjjB,GAGA,GAFA+hC,EAAAp/B,KAAA5G,KAAA2C,EAAA6B,EAAA,KAAAP,IAEAijB,EAAmB,UAAAmL,WAAA,oCAEnBryB,KAAAf,KAAAioB,EAGA8e,IAAAa,EAAAl9B,UAAAq8B,GACAa,EAAAngC,UAAA5B,OAAA4Q,OAAAswB,KAAAt/B,WACAmgC,EAAAngC,UAAAiG,YAAAk6B,EAEA,IAAAvK,GAA8BzgB,aAAesF,cAAA,GAAqB+M,UAAY/M,cAAA,IA0C9E,OAxCA0lB,EAAAngC,UAAAC,SAAA,WACA,OAAA3G,KAAA2C,KAAAC,KAAA2jC,cAAuCvmC,KAAA2C,KAAAC,KAAA2jC,cAAAvmC,MACvCwmC,EAAAxmC,KAAAiE,MAAAuI,KAAAC,UAAAzM,KAAAf,QAGAq9B,EAAAzgB,YAAA6E,IAAA,WAAsD,OAAA1gB,KAAAf,MAEtD4nC,EAAAngC,UAAA3D,YAAA,SAAAnB,EAAAC,GAAoE,OAAA7B,KAAAf,KAAAuB,MAAAoB,EAAAC,IAEpEy6B,EAAApO,SAAAxN,IAAA,WAAmD,OAAA1gB,KAAAf,KAAAwB,QAEnDomC,EAAAngC,UAAAg0B,KAAA,SAAAz2B,GACA,OAAAA,GAAAjE,KAAAiE,MAAAjE,KAAA,IAAA6mC,EAAA7mC,KAAA2C,KAAA3C,KAAAwE,MAAAxE,KAAAf,KAAAgF,IAGA4iC,EAAAngC,UAAAw6B,SAAA,SAAAjiC,GACA,OAAAA,GAAAe,KAAAf,KAA4Be,KAC5B,IAAA6mC,EAAA7mC,KAAA2C,KAAA3C,KAAAwE,MAAAvF,EAAAe,KAAAiE,QAGA4iC,EAAAngC,UAAAy6B,IAAA,SAAAv/B,EAAAC,GAIA,YAHA,IAAAD,MAAA,QACA,IAAAC,MAAA7B,KAAAf,KAAAwB,QAEA,GAAAmB,GAAAC,GAAA7B,KAAAf,KAAAwB,OAA8CT,KAC9CA,KAAAkhC,SAAAlhC,KAAAf,KAAAuB,MAAAoB,EAAAC,KAGAglC,EAAAngC,UAAAq0B,GAAA,SAAA9a,GACA,OAAAjgB,KAAAihC,WAAAhhB,IAAAjgB,KAAAf,MAAAghB,EAAAhhB,MAGA4nC,EAAAngC,UAAAwvB,OAAA,WACA,IAAAuC,EAAAuN,EAAAt/B,UAAAwvB,OAAAtvB,KAAA5G,MAEA,OADAy4B,EAAAx5B,KAAAe,KAAAf,KACAw5B,GAGA3zB,OAAAuc,iBAAAwlB,EAAAngC,UAAA41B,GAEAuK,EAvDA,CAwDCb,GAED,SAAAQ,EAAAviC,EAAAshC,GACA,QAAApiC,EAAAc,EAAAxD,OAAA,EAAgC0C,GAAA,EAAQA,IACnCoiC,EAAAthC,EAAAd,GAAAR,KAAA0K,KAAA,IAAAk4B,EAAA,IACL,OAAAA,EAOA,IAAAuB,EAAA,SAAAvY,GAGAvuB,KAAAuuB,WACAvuB,KAAAme,QACAne,KAAA+mC,cAGAC,GAA4B9X,eAAiB/N,cAAA,GAAqB8lB,aAAe9lB,cAAA,GAAqBuL,WAAavL,cAAA,IAEnH2lB,EAAAz/B,MAAA,SAAApH,EAAAinC,GACA,IAAAn8B,EAAA,IAAAo8B,EAAAlnC,EAAAinC,GACA,SAAAn8B,EAAAoT,KAA4B,OAAA2oB,EAAAvmB,MAC5B,IAAA6mB,EAAAC,EAAAt8B,GACAA,EAAAoT,MAAoBpT,EAAA5D,IAAA,4BACpB,IAAArH,EAuVA,SAAAwnC,GACA,IAAAC,EAAAziC,OAAA4Q,OAAA,MACA,OAEA,SAAA8xB,EAAAC,GACA,IAAArgC,KACAqgC,EAAAn/B,QAAA,SAAAlD,GACAkiC,EAAAliC,GAAAkD,QAAA,SAAAvH,GACA,IAAA+T,EAAA/T,EAAA+T,KACAjT,EAAAd,EAAAc,GAEA,GAAAiT,EAAA,CACA,IAAA4yB,EAAAtgC,EAAA43B,QAAAlqB,GAAA8tB,EAAA8E,GAAA,GAAAtgC,EAAAsgC,EAAA,GACAC,EAAAL,EAAAzlC,GAAAyG,QAAA,SAAAlD,GACAw9B,GAAqBx7B,EAAA8C,KAAA4K,EAAA8tB,OACrB,GAAAA,EAAA5D,QAAA55B,IAAwCw9B,EAAA14B,KAAA9E,UAIxC,IAAAlF,EAAAqnC,EAAAE,EAAAviC,KAAA,UAAA4hC,EAAAW,EAAAzI,QAAAsI,EAAA7mC,OAAA,OACA,QAAA0C,EAAA,EAAmBA,EAAAiE,EAAA3G,OAAgB0C,GAAA,GACnC,IAAAykC,EAAAxgC,EAAAjE,EAAA,GAAAggC,KAAA0E,GACA3nC,EAAAie,KAAAjU,KAAA9C,EAAAjE,GAAAokC,EAAAK,EAAA1iC,KAAA,OAAAsiC,EAAAI,IAEA,OAAA1nC,EAtBAsnC,CAAAG,EAAAL,EAAA,IAzVAQ,CAkQA,SAAAV,GACA,IAAAE,OAEA,OADAS,EAWA,SAAA31B,EAAAg1B,EAAAxlC,GACA,aAAAwlC,EAAAzkC,KACA,OAAAykC,EAAAY,MAAA1f,OAAA,SAAAlhB,EAAAggC,GAAqD,OAAAhgC,EAAAsI,OAAA0C,EAAAg1B,EAAAxlC,SAChD,UAAAwlC,EAAAzkC,KACL,QAAAQ,EAAA,GAAsBA,IAAA,CACtB,IAAAgb,EAAA/L,EAAAg1B,EAAAY,MAAA7kC,GAAAvB,GACA,GAAAuB,GAAAikC,EAAAY,MAAAvnC,OAAA,EAAyC,OAAA0d,EACzC4pB,EAAA5pB,EAAAvc,EAAAwD,SAEK,YAAAgiC,EAAAzkC,KAAA,CACL,IAAAqsB,EAAA5pB,IAGA,OAFAunB,EAAA/qB,EAAAotB,GACA+Y,EAAA31B,EAAAg1B,OAAApY,OACArC,EAAAqC,IACK,WAAAoY,EAAAzkC,KAAA,CACL,IAAAslC,EAAA7iC,IAGA,OAFA2iC,EAAA31B,EAAAg1B,OAAAxlC,GAAAqmC,GACAF,EAAA31B,EAAAg1B,OAAAa,OACAtb,EAAAsb,IACK,UAAAb,EAAAzkC,KACL,OAAAgqB,EAAA/qB,IAAA8N,OAAA0C,EAAAg1B,OAAAxlC,IACK,YAAAwlC,EAAAzkC,KAAA,CAEL,IADA,IAAAi5B,EAAAh6B,EACAiuB,EAAA,EAAuBA,EAAAuX,EAAA3mB,IAAgBoP,IAAA,CACvC,IAAAqY,EAAA9iC,IACA2iC,EAAA31B,EAAAg1B,OAAAxL,GAAAsM,GACAtM,EAAAsM,EAEA,OAAAd,EAAAnkC,IACA8kC,EAAA31B,EAAAg1B,OAAAxL,WAEA,QAAA2C,EAAA6I,EAAA3mB,IAAgC8d,EAAA6I,EAAAnkC,IAAgBs7B,IAAA,CAChD,IAAA4J,EAAA/iC,IACAunB,EAAAiP,EAAAuM,GACAJ,EAAA31B,EAAAg1B,OAAAxL,GAAAuM,GACAvM,EAAAuM,EAGA,OAAAxb,EAAAiP,IACK,WAAAwL,EAAAzkC,KACL,OAAAgqB,EAAA/qB,EAAA,KAAAwlC,EAAAp+B,SAnDAoJ,CAAAg1B,EAAA,GAAAhiC,KACAkiC,EAEA,SAAAliC,IAAmB,OAAAkiC,EAAAp9B,SAAA,EACnB,SAAAyiB,EAAA/qB,EAAAC,EAAAiT,GACA,IAAA6X,GAAgB7X,OAAAjT,MAEhB,OADAylC,EAAA1lC,GAAAsI,KAAAyiB,GACAA,EAEA,SAAAob,EAAAK,EAAAvmC,GAA+BumC,EAAA9/B,QAAA,SAAAqkB,GAAgC,OAAAA,EAAA9qB,QA7Q/DylC,CAAAF,IAEA,OAiXA,SAAAtnC,EAAAiL,GACA,QAAA5H,EAAA,EAAAklC,GAAAvoC,GAAiCqD,EAAAklC,EAAA5nC,OAAiB0C,IAAA,CAElD,IADA,IAAAjD,EAAAmoC,EAAAllC,GAAAmlC,GAAApoC,EAAAquB,SAAA9G,KACA7jB,EAAA,EAAmBA,EAAA1D,EAAAie,KAAA1d,OAAuBmD,GAAA,GAC1C,IAAAwB,EAAAlF,EAAAie,KAAAva,GAAAua,EAAAje,EAAAie,KAAAva,EAAA,GACA6jB,EAAAvd,KAAA9E,EAAAiI,OACAi7B,GAAAljC,EAAA47B,QAAA57B,EAAAwnB,qBAA8D0b,GAAA,IAC9D,GAAAD,EAAArJ,QAAA7gB,IAAqCkqB,EAAAn+B,KAAAiU,GAErCmqB,GAAev9B,EAAA5D,IAAA,+BAAAsgB,EAAAviB,KAAA,mCA3XfqjC,CAAAzoC,EAAAiL,GACAjL,GAMAgnC,EAAApgC,UAAA4nB,UAAA,SAAA3rB,GACA,QAAAQ,EAAA,EAAiBA,EAAAnD,KAAAme,KAAA1d,OAAsB0C,GAAA,EAClC,GAAAnD,KAAAme,KAAAhb,IAAAR,EAA4B,OAAA3C,KAAAme,KAAAhb,EAAA,GACjC,aAMA2jC,EAAApgC,UAAAk2B,cAAA,SAAAD,EAAAx8B,EAAAC,QACA,IAAAD,MAAA,QACA,IAAAC,MAAAu8B,EAAAxT,YAGA,IADA,IAAAyS,EAAA57B,KACAmD,EAAAhD,EAAqBy7B,GAAAz4B,EAAA/C,EAAgB+C,IAChCy4B,IAAAtN,UAAAqO,EAAA7yB,MAAA3G,GAAAR,MACL,OAAAi5B,GAGAoL,EAAA9X,cAAAxO,IAAA,WACA,IAAAyc,EAAAn9B,KAAAme,KAAA,GACA,QAAAgf,KAAAxD,UAMAqN,EAAAC,YAAAvmB,IAAA,WACA,QAAAvd,EAAA,EAAiBA,EAAAnD,KAAAme,KAAA1d,OAAsB0C,GAAA,GACvC,IAAAR,EAAA3C,KAAAme,KAAAhb,GACA,IAAAR,EAAAq+B,SAAAr+B,EAAAiqB,mBAAoD,OAAAjqB,IAIpDmkC,EAAApgC,UAAA8hC,WAAA,SAAAvoB,GACA,QAAA9c,EAAA,EAAiBA,EAAAnD,KAAAme,KAAA1d,OAAsB0C,GAAA,EAClC,QAAAS,EAAA,EAAgBA,EAAAqc,EAAA9B,KAAA1d,OAAuBmD,GAAA,EACrC,GAAA5D,KAAAme,KAAAhb,IAAA8c,EAAA9B,KAAAva,GAAqC,SAC5C,UAUAkjC,EAAApgC,UAAAq1B,WAAA,SAAAtpB,EAAA6rB,EAAAzG,QACA,IAAAyG,OAAA,QACA,IAAAzG,MAAA,GAEA,IAAA+H,GAAA5/B,MAgBA,OAfA,SAAAyoC,EAAA3oC,EAAA2tB,GACA,IAAAib,EAAA5oC,EAAA88B,cAAAnqB,EAAAolB,GACA,GAAA6Q,KAAApK,GAAAoK,EAAAna,UACO,OAAAmS,EAAA9+B,KAAA6rB,EAAA/iB,IAAA,SAAAi+B,GAA+C,OAAAA,EAAAzb,mBAEtD,QAAA/pB,EAAA,EAAmBA,EAAArD,EAAAqe,KAAA1d,OAAuB0C,GAAA,GAC1C,IAAAR,EAAA7C,EAAAqe,KAAAhb,GAAAgb,EAAAre,EAAAqe,KAAAhb,EAAA,GACA,IAAAR,EAAAq+B,SAAAr+B,EAAAiqB,qBAAA,GAAAgT,EAAAZ,QAAA7gB,GAAA,CACAyhB,EAAA11B,KAAAiU,GACA,IAAAqd,EAAAiN,EAAAtqB,EAAAsP,EAAA/d,OAAA/M,IACA,GAAA64B,EAAoB,OAAAA,IAKpBiN,CAAAzoC,UAQA8mC,EAAApgC,UAAA2nB,aAAA,SAAAlE,GACA,QAAAhnB,EAAA,EAAiBA,EAAAnD,KAAA+mC,UAAAtmC,OAA2B0C,GAAA,EACvC,GAAAnD,KAAA+mC,UAAA5jC,IAAAgnB,EAAmC,OAAAnqB,KAAA+mC,UAAA5jC,EAAA,GACxC,IAAAylC,EAAA5oC,KAAA6oC,gBAAA1e,GAEA,OADAnqB,KAAA+mC,UAAA78B,KAAAigB,EAAAye,GACAA,GAGA9B,EAAApgC,UAAAmiC,gBAAA,SAAA1e,GAEA,IADA,IAAAyV,EAAA96B,OAAA4Q,OAAA,MAAAozB,IAA6ChpC,MAAAE,KAAA2C,KAAA,KAAAomC,IAAA,OAC7CD,EAAAroC,QAAA,CACA,IAAAmZ,EAAAkvB,EAAAE,QAAAlpC,EAAA8Z,EAAA9Z,MACA,GAAAA,EAAAwuB,UAAAnE,GAAA,CAEA,IADA,IAAA9gB,KACAnB,EAAA0R,EAA6B1R,EAAAvF,KAAUuF,IAAA6gC,IAC9B1/B,EAAAa,KAAAhC,EAAAvF,MACT,OAAA0G,EAAA4B,UAEA,QAAA9H,EAAA,EAAmBA,EAAArD,EAAAqe,KAAA1d,OAAuB0C,GAAA,GAC1C,IAAAR,EAAA7C,EAAAqe,KAAAhb,GACAR,EAAA+0B,QAAA/0B,EAAAiqB,oBAAAjqB,EAAA0K,QAAAuyB,GAAAhmB,EAAAjX,OAAA7C,EAAAqe,KAAAhb,EAAA,GAAAorB,WACAua,EAAA5+B,MAAqBpK,MAAA6C,EAAAy1B,aAAAz1B,OAAAomC,IAAAnvB,IACrBgmB,EAAAj9B,EAAA0K,OAAA,MASA25B,EAAAta,UAAAhM,IAAA,WACA,OAAA1gB,KAAAme,KAAA1d,QAAA,GAMAqmC,EAAApgC,UAAAimB,KAAA,SAAAvJ,GACA,IAAAjgB,EAAAigB,GAAA,EACA,GAAAjgB,GAAAnD,KAAAme,KAAA1d,OAA8B,UAAA4xB,WAAA,cAAAjP,EAAA,iCAC9B,OAAUzgB,KAAA3C,KAAAme,KAAAhb,GAAAgb,KAAAne,KAAAme,KAAAhb,EAAA,KAGV2jC,EAAApgC,UAAAC,SAAA,WACA,IAAAi5B,KAOA,OANA,SAAAnB,EAAA7uB,GACAgwB,EAAA11B,KAAA0F,GACA,QAAAzM,EAAA,EAAmBA,EAAAyM,EAAAuO,KAAA1d,OAAmB0C,GAAA,GAC/B,GAAAy8B,EAAAZ,QAAApvB,EAAAuO,KAAAhb,KAAqCs7B,EAAA7uB,EAAAuO,KAAAhb,IAE5Cs7B,CAAAz+B,MACA4/B,EAAAl1B,IAAA,SAAAkF,EAAAzM,GAEA,IADA,IAAAiE,EAAAjE,GAAAyM,EAAA2e,SAAA,aACAsB,EAAA,EAAqBA,EAAAjgB,EAAAuO,KAAA1d,OAAqBovB,GAAA,EACnCzoB,IAAAyoB,EAAA,SAAAjgB,EAAAuO,KAAA0R,GAAAxiB,KAAA,KAAAuyB,EAAAZ,QAAApvB,EAAAuO,KAAA0R,EAAA,IACP,OAAAzoB,IACGlC,KAAA,OAGHJ,OAAAuc,iBAAAylB,EAAApgC,UAAAsgC,GAEAF,EAAAvmB,MAAA,IAAAumB,GAAA,GAEA,IAAAK,EAAA,SAAAlnC,EAAAinC,GACAlnC,KAAAC,SACAD,KAAAknC,YACAlnC,KAAAge,OAAA,KACAhe,KAAAoC,IAAA,EACApC,KAAA8G,OAAA7G,EAAAmQ,MAAA,kBACA,IAAApQ,KAAA8G,OAAA9G,KAAA8G,OAAArG,OAAA,IAAkDT,KAAA8G,OAAAqE,MAClD,IAAAnL,KAAA8G,OAAA,IAA6B9G,KAAA8G,OAAA+S,WAG7BovB,GAA8B9qB,MAAQgD,cAAA,IAUtC,SAAAkmB,EAAAt8B,GACA,IAAAi9B,KACA,GAAMA,EAAA99B,KAAAg/B,EAAAn+B,UACNA,EAAAo+B,IAAA,MACA,UAAAnB,EAAAvnC,OAAAunC,EAAA,IAAyCrlC,KAAA,SAAAqlC,SAGzC,SAAAkB,EAAAn+B,GACA,IAAAi9B,KACA,GAAMA,EAAA99B,KAAAk/B,EAAAr+B,UACNA,EAAAoT,MAAA,KAAApT,EAAAoT,MAAA,KAAApT,EAAAoT,MACA,UAAA6pB,EAAAvnC,OAAAunC,EAAA,IAAyCrlC,KAAA,MAAAqlC,SAGzC,SAAAoB,EAAAr+B,GAEA,IADA,IAAAq8B,EA4CA,SAAAr8B,GACA,GAAAA,EAAAo+B,IAAA,MACA,IAAA/B,EAAAC,EAAAt8B,GAEA,OADAA,EAAAo+B,IAAA,MAA2Bp+B,EAAA5D,IAAA,yBAC3BigC,EACG,SAAA5wB,KAAAzL,EAAAoT,MAAA,CACH,IAAA6pB,EAlBA,SAAAj9B,EAAAsC,GACA,IAAAogB,EAAA1iB,EAAAm8B,UAAAvkC,EAAA8qB,EAAApgB,GACA,GAAA1K,EAAa,OAAAA,GACb,IAAA0G,KACA,QAAAggC,KAAA5b,EAAA,CACA,IAAA6b,EAAA7b,EAAA4b,GACAC,EAAAC,OAAAvK,QAAA3xB,IAAA,GAA2ChE,EAAAa,KAAAo/B,GAE3C,GAAAjgC,EAAA5I,QAA2BsK,EAAA5D,IAAA,0BAAAkG,EAAA,WAC3B,OAAAhE,EASAmgC,CAAAz+B,IAAAoT,MAAAzT,IAAA,SAAA/H,GAGA,OAFA,MAAAoI,EAAAiT,OAAkCjT,EAAAiT,OAAArb,EAAAg3B,SAClC5uB,EAAAiT,QAAArb,EAAAg3B,UAAgD5uB,EAAA5D,IAAA,oCAClCxE,KAAA,OAAAqG,MAAArG,KAGd,OADAoI,EAAA3I,MACA,GAAA4lC,EAAAvnC,OAAAunC,EAAA,IAA2CrlC,KAAA,SAAAqlC,SAE3Cj9B,EAAA5D,IAAA,qBAAA4D,EAAAoT,KAAA,KA1DAsrB,CAAA1+B,KAEA,GAAAA,EAAAo+B,IAAA,KACO/B,GAASzkC,KAAA,OAAAykC,aAChB,GAAAr8B,EAAAo+B,IAAA,KACO/B,GAASzkC,KAAA,OAAAykC,aAChB,GAAAr8B,EAAAo+B,IAAA,KACO/B,GAASzkC,KAAA,MAAAykC,YAChB,KAAAr8B,EAAAo+B,IAAA,KAEU,MADH/B,EAAAsC,EAAA3+B,EAAAq8B,GAGP,OAAAA,EAGA,SAAAuC,EAAA5+B,GACA,KAAAyL,KAAAzL,EAAAoT,OAA+BpT,EAAA5D,IAAA,yBAAA4D,EAAAoT,KAAA,KAC/B,IAAA9U,EAAAoI,OAAA1G,EAAAoT,MAEA,OADApT,EAAA3I,MACAiH,EAGA,SAAAqgC,EAAA3+B,EAAAq8B,GACA,IAAA3mB,EAAAkpB,EAAA5+B,GAAA9H,EAAAwd,EAMA,OALA1V,EAAAo+B,IAAA,OAC6BlmC,EAA7B,KAAA8H,EAAAoT,KAA6BwrB,EAAA5+B,IACnB,GAEVA,EAAAo+B,IAAA,MAAyBp+B,EAAA5D,IAAA,0BACfxE,KAAA,QAAA8d,MAAAxd,MAAAmkC,QAwGV,SAAAS,EAAA5O,EAAAC,GAAoB,OAAAA,EAAAD,EAKpB,SAAA0O,EAAAL,EAAAliC,GACA,IAAAiE,KAEA,OAEA,SAAAo1B,EAAAr5B,GACA,IAAAgjC,EAAAd,EAAAliC,GACA,MAAAgjC,EAAA3nC,SAAA2nC,EAAA,GAAAtzB,KAA8C,OAAA2pB,EAAA2J,EAAA,GAAAvmC,IAC9CwH,EAAAa,KAAA9E,GACA,QAAAjC,EAAA,EAAmBA,EAAAilC,EAAA3nC,OAAkB0C,IAAA,CACrC,IAAApC,EAAAqnC,EAAAjlC,GACA2R,EAAA/T,EAAA+T,KACAjT,EAAAd,EAAAc,GACAiT,IAAA,GAAAzL,EAAA21B,QAAAn9B,IAA8C48B,EAAA58B,IAX9C48B,CAAAr5B,GACAiE,EAAA85B,KAAA0E,GAgEA,SAAA1B,EAAA3hC,GACA,IAAA4B,EAAAtB,OAAA4Q,OAAA,MACA,QAAAk0B,KAAAplC,EAAA,CACA,IAAAoG,EAAApG,EAAAolC,GACA,IAAAh/B,EAAAi/B,WAA2B,YAC3BzjC,EAAAwjC,GAAAh/B,EAAAyd,QAEA,OAAAjiB,EAGA,SAAA0jC,EAAAtlC,EAAAwE,GACA,IAAA+gC,EAAAjlC,OAAA4Q,OAAA,MACA,QAAArI,KAAA7I,EAAA,CACA,IAAAwlC,EAAAhhC,KAAAqE,GACA,QAAAzE,IAAAohC,EAAA,CACA,IAAAp/B,EAAApG,EAAA6I,GACA,IAAAzC,EAAAi/B,WACY,UAAAxX,WAAA,mCAAAhlB,GADgB28B,EAAAp/B,EAAAyd,QAG5B0hB,EAAA18B,GAAA28B,EAEA,OAAAD,EAGA,SAAAE,EAAAzlC,GACA,IAAA6E,EAAAvE,OAAA4Q,OAAA,MACA,GAAAlR,EAAc,QAAA6I,KAAA7I,EAA0B6E,EAAAgE,GAAA,IAAA68B,EAAA1lC,EAAA6I,IACxC,OAAAhE,EA/PA4/B,EAAA9qB,KAAAuC,IAAA,WAA+C,OAAA1gB,KAAA8G,OAAA9G,KAAAoC,MAE/C+kC,EAAAzgC,UAAAyiC,IAAA,SAAA/qB,GAAgD,OAAApe,KAAAme,MAAAC,IAAApe,KAAAoC,QAAA,IAEhD+kC,EAAAzgC,UAAAS,IAAA,SAAAo+B,GAAgD,UAAA9S,YAAA8S,EAAA,4BAAAvlC,KAAAC,OAAA,OAEhD6E,OAAAuc,iBAAA8lB,EAAAzgC,UAAAuiC,GAgQA,IAAAkB,EAAA,SAAA98B,EAAAlJ,EAAAvB,GAGA5C,KAAAqN,OAIArN,KAAAmE,SAIAnE,KAAA4C,OAEA5C,KAAAupC,OAAA3mC,EAAAukB,MAAAvkB,EAAAukB,MAAA/W,MAAA,QACApQ,KAAAwE,MAAAylC,EAAArnC,EAAA4B,OAEAxE,KAAAmmC,eAAAnmC,KAAAwE,OAIAxE,KAAAo4B,aAAA,KAKAp4B,KAAAoqC,QAAA,KAIApqC,KAAAkvB,cAAA,KAIAlvB,KAAAqtB,UAAAzqB,EAAAob,QAAA,QAAA3Q,GAIArN,KAAAghC,OAAA,QAAA3zB,GAGAg9B,GAA4B1Q,UAAYxY,cAAA,GAAqBgL,aAAehL,cAAA,GAAqBuW,QAAUvW,cAAA,GAAqBuP,QAAUvP,cAAA,IAI1IkpB,EAAA1Q,SAAAjZ,IAAA,WAAiD,OAAA1gB,KAAAqtB,SAKjDgd,EAAAle,YAAAzL,IAAA,WAAoD,OAAA1gB,KAAAqtB,SAAArtB,KAAAkvB,eAIpDmb,EAAA3S,OAAAhX,IAAA,WAA+C,OAAA1gB,KAAAo4B,cAAA0O,EAAAvmB,OAK/C8pB,EAAA3Z,OAAAhQ,IAAA,WAA+C,OAAA1gB,KAAA03B,QAAA13B,KAAA4C,KAAA0nC,MAI/CH,EAAAzjC,UAAAkmB,iBAAA,WACA,QAAAxJ,KAAApjB,KAAAwE,MAA6B,GAAAxE,KAAAwE,MAAA4e,GAAAmnB,WAAgC,SAC7D,UAGAJ,EAAAzjC,UAAAunB,kBAAA,SAAAhO,GACA,OAAAjgB,MAAAigB,GAAAjgB,KAAAo4B,aAAAoQ,WAAAvoB,EAAAmY,eAGA+R,EAAAzjC,UAAAojC,aAAA,SAAAtlC,GACA,OAAAA,GAAAxE,KAAAmmC,aAAoCnmC,KAAAmmC,aAC5B2D,EAAA9pC,KAAAwE,UAUR2lC,EAAAzjC,UAAAgP,OAAA,SAAAlR,EAAA0iB,EAAAjjB,GACA,GAAAjE,KAAAghC,OAAoB,UAAAv6B,MAAA,8CACpB,WAAAu/B,EAAAhmC,UAAA8pC,aAAAtlC,GAAAk8B,EAAA9+B,KAAAslB,GAAAwb,EAAAO,QAAAh/B,KAOAkmC,EAAAzjC,UAAA8jC,cAAA,SAAAhmC,EAAA0iB,EAAAjjB,GAEA,GADAijB,EAAAwZ,EAAA9+B,KAAAslB,IACAlnB,KAAA24B,aAAAzR,GACK,UAAAmL,WAAA,4BAAAryB,KAAAqN,MACL,WAAA24B,EAAAhmC,UAAA8pC,aAAAtlC,GAAA0iB,EAAAwb,EAAAO,QAAAh/B,KAUAkmC,EAAAzjC,UAAAwmB,cAAA,SAAA1oB,EAAA0iB,EAAAjjB,GAGA,GAFAO,EAAAxE,KAAA8pC,aAAAtlC,IACA0iB,EAAAwZ,EAAA9+B,KAAAslB,IACAqG,KAAA,CACA,IAAAvoB,EAAAhF,KAAAo4B,aAAA2D,WAAA7U,GACA,IAAAliB,EAAkB,YAClBkiB,EAAAliB,EAAAgb,OAAAkH,GAEA,IAAAzU,EAAAzS,KAAAo4B,aAAAwE,cAAA1V,GAAA6U,WAAA2E,EAAAngB,OAAA,GACA,OAAA9N,EACA,IAAAuzB,EAAAhmC,KAAAwE,EAAA0iB,EAAAlH,OAAAvN,GAAAiwB,EAAAO,QAAAh/B,IADe,MAOfkmC,EAAAzjC,UAAAiyB,aAAA,SAAAzR,GACA,IAAA7d,EAAArJ,KAAAo4B,aAAAwE,cAAA1V,GACA,IAAA7d,MAAAklB,SAAoC,SACpC,QAAAprB,EAAA,EAAiBA,EAAA+jB,EAAAiC,WAAwBhmB,IACpC,IAAAnD,KAAA88B,YAAA5V,EAAApd,MAAA3G,GAAAc,OAAiD,SACtD,UAKAkmC,EAAAzjC,UAAAuoB,eAAA,SAAAF,GACA,aAAA/uB,KAAAoqC,SAAApqC,KAAAoqC,QAAApL,QAAAjQ,IAAA,GAKAob,EAAAzjC,UAAAo2B,YAAA,SAAA74B,GACA,SAAAjE,KAAAoqC,QAA6B,SAC7B,QAAAjnC,EAAA,EAAiBA,EAAAc,EAAAxD,OAAkB0C,IAAO,IAAAnD,KAAAivB,eAAAhrB,EAAAd,GAAAR,MAA2C,SACrF,UAKAwnC,EAAAzjC,UAAA23B,aAAA,SAAAp6B,GACA,SAAAjE,KAAAoqC,QAA6B,OAAAnmC,EAE7B,IADA,IAAAuqB,EACArrB,EAAA,EAAiBA,EAAAc,EAAAxD,OAAkB0C,IACnCnD,KAAAivB,eAAAhrB,EAAAd,GAAAR,MAEK6rB,GACLA,EAAAtkB,KAAAjG,EAAAd,IAFAqrB,IAAkBA,EAAAvqB,EAAAzD,MAAA,EAAA2C,IAKlB,OAAAqrB,IAAA/tB,OAAA+tB,EAAAkU,EAAAniB,MAAAtc,GAGAkmC,EAAA/3B,QAAA,SAAAqV,EAAAtjB,GACA,IAAAkF,EAAAvE,OAAA4Q,OAAA,MACA+R,EAAAnf,QAAA,SAAA+E,EAAAzK,GAAuC,OAAAyG,EAAAgE,GAAA,IAAA88B,EAAA98B,EAAAlJ,EAAAvB,KAEvC,IAAA6nC,EAAAtmC,EAAAvB,KAAA8nC,SAAA,MACA,IAAArhC,EAAAohC,GAAyB,UAAApY,WAAA,yCAAAoY,EAAA,MACzB,IAAAphC,EAAApK,KAAqB,UAAAozB,WAAA,oCACrB,QAAA0Q,KAAA15B,EAAApK,KAAAuF,MAAoC,UAAA6tB,WAAA,iDAEpC,OAAAhpB,GAGAvE,OAAAuc,iBAAA8oB,EAAAzjC,UAAA2jC,GAIA,IAAAH,EAAA,SAAAviC,GACA3H,KAAA6pC,WAAA/kC,OAAA4B,UAAA8B,eAAA5B,KAAAe,EAAA,WACA3H,KAAAqoB,QAAA1gB,EAAA0gB,SAGAsiB,GAA8BJ,YAAcppB,cAAA,IAE5CwpB,EAAAJ,WAAA7pB,IAAA,WACA,OAAA1gB,KAAA6pC,YAGA/kC,OAAAuc,iBAAA6oB,EAAAxjC,UAAAikC,GAQA,IAAAC,EAAA,SAAAv9B,EAAAy1B,EAAA3+B,EAAAvB,GAGA5C,KAAAqN,OAIArN,KAAAmE,SAIAnE,KAAA4C,OAEA5C,KAAAwE,MAAAylC,EAAArnC,EAAA4B,OAEAxE,KAAA8iC,OACA9iC,KAAA6qC,SAAA,KACA,IAAAzkC,EAAA+/B,EAAAnmC,KAAAwE,OACAxE,KAAA8qC,SAAA1kC,GAAA,IAAAs8B,EAAA1iC,KAAAoG,IAOAwkC,EAAAlkC,UAAAgP,OAAA,SAAAlR,GACA,OAAAA,GAAAxE,KAAA8qC,SAAgC9qC,KAAA8qC,SAChC,IAAApI,EAAA1iC,KAAA8pC,EAAA9pC,KAAAwE,WAGAomC,EAAAx4B,QAAA,SAAAnO,EAAAE,GACA,IAAAkF,EAAAvE,OAAA4Q,OAAA,MAAAotB,EAAA,EAEA,OADA7+B,EAAAqE,QAAA,SAAA+E,EAAAzK,GAAuC,OAAAyG,EAAAgE,GAAA,IAAAu9B,EAAAv9B,EAAAy1B,IAAA3+B,EAAAvB,KACvCyG,GAMAuhC,EAAAlkC,UAAAu0B,cAAA,SAAA2H,GACA,QAAAz/B,EAAA,EAAiBA,EAAAy/B,EAAAniC,OAAgB0C,IAC5B,GAAAy/B,EAAAz/B,GAAAR,MAAA3C,KACE,OAAA4iC,EAAApiC,MAAA,EAAA2C,GAAAuM,OAAAkzB,EAAApiC,MAAA2C,EAAA,IACP,OAAAy/B,GAKAgI,EAAAlkC,UAAA4oB,QAAA,SAAAsT,GACA,QAAAz/B,EAAA,EAAiBA,EAAAy/B,EAAAniC,OAAgB0C,IAC5B,GAAAy/B,EAAAz/B,GAAAR,MAAA3C,KAA2B,OAAA4iC,EAAAz/B,IAMhCynC,EAAAlkC,UAAAm8B,SAAA,SAAA5iB,GACA,OAAAjgB,KAAA6qC,SAAA7L,QAAA/e,IAAA,GAwKA,IAAI8qB,EAAM,SAAAnoC,GAQV,QAAA2F,KADAvI,KAAA4C,QACAA,EAA0B5C,KAAA4C,KAAA2F,GAAA3F,EAAA2F,GAC1BvI,KAAA4C,KAAA6kB,MAAoBgZ,EAAU7+B,KAAAgB,EAAA6kB,OAC9BznB,KAAA4C,KAAAqB,MAAoBw8B,EAAU7+B,KAAAgB,EAAAqB,OAI9BjE,KAAAynB,MAAA0iB,EAAA/3B,QAAApS,KAAA4C,KAAA6kB,MAAAznB,MAIAA,KAAAiE,MAAA2mC,EAAAx4B,QAAApS,KAAA4C,KAAAqB,MAAAjE,MAEA,IAAAgrC,EAAAlmC,OAAA4Q,OAAA,MACA,QAAAu1B,KAAAjrC,KAAAynB,MAAA,CACA,GAAAwjB,KAAAjrC,KAAAiE,MACO,UAAAouB,WAAA4Y,EAAA,sCACP,IAAAtoC,EAAA3C,KAAAynB,MAAAwjB,GAAAC,EAAAvoC,EAAAC,KAAAskB,SAAA,GAAAikB,EAAAxoC,EAAAC,KAAAqB,MACAtB,EAAAy1B,aAAA4S,EAAAE,KACAF,EAAAE,GAAApE,EAAAz/B,MAAA6jC,EAAAlrC,KAAAynB,QACA9kB,EAAAusB,cAAAvsB,EAAAy1B,aAAAlJ,cACAvsB,EAAAynC,QAAA,KAAAe,EAAA,KACAA,EAAAC,EAAAprC,KAAAmrC,EAAA/6B,MAAA,MACA,IAAA+6B,GAAAxoC,EAAAusB,cAAA,QAEA,QAAAmc,KAAArrC,KAAAiE,MAAA,CACA,IAAAqlC,EAAAtpC,KAAAiE,MAAAonC,GAAAC,EAAAhC,EAAA1mC,KAAAigC,SACAyG,EAAAuB,SAAA,MAAAS,GAAAhC,GAAA,IAAAgC,KAAAF,EAAAprC,KAAAsrC,EAAAl7B,MAAA,MAGApQ,KAAAsiC,aAAAtiC,KAAAsiC,aAAAjlB,KAAArd,MACAA,KAAAg7B,aAAAh7B,KAAAg7B,aAAA3d,KAAArd,MAKAA,KAAAurC,YAAAvrC,KAAAynB,MAAAznB,KAAA4C,KAAA8nC,SAAA,OAMA1qC,KAAA2lC,OAAA7gC,OAAA4Q,OAAA,MACA1V,KAAA2lC,OAAA6F,UAAA1mC,OAAA4Q,OAAA,OAsDA,SAAA01B,EAAAjnC,EAAAF,GAEA,IADA,IAAAu3B,KACAr4B,EAAA,EAAiBA,EAAAc,EAAAxD,OAAkB0C,IAAA,CACnC,IAAAkK,EAAApJ,EAAAd,GAAAu3B,EAAAv2B,EAAAF,MAAAoJ,GAAAqpB,EAAAgE,EACA,GAAAA,EACAc,EAAAtxB,KAAAwwB,QAEA,QAAAnyB,KAAApE,EAAAF,MAAA,CACA,IAAAwnC,EAAAtnC,EAAAF,MAAAsE,IACA,KAAA8E,GAAAo+B,EAAA7oC,KAAAukB,OAAAskB,EAAA7oC,KAAAukB,MAAA/W,MAAA,KAAA4uB,QAAA3xB,IAAA,IACWmuB,EAAAtxB,KAAAwsB,EAAA+U,GAGX,IAAA/U,EAAc,UAAAjE,YAAA,uBAAAxuB,EAAAd,GAAA,KAEd,OAAAq4B,EA7DAuP,EAAMrkC,UAAAtB,KAAA,SAAAzC,EAAA6B,EAAA0iB,EAAAjjB,GACN,oBAAAtB,EACKA,EAAA3C,KAAAqE,SAAA1B,OACL,MAAAA,aAAAwnC,GACK,UAAA9X,WAAA,sBAAA1vB,GACL,GAAAA,EAAAwB,QAAAnE,KACK,UAAAqyB,WAAA,yCAAA1vB,EAAA0K,KAAA,KAEL,OAAA1K,EAAA6nC,cAAAhmC,EAAA0iB,EAAAjjB,IAMA8mC,EAAMrkC,UAAAzH,KAAA,SAAAysC,EAAAznC,GACN,IAAAtB,EAAA3C,KAAAynB,MAAAxoB,KACA,WAAA4nC,EAAAlkC,IAAAwjC,aAAAuF,EAAAhJ,EAAAO,QAAAh/B,KAKA8mC,EAAMrkC,UAAAg0B,KAAA,SAAA/3B,EAAA6B,GAEN,MADA,iBAAA7B,IAAgCA,EAAA3C,KAAAiE,MAAAtB,IAChCA,EAAA+S,OAAAlR,IAMAumC,EAAMrkC,UAAA47B,aAAA,SAAAlM,GACN,OAAA4P,EAAA7P,SAAAn2B,KAAAo2B,IAMA2U,EAAMrkC,UAAAs0B,aAAA,SAAA5E,GACN,OAAAsM,EAAAvM,SAAAn2B,KAAAo2B,IAGA2U,EAAMrkC,UAAArC,SAAA,SAAAgJ,GACN,IAAAmuB,EAAAx7B,KAAAynB,MAAApa,GACA,IAAAmuB,EAAe,UAAAnJ,WAAA,sBAAAhlB,GACf,OAAAmuB,GA2JA,IAAAmQ,GAAA,SAAAxnC,EAAAnD,GACA,IAAAghB,EAAAhiB,KAIAA,KAAAmE,SAIAnE,KAAAgB,QACAhB,KAAA4rC,QACA5rC,KAAA6rC,UAEA7qC,EAAAsH,QAAA,SAAAyM,GACAA,EAAAxL,IAAmByY,EAAA4pB,KAAA1hC,KAAA6K,GACnBA,EAAA2U,OAA0B1H,EAAA6pB,OAAA3hC,KAAA6K,MAM1B42B,GAAAjlC,UAAAW,MAAA,SAAA0hB,EAAAphB,QACA,IAAAA,UAEA,IAAAgP,EAAA,IAAAm1B,GAAA9rC,KAAA2H,GAAA,GAEA,OADAgP,EAAAo1B,OAAAhjB,EAAA,KAAAphB,EAAA/F,KAAA+F,EAAA9F,IACA8U,EAAAq1B,UAUAL,GAAAjlC,UAAAulC,WAAA,SAAAljB,EAAAphB,QACA,IAAAA,UAEA,IAAAgP,EAAA,IAAAm1B,GAAA9rC,KAAA2H,GAAA,GAEA,OADAgP,EAAAo1B,OAAAhjB,EAAA,KAAAphB,EAAA/F,KAAA+F,EAAA9F,IACAuhC,EAAAsB,QAAA/tB,EAAAq1B,WAGAL,GAAAjlC,UAAAwlC,SAAA,SAAAnjB,EAAApS,GACA,QAAAxT,EAAA,EAAiBA,EAAAnD,KAAA4rC,KAAAnrC,OAAsB0C,IAAA,CACvC,IAAA4R,EAAA/U,KAAA4rC,KAAAzoC,GACA,GAAAi7B,GAAArV,EAAAhU,EAAAxL,YACAX,IAAAmM,EAAAo3B,WAAApjB,EAAAqjB,cAAAr3B,EAAAo3B,cACAp3B,EAAA4B,WAAA01B,eAAAt3B,EAAA4B,UAAA,CACA,GAAA5B,EAAAzQ,SAAA,CACA,IAAA+E,EAAA0L,EAAAzQ,SAAAykB,GACA,QAAA1f,EAA+B,SAC/B0L,EAAAvQ,MAAA6E,EAEA,OAAA0L,KAKA42B,GAAAjlC,UAAA4lC,WAAA,SAAA/jC,EAAAS,EAAA2N,GACA,QAAAxT,EAAA,EAAiBA,EAAAnD,KAAA6rC,OAAAprC,OAAwB0C,IAAA,CACzC,IAAA4R,EAAA/U,KAAA6rC,OAAA1oC,GACA,QAAA4R,EAAA2U,MAAAsV,QAAAz2B,IACAwM,EAAA4B,YAAA01B,eAAAt3B,EAAA4B,UAIA5B,EAAA2U,MAAAjpB,OAAA8H,EAAA9H,SACA,IAAAsU,EAAA2U,MAAA6iB,WAAAhkC,EAAA9H,SAAAsU,EAAA2U,MAAAlpB,MAAA+H,EAAA9H,OAAA,IAAAuI,IANA,CAQA,GAAA+L,EAAAzQ,SAAA,CACA,IAAA+E,EAAA0L,EAAAzQ,SAAA0E,GACA,QAAAK,EAA6B,SAC7B0L,EAAAvQ,MAAA6E,EAEA,OAAA0L,KAKA42B,GAAAa,YAAA,SAAAroC,GACA,IAAAkF,KACA,SAAAhJ,EAAA0U,GAEA,IADA,IAAA03B,EAAA,MAAA13B,EAAA03B,SAAA,GAAA13B,EAAA03B,SAAAtpC,EAAA,EACUA,EAAAkG,EAAA5I,OAAmB0C,IAAA,CAC7B,IAAAgb,EAAA9U,EAAAlG,GACA,IADA,MAAAgb,EAAAsuB,SAAA,GAAAtuB,EAAAsuB,UACAA,EAAoC,MAEpCpjC,EAAA6B,OAAA/H,EAAA,EAAA4R,GAGA,IAAAia,EAAA,SAAA3hB,GACA,IAAArM,EAAAmD,EAAAF,MAAAoJ,GAAAzK,KAAA0kB,SACAtmB,GAAgBA,EAAAsH,QAAA,SAAAyM,GAChB1U,EAAA0U,EAAAyZ,GAAAzZ,IACAA,EAAA2lB,KAAArtB,KAIA,QAAAA,KAAAlJ,EAAAF,MAAA+qB,EAAA3hB,GACA,IAAA46B,EAAA,SAAA56B,GACA,IAAAq/B,EAAAvoC,EAAAsjB,MAAAklB,GAAA/pC,KAAA0kB,SACAolB,GAAkBA,EAAApkC,QAAA,SAAAyM,GAClB1U,EAAA0U,EAAAyZ,GAAAzZ,IACAA,EAAA3P,KAAAunC,KAIA,QAAAA,KAAAxoC,EAAAsjB,MAAAwgB,IACA,OAAA5+B,GAOAsiC,GAAAiB,WAAA,SAAAzoC,GACA,OAAAA,EAAAwhC,OAAAkH,YACA1oC,EAAAwhC,OAAAkH,UAAA,IAAAlB,GAAAxnC,EAAAwnC,GAAAa,YAAAroC,MAIA,IAAA2oC,IACAC,SAAA,EAAAC,SAAA,EAAAC,OAAA,EAAA/tB,YAAA,EAAAguB,QAAA,EACAC,IAAA,EAAAC,KAAA,EAAAC,IAAA,EAAAC,UAAA,EAAAC,YAAA,EAAAC,QAAA,EACAC,QAAA,EAAAC,MAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EACAC,IAAA,EAAApvB,QAAA,EAAAqvB,QAAA,EAAA1vB,IAAA,EAAA2vB,IAAA,EAAAC,UAAA,EAAAC,IAAA,EACApmC,QAAA,EAAAo5B,GAAA,EAAAiN,KAAA,EAAAC,SAAA,EAAArvB,OAAA,EAAAsvB,OAAA,EAAAC,IAAA,GAIAC,IACAC,MAAA,EAAAP,UAAA,EAAAxY,QAAA,EAAAgZ,QAAA,EAAAjlB,OAAA,EAAAvqB,OAAA,GAIAyvC,IAAgBR,IAAA,EAAAI,IAAA,GAGhBK,GAAA,EAAAC,GAAA,EAEA,SAAAC,GAAAhnB,GACA,OAAAA,EAAA8mB,GAAA,aAAA9mB,EAAA+mB,GAAA,GAGA,IAAAE,GAAA,SAAArsC,EAAA6B,EAAAP,EAAAgrC,EAAAC,EAAApvC,EAAA6H,GACA3H,KAAA2C,OACA3C,KAAAwE,QACAxE,KAAAkvC,QACAlvC,KAAAF,UAVA,EAUA6H,EAAA,KAAAhF,EAAAy1B,cACAp4B,KAAA2H,UACA3H,KAAAknB,WAEAlnB,KAAAiE,QAEAjE,KAAAmvC,YAAAzM,EAAAQ,KAEAljC,KAAAivC,gBAGAD,GAAAtoC,UAAA2nB,aAAA,SAAAjpB,GACA,IAAApF,KAAAF,MAAA,CACA,IAAAE,KAAA2C,KAAqB,SACrB,IAAAm5B,EAAA97B,KAAA2C,KAAAy1B,aAAA2D,WAAA2E,EAAA9+B,KAAAwD,IACA,IAAA02B,EAEK,CACL,IAAA/2B,EAAA5E,EAAAH,KAAA2C,KAAAy1B,aACA,OAAArzB,EAAA5E,EAAAkuB,aAAAjpB,EAAAzC,QACA3C,KAAAF,MAAAK,EACA4E,GAEA,KAPA/E,KAAAF,MAAAE,KAAA2C,KAAAy1B,aAAAwE,cAAAd,GAWA,OAAA97B,KAAAF,MAAAuuB,aAAAjpB,EAAAzC,OAGAqsC,GAAAtoC,UAAAslC,OAAA,SAAAjV,GACA,KAAA/2B,KAAA2H,QAAAknC,IAAA,CACA,IAAAj/B,EAAA+U,EAAA3kB,KAAAknB,QAAAlnB,KAAAknB,QAAAzmB,OAAA,GACAkkB,KAAAqc,SAAApxB,EAAA,oBAAAxM,KAAAuhB,EAAA1lB,SACA0lB,EAAA1lB,KAAAwB,QAAAmP,EAAA,GAAAnP,OAA4CT,KAAAknB,QAAA/b,MAChCnL,KAAAknB,QAAAlnB,KAAAknB,QAAAzmB,OAAA,GAAAkkB,EAAAuc,SAAAvc,EAAA1lB,KAAAuB,MAAA,EAAAmkB,EAAA1lB,KAAAwB,OAAAmP,EAAA,GAAAnP,UAGZ,IAAAymB,EAAAwZ,EAAA9+B,KAAA5B,KAAAknB,SAGA,OAFA6P,GAAA/2B,KAAAF,QACKonB,IAAAlH,OAAAhgB,KAAAF,MAAAi8B,WAAA2E,EAAAngB,OAAA,KACLvgB,KAAA2C,KAAA3C,KAAA2C,KAAA+S,OAAA1V,KAAAwE,MAAA0iB,EAAAlnB,KAAAiE,OAAAijB,GAGA8nB,GAAAtoC,UAAA0oC,aAAA,SAAAC,GACA,QAAAlsC,EAAA,EAAA4D,EAAA/G,KAAAivC,aAA8C9rC,EAAA4D,EAAAtG,OAAoB0C,IAAA,CAClE,IAAAu3B,EAAA3zB,EAAA5D,IACAnD,KAAA2C,KAAA3C,KAAA2C,KAAAssB,eAAAyL,EAAA/3B,MAAA2sC,GAAA5U,EAAA/3B,KAAA0sC,MACA3U,EAAApL,QAAAtvB,KAAAmvC,eACAnvC,KAAAmvC,YAAAzU,EAAAG,SAAA76B,KAAAmvC,aACAnvC,KAAAivC,aAAAvU,EAAAO,cAAAj7B,KAAAivC,iBAKA,IAAAnD,GAAA,SAAAjkC,EAAAF,EAAA8C,GAEAzK,KAAA6H,SAEA7H,KAAA2H,UACA3H,KAAAuvC,OAAA9kC,EACA,IAAA+kC,EAAA9E,EAAA/iC,EAAA+iC,QACA+E,EAAAV,GAAApnC,EAAAogB,qBAAAtd,EAxEA,EAwEA,GAEK+kC,EADL9E,EACK,IAAAsE,GAAAtE,EAAA/nC,KAAA+nC,EAAAlmC,MAAAk+B,EAAAQ,KAAAR,EAAAQ,MAAA,EACLv7B,EAAA+nC,UAAAhF,EAAA/nC,KAAAy1B,aAAAqX,GAEK,IAAAT,GADLvkC,EACK,KAEA5C,EAAA1D,OAAAonC,YAFA,KAAA7I,EAAAQ,KAAAR,EAAAQ,MAAA,OAAAuM,GAGLzvC,KAAAynB,OAAA+nB,GAEAxvC,KAAAyK,KAAA,EACAzK,KAAAub,KAAA5T,EAAAgoC,cACA3vC,KAAA4vC,YAAA,GAGAC,IAA4BzjC,KAAO+U,cAAA,GAAqB2uB,YAAc3uB,cAAA,IA4WtE,SAAAid,GAAArV,EAAAgnB,GACA,OAAAhnB,EAAAqV,SAAArV,EAAAinB,mBAAAjnB,EAAAknB,uBAAAlnB,EAAAmnB,oBAAAtpC,KAAAmiB,EAAAgnB,GAWA,SAAAvhB,GAAAtmB,GACA,IAAAsmB,KACA,QAAAjmB,KAAAL,EAAyBsmB,EAAAjmB,GAAAL,EAAAK,GACzB,OAAAimB,EAMA,SAAA8gB,GAAAvgB,EAAA1qB,GACA,IAAAojB,EAAApjB,EAAAF,OAAAsjB,MACAuH,EAAA,SAAA3hB,GACA,IAAA3K,EAAA+kB,EAAApa,GACA,GAAA3K,EAAAusB,eAAAF,GAAA,CACA,IAAA6Q,KAAAnB,EAAA,SAAA3+B,GACA8/B,EAAA11B,KAAApK,GACA,QAAAqD,EAAA,EAAqBA,EAAArD,EAAA4sB,UAAqBvpB,IAAA,CAC1C,IAAApC,EAAAjB,EAAA6sB,KAAAxpB,GACAR,EAAA5B,EAAA4B,KACAwb,EAAApd,EAAAod,KACA,GAAAxb,GAAA0B,EAA+B,SAC/B,GAAAu7B,EAAAZ,QAAA7gB,GAAA,GAAAsgB,EAAAtgB,GAAmD,WAGnD,OAAAsgB,EAAA/7B,EAAA01B,eAA6CjJ,GAAA,QAA7C,IAGA,QAAA9hB,KAAAoa,EAAA,CACA,IAAA2H,EAAAJ,EAAA3hB,GAEA,GAAA+hB,EAAA,OAAAA,EAAAD,GApZA0gB,GAAAzjC,IAAAsU,IAAA,WACA,OAAA1gB,KAAAynB,MAAAznB,KAAAyK,OAOAqhC,GAAAplC,UAAAypC,OAAA,SAAApnB,GACA,MAAAA,EAAA1kB,SACArE,KAAAowC,YAAArnB,QACG,MAAAA,EAAA1kB,SAAA,CACH,IAAAqlB,EAAAX,EAAAE,aAAA,SACAhlB,EAAAylB,EAAA1pB,KAAAqwC,WAmWA,SAAA3mB,GACA,IAAkC9Z,EAAlCrC,EAAA,6BAAkClE,KAClC,KAAAuG,EAAArC,EAAAnK,KAAAsmB,IAA8BrgB,EAAAa,KAAA0F,EAAA,GAAAA,EAAA,GAAAuM,QAC9B,OAAA9S,EAtWAinC,CAAA5mB,IAAA,KAAAtd,EAAApM,KAAAoM,IACA,SAAAnI,EAAwB,QAAAd,EAAA,EAAgBA,EAAAc,EAAAxD,OAAkB0C,IAAOnD,KAAAuwC,eAAAtsC,EAAAd,IAEjE,GADAnD,KAAAwwC,WAAAznB,GACA,MAAA9kB,EAAwB,QAAA4rB,EAAA,EAAkBA,EAAA5rB,EAAAxD,OAAoBovB,IAAS7vB,KAAAywC,kBAAAxsC,EAAA4rB,GAAAzjB,KAIvE0/B,GAAAplC,UAAA0pC,YAAA,SAAArnB,GACA,IAAA/f,EAAA+f,EAAA9e,UACAmC,EAAApM,KAAAoM,IACA,IAAAA,EAAAzJ,KAAAyJ,EAAAzJ,KAAAusB,cAAA9iB,EAAA8a,QAAAzmB,QAAA2L,EAAA8a,QAAA,GAAAyS,WAAA,mBAAAnjB,KAAAxN,GAAA,CACA,GAAAoD,EAAAzE,QAAAknC,GAaKziC,EAAAzE,QAAAmnC,KACL9lC,IAAAC,QAAA,uBATA,GAJAD,IAAAC,QAAA,yBAIA,mBAAAuN,KAAAxN,IAAAhJ,KAAAyK,MAAAzK,KAAAynB,MAAAhnB,OAAA,GACA,IAAAwE,EAAAmH,EAAA8a,QAAA9a,EAAA8a,QAAAzmB,OAAA,GACAiwC,EAAA3nB,EAAA4nB,kBACA1rC,GACAyrC,GAAA,MAAAA,EAAAlnC,UACAvE,EAAA+7B,QAAA,mBAAAxqB,KAAAvR,EAAAhG,SACW+J,IAAAxI,MAAA,IAKXwI,GAAgBhJ,KAAA4wC,WAAA5wC,KAAA6H,OAAA1D,OAAAlF,KAAA+J,IAChBhJ,KAAA6wC,WAAA9nB,QAEA/oB,KAAA8wC,WAAA/nB,IAOA+iB,GAAAplC,UAAA8pC,WAAA,SAAAznB,GACA,IAAA1b,EAAA0b,EAAAvf,SAAAC,cACAmlC,GAAApmC,eAAA6E,IAuSA,SAAA0b,GACA,QAAAjf,EAAAif,EAAAhf,WAAAgnC,EAAA,KAAmDjnC,EAAOA,IAAAE,YAAA,CAC1D,IAAAqD,EAAA,GAAAvD,EAAAzF,SAAAyF,EAAAN,SAAAC,cAAA,KACA4D,GAAAuhC,GAAApmC,eAAA6E,IAAA0jC,GACAA,EAAAC,YAAAlnC,GACAA,EAAAinC,GACK,MAAA1jC,EACL0jC,EAAAjnC,EACKuD,IACL0jC,EAAA,OAhTsCE,CAAAloB,GACtC,IAAAhU,EAAA/U,KAAA2H,QAAAupC,cAAAlxC,KAAA2H,QAAAupC,aAAAnoB,IAAA/oB,KAAA6H,OAAAqkC,SAAAnjB,EAAA/oB,MACA,GAAA+U,IAAAjM,OAAA2lC,GAAAjmC,eAAA6E,GACArN,KAAA8wC,WAAA/nB,QACG,IAAAhU,KAAAsD,KAAA,CACHtD,KAAAsD,KAAAhU,WAAqC0kB,EAAAhU,EAAAsD,MACrC,IAAA84B,EAAA/kC,EAAApM,KAAAoM,IAAAglC,EAAApxC,KAAA4vC,WACA,GAAA9C,GAAAtkC,eAAA6E,GACA8jC,GAAA,EACA/kC,EAAAzJ,OAAsB3C,KAAA4vC,YAAA,QACjB,IAAA7mB,EAAAhf,WAEL,YADA/J,KAAAqxC,aAAAtoB,GAGA/oB,KAAA+rC,OAAAhjB,GACAooB,GAAenxC,KAAAmxC,KAAA/kC,GACfpM,KAAA4vC,WAAAwB,OAEApxC,KAAAsxC,iBAAAvoB,EAAAhU,IAKA+2B,GAAAplC,UAAA2qC,aAAA,SAAAtoB,GACA,MAAAA,EAAAvf,UAAAxJ,KAAAoM,IAAAzJ,MAAA3C,KAAAoM,IAAAzJ,KAAAusB,eACKlvB,KAAAowC,YAAArnB,EAAAwoB,cAAAC,eAAA,QAML1F,GAAAplC,UAAA2pC,WAAA,SAAAxE,GAEA,IADA,IAAA5nC,EAAAy+B,EAAAQ,KACA//B,EAAA,EAAiBA,EAAA0oC,EAAAprC,OAAmB0C,GAAA,GACpC,IAAA4R,EAAA/U,KAAA6H,OAAAykC,WAAAT,EAAA1oC,GAAA0oC,EAAA1oC,EAAA,GAAAnD,MACA,GAAA+U,EAAA,CACA,GAAAA,EAAAjM,OAAsB,YACtB7E,EAAAjE,KAAA6H,OAAA1D,OAAAF,MAAA8Q,EAAA2lB,MAAAhlB,OAAAX,EAAAvQ,OAAAq2B,SAAA52B,IAEA,OAAAA,GAOA6nC,GAAAplC,UAAA4qC,iBAAA,SAAAvoB,EAAAhU,GACA,IAEAo8B,EAAA9sC,EAAAq2B,EAFA1Y,EAAAhiB,KAGA+U,EAAA3P,MACAf,EAAArE,KAAA6H,OAAA1D,OAAAsjB,MAAA1S,EAAA3P,OACAsyB,OAEK13B,KAAA4wC,WAAAvsC,EAAAqR,OAAAX,EAAAvQ,SACLxE,KAAAqxC,aAAAtoB,GAFAooB,EAAAnxC,KAAAyxC,MAAAptC,EAAA0Q,EAAAvQ,MAAAuQ,EAAAgT,qBAMA2S,EADA16B,KAAA6H,OAAA1D,OAAAF,MAAA8Q,EAAA2lB,MACAhlB,OAAAX,EAAAvQ,OACAxE,KAAAuwC,eAAA7V,IAEA,IAAAgX,EAAA1xC,KAAAoM,IAEA,GAAA/H,KAAAqzB,OACA13B,KAAA8wC,WAAA/nB,QACG,GAAAhU,EAAA48B,WACH3xC,KAAA8wC,WAAA/nB,GACAhU,EAAA48B,WAAA5oB,EAAA/oB,KAAA6H,OAAA1D,QAAAmE,QAAA,SAAAlD,GAAsE,OAAA4c,EAAA4uB,WAAAxrC,SACnE,CACH,IAAAwsC,EAAA78B,EAAA88B,eACA,iBAAAD,EAAwCA,EAAA7oB,EAAA+oB,cAAAF,GACxC,mBAAAA,IAA+CA,IAAA7oB,IAC/C6oB,IAAsBA,EAAA7oB,GACtB/oB,KAAA+xC,WAAAhpB,EAAA6oB,GAAA,GACA5xC,KAAA+rC,OAAA6F,EAAAT,GAEAA,IAAanxC,KAAAmxC,KAAAO,GAAoB1xC,KAAAyK,QACjCiwB,GAAa16B,KAAAywC,kBAAA/V,EAAAgX,IAOb5F,GAAAplC,UAAAqlC,OAAA,SAAArpC,EAAAyuC,EAAAtZ,EAAAC,GAEA,IADA,IAAAxyB,EAAAuyB,GAAA,EACA9O,EAAA8O,EAAAn1B,EAAAsvC,WAAAna,GAAAn1B,EAAAqH,WACA3J,EAAA,MAAA03B,EAAA,KAAAp1B,EAAAsvC,WAAAla,GACA/O,GAAA3oB,EAAkB2oB,IAAA/e,cAAA1E,EAClBtF,KAAAiyC,YAAAvvC,EAAA4C,GACAtF,KAAAmwC,OAAApnB,GACAooB,GAAArE,GAAAtkC,eAAAugB,EAAAvf,SAAAC,gBACOzJ,KAAAmxC,QAEPnxC,KAAAiyC,YAAAvvC,EAAA4C,IAMAwmC,GAAAplC,UAAAwrC,UAAA,SAAA9sC,GAEA,IADA,IAAA+sC,EAAAhB,EACA1yB,EAAAze,KAAAyK,KAA6BgU,GAAA,EAAYA,IAAA,CACzC,IAAA2zB,EAAApyC,KAAAynB,MAAAhJ,GACA+c,EAAA4W,EAAA/jB,aAAAjpB,GACA,GAAAo2B,KAAA2W,KAAA1xC,OAAA+6B,EAAA/6B,UACA0xC,EAAA3W,EACA2V,EAAAiB,GACA5W,EAAA/6B,QAA0B,MAE1B,GAAA2xC,EAAAlD,MAAmB,MAEnB,IAAAiD,EAAe,SACfnyC,KAAAmxC,QACA,QAAAhuC,EAAA,EAAiBA,EAAAgvC,EAAA1xC,OAAkB0C,IAC9BnD,KAAAqyC,WAAAF,EAAAhvC,GAAA,SACL,UAKA2oC,GAAAplC,UAAAkqC,WAAA,SAAAxrC,GACA,GAAAA,EAAAu0B,UAAA35B,KAAA4vC,aAAA5vC,KAAAoM,IAAAzJ,KAAA,CACA,IAAAwY,EAAAnb,KAAAsyC,uBACAn3B,GAAgBnb,KAAAqyC,WAAAl3B,GAEhB,GAAAnb,KAAAkyC,UAAA9sC,GAAA,CACApF,KAAAuyC,aACA,IAAAnmC,EAAApM,KAAAoM,IACAA,EAAAgjC,aAAAhqC,EAAAzC,MACAyJ,EAAAtM,QAAoBsM,EAAAtM,MAAAsM,EAAAtM,MAAAwuB,UAAAlpB,EAAAzC,OAEpB,IADA,IAAAsB,EAAAmI,EAAA+iC,YACAhsC,EAAA,EAAmBA,EAAAiC,EAAAnB,MAAAxD,OAAuB0C,IACnCiJ,EAAAzJ,OAAAyJ,EAAAzJ,KAAAssB,eAAA7pB,EAAAnB,MAAAd,GAAAR,QACEsB,EAAAmB,EAAAnB,MAAAd,GAAA03B,SAAA52B,IAET,OADAmI,EAAA8a,QAAAhd,KAAA9E,EAAAs1B,KAAAz2B,KACA,EAEA,UAMA6nC,GAAAplC,UAAA+qC,MAAA,SAAA9uC,EAAA6B,EAAAguC,GACA,IAAA9b,EAAA12B,KAAAkyC,UAAAvvC,EAAA+S,OAAAlR,IAEA,OADAkyB,GAAW12B,KAAAqyC,WAAA1vC,EAAA6B,GAAA,EAAAguC,GACX9b,GAIAoV,GAAAplC,UAAA2rC,WAAA,SAAA1vC,EAAA6B,EAAA0qC,EAAAsD,GACAxyC,KAAAuyC,aACA,IAAAnmC,EAAApM,KAAAoM,IACAA,EAAAgjC,aAAAzsC,GACAyJ,EAAAtM,MAAAsM,EAAAtM,OAAAsM,EAAAtM,MAAAwuB,UAAA3rB,EAAA6B,GACA,IAAAmD,EAAA,MAAA6qC,GAAA,EAAApmC,EAAAzE,QAAAonC,GAAAyD,GA1SA,EA2SApmC,EAAAzE,SAAA,GAAAyE,EAAA8a,QAAAzmB,SAAiEkH,GA3SjE,GA4SA3H,KAAAynB,MAAAvd,KAAA,IAAA8kC,GAAArsC,EAAA6B,EAAA4H,EAAA+iC,YAAA/iC,EAAA6iC,aAAAC,EAAA,KAAAvnC,IACA3H,KAAAyK,QAKAqhC,GAAAplC,UAAA6rC,WAAA,SAAAxb,GACA,IAAA5zB,EAAAnD,KAAAynB,MAAAhnB,OAAA,EACA,GAAA0C,EAAAnD,KAAAyK,KAAA,CACA,KAAUtH,EAAAnD,KAAAyK,KAAetH,IAAOnD,KAAAynB,MAAAtkB,EAAA,GAAA+jB,QAAAhd,KAAAlK,KAAAynB,MAAAtkB,GAAA6oC,OAAAjV,IAChC/2B,KAAAynB,MAAAhnB,OAAAT,KAAAyK,KAAA,IAIAqhC,GAAAplC,UAAAslC,OAAA,WAGA,OAFAhsC,KAAAyK,KAAA,EACAzK,KAAAuyC,WAAAvyC,KAAAuvC,QACAvvC,KAAAynB,MAAA,GAAAukB,OAAAhsC,KAAAuvC,QAAAvvC,KAAA2H,QAAA8qC,UAGA3G,GAAAplC,UAAAyqC,KAAA,SAAAtvC,GACA,QAAAsB,EAAAnD,KAAAyK,KAAyBtH,GAAA,EAAQA,IAAO,GAAAnD,KAAAynB,MAAAtkB,IAAAtB,EAExC,YADA7B,KAAAyK,KAAAtH,IAKA0sC,GAAAC,WAAApvB,IAAA,WACA1gB,KAAAuyC,aAEA,IADA,IAAAnwC,EAAA,EACAe,EAAAnD,KAAAyK,KAAyBtH,GAAA,EAAQA,IAAA,CAEjC,IADA,IAAA+jB,EAAAlnB,KAAAynB,MAAAtkB,GAAA+jB,QACAtjB,EAAAsjB,EAAAzmB,OAAA,EAAoCmD,GAAA,EAAQA,IACrCxB,GAAA8kB,EAAAtjB,GAAAsqB,SACP/qB,GAAYf,IAEZ,OAAAA,GAGA0pC,GAAAplC,UAAAurC,YAAA,SAAAvvC,EAAApC,GACA,GAAAN,KAAAub,KAAkB,QAAApY,EAAA,EAAgBA,EAAAnD,KAAAub,KAAA9a,OAAsB0C,IACxDnD,KAAAub,KAAApY,GAAAiC,MAAA1C,GAAA1C,KAAAub,KAAApY,GAAA7C,YACON,KAAAub,KAAApY,GAAAf,IAAApC,KAAA8vC,aAIPhE,GAAAplC,UAAAoqC,WAAA,SAAApuC,GACA,GAAA1C,KAAAub,KAAkB,QAAApY,EAAA,EAAgBA,EAAAnD,KAAAub,KAAA9a,OAAsB0C,IACxD,MAAAnD,KAAAub,KAAApY,GAAAf,KAAA,GAAAM,EAAA2B,UAAA3B,EAAAoL,SAAA9N,KAAAub,KAAApY,GAAAiC,QACOpF,KAAAub,KAAApY,GAAAf,IAAApC,KAAA8vC,aAIPhE,GAAAplC,UAAAqrC,WAAA,SAAArvC,EAAAwkB,EAAAliB,GACA,GAAAtC,GAAAwkB,GAAAlnB,KAAAub,KAAuC,QAAApY,EAAA,EAAgBA,EAAAnD,KAAAub,KAAA9a,OAAsB0C,IAAA,CAC7E,SAAAnD,KAAAub,KAAApY,GAAAf,KAAA,GAAAM,EAAA2B,UAAA3B,EAAAoL,SAAA9N,KAAAub,KAAApY,GAAAiC,MACA8hB,EAAAwrB,wBAAA1yC,KAAAub,KAAApY,GAAAiC,OACAJ,EAAA,OACShF,KAAAub,KAAApY,GAAAf,IAAApC,KAAA8vC,cAKThE,GAAAplC,UAAAmqC,WAAA,SAAA8B,GACA,GAAA3yC,KAAAub,KAAkB,QAAApY,EAAA,EAAgBA,EAAAnD,KAAAub,KAAA9a,OAAsB0C,IACxDnD,KAAAub,KAAApY,GAAAiC,MAAAutC,IACO3yC,KAAAub,KAAApY,GAAAf,IAAApC,KAAA8vC,YAAA6C,EAAA1oC,UAAAxJ,OAAAT,KAAAub,KAAApY,GAAA7C,UAOPwrC,GAAAplC,UAAA2lC,eAAA,SAAA11B,GACA,IAAAqL,EAAAhiB,KAEA,GAAA2W,EAAAqoB,QAAA,QACK,OAAAroB,EAAAvG,MAAA,YAAAwiC,KAAA5yC,KAAAqsC,eAAArsC,MAEL,IAAA6yC,EAAAl8B,EAAAvG,MAAA,KACA0iC,EAAA9yC,KAAA2H,QAAAgP,QACAo8B,IAAA/yC,KAAAuvC,QAAAuD,KAAApwC,OAAAC,MAAA3C,KAAAynB,MAAA,GAAA9kB,MACAqwC,IAAAF,IAAAr0B,MAAA,MAAAs0B,EAAA,KACAjzC,EAAA,SAAAqD,EAAAsb,GACA,KAAUtb,GAAA,EAAQA,IAAA,CAClB,IAAA8vC,EAAAJ,EAAA1vC,GACA,OAAA8vC,EAAA,CACA,GAAA9vC,GAAA0vC,EAAApyC,OAAA,MAAA0C,EAA8C,SAC9C,KAAcsb,GAAAu0B,EAAmBv0B,IACtB,GAAA3e,EAAAqD,EAAA,EAAAsb,GAA2B,SACtC,SAEA,IAAAN,EAAAM,EAAA,MAAAA,GAAAs0B,EAAA/wB,EAAAyF,MAAAhJ,GAAA9b,KACAmwC,GAAAr0B,GAAAu0B,EAAAF,EAAA1tC,KAAAqZ,EAAAu0B,GAAArwC,KACA,KACA,IAAAwb,KAAA9Q,MAAA4lC,IAAA,GAAA90B,EAAAorB,OAAAvK,QAAAiU,GACW,SACXx0B,IAGA,UAEA,OAAA3e,EAAA+yC,EAAApyC,OAAA,EAAAT,KAAAyK,OAGAqhC,GAAAplC,UAAA4rC,qBAAA,WACA,IAAAY,EAAAlzC,KAAA2H,QAAAgP,QACA,GAAAu8B,EAAiB,QAAA7zC,EAAA6zC,EAAAz0B,MAA6Bpf,GAAA,EAAQA,IAAA,CACtD,IAAAmuB,EAAA0lB,EAAA9tC,KAAA/F,GAAA4tB,eAAAimB,EAAA3tC,WAAAlG,IAAA4nC,YACA,GAAAzZ,KAAArB,aAAAqB,EAAA2Y,aAA2D,OAAA3Y,EAE3D,QAAAngB,KAAArN,KAAA6H,OAAA1D,OAAAsjB,MAAA,CACA,IAAA9kB,EAAA3C,KAAA6H,OAAA1D,OAAAsjB,MAAApa,GACA,GAAA1K,EAAAwpB,aAAAxpB,EAAAwjC,aAAgD,OAAAxjC,IAIhDmpC,GAAAplC,UAAA6pC,eAAA,SAAA7V,GACA16B,KAAAoM,IAAA6iC,aAAAvU,EAAAG,SAAA76B,KAAAoM,IAAA6iC,eAGAnD,GAAAplC,UAAA+pC,kBAAA,SAAA/V,EAAAnW,GACA,QAAA9F,EAAAze,KAAAyK,KAA6BgU,GAAA,EAAYA,IAAA,CACzC,IAAA2J,EAAApoB,KAAAynB,MAAAhJ,GAIA,GAHA2J,EAAA6mB,aAAA1uC,YAAAm6B,IACA,EAAqBtS,EAAA6mB,aAAAvU,EAAAO,cAAA7S,EAAA6mB,cACX7mB,EAAA+mB,YAAAzU,EAAAO,cAAA7S,EAAA+mB,aACV/mB,GAAA7D,EAAwB,QAIxBzf,OAAAuc,iBAAAyqB,GAAAplC,UAAAmpC,IAsFA,IAAAsD,GAAA,SAAA1rB,EAAAxjB,GAGAjE,KAAAynB,YAGAznB,KAAAiE,aA+JA,SAAAmvC,GAAAlrC,GACA,IAAAmB,KACA,QAAAgE,KAAAnF,EAAA,CACA,IAAAqf,EAAArf,EAAAmF,GAAAzK,KAAA2kB,MACAA,IAAgBle,EAAAgE,GAAAka,GAEhB,OAAAle,EAGA,SAAA7G,GAAAmF,GAEA,OAAAA,EAAA+T,UAAAsB,OAAAtB,SAlKAy3B,GAAAzsC,UAAA2sC,kBAAA,SAAA5Z,EAAA9xB,EAAAwiB,GACA,IAAAnI,EAAAhiB,UACA,IAAA2H,UAEAwiB,IAAgBA,EAAA3nB,GAAAmF,GAAA2rC,0BAEhB,IAAAlnC,EAAA+d,EAAA2e,EAAA,KA4BA,OA3BArP,EAAAnxB,QAAA,SAAAlD,GACA,GAAA0jC,GAAA1jC,EAAAnB,MAAAxD,OAAA,CACAqoC,IAAoBA,MAEpB,IADA,IAAAyK,EAAA,EAAAC,EAAA,EACAD,EAAAzK,EAAAroC,QAAA+yC,EAAApuC,EAAAnB,MAAAxD,QAAA,CACA,IAAA0d,EAAA/Y,EAAAnB,MAAAuvC,GACA,GAAAxxB,EAAA/d,MAAAka,EAAAxb,KAAA0K,MAAA,CACA,IAAA8Q,EAAA4c,GAAA+N,EAAAyK,MAAA,IAAAp1B,EAAAxb,KAAAC,KAAA6wC,SAA0E,MAC1EF,GAAA,EAAkBC,SAF0BA,IAI5C,KAAAD,EAAAzK,EAAAroC,QACA2L,EAAA08B,EAAA39B,MACA29B,EAAA39B,MAEA,KAAAqoC,EAAApuC,EAAAnB,MAAAxD,QAAA,CACA,IAAA6L,EAAAlH,EAAAnB,MAAAuvC,KACAE,EAAA1xB,EAAA2xB,cAAArnC,EAAAlH,EAAAu0B,SAAAhyB,GACA+rC,IACA5K,EAAA5+B,KAAAoC,EAAAF,GACAA,EAAA4kC,YAAA0C,EAAA3qB,KACA3c,EAAAsnC,EAAA9B,YAAA8B,EAAA3qB,MAIA3c,EAAA4kC,YAAAhvB,EAAA4xB,cAAAxuC,EAAAuC,MAGAwiB,GASAgpB,GAAAzsC,UAAAktC,cAAA,SAAAxuC,EAAAuC,QACA,IAAAA,UAEA,IAAA5G,EACAoyC,GAAAU,WAAArxC,GAAAmF,GAAA3H,KAAAynB,MAAAriB,EAAAzC,KAAA0K,MAAAjI,IACA2jB,EAAAhoB,EAAAgoB,IACA6oB,EAAA7wC,EAAA6wC,WACA,GAAAA,EAAA,CACA,GAAAxsC,EAAAsyB,OACO,UAAArF,WAAA,gDACP1qB,EAAAmsC,UACOnsC,EAAAmsC,UAAA1uC,EAAAwsC,EAAAjqC,GAEA3H,KAAAqzC,kBAAAjuC,EAAA8hB,QAAAvf,EAAAiqC,GAEP,OAAA7oB,GAGAoqB,GAAAzsC,UAAAqtC,sBAAA,SAAA3uC,EAAAuC,QACA,IAAAA,UAGA,IADA,IAAAohB,EAAA/oB,KAAA4zC,cAAAxuC,EAAAuC,GACAxE,EAAAiC,EAAAnB,MAAAxD,OAAA,EAAqC0C,GAAA,EAAQA,IAAA,CAC7C,IAAA4B,EAAA/E,KAAA2zC,cAAAvuC,EAAAnB,MAAAd,GAAAiC,EAAAu0B,SAAAhyB,GACA5C,KACAA,EAAA6sC,YAAA7sC,EAAAgkB,KAAAioB,YAAAjoB,GACAA,EAAAhkB,EAAAgkB,KAGA,OAAAA,GAGAoqB,GAAAzsC,UAAAitC,cAAA,SAAAjZ,EAAA1c,EAAArW,QACA,IAAAA,UAEA,IAAA4f,EAAAvnB,KAAAiE,MAAAy2B,EAAA/3B,KAAA0K,MACA,OAAAka,GAAA4rB,GAAAU,WAAArxC,GAAAmF,GAAA4f,EAAAmT,EAAA1c,KAOAm1B,GAAAU,WAAA,SAAArxC,EAAAq0B,EAAAmd,GAGA,QAFA,IAAAA,MAAA,MAEA,iBAAAnd,EACK,OAAS9N,IAAAvmB,EAAAgvC,eAAA3a,IACd,SAAAA,EAAAxyB,SACK,OAAS0kB,IAAA8N,GACd,IAAAod,EAAApd,EAAA,GAAAqd,EAAAD,EAAAjV,QAAA,KACAkV,EAAA,IACAF,EAAAC,EAAAzzC,MAAA,EAAA0zC,GACAD,IAAAzzC,MAAA0zC,EAAA,IAEA,IAAAtC,EAAA,KAAA7oB,EAAAirB,EAAAxxC,EAAA2xC,gBAAAH,EAAAC,GAAAzxC,EAAAmZ,cAAAs4B,GACAzvC,EAAAqyB,EAAA,GAAA12B,EAAA,EACA,GAAAqE,GAAA,iBAAAA,GAAA,MAAAA,EAAAH,WAAA+9B,MAAAC,QAAA79B,GAEA,QAAA6I,KADAlN,EAAA,EACAqE,EAA6B,SAAAA,EAAA6I,GAAA,CAC7B,IAAA+mC,EAAA/mC,EAAA2xB,QAAA,KACAoV,EAAA,EAAwBrrB,EAAAsrB,eAAAhnC,EAAA7M,MAAA,EAAA4zC,GAAA/mC,EAAA7M,MAAA4zC,EAAA,GAAA5vC,EAAA6I,IACZ0b,EAAAurB,aAAAjnC,EAAA7I,EAAA6I,IAGZ,QAAAlK,EAAAhD,EAAqBgD,EAAA0zB,EAAAp2B,OAAsB0C,IAAA,CAC3C,IAAA2G,EAAA+sB,EAAA1zB,GACA,OAAA2G,EAAA,CACA,GAAA3G,EAAA0zB,EAAAp2B,OAAA,GAAA0C,EAAAhD,EACS,UAAAkyB,WAAA,0DACT,OAActJ,MAAA6oB,WAAA7oB,GAEd,IAAAhoB,EAAAoyC,GAAAU,WAAArxC,EAAAsH,EAAAkqC,GACAvyB,EAAA1gB,EAAAgoB,IACAwrB,EAAAxzC,EAAA6wC,WAEA,GADA7oB,EAAAioB,YAAAvvB,GACA8yB,EAAA,CACA,GAAA3C,EAAyB,UAAAvf,WAAA,0BACzBuf,EAAA2C,GAIA,OAAUxrB,MAAA6oB,eAMVuB,GAAAvG,WAAA,SAAAzoC,GACA,OAAAA,EAAAwhC,OAAA6O,gBACArwC,EAAAwhC,OAAA6O,cAAA,IAAArB,GAAAnzC,KAAAy0C,gBAAAtwC,GAAAnE,KAAA00C,gBAAAvwC,MAMAgvC,GAAAsB,gBAAA,SAAAtwC,GACA,IAAAkF,EAAA+pC,GAAAjvC,EAAAsjB,OAEA,OADApe,EAAApK,OAAqBoK,EAAApK,KAAA,SAAAmG,GAAgC,OAAAA,EAAAnG,OACrDoK,GAKA8pC,GAAAuB,gBAAA,SAAAvwC,GACA,OAAAivC,GAAAjvC,EAAAF,2CC5xGA,IAAA0wC,EAAWv1C,EAAQ,QACnB0yB,EAAY1yB,EAAQ,QAEpBL,EAAA8H,YACA9H,EAAAsY,cA0DA,SAAArO,EAAArB,GACA,IAKA0B,EACAsR,EACAf,EACAvM,EARAunC,EAAAjtC,MACAktC,EAAAD,EAAAC,QAAAF,EAAAr3B,gBACAw3B,EAAAF,EAAAE,OACAr0C,EAAAo0C,EAAAp0C,OACA6E,GAAA,EAMA,OAAAwvC,QAAAlsC,IAAAksC,IACAA,EAAAC,GAGA,oBAAA/rC,EACA,MAAA8oB,EAAA,wCAAA9oB,GAGA2R,GAAgBhN,UAAA,EAAA2C,SAAA,KAAAtH,UAChBK,GAAYsE,UAAA,EAAA2C,SAAA,KAAAtH,UAEZ,OAAA1D,EAAA7E,GACA4M,EAAAwnC,EAAAvvC,GAEAqvC,EAAAp7B,YAAAlM,MAIAuM,EAAA/S,EAAAwG,EAAArE,EAAArB,IACA2I,SAAAjD,EAEAuM,EAAAjM,UAAAgN,EAAAhN,YACAgN,EAAAf,GAGAA,EAAAjM,UAAAtE,EAAAsE,YACAgN,EAAAtR,EACAA,EAAAuQ,IAIAe,EAAArK,WACAjH,EAAAsR,cAGA,OAAAtR,GAvGAtK,EAAAme,iBA2GA,SAAA7P,EAAAmlB,GACAmiB,EAAAz3B,iBAAA7P,EAAAmlB,IA3GAzzB,EAAAue,cA+GA,WACA,OAAAq3B,EAAAr3B,iBA/GAve,EAAAi2C,cAmHA,SAAA3nC,EAAAuP,GACA,IACAtT,EADAoB,EAAA2C,EAGAuP,KACAlS,MACA2C,GAAAuP,GAGA,IAAAtT,KAAAoB,EACAiqC,EAAAj4B,gBAAAhS,EAAApB,IAAoCiN,aAAAjN,KA3HpC2rC,EAAAvuC,UAAAmG,QA2JA,SAAA7D,GACA,IACA4Q,EACAs7B,EAFA/oC,EAAAnM,KAAAmM,MAIA,QAAAnD,EAAA,OAEA4Q,EAAAzN,IAAA1L,OAAA,IACAy0C,EAAAt7B,EAAA1N,SAAA0N,EAAA1N,SAAAzL,OAAA,KAEA,SAAAy0C,EAAAvyC,KACAuyC,EAAAlsC,SAEA4Q,EAAA1N,SAAAhC,MAA2BvH,KAAA,OAAAqG,WAvK3BisC,EAAAvuC,UAAAiR,WAoIA,SAAA3O,EAAAqE,GACArN,KAAA8M,SAAAO,GACArN,KAAA6M,QAAA7D,GACAhJ,KAAAuM,aAtIA0oC,EAAAvuC,UAAA4Q,eAyIA,SAAA2I,EAAA5S,GACA,IAAAlB,EAAAnM,KAAAmM,MACAyN,EAAAzN,IAAA1L,OAAA,GACA00C,EAAAl1B,EAAAhU,SAAAC,SACA9G,EAAAiI,GAEA1K,KAAA,UACAsxC,QAAA,OACAmB,YAAqBvpC,WAAAwB,IACrBnB,SAAAipC,GAEAA,EAEAv7B,EAAA1N,SAAA0N,EAAA1N,SAAAwD,OAAAtK,IArJA6vC,EAAAvuC,UAAAoG,SAyKA,SAAAO,GACA,IAAAlB,EAAAnM,KAAAmM,MACAN,EAAA7L,KAAA2H,QAAAgE,YAAA0B,EACAuM,EAAAzN,IAAA1L,OAAA,GACAqJ,GACAnH,KAAA,UACAsxC,QAAA,OACAmB,YAAiBvpC,eACjBK,aAGA0N,EAAA1N,SAAAhC,KAAAJ,GACAqC,EAAAjC,KAAAJ,IApLAmrC,EAAAvuC,UAAA6F,UAuLA,WACAvM,KAAAmM,MAAAhB,OAvLA8pC,EAAAvuC,UAAAwT,cAAAm7B,EACAJ,EAAAvuC,UAAAyT,SAAAk7B,EACAJ,EAAAvuC,UAAA0T,OAwLA,WACA,UAvLA,IAAA26B,EAAA,QAGA,SAAAluC,EAAAwG,EAAArE,EAAArB,GACA,IAGA0B,EAHArE,EAAA2vC,EAAA93B,cAEAi4B,GADAntC,OACAmtC,OAGA,oBAAAznC,EACA,MAAAykB,EAAA,uCAAAzkB,GAGA,IAAAsnC,EAAAp7B,YAAAlM,GACA,MAAAykB,EAAA,2CAAAzkB,GAGA,oBAAArE,EACA,MAAA8oB,EAAA,wCAAA9oB,GAeA,GAZA,OAAA8rC,QAAAlsC,IAAAksC,IACAA,EAAAC,GAGAJ,EAAA93B,WAAkBxG,UAAA4+B,EAAAtpC,YAAAmpC,IAElBzrC,EAAAsrC,EAAA9tC,UAAAwG,EAAArE,GAAA,GAEA2rC,EAAA93B,UAAA7X,GAIAqE,EAAAmR,YACA,MAAAnR,EAAAmR,YAGA,OACA7M,UAAAtE,EAAAsE,UACA2C,SAAAjH,EAAAiH,SACAtH,MAAAK,EAAA+D,QAAAnB,SAAAC,UA8EA,SAAA+oC,EAAAttC,GACA3H,KAAA2H,UACA3H,KAAAiM,UAAmBC,aACnBlM,KAAAmM,OAAAnM,KAAAiM,UAiEA,SAAAopC,4BC9MA,MAAAjvC,SAAOA,GAAchH,EAAQ,SAC7Bk2C,SACAA,EAAArvC,OACAA,GACI7G,EAAQ,QAKZN,EAAAC,cACAC,YAAA2I,GACA3H,KAAA2H,WAAAvB,EAGApH,KAAA6D,EAAA0yC,EAAA/tC,GACA,MAAAD,GAAAguC,GAAA,IAAAz1C,MAAA,UACA,GAAAE,KAAA2H,QAAAd,UAAA,CACA,MAAAO,EAAApH,KAAA2H,QAAAd,UAAAhE,EAAA0E,GACA,MAAAH,OAAAvE,IACA2E,GAAA,EACA3E,EAAAuE,GAIA,OAAAG,EAMA,qBACAvH,KAAA2H,QAAA6tC,WACAvvC,EAAAsB,GAAA,GACA,MACAC,EAAA3E,EAAAoD,EAAApD,GAAA,IACA,kBAVA,eACA2E,EAAA3E,EAAAoD,EAAApD,GAAA,IACA,gBAWA7D,WAAAy2C,GACA,uBAAAA,EAAA,kBAGAz2C,KAAAgc,GACA,OAAAA,EAGAhc,QAAAC,EAAAmpB,EAAAstB,EAAA33B,GACA,OAAA/d,KAAA2H,QAAAguC,UACA,KACAvtB,EACA,QACApoB,KAAA2H,QAAAiuC,aACA73B,EAAA8hB,KAAA6V,GACA,KACAz2C,EACA,MACAmpB,EACA,MAGA,KAAAA,EAAA,IAAAnpB,EAAA,MAAAmpB,EAAA,MAGAppB,KACA,OAAAgB,KAAA2H,QAAAkuC,MAAA,mBAGA72C,KAAAqf,EAAAc,EAAAhf,GACA,MAAAwC,EAAAwc,EAAA,UAEA,UAAAxc,GADAwc,GAAA,IAAAhf,EAAA,WAAAA,EAAA,QACA,MAAAke,EAAA,KAAA1b,EAAA,MAGA3D,SAAAC,GACA,aAAAA,EAAA,UAGAD,SAAAqgB,GACA,iBACAA,EAAA,kBACA,+BACArf,KAAA2H,QAAAkuC,MAAA,SACA,KAGA72C,UAAAC,GACA,YAAAA,EAAA,SAGAD,MAAA4f,EAAAP,GAGA,OAFAA,MAAA,UAAAA,EAAA,YAEA,qBAEAO,EACA,aACAP,EACA,aAGArf,SAAAkoB,GACA,eAAAA,EAAA,UAGAloB,UAAAkoB,EAAA4uB,GACA,MAAAnzC,EAAAmzC,EAAAl3B,OAAA,UAIA,OAHAk3B,EAAAh3B,MACA,IAAAnc,EAAA,WAAAmzC,EAAAh3B,MAAA,KACA,IAAAnc,EAAA,KACAukB,EAAA,KAAAvkB,EAAA,MAIA3D,OAAAC,GACA,iBAAAA,EAAA,YAGAD,GAAAC,GACA,aAAAA,EAAA,QAGAD,SAAAC,GACA,eAAAA,EAAA,UAGAD,KACA,OAAAgB,KAAA2H,QAAAkuC,MAAA,eAGA72C,IAAAC,GACA,cAAAA,EAAA,SAGAD,KAAAE,EAAAC,EAAAF,GAEA,WADAC,EAAAo2C,EAAAt1C,KAAA2H,QAAAouC,SAAA/1C,KAAA2H,QAAAquC,QAAA92C,IAEA,OAAAD,EAEA,IAAAmI,EAAA,YAAAnB,EAAA/G,GAAA,IAKA,OAJAC,IACAiI,GAAA,WAAAjI,EAAA,KAEAiI,GAAA,IAAAnI,EAAA,OAIAD,MAAAE,EAAAC,EAAAF,GAEA,WADAC,EAAAo2C,EAAAt1C,KAAA2H,QAAAouC,SAAA/1C,KAAA2H,QAAAquC,QAAA92C,IAEA,OAAAD,EAGA,IAAAmI,EAAA,aAAAlI,EAAA,UAAAD,EAAA,IAKA,OAJAE,IACAiI,GAAA,WAAAjI,EAAA,KAEAiI,GAAApH,KAAA2H,QAAAkuC,MAAA,SAIA72C,KAAAC,GACA,OAAAA,0BCjKA,MAAAmH,SAAOA,GAAchH,EAAQ,SAC7B+b,MAAOA,GAAW/b,EAAQ,SAC1B62C,MACAA,EAAAC,WACAA,EAAAjwC,OACAA,GACI7G,EAAQ,QAKZN,EAAAC,cAAA0G,EACAzG,YAAA2I,GACA3H,KAAA8G,UACA9G,KAAA8G,OAAAmX,MAAAnZ,OAAA4Q,OAAA,MACA1V,KAAA2H,WAAAvB,EACApG,KAAAgB,MAAAma,EAAAg7B,OAEAn2C,KAAA2H,QAAAyuC,SACAp2C,KAAAgB,MAAAma,EAAAi7B,SACKp2C,KAAA2H,QAAA0uC,MACLr2C,KAAAgB,MAAAma,EAAAk7B,KAOAr1C,mBACA,OAAAma,EAMAnc,WAAAsH,EAAAqB,GAEA,OADA,IAAAlC,EAAAkC,GACAX,IAAAV,GAMAtH,IAAAsH,GAKA,OAJAA,IACA2C,QAAA,iBACAA,QAAA,cAEAjJ,KAAAsH,MAAAhB,GAAA,GAMAtH,MAAAsH,EAAA8F,GAEA,IAAA+R,EACAiB,EACAk3B,EACAC,EACArd,EACApf,EACA08B,EACAC,EACAC,EACAxC,EACA/wC,EACAoG,EACAotC,EACAC,EACAC,EACAC,EAEA,IAlBAxwC,IAAA2C,QAAA,aAkBA3C,GAYA,IAVAgwC,EAAAt2C,KAAAgB,MAAA+1C,QAAA3zC,KAAAkD,MACAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACA61C,EAAA,GAAA71C,OAAA,GACAT,KAAA8G,OAAAoD,MACAvH,KAAA,WAMA2zC,EAAAt2C,KAAAgB,MAAA6B,KAAAO,KAAAkD,GAAA,CACA,MAAA0wC,EAAAh3C,KAAA8G,OAAA9G,KAAA8G,OAAArG,OAAA,GACA6F,IAAA0E,UAAAsrC,EAAA,GAAA71C,QAEAu2C,GAAA,cAAAA,EAAAr0C,KACAq0C,EAAA/3C,MAAA,KAAAq3C,EAAA,GAAAW,aAEAX,IAAA,GAAArtC,QAAA,UAAqC,IACrCjJ,KAAA8G,OAAAoD,MACAvH,KAAA,OACAu0C,eAAA,WACAj4C,KAAAe,KAAA2H,QAAAyuC,SAEAE,EADAL,EAAAK,EAAA,cAQA,GAAAA,EAAAt2C,KAAAgB,MAAAm2C,OAAA/zC,KAAAkD,GACAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACAT,KAAA8G,OAAAoD,MACAvH,KAAA,OACA4E,KAAA+uC,EAAA,GAAAA,EAAA,GAAAn6B,OAAAm6B,EAAA,GACAr3C,KAAAq3C,EAAA,cAMA,GAAAA,EAAAt2C,KAAAgB,MAAAwd,QAAApb,KAAAkD,GACAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACAT,KAAA8G,OAAAoD,MACAvH,KAAA,UACA8b,MAAA63B,EAAA,GAAA71C,OACAxB,KAAAq3C,EAAA,UAMA,IAAAA,EAAAt2C,KAAAgB,MAAAo2C,QAAAh0C,KAAAkD,MACAwT,GACAnX,KAAA,QACAic,OAAAs3B,EAAAI,EAAA,GAAArtC,QAAA,oBACA6V,MAAAw3B,EAAA,GAAArtC,QAAA,iBAAAmH,MAAA,UACA4O,MAAAs3B,EAAA,GAAAA,EAAA,GAAArtC,QAAA,UAAAmH,MAAA,WAGAwO,OAAAne,SAAAqZ,EAAAgF,MAAAre,OARA,CAWA,IAFA6F,IAAA0E,UAAAsrC,EAAA,GAAA71C,QAEA0C,EAAA,EAAqBA,EAAA2W,EAAAgF,MAAAre,OAAuB0C,IAC5C,YAAAqT,KAAAsD,EAAAgF,MAAA3b,IACA2W,EAAAgF,MAAA3b,GAAA,QACa,aAAAqT,KAAAsD,EAAAgF,MAAA3b,IACb2W,EAAAgF,MAAA3b,GAAA,SACa,YAAAqT,KAAAsD,EAAAgF,MAAA3b,IACb2W,EAAAgF,MAAA3b,GAAA,OAEA2W,EAAAgF,MAAA3b,GAAA,KAIA,IAAAA,EAAA,EAAqBA,EAAA2W,EAAAkF,MAAAve,OAAuB0C,IAC5C2W,EAAAkF,MAAA7b,GAAA+yC,EAAAp8B,EAAAkF,MAAA7b,GAAA2W,EAAA8E,OAAAne,QAGAT,KAAA8G,OAAAoD,KAAA4P,QAOA,GAAAw8B,EAAAt2C,KAAAgB,MAAAud,GAAAnb,KAAAkD,GACAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACAT,KAAA8G,OAAAoD,MACAvH,KAAA,YAMA,GAAA2zC,EAAAt2C,KAAAgB,MAAAke,WAAA9b,KAAAkD,GACAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QAEAT,KAAA8G,OAAAoD,MACAvH,KAAA,qBAGA2zC,IAAA,GAAArtC,QAAA,eAKAjJ,KAAAsH,MAAAgvC,EAAAlqC,GAEApM,KAAA8G,OAAAoD,MACAvH,KAAA,wBAOA,GAAA2zC,EAAAt2C,KAAAgB,MAAA2Y,KAAAvW,KAAAkD,GAAA,CAsBA,IArBAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QAIA+1C,GACA7zC,KAAA,aACAwc,QAJAy3B,GADAL,EAAAD,EAAA,IACA71C,OAAA,EAKAN,MAAAy2C,GAAAL,EAAA,GACAn3B,OAAA,GAGApf,KAAA8G,OAAAoD,KAAAssC,GAKAC,KACAt4B,GAAA,EACAw4B,GAJAL,IAAA,GAAAx2C,MAAAE,KAAAgB,MAAA8Y,OAIArZ,OACA0C,EAAA,EAEcA,EAAAwzC,EAAOxzC,IAKrB+wC,GAJAp6B,EAAAw8B,EAAAnzC,IAIA1C,SACAqZ,IAAA7Q,QAAA,0BAIA+1B,QAAA,SACAkV,GAAAp6B,EAAArZ,OACAqZ,EAAA9Z,KAAA2H,QAAAyuC,SAEAt8B,EAAA7Q,QAAA,YAAqC,IADrC6Q,EAAA7Q,QAAA,IAAAwH,OAAA,QAA4CyjC,EAAA,IAAgB,WAM5D/wC,IAAAwzC,EAAA,IACAzd,EAAA/d,EAAAk8B,OAAAj0C,KAAAkzC,EAAAnzC,EAAA,QACAozC,EAAA91C,OAAA,MAAAy4B,EAAAz4B,OACAy4B,EAAAz4B,OAAA,GAAAT,KAAA2H,QAAA2vC,YAAApe,IAAAqd,KACAjwC,EAAAgwC,EAAA91C,MAAA2C,EAAA,GAAA+B,KAAA,MAAAoB,EACAnD,EAAAwzC,EAAA,IAOAv3B,EAAAjB,GAAA,eAAA3H,KAAAsD,GACA3W,IAAAwzC,EAAA,IACAx4B,EAAA,OAAArE,EAAAy9B,OAAAz9B,EAAArZ,OAAA,GACA2e,MAAAjB,IAGAiB,IACAo3B,EAAAp3B,OAAA,GAKA03B,OAAAluC,GADAiuC,EAAA,cAAArgC,KAAAsD,MAGAg9B,EAAA,MAAAh9B,EAAA,GACAA,IAAA7Q,QAAA,oBAGAytC,GACA/zC,KAAA,kBACA2c,KAAAu3B,EACAx3B,QAAAy3B,EACA13B,SAGAq3B,EAAAvsC,KAAAwsC,GACA12C,KAAA8G,OAAAoD,KAAAwsC,GAGA12C,KAAAsH,MAAAwS,GAAA,GAEA9Z,KAAA8G,OAAAoD,MACAvH,KAAA,kBAIA,GAAA6zC,EAAAp3B,MAGA,IAFAu3B,EAAAF,EAAAh2C,OACA0C,EAAA,EACgBA,EAAAwzC,EAAOxzC,IACvBszC,EAAAtzC,GAAAic,OAAA,EAIApf,KAAA8G,OAAAoD,MACAvH,KAAA,kBAOA,GAAA2zC,EAAAt2C,KAAAgB,MAAAga,KAAA5X,KAAAkD,GACAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACAT,KAAA8G,OAAAoD,MACAvH,KAAA3C,KAAA2H,QAAAouC,SACA,YACA,OACA1H,KAAAruC,KAAA2H,QAAA6vC,YACA,QAAAlB,EAAA,eAAAA,EAAA,cAAAA,EAAA,IACAr3C,KAAAe,KAAA2H,QAAAouC,SAAA/1C,KAAA2H,QAAA6vC,UAAAx3C,KAAA2H,QAAA6vC,UAAAlB,EAAA,IAAArwC,EAAAqwC,EAAA,IAAAA,EAAA,UAMA,GAAAlqC,IAAAkqC,EAAAt2C,KAAAgB,MAAAy2C,IAAAr0C,KAAAkD,IACAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACA61C,EAAA,KAAAA,EAAA,GAAAA,EAAA,GAAAtrC,UAAA,EAAAsrC,EAAA,GAAA71C,OAAA,IACA8I,EAAA+sC,EAAA,GAAA7sC,cAAAR,QAAA,YACAjJ,KAAA8G,OAAAmX,MAAA1U,KACAvJ,KAAA8G,OAAAmX,MAAA1U,IACArK,KAAAo3C,EAAA,GACAn3C,MAAAm3C,EAAA,UAOA,IAAAA,EAAAt2C,KAAAgB,MAAAie,MAAA7b,KAAAkD,MACAwT,GACAnX,KAAA,QACAic,OAAAs3B,EAAAI,EAAA,GAAArtC,QAAA,oBACA6V,MAAAw3B,EAAA,GAAArtC,QAAA,iBAAAmH,MAAA,UACA4O,MAAAs3B,EAAA,GAAAA,EAAA,GAAArtC,QAAA,UAAAmH,MAAA,WAGAwO,OAAAne,SAAAqZ,EAAAgF,MAAAre,OARA,CAWA,IAFA6F,IAAA0E,UAAAsrC,EAAA,GAAA71C,QAEA0C,EAAA,EAAqBA,EAAA2W,EAAAgF,MAAAre,OAAuB0C,IAC5C,YAAAqT,KAAAsD,EAAAgF,MAAA3b,IACA2W,EAAAgF,MAAA3b,GAAA,QACa,aAAAqT,KAAAsD,EAAAgF,MAAA3b,IACb2W,EAAAgF,MAAA3b,GAAA,SACa,YAAAqT,KAAAsD,EAAAgF,MAAA3b,IACb2W,EAAAgF,MAAA3b,GAAA,OAEA2W,EAAAgF,MAAA3b,GAAA,KAIA,IAAAA,EAAA,EAAqBA,EAAA2W,EAAAkF,MAAAve,OAAuB0C,IAC5C2W,EAAAkF,MAAA7b,GAAA+yC,EACAp8B,EAAAkF,MAAA7b,GAAA8F,QAAA,uBACA6Q,EAAA8E,OAAAne,QAGAT,KAAA8G,OAAAoD,KAAA4P,QAOA,GAAAw8B,EAAAt2C,KAAAgB,MAAA02C,SAAAt0C,KAAAkD,GACAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACAT,KAAA8G,OAAAoD,MACAvH,KAAA,UACA8b,MAAA,MAAA63B,EAAA,GAAAiB,OAAA,OACAt4C,KAAAq3C,EAAA,UAMA,GAAAlqC,IAAAkqC,EAAAt2C,KAAAgB,MAAA2e,UAAAvc,KAAAkD,IACAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACAT,KAAA8G,OAAAoD,MACAvH,KAAA,YACA1D,KAAA,OAAAq3C,EAAA,GAAAiB,OAAAjB,EAAA,GAAA71C,OAAA,GACA61C,EAAA,GAAA91C,MAAA,MACA81C,EAAA,UAMA,GAAAA,EAAAt2C,KAAAgB,MAAA/B,KAAAmE,KAAAkD,GAEAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACAT,KAAA8G,OAAAoD,MACAvH,KAAA,OACA1D,KAAAq3C,EAAA,UAKA,GAAAhwC,EACA,UAAAG,MAAA,0BAAAH,EAAAimC,WAAA,IAIA,OAAAvsC,KAAA8G,8CC/YA1H,EAAAu4C,EAAAr4C,GAAAF,EAAAC,EAAAC,EAAA,iCAAAs4C,IAAAx4C,EAAAC,EAAAC,EAAA,gCAAAu4C,IAAAz4C,EAAAC,EAAAC,EAAA,kCAAAw4C,IAAA14C,EAAAC,EAAAC,EAAA,2BAAAy4C,IAAA34C,EAAAC,EAAAC,EAAA,8BAAA04C,IAAA54C,EAAAC,EAAAC,EAAA,8BAAA24C,IAAA74C,EAAAC,EAAAC,EAAA,mCAAA44C,IAAA94C,EAAAC,EAAAC,EAAA,kCAAA64C,IAAA/4C,EAAAC,EAAAC,EAAA,gCAAA84C,IAAA,IAAA7kB,EAAAn0B,EAAA,QAAAS,EAAAT,EAAA,QAGAi5C,EAAAvzC,OAAA4Q,OAAA,MAIAuiC,EAAA,SAAAnrB,EAAAD,EAAAzH,GAGAplB,KAAAolB,WAAA,IAAA8yB,EAAAprB,EAAArM,IAAAoM,GAAAC,EAAA7pB,IAAA4pB,KAIA7sB,KAAA8sB,UAIA9sB,KAAA6sB,SAGA3L,GAA0Bo3B,QAAUn3B,cAAA,GAAqButB,MAAQvtB,cAAA,GAAqBvf,MAAQuf,cAAA,GAAqBtf,IAAMsf,cAAA,GAAqB5e,OAAS4e,cAAA,GAAqBqL,KAAOrL,cAAA,GAAqBZ,OAASY,cAAA,IAIjND,EAAAo3B,OAAA53B,IAAA,WAA6C,OAAA1gB,KAAA8sB,QAAA1qB,KAI7C8e,EAAAwtB,KAAAhuB,IAAA,WAA2C,OAAA1gB,KAAA6sB,MAAAzqB,KAI3C8e,EAAAtf,KAAA8e,IAAA,WAA2C,OAAA1gB,KAAAuC,MAAAH,KAI3C8e,EAAArf,GAAA6e,IAAA,WAAyC,OAAA1gB,KAAAwsB,IAAApqB,KAIzC8e,EAAA3e,MAAAme,IAAA,WACA,OAAA1gB,KAAAolB,OAAA,GAAA7iB,OAKA2e,EAAAsL,IAAA9L,IAAA,WACA,OAAA1gB,KAAAolB,OAAA,GAAAoH,KAKAtL,EAAAX,MAAAG,IAAA,WAEA,IADA,IAAA0E,EAAAplB,KAAAolB,OACAjiB,EAAA,EAAiBA,EAAAiiB,EAAA3kB,OAAmB0C,IAC/B,GAAAiiB,EAAAjiB,GAAAZ,MAAAH,KAAAgjB,EAAAjiB,GAAAqpB,IAAApqB,IAAgD,SACrD,UAYA61C,EAAAvxC,UAAAwgB,QAAA,WACA,OAAAlnB,KAAAuC,MAAA6C,KAAA,GAAA5E,MAAAR,KAAA4B,KAAA5B,KAAA6B,IAAA,IAMAo2C,EAAAvxC,UAAAuC,QAAA,SAAAtI,EAAAumB,QACA,IAAAA,MAAwCqM,EAAA,MAAKhT,OAM7C,IADA,IAAAg4B,EAAArxB,UAAAgF,UAAAssB,EAAA,KACAr1C,EAAA,EAAiBA,EAAA+jB,EAAA6P,QAAqB5zB,IACtCq1C,EAAAD,EACAA,IAAArsB,UAIA,IADA,IAAAhK,EAAAvhB,EAAAkD,MAAApD,OAAA2kB,EAAAplB,KAAAolB,OACAyK,EAAA,EAAmBA,EAAAzK,EAAA3kB,OAAqBovB,IAAA,CACxC,IAAA9uB,EAAAqkB,EAAAyK,GACAttB,EAAAxB,EAAAwB,MACAiqB,EAAAzrB,EAAAyrB,IACA9J,EAAA/hB,EAAA+hB,QAAAliB,MAAA0hB,GACAvhB,EAAAk+B,aAAAnc,EAAAhY,IAAAnI,EAAAH,KAAAsgB,EAAAhY,IAAA8hB,EAAApqB,KAAAytB,EAAwE0D,EAAA,MAAKhT,MAAA2G,GAC7E,GAAA2I,GACO4oB,EAAA93C,EAAAuhB,GAAAq2B,IAAA5e,SAAA6e,KAAArsB,cAAA,OAOP8rB,EAAAvxC,UAAAxC,YAAA,SAAAvD,EAAAyE,GAEA,IADA,IAAA8c,EAAAvhB,EAAAkD,MAAApD,OAAA2kB,EAAAplB,KAAAolB,OACAjiB,EAAA,EAAiBA,EAAAiiB,EAAA3kB,OAAmB0C,IAAA,CACpC,IAAApC,EAAAqkB,EAAAjiB,GACAZ,EAAAxB,EAAAwB,MACAiqB,EAAAzrB,EAAAyrB,IACA9J,EAAA/hB,EAAA+hB,QAAAliB,MAAA0hB,GACAtgB,EAAA8gB,EAAAhY,IAAAnI,EAAAH,KAAAP,EAAA6gB,EAAAhY,IAAA8hB,EAAApqB,KACAe,EACAxC,EAAA8vB,YAAA7uB,EAAAC,IAEAlB,EAAA6+B,iBAAA59B,EAAAC,EAAAuD,GACAqzC,EAAA93C,EAAAuhB,EAAA9c,EAAAu0B,UAAA,QAiBAse,EAAAtpB,SAAA,SAAAtC,EAAA+M,EAAAsf,GACA,IAAAj3B,EAAA4K,EAAA3pB,OAAAwsB,cAAA,IAAAipB,EAAA9rB,GACAssB,EAAAtsB,EAAAjnB,KAAA,GAAAinB,EAAA3pB,OAAA2pB,EAAAjqB,IAAAiqB,EAAA/mB,QAAA8zB,EAAAsf,GACA,GAAAj3B,EAAc,OAAAA,EAEd,QAAAhD,EAAA4N,EAAA5N,MAAA,EAAkCA,GAAA,EAAYA,IAAA,CAC9C,IAAA+c,EAAApC,EAAA,EACAuf,EAAAtsB,EAAAjnB,KAAA,GAAAinB,EAAAjnB,KAAAqZ,GAAA4N,EAAArnB,OAAAyZ,EAAA,GAAA4N,EAAA/mB,MAAAmZ,GAAA2a,EAAAsf,GACAC,EAAAtsB,EAAAjnB,KAAA,GAAAinB,EAAAjnB,KAAAqZ,GAAA4N,EAAA5Z,MAAAgM,EAAA,GAAA4N,EAAA/mB,MAAAmZ,GAAA,EAAA2a,EAAAsf,GACA,GAAAld,EAAgB,OAAAA,IAQhByc,EAAA9qB,KAAA,SAAAd,EAAAiN,GAGA,YAFA,IAAAA,MAAA,GAEAt5B,KAAA2uB,SAAAtC,EAAAiN,IAAAt5B,KAAA2uB,SAAAtC,GAAAiN,IAAA,IAAAse,EAAAvrB,EAAAjnB,KAAA,KAQA6yC,EAAAW,QAAA,SAAAp2C,GACA,OAAAm2C,EAAAn2C,IAAA,YAAAo1C,EAAAp1C,IAMAy1C,EAAA3qB,MAAA,SAAA9qB,GACA,OAAAm2C,EAAAn2C,MAAA0kB,QAAAqG,KAAA/qB,EAAA2mB,YAAA,QAAAyuB,EAAAp1C,IAMAy1C,EAAA9hB,SAAA,SAAA3zB,EAAA4zB,GACA,IAAAA,MAAAzzB,KAA4B,UAAA0vB,WAAA,wCAC5B,IAAAwmB,EAAAR,EAAAjiB,EAAAzzB,MACA,IAAAk2C,EAAa,UAAAxmB,WAAA,qBAAA+D,EAAA,iBACb,OAAAyiB,EAAA1iB,SAAA3zB,EAAA4zB,IAQA6hB,EAAA3hB,OAAA,SAAAC,EAAAuiB,GACA,GAAAviB,KAAA8hB,EAA0B,UAAAhmB,WAAA,sCAAAkE,GAG1B,OAFA8hB,EAAA9hB,GAAAuiB,EACAA,EAAApyC,UAAA4vB,OAAAC,EACAuiB,GAWAb,EAAAvxC,UAAAkf,YAAA,WACA,OAAAuyB,EAAAY,QAAA/4C,KAAA8sB,QAAA9sB,KAAA6sB,OAAAjH,eAGA9gB,OAAAuc,iBAAA42B,EAAAvxC,UAAAwa,GAMA+2B,EAAAvxC,UAAAsyC,SAAA,EAiBA,IAAAd,EAAA,SAAA31C,EAAAiqB,GAGAxsB,KAAAuC,QAGAvC,KAAAwsB,OAOA2rB,EAAA,SAAAF,GACA,SAAAE,EAAArrB,EAAAD,QACA,IAAAA,MAAAC,GAEAmrB,EAAArxC,KAAA5G,KAAA8sB,EAAAD,GAGAorB,IAAAE,EAAAxuC,UAAAsuC,GACAE,EAAAzxC,UAAA5B,OAAA4Q,OAAAuiC,KAAAvxC,WACAyxC,EAAAzxC,UAAAiG,YAAAwrC,EAEA,IAAA7b,GAA8Bp6B,SAAWif,cAAA,IA+EzC,OA1EAmb,EAAAp6B,QAAAwe,IAAA,WAAkD,OAAA1gB,KAAA8sB,QAAA1qB,KAAApC,KAAA6sB,MAAAzqB,IAAApC,KAAA6sB,MAAA,MAElDsrB,EAAAzxC,UAAAgE,IAAA,SAAAlI,EAAAkgB,GACA,IAAAmK,EAAArqB,EAAAC,QAAAigB,EAAAhY,IAAA1K,KAAA0uC,OACA,IAAA7hB,EAAAnqB,OAAAwsB,cAAsC,OAAA+oB,EAAA9qB,KAAAN,GACtC,IAAAC,EAAAtqB,EAAAC,QAAAigB,EAAAhY,IAAA1K,KAAAs4C,SACA,WAAAH,EAAArrB,EAAApqB,OAAAwsB,cAAApC,EAAAD,MAGAsrB,EAAAzxC,UAAAuC,QAAA,SAAAtI,EAAAumB,GAIA,QAHA,IAAAA,MAAwCqM,EAAA,MAAKhT,OAE7C03B,EAAAvxC,UAAAuC,QAAArC,KAAA5G,KAAAW,EAAAumB,GACAA,GAAmBqM,EAAA,MAAKhT,MAAA,CACxB,IAAAtc,EAAAjE,KAAAuC,MAAA6iC,YAAAplC,KAAAwsB,KACAvoB,GAAkBtD,EAAAs4C,YAAAh1C,KAIlBk0C,EAAAzxC,UAAAq0B,GAAA,SAAA9a,GACA,OAAAA,aAAAk4B,GAAAl4B,EAAAq4B,QAAAt4C,KAAAs4C,QAAAr4B,EAAAyuB,MAAA1uC,KAAA0uC,MAGAyJ,EAAAzxC,UAAAkf,YAAA,WACA,WAAAszB,EAAAl5C,KAAAs4C,OAAAt4C,KAAA0uC,OAGAyJ,EAAAzxC,UAAAwvB,OAAA,WACA,OAAYvzB,KAAA,OAAA21C,OAAAt4C,KAAAs4C,OAAA5J,KAAA1uC,KAAA0uC,OAGZyJ,EAAAhiB,SAAA,SAAA3zB,EAAA4zB,GACA,oBAAAA,EAAAkiB,QAAA,iBAAAliB,EAAAsY,KACO,UAAArc,WAAA,4CACP,WAAA8lB,EAAA31C,EAAAC,QAAA2zB,EAAAkiB,QAAA91C,EAAAC,QAAA2zB,EAAAsY,QAKAyJ,EAAAziC,OAAA,SAAAlT,EAAA81C,EAAA5J,QACA,IAAAA,MAAA4J,GAEA,IAAAxrB,EAAAtqB,EAAAC,QAAA61C,GACA,WAAAt4C,KAAA8sB,EAAA4hB,GAAA4J,EAAAxrB,EAAAtqB,EAAAC,QAAAisC,KAUAyJ,EAAAY,QAAA,SAAAjsB,EAAAD,EAAAyM,GACA,IAAA6f,EAAArsB,EAAA1qB,IAAAyqB,EAAAzqB,IAEA,GADAk3B,IAAA6f,IAAwB7f,EAAA6f,GAAA,SACxBtsB,EAAAnqB,OAAAwsB,cAAA,CACA,IAAAsM,EAAAyc,EAAAtpB,SAAA9B,EAAAyM,GAAA,IAAA2e,EAAAtpB,SAAA9B,GAAAyM,GAAA,GACA,IAAAkC,EACY,OAAAyc,EAAA9qB,KAAAN,EAAAyM,GADMzM,EAAA2O,EAAA3O,MAWlB,OARAC,EAAApqB,OAAAwsB,gBACA,GAAAiqB,EACArsB,EAAAD,GAEAC,GAAAmrB,EAAAtpB,SAAA7B,GAAAwM,GAAA,IAAA2e,EAAAtpB,SAAA7B,EAAAwM,GAAA,IAAAxM,SACA1qB,IAAAyqB,EAAAzqB,KAAA+2C,EAAA,IAAsDrsB,EAAAD,IAGtD,IAAAsrB,EAAArrB,EAAAD,IAGA/nB,OAAAuc,iBAAA82B,EAAAzxC,UAAA41B,GAEA6b,EA1FA,CA2FCF,GAEDA,EAAA3hB,OAAA,OAAA6hB,GAEA,IAAAe,EAAA,SAAAZ,EAAA5J,GACA1uC,KAAAs4C,SACAt4C,KAAA0uC,QAEAwK,EAAAxyC,UAAAgE,IAAA,SAAAgY,GACA,WAAAw2B,EAAAx2B,EAAAhY,IAAA1K,KAAAs4C,QAAA51B,EAAAhY,IAAA1K,KAAA0uC,QAEAwK,EAAAxyC,UAAAjE,QAAA,SAAAD,GACA,OAAA21C,EAAAY,QAAAv2C,EAAAC,QAAAzC,KAAAs4C,QAAA91C,EAAAC,QAAAzC,KAAA0uC,QAQA,IAAAoJ,EAAA,SAAAG,GACA,SAAAH,EAAAzrB,GACA,IAAAjnB,EAAAinB,EAAA2B,UACA4V,EAAAvX,EAAAjnB,KAAA,GAAA3C,QAAA4pB,EAAAjqB,IAAAgD,EAAA8oB,UACA+pB,EAAArxC,KAAA5G,KAAAqsB,EAAAuX,GAEA5jC,KAAAoF,OAiDA,OA9CA6yC,IAAAH,EAAAnuC,UAAAsuC,GACAH,EAAApxC,UAAA5B,OAAA4Q,OAAAuiC,KAAAvxC,WACAoxC,EAAApxC,UAAAiG,YAAAmrC,EAEAA,EAAApxC,UAAAgE,IAAA,SAAAlI,EAAAkgB,GACA,IAAA3hB,EAAA2hB,EAAA0R,UAAAp0B,KAAAs4C,QACAxkB,EAAA/yB,EAAA+yB,QACA1xB,EAAArB,EAAAqB,IACAiqB,EAAA7pB,EAAAC,QAAAL,GACA,OAAA0xB,EAAkBmkB,EAAA9qB,KAAAd,GAClB,IAAAyrB,EAAAzrB,IAGAyrB,EAAApxC,UAAAwgB,QAAA,WACA,WAAeqM,EAAA,MAAMA,EAAA,SAAQ3xB,KAAA5B,KAAAoF,MAAA,MAG7B0yC,EAAApxC,UAAAq0B,GAAA,SAAA9a,GACA,OAAAA,aAAA63B,GAAA73B,EAAAq4B,QAAAt4C,KAAAs4C,QAGAR,EAAApxC,UAAAwvB,OAAA,WACA,OAAYvzB,KAAA,OAAA21C,OAAAt4C,KAAAs4C,SAGZR,EAAApxC,UAAAkf,YAAA,WAAiE,WAAAwzB,EAAAp5C,KAAAs4C,SAEjER,EAAA3hB,SAAA,SAAA3zB,EAAA4zB,GACA,oBAAAA,EAAAkiB,OACO,UAAAjmB,WAAA,4CACP,WAAAylB,EAAAt1C,EAAAC,QAAA2zB,EAAAkiB,UAKAR,EAAApiC,OAAA,SAAAlT,EAAAZ,GACA,WAAA5B,KAAAwC,EAAAC,QAAAb,KAMAk2C,EAAAtnB,aAAA,SAAAprB,GACA,OAAAA,EAAA47B,SAAA,IAAA57B,EAAAzC,KAAAC,KAAAy2C,YAGAvB,EAvDA,CAwDCG,GAEDH,EAAApxC,UAAAsyC,SAAA,EAEAf,EAAA3hB,OAAA,OAAAwhB,GAEA,IAAAsB,EAAA,SAAAd,GACAt4C,KAAAs4C,UAEAc,EAAA1yC,UAAAgE,IAAA,SAAAgY,GACA,IAAA3hB,EAAA2hB,EAAA0R,UAAAp0B,KAAAs4C,QACAxkB,EAAA/yB,EAAA+yB,QACA1xB,EAAArB,EAAAqB,IACA,OAAA0xB,EAAA,IAAAolB,EAAA92C,KAAA,IAAAg3C,EAAAh3C,IAEAg3C,EAAA1yC,UAAAjE,QAAA,SAAAD,GACA,IAAA6pB,EAAA7pB,EAAAC,QAAAzC,KAAAs4C,QAAAlzC,EAAAinB,EAAA2B,UACA,OAAA5oB,GAAA0yC,EAAAtnB,aAAAprB,GAAiD,IAAA0yC,EAAAzrB,GACjD4rB,EAAA9qB,KAAAd,IAOA,IAAAurB,EAAA,SAAAK,GACA,SAAAL,EAAAp1C,GACAy1C,EAAArxC,KAAA5G,KAAAwC,EAAAC,QAAA,GAAAD,EAAAC,QAAAD,EAAA0kB,QAAAqG,OA6BA,OA1BA0qB,IAAAL,EAAAjuC,UAAAsuC,GACAL,EAAAlxC,UAAA5B,OAAA4Q,OAAAuiC,KAAAvxC,WACAkxC,EAAAlxC,UAAAiG,YAAAirC,EAEAA,EAAAlxC,UAAAuC,QAAA,SAAAtI,EAAAumB,GAGA,QAFA,IAAAA,MAAwCqM,EAAA,MAAKhT,OAE7C2G,GAAmBqM,EAAA,MAAKhT,MAAA,CACxB5f,EAAA+D,OAAA,EAAA/D,EAAA6B,IAAA0kB,QAAAqG,MACA,IAAA+rB,EAAArB,EAAAW,QAAAj4C,EAAA6B,KACA82C,EAAAve,GAAAp6B,EAAAwB,YAAkCxB,EAAAmlB,aAAAwzB,QAElCrB,EAAAvxC,UAAAuC,QAAArC,KAAA5G,KAAAW,EAAAumB,IAIA0wB,EAAAlxC,UAAAwvB,OAAA,WAAsD,OAASvzB,KAAA,QAE/Di1C,EAAAzhB,SAAA,SAAA3zB,GAAmD,WAAAo1C,EAAAp1C,IAEnDo1C,EAAAlxC,UAAAgE,IAAA,SAAAlI,GAAmD,WAAAo1C,EAAAp1C,IAEnDo1C,EAAAlxC,UAAAq0B,GAAA,SAAA9a,GAAmD,OAAAA,aAAA23B,GAEnDA,EAAAlxC,UAAAkf,YAAA,WAAgE,OAAA2zB,GAEhE3B,EA/BA,CAgCCK,GAEDA,EAAA3hB,OAAA,MAAAshB,GAEA,IAAA2B,GACA7uC,IAAA,WAAuB,OAAA1K,MACvByC,QAAA,SAAAD,GAAkC,WAAAo1C,EAAAp1C,KAQlC,SAAAm2C,EAAAn2C,EAAA4C,EAAAhD,EAAAkD,EAAA8zB,EAAAn6B,GACA,GAAAmG,EAAA8pB,cAA2B,OAAAipB,EAAAziC,OAAAlT,EAAAJ,GAC3B,QAAAe,EAAAmC,GAAA8zB,EAAA,OAAyCA,EAAA,EAAAj2B,EAAAiC,EAAA+jB,WAAAhmB,GAAA,EAAwCA,GAAAi2B,EAAA,CACjF,IAAAtvB,EAAA1E,EAAA0E,MAAA3G,GACA,GAAA2G,EAAA4mB,QAGK,IAAAzxB,GAAA64C,EAAAtnB,aAAA1mB,GACL,OAAAguC,EAAApiC,OAAAlT,EAAAJ,GAAAg3B,EAAA,EAAAtvB,EAAAokB,SAAA,QAJA,CACA,IAAAzM,EAAAk3B,EAAAn2C,EAAAsH,EAAA1H,EAAAg3B,IAAA,EAAAtvB,EAAAqf,WAAA,EAAAiQ,EAAAn6B,GACA,GAAAwiB,EAAkB,OAAAA,EAIlBrf,GAAA0H,EAAAokB,SAAAkL,GAIA,SAAAqf,EAAA93C,EAAA64C,EAAAlgB,GACA,IAAA3U,EAAAhkB,EAAAkD,MAAApD,OAAA,EACA,KAAAkkB,EAAA60B,GAAA,CACA,IAEAp5C,EAFA0D,EAAAnD,EAAAkD,MAAA8gB,GACA,GAAA7gB,aAAwBjE,EAAA,GAAWiE,aAAoBjE,EAAA,EACvDc,EAAA+hB,QAAAN,KAAAuC,GACArc,QAAA,SAAA2c,EAAAC,EAAAu0B,EAAAC,GAAsD,MAAAt5C,IAAmBA,EAAAs5C,KACzE/4C,EAAAmlB,aAAAmyB,EAAA9qB,KAAAxsB,EAAA6B,IAAAC,QAAArC,GAAAk5B,KAGA,IAmBA8e,EAAA,SAAAnlB,GACA,SAAAmlB,EAAAl4C,GACA+yB,EAAArsB,KAAA5G,KAAAE,EAAAsC,KAIAxC,KAAA2mB,KAAAgzB,KAAAC,MACA55C,KAAA65C,aAAA35C,EAAAiC,UAEAnC,KAAA85C,gBAAA,EAGA95C,KAAAuvB,YAAArvB,EAAAqvB,YAGAvvB,KAAA+5C,QAAA,EAEA/5C,KAAAg6C,KAAAl1C,OAAA4Q,OAAA,MAGAud,IAAAmlB,EAAAzuC,UAAAspB,GACAmlB,EAAA1xC,UAAA5B,OAAA4Q,OAAAud,KAAAvsB,WACA0xC,EAAA1xC,UAAAiG,YAAAyrC,EAEA,IAAAl3B,GAA4B/e,WAAagf,cAAA,GAAqB5f,cAAgB4f,cAAA,GAAqB84B,gBAAkB94B,cAAA,GAAqB+4B,WAAa/4B,cAAA,GAAqBg5B,kBAAoBh5B,cAAA,IAwKhM,OAjKAD,EAAA/e,UAAAue,IAAA,WAKA,OAJA1gB,KAAA85C,gBAAA95C,KAAA6D,MAAApD,SACAT,KAAA65C,aAAA75C,KAAA65C,aAAAnvC,IAAA1K,KAAAwC,IAAAxC,KAAA0iB,QAAAliB,MAAAR,KAAA85C,kBACA95C,KAAA85C,gBAAA95C,KAAA6D,MAAApD,QAEAT,KAAA65C,cAMAzB,EAAA1xC,UAAAof,aAAA,SAAA3jB,GACA,GAAAA,EAAAI,MAAAC,KAAAxC,KAAAwC,IACO,UAAA6vB,WAAA,uEAKP,OAJAryB,KAAA65C,aAAA13C,EACAnC,KAAA85C,gBAAA95C,KAAA6D,MAAApD,OACAT,KAAA+5C,SAAA,GAlEA,EAkEA/5C,KAAA+5C,SACA/5C,KAAAuvB,YAAA,KACAvvB,MAKAkhB,EAAA3f,aAAAmf,IAAA,WACA,OA1EA,EA0EA1gB,KAAA+5C,SAAA,GAKA3B,EAAA1xC,UAAA0zC,eAAA,SAAAn2C,GAGA,OAFAjE,KAAAuvB,YAAAtrB,EACAjE,KAAA+5C,SAjFA,EAkFA/5C,MAOAo4C,EAAA1xC,UAAAuyC,YAAA,SAAAh1C,GAGA,OAFSsvB,EAAA,KAAIyP,QAAAhjC,KAAAuvB,aAAAvvB,KAAAmC,UAAAI,MAAA0B,YACNjE,KAAAo6C,eAAAn2C,GACPjE,MAKAo4C,EAAA1xC,UAAA+oB,cAAA,SAAAiL,GACA,OAAA16B,KAAAi5C,YAAAve,EAAAG,SAAA76B,KAAAuvB,aAAAvvB,KAAAmC,UAAA0qB,MAAA5oB,WAKAm0C,EAAA1xC,UAAA8oB,iBAAA,SAAAkL,GACA,OAAA16B,KAAAi5C,YAAAve,EAAAO,cAAAj7B,KAAAuvB,aAAAvvB,KAAAmC,UAAA0qB,MAAA5oB,WAKAid,EAAA+4B,eAAAv5B,IAAA,WACA,OA9GA,EA8GA1gB,KAAA+5C,SAAA,GAGA3B,EAAA1xC,UAAAmvB,QAAA,SAAA/xB,EAAAtB,GACAywB,EAAAvsB,UAAAmvB,QAAAjvB,KAAA5G,KAAA8D,EAAAtB,GACAxC,KAAA+5C,SAAA,EAAA/5C,KAAA+5C,QACA/5C,KAAAuvB,YAAA,MAKA6oB,EAAA1xC,UAAA2zC,QAAA,SAAA1zB,GAEA,OADA3mB,KAAA2mB,OACA3mB,MAKAo4C,EAAA1xC,UAAA4zC,iBAAA,SAAA95C,GAEA,OADAR,KAAAmC,UAAA8G,QAAAjJ,KAAAQ,GACAR,MAOAo4C,EAAA1xC,UAAA8hB,qBAAA,SAAApjB,EAAAm1C,GACA,IAAAp4C,EAAAnC,KAAAmC,UAIA,OAHA,IAAAo4C,IACOn1C,IAAAs1B,KAAA16B,KAAAuvB,cAAAptB,EAAAoe,MAAApe,EAAAI,MAAA0B,QAAA9B,EAAAI,MAAA6iC,YAAAjjC,EAAAqqB,MAAkI+G,EAAA,KAAI2P,QAC7I/gC,EAAA+B,YAAAlE,KAAAoF,GACApF,MAKAo4C,EAAA1xC,UAAAqlB,gBAAA,WAEA,OADA/rB,KAAAmC,UAAA8G,QAAAjJ,MACAA,MAMAo4C,EAAA1xC,UAAA9F,WAAA,SAAA3B,EAAA2C,EAAAC,QACA,IAAAA,MAAAD,GAEA,IAAAuC,EAAAnE,KAAAwC,IAAAG,KAAAwB,OACA,SAAAvC,EACA,OAAA3C,EACAe,KAAAwoB,qBAAArkB,EAAAlF,SAAA,GADkBe,KAAA+rB,kBAGlB,IAAA9sB,EAAkB,OAAAe,KAAAywB,YAAA7uB,EAAAC,GAClB,IAAAoC,EAAAjE,KAAAuvB,YACA,IAAAtrB,EAAA,CACA,IAAA1B,EAAAvC,KAAAwC,IAAAC,QAAAb,GACAqC,EAAApC,GAAAD,EAAAW,EAAA0B,QAAA1B,EAAA6iC,YAAAplC,KAAAwC,IAAAC,QAAAZ,IAIA,OAFA7B,KAAAw/B,iBAAA59B,EAAAC,EAAAsC,EAAAlF,OAAAgF,IACAjE,KAAAmC,UAAAoe,OAAkCvgB,KAAA8lB,aAAAmyB,EAAA9qB,KAAAntB,KAAAmC,UAAAqqB,MAClCxsB,MAOAo4C,EAAA1xC,UAAApD,QAAA,SAAAgG,EAAAN,GAEA,OADAhJ,KAAAg6C,KAAA,iBAAA1wC,WAAAN,EACAhJ,MAKAo4C,EAAA1xC,UAAApF,QAAA,SAAAgI,GACA,OAAAtJ,KAAAg6C,KAAA,iBAAA1wC,YAMA4X,EAAAg5B,UAAAx5B,IAAA,WACA,QAAAqiB,KAAA/iC,KAAAg6C,KAA8B,SAC9B,UAMA5B,EAAA1xC,UAAAsf,eAAA,WAEA,OADAhmB,KAAA+5C,SAzMA,EA0MA/5C,MAGAkhB,EAAAi5B,iBAAAz5B,IAAA,WACA,OA9MA,EA8MA1gB,KAAA+5C,SAAA,GAGAj1C,OAAAuc,iBAAA+2B,EAAA1xC,UAAAwa,GAEAk3B,EAhMA,CAiMEv4C,EAAA,GAEF,SAAAwd,EAAAuD,EAAAsf,GACA,OAAAA,GAAAtf,IAAAvD,KAAA6iB,GAAAtf,EAGA,IAAA45B,EAAA,SAAAntC,EAAAotC,EAAAva,GACAlgC,KAAAqN,OACArN,KAAAkB,KAAAmc,EAAAo9B,EAAAv5C,KAAAg/B,GACAlgC,KAAAmB,MAAAkc,EAAAo9B,EAAAt5C,MAAA++B,IAGAwa,GACA,IAAAF,EAAA,OACAt5C,KAAA,SAAAwkB,GAAiC,OAAAA,EAAAljB,KAAAkjB,EAAAvhB,OAAAonC,YAAAre,iBACjC/rB,MAAA,SAAAR,GAA+B,OAAAA,EAAA6B,OAG/B,IAAAg4C,EAAA,aACAt5C,KAAA,SAAAwkB,EAAAolB,GAA2C,OAAAplB,EAAAvjB,WAAA81C,EAAAW,QAAA9N,EAAAtoC,MAC3CrB,MAAA,SAAAR,GAA+B,OAAAA,EAAAwB,aAG/B,IAAAq4C,EAAA,eACAt5C,KAAA,SAAAwkB,GAAiC,OAAAA,EAAA6J,aAAA,MACjCpuB,MAAA,SAAAR,EAAAg6C,EAAAC,EAAA16C,GAAoD,OAAAA,EAAAiC,UAAAD,QAAAvB,EAAA4uB,YAAA,QAGpD,IAAAirB,EAAA,qBACAt5C,KAAA,WAA2B,UAC3BC,MAAA,SAAAR,EAAAS,GAAqC,OAAAT,EAAAw5C,iBAAA/4C,EAAA,EAAAA,MAMrCy5C,EAAA,SAAA12C,EAAAX,GACA,IAAAwe,EAAAhiB,KAEAA,KAAAmE,SACAnE,KAAA86C,OAAAJ,EAAAhrC,SACA1P,KAAAwD,WACAxD,KAAA+6C,aAAAj2C,OAAA4Q,OAAA,MACAlS,GAAgBA,EAAA8E,QAAA,SAAArH,GAChB,GAAA+gB,EAAA+4B,aAAA95C,EAAAqI,KACO,UAAA+oB,WAAA,iDAAApxB,EAAAqI,IAAA,KACP0Y,EAAAxe,QAAA0G,KAAAjJ,GACA+gB,EAAA+4B,aAAA95C,EAAAqI,KAAArI,EACAA,EAAA2B,KAAA1C,OACO8hB,EAAA84B,OAAA5wC,KAAA,IAAAswC,EAAAv5C,EAAAqI,IAAArI,EAAA2B,KAAA1C,MAAAe,OAWP42C,EAAA,SAAAnyB,GACA1lB,KAAA0lB,UAGA4W,GAA4Bn4B,QAAUgd,cAAA,GAAqB3d,SAAW2d,cAAA,GAAqBxgB,IAAMwgB,cAAA,IAcjGmb,EAAAn4B,OAAAuc,IAAA,WACA,OAAA1gB,KAAA0lB,OAAAvhB,QAKAm4B,EAAA94B,QAAAkd,IAAA,WACA,OAAA1gB,KAAA0lB,OAAAliB,SAKAq0C,EAAAnxC,UAAAvF,MAAA,SAAAR,GACA,OAAAX,KAAA8mB,iBAAAnmB,GAAAT,OAIA23C,EAAAnxC,UAAAs0C,kBAAA,SAAAr6C,EAAAmI,QACA,IAAAA,OAAA,GAEA,QAAA3F,EAAA,EAAiBA,EAAAnD,KAAA0lB,OAAAliB,QAAA/C,OAAgC0C,IAAO,GAAAA,GAAA2F,EAAA,CACxD,IAAA7H,EAAAjB,KAAA0lB,OAAAliB,QAAAL,GACA,GAAAlC,EAAA2B,KAAAo4C,oBAAA/5C,EAAA2B,KAAAo4C,kBAAAp0C,KAAA3F,EAAAN,EAAAX,MACO,SAEP,UASA63C,EAAAnxC,UAAAogB,iBAAA,SAAAm0B,GACA,IAAAj7C,KAAAg7C,kBAAAC,GAAwC,OAAS/6C,MAAAF,KAAAk7C,iBAMjD,IAJA,IAAAC,GAAAF,GAAAG,EAAAp7C,KAAAq7C,WAAAJ,GAAArb,EAAA,OAIU,CAEV,IADA,IAAA0b,GAAA,EACAn4C,EAAA,EAAmBA,EAAAnD,KAAA0lB,OAAAliB,QAAA/C,OAAgC0C,IAAA,CACnD,IAAAlC,EAAAjB,KAAA0lB,OAAAliB,QAAAL,GACA,GAAAlC,EAAA2B,KAAA24C,kBAAA,CACA,IAAAn4B,EAAAwc,IAAAz8B,GAAAigB,EAAA,EAAAo4B,EAAA5b,IAAAz8B,GAAAjD,MAAAF,KACAW,EAAAyiB,EAAA+3B,EAAA16C,QACAQ,EAAA2B,KAAA24C,kBAAA30C,KAAA3F,EAAAmiB,EAAA+3B,EAAA36C,MAAA4iB,GAAA+3B,EAAAK,EAAAJ,GACA,GAAAz6C,GAAAy6C,EAAAJ,kBAAAr6C,EAAAwC,GAAA,CAEA,GADAxC,EAAA2C,QAAA,sBAAA23C,IACArb,EAAA,CACAA,KACA,QAAAh8B,EAAA,EAA2BA,EAAA5D,KAAA0lB,OAAAliB,QAAA/C,OAAgCmD,IAC5Cg8B,EAAA11B,KAAAtG,EAAAT,GAAoBjD,MAAAk7C,EAAAh4B,EAAA+3B,EAAA16C,SAAmCP,MAAAF,KAAAojB,EAAA,IAEtE+3B,EAAAjxC,KAAAvJ,GACAy6C,IAAAC,WAAA16C,GACA26C,GAAA,EAEA1b,IAAmBA,EAAAz8B,IAAYjD,MAAAk7C,EAAAh4B,EAAA+3B,EAAA16C,UAG/B,IAAA66C,EAAmB,OAASp7C,MAAAk7C,EAAAF,aAAAC,KAK5BtD,EAAAnxC,UAAA20C,WAAA,SAAA16C,GACA,IAAAA,EAAAqE,OAAA+1B,GAAA/6B,KAAAwC,KAAgC,UAAA6vB,WAAA,qCAEhC,IADA,IAAAopB,EAAA,IAAA5D,EAAA73C,KAAA0lB,QAAAo1B,EAAA96C,KAAA0lB,OAAAo1B,OACA33C,EAAA,EAAiBA,EAAA23C,EAAAr6C,OAAmB0C,IAAA,CACpC,IAAAu4C,EAAAZ,EAAA33C,GACAs4C,EAAAC,EAAAruC,MAAAquC,EAAAv6C,MAAAR,EAAAX,KAAA07C,EAAAruC,MAAArN,KAAAy7C,GAEA,QAAA5rB,EAAA,EAAmBA,EAAA8rB,EAAAl7C,OAA6BovB,IAAS8rB,EAAA9rB,GAAA7vB,KAAAW,EAAA86C,GACzD,OAAAA,GAKAnf,EAAA37B,GAAA+f,IAAA,WAA2C,WAAA03B,EAAAp4C,OAqB3C63C,EAAAniC,OAAA,SAAAgQ,GAGA,IAFA,IAAAk2B,EAAA,IAAAf,EAAAn1B,EAAAvhB,QAAAuhB,EAAAljB,IAAAG,KAAAwB,OAAAuhB,EAAAliB,SACAsnC,EAAA,IAAA+M,EAAA+D,GACAz4C,EAAA,EAAiBA,EAAAy4C,EAAAd,OAAAr6C,OAA2B0C,IACvC2nC,EAAA8Q,EAAAd,OAAA33C,GAAAkK,MAAAuuC,EAAAd,OAAA33C,GAAAjC,KAAAwkB,EAAAolB,GACL,OAAAA,GAkBA+M,EAAAnxC,UAAAm1C,YAAA,SAAAn2B,GAGA,IAFA,IAAAk2B,EAAA,IAAAf,EAAAn1B,EAAAvhB,QAAAnE,KAAAmE,OAAAuhB,EAAAliB,SACAs3C,EAAAc,EAAAd,OAAAhQ,EAAA,IAAA+M,EAAA+D,GACAz4C,EAAA,EAAiBA,EAAA23C,EAAAr6C,OAAmB0C,IAAA,CACpC,IAAAkK,EAAAytC,EAAA33C,GAAAkK,KACAy9B,EAAAz9B,GAAArN,KAAAwI,eAAA6E,GAAArN,KAAAqN,GAAAytC,EAAA33C,GAAAjC,KAAAwkB,EAAAolB,GAEA,OAAAA,GASA+M,EAAAnxC,UAAAwvB,OAAA,SAAA4lB,GACA,IAAAzyC,GAAgB7G,IAAAxC,KAAAwC,IAAA0zB,SAAA/zB,UAAAnC,KAAAmC,UAAA+zB,UAEhB,GADAl2B,KAAAuvB,cAAyBlmB,EAAAkmB,YAAAvvB,KAAAuvB,YAAA7kB,IAAA,SAAAkF,GAAyD,OAAAA,EAAAsmB,YAClF4lB,GAAA,iBAAAA,EAAwD,QAAAvzC,KAAAuzC,EAAA,CACxD,UAAAvzC,GAAA,aAAAA,EACO,UAAA8pB,WAAA,sDACP,IAAApxB,EAAA66C,EAAAvzC,GAAArI,EAAAe,EAAA2B,KAAA1C,MACAA,KAAAg2B,SAAgC7sB,EAAAd,GAAArI,EAAAg2B,OAAAtvB,KAAA3F,EAAAjB,KAAAiB,EAAAqI,OAEhC,OAAAD,GAiBAwuC,EAAA1hB,SAAA,SAAAzQ,EAAA0Q,EAAA0lB,GACA,IAAA1lB,EAAc,UAAA/D,WAAA,0CACd,IAAA3M,EAAAvhB,OAAuB,UAAAkuB,WAAA,0CACvB,IAAAupB,EAAA,IAAAf,EAAAn1B,EAAAvhB,OAAAuhB,EAAAliB,SACAsnC,EAAA,IAAA+M,EAAA+D,GAqBA,OApBAA,EAAAd,OAAAxyC,QAAA,SAAAozC,GACA,UAAAA,EAAAruC,KACAy9B,EAAAtoC,IAAqB+wB,EAAA,KAAI4C,SAAAzQ,EAAAvhB,OAAAiyB,EAAA5zB,UACpB,gBAAAk5C,EAAAruC,KACLy9B,EAAA3oC,UAAA81C,EAAA9hB,SAAA2U,EAAAtoC,IAAA4zB,EAAAj0B,gBACK,kBAAAu5C,EAAAruC,KACL+oB,EAAA7G,cAA6Bub,EAAAvb,YAAA6G,EAAA7G,YAAA7kB,IAAAgb,EAAAvhB,OAAA62B,mBACxB,CACL,GAAA8gB,EAAyB,QAAAvzC,KAAAuzC,EAAA,CACzB,IAAA76C,EAAA66C,EAAAvzC,GAAArI,EAAAe,EAAA2B,KAAA1C,MACA,GAAAe,EAAAqI,KAAAoyC,EAAAruC,MAAAnN,KAAAi2B,UACArxB,OAAA4B,UAAA8B,eAAA5B,KAAAwvB,EAAA7tB,GAGA,YADAuiC,EAAA4Q,EAAAruC,MAAAnN,EAAAi2B,SAAAvvB,KAAA3F,EAAAykB,EAAA0Q,EAAA7tB,GAAAuiC,IAIAA,EAAA4Q,EAAAruC,MAAAquC,EAAAx6C,KAAAwkB,EAAAolB,MAGAA,GASA+M,EAAAkE,iBAAA,SAAAn7B,GACA+6B,EAAAzxC,KAAA0W,IAEAi3B,EAAAmE,oBAAA,SAAAp7B,GACA,IAAA4a,EAAAmgB,EAAA3c,QAAApe,GACA4a,GAAA,GAAmBmgB,EAAAzwC,OAAAswB,EAAA,IAGnB12B,OAAAuc,iBAAAw2B,EAAAnxC,UAAA41B,GAEA,IAAAqf,KAiEA,IAAA5D,EAAA,SAAAn1C,GAGA5C,KAAAyB,SACAmB,EAAAnB,OAjBA,SAAAw6C,EAAA/zC,EAAAg4B,EAAA/V,GACA,QAAA5hB,KAAAL,EAAA,CACA,IAAA+8B,EAAA/8B,EAAAK,GACA08B,aAAAxgC,SAAkCwgC,IAAA5nB,KAAA6iB,GAClC,mBAAA33B,IAAyC08B,EAAAgX,EAAAhX,EAAA/E,OACzC/V,EAAA5hB,GAAA08B,EAEA,OAAA9a,EAUmB8xB,CAAAr5C,EAAAnB,MAAAzB,UAAAyB,OAGnBzB,KAAA4C,OACA5C,KAAAsJ,IAAA1G,EAAA0G,IAAA1G,EAAA0G,QAAA4yC,EAAA,WAKAnE,EAAArxC,UAAAhD,SAAA,SAAAxD,GAAuD,OAAAA,EAAAF,KAAAsJ,MA4BvD,IAAAgK,EAAAxO,OAAA4Q,OAAA,MAEA,SAAAwmC,EAAA7uC,GACA,OAAAA,KAAAiG,EAAqBjG,EAAA,OAAAiG,EAAAjG,IACrBiG,EAAAjG,GAAA,EACAA,EAAA,KAOA,IAAA2qC,EAAA,SAAA3qC,QACA,IAAAA,MAAA,OACArN,KAAAsJ,IAAA4yC,EAAA7uC,IAKA2qC,EAAAtxC,UAAAga,IAAA,SAAAxgB,GAAgD,OAAAA,EAAAwlB,OAAAq1B,aAAA/6C,KAAAsJ,MAIhD0uC,EAAAtxC,UAAAhD,SAAA,SAAAxD,GAA0D,OAAAA,EAAAF,KAAAsJ,yCC7mC1DlK,EAAAC,EAAAC,EAAA,sBAAA68C,KAAA/8C,EAAAC,EAAAC,EAAA,sBAAA88C,KAAA,IAAAx8C,EAAAR,EAAA,QAAAysB,EAAAzsB,EAAA,QAAAi9C,EAAAj9C,EAAA,QAIAiK,KAEA,uBAAAqoB,WAAA,oBAAAhW,SAAA,CACA,IAAA4gC,EAAA,cAAAl5C,KAAAsuB,UAAA6qB,WACAC,EAAA,UAAAhmC,KAAAkb,UAAA6qB,WACAE,EAAA,wCAAyCr5C,KAAAsuB,UAAA6qB,WAEzClzC,EAAAqzC,IAAA,MAAAlmC,KAAAkb,UAAAC,UACA,IAAAgrB,EAAAtzC,EAAAszC,MAAAH,GAAAC,GAAAH,GACAjzC,EAAAuzC,WAAAJ,EAAA9gC,SAAAmhC,cAAA,EAAAJ,KAAA,GAAAH,KAAA,QACAjzC,EAAAyzC,OAAAH,GAAA,gBAAAnmC,KAAAkb,UAAA6qB,WACAlzC,EAAA0zC,cAAA1zC,EAAAyzC,SAAA,iBAAA15C,KAAAsuB,UAAA6qB,aAAA,SACA,IAAAS,GAAAL,GAAA,gBAAAv5C,KAAAsuB,UAAA6qB,WACAlzC,EAAA2zC,WACA3zC,EAAA4zC,eAAAD,MAAA,GACA3zC,EAAA6zC,KAAAP,GAAA,cAAAnmC,KAAAkb,UAAA6qB,YAAA,cAAA/lC,KAAAkb,UAAA6qB,WACAlzC,EAAA8zC,QAAA,aAAA3mC,KAAAkb,UAAA6qB,WACAlzC,EAAA+zC,OAAA,wBAAA1hC,SAAA2hC,gBAAA3zB,MACArgB,EAAAi0C,OAAA,iBAAA9mC,KAAAkb,UAAA6rB,QACAl0C,EAAAm0C,eAAAn0C,EAAA+zC,UAAA,uBAAAh6C,KAAAsuB,UAAA6qB,aAAA,SAGA,IAAAkB,EAAA,SAAAr4C,GACA,QAAAE,EAAA,GAAsBA,IAEtB,KADAF,IAAAurC,iBACgB,OAAArrC,GAIhB+V,EAAA,SAAAjW,GACA,IAAA1C,EAAA0C,EAAAiW,WACA,OAAA3Y,GAAA,IAAAA,EAAA2B,SAAA3B,EAAAg7C,KAAAh7C,GAGAi7C,EAAA,SAAAv4C,EAAAxD,EAAAC,GACA,IAAA8C,EAAA+W,SAAAkiC,cAGA,OAFAj5C,EAAAk5C,OAAAz4C,EAAA,MAAAvD,EAAAuD,EAAA6E,UAAAxJ,OAAAoB,GACA8C,EAAAm5C,SAAA14C,EAAAxD,GAAA,GACA+C,GAMAo5C,EAAA,SAAA34C,EAAA44C,EAAAC,EAAAC,GACA,OAAAD,IAAAE,EAAA/4C,EAAA44C,EAAAC,EAAAC,GAAA,IACAC,EAAA/4C,EAAA44C,EAAAC,EAAAC,EAAA,KAGAE,EAAA,gCAEA,SAAAD,EAAA/4C,EAAA44C,EAAAC,EAAAC,EAAA9kB,GACA,OAAS,CACT,GAAAh0B,GAAA64C,GAAAD,GAAAE,EAAiD,SACjD,GAAAF,IAAA5kB,EAAA,IAAAlL,EAAA9oB,IAAA,CACA,IAAA1C,EAAA0C,EAAAiW,WACA,MAAA3Y,EAAA2B,UAAAg6C,EAAAj5C,IAAAg5C,EAAA5nC,KAAApR,EAAAoE,WAAA,SAAApE,EAAAk5C,gBACS,SACTN,EAAAP,EAAAr4C,IAAAg0B,EAAA,OACAh0B,EAAA1C,MACK,OAAA0C,EAAAf,SAKL,SAHA,aADAe,IAAA4sC,WAAAgM,GAAA5kB,EAAA,UACAklB,gBAA4C,SAC5CN,EAAA5kB,EAAA,EAAAlL,EAAA9oB,GAAA,IAOA,SAAA8oB,EAAA9oB,GACA,UAAAA,EAAAf,SAAAe,EAAA6E,UAAAxJ,OAAA2E,EAAA4sC,WAAAvxC,OAcA,SAAA49C,EAAAt1B,GAEA,IADA,IAAA0xB,EACA7e,EAAA7S,EAAqB6S,KAA6B6e,EAAA7e,EAAA2iB,YAAxB3iB,IAAAvgB,YAC1B,OAAAo/B,KAAAr1C,MAAAq1C,EAAAr1C,KAAAioB,UAAAotB,EAAA1xB,QAAA0xB,EAAA7I,YAAA7oB,GAKA,IAAAy1B,EAAA,SAAAC,GACA,IAAAC,EAAAD,EAAAE,YAGA,OAFAD,GAAAr1C,EAAA2zC,QAAAyB,EAAAG,aAAAH,EAAAI,WAAA,GAAAH,YACKA,GAAA,GACLA,GAGA,SAAAI,EAAAC,EAAAz1C,GACA,IAAAa,EAAAuR,SAAAsjC,YAAA,SAIA,OAHA70C,EAAA80C,UAAA,iBACA90C,EAAA40C,UACA50C,EAAAb,IAAAa,EAAAtH,KAAAyG,EACAa,EAGA,SAAA+0C,EAAA18C,GACA,OAAU8e,KAAA,EAAAC,MAAA/e,EAAA66C,gBAAA8B,YACV/yC,IAAA,EAAAgzC,OAAA58C,EAAA66C,gBAAAgC,cAGA,SAAAC,EAAAt2C,EAAAijB,GACA,uBAAAjjB,MAAAijB,GAGA,SAAAszB,EAAAn6C,GACA,IAAAo6C,EAAAp6C,EAAAq6C,wBAEA,OAAUn+B,KAAAk+B,EAAAl+B,KAAAC,MAAAi+B,EAAAl+B,KAAAlc,EAAA+5C,YACV/yC,IAAAozC,EAAApzC,IAAAgzC,OAAAI,EAAApzC,IAAAhH,EAAAi6C,cAGA,SAAAK,EAAA/9C,EAAA69C,EAAAG,GAGA,IAFA,IAAAC,EAAAj+C,EAAAk+C,SAAA,sBAAAC,EAAAn+C,EAAAk+C,SAAA,mBACAr9C,EAAAb,EAAAonB,IAAAwoB,cACA7uC,EAAAi9C,GAAAh+C,EAAAonB,IACArmB,EAD0CA,EAAA2Y,EAAA3Y,GAE1C,MAAAA,EAAA2B,SAAA,CACA,IAAA07C,EAAAr9C,GAAAF,EAAA6b,MAAA,GAAA3b,EAAA2B,SACA27C,EAAAD,EAAAb,EAAA18C,GAAA+8C,EAAA78C,GACAu9C,EAAA,EAAAC,EAAA,EASA,GARAV,EAAApzC,IAAA4zC,EAAA5zC,IAAAkzC,EAAAM,EAAA,OACOM,IAAAF,EAAA5zC,IAAAozC,EAAApzC,IAAAkzC,EAAAQ,EAAA,QACPN,EAAAJ,OAAAY,EAAAZ,OAAAE,EAAAM,EAAA,YACOM,EAAAV,EAAAJ,OAAAY,EAAAZ,OAAAE,EAAAQ,EAAA,WACPN,EAAAl+B,KAAA0+B,EAAA1+B,KAAAg+B,EAAAM,EAAA,QACOK,IAAAD,EAAA1+B,KAAAk+B,EAAAl+B,KAAAg+B,EAAAQ,EAAA,SACPN,EAAAj+B,MAAAy+B,EAAAz+B,MAAA+9B,EAAAM,EAAA,WACOK,EAAAT,EAAAj+B,MAAAy+B,EAAAz+B,MAAA+9B,EAAAQ,EAAA,UACPG,GAAAC,EACA,GAAAH,EACAv9C,EAAA29C,YAAAC,SAAAH,EAAAC,OACO,CACP,IAAAG,EAAA39C,EAAA49C,WAAAC,EAAA79C,EAAA89C,UACAN,IAAoBx9C,EAAA89C,WAAAN,GACpBD,IAAoBv9C,EAAA49C,YAAAL,GACpB,IAAAQ,EAAA/9C,EAAA49C,WAAAD,EAAAK,EAAAh+C,EAAA89C,UAAAD,EACAf,GAAgBl+B,KAAAk+B,EAAAl+B,KAAAm/B,EAAAr0C,IAAAozC,EAAApzC,IAAAs0C,EAAAn/B,MAAAi+B,EAAAj+B,MAAAk/B,EAAArB,OAAAI,EAAAJ,OAAAsB,GAGhB,GAAAX,EAAgB,OAyBhB,SAAAY,EAAA53B,GAEA,IADA,IAAA5c,KAAA3J,EAAAumB,EAAAwoB,cACQxoB,IACR5c,EAAAjC,MAAgB6e,MAAA3c,IAAA2c,EAAAy3B,UAAAl/B,KAAAyH,EAAAu3B,aAChBv3B,GAAAvmB,GAFaumB,EAAA1N,EAAA0N,IAIb,OAAA5c,EAcA,SAAAy0C,EAAAz0C,EAAA00C,GACA,QAAA19C,EAAA,EAAiBA,EAAAgJ,EAAA1L,OAAkB0C,IAAA,CACnC,IAAApC,EAAAoL,EAAAhJ,GACA4lB,EAAAhoB,EAAAgoB,IACA3c,EAAArL,EAAAqL,IACAkV,EAAAvgB,EAAAugB,KACAyH,EAAAy3B,WAAAp0C,EAAAy0C,IAAsC93B,EAAAy3B,UAAAp0C,EAAAy0C,GACtC93B,EAAAu3B,YAAAh/B,IAAiCyH,EAAAu3B,WAAAh/B,IAIjC,IAAAw/B,EAAA,KAoBA,SAAAC,EAAA37C,EAAA47C,GAGA,IAFA,IAAAC,EAAAC,EAAAC,EAAA,IAAA7gD,EAAA,EACA8gD,EAAAJ,EAAA50C,IAAAi1C,EAAAL,EAAA50C,IACAtC,EAAA1E,EAAA2E,WAAAu3C,EAAA,EAAmDx3C,EAAOA,IAAAE,YAAAs3C,IAAA,CAC1D,IAAAC,OAAA,EACA,MAAAz3C,EAAAzF,SAA8Bk9C,EAAAz3C,EAAA03C,qBAC9B,OAAA13C,EAAAzF,SACU,SADyBk9C,EAAA5D,EAAA7zC,GAAA03C,iBAGnC,QAAAr+C,EAAA,EAAmBA,EAAAo+C,EAAA9gD,OAAkB0C,IAAA,CACrC,IAAAq8C,EAAA+B,EAAAp+C,GACA,GAAAq8C,EAAApzC,KAAAg1C,GAAA5B,EAAAJ,QAAAiC,EAAA,CACAD,EAAAp+C,KAAAC,IAAAu8C,EAAAJ,OAAAgC,GACAC,EAAAr+C,KAAAyd,IAAA++B,EAAApzC,IAAAi1C,GACA,IAAAI,EAAAjC,EAAAl+B,KAAA0/B,EAAA1/B,KAAAk+B,EAAAl+B,KAAA0/B,EAAA1/B,KACAk+B,EAAAj+B,MAAAy/B,EAAA1/B,KAAA0/B,EAAA1/B,KAAAk+B,EAAAj+B,MAAA,EACA,GAAAkgC,EAAAN,EAAA,CACAF,EAAAn3C,EACAq3C,EAAAM,EACAP,EAAAO,GAAA,GAAAR,EAAA58C,UAAyDid,KAAAk+B,EAAAj+B,MAAAy/B,EAAA1/B,KAAAk+B,EAAAj+B,MAAAi+B,EAAAl+B,KAAAlV,IAAA40C,EAAA50C,KAAyE40C,EAClI,GAAAl3C,EAAAzF,UAAAo9C,IACanhD,EAAAghD,GAAAN,EAAA1/B,OAAAk+B,EAAAl+B,KAAAk+B,EAAAj+B,OAAA,QACb,WAGA0/B,IAAAD,EAAA1/B,MAAAk+B,EAAAj+B,OAAAy/B,EAAA50C,KAAAozC,EAAApzC,KACA40C,EAAA1/B,MAAAk+B,EAAAl+B,MAAA0/B,EAAA50C,KAAAozC,EAAAJ,UACS9+C,EAAAghD,EAAA,IAGT,OAAAL,GAAA,GAAAA,EAAA58C,SAKA,SAAAe,EAAA47C,GAGA,IAFA,IAAA5wB,EAAAhrB,EAAA6E,UAAAxJ,OACAkE,EAAA+W,SAAAkiC,cACAz6C,EAAA,EAAiBA,EAAAitB,EAASjtB,IAAA,CAC1BwB,EAAAk5C,OAAAz4C,EAAAjC,EAAA,GACAwB,EAAAm5C,SAAA14C,EAAAjC,GACA,IAAAq8C,EAAAkC,EAAA/8C,EAAA,GACA,GAAA66C,EAAApzC,KAAAozC,EAAAJ,QACAuC,EAAAX,EAAAxB,GACO,OAASp6C,OAAA9E,OAAA6C,GAAA69C,EAAA1/B,OAAAk+B,EAAAl+B,KAAAk+B,EAAAj+B,OAAA,QAEhB,OAAUnc,OAAA9E,OAAA,GAhB+BshD,CAAAX,EAAAC,IACzCD,GAAAE,GAAA,GAAAF,EAAA58C,UAAkEe,OAAA9E,UAClEygD,EAAAE,EAAAC,GAiBA,SAAAS,EAAAX,EAAAxB,GACA,OAAAwB,EAAA1/B,MAAAk+B,EAAAl+B,KAAA,GAAA0/B,EAAA1/B,MAAAk+B,EAAAj+B,MAAA,GACAy/B,EAAA50C,KAAAozC,EAAApzC,IAAA,GAAA40C,EAAA50C,KAAAozC,EAAAJ,OAAA,EAgEA,SAAAyC,EAAAlgD,EAAAq/C,GACA,IAAAhxC,EAAA8xC,EAEA18C,EAAA9E,EAAA+L,EAAA1K,EAAA0K,KACA,GAAAA,EAAA01C,uBACA,IACA,IAAAC,EAAA31C,EAAA01C,uBAAAf,EAAA1/B,KAAA0/B,EAAA50C,KACA41C,IAAkB58C,GAAA4K,EAAAgyC,GAAAC,WAAA3hD,EAAA0P,EAAA1P,QACb,MAAAyiC,IAEL,IAAA39B,GAAAiH,EAAA61C,oBAAA,CACA,IAAAv9C,EAAA0H,EAAA61C,oBAAAlB,EAAA1/B,KAAA0/B,EAAA50C,KACAzH,IAAgBS,GAAA08C,EAAAn9C,GAAAw9C,eAAA7hD,EAAAwhD,EAAAM,aAGhB,IAAAhgD,EAAA2e,EAAA1U,EAAAg2C,iBAAArB,EAAA1/B,KAAA0/B,EAAA50C,IAAA,GACA,IAAA2U,IAAApf,EAAAonB,IAAAjb,SAAA,GAAAiT,EAAA1c,SAAA0c,EAAA1F,WAAA0F,GAAA,CACA,IAAAuhC,EAAA3gD,EAAAonB,IAAA02B,wBACA,IAAAkC,EAAAX,EAAAsB,GAA+B,YAE/B,KADAvhC,EAtCA,SAAAshC,EAAAnnC,EAAA8lC,EAAAsB,GACA,IAAAlyB,EAAAlV,EAAA82B,WAAAvxC,OACA,GAAA2vB,GAAAkyB,EAAAl2C,IAAAk2C,EAAAlD,OACA,QAAAmD,EAAAv/C,KAAAC,IAAA,EAAAD,KAAAyd,IAAA2P,EAAA,EAAAptB,KAAAw/C,MAAApyB,GAAA4wB,EAAA50C,IAAAk2C,EAAAl2C,MAAAk2C,EAAAlD,OAAAkD,EAAAl2C,MAAA,IAAAjJ,EAAAo/C,IAAyI,CACzI,IAAAz4C,EAAAoR,EAAA82B,WAAA7uC,GACA,MAAA2G,EAAAzF,SAEA,IADA,IAAAk9C,EAAAz3C,EAAA03C,iBACA59C,EAAA,EAAuBA,EAAA29C,EAAA9gD,OAAkBmD,IAAA,CACzC,IAAA47C,EAAA+B,EAAA39C,GACA,GAAA+9C,EAAAX,EAAAxB,GAAqC,OAAA6C,EAAAv4C,EAAAk3C,EAAAxB,GAGrC,IAAAr8C,KAAA,GAAAitB,IAAAmyB,EAA0C,MAG1C,OAAArnC,EAuBAmnC,CAAA1gD,EAAAonB,IAAAi4B,EAAAsB,IACe,YAKf,GAFAj5C,EAAAi0C,QAAAv8B,EAAAsG,YAAuCjiB,EAAA9E,EAAA,MACvCygB,EArFA,SAAAgI,EAAAi4B,GACA,IAAAt+C,EAAAqmB,EAAA1N,WACA,OAAA3Y,GAAA,QAAA8T,KAAA9T,EAAA8G,WAAAw3C,EAAA1/B,KAAAyH,EAAA02B,wBAAAn+B,KACK5e,EACLqmB,EAiFA05B,CAAA1hC,EAAAigC,GACA57C,EAAA,CACA,GAAAiE,EAAAyzC,OAAA,GAAA13C,EAAAf,WAGA/D,EAAA0C,KAAAyd,IAAAngB,EAAA8E,EAAA4sC,WAAAvxC,SAGA2E,EAAA4sC,WAAAvxC,OAAA,CACA,IAAAiiD,EAAAvkC,EAAA/Y,EAAA4sC,WAAA1xC,GACA,OAAA6d,EAAA3U,WAAAk5C,EAAAvkC,EAAAshC,yBAAAl+B,OAAAy/B,EAAA1/B,MACAohC,EAAAtD,OAAA4B,EAAA50C,KACW9L,IAKX8E,GAAAzD,EAAAonB,KAAAzoB,GAAA8E,EAAA4sC,WAAAvxC,OAAA,MAAA2E,EAAA8mB,UAAA7nB,UACA28C,EAAA50C,IAAAhH,EAAA8mB,UAAAuzB,wBAAAL,OACOh9C,EAAAT,EAAAzB,MAAAsC,IAAA0kB,QAAAqG,KAIP,GAAAjtB,GAAA,GAAA8E,EAAAf,UAAA,MAAAe,EAAA4sC,WAAA1xC,EAAA,GAAAkJ,WACOpH,EA1FP,SAAAT,EAAAyD,EAAA9E,EAAA0gD,GAQA,IADA,IAAA2B,GAAA,EACA/mB,EAAAx2B,EACAw2B,GAAAj6B,EAAAonB,KADuB,CAEvB,IAAA0xB,EAAA94C,EAAAihD,QAAAC,YAAAjnB,GAAA,GACA,IAAA6e,EAAgB,YAChB,GAAAA,EAAAr1C,KAAAioB,SAAAotB,EAAA/3C,OAAA,CACA,IAAA88C,EAAA/E,EAAA1xB,IAAA02B,wBACA,GAAAD,EAAAl+B,KAAA0/B,EAAA1/B,MAAAk+B,EAAApzC,IAAA40C,EAAA50C,IAA6Du2C,EAAAlI,EAAAqI,cAC7D,MAAAtD,EAAAj+B,MAAAy/B,EAAA1/B,MAAAk+B,EAAAJ,OAAA4B,EAAA50C,KACY,MAD0Du2C,EAAAlI,EAAAsI,UAGtEnnB,EAAA6e,EAAA1xB,IAAA1N,WAEA,OAAAsnC,GAAA,EAAAA,EAAAhhD,EAAAihD,QAAAI,WAAA59C,EAAA9E,GAsEO2iD,CAAAthD,EAAAyD,EAAA9E,EAAA0gD,IAEP,MAAA5+C,IAAoBA,EAxGpB,SAAAT,EAAAof,EAAAigC,GACA,IAAAjgD,EAAAggD,EAAAhgC,EAAAigC,GACA57C,EAAArE,EAAAqE,KACA9E,EAAAS,EAAAT,OACAg5B,GAAA,EACA,MAAAl0B,EAAAf,WAAAe,EAAA2E,WAAA,CACA,IAAAy1C,EAAAp6C,EAAAq6C,wBACAnmB,EAAAkmB,EAAAl+B,MAAAk+B,EAAAj+B,OAAAy/B,EAAA1/B,MAAAk+B,EAAAl+B,KAAAk+B,EAAAj+B,OAAA,OAEA,OAAA5f,EAAAihD,QAAAI,WAAA59C,EAAA9E,EAAAg5B,GA+FoB4pB,CAAAvhD,EAAAof,EAAAigC,IAEpB,IAAAvG,EAAA94C,EAAAihD,QAAAC,YAAA9hC,GAAA,GACA,OAAU3e,MAAA+1B,OAAAsiB,IAAA0I,WAAA1I,EAAA2I,QAAA,GAGV,SAAA1B,EAAA/rB,EAAA2D,GACA,IAAAioB,EAAA5rB,EAAA6rB,iBACA,OAAAD,EAAA9gD,OAAA8gD,EAAAjoB,EAAA,IAAAioB,EAAA9gD,OAAA,GAAAk1B,EAAA8pB,wBAMA,SAAA4D,EAAA1hD,EAAAS,GACA,IAAArB,EAAAY,EAAAihD,QAAAU,WAAAlhD,GACAgD,EAAArE,EAAAqE,KACA9E,EAAAS,EAAAT,OAGA,MAAA8E,EAAAf,WAAAgF,EAAA+zC,QAAA/zC,EAAAyzC,OAAA,CACA,IAAA0C,EAAAkC,EAAA/D,EAAAv4C,EAAA9E,KAAA,GAIA,GAAA+I,EAAAyzC,OAAAx8C,GAAA,KAAAkW,KAAApR,EAAA6E,UAAA3J,EAAA,KAAAA,EAAA8E,EAAA6E,UAAAxJ,OAAA,CACA,IAAA8iD,EAAA7B,EAAA/D,EAAAv4C,EAAA9E,EAAA,EAAAA,EAAA,OACA,GAAAijD,EAAAn3C,KAAAozC,EAAApzC,IAAA,CACA,IAAAo3C,EAAA9B,EAAA/D,EAAAv4C,EAAA9E,IAAA,OACA,GAAAkjD,EAAAp3C,KAAAozC,EAAApzC,IACW,OAAAq3C,EAAAD,IAAAliC,KAAAiiC,EAAAjiC,OAGX,OAAAk+B,EAGA,MAAAp6C,EAAAf,WAAA1C,EAAAzB,MAAAsC,IAAAC,QAAAL,GAAAM,OAAAwsB,cAAA,CAEA,IAAAw0B,EAAAt3C,GAAA,EACA,GAAA9L,EAAA8E,EAAA4sC,WAAAvxC,OAAA,CACA,IAAAgS,EAAArN,EAAA4sC,WAAA1xC,GACA,GAAAmS,EAAApO,WAAgCq/C,EAAAjxC,EAAAgtC,yBAEhC,IAAAiE,GAAApjD,EAAA,CACA,IAAA0E,EAAAI,EAAA4sC,WAAA1xC,EAAA,GACA,GAAA0E,EAAAX,WAAiCq/C,EAAA1+C,EAAAy6C,wBAAyCrzC,GAAA,GAE1E,OAsCA,SAAAozC,EAAApzC,GACA,MAAAozC,EAAAmE,OAAyB,OAAAnE,EACzB,IAAAoE,EAAAx3C,EAAAozC,EAAApzC,IAAAozC,EAAAJ,OACA,OAAUhzC,IAAAw3C,EAAAxE,OAAAwE,EAAAtiC,KAAAk+B,EAAAl+B,KAAAC,MAAAi+B,EAAAj+B,OAzCVsiC,CAAAH,GAAAt+C,EAAAq6C,wBAAArzC,GASA,QAAAgtB,GAAA,EAAoBA,EAAA,EAASA,GAAA,EAC7B,GAAAA,EAAA,GAAA94B,EAAA,CACA,IAAAc,OAAA,EAAA+oB,EAAA,GAAA/kB,EAAAf,SAAAs5C,EAAAv4C,EAAA9E,EAAA,EAAAA,GACA,IAAAc,EAAAgE,EAAA4sC,WAAA1xC,EAAA,IAAA+D,SAAAs5C,EAAAv8C,GACA,GAAAA,EAAAiD,UAAA,MAAAjD,EAAAoI,SAAApI,EAAA,KACA,GAAA+oB,EAAA,CACA,IAAA25B,EAAApC,EAAAv3B,EAAA,GACA,GAAA25B,EAAA13C,IAAA03C,EAAA1E,OAAyC,OAAAqE,EAAAK,GAAA,SAEpC,GAAA1qB,EAAA,GAAA94B,EAAA4tB,EAAA9oB,GAAA,CACL,IAAA+Y,OAAA,EAAA4lC,EAAA,GAAA3+C,EAAAf,SAAAs5C,EAAAv4C,EAAA9E,IAAA,GACA,IAAA6d,EAAA/Y,EAAA4sC,WAAA1xC,IAAA+D,SAAAs5C,EAAAx/B,GACA,GAAAA,EAAA9Z,SAAA8Z,EAAA,KACA,GAAA4lC,EAAA,CACA,IAAAC,EAAAtC,EAAAqC,GAAA,GACA,GAAAC,EAAA53C,IAAA43C,EAAA5E,OAAyC,OAAAqE,EAAAO,GAAA,IAKzC,OAAAP,EAAA/B,EAAA,GAAAt8C,EAAAf,SAAAs5C,EAAAv4C,KAAA,OAGA,SAAAq+C,EAAAjE,EAAAl+B,GACA,MAAAk+B,EAAAyE,MAAwB,OAAAzE,EACxB,IAAA/vC,EAAA6R,EAAAk+B,EAAAl+B,KAAAk+B,EAAAj+B,MACA,OAAUnV,IAAAozC,EAAApzC,IAAAgzC,OAAAI,EAAAJ,OAAA99B,KAAA7R,EAAA8R,MAAA9R,GASV,SAAAy0C,EAAAviD,EAAAzB,EAAA0gB,GACA,IAAAujC,EAAAxiD,EAAAzB,MAAA4oC,EAAAnnC,EAAA0K,KAAA+3C,cACAD,GAAAjkD,GAA2ByB,EAAA0iD,YAAAnkD,GAC3B4oC,GAAAnnC,EAAAonB,KAA2BpnB,EAAA2iD,QAC3B,IACA,OAAA1jC,IACG,QACHujC,GAAAjkD,GAA6ByB,EAAA0iD,YAAAF,GAC7Brb,GAAAnnC,EAAAonB,KAAA+f,GAAuCA,EAAAwb,SAmCvC,IAAAC,EAAA,kBAiCA,IAAAC,EAAA,KAAAC,EAAA,KAAAC,GAAA,EACA,SAAAn0B,EAAA5uB,EAAAzB,EAAAk5B,GACA,OAAAorB,GAAAtkD,GAAAukD,GAAArrB,EAAiDsrB,GACjDF,EAAAtkD,EAAsBukD,EAAArrB,EACtBsrB,EAAA,MAAAtrB,GAAA,QAAAA,EAjEA,SAAAz3B,EAAAzB,EAAAk5B,GACA,IAAAkgB,EAAAp5C,EAAAiC,UACAkqB,EAAA,MAAA+M,EAAAkgB,EAAAxsB,QAAArM,IAAA64B,EAAAzsB,OAAAysB,EAAAxsB,QAAA7pB,IAAAq2C,EAAAzsB,OACA,OAAAq3B,EAAAviD,EAAAzB,EAAA,WAGA,IAFA,IACA6oB,EADApnB,EAAAihD,QAAAU,WAAAj3B,EAAAjqB,KACAgD,OACW,CACX,IAAAu/C,EAAAhjD,EAAAihD,QAAAC,YAAA95B,GAAA,GACA,IAAA47B,EAAqB,MACrB,GAAAA,EAAAv/C,KAAAioB,QAAA,CAAiCtE,EAAA47B,EAAA57B,IAAmB,MACpDA,EAAA47B,EAAA57B,IAAA1N,WAGA,IADA,IAAA2lC,EAAAqC,EAAA1hD,EAAA0qB,EAAAjqB,KACA0H,EAAAif,EAAAhf,WAAoCD,EAAOA,IAAAE,YAAA,CAC3C,IAAA46C,OAAA,EACA,MAAA96C,EAAAzF,SAAgCugD,EAAA96C,EAAA03C,qBAChC,OAAA13C,EAAAzF,SACY,SADyBugD,EAAAjH,EAAA7zC,EAAA,EAAAA,EAAAG,UAAAxJ,QAAA+gD,iBAErC,QAAAr+C,EAAA,EAAqBA,EAAAyhD,EAAAnkD,OAAkB0C,IAAA,CACvC,IAAAm/C,EAAAsC,EAAAzhD,GACA,GAAAm/C,EAAAlD,OAAAkD,EAAAl2C,MAAA,MAAAgtB,EAAAkpB,EAAAlD,OAAA4B,EAAA50C,IAAA,EAAAk2C,EAAAl2C,IAAA40C,EAAA5B,OAAA,GACW,UAGX,WA0CAyF,CAAAljD,EAAAzB,EAAAk5B,GApCA,SAAAz3B,EAAAzB,EAAAk5B,GACA,IACAvM,EADA3sB,EAAAiC,UACA0qB,MACA,IAAAA,EAAAnqB,OAAAypB,YAAkC,SAClC,IAAA7rB,EAAAusB,EAAA3pB,aAAA01C,GAAAt4C,EAAAgtB,EAAAhtB,GAAAusB,EAAAnqB,OAAAwkB,QAAAqG,KACA+rB,EAAAwL,eAGA,OAAAP,EAAA/tC,KAAAqW,EAAAnqB,OAAAmZ,cAAAy9B,EAAAyL,OAGAb,EAAAviD,EAAAzB,EAAA,WAMA,IAAA8kD,EAAA1L,EAAAuF,WAAA,GAAAoG,EAAA3L,EAAA4L,UAAAC,EAAA7L,EAAA8L,YACAC,EAAA/L,EAAAgM,eACAhM,EAAAyL,OAAA,OAAA3rB,EAAA,aACA,IACA/vB,IADAwjB,EAAApO,MAAA9c,EAAAihD,QAAA2C,YAAA14B,EAAA7nB,UAAArD,EAAAonB,KACAjb,SAAA,GAAAwrC,EAAA4L,UAAA7gD,SAAAi1C,EAAA4L,UAAA5L,EAAA4L,UAAA7pC,aACA4pC,GAAA3L,EAAA4L,WAAAC,GAAA7L,EAAA8L,YAKA,OAHA9L,EAAAkM,kBACAlM,EAAAzV,SAAAmhB,GACA,MAAAK,IAA+B/L,EAAAgM,eAAAD,GAC/Bh8C,IAlBK,QAAA+vB,GAAA,YAAAA,EAAAwf,EAAAtrB,EA4BLm4B,CAAA9jD,EAAAzB,EAAAk5B,IAsFA,IAIAssB,EAAA,SAAAhjD,EAAAwJ,EAAA6c,EAAA6oB,GACA5xC,KAAA0C,SACA1C,KAAAkM,WACAlM,KAAA+oB,MAGAA,EAAAw1B,WAAAv+C,KAGAA,KAAA4xC,aACA5xC,KAAA2lD,MAdA,GAiBAzkC,GAA0B0kC,gBAAkBzkC,cAAA,GAAqBoM,MAAQpM,cAAA,GAAqBiiC,QAAUjiC,cAAA,GAAqB2hC,WAAa3hC,cAAA,GAAqBgiC,YAAchiC,cAAA,GAAqB4hC,UAAY5hC,cAAA,GAAqB0kC,UAAY1kC,cAAA,GAAqB2kC,aAAe3kC,cAAA,IAInRukC,EAAAh/C,UAAAq/C,cAAA,WAA8D,UAC9DL,EAAAh/C,UAAAs/C,YAAA,WAA0D,UAC1DN,EAAAh/C,UAAAu/C,YAAA,WAA0D,UAC1DP,EAAAh/C,UAAAw/C,YAAA,WAA0D,UAE1DhlC,EAAA0kC,eAAAllC,IAAA,WAAqD,UAMrDglC,EAAAh/C,UAAAy/C,UAAA,WAAsD,aAKtDT,EAAAh/C,UAAA0/C,UAAA,WAAsD,UAGtDllC,EAAAqM,KAAA7M,IAAA,WAEA,IADA,IAAA6M,EAAA,EACApqB,EAAA,EAAiBA,EAAAnD,KAAAkM,SAAAzL,OAA0B0C,IAAOoqB,GAAAvtB,KAAAkM,SAAA/I,GAAAoqB,KAClD,OAAAA,GAKArM,EAAAkiC,OAAA1iC,IAAA,WAA6C,UAE7CglC,EAAAh/C,UAAA2/C,QAAA,WACArmD,KAAA0C,OAAA,KACA1C,KAAA+oB,IAAAw1B,YAAAv+C,OAAoCA,KAAA+oB,IAAAw1B,WAAA,MACpC,QAAAp7C,EAAA,EAAiBA,EAAAnD,KAAAkM,SAAAzL,OAA0B0C,IACtCnD,KAAAkM,SAAA/I,GAAAkjD,WAGLX,EAAAh/C,UAAA4/C,eAAA,SAAAx8C,GACA,QAAA3G,EAAA,EAAAf,EAAApC,KAAAmjD,WAAwChgD,EAAAnD,KAAAkM,SAAAzL,OAA0B0C,IAAA,CAClE,IAAAy4B,EAAA57B,KAAAkM,SAAA/I,GACA,GAAAy4B,GAAA9xB,EAAuB,OAAA1H,EACvBA,GAAAw5B,EAAArO,OAIArM,EAAA4hC,UAAApiC,IAAA,WACA,OAAA1gB,KAAA0C,OAAA4jD,eAAAtmD,OAGAkhB,EAAAiiC,WAAAziC,IAAA,WACA,OAAA1gB,KAAA0C,OAAA1C,KAAA0C,OAAA4jD,eAAAtmD,WAAAojD,OAAA,GAGAliC,EAAA6hC,SAAAriC,IAAA,WACA,OAAA1gB,KAAA8iD,UAAA9iD,KAAAutB,MAGArM,EAAA2kC,SAAAnlC,IAAA,WACA,OAAA1gB,KAAAmjD,WAAAnjD,KAAAutB,KAAA,EAAAvtB,KAAAojD,QAIAsC,EAAAh/C,UAAA6/C,gBAAA,SAAAx9B,EAAAzoB,EAAAg5B,GAGA,GAAAt5B,KAAA4xC,YAAA5xC,KAAA4xC,WAAA9jC,SAAA,GAAAib,EAAA1kB,SAAA0kB,IAAA1N,YAAA,CACA,GAAAie,EAAA,GACA,IAAAktB,EAAA/L,EACA,GAAA1xB,GAAA/oB,KAAA4xC,WACA4U,EAAAz9B,EAAAipB,WAAA1xC,EAAA,OACO,CACP,KAAAyoB,EAAA1N,YAAArb,KAAA4xC,YAAmD7oB,IAAA1N,WACnDmrC,EAAAz9B,EAAA4nB,gBAEA,KAAA6V,MAAA/L,EAAA+L,EAAAjI,aAAA9D,EAAA/3C,QAAA1C,OAAoFwmD,IAAA7V,gBACpF,OAAA6V,EAAAxmD,KAAAsmD,eAAA7L,KAAAltB,KAAAvtB,KAAAmjD,WAEA,IAAAsD,EAAAC,EACA,GAAA39B,GAAA/oB,KAAA4xC,WACA6U,EAAA19B,EAAAipB,WAAA1xC,OACO,CACP,KAAAyoB,EAAA1N,YAAArb,KAAA4xC,YAAmD7oB,IAAA1N,WACnDorC,EAAA19B,EAAA/e,YAEA,KAAAy8C,MAAAC,EAAAD,EAAAlI,aAAAmI,EAAAhkD,QAAA1C,OAAsFymD,IAAAz8C,YACtF,OAAAy8C,EAAAzmD,KAAAsmD,eAAAI,GAAA1mD,KAAA6lD,SAMA,IAAAv4B,EACA,GAAAttB,KAAA4xC,YAAA5xC,KAAA4xC,YAAA5xC,KAAA+oB,KAAA/oB,KAAA+oB,IAAAjb,SAAA9N,KAAA4xC,YACAtkB,EAAA,EAAAvE,EAAA2pB,wBAAA1yC,KAAA4xC,iBACG,GAAA5xC,KAAA+oB,IAAAhf,WAAA,CACH,MAAAzJ,EAAsB,QAAAmoC,EAAA1f,GAAwB0f,IAAAptB,WAAA,CAC9C,GAAAotB,GAAAzoC,KAAA+oB,IAAA,CAA+BuE,GAAA,EAAe,MAC9C,GAAAmb,EAAAptB,WAAAtR,YAAA0+B,EAAmD,MAEnD,SAAAnb,GAAAhtB,GAAAyoB,EAAAipB,WAAAvxC,OAA2D,QAAAkmD,EAAA59B,GAA0B49B,IAAAtrC,WAAA,CACrF,GAAAsrC,GAAA3mD,KAAA+oB,IAAA,CAAiCuE,GAAA,EAAc,MAC/C,GAAAq5B,EAAAtrC,WAAA6Q,WAAAy6B,EAAsD,OAGtD,aAAAr5B,EAAAgM,EAAA,EAAAhM,GAAAttB,KAAA6lD,SAAA7lD,KAAAmjD,YAKAuC,EAAAh/C,UAAAm8C,YAAA,SAAA95B,EAAA69B,GACA,QAAAzpB,GAAA,EAAAvB,EAAA7S,EAAmC6S,EAAKA,IAAAvgB,WAAA,CACxC,IAAAo/B,EAAAz6C,KAAA6mD,QAAAjrB,GACA,GAAA6e,KAAAmM,GAAAnM,EAAAr1C,MAAA,CAEA,IAAA+3B,IAAAsd,EAAAqM,UACA,GAAArM,EAAAqM,QAAAziD,SAAAo2C,EAAAqM,QAAAh5C,SAAA,GAAAib,EAAA1kB,SAAA0kB,IAAA1N,YAAAo/B,EAAAqM,SAAA/9B,GAGS,OAAA0xB,EAFAtd,GAAA,KAOTuoB,EAAAh/C,UAAAmgD,QAAA,SAAA99B,GAEA,IADA,IAAA0xB,EAAA1xB,EAAAw1B,WACA3iB,EAAA6e,EAAsB7e,EAAKA,IAAAl5B,OAAoB,GAAAk5B,GAAA57B,KAAmB,OAAAy6C,GAGlEiL,EAAAh/C,UAAAs8C,WAAA,SAAAj6B,EAAAzoB,EAAAg5B,GACA,QAAAmF,EAAA1V,EAAsB0V,EAAMA,IAAApjB,WAAA,CAC5B,IAAAo/B,EAAAz6C,KAAA6mD,QAAApoB,GACA,GAAAgc,EAAe,OAAAA,EAAA8L,gBAAAx9B,EAAAzoB,EAAAg5B,GAEf,UAMAosB,EAAAh/C,UAAAqgD,OAAA,SAAA3kD,GACA,QAAAe,EAAA,EAAA7C,EAAA,EAA6B6C,EAAAnD,KAAAkM,SAAAzL,OAA0B0C,IAAA,CACvD,IAAA2G,EAAA9J,KAAAkM,SAAA/I,GAAA/C,EAAAE,EAAAwJ,EAAAyjB,KACA,GAAAjtB,GAAA8B,GAAAhC,GAAAE,EAAA,CACA,MAAAwJ,EAAAs5C,QAAAt5C,EAAAoC,SAAAzL,QAAsDqJ,IAAAoC,SAAA,GACtD,OAAApC,EAEA,GAAA1H,EAAAhC,EAAoB,OAAA0J,EAAAi9C,OAAA3kD,EAAA9B,EAAAwJ,EAAAs5C,QACpB9iD,EAAAF,IAKAslD,EAAAh/C,UAAA48C,WAAA,SAAAlhD,GACA,IAAApC,KAAA4xC,WAAyB,OAASxsC,KAAApF,KAAA+oB,IAAAzoB,OAAA,GAClC,QAAAA,EAAA,EAAA6C,EAAA,GAA8BA,IAAA,CAC9B,GAAA7C,GAAA8B,EAAA,CACA,KAAAe,EAAAnD,KAAAkM,SAAAzL,SAAAT,KAAAkM,SAAA/I,GAAAyiD,gBAAA5lD,KAAAkM,SAAA/I,GAAA4lB,IAAA1N,YAAArb,KAAA4xC,aAAmIzuC,IACnI,OAAciC,KAAApF,KAAA4xC,WACdtxC,OAAA6C,GAAAnD,KAAAkM,SAAAzL,OAAAT,KAAA4xC,WAAAI,WAAAvxC,OAAAg9C,EAAAz9C,KAAAkM,SAAA/I,GAAA4lB,MAEA,GAAA5lB,GAAAnD,KAAAkM,SAAAzL,OAAoC,UAAAgG,MAAA,oBAAArE,GACpC,IAAA0H,EAAA9J,KAAAkM,SAAA/I,GAAA/C,EAAAE,EAAAwJ,EAAAyjB,KACA,GAAAnrB,EAAAhC,EAAoB,OAAA0J,EAAAw5C,WAAAlhD,EAAA9B,EAAAwJ,EAAAs5C,QACpB9iD,EAAAF,IAMAslD,EAAAh/C,UAAAsgD,WAAA,SAAAplD,EAAAC,EAAA42B,GAGA,QAFA,IAAAA,MAAA,GAEA,GAAAz4B,KAAAkM,SAAAzL,OACK,OAAS2E,KAAApF,KAAA4xC,WAAAhwC,OAAAC,KAAAolD,WAAA,EAAAC,SAAAlnD,KAAA4xC,WAAAI,WAAAvxC,QAGd,IADA,IAAAwmD,GAAA,EAAAC,GAAA,EACA5mD,EAAAm4B,EAAAt1B,EAAA,GAAiCA,IAAA,CACjC,IAAA2G,EAAA9J,KAAAkM,SAAA/I,GAAA/C,EAAAE,EAAAwJ,EAAAyjB,KACA,OAAA05B,GAAArlD,GAAAxB,EAAA,CACA,IAAA+mD,EAAA7mD,EAAAwJ,EAAAs5C,OAEA,GAAAxhD,GAAAulD,GAAAtlD,GAAAzB,EAAA0J,EAAAs5C,QAAAt5C,EAAA1E,MACA0E,EAAA8nC,YAAA5xC,KAAA4xC,WAAA9jC,SAAAhE,EAAA8nC,YACS,OAAA9nC,EAAAk9C,WAAAplD,EAAAC,EAAAslD,GAETvlD,EAAAtB,EACA,QAAAsD,EAAAT,EAAqBS,EAAA,EAAOA,IAAA,CAC5B,IAAAxC,EAAApB,KAAAkM,SAAAtI,EAAA,GACA,GAAAxC,EAAAmsB,MAAAnsB,EAAA2nB,IAAA1N,YAAArb,KAAA4xC,aAAAxwC,EAAAgmD,aAAA,IACAH,EAAAxJ,EAAAr8C,EAAA2nB,KAAA,EACA,MAEAnnB,GAAAR,EAAAmsB,MAEA,GAAA05B,IAA6BA,EAAA,GAE7B,GAAAA,GAAA,IAAA7mD,EAAAyB,GAAAsB,GAAAnD,KAAAkM,SAAAzL,OAAA,IACAoB,EAAAzB,EACA,QAAAinD,EAAAlkD,EAAA,EAA2BkkD,EAAArnD,KAAAkM,SAAAzL,OAA4B4mD,IAAA,CACvD,IAAAlpC,EAAAne,KAAAkM,SAAAm7C,GACA,GAAAlpC,EAAAoP,MAAApP,EAAA4K,IAAA1N,YAAArb,KAAA4xC,aAAAzzB,EAAAipC,cAAA,IACAF,EAAAzJ,EAAAt/B,EAAA4K,KACA,MAEAlnB,GAAAsc,EAAAoP,MAEA,GAAA25B,IAA2BA,EAAAlnD,KAAA4xC,WAAAI,WAAAvxC,QAC3B,MAEAH,EAAAF,EAEA,OAAUgF,KAAApF,KAAA4xC,WAAAhwC,OAAAC,KAAAolD,aAAAC,aAGVxB,EAAAh/C,UAAA0gD,aAAA,SAAAn7B,GACA,GAAAjsB,KAAAojD,SAAApjD,KAAA4xC,aAAA5xC,KAAAkM,SAAAzL,OAAiE,SACjE,IAAAqJ,EAAA9J,KAAAkM,SAAA+f,EAAA,IAAAjsB,KAAAkM,SAAAzL,OAAA,GACA,UAAAqJ,EAAAyjB,MAAAzjB,EAAAs9C,aAAAn7B,IAIAy5B,EAAAh/C,UAAA6+C,YAAA,SAAAnjD,GACA,IAAArB,EAAAf,KAAAsjD,WAAAlhD,GACAgD,EAAArE,EAAAqE,KACA9E,EAAAS,EAAAT,OACA,MAAA8E,EAAAf,UAAA/D,GAAA8E,EAAA4sC,WAAAvxC,OACK,UAAA4xB,WAAA,qBAAAjwB,GACL,OAAAgD,EAAA4sC,WAAA1xC,IASAolD,EAAAh/C,UAAAof,aAAA,SAAAwyB,EAAA5J,EAAAriC,EAAAi7C,GAGA,IADA,IAAA1lD,EAAAoB,KAAAyd,IAAA63B,EAAA5J,GAAA7sC,EAAAmB,KAAAC,IAAAq1C,EAAA5J,GACAvrC,EAAA,EAAA7C,EAAA,EAA6B6C,EAAAnD,KAAAkM,SAAAzL,OAA0B0C,IAAA,CACvD,IAAA2G,EAAA9J,KAAAkM,SAAA/I,GAAA/C,EAAAE,EAAAwJ,EAAAyjB,KACA,GAAA3rB,EAAAtB,GAAAuB,EAAAzB,EACO,OAAA0J,EAAAgc,aAAAwyB,EAAAh4C,EAAAwJ,EAAAs5C,OAAA1U,EAAApuC,EAAAwJ,EAAAs5C,OAAA/2C,EAAAi7C,GACPhnD,EAAAF,EAGA,IAAAmnD,EAAAvnD,KAAAsjD,WAAAhL,GAAAkP,EAAAxnD,KAAAsjD,WAAA5U,GACA+P,EAAApyC,EAAAy4C,eAEA2C,GAAA,EAKA,IAAAp+C,EAAAyzC,OAAAzzC,EAAAi0C,SAAAhF,GAAA5J,EAAA,CACA,IAAAttC,EAAAmmD,EAAAniD,KAAA4sC,WAAAuV,EAAAjnD,OAAA,GACAmnD,EAAArmD,IAAA,MAAAA,EAAAoI,UAAA,SAAApI,EAAAk9C,iBAGA,GAAAgJ,GAAAG,GAAAp+C,EAAAi0C,SACAS,EAAAwJ,EAAAniD,KAAAmiD,EAAAjnD,OAAAm+C,EAAAiJ,WAAAjJ,EAAAkJ,gBACA5J,EAAAyJ,EAAApiD,KAAAoiD,EAAAlnD,OAAAm+C,EAAAyG,UAAAzG,EAAA2G,aAFA,CAQA,IAAAwC,GAAA,EACA,IAAAnJ,EAAAoJ,QAAAvP,GAAA5J,KAAA+Y,EAAA,CACAhJ,EAAAqJ,SAAAP,EAAAniD,KAAAmiD,EAAAjnD,QACA,IACAg4C,GAAA5J,GAA2B+P,EAAAoJ,OAAAL,EAAApiD,KAAAoiD,EAAAlnD,QAC3BsnD,GAAA,EACK,MAAAzgD,GAKL,KAAAA,aAAA4gD,cAA2C,MAAA5gD,GAI3C,IAAAygD,EAAA,CACA,GAAAtP,EAAA5J,EAAA,CAAwB,IAAAvJ,EAAAoiB,EAAqBA,EAAAC,EAAqBA,EAAAriB,EAClE,IAAAxgC,EAAA+W,SAAAkiC,cACAj5C,EAAAk5C,OAAA2J,EAAApiD,KAAAoiD,EAAAlnD,QACAqE,EAAAm5C,SAAAyJ,EAAAniD,KAAAmiD,EAAAjnD,QACAm+C,EAAA+G,kBACA/G,EAAA5a,SAAAl/B,MAKA+gD,EAAAh/C,UAAAshD,eAAA,SAAAC,GACA,OAAAjoD,KAAA4xC,YAAA,aAAAqW,EAAAtlD,MAGAue,EAAA4kC,YAAAplC,IAAA,WACA,OAAA1gB,KAAA4xC,YAAA5xC,KAAA4xC,YAAA5xC,KAAA+oB,MAAA/oB,KAAA+oB,IAAAjb,SAAA9N,KAAA4xC,aAKA8T,EAAAh/C,UAAAwhD,UAAA,SAAAtmD,EAAAC,GACA,QAAAvB,EAAA,EAAA6C,EAAA,EAA6BA,EAAAnD,KAAAkM,SAAAzL,OAA0B0C,IAAA,CACvD,IAAA2G,EAAA9J,KAAAkM,SAAA/I,GAAA/C,EAAAE,EAAAwJ,EAAAyjB,KACA,GAAAjtB,GAAAF,EAAAwB,GAAAxB,GAAAyB,GAAAvB,EAAAsB,EAAAxB,GAAAyB,EAAAvB,EAAA,CACA,IAAA6nD,EAAA7nD,EAAAwJ,EAAAs5C,OAAAgF,EAAAhoD,EAAA0J,EAAAs5C,OACA,GAAAxhD,GAAAumD,GAAAtmD,GAAAumD,EAKA,OAJApoD,KAAA2lD,MAAA/jD,GAAAtB,GAAAuB,GAAAzB,EAzUA,SA0UAwB,GAAAumD,GAAAtmD,GAAAumD,IACAt+C,EAAAg8C,aAAAh8C,EAAAif,IAAA1N,YAAArb,KAAA4xC,WACc9nC,EAAAo+C,UAAAtmD,EAAAumD,EAAAtmD,EAAAsmD,GAD+Dr+C,EAAA67C,MA3U7E,GA+UA77C,EAAA67C,MA/UA,EAkVArlD,EAAAF,EAEAJ,KAAA2lD,MApVA,GAuVAD,EAAAh/C,UAAA2hD,iBAAA,WAEA,IADA,IAAAjgC,EAAA,EACAhjB,EAAApF,KAAA0C,OAA8B0C,EAAMA,IAAA1C,OAAA0lB,IAAA,CACpC,IAAAu9B,EAAA,GAAAv9B,EA1VA,IA2VAhjB,EAAAugD,UAA6BvgD,EAAAugD,WAI7B7gD,OAAAuc,iBAAAqkC,EAAAh/C,UAAAwa,GAIA,IAAAonC,KAIAC,EAAA,SAAA7C,GACA,SAAA6C,EAAA7lD,EAAA8lD,EAAA7mD,EAAAS,GACA,IAAA89B,EAAAnX,EAAAy/B,EAAA7lD,KAAA4kB,MAKA,GAJA,mBAAAwB,IAAmCA,IAAApnB,EAAA,WACnC,OAAAu+B,EACAA,EAAAx9B,OAAwBw9B,EAAAx9B,OAAA4jD,eAAApmB,QAAxB,EADkB99B,MAGlBomD,EAAA7lD,KAAAC,KAAA8yC,IAAA,CACA,MAAA3sB,EAAA1kB,SAAA,CACA,IAAAU,EAAA2W,SAAAC,cAAA,QACA5W,EAAAisC,YAAAjoB,GACAA,EAAAhkB,EAEAgkB,EAAAu1B,iBAAA,EACAv1B,EAAA0/B,UAAAn8C,IAAA,sBAEAo5C,EAAA9+C,KAAA5G,KAAA0C,EAAA4lD,EAAAv/B,EAAA,MACA/oB,KAAAwoD,SACAtoB,EAAAlgC,KAGA0lD,IAAA6C,EAAA5+C,UAAA+7C,GACA6C,EAAA7hD,UAAA5B,OAAA4Q,OAAAgwC,KAAAh/C,WACA6hD,EAAA7hD,UAAAiG,YAAA47C,EAEA,IAAAjsB,GAA8BspB,gBAAkBzkC,cAAA,IAuBhD,OArBAmb,EAAAspB,eAAAllC,IAAA,WACA,OAAA1gB,KAAAwoD,OAAA7lD,KAAAspB,KAAA,GAGAs8B,EAAA7hD,UAAAq/C,cAAA,SAAAyC,GACA,OAvYA,GAuYAxoD,KAAA2lD,OAAA6C,EAAA7lD,KAAAo4B,GAAA/6B,KAAAwoD,OAAA7lD,OAGA4lD,EAAA7hD,UAAAy/C,UAAA,WAA8D,OAASr9C,QAAA,IAEvEy/C,EAAA7hD,UAAA0/C,UAAA,SAAAj8C,GACA,IAAAu+C,EAAA1oD,KAAAwoD,OAAA5lD,KAAAwjD,UACA,QAAAsC,KAAAv+C,IAGAo+C,EAAA7hD,UAAAshD,eAAA,SAAAC,GACA,mBAAAA,EAAAtlD,MAAA3C,KAAAwoD,OAAA5lD,KAAA+lD,iBAGA7jD,OAAAuc,iBAAAknC,EAAA7hD,UAAA41B,GAEAisB,EAhDA,CAiDC7C,GAEDkD,EAAA,SAAAlD,GACA,SAAAkD,EAAAlmD,EAAAqmB,EAAA8/B,EAAA5pD,GACAymD,EAAA9+C,KAAA5G,KAAA0C,EAAA4lD,EAAAv/B,EAAA,MACA/oB,KAAA6oD,UACA7oD,KAAAf,OAGAymD,IAAAkD,EAAAj/C,UAAA+7C,GACAkD,EAAAliD,UAAA5B,OAAA4Q,OAAAgwC,KAAAh/C,WACAkiD,EAAAliD,UAAAiG,YAAAi8C,EAEA,IAAA7jB,GAA8BxX,MAAQpM,cAAA,IAmBtC,OAjBA4jB,EAAAxX,KAAA7M,IAAA,WAA+C,OAAA1gB,KAAAf,KAAAwB,QAE/CmoD,EAAAliD,UAAA6/C,gBAAA,SAAAx9B,EAAAzoB,GACA,OAAAyoB,GAAA/oB,KAAA6oD,QAA8B7oD,KAAAmjD,YAAA7iD,EAAAN,KAAAutB,KAAA,GAC9BvtB,KAAAmjD,WAAA7iD,GAGAsoD,EAAAliD,UAAA48C,WAAA,SAAAlhD,GACA,OAAYgD,KAAApF,KAAA6oD,QAAAvoD,OAAA8B,IAGZwmD,EAAAliD,UAAAshD,eAAA,SAAAc,GACA,wBAAAA,EAAAnmD,MAAAmmD,EAAA3+B,OAAAlgB,WAAA6+C,EAAAC,UAGAjkD,OAAAuc,iBAAAunC,EAAAliD,UAAAq+B,GAEA6jB,EA9BA,CA+BClD,GAODsD,EAAA,SAAAtD,GACA,SAAAsD,EAAAtmD,EAAAg4B,EAAA3R,EAAA6oB,GACA8T,EAAA9+C,KAAA5G,KAAA0C,KAAAqmB,EAAA6oB,GACA5xC,KAAA06B,OAwCA,OArCAgrB,IAAAsD,EAAAr/C,UAAA+7C,GACAsD,EAAAtiD,UAAA5B,OAAA4Q,OAAAgwC,KAAAh/C,WACAsiD,EAAAtiD,UAAAiG,YAAAq8C,EAEAA,EAAAtzC,OAAA,SAAAhT,EAAAg4B,EAAA1c,EAAArc,GACA,IAAAsnD,EAAAtnD,EAAAunD,UAAAxuB,EAAA/3B,KAAA0K,MACAzK,EAAAqmD,KAAAvuB,EAAA/4B,EAAAqc,GAGA,OAFApb,KAAAmmB,MACOnmB,EAAQipB,EAAA,cAAagoB,WAAAn4B,SAAAgf,EAAA/3B,KAAAC,KAAA2kB,MAAAmT,EAAA1c,KAC5B,IAAAgrC,EAAAtmD,EAAAg4B,EAAA93B,EAAAmmB,IAAAnmB,EAAAgvC,YAAAhvC,EAAAmmB,MAGAigC,EAAAtiD,UAAAy/C,UAAA,WAA4D,OAASzrB,KAAA16B,KAAA06B,KAAA/3B,KAAA0K,KAAA7I,MAAAxE,KAAA06B,KAAAl2B,MAAAqtC,eAAA7xC,KAAA4xC,aAErEoX,EAAAtiD,UAAAs/C,YAAA,SAAAtrB,GAAoE,OApdpE,GAodoE16B,KAAA2lD,OAAA3lD,KAAA06B,KAAAK,GAAAL,IAEpEsuB,EAAAtiD,UAAAwhD,UAAA,SAAAtmD,EAAAC,GAGA,GAFA6jD,EAAAh/C,UAAAwhD,UAAAthD,KAAA5G,KAAA4B,EAAAC,GAvdA,GAydA7B,KAAA2lD,MAAA,CAEA,IADA,IAAAjjD,EAAA1C,KAAA0C,QACAA,EAAA0C,MAA4B1C,WAC5BA,EAAAijD,MAAA3lD,KAAA2lD,QAAsCjjD,EAAAijD,MAAA3lD,KAAA2lD,OACtC3lD,KAAA2lD,MA7dA,IAieAqD,EAAAtiD,UAAAlG,MAAA,SAAAoB,EAAAC,EAAAF,GACA,IAAA6sB,EAAAw6B,EAAAtzC,OAAA1V,KAAA0C,OAAA1C,KAAA06B,MAAA,EAAA/4B,GACA8lB,EAAAznB,KAAAkM,SAAAqhB,EAAAvtB,KAAAutB,KACA1rB,EAAA0rB,IAAoB9F,EAAA0hC,GAAA1hC,EAAA5lB,EAAA0rB,EAAA5rB,IACpBC,EAAA,IAAmB6lB,EAAA0hC,GAAA1hC,EAAA,EAAA7lB,EAAAD,IACnB,QAAAwB,EAAA,EAAmBA,EAAAskB,EAAAhnB,OAAkB0C,IAAOskB,EAAAtkB,GAAAT,OAAA8rB,EAE5C,OADAA,EAAAtiB,SAAAub,EACA+G,GAGAw6B,EA3CA,CA4CCtD,GAKD0D,EAAA,SAAA1D,GACA,SAAA0D,EAAA1mD,EAAA0C,EAAAikD,EAAAC,EAAAvgC,EAAA6oB,EAAAkV,EAAAnlD,EAAAS,GACAsjD,EAAA9+C,KAAA5G,KAAA0C,EAAA0C,EAAAsyB,OAAA4wB,KAAAv/B,EAAA6oB,GACA5xC,KAAA8mD,UACA9mD,KAAAoF,OACApF,KAAAqpD,YACArpD,KAAAspD,YACA1X,GAAqB5xC,KAAAupD,eAAA5nD,EAAAS,GAGrBsjD,IAAA0D,EAAAz/C,UAAA+7C,GACA0D,EAAA1iD,UAAA5B,OAAA4Q,OAAAgwC,KAAAh/C,WACA0iD,EAAA1iD,UAAAiG,YAAAy8C,EAEA,IAAAnjB,GAA8B1Y,MAAQpM,cAAA,GAAqBiiC,QAAUjiC,cAAA,IA6MrE,OAlMAioC,EAAA1zC,OAAA,SAAAhT,EAAA0C,EAAAikD,EAAAC,EAAA3nD,EAAAS,GACA,IAAA4N,EAEAw5C,EAAAP,EAAAtnD,EAAAunD,UAAA9jD,EAAAzC,KAAA0K,MACAzK,EAAAqmD,KAAA7jD,EAAAzD,EAAA,WAGA,OAAA6nD,EACAA,EAAA9mD,OAA2B8mD,EAAA9mD,OAAA4jD,eAAAkD,QAA3B,EADqBpnD,GAEhBinD,GAELtgC,EAAAnmB,KAAAmmB,IAAA6oB,EAAAhvC,KAAAgvC,WACA,GAAAxsC,EAAA47B,OACA,GAAAjY,GACA,MAAAA,EAAA1kB,SAAmC,UAAAguB,WAAA,iDADlBtJ,EAAArN,SAAA81B,eAAApsC,EAAAnG,WAEZ8pB,IACmBA,GAAxB/Y,EAAW6b,EAAA,cAAagoB,WAAAn4B,SAAAtW,EAAAzC,KAAAC,KAAA2kB,MAAAniB,KAAA2jB,IAAA6oB,EAAA5hC,EAAA4hC,YAExBA,GAAAxsC,EAAA47B,QAAA,MAAAjY,EAAAvf,WACAuf,EAAAC,aAAA,qBAAiDD,EAAAu1B,iBAAA,GACjDl5C,EAAAzC,KAAAC,KAAAykB,YAAqC0B,EAAA1B,WAAA,IAGrC,IAAAy/B,EAAA/9B,EAGA,OAFAA,EAAA0gC,GAAA1gC,EAAAsgC,EAAAjkD,GAEAxC,EACO4mD,EAAA,IAAAE,EAAAhnD,EAAA0C,EAAAikD,EAAAC,EAAAvgC,EAAA6oB,EAAAkV,EACPlkD,EAAAjB,EAAAS,EAAA,GACAgD,EAAA47B,OACO,IAAA2oB,EAAAjnD,EAAA0C,EAAAikD,EAAAC,EAAAvgC,EAAA+9B,EAAAnlD,GAEA,IAAAynD,EAAA1mD,EAAA0C,EAAAikD,EAAAC,EAAAvgC,EAAA6oB,EAAAkV,EAAAnlD,EAAAS,EAAA,IAGPgnD,EAAA1iD,UAAAy/C,UAAA,WACA,IAAAnkC,EAAAhiB,KAGA,GAAAA,KAAAoF,KAAAzC,KAAAC,KAAAgnD,cAA4C,YAK5C,IAAA70C,GAAgB3P,KAAApF,KAAAoF,KAAAzC,KAAA0K,KAAA7I,MAAAxE,KAAAoF,KAAAZ,OAIhB,OAHAxE,KAAAoF,KAAAzC,KAAAC,KAAAC,OAAmCkS,EAAAgT,mBAAA,QACnC/nB,KAAA4xC,aAAA5xC,KAAA8lD,YAA+C/wC,EAAA88B,eAAA7xC,KAAA4xC,WACrC78B,EAAA48B,WAAA,WAAgC,OAAA3vB,EAAA4vB,WAA4B/lB,EAAA,SAAQtL,MAAAyB,EAAA5c,KAAA8hB,SAC9EnS,GAGAq0C,EAAA1iD,UAAAu/C,YAAA,SAAA7gD,EAAAikD,EAAAC,GACA,OA9jBA,GA8jBAtpD,KAAA2lD,OAAAvgD,EAAA21B,GAAA/6B,KAAAoF,OACAykD,GAAAR,EAAArpD,KAAAqpD,YAAAC,EAAAvuB,GAAA/6B,KAAAspD,YAGArjB,EAAA1Y,KAAA7M,IAAA,WAA+C,OAAA1gB,KAAAoF,KAAA8oB,UAE/C+X,EAAAmd,OAAA1iC,IAAA,WAAiD,OAAA1gB,KAAAoF,KAAAsyB,OAAA,KAMjD0xB,EAAA1iD,UAAA6iD,eAAA,SAAA5nD,EAAAS,GACA,IAAA4f,EAAAhiB,KAEAge,EAAAhe,KAAAoF,KAAA8pB,cAAA8uB,EAAA57C,EACA0nD,EAAA9rC,GAAArc,EAAAW,WAAAtC,KAAA+pD,qBAAApoD,EAAAS,GACA4nD,EAAA,IAAAC,GAAAjqD,KAAA8pD,KAAA1kD,OAqkBA,SAAA1C,EAAAwnD,EAAAC,EAAAC,GACA,IAAAC,EAAAH,EAAAG,OAAA3nD,GAAApC,EAAA,EAEA,MAAA+pD,EAAA5pD,OAAA,CACA,QAAA0C,EAAA,EAAmBA,EAAAT,EAAAymB,WAAuBhmB,IAAA,CAC1C,IAAA2G,EAAApH,EAAAoH,MAAA3G,GACAinD,EAAAtgD,EAAAugD,EAAAH,EAAAI,SAAAhqD,EAAAwJ,GAAA3G,GACA7C,GAAAwJ,EAAAokB,SAEA,OAIA,IADA,IAAAq8B,EAAA,EAAAzhB,KAAA0hB,EAAA,KACAC,EAAA,IAA4B,CAC5B,GAAAF,EAAAF,EAAA5pD,QAAA4pD,EAAAE,GAAA1oD,IAAAvB,EAAA,CAEA,IADA,IAAAkoD,EAAA6B,EAAAE,KAAAG,OAAA,EACAH,EAAAF,EAAA5pD,QAAA4pD,EAAAE,GAAA1oD,IAAAvB,IACSoqD,OAAAlC,KAAAt+C,KAAAmgD,EAAAE,MACT,GAAAG,EAAA,CACAA,EAAAvnB,KAAAwnB,IACA,QAAA96B,EAAA,EAAyBA,EAAA66B,EAAAjqD,OAAsBovB,IAASs6B,EAAAO,EAAA76B,GAAA46B,IAAAD,QAExDL,EAAA3B,EAAAiC,IAAAD,GAIA,IAAAI,OAAA,EAAAtlD,OAAA,EACA,GAAAklD,EACAllD,GAAA,EACAslD,EAAAJ,EACAA,EAAA,SACK,MAAAC,EAAA/nD,EAAAymB,YAIL,MAHA7jB,EAAAmlD,EACAG,EAAAloD,EAAAoH,MAAA2gD,KAKA,QAAAlsB,EAAA,EAAqBA,EAAAuK,EAAAroC,OAAqB89B,IAASuK,EAAAvK,GAAA18B,IAAAvB,GAAgCwoC,EAAA59B,OAAAqzB,IAAA,GACnF,KAAAgsB,EAAAF,EAAA5pD,QAAA4pD,EAAAE,GAAA3oD,MAAAtB,GAAA+pD,EAAAE,GAAA1oD,GAAAvB,GACOwoC,EAAA5+B,KAAAmgD,EAAAE,MAEP,IAAAnqD,EAAAE,EAAAsqD,EAAA18B,SACA,GAAA08B,EAAA5pB,OAAA,CACA,IAAA6pB,EAAAzqD,EACAmqD,EAAAF,EAAA5pD,QAAA4pD,EAAAE,GAAA3oD,KAAAipD,IAAwEA,EAAAR,EAAAE,GAAA3oD,MACxE,QAAAkpD,EAAA,EAAuBA,EAAAhiB,EAAAroC,OAAqBqqD,IAAShiB,EAAAgiB,GAAAjpD,GAAAgpD,IAA8BA,EAAA/hB,EAAAgiB,GAAAjpD,IACnFgpD,EAAAzqD,IACAoqD,EAAAI,EAAAzpB,IAAA0pB,EAAAvqD,GACAsqD,IAAAzpB,IAAA,EAAA0pB,EAAAvqD,GACAF,EAAAyqD,EACAvlD,GAAA,GAIA,IAAA+jD,EAAAvgB,EAAAroC,OACAmqD,EAAAjxB,WAAAixB,EAAAlzB,OAAAoR,EAAAluB,OAAA,SAAAvb,GAA4E,OAAAA,EAAA2e,SAC5E8qB,EAAAtoC,QAFA8nD,EAGA8B,EAAAQ,EAAAvB,EAAAa,EAAAI,SAAAhqD,EAAAsqD,GAAAtlD,GACAhF,EAAAF,GA/nBA2qD,CAAA/qD,KAAAoF,KAAApF,KAAAspD,UAAA,SAAAd,EAAArlD,EAAA6nD,GACAxC,EAAA5lD,KAAAqB,MACS+lD,EAAAiB,YAAAzC,EAAA5lD,KAAAqB,MAAA+Z,EAAArc,GACT6mD,EAAA7lD,KAAAspB,MAAA,IAAA++B,GACShB,EAAAiB,YAAA9nD,GAAA6e,EAAA5c,KAAA+jB,WAAmD0C,EAAA,KAAIqX,KAAAlhB,EAAA5c,KAAA0E,MAAA3G,GAAAc,MAAA+Z,EAAArc,GAGhEqoD,EAAAkB,YAAA1C,EAAA7mD,EAAAq8C,IACK,SAAAl0C,EAAAu/C,EAAAC,EAAAnmD,GAEL6mD,EAAAiB,YAAAnhD,EAAA7F,MAAA+Z,EAAArc,GAGAqoD,EAAAmB,cAAArhD,EAAAu/C,EAAAC,EAAAnmD,IAEA6mD,EAAAoB,eAAAthD,EAAAu/C,EAAAC,EAAA3nD,EAAAwB,IAEA6mD,EAAAjmB,QAAAj6B,EAAAu/C,EAAAC,EAAA3nD,EAAAq8C,GACAA,GAAAl0C,EAAAokB,WAGA87B,EAAAiB,YAAA3C,EAAAtqC,EAAArc,GACA3B,KAAAoF,KAAA+mB,aAAgC69B,EAAAqB,oBAChCrB,EAAAsB,eAGAtB,EAAAuB,SA1mBA,GA0mBAvrD,KAAA2lD,SAEAmE,GAAwB9pD,KAAAwrD,wBAAA7pD,EAAAmoD,GAgPxB,SAAA2B,EAAAC,EAAAC,EAAAhqD,GACA,IAAAonB,EAAA2iC,EAAA3hD,WAAA6hD,GAAA,EACA,QAAAzoD,EAAA,EAAiBA,EAAAwoD,EAAAlrD,OAAkB0C,IAAA,CACnC,IAAAs3C,EAAAkR,EAAAxoD,GAAA0oD,EAAApR,EAAA1xB,IACA,GAAA8iC,EAAAxwC,YAAAqwC,EAAA,CACA,KAAAG,GAAA9iC,GAA+BA,EAAA+iC,GAAA/iC,GAAe6iC,GAAA,EAC9C7iC,IAAA/e,iBAEA4hD,GAAA,EACAF,EAAAK,aAAAF,EAAA9iC,GAEA,GAAA0xB,aAAAuO,EAAA,CACA,IAAA5mD,EAAA2mB,IAAA4nB,gBAAA+a,EAAAx/B,UACAu/B,EAAAhR,EAAA7I,WAAA6I,EAAAvuC,SAAAvK,GACAonB,EAAA3mB,IAAA4H,YAAA0hD,EAAA3hD,YAGA,KAAAgf,GAAeA,EAAA+iC,GAAA/iC,GAAe6iC,GAAA,EAC9BA,GAAAjqD,EAAAqqD,aAAAN,IAAiD/pD,EAAAqqD,YAAA,MAjQjDP,CAAAzrD,KAAA4xC,WAAA5xC,KAAAkM,SAAAvK,GACA0H,EAAA6zC,KAumBA,SAAAn0B,GACA,SAAAA,EAAAvf,UAAA,MAAAuf,EAAAvf,SAAA,CACA,IAAAyiD,EAAAljC,EAAAW,MAAAwiC,QACAnjC,EAAAW,MAAAwiC,QAAAD,EAAA,kCACAjvC,OAAAmvC,iBAAApjC,GAAAqjC,UACArjC,EAAAW,MAAAwiC,QAAAD,GA5mBuBI,CAAArsD,KAAA+oB,OAIvBqgC,EAAA1iD,UAAAqjD,qBAAA,SAAApoD,EAAAS,GAIA,IAAArB,EAAAY,EAAAzB,MAAAiC,UACAP,EAAAb,EAAAa,KACAC,EAAAd,EAAAc,GACA,OAAAF,EAAAzB,MAAAiC,qBAA0CvC,EAAA,gBAAagC,EAAAQ,GAAAP,EAAAO,EAAApC,KAAAoF,KAAA8hB,QAAAqG,MAAvD,CACA,IAAA+rB,EAAA33C,EAAA0K,KAAAy4C,eACAnS,EAmmBA,SAAAvtC,EAAA9E,GACA,OAAS,CACT,MAAA8E,EAAAf,SAA6B,OAAAe,EAC7B,MAAAA,EAAAf,UAAA/D,EAAA,GACA,GAAA8E,EAAA4sC,WAAAvxC,OAAAH,GAAA,GAAA8E,EAAA4sC,WAAA1xC,GAAA+D,SACS,OAAAe,EAAA4sC,WAAA1xC,GACT8E,IAAA4sC,WAAA1xC,EAAA,GACAA,EAAA4tB,EAAA9oB,OACK,SAAAA,EAAAf,UAAA/D,EAAA8E,EAAA4sC,WAAAvxC,QAIL,YAHA2E,IAAA4sC,WAAA1xC,GACAA,EAAA,IA7mBAgsD,CAAAhT,EAAA4L,UAAA5L,EAAA8L,aACA,GAAAzS,GAAA3yC,KAAA+oB,IAAAjb,SAAA6kC,EAAAt3B,YAAA,CAKA,IAAApc,EAAA0zC,EAAA1oC,UACAsiD,EA8mBA,SAAA5vB,EAAA19B,EAAA2C,EAAAC,GACA,QAAAsB,EAAA,EAAAf,EAAA,EAA0Be,EAAAw5B,EAAAxT,YAAA/mB,GAAAP,GAAkC,CAC5D,IAAAiI,EAAA6yB,EAAA7yB,MAAA3G,KAAAqpD,EAAApqD,EAEA,GADAA,GAAA0H,EAAAokB,SACApkB,EAAAk3B,OAAA,CAEA,IADA,IAAAuE,EAAAz7B,EAAA7K,KACAkE,EAAAw5B,EAAAxT,YAAA,CACA,IAAAhL,EAAAwe,EAAA7yB,MAAA3G,KAEA,GADAf,GAAA+b,EAAA+P,UACA/P,EAAA6iB,OAAyB,MACzBuE,GAAApnB,EAAAlf,KAEA,GAAAmD,GAAAR,EAAA,CACA,IAAA45B,EAAA+J,EAAAhlC,YAAAtB,EAAA4C,EAAA2qD,GACA,GAAAhxB,GAAA,GAAAA,EAAAv8B,EAAAwB,OAAA+rD,GAAA5qD,EACS,OAAA4qD,EAAAhxB,IAGT,SAhoBAixB,CAAAzsD,KAAAoF,KAAA8hB,QAAAjoB,EAAA2C,EAAAQ,EAAAP,EAAAO,GAEA,OAAAmqD,EAAA,QAAiCnnD,KAAAutC,EAAAvwC,IAAAmqD,EAAAttD,WAGjCmqD,EAAA1iD,UAAA8kD,wBAAA,SAAA7pD,EAAAZ,GACA,IAAAqE,EAAArE,EAAAqE,KACAhD,EAAArB,EAAAqB,IACAnD,EAAA8B,EAAA9B,KAGA,IAAAe,KAAA6mD,QAAAzhD,GAAA,CAIA,IADA,IAAAslC,EAAAtlC,EAEAslC,EAAArvB,YAAArb,KAAA4xC,WADWlH,IAAArvB,WAAA,CAEX,KAAAqvB,EAAAiG,iBAAuCjG,EAAArvB,WAAAqxC,YAAAhiB,EAAAiG,iBACvC,KAAAjG,EAAA1gC,aAAmC0gC,EAAArvB,WAAAqxC,YAAAhiB,EAAA1gC,aACnC0gC,EAAA6T,aAA+B7T,EAAA6T,WAAA,MAE/B,IAAA9D,EAAA,IAAAmO,EAAA5oD,KAAA0qC,EAAAtlC,EAAAnG,GACA0C,EAAAgrD,iBAAAziD,KAAAuwC,GAGAz6C,KAAAkM,SAAAi9C,GAAAnpD,KAAAkM,SAAA9J,IAAAnD,EAAAwB,OAAAkB,EAAA84C,KAMA2O,EAAA1iD,UAAAs5B,OAAA,SAAA56B,EAAAikD,EAAAC,EAAA3nD,GACA,QAlqBA,GAkqBA3B,KAAA2lD,QACAvgD,EAAA67B,WAAAjhC,KAAAoF,SACApF,KAAA4sD,YAAAxnD,EAAAikD,EAAAC,EAAA3nD,IACA,IAGAynD,EAAA1iD,UAAAkmD,YAAA,SAAAxnD,EAAAikD,EAAAC,EAAA3nD,GACA3B,KAAA6sD,gBAAAxD,GACArpD,KAAAoF,OACApF,KAAAspD,YACAtpD,KAAA4xC,YAA0B5xC,KAAAupD,eAAA5nD,EAAA3B,KAAAmjD,YAC1BnjD,KAAA2lD,MA7qBA,GAgrBAyD,EAAA1iD,UAAAmmD,gBAAA,SAAAxD,GACA,IAAAQ,GAAAR,EAAArpD,KAAAqpD,WAAA,CACA,IAAAyD,EAAA,GAAA9sD,KAAA8mD,QAAAziD,SACA0oD,EAAA/sD,KAAA+oB,IACA/oB,KAAA+oB,IAAAikC,GAAAhtD,KAAA+oB,IAAA/oB,KAAA8mD,QACAmG,GAAAjtD,KAAAqpD,UAAArpD,KAAAoF,KAAA0nD,GACAG,GAAA5D,EAAArpD,KAAAoF,KAAA0nD,IACA9sD,KAAA+oB,KAAAgkC,IACAA,EAAAxO,WAAA,KACAv+C,KAAA+oB,IAAAw1B,WAAAv+C,MAEAA,KAAAqpD,cAIAD,EAAA1iD,UAAAwmD,WAAA,WACAltD,KAAA8mD,QAAA2B,UAAAn8C,IAAA,6BACAtM,KAAA4xC,YAAA5xC,KAAAoF,KAAAzC,KAAAC,KAAAykB,YAA4DrnB,KAAA+oB,IAAA1B,WAAA,IAI5D+hC,EAAA1iD,UAAAymD,aAAA,WACAntD,KAAA8mD,QAAA2B,UAAAtoB,OAAA,6BACAngC,KAAA4xC,YAAA5xC,KAAAoF,KAAAzC,KAAAC,KAAAykB,WAA4DrnB,KAAA+oB,IAAAqkC,gBAAA,cAG5DtoD,OAAAuc,iBAAA+nC,EAAA1iD,UAAAu/B,GAEAmjB,EA3NA,CA4NC1D,GAID,SAAA2H,EAAA7qD,EAAA6mD,EAAAC,EAAAvgC,EAAApnB,GAEA,OADA8nD,GAAA1gC,EAAAsgC,EAAA7mD,GACA,IAAA4mD,EAAA,KAAA5mD,EAAA6mD,EAAAC,EAAAvgC,MAAApnB,EAAA,GAGA,IAAAgoD,EAAA,SAAAP,GACA,SAAAO,EAAAjnD,EAAA0C,EAAAikD,EAAAC,EAAAvgC,EAAA+9B,EAAAnlD,GACAynD,EAAAxiD,KAAA5G,KAAA0C,EAAA0C,EAAAikD,EAAAC,EAAAvgC,EAAA,KAAA+9B,EAAAnlD,GAkDA,OA/CAynD,IAAAO,EAAAhgD,UAAAy/C,GACAO,EAAAjjD,UAAA5B,OAAA4Q,OAAA0zC,KAAA1iD,WACAijD,EAAAjjD,UAAAiG,YAAAg9C,EAEAA,EAAAjjD,UAAAy/C,UAAA,WAEA,IADA,IAAA9tC,EAAArY,KAAA8mD,QAAAzrC,WACAhD,MAAArY,KAAA+oB,MAAA1Q,EAAAi1C,UAAwDj1C,IAAAgD,WACxD,OAAYhD,SAAA,IAGZsxC,EAAAjjD,UAAAs5B,OAAA,SAAA56B,EAAAikD,EAAAtmB,EAAAphC,GACA,QAtuBA,GAsuBA3B,KAAA2lD,OAtuBA,GAsuBA3lD,KAAA2lD,QAAA3lD,KAAAutD,aACAnoD,EAAA67B,WAAAjhC,KAAAoF,SACApF,KAAA6sD,gBAAAxD,GAxuBA,GAyuBArpD,KAAA2lD,OAAAvgD,EAAAnG,MAAAe,KAAAoF,KAAAnG,MAAAmG,EAAAnG,MAAAe,KAAA8mD,QAAA78C,YACAjK,KAAA8mD,QAAA78C,UAAA7E,EAAAnG,KACA0C,EAAAqqD,aAAAhsD,KAAA8mD,UAA6CnlD,EAAAqqD,YAAA,OAE7ChsD,KAAAoF,OACApF,KAAA2lD,MA9uBA,GA+uBA,IAGAgE,EAAAjjD,UAAA6mD,SAAA,WAEA,IADA,IAAA7B,EAAA1rD,KAAA0C,OAAAkvC,WACAxuB,EAAApjB,KAAA8mD,QAA8B1jC,EAAGA,IAAA/H,WAAoB,GAAA+H,GAAAsoC,EAAsB,SAC3E,UAGA/B,EAAAjjD,UAAA48C,WAAA,SAAAlhD,GACA,OAAYgD,KAAApF,KAAA8mD,QAAAxmD,OAAA8B,IAGZunD,EAAAjjD,UAAA6/C,gBAAA,SAAAx9B,EAAAzoB,EAAAg5B,GACA,OAAAvQ,GAAA/oB,KAAA8mD,QAA8B9mD,KAAAmjD,WAAAngD,KAAAyd,IAAAngB,EAAAN,KAAAoF,KAAAnG,KAAAwB,QAC9B2oD,EAAA1iD,UAAA6/C,gBAAA3/C,KAAA5G,KAAA+oB,EAAAzoB,EAAAg5B,IAGAqwB,EAAAjjD,UAAAshD,eAAA,SAAAC,GACA,uBAAAA,EAAAtlD,MAAA,aAAAslD,EAAAtlD,MAGAgnD,EAAAjjD,UAAAlG,MAAA,SAAAoB,EAAAC,EAAAF,GACA,IAAAyD,EAAApF,KAAAoF,KAAA+7B,IAAAv/B,EAAAC,GAAAknB,EAAArN,SAAA81B,eAAApsC,EAAAnG,MACA,WAAA0qD,EAAA3pD,KAAA0C,OAAA0C,EAAApF,KAAAqpD,UAAArpD,KAAAspD,UAAAvgC,IAAApnB,IAGAgoD,EApDA,CAqDCP,GAIDoE,EAAA,SAAA9H,GACA,SAAA8H,IACA9H,EAAAvkD,MAAAnB,KAAAqwB,WAUA,OAPAq1B,IAAA8H,EAAA7jD,UAAA+7C,GACA8H,EAAA9mD,UAAA5B,OAAA4Q,OAAAgwC,KAAAh/C,WACA8mD,EAAA9mD,UAAAiG,YAAA6gD,EAEAA,EAAA9mD,UAAAy/C,UAAA,WAA8D,OAASr9C,QAAA,IACvE0kD,EAAA9mD,UAAAw/C,YAAA,WAAkE,OAzxBlE,GAyxBkElmD,KAAA2lD,OAElE6H,EAZA,CAaC9H,GAKDgE,EAAA,SAAAN,GACA,SAAAM,EAAAhnD,EAAA0C,EAAAikD,EAAAC,EAAAvgC,EAAA6oB,EAAAkV,EAAAlkD,EAAAjB,EAAAS,GACAgnD,EAAAxiD,KAAA5G,KAAA0C,EAAA0C,EAAAikD,EAAAC,EAAAvgC,EAAA6oB,EAAAkV,EAAAnlD,EAAAS,GACApC,KAAA4C,OAiDA,OA9CAwmD,IAAAM,EAAA//C,UAAAy/C,GACAM,EAAAhjD,UAAA5B,OAAA4Q,OAAA0zC,KAAA1iD,WACAgjD,EAAAhjD,UAAAiG,YAAA+8C,EAKAA,EAAAhjD,UAAAs5B,OAAA,SAAA56B,EAAAikD,EAAAC,EAAA3nD,GACA,GA/yBA,GA+yBA3B,KAAA2lD,MAAmC,SACnC,GAAA3lD,KAAA4C,KAAAo9B,OAAA,CACA,IAAA32B,EAAArJ,KAAA4C,KAAAo9B,OAAA56B,EAAAikD,GAEA,OADAhgD,GAAmBrJ,KAAA4sD,YAAAxnD,EAAAikD,EAAAC,EAAA3nD,GACnB0H,EACK,SAAArJ,KAAA4xC,aAAAxsC,EAAAsyB,SAGL0xB,EAAA1iD,UAAAs5B,OAAAp5B,KAAA5G,KAAAoF,EAAAikD,EAAAC,EAAA3nD,IAIA+nD,EAAAhjD,UAAAwmD,WAAA,WACAltD,KAAA4C,KAAAsqD,WAAAltD,KAAA4C,KAAAsqD,aAAA9D,EAAA1iD,UAAAwmD,WAAAtmD,KAAA5G,OAGA0pD,EAAAhjD,UAAAymD,aAAA,WACAntD,KAAA4C,KAAAuqD,aAAAntD,KAAA4C,KAAAuqD,eAAA/D,EAAA1iD,UAAAymD,aAAAvmD,KAAA5G,OAGA0pD,EAAAhjD,UAAAof,aAAA,SAAAwyB,EAAA5J,EAAAriC,EAAAi7C,GACAtnD,KAAA4C,KAAAkjB,aAAA9lB,KAAA4C,KAAAkjB,aAAAwyB,EAAA5J,EAAAriC,GACA+8C,EAAA1iD,UAAAof,aAAAlf,KAAA5G,KAAAs4C,EAAA5J,EAAAriC,EAAAi7C,IAGAoC,EAAAhjD,UAAA2/C,QAAA,WACArmD,KAAA4C,KAAAyjD,SAA4BrmD,KAAA4C,KAAAyjD,UAC5B+C,EAAA1iD,UAAA2/C,QAAAz/C,KAAA5G,OAGA0pD,EAAAhjD,UAAA0/C,UAAA,SAAAj8C,GACA,QAAAnK,KAAA4C,KAAAwjD,WAAApmD,KAAA4C,KAAAwjD,UAAAj8C,IAGAu/C,EAAAhjD,UAAAshD,eAAA,SAAAC,GACA,OAAAjoD,KAAA4C,KAAAolD,eAAAhoD,KAAA4C,KAAAolD,eAAAC,GAAAmB,EAAA1iD,UAAAshD,eAAAphD,KAAA5G,KAAAioD,IAGAyB,EApDA,CAqDCN,GA2BD,SAAAqE,EAAAjkD,GACAA,IAAiBxJ,KAAAwJ,YAEjBikD,EAAA/mD,UAAA5B,OAAA4Q,OAAA,MAEA,IAAAg4C,GAAA,IAAAD,GAEA,SAAAR,GAAA5D,EAAAjkD,EAAA0nD,GACA,MAAAzD,EAAA5oD,OAA8B,OAAAitD,EAI9B,IAFA,IAAAthD,EAAA0gD,EAAAY,EAAA,OAAAD,EAAApkD,GAAA+C,GAEAjJ,EAAA,EAAiBA,EAAAkmD,EAAA5oD,OAAsB0C,IAAA,CACvC,IAAAqB,EAAA6kD,EAAAlmD,GAAAR,KAAA6B,MAAAo3B,EAAAxvB,EACA,GAAA5H,EAIA,QAAA6I,KAHA7I,EAAAgF,UACOH,EAAAa,KAAA0xB,EAAA,IAAA6xB,EAAAjpD,EAAAgF,WAEPhF,EAAA,CACA,IAAAygC,EAAAzgC,EAAA6I,GACA,MAAA43B,IACA6nB,GAAA,GAAAzjD,EAAA5I,QACS4I,EAAAa,KAAA0xB,EAAAxvB,EAAA,IAAAqhD,EAAAroD,EAAAu0B,SAAA,eACT,SAAAtsB,EAA4BuuB,EAAA+xB,OAAA/xB,EAAA+xB,MAAA/xB,EAAA+xB,MAAA,QAAA1oB,EAC5B,SAAA53B,EAAiCuuB,EAAAlS,OAAAkS,EAAAlS,MAAAkS,EAAAlS,MAAA,IAAwC,IAAAub,EACzE,YAAA53B,IAAoCuuB,EAAAvuB,GAAA43B,KAIpC,OAAA57B,EAGA,SAAA2jD,GAAAY,EAAA9G,EAAA+G,EAAAC,GAEA,GAAAD,GAAAH,GAAAI,GAAAJ,EAAwD,OAAA5G,EAGxD,IADA,IAAAiH,EAAAjH,EACA3jD,EAAA,EAAiBA,EAAA2qD,EAAArtD,OAAwB0C,IAAA,CACzC,IAAA+mD,EAAA4D,EAAA3qD,GAAA/B,EAAAysD,EAAA1qD,GACA,GAAAA,EAAA,CACA,IAAAT,OAAA,EACAtB,KAAAoI,UAAA0gD,EAAA1gD,UAAAukD,GAAAH,IACAlrD,EAAAqrD,EAAA1yC,aAAA3Y,EAAAuxC,QAAAxqC,eAAAygD,EAAA1gD,SACAukD,EAAArrD,IAEAA,EAAAgZ,SAAAC,cAAAuuC,EAAA1gD,WACA8jD,UAAA,EACA5qD,EAAAsuC,YAAA+c,GACA3sD,EAAAssD,EAAA,GACAK,EAAArrD,GAGAsrD,GAAAD,EAAA3sD,GAAAssD,EAAA,GAAAxD,GAEA,OAAA6D,EAGA,SAAAC,GAAAjlC,EAAA3nB,EAAAw6B,GACA,QAAAvuB,KAAAjM,EACK,SAAAiM,GAAA,SAAAA,GAAA,YAAAA,QAAAuuB,GACE7S,EAAAqkC,gBAAA//C,GACP,QAAAs/B,KAAA/Q,EACK,SAAA+Q,GAAA,SAAAA,GAAA,YAAAA,GAAA/Q,EAAA+Q,IAAAvrC,EAAAurC,IACE5jB,EAAAurB,aAAA3H,EAAA/Q,EAAA+Q,IACP,GAAAvrC,EAAAusD,OAAA/xB,EAAA+xB,MAAA,CAGA,IAFA,IAAAM,EAAA7sD,EAAAusD,MAAAvsD,EAAAusD,MAAAv9C,MAAA,KAAAk4C,EACA4F,EAAAtyB,EAAA+xB,MAAA/xB,EAAA+xB,MAAAv9C,MAAA,KAAAk4C,EACAnlD,EAAA,EAAmBA,EAAA8qD,EAAAxtD,OAAqB0C,KAAO,GAAA+qD,EAAAlvB,QAAAivB,EAAA9qD,KACxC4lB,EAAA0/B,UAAAtoB,OAAA8tB,EAAA9qD,IACP,QAAA0sB,EAAA,EAAqBA,EAAAq+B,EAAAztD,OAAsBovB,KAAS,GAAAo+B,EAAAjvB,QAAAkvB,EAAAr+B,KAC7C9G,EAAA0/B,UAAAn8C,IAAA4hD,EAAAr+B,IAEP,GAAAzuB,EAAAsoB,OAAAkS,EAAAlS,MAAA,CACA,GAAAtoB,EAAAsoB,MAEA,IADA,IAA2F9Z,EAA3FrH,EAAA,gFACAqH,EAAArH,EAAAnF,KAAAhC,EAAAsoB,QACSX,EAAAW,MAAAykC,eAAAv+C,EAAA,IAETgsB,EAAAlS,QACOX,EAAAW,MAAAwiC,SAAAtwB,EAAAlS,QAIP,SAAA+/B,GAAA1gC,EAAAmhC,EAAA9kD,GACA,OAAA4nD,GAAAjkC,IAAA2kC,EAAAT,GAAA/C,EAAA9kD,EAAA,GAAA2jB,EAAA1kB,WAIA,SAAAwlD,GAAA5wB,EAAAC,GACA,GAAAD,EAAAx4B,QAAAy4B,EAAAz4B,OAA6B,SAC7B,QAAA0C,EAAA,EAAiBA,EAAA81B,EAAAx4B,OAAc0C,IAAO,IAAA81B,EAAA91B,GAAAR,KAAAo4B,GAAA7B,EAAA/1B,GAAAR,MAAgC,SACtE,SAIA,SAAAmpD,GAAA/iC,GACA,IAAA5K,EAAA4K,EAAA/e,YAEA,OADA+e,EAAA1N,WAAAqxC,YAAA3jC,GACA5K,EAKA,IAAA8rC,GAAA,SAAA79C,EAAAgiD,GACApuD,KAAAoM,MACApM,KAAAquD,KAAAD,EAGApuD,KAAAsF,MAAA,EAGAtF,KAAAmM,SAEAnM,KAAAurD,SAAA,EAEA,IAAAld,EA6JA,SAAA1R,EAAAgvB,GAEA,IADA,IAAAtiD,KAAAjJ,EAAAu8B,EAAAxT,WACAhmB,EAAAwoD,EAAAlrD,OAAA,EAAgCL,EAAA,GAAA+C,GAAA,EAAmBA,IAAA,CACnD,IAAAs3C,EAAAkR,EAAAxoD,GAAAiC,EAAAq1C,EAAAr1C,KACA,GAAAA,EAAA,CACA,GAAAA,GAAAu3B,EAAA7yB,MAAA1J,EAAA,GAAsC,MACtCiJ,EAAAa,KAAAuwC,KACAr6C,GAEA,OAAUqnB,MAAApe,EAAA4B,UAAA3K,OAAAF,GAtKVkuD,CAAAliD,EAAAhH,KAAA8hB,QAAA9a,EAAAF,UACAlM,KAAAuuD,WAAAlgB,EAAA5mB,MACAznB,KAAAwuD,eAAAngB,EAAA/tC,QAuKA,SAAAqqD,GAAA1xB,EAAAC,GAA4B,OAAAD,EAAAt2B,KAAAspB,KAAAiN,EAAAv2B,KAAAspB,KA6H5B,SAAAk9B,GAAA1hC,EAAA7lB,EAAAC,EAAAF,EAAA8kC,GAEA,IADA,IAAAp9B,KACAlG,EAAA,EAAA66C,EAAA,EAA0B76C,EAAAskB,EAAAhnB,OAAkB0C,IAAA,CAC5C,IAAA2G,EAAA2d,EAAAtkB,GAAAhD,EAAA69C,EAAA59C,EAAA49C,GAAAl0C,EAAAyjB,KACAptB,GAAA0B,GAAAzB,GAAAwB,EACAyH,EAAAa,KAAAJ,IAEA3J,EAAAyB,GAAyByH,EAAAa,KAAAJ,EAAAtJ,MAAA,EAAAoB,EAAAzB,EAAAwB,IACzB8kC,IACAp9B,EAAAa,KAAAu8B,GACAA,EAAA,MAEArmC,EAAAyB,GAAqBwH,EAAAa,KAAAJ,EAAAtJ,MAAAqB,EAAA1B,EAAA2J,EAAAyjB,KAAA5rB,KAGrB,OAAA0H,EAGA,SAAAolD,GAAA9sD,EAAAoX,GACA,IAAA0lC,EAAA98C,EAAA0K,KAAAy4C,eAAAtiD,EAAAb,EAAAzB,MAAAsC,IACA,IAAAi8C,EAAAyG,UAA0B,YAC1B,IAAArC,EAAAlhD,EAAAihD,QAAAC,YAAApE,EAAAyG,WAAAwJ,EAAA7L,GAAA,GAAAA,EAAAt1B,KACAmhB,EAAA/sC,EAAAihD,QAAAI,WAAAvE,EAAAyG,UAAAzG,EAAA2G,aACA,GAAA1W,EAAA,EAAiB,YACjB,IAAA5hB,EAAA3qB,EAAA0qB,EAAArqB,EAAAC,QAAAisC,GACA,GAAA8P,EAAAC,GAAA,CAEA,IADA3xB,EAAAD,EACAg2B,MAAAz9C,MAA8Cy9C,IAAAngD,OAC9C,GAAAmgD,KAAAz9C,KAAAsrB,QAAkD9wB,EAAA,cAAa4wB,aAAAqyB,EAAAz9C,OAAAy9C,EAAAngD,UAC/DmgD,EAAAz9C,KAAAu0B,WAz2DA,SAAAv0B,EAAA9E,EAAAoC,GACA,QAAAk2C,EAAA,GAAAt4C,EAAAgtB,EAAAhtB,GAAA4tB,EAAA9oB,GAAmEwzC,GAAAtrB,GAAkB,CACrF,GAAAloB,GAAA1C,EAAyB,SACzB,IAAA4C,EAAAm4C,EAAAr4C,GAEA,KADAA,IAAAiW,YACgB,SAChBu9B,KAAA,GAAAtzC,EACAgoB,KAAAhoB,GAAA4oB,EAAA9oB,IAk2DAupD,CAAAlQ,EAAAyG,UAAAzG,EAAA2G,YAAAvC,EAAA95B,MAAA,CACA,IAAA3mB,EAAAygD,EAAAC,UACA3gD,EAAA,IAAsBvC,EAAA,cAAa8uC,GAAAtsC,EAAAyqB,EAAArqB,EAAAC,QAAAL,SAEhC,CACH,IAAAk2C,EAAA32C,EAAAihD,QAAAI,WAAAvE,EAAAiJ,WAAAjJ,EAAAkJ,cACA,GAAArP,EAAA,EAAqB,YACrBxrB,EAAAtqB,EAAAC,QAAA61C,GAGAn2C,IAEAA,EAAAysD,GAAAjtD,EAAAmrB,EAAAD,EADA,WAAA9T,GAAApX,EAAAzB,MAAAiC,UAAAusC,KAAA7hB,EAAAzqB,MAAAssD,EAAA,OAGA,OAAAvsD,EAGA,SAAA0sD,GAAAltD,EAAA2lD,GACA,IAAAhO,EAAA33C,EAAAzB,MAAAiC,UAGA,GAFA2sD,GAAAntD,EAAA23C,GAEA33C,EAAAotD,SAAAptD,EAAAqtD,WACAC,GAAAttD,IAAA+Z,SAAA0oC,eAAA1oC,SAAA0oC,cAAAt2C,SAAAnM,EAAAonB,KADA,CAKA,GAFApnB,EAAAutD,YAAAC,sBAEAxtD,EAAAytD,eAwEA,SAAAztD,GACA,IAAA88C,EAAA98C,EAAA0K,KAAAy4C,eAAAngD,EAAA+W,SAAAkiC,cACAx4C,EAAAzD,EAAAytD,cAAArmC,IAAAsmC,EAAA,OAAAjqD,EAAAoE,SACA6lD,EAAY1qD,EAAAk5C,OAAAz4C,EAAAiW,WAAAoiC,EAAAr4C,GAAA,GACJT,EAAAk5C,OAAAz4C,EAAA,GACRT,EAAAmjD,UAAA,GACArJ,EAAA+G,kBACA/G,EAAA5a,SAAAl/B,IAMA0qD,IAAA1tD,EAAAzB,MAAAiC,UAAA62C,SAAA3vC,EAAAszC,IAAAtzC,EAAAuzC,YAAA,KACAx3C,EAAAkqD,UAAA,EACAlqD,EAAAkqD,UAAA,GAtFAC,CAAA5tD,OACG,CACH,IAEA6tD,EAAAC,EAFAnX,EAAAgB,EAAAhB,OACA5J,EAAA4K,EAAA5K,MAEAghB,IAAApW,aAA0D15C,EAAA,gBAC1D05C,EAAA/2C,MAAAG,OAAAwsB,gBACSsgC,EAAAG,GAAAhuD,EAAA23C,EAAA13C,OACT03C,EAAA/4B,OAAA+4B,EAAA/2C,MAAAG,OAAAwsB,gBACSugC,EAAAE,GAAAhuD,EAAA23C,EAAAz3C,MAETF,EAAAihD,QAAA98B,aAAAwyB,EAAA5J,EAAA/sC,EAAA0K,KAAAi7C,GACAoI,KACAF,GAA8BI,GAAAJ,GAC9BC,GAA4BG,GAAAH,IAE5BnW,EAAAN,QACAr3C,EAAAonB,IAAA0/B,UAAAtoB,OAAA,8BAEAx+B,EAAAonB,IAAA0/B,UAAAn8C,IAAA,6BACA,sBAAAoP,UAsCA,SAAA/Z,GACA,IAAAa,EAAAb,EAAAonB,IAAAwoB,cACA/uC,EAAAqtD,oBAAA,kBAAAluD,EAAAmuD,oBACA,IAAArR,EAAA98C,EAAA0K,KAAAy4C,eACA1/C,EAAAq5C,EAAAiJ,WAAApnD,EAAAm+C,EAAAkJ,aACAnlD,EAAAya,iBAAA,kBAAAtb,EAAAmuD,mBAAA,WACArR,EAAAiJ,YAAAtiD,GAAAq5C,EAAAkJ,cAAArnD,IACAkC,EAAAqtD,oBAAA,kBAAAluD,EAAAmuD,oBACAnuD,EAAAonB,IAAA0/B,UAAAtoB,OAAA,gCA9C4C4vB,CAAApuD,IAI5CA,EAAAutD,YAAAc,kBACAruD,EAAAutD,YAAAe,oBAlXAhG,GAAAvjD,UAAAwpD,YAAA,SAAA5qD,GACA,OAAAA,GAAAtF,KAAAwuD,eAAAxuD,KAAAuuD,WAAAjpD,EAAAtF,KAAAwuD,gBAAA,MAKAvE,GAAAvjD,UAAAypD,eAAA,SAAAhwD,EAAAC,GACA,GAAAD,GAAAC,EAAA,CACA,QAAA+C,EAAAhD,EAAqBgD,EAAA/C,EAAS+C,IAAOnD,KAAAoM,IAAAF,SAAA/I,GAAAkjD,UACrCrmD,KAAAoM,IAAAF,SAAAhB,OAAA/K,EAAAC,EAAAD,GACAH,KAAAurD,SAAA,IAIAtB,GAAAvjD,UAAA4kD,YAAA,WACAtrD,KAAAmwD,eAAAnwD,KAAAsF,MAAAtF,KAAAoM,IAAAF,SAAAzL,SAMAwpD,GAAAvjD,UAAAukD,YAAA,SAAAhnD,EAAA+Z,EAAArc,GAGA,IAFA,IAAA4xC,EAAA,EAAA90B,EAAAze,KAAAmM,MAAA1L,QAAA,EACA2vD,EAAAptD,KAAAyd,IAAAhC,EAAAxa,EAAAxD,QACA8yC,EAAA6c,IACA7c,GAAA90B,EAAA,EAAAze,KAAAoM,IAAApM,KAAAmM,MAAAonC,EAAA,OAAAyS,YAAA/hD,EAAAsvC,MAAA,IAAAtvC,EAAAsvC,GAAA5wC,KAAAC,KAAA6wC,UACKF,IAEL,KAAAA,EAAA90B,GACAze,KAAAsrD,cACAtrD,KAAAoM,IAAAu5C,MAvgCA,EAwgCA3lD,KAAAsF,MAAAtF,KAAAmM,MAAAhB,MACAnL,KAAAoM,IAAApM,KAAAmM,MAAAhB,MACAsT,IAEA,KAAAA,EAAAxa,EAAAxD,QAAA,CACAT,KAAAmM,MAAAjC,KAAAlK,KAAAoM,IAAApM,KAAAsF,MAAA,GAEA,IADA,IAAAk2B,GAAA,EACAr4B,EAAAnD,KAAAsF,MAA4BnC,EAAAH,KAAAyd,IAAAzgB,KAAAsF,MAAA,EAAAtF,KAAAoM,IAAAF,SAAAzL,QAAwD0C,IACpF,GAAAnD,KAAAoM,IAAAF,SAAA/I,GAAA6iD,YAAA/hD,EAAAwa,IAAA,CAA2D+c,EAAAr4B,EAAW,MAEtE,GAAAq4B,GAAA,EACAA,EAAAx7B,KAAAsF,QACAtF,KAAAurD,SAAA,EACAvrD,KAAAmwD,eAAAnwD,KAAAsF,MAAAk2B,IAEAx7B,KAAAoM,IAAApM,KAAAoM,IAAAF,SAAAlM,KAAAsF,WACK,CACL,IAAA+qD,EAAArH,EAAAtzC,OAAA1V,KAAAoM,IAAAnI,EAAAwa,GAAAT,EAAArc,GACA3B,KAAAoM,IAAAF,SAAAhB,OAAAlL,KAAAsF,MAAA,EAAA+qD,GACArwD,KAAAoM,IAAAikD,EACArwD,KAAAurD,SAAA,EAEAvrD,KAAAsF,MAAA,EACAmZ,MAOAwrC,GAAAvjD,UAAAykD,cAAA,SAAA/lD,EAAAikD,EAAAC,EAAAhkD,GACA,IAAAk2B,GAAA,EAAA8yB,EAAAhpD,EAAA,OAAAsD,EAAA5I,KAAAkwD,YAAA5qD,GAAA4G,EAAAlM,KAAAoM,IAAAF,SACA,GAAAoiD,KAAArI,YAAA7gD,EAAAikD,EAAAC,GACA9tB,EAAAtvB,EAAA8yB,QAAAsvB,QAEA,QAAAnrD,EAAAnD,KAAAsF,MAAA2B,EAAAjE,KAAAyd,IAAAvU,EAAAzL,OAAA0C,EAAA,GAAkEA,EAAA8D,EAAO9D,IAAA,CACzE,IAAA2G,EAAAoC,EAAA/I,GACA,GAAA2G,EAAAm8C,YAAA7gD,EAAAikD,EAAAC,IAAAtpD,KAAAuuD,WAAAvvB,QAAAl1B,GAAA,GACA0xB,EAAAr4B,EACA,OAIA,QAAAq4B,EAAA,KACAx7B,KAAAmwD,eAAAnwD,KAAAsF,MAAAk2B,GACAx7B,KAAAsF,SACA,IAMA2kD,GAAAvjD,UAAA0kD,eAAA,SAAAhmD,EAAAikD,EAAAC,EAAA3nD,EAAA2D,GACA,QAAAnC,EAAAnD,KAAAsF,MAA0BnC,EAAAnD,KAAAoM,IAAAF,SAAAzL,OAA8B0C,IAAA,CACxD,IAAAgb,EAAAne,KAAAoM,IAAAF,SAAA/I,GACA,GAAAgb,aAAAirC,EAAA,CACA,IAAAkF,EAAAtuD,KAAAuuD,WAAAvvB,QAAA7gB,GACA,GAAAmwC,GAAA,GAAAA,EAAAtuD,KAAAwuD,gBAAAlpD,EAAqE,SACrE,IAAAgrD,EAAAnyC,EAAA4K,IAQA,KAHA/oB,KAAAquD,OAAAiC,GAAAtwD,KAAAquD,MAAA,GAAAiC,EAAAjsD,UAAAisD,EAAAxiD,SAAA9N,KAAAquD,KAAAhzC,gBACAjW,EAAA47B,QAAA7iB,EAAA/Y,MAAA+Y,EAAA/Y,KAAA47B,QAAA7iB,EAAA2oC,QAAA78C,WAAA7E,EAAAnG,MAxkCA,GAykCAkf,EAAAwnC,OAAAkE,GAAAR,EAAAlrC,EAAAkrC,cACAlrC,EAAA6hB,OAAA56B,EAAAikD,EAAAC,EAAA3nD,GAIA,OAHA3B,KAAAmwD,eAAAnwD,KAAAsF,MAAAnC,GACAgb,EAAA4K,KAAAunC,IAAkCtwD,KAAAurD,SAAA,GAClCvrD,KAAAsF,SACA,EAEA,OAGA,UAKA2kD,GAAAvjD,UAAAq9B,QAAA,SAAA3+B,EAAAikD,EAAAC,EAAA3nD,EAAAS,GACApC,KAAAoM,IAAAF,SAAAhB,OAAAlL,KAAAsF,QAAA,EAAA8jD,EAAA1zC,OAAA1V,KAAAoM,IAAAhH,EAAAikD,EAAAC,EAAA3nD,EAAAS,IACApC,KAAAurD,SAAA,GAGAtB,GAAAvjD,UAAAwkD,YAAA,SAAA1C,EAAA7mD,EAAAS,GACA,IAAA+b,EAAAne,KAAAsF,MAAAtF,KAAAoM,IAAAF,SAAAzL,OAAAT,KAAAoM,IAAAF,SAAAlM,KAAAsF,OAAA,KACA,IAAA6Y,MAAA4nC,cAAAyC,OAAArqC,EAAAqqC,QAAArqC,EAAAqqC,OAAA7lD,KAAA4kB,MAAAlM,WAEG,CACH,IAAAo/B,EAAA,IAAA8N,EAAAvoD,KAAAoM,IAAAo8C,EAAA7mD,EAAAS,GACApC,KAAAoM,IAAAF,SAAAhB,OAAAlL,KAAAsF,QAAA,EAAAm1C,GACAz6C,KAAAurD,SAAA,OAJAvrD,KAAAsF,SAUA2kD,GAAAvjD,UAAA2kD,kBAAA,WAEA,IADA,IAAAn/B,EAAAlsB,KAAAoM,IAAAF,SAAAlM,KAAAsF,MAAA,GACA4mB,aAAA88B,GAA6C98B,IAAAhgB,SAAAggB,EAAAhgB,SAAAzL,OAAA,GAE7C,IAAAyrB,KACAA,aAAAy9B,IACA,MAAAnzC,KAAA0V,EAAA9mB,KAAAnG,MACA,GAAAe,KAAAsF,MAAAtF,KAAAoM,IAAAF,SAAAzL,QAAAT,KAAAoM,IAAAF,SAAAlM,KAAAsF,OAAA4gD,cACAlmD,KAAAsF,YACK,CACL,IAAAyjB,EAAArN,SAAAC,cAAA,MACA3b,KAAAoM,IAAAF,SAAAhB,OAAAlL,KAAAsF,QAAA,MAAAkoD,EAAAxtD,KAAAoM,IAAAk8C,EAAAv/B,EAAA,OACA/oB,KAAAurD,SAAA,IA4OA,IAAAmE,GAAArmD,EAAAi0C,QAAAj0C,EAAA2zC,QAAA3zC,EAAA4zC,eAAA,GAEA,SAAA0S,GAAAhuD,EAAAS,GACA,IAAArB,EAAAY,EAAAihD,QAAAU,WAAAlhD,GACAgD,EAAArE,EAAAqE,KACA9E,EAAAS,EAAAT,OACAmS,EAAAnS,EAAA8E,EAAA4sC,WAAAvxC,OAAA2E,EAAA4sC,WAAA1xC,GAAA,KACA0E,EAAA1E,EAAA8E,EAAA4sC,WAAA1xC,EAAA,QACA,GAAA+I,EAAAi0C,QAAA7qC,GAAA,SAAAA,EAAA6rC,gBAAmE,OAAAiS,GAAA99C,GACnE,KAAAA,GAAA,SAAAA,EAAA6rC,iBAAAt5C,GAAA,SAAAA,EAAAs5C,iBAAA,CACA,GAAA7rC,EAAgB,OAAA89C,GAAA99C,GAChB,GAAAzN,EAAsB,OAAAurD,GAAAvrD,IAItB,SAAAurD,GAAAr1C,GAGA,OAFAA,EAAAojC,gBAAA,OACAj1C,EAAAi0C,QAAApiC,EAAAmM,YAA2CnM,EAAAmM,WAAA,EAA2BnM,EAAAs1C,cAAA,GACtEt1C,EAGA,SAAA00C,GAAA10C,GACAA,EAAAojC,gBAAA,QACApjC,EAAAs1C,eAA6Bt1C,EAAAmM,WAAA,EAA0BnM,EAAAs1C,aAAA,MAmCvD,SAAA1B,GAAAntD,EAAA23C,GACA,GAAAA,aAAqB15C,EAAA,cAAa,CAClC,IAAA66C,EAAA94C,EAAAihD,QAAAmE,OAAAzN,EAAA13C,MACA64C,GAAA94C,EAAA8uD,uBACAC,GAAA/uD,GACA84C,GAAiBA,EAAAyS,aACjBvrD,EAAA8uD,qBAAAhW,QAGAiW,GAAA/uD,GAKA,SAAA+uD,GAAA/uD,GACAA,EAAA8uD,uBACA9uD,EAAA8uD,qBAAA/tD,QACOf,EAAA8uD,qBAAAtD,eACPxrD,EAAA8uD,qBAAA,MAIA,SAAA7B,GAAAjtD,EAAAmrB,EAAAD,EAAAyM,GACA,OAAA33B,EAAAk+C,SAAA,kCAAAj/B,GAA+D,OAAAA,EAAAjf,EAAAmrB,EAAAD,MACxDjtB,EAAA,cAAam5C,QAAAjsB,EAAAD,EAAAyM,GAQpB,SAAA21B,GAAAttD,GACA,IAAA23C,EAAA33C,EAAA0K,KAAAy4C,eACA,IAAAxL,EAAAoO,WAAwB,SACxB,IAIA,OAAA/lD,EAAAonB,IAAAjb,SAAA,GAAAwrC,EAAAoO,WAAArjD,SAAAi1C,EAAAoO,WAAArsC,WAAAi+B,EAAAoO,cACA/lD,EAAAotD,UAAAptD,EAAAonB,IAAAjb,SAAA,GAAAwrC,EAAA4L,UAAA7gD,SAAAi1C,EAAA4L,UAAA7pC,WAAAi+B,EAAA4L,YACG,MAAAniB,GACH,UAUA,SAAA4tB,GAAAzwD,EAAAk5B,GACA,IAAAr4B,EAAAb,EAAAiC,UACA2qB,EAAA/rB,EAAA+rB,QACAD,EAAA9rB,EAAA8rB,MACA+jC,EAAAx3B,EAAA,EAAAtM,EAAA7pB,IAAA4pB,GAAAC,EAAArM,IAAAoM,GACA1nB,EAAAyrD,EAAAluD,OAAAwsB,cAAA0hC,EAAAnyC,MAAAve,EAAAsC,IAAAC,QAAA22B,EAAA,EAAAw3B,EAAAn+C,QAAAm+C,EAAA5rD,UAAA,KAAA4rD,EACA,OAAAzrD,GAAmBvF,EAAA,UAAS+uB,SAAAxpB,EAAAi0B,GAG5B,SAAAj4B,GAAAQ,EAAA23C,GAEA,OADA33C,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAAmlB,aAAAwzB,GAAAtzB,mBACA,EAGA,SAAA6qC,GAAAlvD,EAAAy3B,EAAA03B,GACA,IAAAxX,EAAA33C,EAAAzB,MAAAiC,UACA,KAAAm3C,aAAqB15C,EAAA,eAuBlB,IAAA05C,aAAyB15C,EAAA,eAAa05C,EAAAl0C,KAAAu0B,SACzC,OAAAx4B,GAAAQ,EAAA,IAA2B/B,EAAA,cAAaw5B,EAAA,EAAAkgB,EAAA9sB,IAAA8sB,EAAA/2C,QAExC,IAAA2lC,EAAAyoB,GAAAhvD,EAAAzB,MAAAk5B,GACA,QAAA8O,GAAiB/mC,GAAAQ,EAAAumC,GA1BjB,IAAAoR,EAAA/4B,OAAAuwC,EAAA9xB,QAAA,QACA,SACK,GAAAr9B,EAAA4uB,eAAA6I,EAAA,mBACL,IAAAjb,EAAAwyC,GAAAhvD,EAAAzB,MAAAk5B,GACA,SAAAjb,gBAAmCve,EAAA,gBAAiBuB,GAAAQ,EAAAwc,GAE/C,KAAA9U,EAAAqzC,KAAAoU,EAAA9xB,QAAA,UACL,IAAAyb,EAAA5tB,EAAAysB,EAAAzsB,MAAAznB,EAAAynB,EAAAwX,WAAA,KAAAjL,EAAA,EAAAvM,EAAA5nB,WAAA4nB,EAAAmB,UACA,IAAA5oB,KAAA47B,OAAiC,SACjC,IAAA+vB,EAAA33B,EAAA,EAAAvM,EAAAzqB,IAAAgD,EAAA8oB,SAAArB,EAAAzqB,IACA,SAAAgD,EAAAsrB,SAAA+pB,EAAA94C,EAAAihD,QAAAmE,OAAAgK,MAAAtW,EAAA7I,cACUhyC,EAAA,cAAa4wB,aAAAprB,GACvBjE,GAAAQ,EAAA,IAA+B/B,EAAA,cAAaw5B,EAAA,EAAAz3B,EAAAzB,MAAAsC,IAAAC,QAAAoqB,EAAAzqB,IAAAgD,EAAA8oB,UAAArB,MACrCxjB,EAAA+zC,QAIPj8C,GAAAQ,EAAA,IAA+B/B,EAAA,cAAa+B,EAAAzB,MAAAsC,IAAAC,QAAA22B,EAAA,EAAA23B,IAAA3rD,EAAA8oB,cAc5C,SAAA8iC,GAAA5rD,GACA,UAAAA,EAAAf,SAAAe,EAAA6E,UAAAxJ,OAAA2E,EAAA4sC,WAAAvxC,OAGA,SAAAwwD,GAAAloC,GACA,IAAA0xB,EAAA1xB,EAAAw1B,WACA,OAAA9D,GAAA,GAAAA,EAAAltB,OAAAxE,EAAA/e,aAAA,MAAA+e,EAAAvf,UAKA,SAAA0nD,GAAAvvD,GACA,IAAA23C,EAAA33C,EAAA0K,KAAAy4C,eACA1/C,EAAAk0C,EAAA4L,UAAA5kD,EAAAg5C,EAAA8L,YACA,GAAAhgD,EAAA,CACA,IAAA+rD,EAAAC,EAAA9J,GAAA,EAKA,IADAj+C,EAAAyzC,OAAA,GAAA13C,EAAAf,UAAA/D,EAAA0wD,GAAA5rD,IAAA6rD,GAAA7rD,EAAA4sC,WAAA1xC,MAA6GgnD,GAAA,KAE7G,GAAAhnD,EAAA,GACA,MAAA8E,EAAAf,SACA,MAEA,IAAAW,EAAAI,EAAA4sC,WAAA1xC,EAAA,GACA,GAAA2wD,GAAAjsD,GACAmsD,EAAA/rD,EACAgsD,IAAA9wD,MACS,OAAA0E,EAAAX,SAGO,MADhB/D,GADA8E,EAAAJ,GACAiF,UAAAxJ,YAGK,IAAA4wD,GAAAjsD,GACL,MAGA,IADA,IAAAhE,EAAAgE,EAAAurC,gBACAvvC,GAAA6vD,GAAA7vD,IACA+vD,EAAA/rD,EAAAiW,WACA+1C,EAAA3T,EAAAr8C,GACAA,IAAAuvC,gBAEA,GAAAvvC,EAMAd,EAAA0wD,GADA5rD,EAAAhE,OALA,CAEA,IADAgE,IAAAiW,aACA1Z,EAAAonB,IAA+B,MAC/BzoB,EAAA,GAOAgnD,EAAcgK,GAAA3vD,EAAA23C,EAAAl0C,EAAA9E,GACd6wD,GAAsBG,GAAA3vD,EAAA23C,EAAA6X,EAAAC,IAKtB,SAAAG,GAAA5vD,GACA,IAAA23C,EAAA33C,EAAA0K,KAAAy4C,eACA1/C,EAAAk0C,EAAA4L,UAAA5kD,EAAAg5C,EAAA8L,YACA,GAAAhgD,EAAA,CAGA,IAFA,IACA+rD,EAAAC,EADAhhC,EAAA4gC,GAAA5rD,KAGA,GAAA9E,EAAA8vB,EAAA,CACA,MAAAhrB,EAAAf,SAA+B,MAE/B,IAAA4sD,GADA7rD,EAAA4sC,WAAA1xC,IAKY,MAHZ6wD,EAAA/rD,EACAgsD,IAAA9wD,MAGK,IAAA+wD,GAAAjsD,GACL,MAGA,IADA,IAAA+Y,EAAA/Y,EAAA4E,YACAmU,GAAA8yC,GAAA9yC,IACAgzC,EAAAhzC,EAAA9C,WACA+1C,EAAA3T,EAAAt/B,GAAA,EACAA,IAAAnU,YAEA,GAAAmU,EAMA7d,EAAA,EACA8vB,EAAA4gC,GAFA5rD,EAAA+Y,OALA,CAEA,IADA/Y,IAAAiW,aACA1Z,EAAAonB,IAA+B,MAC/BzoB,EAAA8vB,EAAA,GAQA+gC,GAAiBG,GAAA3vD,EAAA23C,EAAA6X,EAAAC,IAGjB,SAAAC,GAAAtoC,GACA,IAAA0xB,EAAA1xB,EAAAw1B,WACA,OAAA9D,KAAAr1C,MAAAq1C,EAAAr1C,KAAAioB,QAGA,SAAAikC,GAAA3vD,EAAA23C,EAAAl0C,EAAA9E,GACA,GAAAk+C,EAAAlF,GAAA,CACA,IAAA30C,EAAA+W,SAAAkiC,cACAj5C,EAAAk5C,OAAAz4C,EAAA9E,GACAqE,EAAAm5C,SAAA14C,EAAA9E,GACAg5C,EAAAkM,kBACAlM,EAAAzV,SAAAl/B,QACG20C,EAAAuO,QACHvO,EAAAuO,OAAAziD,EAAA9E,GAEAqB,EAAAutD,YAAAc,kBACA,IAAA9vD,EAAAyB,EAAAzB,MAEA+B,WAAA,WACAN,EAAAzB,UAA8B2uD,GAAAltD,IAC3B,IAOH,SAAA6vD,GAAA7vD,EAAAy3B,EAAA03B,GACA,IAAAxX,EAAA33C,EAAAzB,MAAAiC,UACA,GAAAm3C,aAAqB15C,EAAA,gBAAa05C,EAAA/4B,OAAAuwC,EAAA9xB,QAAA,QAA2C,SAC7E,GAAA31B,EAAAqzC,KAAAoU,EAAA9xB,QAAA,QAA6C,SAC7C,IAAAz8B,EAAA+2C,EAAA/2C,MACAiqB,EAAA8sB,EAAA9sB,IAEA,IAAAjqB,EAAAG,OAAAwsB,eAAAvtB,EAAA4uB,eAAA6I,EAAA,gBACA,IAAAjb,EAAAwyC,GAAAhvD,EAAAzB,MAAAk5B,GACA,GAAAjb,gBAAiCve,EAAA,cAC1B,OAAAuB,GAAAQ,EAAAwc,GAEP,IAAA5b,EAAAG,OAAAwsB,cAAA,CACA,IAAAuiC,EAAiB7xD,EAAA,UAAS+uB,SAAAyK,EAAA,EAAA72B,EAAAiqB,EAAA4M,GAC1B,OAAAq4B,GAAAtwD,GAAAQ,EAAA8vD,GAEA,SAGA,SAAAC,GAAA/vD,EAAAy3B,GACA,KAAAz3B,EAAAzB,MAAAiC,qBAAwCvC,EAAA,eAAiB,SACzD,IAAAmB,EAAAY,EAAAzB,MAAAiC,UACA0qB,EAAA9rB,EAAA8rB,MACAC,EAAA/rB,EAAA+rB,QACAvM,EAAAxf,EAAAwf,MACA,IAAAsM,EAAAE,WAAAD,GAAmC,SACnC,IAAAvM,EAAe,SACf,GAAA5e,EAAA4uB,eAAA6I,EAAA,wBAA8D,SAC9D,IAAAu4B,GAAA9kC,EAAAwX,aAAAjL,EAAA,EAAAvM,EAAA5nB,WAAA4nB,EAAAmB,WACA,GAAA2jC,MAAA3wB,OAAA,CACA,IAAArgC,EAAAgB,EAAAzB,MAAAS,GAIA,OAHAy4B,EAAA,EAAkBz4B,EAAA+D,OAAAmoB,EAAAzqB,IAAAuvD,EAAAzjC,SAAArB,EAAAzqB,KACRzB,EAAA+D,OAAAmoB,EAAAzqB,IAAAyqB,EAAAzqB,IAAAuvD,EAAAzjC,UACVvsB,EAAA0B,SAAA1C,IACA,EAEA,SAGA,SAAAixD,GAAAjwD,EAAAyD,EAAAlF,GACAyB,EAAAutD,YAAAxG,OACAtjD,EAAAk5C,gBAAAp+C,EACAyB,EAAAutD,YAAA/uD,QAqCA,SAAA0xD,GAAAlwD,EAAAwI,GACA,IAAAtH,EAAAsH,EAAA40C,QAAA+R,EAVA,SAAA3mD,GACA,IAAAd,EAAA,GAKA,OAJAc,EAAA2nD,UAAsBzoD,GAAA,KACtBc,EAAA4nD,UAAsB1oD,GAAA,KACtBc,EAAA6nD,SAAqB3oD,GAAA,KACrBc,EAAA8nD,WAAuB5oD,GAAA,KACvBA,EAIA6oD,CAAA/nD,GACA,UAAAtH,GAAAwG,EAAAqzC,KAAA,IAAA75C,GAAA,KAAAiuD,EACAY,GAAA/vD,GAAA,IAAAuvD,GAAAvvD,GACG,IAAAkB,GAAAwG,EAAAqzC,KAAA,IAAA75C,GAAA,KAAAiuD,EACHY,GAAA/vD,EAAA,IAAA4vD,GAAA5vD,GACG,IAAAkB,GAAA,IAAAA,IAEA,IAAAA,EACHguD,GAAAlvD,GAAA,EAAAmvD,IAAAI,GAAAvvD,GACG,IAAAkB,EACHguD,GAAAlvD,EAAA,EAAAmvD,IAAAS,GAAA5vD,GACG,IAAAkB,EACH2uD,GAAA7vD,GAAA,EAAAmvD,IAAAI,GAAAvvD,GACG,IAAAkB,EA3CH,SAAAlB,GACA,GAAA0H,EAAAi0C,UAAA37C,EAAAzB,MAAAiC,UAAA0qB,MAAA3pB,aAAA,IACA,IAAAnC,EAAAY,EAAA0K,KAAAy4C,eACAI,EAAAnkD,EAAAmkD,UACAE,EAAArkD,EAAAqkD,YACA,GAAAF,GAAA,GAAAA,EAAA7gD,UAAA,GAAA+gD,GACAF,EAAAn7C,YAAA,SAAAm7C,EAAAn7C,WAAAu0C,gBAAA,CACA,IAAAx0C,EAAAo7C,EAAAn7C,WACA6nD,GAAAjwD,EAAAmI,GAAA,GACA7H,WAAA,WAA4B,OAAA2vD,GAAAjwD,EAAAmI,GAAA,IAA6C,MAmCzEqoD,CAAAxwD,IAAA6vD,GAAA7vD,EAAA,EAAAmvD,IAAAS,GAAA5vD,GACGmvD,IAAAznD,EAAAqzC,IAAA,WACH,IAAA75C,GAAA,IAAAA,GAAA,IAAAA,GAAA,IAAAA,IA2DA,SAAAquC,GAAAnoB,GACA,IAAA0xB,EAAA1xB,EAAAw1B,WACA,GAAA9D,EACA,OAAAA,EAAA0L,YACG,SAAAp9B,EAAAvf,UAAAuf,EAAA1N,WAAA,CAIH,GAAAhS,EAAAi0C,QAAA,aAAA9mC,KAAAuS,EAAA1N,WAAA7R,UAAA,CACA,IAAA6O,EAAAqD,SAAAC,cAAA,OAEA,OADAtD,EAAA24B,YAAAt1B,SAAAC,cAAA,QACctD,QACT,GAAA0Q,EAAA1N,WAAA6Q,WAAAnD,GAAA1f,EAAAi0C,QAAA,gBAAA9mC,KAAAuS,EAAA1N,WAAA7R,UACL,OAAcV,QAAA,QAEX,UAAAigB,EAAAvf,UAAAuf,EAAAE,aAAA,oBACH,OAAYngB,QAAA,GAIZ,SAAAspD,GAAAzwD,EAAAC,EAAAC,EAAAwwD,EAAAC,GACA,GAAA1wD,EAAA,GACA,IAAAmX,EAAApX,EAAA4wD,kBAAA5Y,KAAAC,MAAA,GAAAj4C,EAAA6wD,oBAAA,KACAC,EAAAhE,GAAA9sD,EAAAoX,GACA,GAAA05C,IAAA9wD,EAAAzB,MAAAiC,UAAA44B,GAAA03B,GAAA,CACA,IAAAC,EAAA/wD,EAAAzB,MAAAS,GAAAmlB,aAAA2sC,GACA,WAAA15C,EAAgC25C,EAAApvD,QAAA,cAChC,OAAAyV,GAAiC25C,EAAA1sC,iBACjCrkB,EAAA0B,SAAAqvD,QAPA,CAYA,IAAAvuB,EAAAxiC,EAAAzB,MAAAsC,IAAAC,QAAAb,GACA+wD,EAAAxuB,EAAAvJ,YAAA/4B,GACAD,EAAAuiC,EAAAn/B,OAAA2tD,EAAA,GACA9wD,EAAAF,EAAAzB,MAAAsC,IAAAC,QAAAZ,GAAA4Q,MAAAkgD,EAAA,GAEA,IAIAC,EAAAC,EAJAvZ,EAAA33C,EAAAzB,MAAAiC,UACAkF,EAtFA,SAAA1F,EAAAmxD,EAAAC,GACA,IAAAhyD,EAAAY,EAAAihD,QAAAoE,WAAA8L,EAAAC,GACArwD,EAAA3B,EAAAqE,KACA6hD,EAAAlmD,EAAAkmD,WACAC,EAAAnmD,EAAAmmD,SACAtlD,EAAAb,EAAAa,KACAC,EAAAd,EAAAc,GAEA48C,EAAA98C,EAAA0K,KAAAy4C,eAAAvpC,EAAA,KAAA+8B,EAAAmG,EAAAiJ,WAQA,GAPApP,GAAA32C,EAAAonB,IAAAjb,SAAA,GAAAwqC,EAAAj0C,SAAAi0C,IAAAj9B,cACAE,IAAanW,KAAAkzC,EAAAh4C,OAAAm+C,EAAAkJ,eACbnJ,EAAAC,IACOljC,EAAArR,MAAY9E,KAAAq5C,EAAAyG,UAAA5kD,OAAAm+C,EAAA2G,eAInB/7C,EAAA2zC,QAAA,IAAAr7C,EAAAqxD,YACA,QAAAhV,EAAAkJ,EAA4BlJ,EAAAiJ,EAAkBjJ,IAAA,CAC9C,IAAA54C,EAAA1C,EAAAsvC,WAAAgM,EAAA,GAAAvD,EAAAr1C,EAAAm5C,WACA,SAAAn5C,EAAAf,WAAAo2C,EAAA,CAA2CyM,EAAAlJ,EAAgB,MAC3D,IAAAvD,KAAAltB,KAA+B,MAG/B,IAAA0lC,EAAAtxD,EAAAzB,MAAAsC,IACAqF,EAAAlG,EAAAk+C,SAAA,cAA6Ch0B,EAAA,UAAS+gB,WAAAjrC,EAAAzB,MAAAiE,QACtD5B,EAAA0wD,EAAAxwD,QAAAb,GAEA03C,EAAA,KAAA92C,EAAAqF,EAAAR,MAAA3E,GACAgoC,QAAAnoC,EAAAG,OACAgtC,SAAAntC,EAAAG,OAAAuqB,eAAA1qB,EAAA+C,SACAmtC,SAAA,EACA7wC,KAAAqlD,EACAplD,GAAAqlD,EACAn/B,oBAAAxlB,EAAAG,OAAAC,KAAAC,KAAAC,MAAA,OACAqwD,iBAAA,EACAvjB,cAAAp0B,EACA21B,gBACAv6B,QAAApU,IAEA,GAAAgZ,GAAA,MAAAA,EAAA,GAAAnZ,IAAA,CACA,IAAA+wD,EAAA53C,EAAA,GAAAnZ,IAAAssC,EAAAnzB,EAAA,IAAAA,EAAA,GAAAnZ,IACA,MAAAssC,IAAuBA,EAAAykB,GACvB7Z,GAAWhB,OAAA6a,EAAAvxD,EAAA8sC,OAAA9sC,GAEX,OAAUY,MAAA82C,MAAA13C,OAAAC,MA0CVuxD,CAAAzxD,EAAAC,EAAAC,GAEAW,EAAAb,EAAAzB,MAAAsC,IAAA6wD,EAAA7wD,EAAAhC,MAAA6G,EAAAzF,KAAAyF,EAAAxF,IAGA,IAAAF,EAAAqxD,aAAArZ,KAAAC,MAAA,IAAAj4C,EAAA2xD,iBACAV,EAAAjxD,EAAAzB,MAAAiC,UAAAN,GACAgxD,EAAA,QAEAD,EAAAjxD,EAAAzB,MAAAiC,UAAAP,KACAixD,EAAA,SAEAlxD,EAAAqxD,YAAA,KAEA,IAAAO,EAmMA,SAAAt6B,EAAAC,EAAA92B,EAAAwwD,EAAAC,GACA,IAAA1yD,EAAA84B,EAAAoI,cAAAnI,EAAA92B,GACA,SAAAjC,EAAsB,YACtB,IAAAY,EAAAk4B,EAAAuI,YAAAtI,EAAA92B,EAAA62B,EAAA1L,KAAAnrB,EAAA82B,EAAA3L,MACAimC,EAAAzyD,EAAAk4B,EACAw6B,EAAA1yD,EAAAm4B,EACA,UAAA25B,EAAA,CACA,IAAAa,EAAA1wD,KAAAC,IAAA,EAAA9C,EAAA6C,KAAAyd,IAAA+yC,EAAAC,IACAb,GAAAY,EAAAE,EAAAvzD,EAEA,GAAAqzD,EAAArzD,GAAA84B,EAAA1L,KAAA2L,EAAA3L,KAAA,CACA,IAAAqR,EAAAg0B,GAAAzyD,GAAAyyD,GAAAY,EAAArzD,EAAAyyD,EAAA,EAEAa,GADAtzD,GAAAy+B,IACA60B,EAAAD,GACAA,EAAArzD,OACG,GAAAszD,EAAAtzD,EAAA,CACH,IAAAwzD,EAAAf,GAAAzyD,GAAAyyD,GAAAa,EAAAtzD,EAAAyyD,EAAA,EAEAY,GADArzD,GAAAwzD,IACAH,EAAAC,GACAA,EAAAtzD,EAEA,OAAUA,QAAAqzD,OAAAC,QAxNVG,CAAAP,EAAAnsC,QAAA7f,EAAA7E,IAAA0kB,QAAA7f,EAAAzF,KAAAgxD,EAAAC,GACA,IAAAU,EAAA,CACA,KAAAlB,GAAA/Y,aAAmC15C,EAAA,gBAAa05C,EAAA/4B,OAAA+4B,EAAAzsB,MAAAE,WAAAusB,EAAAxsB,WAChDnrB,EAAAW,WAAA+E,EAAAiyC,KAAAjyC,EAAAiyC,IAAAhB,QAAAjxC,EAAAiyC,IAAA5K,KAEK,CACL,GAAArnC,EAAAiyC,IAAA,CACA,IAAAua,EAAAC,GAAAnyD,IAAAzB,MAAAsC,IAAA6E,EAAAiyC,KACAua,MAAA94B,GAAAp5B,EAAAzB,MAAAiC,YAAuDR,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAAmlB,aAAA+tC,IAEvD,OANAN,GAAgBpzD,MAAAm5C,EAAA13C,KAAA4xD,KAAAla,EAAAz3C,GAAA4xD,KAAAna,EAAAz3C,IAShBF,EAAAoyD,iBAIApyD,EAAAzB,MAAAiC,UAAAP,KAAAD,EAAAzB,MAAAiC,UAAAN,IACA0xD,EAAApzD,OAAAozD,EAAAE,MACA9xD,EAAAzB,MAAAiC,qBAAsCvC,EAAA,gBACtC2zD,EAAApzD,MAAAwB,EAAAzB,MAAAiC,UAAAP,MAAA2xD,EAAApzD,OAAAwB,EAAAzB,MAAAiC,UAAAP,KAAA,EACA2xD,EAAApzD,MAAAwB,EAAAzB,MAAAiC,UAAAP,KACK2xD,EAAAC,KAAA7xD,EAAAzB,MAAAiC,UAAAN,IAAA0xD,EAAAC,MAAA7xD,EAAAzB,MAAAiC,UAAAN,GAAA,IACL0xD,EAAAE,MAAA9xD,EAAAzB,MAAAiC,UAAAN,GAAA0xD,EAAAC,KACAD,EAAAC,KAAA7xD,EAAAzB,MAAAiC,UAAAN,KAOAwH,EAAAszC,IAAAtzC,EAAAuzC,YAAA,IAAA2W,EAAAE,MAAAF,EAAApzD,MAAA,GACAozD,EAAAC,MAAAD,EAAApzD,OAAAozD,EAAApzD,MAAAkH,EAAAzF,MACA,MAAAyF,EAAA7E,IAAAO,YAAAwwD,EAAApzD,MAAAkH,EAAAzF,KAAA,EAAA2xD,EAAApzD,MAAAkH,EAAAzF,KAAA,KACA2xD,EAAApzD,QACAozD,EAAAC,OACAD,EAAAE,QAGA,IAGAO,EAHAzxD,EAAA8E,EAAA7E,IAAAghC,eAAA+vB,EAAApzD,MAAAkH,EAAAzF,MACA4qB,EAAAnlB,EAAA7E,IAAAghC,eAAA+vB,EAAAE,KAAApsD,EAAAzF,MACAqyD,EAAA1xD,EAAAwqB,WAAAP,IAAAjqB,EAAAG,OAAAwsB,cAIA,IAAA7lB,EAAA6zC,KAAAv7C,EAAAuyD,aAAAva,KAAAC,MAAA,OACAqa,GAAA3B,EAAA1f,KAAA,SAAAxvB,GAAwD,aAAAA,EAAA5Z,UAAA,KAAA4Z,EAAA5Z,cACxDyqD,GAAA1xD,EAAAH,IAAAiF,EAAA7E,IAAA0kB,QAAAqG,OACAymC,EAAmBp0D,EAAA,UAAS+uB,SAAAtnB,EAAA7E,IAAAC,QAAAF,EAAAH,IAAA,WAC5B4xD,EAAAtlB,MAAAliB,EAAApqB,MACAT,EAAAk+C,SAAA,yBAAAj/B,GAAmD,OAAAA,EAAAjf,EAAAm9C,EAAA,eACnDn9C,EAAAuyD,aAAA,OAIA,GAAAvyD,EAAAzB,MAAAiC,UAAAm2C,OAAAib,EAAApzD,OAqGA,SAAAg0D,EAAAh0D,EAAAC,EAAAg0D,EAAAC,GACA,IAAAD,EAAA1xD,OAAAypB,aAEA/rB,EAAAD,GAAAk0D,EAAAjyD,IAAAgyD,EAAAhyD,KAEAkyD,GAAAF,GAAA,MAAAC,EAAAjyD,IACK,SAEL,IAAA+C,EAAAgvD,EAAA1xD,QAAAtC,GAEA,GAAAgF,EAAAjC,aAAAiC,EAAAzC,OAAAwkB,QAAAqG,OAAApoB,EAAAzC,OAAAypB,YACK,SACL,IAAAooC,EAAAJ,EAAA1xD,QAAA6xD,GAAAnvD,GAAA,OAEA,IAAAovD,EAAA7xD,OAAAypB,aAAAooC,EAAAnyD,IAAAhC,GACAk0D,GAAAC,GAAA,MAAAn0D,EACK,SAGL,OAAAg0D,EAAA1xD,OAAAwkB,QAAAia,IAAAizB,EAAAlxD,cAAA63B,GAAAw5B,EAAA7xD,OAAAwkB,SAvHAstC,CAAAhyD,EAAA+wD,EAAApzD,MAAAozD,EAAAC,KAAAjxD,EAAAiqB,IACA7qB,EAAAk+C,SAAA,yBAAAj/B,GAAmD,OAAAA,EAAAjf,EAAAm9C,EAAA,kBACnDz1C,EAAA8zC,SAAA9zC,EAAA2zC,QAA0Cr7C,EAAAutD,YAAAuF,+BAH1C,CAeAprD,EAAA8zC,UAAA8W,GAAA1xD,EAAApC,SAAAqsB,EAAArsB,SAAA,GAAAqsB,EAAAtpB,cAAAX,EAAAkc,OAAA+N,EAAA/N,OACApX,EAAAiyC,KAAAjyC,EAAAiyC,IAAAhB,QAAAjxC,EAAAiyC,IAAA5K,MAAArnC,EAAAiyC,IAAA5K,MAAA6kB,EAAAC,OACAD,EAAAE,MAAA,EACAjnC,EAAAnlB,EAAA7E,IAAAghC,eAAA+vB,EAAAE,KAAApsD,EAAAzF,MACAK,WAAA,WACAN,EAAAk+C,SAAA,yBAAAj/B,GAAmD,OAAAA,EAAAjf,EAAAm9C,EAAA,gBAC9C,KAGL,IAEAn+C,EAAA4uB,EAAAmlC,EAAAC,EAFAC,EAAArB,EAAApzD,MAAA00D,EAAAtB,EAAAC,KAGA,GAAAS,EACA,GAAA1xD,EAAAH,KAAAoqB,EAAApqB,IAGAiH,EAAAszC,IAAAtzC,EAAAuzC,YAAA,OAAAr6C,EAAAW,eACAvB,EAAAutD,YAAAuF,2BACAxyD,WAAA,WAAgC,OAAA4sD,GAAAltD,IAA+B,KAE/DhB,EAAAgB,EAAAzB,MAAAS,GAAA+D,OAAAkwD,EAAAC,GACAtlC,EAAA/sB,EAAAC,QAAA8wD,EAAApzD,OAAAilC,YAAA5iC,EAAAC,QAAA8wD,EAAAC,YACK,GACLD,EAAAC,MAAAD,EAAAE,OAAAkB,EAAAnyD,EAAAC,QAAA8wD,EAAApzD,UACAu0D,EAyCA,SAAA94B,EAAAx6B,GAGA,IAFA,IACAuB,EAAA+3B,EAAAsF,EADA80B,EAAAl5B,EAAA7xB,WAAA9F,MAAA8wD,EAAA3zD,EAAA2I,WAAA9F,MACA0hB,EAAAmvC,EAAA35B,EAAA45B,EACA5xD,EAAA,EAAiBA,EAAA4xD,EAAAt0D,OAAsB0C,IAAOwiB,EAAAovC,EAAA5xD,GAAA83B,cAAAtV,GAC9C,QAAAkK,EAAA,EAAmBA,EAAAilC,EAAAr0D,OAAuBovB,IAASsL,EAAA25B,EAAAjlC,GAAAoL,cAAAE,GACnD,MAAAxV,EAAAllB,QAAA,GAAA06B,EAAA16B,OACAi6B,EAAA/U,EAAA,GACAhjB,EAAA,MACAq9B,EAAA,SAAA56B,GAA8B,OAAAA,EAAAs1B,OAAAG,SAAAz1B,EAAAnB,aAC3B,OAAA0hB,EAAAllB,QAAA,GAAA06B,EAAA16B,OAKH,YAJAi6B,EAAAS,EAAA,GACAx4B,EAAA,SACAq9B,EAAA,SAAA56B,GAA8B,OAAAA,EAAAs1B,OAAAO,cAAA71B,EAAAnB,SAK9B,IADA,IAAA81C,KACAxb,EAAA,EAAmBA,EAAAn9B,EAAA+nB,WAAuBoV,IAASwb,EAAA7vC,KAAA81B,EAAA5+B,EAAA0I,MAAAy0B,KACnD,GAAM1S,EAAA,SAAQjqB,KAAAm4C,GAAAhf,GAAAa,GAAyB,OAASlB,OAAA/3B,QA3DhDqyD,CAAAzyD,EAAAG,OAAAwkB,QAAAia,IAAA5+B,EAAAW,aAAAspB,EAAAtpB,cACAyxD,EAAAjyD,OAAAwkB,QAAAia,IAAAwzB,EAAAzxD,aAAAqwD,EAAAC,KAAAmB,EAAAx0D,WAEAQ,EAAAgB,EAAAzB,MAAAS,GACA,OAAA+zD,EAAA/xD,KAAqChC,EAAAuvB,QAAA0kC,EAAAC,EAAAH,EAAAh6B,MACzB/5B,EAAAsvB,WAAA2kC,EAAAC,EAAAH,EAAAh6B,WACP,GAAAn4B,EAAAG,OAAAoH,MAAAvH,EAAA+C,SAAA07B,QAAAz+B,EAAA+C,SAAAknB,EAAAlnB,SAAAknB,EAAA6X,WAAA,MAEL,IAAAplC,EAAAsD,EAAAG,OAAAK,YAAAR,EAAAW,aAAAspB,EAAAtpB,cACA,GAAAvB,EAAAk+C,SAAA,2BAAAj/B,GAAyD,OAAAA,EAAAjf,EAAAizD,EAAAC,EAAA51D,KAA0C,OACnG0B,EAAAgB,EAAAzB,MAAAS,GAAAC,WAAA3B,EAAA21D,EAAAC,GAMA,GAFAl0D,IACKA,EAAAgB,EAAAzB,MAAAS,GAAAsI,QAAA2rD,EAAAC,EAAAxtD,EAAA7E,IAAAhC,MAAA+yD,EAAApzD,MAAAkH,EAAAzF,KAAA2xD,EAAAE,KAAApsD,EAAAzF,QACLyF,EAAAiyC,IAAA,CACA,IAAA2b,EAAAnB,GAAAnyD,EAAAhB,EAAA6B,IAAA6E,EAAAiyC,KAMA2b,KAAA5rD,EAAA2zC,QAAA3zC,EAAA8zC,SAAAx7C,EAAAW,WAAA2yD,EAAA10C,QACA00C,EAAAvmB,MAAAkmB,GAAAK,EAAAvmB,MAAA/tC,EAAA+hB,QAAAhY,IAAAmqD,GAAA,IACAxrD,EAAAszC,IAAAsY,EAAA10C,OAAA00C,EAAAvmB,MAAAkmB,IACOj0D,EAAAmlB,aAAAmvC,GAEP1lC,GAAoB5uB,EAAAs4C,YAAA1pB,GACpB5tB,EAAA0B,SAAA1C,EAAAqlB,oBAGA,SAAA8tC,GAAAnyD,EAAAa,EAAA0yD,GACA,OAAAlyD,KAAAC,IAAAiyD,EAAA5c,OAAA4c,EAAAxmB,MAAAlsC,EAAA0kB,QAAAqG,KAAsE,KACtEqhC,GAAAjtD,EAAAa,EAAAC,QAAAyyD,EAAA5c,QAAA91C,EAAAC,QAAAyyD,EAAAxmB,OAkDA,SAAA4lB,GAAAjoC,EAAA8oC,EAAAC,GAEA,IADA,IAAA32C,EAAA4N,EAAA5N,MAAAre,EAAA+0D,EAAA9oC,EAAAjsB,MAAAisB,EAAAjqB,IACAqc,EAAA,IAAA02C,GAAA9oC,EAAA9mB,WAAAkZ,IAAA4N,EAAAjnB,KAAAqZ,GAAA0K,aACA1K,IACAre,IACA+0D,GAAA,EAEA,GAAAC,EAEA,IADA,IAAAj3C,EAAAkO,EAAAjnB,KAAAqZ,GAAAgZ,WAAApL,EAAA9mB,WAAAkZ,IACAN,MAAAuZ,QACAvZ,IAAApU,WACA3J,IAGA,OAAAA,EA2BA,SAAAi1D,GAAA1zD,EAAAnB,GAKA,IAJA,IAAAmW,KACAuQ,EAAA1mB,EAAA0mB,QACA8P,EAAAx2B,EAAAw2B,UACAD,EAAAv2B,EAAAu2B,QACAC,EAAA,GAAAD,EAAA,MAAA7P,EAAAiC,YAAA,GAAAjC,EAAAnd,WAAAof,YAAA,CACA6N,IACAD,IACA,IAAA3xB,EAAA8hB,EAAAnd,WACA4M,EAAAzM,KAAA9E,EAAAzC,KAAA0K,KAAAjI,EAAAzC,KAAAiqB,mBAAAxnB,EAAAZ,MAAA,MACA0iB,EAAA9hB,EAAA8hB,QAGA,IAAAouC,EAAA3zD,EAAAk+C,SAAA,wBAA2Dh0B,EAAA,cAAa+gB,WAAAjrC,EAAAzB,MAAAiE,QACxE3B,EAAA+yD,KAAAxwD,EAAAvC,EAAAmZ,cAAA,OACA5W,EAAAisC,YAAAskB,EAAAjiB,kBAAAnsB,GAA0DxL,SAAAlZ,KAG1D,IADA,IAAAsqD,EAAA/iD,EAAAhF,EAAAgF,WACAA,GAAA,GAAAA,EAAA1F,WAAAyoD,EAAA0I,GAAAzrD,EAAAP,SAAAC,iBAAA,CACA,QAAAtG,EAAA2pD,EAAArsD,OAAA,EAAsC0C,GAAA,EAAQA,IAAA,CAE9C,IADA,IAAAsyD,EAAAjzD,EAAAmZ,cAAAmxC,EAAA3pD,IACA4B,EAAAgF,YAA+B0rD,EAAAzkB,YAAAjsC,EAAAgF,YAC/BhF,EAAAisC,YAAAykB,GAEA1rD,EAAAhF,EAAAgF,WASA,OANAA,GAAA,GAAAA,EAAA1F,UACK0F,EAAAuqC,aAAA,gBAAAtd,EAAA,IAAAD,EAAA,IAAAvqB,KAAAC,UAAAkK,KAKKoS,IAAAhkB,EAAA9F,KAHV0C,EAAAk+C,SAAA,mCAAAj/B,GAAoE,OAAAA,EAAApgB,MACpEA,EAAA0mB,QAAAnkB,YAAA,EAAAvC,EAAA0mB,QAAAqG,KAAA,SAOA,SAAAmoC,GAAA/zD,EAAA1C,EAAA+b,EAAA26C,EAAAziB,GACA,IAAAnqB,EAAAvoB,EAAAo1D,EAAA1iB,EAAAxwC,OAAAC,KAAAC,KAAAC,KACA,IAAAmY,IAAA/b,EAAuB,YACvB,IAAA42D,EAAA52D,IAAA02D,GAAAC,IAAA56C,GACA,GAAA66C,EAAA,CAEA,GADAl0D,EAAAk+C,SAAA,+BAAAj/B,GAAuD3hB,EAAA2hB,EAAA3hB,EAAA22D,GAAAD,KACvDC,EAAiB,WAAY/pC,EAAA,MAAMA,EAAA,SAAQjqB,KAAAD,EAAAzB,MAAAiE,OAAAlF,SAAA,KAC3C,IAAA62D,EAAAn0D,EAAAk+C,SAAA,+BAAAj/B,GAAoE,OAAAA,EAAA3hB,EAAAi0C,EAAAyiB,KACpEG,EACAt1D,EAAAs1D,GAEA/sC,EAAArN,SAAAC,cAAA,OACA1c,EAAAkd,OAAA/L,MAAA,iBAAA9H,QAAA,SAAA6S,GACA4N,EAAAioB,YAAAt1B,SAAAC,cAAA,MAAAE,YAAAV,UAIAxZ,EAAAk+C,SAAA,+BAAAj/B,GAAuD5F,EAAA4F,EAAA5F,KACvD+N,EAyHA,SAAA/N,GACA,IAAA+6C,EAAA,qBAAA3yD,KAAA4X,GACA+6C,IAAc/6C,IAAAxa,MAAAu1D,EAAA,GAAAt1D,SACd,IACAsE,EADAgc,EAAAw0C,KAAA55C,cAAA,OACAq6C,EAAA,oCAAA5yD,KAAA4X,GAAAyD,EAAA,GACA1Z,EAAAixD,GAAAR,GAAAQ,EAAA,GAAAvsD,kBACAuR,EAAAjW,EAAA2F,IAAA,SAAA0Y,GAAkC,UAAAA,EAAA,MAAwBle,KAAA,IAAA8V,EAAAjW,EAAA2F,IAAA,SAAA0Y,GAA2C,WAAAA,EAAA,MAAyBnY,UAAA/F,KAAA,IAC9HuZ,EAAA1Z,EAAAtE,QAEAsgB,EAAAnF,UAAAZ,EACA,QAAA7X,EAAA,EAAiBA,EAAAsb,EAAWtb,IAAO4d,IAAAhX,WACnC,OAAAgX,EApIAk1C,CAAAj7C,GAGA,IAAAk7C,EAAAntC,KAAA+oB,cAAA,mBACAqkB,EAAAD,GAAA,oBAAA9yD,KAAA8yD,EAAAjtC,aAAA,kBACA,IAAAzoB,EAAA,CACA,IAAAqH,EAAAlG,EAAAk+C,SAAA,oBAAAl+C,EAAAk+C,SAAA,cAAmFh0B,EAAA,UAAS+gB,WAAAjrC,EAAAzB,MAAAiE,QAC5F3D,EAAAqH,EAAAokC,WAAAljB,GAAoChB,sBAAA8tC,IAAAM,GAAAx/C,QAAAu8B,IAQpC,OALK1yC,EADL21D,EA8HA,SAAA31D,EAAAmW,GACA,IAAAnW,EAAA+sB,KAAoB,OAAA/sB,EACpB,IAAAmjB,EAAAxf,EAAA3D,EAAA0mB,QAAAnd,WAAApH,KAAAwB,OACA,IAAOwf,EAAAnX,KAAAnF,MAAAsP,GACP,MAAA1P,GAAY,OAAAzG,EAIZ,IAHA,IAAA0mB,EAAA1mB,EAAA0mB,QACA8P,EAAAx2B,EAAAw2B,UACAD,EAAAv2B,EAAAu2B,QACA5zB,EAAAwgB,EAAAljB,OAAA,EAAgC0C,GAAA,EAAQA,GAAA,GACxC,IAAAR,EAAAwB,EAAAsjB,MAAA9D,EAAAxgB,IACA,IAAAR,KAAAiqB,mBAA2C,MAC3C1F,EAAc2E,EAAA,SAAQjqB,KAAAe,EAAA+S,OAAAiO,EAAAxgB,EAAA,GAAA+jB,IACtB8P,IAAgBD,IAEhB,WAAalL,EAAA,MAAK3E,EAAA8P,EAAAD,GA3Ibq/B,CAmFL,SAAA51D,EAAAw2B,EAAAD,GACAC,EAAAx2B,EAAAw2B,YACKx2B,EAAA,IAAaqrB,EAAA,MAAKwqC,GAAA71D,EAAA0mB,SAAA,EAAA8P,EAAAx2B,EAAAw2B,UAAA,EAAAx2B,EAAAu2B,SAAAC,EAAAx2B,EAAAu2B,UACvBA,EAAAv2B,EAAAu2B,UACKv2B,EAAA,IAAaqrB,EAAA,MAAKwqC,GAAA71D,EAAA0mB,QAAA,EAAA6P,EAAAv2B,EAAAu2B,QAAA,KAAAv2B,EAAAw2B,UAAAD,IACvB,OAAAv2B,EAxFK81D,CAAA91D,GAAA21D,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAEStqC,EAAA,MAAK6Y,QAcnB,SAAAjL,EAAAyZ,GACA,GAAAzZ,EAAAtQ,WAAA,EAAgC,OAAAsQ,EAsBhC,IArBA,IAAAzK,EAAA,SAAA3vB,GACA,IAAAqD,EAAAwwC,EAAA9tC,KAAA/F,GACAS,EAAA4C,EAAAuqB,eAAAimB,EAAA5tC,MAAAjG,IACAk3D,OAAA,EAAAltD,KAeA,GAdAowB,EAAAnxB,QAAA,SAAAlD,GACA,GAAAiE,EAAA,CACA,IAAAmtD,EAAAzxD,EAAAjF,EAAAuuB,aAAAjpB,EAAAzC,MACA,IAAAoC,EAAkB,OAAAsE,EAAA,KAClB,GAAAmtD,EAAAntD,EAAA5I,QAAA81D,EAAA91D,QA+BA,SAAAg2D,EAAA1xD,EAAAwxD,EAAAnxD,EAAAsxD,EAAAj4C,GACA,GAAAA,EAAA1Z,EAAAtE,QAAAge,EAAA83C,EAAA91D,QAAAsE,EAAA0Z,IAAA83C,EAAA93C,GAAA,CACA,IAAAgD,EAAAg1C,EAAA1xD,EAAAwxD,EAAAnxD,EAAAsxD,EAAAxqC,UAAAzN,EAAA,GACA,GAAAgD,EAAgB,OAAAi1C,EAAAloC,KAAAkoC,EAAAxvC,QAAA4R,aAAA49B,EAAAvtC,WAAA,EAAA1H,IAChB,IAAA3hB,EAAA42D,EAAAzpC,eAAAypC,EAAAvtC,YACA,GAAArpB,EAAAwuB,UAAA7P,GAAA1Z,EAAAtE,OAAA,EAAA2E,EAAAzC,KAAAoC,EAAA0Z,EAAA,IACO,OAAAi4C,EAAAloC,KAAAkoC,EAAAxvC,QAAAlH,OAA4C6L,EAAA,SAAQjqB,KAAA+0D,GAAAvxD,EAAAL,EAAA0Z,EAAA,OArC3Dg4C,CAAA1xD,EAAAwxD,EAAAnxD,EAAAiE,IAAA5I,OAAA,MACA4I,IAAA5I,OAAA,GAAA+1D,MACO,CACPntD,EAAA5I,SAA4B4I,IAAA5I,OAAA,GAsC5B,SAAAm2D,EAAAxxD,EAAAqZ,GACA,MAAAA,EAAmB,OAAArZ,EACnB,IAAAq0B,EAAAr0B,EAAA8hB,QAAA4R,aAAA1zB,EAAA+jB,WAAA,EAAAytC,EAAAxxD,EAAA8mB,UAAAzN,EAAA,IACA,IAAAqd,EAAA12B,EAAA6nB,eAAA7nB,EAAA+jB,YAAA4S,WAA6DlQ,EAAA,SAAQtL,OAAA,GACrE,OAAAnb,EAAAopB,KAAAiL,EAAAzZ,OAAA8b,IA1C4B86B,CAAAvtD,IAAA5I,OAAA,GAAA81D,EAAA91D,SAC5B,IAAAo2D,EAAAF,GAAAvxD,EAAAL,GACAsE,EAAAa,KAAA2sD,GACA/2D,IAAAwuB,UAAAuoC,EAAAl0D,KAAAk0D,EAAAryD,OACA+xD,EAAAxxD,MAGAsE,EAAiB,OAAS8lB,EAAItD,EAAA,SAAQjqB,KAAAyH,KAGtChK,EAAA6zC,EAAAz0B,MAA8Bpf,GAAA,EAAQA,IAAA,CACtC,IAAA+vB,EAAAJ,EAAA3vB,GAEA,GAAA+vB,EAAA,OAAAA,EAAAD,EAEA,OAAAsK,EA1CmBq9B,CAAAt2D,EAAA0mB,QAAAgsB,IAAA,GAEnBvxC,EAAAk+C,SAAA,2BAAAj/B,GAAiDpgB,EAAAogB,EAAApgB,KACjDA,EA0CA,SAAAm2D,GAAAvxD,EAAAL,EAAAnD,QACA,IAAAA,MAAA,GAEA,QAAAuB,EAAA4B,EAAAtE,OAAA,EAA+B0C,GAAAvB,EAAWuB,IACrCiC,EAAAL,EAAA5B,GAAAuS,OAAA,KAA6BmW,EAAA,SAAQjqB,KAAAwD,IAC1C,OAAAA,EAsBA,SAAAixD,GAAA58B,EAAAxN,EAAArqB,EAAAC,EAAA4c,EAAAsY,GACA,IAAA3xB,EAAA6mB,EAAA,EAAAwN,EAAA1vB,WAAA0vB,EAAAvN,UAAAzK,EAAArc,EAAA8hB,QAKA,OAJAzI,EAAA5c,EAAA,IAAuB4f,EAAA40C,GAAA50C,EAAAwK,EAAArqB,EAAAC,EAAA4c,EAAA,EAAAsY,IACvBtY,GAAA7c,IACK6f,EAAAwK,EAAA,EAAA7mB,EAAA6nB,eAAA,GAAA8O,WAAAta,EAAAgY,EAAAtQ,WAAA,GAAA4N,GAAAtY,GAAAuB,OAAAyB,GACLA,EAAAzB,OAAA5a,EAAA6nB,eAAA7nB,EAAA+jB,YAAA4S,WAAqElQ,EAAA,SAAQtL,OAAA,KAC7EkZ,EAAAX,aAAA7M,EAAA,IAAAwN,EAAAtQ,WAAA,EAAA/jB,EAAAopB,KAAA/M,IAcA,IAAA+zC,IACAuB,OAAA,SACAC,OAAA,SACAzoB,OAAA,SACA0oB,SAAA,SACAC,UAAA,SACAC,KAAA,oBACAx2D,IAAA,iBACAy2D,IAAA,sBACAC,IAAA,uBAGAC,GAAA,KACA,SAAA/B,KACA,OAAA+B,QAAA57C,SAAA67C,eAAAC,mBAAA,UAkCA,IAAAC,IACAC,WAAA,EACAC,eAAA,EACAC,uBAAA,EACAjtD,YAAA,EACAktD,mBAAA,EACAC,SAAA,GAGAC,GAAA1uD,EAAAszC,IAAAtzC,EAAAuzC,YAAA,GAEAob,GAAA,WACAh4D,KAAA0nD,WAAA1nD,KAAA2nD,aAAA3nD,KAAAklD,UAAAllD,KAAAolD,YAAA,MAGA4S,GAAAtxD,UAAAk8B,IAAA,SAAA0W,GACAt5C,KAAA0nD,WAAApO,EAAAoO,WAAmC1nD,KAAA2nD,aAAArO,EAAAqO,aACnC3nD,KAAAklD,UAAA5L,EAAA4L,UAAiCllD,KAAAolD,YAAA9L,EAAA8L,aAGjC4S,GAAAtxD,UAAAq0B,GAAA,SAAAue,GACA,OAAAA,EAAAoO,YAAA1nD,KAAA0nD,YAAApO,EAAAqO,cAAA3nD,KAAA2nD,cACArO,EAAA4L,WAAAllD,KAAAklD,WAAA5L,EAAA8L,aAAAplD,KAAAolD,aAGA,IAAA6S,GAAA,SAAAt2D,EAAAu2D,GACA,IAAAl2C,EAAAhiB,KAEAA,KAAA2B,OACA3B,KAAAk4D,kBACAl4D,KAAAm4D,SACAn4D,KAAAo4D,cAAA,EACAp4D,KAAAq4D,SAAAr7C,OAAAs7C,kBACA,IAAAt7C,OAAAs7C,iBAAA,SAAAC,GACA,QAAAp1D,EAAA,EAAqBA,EAAAo1D,EAAA93D,OAAsB0C,IAAO6e,EAAAm2C,MAAAjuD,KAAAquD,EAAAp1D,IAKlDkG,EAAAszC,IAAAtzC,EAAAuzC,YAAA,IAAA2b,EAAA3lB,KACA,SAAAhjC,GAAsB,mBAAAA,EAAAjN,MAAAiN,EAAA4oD,aAAA/3D,QACtB,iBAAAmP,EAAAjN,MAAAiN,EAAAm5C,SAAAtoD,OAAAmP,EAAAua,OAAAlgB,UAAAxJ,SACSuhB,EAAAy2C,YAEAz2C,EAAA02C,UAET14D,KAAA24D,iBAAA,IAAAX,GACAD,KACA/3D,KAAA44D,WAAA,SAAA3xD,GACA+a,EAAAm2C,MAAAjuD,MAAyBigB,OAAAljB,EAAAkjB,OAAAxnB,KAAA,gBAAAomD,SAAA9hD,EAAA4xD,YACzB72C,EAAAy2C,cAGAz4D,KAAA84D,kBAAA94D,KAAA84D,kBAAAz7C,KAAArd,MACAA,KAAA+4D,6BAAA,GAGAd,GAAAvxD,UAAA+xD,UAAA,WACA,IAAAz2C,EAAAhiB,KAEAA,KAAAo4D,aAAA,IACKp4D,KAAAo4D,aAAAp7C,OAAA/a,WAAA,WAAoD+f,EAAAo2C,cAAA,EAA0Bp2C,EAAA02C,SAAkB,MAGrGT,GAAAvxD,UAAAsyD,WAAA,WACAh5D,KAAAo4D,cAAA,IACAp7C,OAAAi8C,aAAAj5D,KAAAo4D,cACAp4D,KAAAo4D,cAAA,EACAp4D,KAAA04D,UAIAT,GAAAvxD,UAAAvG,MAAA,WACAH,KAAAq4D,UACKr4D,KAAAq4D,SAAAa,QAAAl5D,KAAA2B,KAAAonB,IAAA0uC,IACLM,IACK/3D,KAAA2B,KAAAonB,IAAA9L,iBAAA,2BAAAjd,KAAA44D,YACL54D,KAAAiwD,oBAGAgI,GAAAvxD,UAAAgiD,KAAA,WACA,IAAA1mC,EAAAhiB,KAEA,GAAAA,KAAAq4D,SAAA,CACA,IAAAc,EAAAn5D,KAAAq4D,SAAAe,cACA,GAAAD,EAAA14D,OAAA,CACA,QAAA0C,EAAA,EAAqBA,EAAAg2D,EAAA14D,OAAiB0C,IAAOnD,KAAAm4D,MAAAjuD,KAAAivD,EAAAh2D,IAC7C6Z,OAAA/a,WAAA,WAAqC,OAAA+f,EAAA02C,SAAyB,IAE9D14D,KAAAq4D,SAAAgB,aAEAtB,IAAoB/3D,KAAA2B,KAAAonB,IAAA8mC,oBAAA,2BAAA7vD,KAAA44D,YACpB54D,KAAAmvD,uBAGA8I,GAAAvxD,UAAAupD,iBAAA,WACAjwD,KAAA2B,KAAAonB,IAAAwoB,cAAAt0B,iBAAA,kBAAAjd,KAAA84D,oBAGAb,GAAAvxD,UAAAyoD,oBAAA,WACAnvD,KAAA2B,KAAAonB,IAAAwoB,cAAAse,oBAAA,kBAAA7vD,KAAA84D,oBAGAb,GAAAvxD,UAAA+tD,yBAAA,WACA,IAAAzyC,EAAAhiB,KAEAA,KAAA+4D,6BAAA,EACA92D,WAAA,WAA0B,OAAA+f,EAAA+2C,6BAAA,GAAqD,KAG/Ed,GAAAvxD,UAAAoyD,kBAAA,WACA,GA/6BA,SAAAn3D,GACA,QAAAA,EAAAotD,UAAAptD,EAAA0K,KAAA+3C,eAAAziD,EAAAonB,MACAkmC,GAAAttD,GA66BA23D,CAAAt5D,KAAA2B,MAAA,CACA,GAAA3B,KAAA+4D,4BAAyC,OAAAlK,GAAA7uD,KAAA2B,MAIzC,GAAA0H,EAAAszC,IAAAtzC,EAAAuzC,YAAA,KAAA58C,KAAA2B,KAAAzB,MAAAiC,UAAAoe,MAAA,CACA,IAAA+4B,EAAAt5C,KAAA2B,KAAA0K,KAAAy4C,eAEA,GAAAxL,EAAA4L,WAAAnH,EAAAzE,EAAA4L,UAAA5L,EAAA8L,YAAA9L,EAAAoO,WAAApO,EAAAqO,cACO,OAAA3nD,KAAAy4D,YAEPz4D,KAAA04D,UAGAT,GAAAvxD,UAAAspD,gBAAA,WACAhwD,KAAA24D,iBAAA/1B,IAAA5iC,KAAA2B,KAAA0K,KAAAy4C,iBAGAmT,GAAAvxD,UAAA6yD,sBAAA,SAAAjgB,GACA,MAAAA,EAAAsF,WAA4B,SAC5B,IAAA4a,EAAAlgB,EAAAuF,WAAA,GAAA4a,wBACAhf,EAAAz6C,KAAA2B,KAAAihD,QAAAC,YAAA2W,GACA,OAAA/e,KAAAuN,gBAAmCrlD,KAAA,YAAAwnB,OAAA,GAAAqvC,EAAAn1D,SAAAm1D,EAAAn+C,WAAAm+C,KACnCx5D,KAAAgwD,mBACA,QAFA,GAMAiI,GAAAvxD,UAAAgyD,MAAA,WACA,GAAA14D,KAAA2B,KAAAihD,WAAA5iD,KAAAo4D,cAAA,IACA,IAAAG,EAAAv4D,KAAAq4D,SAAAr4D,KAAAq4D,SAAAe,iBACAp5D,KAAAm4D,MAAA13D,SACA83D,EAAAv4D,KAAAm4D,MAAAzoD,OAAA6oD,GACAv4D,KAAAm4D,MAAA13D,OAAA,GAGA,IAAA64C,EAAAt5C,KAAA2B,KAAA0K,KAAAy4C,eACA2N,GAAAzyD,KAAA+4D,8BAAA/4D,KAAA24D,iBAAA59B,GAAAue,IAAA2V,GAAAjvD,KAAA2B,QAAA3B,KAAAu5D,sBAAAjgB,GAEA13C,GAAA,EAAAC,GAAA,EAAAwwD,GAAA,EAAA1sC,KACA,GAAA3lB,KAAA2B,KAAAotD,SACA,QAAA5rD,EAAA,EAAmBA,EAAAo1D,EAAA93D,OAAsB0C,IAAA,CACzC,IAAAu2D,EAAA15D,KAAA25D,iBAAApB,EAAAp1D,GAAAwiB,GACA+zC,IACA93D,IAAA,EAAA83D,EAAA93D,KAAAoB,KAAAyd,IAAAi5C,EAAA93D,QACAC,IAAA,EAAA63D,EAAA73D,GAAAmB,KAAAC,IAAAy2D,EAAA73D,MACA63D,EAAArH,WAAgCA,GAAA,IAKhC,GAAAhpD,EAAAyzC,OAAAn3B,EAAAllB,OAAA,GACA,IAAAm5D,EAAAj0C,EAAA/K,OAAA,SAAAwI,GAAyC,YAAAA,EAAA5Z,WACzC,MAAAowD,EAAAn5D,OAAA,CACA,IAAAw4B,EAAA2gC,EAAA,GACA1gC,EAAA0gC,EAAA,GACA3gC,EAAA5d,YAAA4d,EAAA5d,uBAAA6d,EAAA7d,WAAoE6d,EAAAiH,SACxDlH,EAAAkH,WAIZv+B,GAAA,GAAA6wD,KACA7wD,GAAA,IACA5B,KAAA2B,KAAAihD,QAAAsF,UAAAtmD,EAAAC,GA0DA,SAAAF,GACA,GAAAk4D,GAAmB,OACnBA,IAAA,EACA,UAAA1N,iBAAAxqD,EAAAonB,KAAA+wC,YACKtgD,QAAA,iLA7DLugD,CAAA/5D,KAAA2B,OAEA3B,KAAAk4D,gBAAAt2D,EAAAC,EAAAwwD,EAAA1sC,GACA3lB,KAAA2B,KAAAihD,QAAA+C,MAAkC3lD,KAAA2B,KAAA0iD,YAAArkD,KAAA2B,KAAAzB,OAClCF,KAAA24D,iBAAA59B,GAAAue,IAA8CuV,GAAA7uD,KAAA2B,SAI9Cs2D,GAAAvxD,UAAAizD,iBAAA,SAAA7Q,EAAAnjC,GAEA,GAAAA,EAAAqZ,QAAA8pB,EAAA3+B,SAAA,EAAuC,YACvC,IAAAswB,EAAAz6C,KAAA2B,KAAAihD,QAAAC,YAAAiG,EAAA3+B,QACA,iBAAA2+B,EAAAnmD,OACA83C,GAAAz6C,KAAA2B,KAAAihD,SAAA,mBAAAkG,EAAAkR,eAEA,SAAAlR,EAAAkR,gBAAAlR,EAAAC,WAAAD,EAAA3+B,OAAAlB,aAAA,UACK,YACL,IAAAwxB,KAAAuN,eAAAc,GAA0C,YAE1C,gBAAAA,EAAAnmD,KAAA,CACA,IAAAvB,EAAA0nD,EAAAnY,gBAAAxyB,EAAA2qC,EAAA9+C,YACA,GAAAX,EAAAszC,IAAAtzC,EAAAuzC,YAAA,IAAAkM,EAAAwJ,WAAA7xD,OAGA,QAAA0C,EAAA,EAAqBA,EAAA2lD,EAAAwJ,WAAA7xD,OAA2B0C,IAAA,CAChD,IAAApC,EAAA+nD,EAAAwJ,WAAAnvD,GACAwtC,EAAA5vC,EAAA4vC,gBACA3mC,EAAAjJ,EAAAiJ,cACA2mC,GAAAvO,MAAA17B,UAAAs4B,QAAAp4B,KAAAkiD,EAAAwJ,WAAA3hB,GAAA,KAAoGvvC,EAAAuvC,KACpG3mC,GAAAo4B,MAAA17B,UAAAs4B,QAAAp4B,KAAAkiD,EAAAwJ,WAAAtoD,GAAA,KAA4FmU,EAAAnU,GAQ5F,IALA,IAAAi9C,EAAA7lD,KAAAia,YAAAytC,EAAA3+B,OACAszB,EAAAr8C,GAAA,IACAQ,EAAA64C,EAAA8L,gBAAAuC,EAAA3+B,OAAA88B,GAAA,GACAC,EAAA/oC,KAAA9C,YAAAytC,EAAA3+B,OACAszB,EAAAt/B,GAAA2qC,EAAA3+B,OAAA6nB,WAAAvxC,OACAovB,EAAA,EAAqBA,EAAAi5B,EAAAwJ,WAAA7xD,OAA6BovB,IAASlK,EAAAzb,KAAA4+C,EAAAwJ,WAAAziC,IAE3D,OAAYjuB,OAAAC,GADZ44C,EAAA8L,gBAAAuC,EAAA3+B,OAAA+8B,EAAA,IAEG,oBAAA4B,EAAAnmD,MACSf,KAAA64C,EAAA0I,WAAA1I,EAAA2I,OAAAvhD,GAAA44C,EAAAoL,SAAApL,EAAA2I,SAGZxhD,KAAA64C,EAAA0I,WACAthD,GAAA44C,EAAAoL,SAKAwM,SAAAvJ,EAAA3+B,OAAAlgB,WAAA6+C,EAAAC,WAKA,IAAA8Q,IAAA,EAWA,IAAAI,MAAiBC,MA2CjB,SAAAC,GAAAx4D,EAAAoX,GACApX,EAAA6wD,oBAAAz5C,EACApX,EAAA4wD,kBAAA5Y,KAAAC,MAWA,SAAAwgB,GAAAz4D,GACAA,EAAAk+C,SAAA,2BAAAwa,GACA,QAAA13D,KAAA03D,EAAuC14D,EAAA24D,cAAA33D,IAChChB,EAAAonB,IAAA9L,iBAAAta,EAAAhB,EAAA24D,cAAA33D,GAAA,SAAAwH,GAA8E,OAAAowD,GAAA54D,EAAAwI,OAIrF,SAAAowD,GAAA54D,EAAAwI,GACA,OAAAxI,EAAAk+C,SAAA,2BAAAoa,GACA,IAAAl6D,EAAAk6D,EAAA9vD,EAAAxH,MACA,QAAA5C,MAAA4B,EAAAwI,MAAAqwD,oBAoEA,SAAAC,GAAAtwD,GAA6B,OAASmX,KAAAnX,EAAAuwD,QAAAtuD,IAAAjC,EAAAwwD,SAOtC,SAAAC,GAAAj5D,EAAAk5D,EAAAz4D,EAAA+1B,EAAAhuB,GACA,OAAAguB,EAAqB,SAQrB,IAPA,IAAA9L,EAAA1qB,EAAAzB,MAAAsC,IAAAC,QAAA01B,GACAnJ,EAAA,SAAA7rB,GACA,GAAAxB,EAAAk+C,SAAAgb,EAAA,SAAAj6C,GAA8C,OAAAzd,EAAAkpB,EAAA5N,MAAAmC,EAAAjf,EAAAS,EAAAiqB,EAAA2B,UAAA3B,EAAArnB,OAAA7B,GAAAgH,GAAA,GAC9CyW,EAAAjf,EAAAS,EAAAiqB,EAAAjnB,KAAAjC,GAAAkpB,EAAArnB,OAAA7B,GAAAgH,GAAA,KACO,OAASglB,GAAA,IAGhBhsB,EAAAkpB,EAAA5N,MAAA,EAA8Btb,EAAA,EAAOA,IAAA,CACrC,IAAAisB,EAAAJ,EAAA7rB,GAEA,GAAAisB,EAAA,OAAAA,EAAAD,EAEA,SAGA,SAAA2rC,GAAAn5D,EAAAQ,EAAA4W,GACApX,EAAAo5D,SAAsBp5D,EAAA2iD,QACtB,IAAA3jD,EAAAgB,EAAAzB,MAAAS,GAAAmlB,aAAA3jB,GACA,WAAA4W,GAA4BpY,EAAA2C,QAAA,cAC5B3B,EAAA0B,SAAA1C,GAuCA,SAAAq6D,GAAAr5D,EAAAS,EAAA+1B,EAAAhuB,EAAA+iD,GACA,OAAA0N,GAAAj5D,EAAA,gBAAAS,EAAA+1B,EAAAhuB,IACAxI,EAAAk+C,SAAA,uBAAAj/B,GAA+C,OAAAA,EAAAjf,EAAAS,EAAA+H,OAC/C+iD,EA7BA,SAAAvrD,EAAAw2B,GACA,OAAAA,EAAqB,SACrB,IAAA8iC,EAAAC,EAAA5hB,EAAA33C,EAAAzB,MAAAiC,UACAm3C,aAAqB15C,EAAA,gBAAgBq7D,EAAA3hB,EAAAl0C,MAGrC,IADA,IAAAinB,EAAA1qB,EAAAzB,MAAAsC,IAAAC,QAAA01B,GACAh1B,EAAAkpB,EAAA5N,MAAA,EAA8Btb,EAAA,EAAOA,IAAA,CACrC,IAAAiC,EAAAjC,EAAAkpB,EAAA5N,MAAA4N,EAAA2B,UAAA3B,EAAAjnB,KAAAjC,GACA,GAAQvD,EAAA,cAAa4wB,aAAAprB,GAAA,CAGZ81D,EAFTD,GAAA3hB,EAAA/2C,MAAAkc,MAAA,GACAtb,GAAAm2C,EAAA/2C,MAAAkc,OAAA4N,EAAArnB,OAAAs0C,EAAA/2C,MAAAkc,MAAA,IAAA66B,EAAA/2C,MAAAH,IACSiqB,EAAArnB,OAAAs0C,EAAA/2C,MAAAkc,OAEA4N,EAAArnB,OAAA7B,GACT,OAIA,aAAA+3D,IACAJ,GAAAn5D,EAA0B/B,EAAA,cAAa8V,OAAA/T,EAAAzB,MAAAsC,IAAA04D,GAAA,YACvC,GASAC,CAAAx5D,EAAAw2B,GAvCA,SAAAx2B,EAAAw2B,GACA,OAAAA,EAAqB,SACrB,IAAA9L,EAAA1qB,EAAAzB,MAAAsC,IAAAC,QAAA01B,GAAA/yB,EAAAinB,EAAA2B,UACA,SAAA5oB,KAAAsrB,QAA6B9wB,EAAA,cAAa4wB,aAAAprB,MAC1C01D,GAAAn5D,EAAA,IAA8B/B,EAAA,cAAaysB,GAAA,YAC3C,GAkCA+uC,CAAAz5D,EAAAw2B,IAQA,SAAAkjC,GAAA15D,EAAAS,EAAA+1B,EAAAhuB,GACA,OAAAywD,GAAAj5D,EAAA,sBAAAS,EAAA+1B,EAAAhuB,IACAxI,EAAAk+C,SAAA,6BAAAj/B,GAAqD,OAAAA,EAAAjf,EAAAS,EAAA+H,MAIrD,SAAAxI,EAAAw2B,GACA,IAAA31B,EAAAb,EAAAzB,MAAAsC,IACA,OAAA21B,EACA,QAAA31B,EAAA0sB,gBACA4rC,GAAAn5D,EAA4B/B,EAAA,cAAa8V,OAAAlT,EAAA,EAAAA,EAAA0kB,QAAAqG,MAAA,YACzC,GAMA,IADA,IAAAlB,EAAA7pB,EAAAC,QAAA01B,GACAh1B,EAAAkpB,EAAA5N,MAAA,EAA8Btb,EAAA,EAAOA,IAAA,CACrC,IAAAiC,EAAAjC,EAAAkpB,EAAA5N,MAAA4N,EAAA2B,UAAA3B,EAAAjnB,KAAAjC,GACA4tD,EAAA1kC,EAAArnB,OAAA7B,GACA,GAAAiC,EAAA8pB,cACO4rC,GAAAn5D,EAAuB/B,EAAA,cAAa8V,OAAAlT,EAAAuuD,EAAA,EAAAA,EAAA,EAAA3rD,EAAA8hB,QAAAqG,MAAA,eAC3C,KAAa3tB,EAAA,cAAa4wB,aAAAprB,GAGnB,SAFA01D,GAAAn5D,EAAuB/B,EAAA,cAAa8V,OAAAlT,EAAAuuD,GAAA,WAG3C,UAvBAuK,CAAA35D,EAAAw2B,GA2BA,SAAAojC,GAAA55D,GACA,OAAA65D,GAAA75D,GA7JAu4D,GAAAuB,QAAA,SAAA95D,EAAAwI,GAEA,GADAxI,EAAAswD,SAAA,IAAA9nD,EAAA40C,SAAA50C,EAAA8nD,UACAyJ,GAAA/5D,EAAAwI,GAQA,GAPAxI,EAAAutD,YAAA8J,aACAr3D,EAAAqxD,YAAA7oD,EAAA40C,QACAp9C,EAAA2xD,gBAAA3Z,KAAAC,OAKAvwC,EAAA6zC,KAAA,IAAA/yC,EAAA40C,SAAA50C,EAAA2nD,SAAA3nD,EAAA6nD,QAAA7nD,EAAA4nD,QASGpwD,EAAAk+C,SAAA,yBAAAj/B,GAAuD,OAAAA,EAAAjf,EAAAwI,MAAyB0nD,GAAAlwD,EAAAwI,GACnFA,EAAAwxD,iBAEAxB,GAAAx4D,EAAA,WAZA,CACA,IAAAi4C,EAAAD,KAAAC,MACAj4C,EAAAuyD,aAAAta,EACAj4C,EAAAi6D,4BAAA35D,WAAA,WACAN,EAAAuyD,cAAAta,IACAj4C,EAAAk+C,SAAA,yBAAAj/B,GAAqD,OAAAA,EAAAjf,EAAAm9C,EAAA,eACrDn9C,EAAAuyD,aAAA,IAEK,OAQLgG,GAAA2B,MAAA,SAAAl6D,EAAAsF,GACA,IAAAA,EAAA83C,UAAwBp9C,EAAAswD,UAAA,IAGxBiI,GAAA4B,SAAA,SAAAn6D,EAAAwI,GACA,KAAAuxD,GAAA/5D,EAAAwI,OAAA4xD,UACA5xD,EAAA2nD,UAAA3nD,EAAA6nD,QAAA3oD,EAAAqzC,KAAAvyC,EAAA4nD,SAEA,GAAApwD,EAAAk+C,SAAA,0BAAAj/B,GAAoD,OAAAA,EAAAjf,EAAAwI,KACpDA,EAAAwxD,qBADA,CAKA,IAAAriB,EAAA33C,EAAAzB,MAAAiC,UACA,KAAAm3C,aAAuB15C,EAAA,eAAa05C,EAAA/2C,MAAAwqB,WAAAusB,EAAA9sB,MAAA,CACpC,IAAAvtB,EAAAuS,OAAAwqD,aAAA7xD,EAAA4xD,UACAp6D,EAAAk+C,SAAA,2BAAAj/B,GAAwD,OAAAA,EAAAjf,EAAA23C,EAAA/2C,MAAAH,IAAAk3C,EAAA9sB,IAAApqB,IAAAnD,MACjD0C,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAAC,WAAA3B,GAAA+mB,kBACP7b,EAAAwxD,oBAoHA,IAAAM,GAAA5yD,EAAAqzC,IAAA,oBAEAud,GAAAiC,UAAA,SAAAv6D,EAAAwI,GACAxI,EAAAswD,SAAA9nD,EAAA8nD,SACA,IAAAkK,EAAAZ,GAAA55D,GACAi4C,EAAAD,KAAAC,MAAAj3C,EAAA,cACAi3C,EAAAj4C,EAAAy6D,UAAAz1C,KAAA,KApHA,SAAAxc,EAAAkyD,GACA,IAAA5a,EAAA4a,EAAA5sD,EAAAtF,EAAAuwD,QAAA4B,EAAAD,EAAAzY,EAAAz5C,EAAAwwD,QACA,OAAAlZ,IAAA6a,IAAA,IAkHAC,CAAApyD,EAAAxI,EAAAy6D,aAAAjyD,EAAA8xD,MACA,eAAAt6D,EAAAy6D,UAAAz5D,KAA+CA,EAAA,cAC/C,eAAAhB,EAAAy6D,UAAAz5D,OAAoDA,EAAA,gBAEpDhB,EAAAy6D,WAAoBz1C,KAAAizB,EAAAnqC,EAAAtF,EAAAuwD,QAAA9W,EAAAz5C,EAAAwwD,QAAAh4D,QAEpB,IAAAP,EAAAT,EAAAkgD,YAAA4Y,GAAAtwD,IACA/H,IAEA,eAAAO,EACKhB,EAAA66D,UAAA,IAAAC,GAAA96D,EAAAS,EAAA+H,EAAAgyD,IACL,eAAAx5D,EAxDA,SAAAhB,EAAAS,EAAA+1B,EAAAhuB,GACA,OAAAywD,GAAAj5D,EAAA,sBAAAS,EAAA+1B,EAAAhuB,IACAxI,EAAAk+C,SAAA,6BAAAj/B,GAAqD,OAAAA,EAAAjf,EAAAS,EAAA+H,MAsDrDkxD,IAAA15D,EAAAS,QAAA+1B,OAAAhuB,GACKA,EAAAwxD,iBAEAxB,GAAAx4D,EAAA,aAGL,IAAA86D,GAAA,SAAA96D,EAAAS,EAAA+H,EAAAgyD,GACA,IAUAle,EAAAye,EAVA16C,EAAAhiB,KAWA,GATAA,KAAA2B,OACA3B,KAAAizD,SAAAtxD,EAAAzB,MAAAsC,IACAxC,KAAAoC,MACApC,KAAAmK,QACAnK,KAAAm8D,UACAn8D,KAAAktD,WAAA/iD,EAAA8xD,IACAj8D,KAAA28D,aAAAxyD,EAAA8nD,SAGA7vD,EAAA+1B,QAAA,EACA8lB,EAAAt8C,EAAAzB,MAAAsC,IAAA83B,OAAAl4B,EAAA+1B,QACAukC,EAAAt6D,EAAA+1B,WACG,CACH,IAAA9L,EAAA1qB,EAAAzB,MAAAsC,IAAAC,QAAAL,OACA67C,EAAA5xB,EAAA3pB,OACAg6D,EAAArwC,EAAA5N,MAAA4N,EAAArnB,SAAA,EAGAhF,KAAA48D,UAAA,KAEA,IAAAzyC,EAAAgyC,EAAA,KAAAhyD,EAAAggB,OACA0yC,EAAA1yC,EAAAxoB,EAAAihD,QAAAC,YAAA14B,GAAA,QACAnqB,KAAAmqB,OAAA0yC,IAAA9zC,IAAA,MAEAk1B,EAAAt7C,KAAAC,KAAAykB,YAAA,IAAA42B,EAAAt7C,KAAAC,KAAAy2C,YACA13C,EAAAzB,MAAAiC,qBAAsCvC,EAAA,eAAa88D,GAAA/6D,EAAAzB,MAAAiC,UAAAP,QAC9C5B,KAAA48D,WAAmBx3D,KAAA64C,EACxB77C,IAAAs6D,EACAI,QAAA98D,KAAAmqB,SAAAnqB,KAAAmqB,OAAA9C,UACA01C,cAAA/8D,KAAAmqB,QAAA9gB,EAAAyzC,QAAA98C,KAAAmqB,OAAAnB,aAAA,qBAEAhpB,KAAAmqB,QAAAnqB,KAAA48D,YAAA58D,KAAA48D,UAAAE,SAAA98D,KAAA48D,UAAAG,iBACA/8D,KAAA2B,KAAAutD,YAAAxG,OACA1oD,KAAA48D,UAAAE,UAAiC98D,KAAAmqB,OAAA9C,WAAA,GACjCrnB,KAAA48D,UAAAG,eACO96D,WAAA,WAAyB,OAAA+f,EAAAmI,OAAAmqB,aAAA,4BAAiE,IACjGt0C,KAAA2B,KAAAutD,YAAA/uD,SAGAwB,EAAA0K,KAAA4Q,iBAAA,UAAAjd,KAAAg9D,GAAAh9D,KAAAg9D,GAAA3/C,KAAArd,OACA2B,EAAA0K,KAAA4Q,iBAAA,YAAAjd,KAAA4+B,KAAA5+B,KAAA4+B,KAAAvhB,KAAArd,OACAm6D,GAAAx4D,EAAA,YA6DA,SAAA+5D,GAAA/5D,EAAAwI,GACA,QAAAxI,EAAAW,cAWA+G,EAAAi0C,QAAAt6C,KAAAi6D,IAAA9yD,EAAA+yD,UAAAv7D,EAAAw7D,oBAAA,OACAx7D,EAAAw7D,oBAAA,KACA,GAxEAV,GAAA/1D,UAAAQ,KAAA,WACAlH,KAAA2B,KAAA0K,KAAAwjD,oBAAA,UAAA7vD,KAAAg9D,IACAh9D,KAAA2B,KAAA0K,KAAAwjD,oBAAA,YAAA7vD,KAAA4+B,MACA5+B,KAAA48D,WAAA58D,KAAAmqB,SACAnqB,KAAA2B,KAAAutD,YAAAxG,OACA1oD,KAAA48D,UAAAE,SAAiC98D,KAAAmqB,OAAAijC,gBAAA,aACjCptD,KAAA48D,UAAAG,eAAuC/8D,KAAAmqB,OAAAijC,gBAAA,mBACvCptD,KAAA2B,KAAAutD,YAAA/uD,SAEAH,KAAA2B,KAAA66D,UAAA,MAGAC,GAAA/1D,UAAAs2D,GAAA,SAAA7yD,GAGA,GAFAnK,KAAAkH,OAEAlH,KAAA2B,KAAAonB,IAAAjb,SAAA,GAAA3D,EAAAggB,OAAA9lB,SAAA8F,EAAAggB,OAAA9O,WAAAlR,EAAAggB,QAAA,CAGA,IAAA/nB,EAAApC,KAAAoC,IACApC,KAAA2B,KAAAzB,MAAAsC,KAAAxC,KAAAizD,WAA6C7wD,EAAApC,KAAA2B,KAAAkgD,YAAA4Y,GAAAtwD,KAE7CnK,KAAA28D,eAAAv6D,EACA+3D,GAAAn6D,KAAA2B,KAAA,WACGq5D,GAAAh7D,KAAA2B,KAAAS,QAAA+1B,OAAAhuB,EAAAnK,KAAAktD,YACH/iD,EAAAwxD,iBACG37D,KAAAm8D,SAEH9yD,EAAAi0C,QAAAt9C,KAAA48D,YAAA58D,KAAA48D,UAAAx3D,KAAAsrB,QAQArnB,EAAA2zC,UAAAh9C,KAAA2B,KAAAzB,MAAAiC,qBAAsEvC,EAAA,iBACtEwC,OAAApC,KAAA2B,KAAAzB,MAAAiC,UAAAP,MAAAQ,OAAApC,KAAA2B,KAAAzB,MAAAiC,UAAAN,KACAi5D,GAAA96D,KAAA2B,KAA+B/B,EAAA,UAASutB,KAAAntB,KAAA2B,KAAAzB,MAAAsC,IAAAC,QAAAL,QAAA,WACxC+H,EAAAwxD,kBAEAxB,GAAAn6D,KAAA2B,KAAA,aAIA86D,GAAA/1D,UAAAk4B,KAAA,SAAAz0B,IACAnK,KAAA28D,eAAA35D,KAAAi6D,IAAAj9D,KAAAmK,MAAAsF,EAAAtF,EAAAuwD,SAAA,GACA13D,KAAAi6D,IAAAj9D,KAAAmK,MAAAy5C,EAAAz5C,EAAAwwD,SAAA,KACK36D,KAAA28D,cAAA,GACLxC,GAAAn6D,KAAA2B,KAAA,YAGAs4D,GAAAmD,UAAA,SAAAz7D,GACA45D,GAAA55D,GACAw4D,GAAAx4D,EAAA,YAGAs4D,GAAAoD,YAAA,SAAA17D,GAAwC,OAAA45D,GAAA55D,IAsBxC,IAAA27D,GAAAj0D,EAAA8zC,QAAA,OA8CA,SAAAogB,GAAA57D,EAAA67D,GACAvE,aAAAt3D,EAAA87D,kBACAD,GAAA,IAAmB77D,EAAA87D,iBAAAx7D,WAAA,WAAiD,OAAAu5D,GAAA75D,IAA+B67D,IAGnG,SAAAE,GAAA/7D,GAEA,IADAA,EAAAW,WAAA,EACAX,EAAAgrD,iBAAAlsD,OAAA,GAA4CkB,EAAAgrD,iBAAAxhD,MAAAk9C,mBAG5C,SAAAmT,GAAA75D,EAAAg8D,GAGA,GAFAh8D,EAAAutD,YAAA8J,aACA0E,GAAA/7D,GACAg8D,GAAAh8D,EAAAihD,QAAA+C,MAAA,CACA,IAAArM,EAAAmV,GAAA9sD,GAGA,OAFA23C,MAAAve,GAAAp5B,EAAAzB,MAAAiC,WAA+CR,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAAmlB,aAAAwzB,IACrC33C,EAAA0iD,YAAA1iD,EAAAzB,QACV,EAEA,SA/DAg6D,GAAA0D,iBAAA1D,GAAA2D,kBAAA,SAAAl8D,GACA,IAAAA,EAAAW,UAAA,CACAX,EAAAutD,YAAAwJ,QACA,IAAAx4D,EAAAyB,EAAAzB,MACAmsB,EAAAnsB,EAAAiC,UAAAI,MACA,GAAArC,EAAAiC,UAAAoe,QACArgB,EAAAqvB,cAAAlD,EAAAgY,YAAAhY,EAAAnpB,cAAAmpB,EAAApnB,WAAAhB,MAAA2uC,KAAA,SAAAhjC,GAAiH,WAAAA,EAAAjN,KAAAC,KAAAwnB,aAEjHzoB,EAAAm8D,WAAAn8D,EAAAzB,MAAAqvB,aAAAlD,EAAApoB,QACAu3D,GAAA75D,GAAA,GACAA,EAAAm8D,WAAA,UAMA,GAJAtC,GAAA75D,GAIA0H,EAAAyzC,OAAA58C,EAAAiC,UAAAoe,OAAA8L,EAAAnpB,eAAAmpB,EAAAgY,YAAAhY,EAAApnB,WAAAhB,MAAAxD,OAEA,IADA,IAAA64C,EAAA33C,EAAA0K,KAAAy4C,eACA1/C,EAAAk0C,EAAA4L,UAAA5kD,EAAAg5C,EAAA8L,YAAgEhgD,GAAA,GAAAA,EAAAf,UAAA,GAAA/D,GAA2C,CAC3G,IAAA0E,EAAA1E,EAAA,EAAA8E,EAAA8mB,UAAA9mB,EAAA4sC,WAAA1xC,EAAA,GACA,IAAA0E,EAAwB,MACxB,MAAAA,EAAAX,SAAA,CACAi1C,EAAAwO,SAAA9iD,IAAAiF,UAAAxJ,QACA,MAEA2E,EAAAJ,EACA1E,GAAA,EAKAqB,EAAAW,WAAA,EAEAi7D,GAAA57D,EAAA27D,KAGApD,GAAAl4D,eAAA,SAAAL,EAAAwI,GACAxI,EAAAW,YACAX,EAAAW,WAAA,EACAX,EAAAw7D,mBAAAhzD,EAAA+yD,UACAK,GAAA57D,EAAA,MAkDA,IAAAo8D,GAAA10D,EAAAszC,IAAAtzC,EAAAuzC,WAAA,IACAvzC,EAAA6zC,KAAA7zC,EAAAm0C,eAAA,IA0CA,SAAAwgB,GAAAr8D,EAAA1C,EAAA+b,EAAA/T,GACA,IAAAzG,EAAAk1D,GAAA/zD,EAAA1C,EAAA+b,EAAArZ,EAAAswD,SAAAtwD,EAAAzB,MAAAiC,UAAAI,OACA,IAAAZ,EAAAk+C,SAAA,uBAAAj/B,GAAiD,OAAAA,EAAAjf,EAAAsF,EAAAzG,GAA4BqrB,EAAA,MAAKtL,UAAU/f,EAA5F,CAEA,IAAAy9D,EAvBA,SAAAz9D,GACA,UAAAA,EAAAw2B,WAAA,GAAAx2B,EAAAu2B,SAAA,GAAAv2B,EAAA0mB,QAAAiC,WAAA3oB,EAAA0mB,QAAAnd,WAAA,KAsBAm0D,CAAA19D,GACAG,EAAAs9D,EAAAt8D,EAAAzB,MAAAS,GAAA6nB,qBAAAy1C,EAAAt8D,EAAAswD,UAAAtwD,EAAAzB,MAAAS,GAAA25C,iBAAA95C,GACAmB,EAAA0B,SAAA1C,EAAAqlB,iBAAA1iB,QAAA,YAAAA,QAAA,qBA9CA22D,GAAAzrC,KAAA0rC,GAAA/4B,IAAA,SAAAx/B,EAAAsF,GACA,IAAAqyC,EAAA33C,EAAAzB,MAAAiC,UAAAg/B,EAAA,OAAAl6B,EAAAtE,KACA,IAAA22C,EAAA/4B,MAAA,CAGA,IAAA1X,EAAAk1D,GAAA,KAAA92D,EAAAk3D,cAEAp9D,EAAAs0D,GAAA1zD,EADA23C,EAAApyB,WAEA6B,EAAAhoB,EAAAgoB,IACA9pB,EAAA8B,EAAA9B,KACA4J,GACA5B,EAAA00D,iBACA9yD,EAAAu1D,YACAv1D,EAAAw1D,QAAA,YAAAt1C,EAAAnN,WACA/S,EAAAw1D,QAAA,aAAAp/D,IAzCA,SAAA0C,EAAAonB,GAGA,GAAApnB,EAAAonB,IAAA1N,WAAA,CACA,IAAAtW,EAAApD,EAAAonB,IAAA1N,WAAA21B,YAAAt1B,SAAAC,cAAA,QACA5W,EAAAisC,YAAAjoB,GACAhkB,EAAA2kB,MAAAwiC,QAAA,6CACA,IAAA5S,EAAAwL,eAAAngD,EAAA+W,SAAAkiC,cACAj5C,EAAA25D,mBAAAv1C,GAIApnB,EAAAonB,IAAAw1C,OACAjlB,EAAAkM,kBACAlM,EAAAzV,SAAAl/B,GACA1C,WAAA,WACA8C,EAAAsW,YAA0BtW,EAAAsW,WAAAqxC,YAAA3nD,GAC1BpD,EAAA2iD,SACG,KAyBHka,CAAA78D,EAAAonB,GAEAoY,GAAYx/B,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAAorB,kBAAA/F,iBAAA1iB,QAAA,oBA+BZ42D,GAAAuE,MAAA,SAAA98D,EAAAsF,GACA,IAAA4B,EAAAk1D,GAAA,KAAA92D,EAAAk3D,cACAnjD,EAAAnS,KAAA61D,QAAA,aAAAz/D,EAAA4J,KAAA61D,QAAA,cACA71D,IAAAmS,GAAA/b,GAAA4J,EAAA81D,MAAAl+D,SACAu9D,GAAAr8D,EAAA1C,EAAA+b,EAAA/T,GACAA,EAAA00D,kBA7BA,SAAAh6D,EAAAsF,GACA,GAAAtF,EAAAonB,IAAA1N,WAAA,CACA,IAAAs6C,EAAAh0D,EAAAswD,UAAAtwD,EAAAzB,MAAAiC,UAAAI,MAAAG,OAAAC,KAAAC,KAAAC,KACAsnB,EAAAxoB,EAAAonB,IAAA1N,WAAA21B,YAAAt1B,SAAAC,cAAAg6C,EAAA,mBACAA,IAAmBxrC,EAAAm0B,gBAAA,QACnBn0B,EAAAT,MAAAwiC,QAAA,6CACA/hC,EAAAm6B,QACAriD,WAAA,WACAN,EAAA2iD,QACAn6B,EAAA9O,YAA4B8O,EAAA9O,WAAAqxC,YAAAviC,GAC5BwrC,EAAoBqI,GAAAr8D,EAAAwoB,EAAAnhB,MAAA,KAAA/B,GACV+2D,GAAAr8D,EAAAwoB,EAAAtO,YAAAsO,EAAAvO,UAAA3U,IACP,KAmBH23D,CAAAj9D,EAAAsF,IAIA,IAKA43D,GAAAx1D,EAAAqzC,IAAA,mBA+HA,QAAAn0C,MA7HA0xD,GAAA6E,UAAA,SAAAn9D,EAAAsF,GACA,IAAAu1D,EAAA76D,EAAA66D,UAEA,GADAA,GAAkBA,EAAAt1D,OAClBD,EAAA83D,aAAA,CAEA,IAAAzlB,EAAA33C,EAAAzB,MAAAiC,UACAC,EAAAk3C,EAAA/4B,MAAA,KAAA5e,EAAAkgD,YAAA4Y,GAAAxzD,IACA,GAAA7E,UAAAk3C,EAAA13C,MAAAQ,QAAAk3C,aAA+D15C,EAAA,cAAa05C,EAAAz3C,GAAA,EAAAy3C,EAAAz3C,UAAyB,GAAA26D,KAAAI,UACrGj7D,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAAmlB,aAA6ClmB,EAAA,cAAa8V,OAAA/T,EAAAzB,MAAAsC,IAAAg6D,EAAAI,UAAAx6D,YACvD,GAAA6E,EAAAkjB,QAAA,GAAAljB,EAAAkjB,OAAA9lB,SAAA,CACH,IAAAo2C,EAAA94C,EAAAihD,QAAAC,YAAA57C,EAAAkjB,QAAA,GACA,IAAAswB,MAAAr1C,KAAAzC,KAAAC,KAAAykB,WAAAozB,GAAA94C,EAAAihD,QAA0E,OAC1EjhD,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAAmlB,aAA6ClmB,EAAA,cAAa8V,OAAA/T,EAAAzB,MAAAsC,IAAAi4C,EAAAqI,aAE1D,IAAAtiD,EAAAmB,EAAAzB,MAAAiC,UAAA+kB,UACAnmB,EAAAs0D,GAAA1zD,EAAAnB,GACAuoB,EAAAhoB,EAAAgoB,IACA9pB,EAAA8B,EAAA9B,KACAgI,EAAA83D,aAAAX,YACAn3D,EAAA83D,aAAAV,QAAAN,GAAA,mBAAAh1C,EAAAnN,WACAmiD,IAA4B92D,EAAA83D,aAAAV,QAAA,aAAAp/D,GAC5B0C,EAAAq9D,SAAA,IA5BA,SAAAx+D,EAAAo+B,GACA5+B,KAAAQ,QACAR,KAAA4+B,OA0BA,CAAAp+B,GAAAyG,EAAA43D,OAGA5E,GAAAgF,QAAA,SAAAt9D,GACAqb,OAAA/a,WAAA,WAAiC,OAAAN,EAAAq9D,SAAA,MAA+B,KAGhE9E,GAAAgF,SAAAhF,GAAAiF,UAAA,SAAAp8B,EAAA97B,GAAkE,OAAAA,EAAA00D,kBAElEzB,GAAAkF,KAAA,SAAAz9D,EAAAsF,GACA,IAAA+3D,EAAAr9D,EAAAq9D,SAGA,GAFAr9D,EAAAq9D,SAAA,KAEA/3D,EAAA83D,aAAA,CAEA,IAAAM,EAAA19D,EAAAkgD,YAAA4Y,GAAAxzD,IACA,GAAAo4D,EAAA,CACA,IAAAC,EAAA39D,EAAAzB,MAAAsC,IAAAC,QAAA48D,EAAAj9D,KACA,GAAAk9D,EAAA,CACA,IAAA9+D,EAAAw+D,KAAAx+D,OACAk1D,GAAA/zD,EAAAsF,EAAA83D,aAAAL,QAAAX,GAAA,qBACAA,GAAA,KAAA92D,EAAA83D,aAAAL,QAAA,gBAAAY,GACA1gC,EAAAogC,IAAA/3D,EAAA43D,IACA,GAAAl9D,EAAAk+C,SAAA,sBAAAj/B,GAAgD,OAAAA,EAAAjf,EAAAsF,EAAAzG,GAA4BqrB,EAAA,MAAKtL,MAAAqe,KACjF33B,EAAA00D,sBAGA,GAAAn7D,EAAA,CAEAyG,EAAA00D,iBACA,IAAApiC,EAAA/4B,EAA0BsE,OAAAu3C,EAAA,EAAAv3C,CAASnD,EAAAzB,MAAAsC,IAAA88D,EAAAl9D,IAAA5B,GAAA8+D,EAAAl9D,IACnC,MAAAm3B,IAA0BA,EAAA+lC,EAAAl9D,KAE1B,IAAAzB,EAAAgB,EAAAzB,MAAAS,GACAi+B,GAAaj+B,EAAAorB,kBAEb,IAAA3pB,EAAAzB,EAAA+hB,QAAAhY,IAAA6uB,GACAgmC,EAAA,GAAA/+D,EAAAw2B,WAAA,GAAAx2B,EAAAu2B,SAAA,GAAAv2B,EAAA0mB,QAAAiC,WACAq2C,EAAA7+D,EAAA6B,IAKA,GAJA+8D,EACK5+D,EAAA6+B,iBAAAp9B,IAAA5B,EAAA0mB,QAAAnd,YAEApJ,EAAAk+B,aAAAz8B,IAAA5B,IACLG,EAAA6B,IAAAu4B,GAAAykC,GAAA,CAEA,IAAAnzC,EAAA1rB,EAAA6B,IAAAC,QAAAL,GACA,GAAAm9D,GAAgB3/D,EAAA,cAAa4wB,aAAAhwB,EAAA0mB,QAAAnd,aAC7BsiB,EAAA2B,WAAA3B,EAAA2B,UAAAiT,WAAAzgC,EAAA0mB,QAAAnd,YACApJ,EAAAmlB,aAAA,IAAwBlmB,EAAA,cAAaysB,QAClC,CACH,IAAAjsB,EAAAO,EAAA+hB,QAAAhY,IAAA6uB,GACA54B,EAAA+hB,QAAAN,KAAAzhB,EAAA+hB,QAAAN,KAAA3hB,OAAA,GAAA6H,QAAA,SAAA2c,EAAAC,EAAAu0B,EAAAC,GAAgG,OAAAt5C,EAAAs5C,IAChG/4C,EAAAmlB,aAAA8oC,GAAAjtD,EAAA0qB,EAAA1rB,EAAA6B,IAAAC,QAAArC,KAEAuB,EAAA2iD,QACA3iD,EAAA0B,SAAA1C,EAAA2C,QAAA,yBAGA22D,GAAA3V,MAAA,SAAA3iD,GACAA,EAAAo5D,UACAp5D,EAAAutD,YAAAxG,OACA/mD,EAAAonB,IAAA0/B,UAAAn8C,IAAA,uBACA3K,EAAAutD,YAAA/uD,QACAwB,EAAAo5D,SAAA,EACA94D,WAAA,WACAN,EAAAihD,SAAAjhD,EAAAqtD,aAAArtD,EAAAutD,YAAAyJ,iBAAA59B,GAAAp5B,EAAA0K,KAAAy4C,iBACS+J,GAAAltD,IACJ,MAILs4D,GAAAsE,KAAA,SAAA58D,GACAA,EAAAo5D,UACAp5D,EAAAutD,YAAAxG,OACA/mD,EAAAonB,IAAA0/B,UAAAtoB,OAAA,uBACAx+B,EAAAutD,YAAA/uD,QACAwB,EAAAutD,YAAAyJ,iBAAA/1B,QACAjhC,EAAAo5D,SAAA,IAIAd,GAAAwF,YAAA,SAAA99D,EAAAwI,GAMA,GAAAd,EAAA2zC,QAAA3zC,EAAA8zC,SAAA,yBAAAhzC,EAAAu1D,UAAA,CACA,IAAA3L,EAAApyD,EAAAoyD,eACA9xD,WAAA,WACA,GAAAN,EAAAoyD,oBAEApyD,EAAAonB,IAAAw1C,OACA58D,EAAA2iD,SACA3iD,EAAAk+C,SAAA,yBAAAj/B,GAAuD,OAAAA,EAAAjf,EAAAm9C,EAAA,mBAAvD,CACA,IACA58C,EADAP,EAAAzB,MAAAiC,UACAD,QAEAA,KAAAE,IAAA,GAAuCT,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAA+D,OAAAxC,EAAAE,IAAA,EAAAF,EAAAE,KAAA4jB,oBAClC,MAKLk0C,GAAgCD,GAAA1xD,IAAA2xD,GAAA3xD,IAEhC,SAAAo3D,GAAA1mC,EAAAC,GACA,GAAAD,GAAAC,EAAe,SACf,QAAAkI,KAAAnI,EAAoB,GAAAA,EAAAmI,KAAAlI,EAAAkI,GAAqB,SACzC,QAAAqB,KAAAvJ,EAAsB,KAAAuJ,KAAAxJ,GAAmB,SACzC,SAGA,IAAA2mC,GAAA,SAAAr4C,EAAA3kB,GACA5C,KAAA4C,QAAAi9D,GACA7/D,KAAAisB,KAAAjsB,KAAA4C,KAAAqpB,MAAA,EACAjsB,KAAAunB,SAGAq4C,GAAAl5D,UAAAgE,IAAA,SAAAgY,EAAA3W,EAAAzL,EAAAw/D,GACA,IAAA/+D,EAAA2hB,EAAA0R,UAAAroB,EAAAnK,KAAAk+D,EAAA9/D,KAAAisB,KAAA,QACA7pB,EAAArB,EAAAqB,IAEA,OADArB,EAAA+yB,QACA,SAAAqoB,GAAA/5C,EAAA9B,EAAA8B,EAAA9B,EAAAN,OAGA4/D,GAAAl5D,UAAAq5D,MAAA,WAAgD,UAEhDH,GAAAl5D,UAAAq0B,GAAA,SAAA9a,GACA,OAAAjgB,MAAAigB,GACAA,aAAA2/C,KACA5/D,KAAA4C,KAAA0G,KAAAtJ,KAAA4C,KAAA0G,KAAA2W,EAAArd,KAAA0G,KACAtJ,KAAAunB,OAAAtH,EAAAsH,OAAAo4C,GAAA3/D,KAAA4C,KAAAqd,EAAArd,QAGA,IAAAo9D,GAAA,SAAAx7D,EAAA5B,GACA5C,KAAA4C,QAAAi9D,GACA7/D,KAAAwE,SAGAw7D,GAAAt5D,UAAAgE,IAAA,SAAAgY,EAAA3W,EAAAzL,EAAAw/D,GACA,IAAAl+D,EAAA8gB,EAAAhY,IAAAqB,EAAAnK,KAAAk+D,EAAA9/D,KAAA4C,KAAAq9D,gBAAA,KAAA3/D,EACAuB,EAAA6gB,EAAAhY,IAAAqB,EAAAlK,GAAAi+D,EAAA9/D,KAAA4C,KAAAs9D,aAAA,MAAA5/D,EACA,OAAAsB,GAAAC,EAAA,SAAAs6C,GAAAv6C,EAAAC,EAAA7B,OAGAggE,GAAAt5D,UAAAq5D,MAAA,SAAAh9B,EAAAh3B,GAAuD,OAAAA,EAAAnK,KAAAmK,EAAAlK,IAEvDm+D,GAAAt5D,UAAAq0B,GAAA,SAAA9a,GACA,OAAAjgB,MAAAigB,GACAA,aAAA+/C,IAAAL,GAAA3/D,KAAAwE,MAAAyb,EAAAzb,QACAm7D,GAAA3/D,KAAA4C,KAAAqd,EAAArd,OAGAo9D,GAAAG,GAAA,SAAAp0D,GAAoC,OAAAA,EAAApJ,gBAAAq9D,IAEpC,IAAA71B,GAAA,SAAA3lC,EAAA5B,GACA5C,KAAA4C,QAAAi9D,GACA7/D,KAAAwE,SAGA2lC,GAAAzjC,UAAAgE,IAAA,SAAAgY,EAAA3W,EAAAzL,EAAAw/D,GACA,IAAAl+D,EAAA8gB,EAAA0R,UAAAroB,EAAAnK,KAAAk+D,EAAA,GACA,GAAAl+D,EAAAkyB,QAAqB,YACrB,IAAAjyB,EAAA6gB,EAAA0R,UAAAroB,EAAAlK,GAAAi+D,GAAA,GACA,OAAAj+D,EAAAiyB,SAAAjyB,EAAAO,KAAAR,EAAAQ,IAAyC,KACzC,IAAA+5C,GAAAv6C,EAAAQ,IAAA9B,EAAAuB,EAAAO,IAAA9B,EAAAN,OAGAmqC,GAAAzjC,UAAAq5D,MAAA,SAAA36D,EAAA2G,GACA,IAAAhL,EAAAqE,EAAA8hB,QAAAtV,UAAA7F,EAAAnK,MACA0D,EAAAvE,EAAAuE,MACAhF,EAAAS,EAAAT,OACA,OAAAA,GAAAyL,EAAAnK,MAAAtB,EAAA8E,EAAA0E,MAAAxE,GAAA4oB,UAAAniB,EAAAlK,IAGAsoC,GAAAzjC,UAAAq0B,GAAA,SAAA9a,GACA,OAAAjgB,MAAAigB,GACAA,aAAAkqB,IAAAw1B,GAAA3/D,KAAAwE,MAAAyb,EAAAzb,QACAm7D,GAAA3/D,KAAA4C,KAAAqd,EAAArd,OAMA,IAAAu5C,GAAA,SAAAv6C,EAAAC,EAAAc,GAGA3C,KAAA4B,OAIA5B,KAAA6B,KACA7B,KAAA2C,QAGA25B,IAA4B15B,MAAQue,cAAA,GAAqBnD,QAAUmD,cAAA,IAEnEg7B,GAAAz1C,UAAA8nB,KAAA,SAAA5sB,EAAAC,GACA,WAAAs6C,GAAAv6C,EAAAC,EAAA7B,KAAA2C,OAGAw5C,GAAAz1C,UAAAq0B,GAAA,SAAA9a,EAAA3f,GAGA,YAFA,IAAAA,MAAA,GAEAN,KAAA2C,KAAAo4B,GAAA9a,EAAAtd,OAAA3C,KAAA4B,KAAAtB,GAAA2f,EAAAre,MAAA5B,KAAA6B,GAAAvB,GAAA2f,EAAApe,IAGAs6C,GAAAz1C,UAAAgE,IAAA,SAAAgY,EAAApiB,EAAAw/D,GACA,OAAA9/D,KAAA2C,KAAA+H,IAAAgY,EAAA1iB,KAAAM,EAAAw/D,IAoDA3jB,GAAAqM,OAAA,SAAApmD,EAAAmlB,EAAA3kB,GACA,WAAAu5C,GAAA/5C,IAAA,IAAAw9D,GAAAr4C,EAAA3kB,KAoBAu5C,GAAAn+B,OAAA,SAAApc,EAAAC,EAAA2C,EAAA5B,GACA,WAAAu5C,GAAAv6C,EAAAC,EAAA,IAAAm+D,GAAAx7D,EAAA5B,KAYAu5C,GAAA/2C,KAAA,SAAAxD,EAAAC,EAAA2C,EAAA5B,GACA,WAAAu5C,GAAAv6C,EAAAC,EAAA,IAAAsoC,GAAA3lC,EAAA5B,KAMA05B,GAAA15B,KAAA8d,IAAA,WAA6C,OAAA1gB,KAAA2C,KAAAC,MAE7C05B,GAAAte,OAAA0C,IAAA,WAA+C,OAAA1gB,KAAA2C,gBAAAq9D,IAE/Cl7D,OAAAuc,iBAAA86B,GAAAz1C,UAAA41B,IAkBA,IAAA4G,MAAA28B,MAMAzjB,GAAA,SAAAgkB,EAAAl0D,GACAlM,KAAAogE,WAAA3/D,OAAA2/D,EAAAl9B,GACAljC,KAAAkM,cAAAzL,OAAAyL,EAAAg3B,IAMAkZ,GAAA1mC,OAAA,SAAAlT,EAAA69D,GACA,OAAAA,EAAA5/D,OAAA6/D,GAAAD,EAAA79D,EAAA,EAAAq9D,IAAAt/C,IAUA67B,GAAA11C,UAAA6U,KAAA,SAAApb,EAAAC,EAAAmgE,GACA,IAAAl3D,KAEA,OADArJ,KAAAwgE,UAAA,MAAArgE,EAAA,EAAAA,EAAA,MAAAC,EAAA,IAAAA,EAAAiJ,EAAA,EAAAk3D,GACAl3D,GAGA+yC,GAAA11C,UAAA85D,UAAA,SAAArgE,EAAAC,EAAAiJ,EAAA/I,EAAAigE,GACA,QAAAp9D,EAAA,EAAiBA,EAAAnD,KAAAogE,MAAA3/D,OAAuB0C,IAAA,CACxC,IAAA4I,EAAA/L,KAAAogE,MAAAj9D,GACA4I,EAAAnK,MAAAxB,GAAA2L,EAAAlK,IAAA1B,KAAAogE,KAAAx0D,EAAAnJ,QACOyG,EAAAa,KAAA6B,EAAAyiB,KAAAziB,EAAAnK,KAAAtB,EAAAyL,EAAAlK,GAAAvB,IAEP,QAAAuvB,EAAA,EAAmBA,EAAA7vB,KAAAkM,SAAAzL,OAA4BovB,GAAA,EAC/C,GAAA7vB,KAAAkM,SAAA2jB,GAAAzvB,GAAAJ,KAAAkM,SAAA2jB,EAAA,GAAA1vB,EAAA,CACA,IAAAsgE,EAAAzgE,KAAAkM,SAAA2jB,GAAA,EACA7vB,KAAAkM,SAAA2jB,EAAA,GAAA2wC,UAAArgE,EAAAsgE,EAAArgE,EAAAqgE,EAAAp3D,EAAA/I,EAAAmgE,EAAAF,KAeAnkB,GAAA11C,UAAAgE,IAAA,SAAAgY,EAAAlgB,EAAAmF,GACA,OAAA3H,MAAAugB,IAAA,GAAAmC,EAAAN,KAAA3hB,OAAkDT,KAClDA,KAAA0gE,SAAAh+C,EAAAlgB,EAAA,IAAAmF,GAAAk4D,KAGAzjB,GAAA11C,UAAAg6D,SAAA,SAAAh+C,EAAAtd,EAAA9E,EAAAw/D,EAAAn4D,GAEA,IADA,IAAAg5D,EACAx9D,EAAA,EAAiBA,EAAAnD,KAAAogE,MAAA3/D,OAAuB0C,IAAA,CACxC,IAAAu2B,EAAA15B,KAAAogE,MAAAj9D,GAAAuH,IAAAgY,EAAApiB,EAAAw/D,GACApmC,KAAA/2B,KAAAo9D,MAAA36D,EAAAs0B,IAAoDinC,WAAAz2D,KAAAwvB,GACpD/xB,EAAAi5D,UAAgCj5D,EAAAi5D,SAAA5gE,KAAAogE,MAAAj9D,GAAAP,MAGhC,OAAA5C,KAAAkM,SAAAzL,OAiMA,SAAAogE,EAAAF,EAAAj+C,EAAAtd,EAAA9E,EAAAw/D,EAAAn4D,GAiBA,IAhBA,IAAAuE,EAAA20D,EAAArgE,QAIAwoC,EAAA,SAAAnU,EAAAisC,EAAAhsC,EAAAisC,GACA,QAAA59D,EAAA,EAAmBA,EAAA+I,EAAAzL,OAAqB0C,GAAA,GACxC,IAAA/C,EAAA8L,EAAA/I,EAAA,GAAA69D,OAAA,GACA,GAAA5gE,GAAAy0B,EAAAz0B,EAAA0/D,IACAgB,GAAA50D,EAAA/I,GAAA28D,EACA5zD,EAAA/I,EAAA,MACO2xB,GAAAx0B,IAAA0gE,EAAAD,EAAAjsC,GAAAgsC,EAAAjsC,MACP3oB,EAAA/I,IAAA69D,EACA90D,EAAA/I,EAAA,IAAA69D,MAIA79D,EAAA,EAAiBA,EAAAuf,EAAAN,KAAA3hB,OAAyB0C,IAAOuf,EAAAN,KAAAjf,GAAAmF,QAAA0gC,GAKjD,IADA,IAAAi4B,GAAA,EACApxC,EAAA,EAAmBA,EAAA3jB,EAAAzL,OAAuBovB,GAAA,EAAY,OAAA3jB,EAAA2jB,EAAA,IACtD,IAAAjuB,EAAA8gB,EAAAhY,IAAAm2D,EAAAhxC,GAAAiwC,GAAAoB,EAAAt/D,EAAAtB,EACA,GAAA4gE,EAAA,GAAAA,GAAA97D,EAAA8hB,QAAAqG,KAAA,CACA0zC,GAAA,EACA,SAGA,IAAAp/D,EAAA6gB,EAAAhY,IAAAm2D,EAAAhxC,EAAA,GAAAiwC,GAAA,GAAAqB,EAAAt/D,EAAAvB,EACAS,EAAAqE,EAAA8hB,QAAAtV,UAAAsvD,GACA57D,EAAAvE,EAAAuE,MACA87D,EAAArgE,EAAAT,OACA+gE,EAAAj8D,EAAAqyB,WAAAnyB,GACA,GAAA+7D,GAAAD,GAAAF,GAAAE,EAAAC,EAAAnzC,UAAAizC,EAAA,CACA,IAAAznC,EAAAxtB,EAAA2jB,EAAA,GAAA6wC,SAAAh+C,EAAA2+C,EAAAz/D,EAAA,EAAAi/D,EAAAhxC,GAAAiwC,EAAA,EAAAn4D,GACA+xB,GAAAnZ,IACArU,EAAA2jB,GAAAqxC,EACAh1D,EAAA2jB,EAAA,GAAAsxC,EACAj1D,EAAA2jB,EAAA,GAAA6J,IAEAxtB,EAAA2jB,EAAA,MACAoxC,GAAA,QAGAA,GAAA,EAKA,GAAAA,EAAA,CACA,IAAAZ,EA4BA,SAAAn0D,EAAA20D,EAAAR,EAAA39C,EAAApiB,EAAAw/D,EAAAn4D,GAEA,SAAA25D,EAAA1+B,EAAAk9B,GACA,QAAA38D,EAAA,EAAmBA,EAAAy/B,EAAAw9B,MAAA3/D,OAAsB0C,IAAA,CACzC,IAAAu2B,EAAAkJ,EAAAw9B,MAAAj9D,GAAAuH,IAAAgY,EAAApiB,EAAAw/D,GACApmC,EAAmB2mC,EAAAn2D,KAAAwvB,GACnB/xB,EAAAi5D,UAAkCj5D,EAAAi5D,SAAAh+B,EAAAw9B,MAAAj9D,GAAAP,MAElC,QAAAitB,EAAA,EAAqBA,EAAA+S,EAAA12B,SAAAzL,OAA2BovB,GAAA,EACzCyxC,EAAA1+B,EAAA12B,SAAA2jB,EAAA,GAAA+S,EAAA12B,SAAA2jB,GAAAiwC,EAAA,GAEP,QAAA38D,EAAA,EAAiBA,EAAA+I,EAAAzL,OAAqB0C,GAAA,GAAU,GAAA+I,EAAA/I,EAAA,IAC3Cm+D,EAAAp1D,EAAA/I,EAAA,GAAA09D,EAAA19D,GAAA28D,EAAA,GAEL,OAAAO,EA1CAkB,CAAAr1D,EAAA20D,EAAAF,MAAAj+C,EACApiB,EAAAw/D,EAAAn4D,GACAoiC,EAAAu2B,GAAAD,EAAAj7D,EAAA,EAAAuC,GACAg5D,EAAA52B,EAAAq2B,MACA,QAAA7hC,EAAA,EAAqBA,EAAAryB,EAAAzL,OAAuB89B,GAAA,EAAYryB,EAAAqyB,EAAA,OACxDryB,EAAAhB,OAAAqzB,EAAA,GACAA,GAAA,GAEA,QAAAusB,EAAA,EAAAlnD,EAAA,EAA4BknD,EAAA/gB,EAAA79B,SAAAzL,OAA6BqqD,GAAA,GAEzD,IADA,IAAA0W,EAAAz3B,EAAA79B,SAAA4+C,GACAlnD,EAAAsI,EAAAzL,QAAAyL,EAAAtI,GAAA49D,GAA2D59D,GAAA,EAC3DsI,EAAAhB,OAAAtH,EAAA,EAAAmmC,EAAA79B,SAAA4+C,GAAA/gB,EAAA79B,SAAA4+C,EAAA,GAAA/gB,EAAA79B,SAAA4+C,EAAA,KAIA,WAAA1O,GAAAukB,KAAAx9B,KAAAs+B,IAAAv1D,GAlQKw1D,CAAA1hE,KAAAkM,SAAAy0D,EAAAj+C,EAAAtd,EAAA9E,EAAAw/D,EAAAn4D,GAEAg5D,EAAA,IAAAvkB,GAAAukB,EAAAx9B,KAAAs+B,KAAAlhD,IAOL67B,GAAA11C,UAAA4F,IAAA,SAAA9J,EAAA69D,GACA,OAAAA,EAAA5/D,OACAT,MAAAugB,GAAsB67B,GAAA1mC,OAAAlT,EAAA69D,GACtBrgE,KAAA2hE,SAAAn/D,EAAA69D,EAAA,GAF4BrgE,MAK5Bo8C,GAAA11C,UAAAi7D,SAAA,SAAAn/D,EAAA69D,EAAA//D,GACA,IAEA4L,EAFA8V,EAAAhiB,KAEAshD,EAAA,EACA9+C,EAAA8F,QAAA,SAAA+4D,EAAAD,GACA,IAAA5lC,EAAAomC,EAAAR,EAAA9gE,EACA,GAAAk7B,EAAAqmC,GAAAxB,EAAAgB,EAAAO,GAAA,CAGA,IADA11D,IAAoBA,EAAA8V,EAAA9V,SAAA1L,SACpB8gD,EAAAp1C,EAAAzL,QAAAyL,EAAAo1C,GAAA8f,GAAgF9f,GAAA,EAChFp1C,EAAAo1C,IAAA8f,EACOl1D,EAAAo1C,EAAA,GAAAp1C,EAAAo1C,EAAA,GAAAqgB,SAAAN,EAAA7lC,EAAAomC,EAAA,GAEA11D,EAAAhB,OAAAo2C,EAAA,EAAA8f,IAAAC,EAAAnzC,SAAAoyC,GAAA9kC,EAAA6lC,EAAAO,EAAA,EAAA/B,KACPve,GAAA,KAGA,IAAA8e,EAAA0B,GAAAxgB,EAAAygB,GAAA1B,MAAA//D,GACA,WAAA87C,GAAAgkB,EAAA3/D,OAAAT,KAAAogE,MAAA1wD,OAAA0wD,GAAAj9B,KAAAs+B,IAAAzhE,KAAAogE,MACAl0D,GAAAlM,KAAAkM,WAMAkwC,GAAA11C,UAAAy5B,OAAA,SAAAkgC,GACA,UAAAA,EAAA5/D,QAAAT,MAAAugB,GAAiDvgB,KACjDA,KAAAgiE,YAAA3B,EAAA,IAGAjkB,GAAA11C,UAAAs7D,YAAA,SAAA3B,EAAA//D,GAEA,IADA,IAAA4L,EAAAlM,KAAAkM,SAAAk0D,EAAApgE,KAAAogE,MACAj9D,EAAA,EAAiBA,EAAA+I,EAAAzL,OAAqB0C,GAAA,GAEtC,IADA,IAAAq4B,OAAA,EAAA55B,EAAAsK,EAAA/I,GAAA7C,EAAAuB,EAAAqK,EAAA/I,EAAA,GAAA7C,EACAsD,EAAA,EAAAmI,OAAA,EAAoCnI,EAAAy8D,EAAA5/D,OAAwBmD,KAAOmI,EAAAs0D,EAAAz8D,KACnEmI,EAAAnK,QAAAmK,EAAAlK,OACAw+D,EAAAz8D,GAAA,MACS43B,WAAAtxB,KAAA6B,IAGT,GAAAyvB,EAAA,CACAtvB,GAAAlM,KAAAkM,WAAoCA,EAAAlM,KAAAkM,SAAA1L,SACpC,IAAA26B,EAAAjvB,EAAA/I,EAAA,GAAA6+D,YAAAxmC,EAAA55B,EAAA,GACAu5B,GAAA5a,GACArU,EAAA/I,EAAA,GAAAg4B,GAEAjvB,EAAAhB,OAAA/H,EAAA,GACAA,GAAA,IAGA,GAAAi9D,EAAA3/D,OAAqB,QAAAovB,EAAA,EAAAoyC,OAAA,EAAqCpyC,EAAAwwC,EAAA5/D,OAA0BovB,IAAS,GAAAoyC,EAAA5B,EAAAxwC,GAC7F,QAAAw3B,EAAA,EAAqBA,EAAA+Y,EAAA3/D,OAAoB4mD,IAAS+Y,EAAA/Y,GAAAtsB,GAAAknC,EAAA3hE,KAClD8/D,GAAApgE,KAAAogE,QAAgCA,EAAApgE,KAAAogE,MAAA5/D,SAChC4/D,EAAAl1D,OAAAm8C,IAAA,IAGA,OAAAn7C,GAAAlM,KAAAkM,UAAAk0D,GAAApgE,KAAAogE,MAAyDpgE,KACzDogE,EAAA3/D,QAAAyL,EAAAzL,OAAA,IAAA27C,GAAAgkB,EAAAl0D,GAAAqU,IAGA67B,GAAA11C,UAAA4jD,SAAA,SAAAhqD,EAAA8E,GACA,GAAApF,MAAAugB,GAAsB,OAAAvgB,KACtB,GAAAoF,EAAAsyB,OAAoB,OAAA0kB,GAAA77B,MAGpB,IADA,IAAAzW,EAAAs2D,EACAj9D,EAAA,EAAiBA,EAAAnD,KAAAkM,SAAAzL,OAA0B0C,GAAA,EAAU,GAAAnD,KAAAkM,SAAA/I,IAAA7C,EAAA,CACrDN,KAAAkM,SAAA/I,IAAA7C,IAAqCwJ,EAAA9J,KAAAkM,SAAA/I,EAAA,IACrC,MAGA,IADA,IAAAhD,EAAAG,EAAA,EAAAF,EAAAD,EAAAiF,EAAA8hB,QAAAqG,KACAsC,EAAA,EAAmBA,EAAA7vB,KAAAogE,MAAA3/D,OAAyBovB,IAAA,CAC5C,IAAAqyC,EAAAliE,KAAAogE,MAAAvwC,GACA,GAAAqyC,EAAAtgE,KAAAxB,GAAA8hE,EAAArgE,GAAA1B,GAAA+hE,EAAAv/D,gBAAAq9D,GAAA,CACA,IAAAp+D,EAAAoB,KAAAC,IAAA9C,EAAA+hE,EAAAtgE,MAAAzB,EAAA0B,EAAAmB,KAAAyd,IAAArgB,EAAA8hE,EAAArgE,IAAA1B,EACAyB,EAAAC,IAAsBu+D,WAAAl2D,KAAAg4D,EAAA1zC,KAAA5sB,EAAAC,KAGtB,GAAAu+D,EAAA,CACA,IAAA+B,EAAA,IAAA/lB,GAAAgkB,EAAAj9B,KAAAs+B,KACA,OAAA33D,EAAA,IAAAs4D,IAAAD,EAAAr4D,IAAAq4D,EAEA,OAAAr4D,GAAAyW,IAGA67B,GAAA11C,UAAAq0B,GAAA,SAAA9a,GACA,GAAAjgB,MAAAigB,EAAsB,SACtB,KAAAA,aAAAm8B,KACAp8C,KAAAogE,MAAA3/D,QAAAwf,EAAAmgD,MAAA3/D,QACAT,KAAAkM,SAAAzL,QAAAwf,EAAA/T,SAAAzL,OAAsD,SACtD,QAAA0C,EAAA,EAAiBA,EAAAnD,KAAAogE,MAAA3/D,OAAuB0C,IACnC,IAAAnD,KAAAogE,MAAAj9D,GAAA43B,GAAA9a,EAAAmgD,MAAAj9D,IAAyC,SAC9C,QAAA0sB,EAAA,EAAmBA,EAAA7vB,KAAAkM,SAAAzL,OAA4BovB,GAAA,EAC1C,GAAA7vB,KAAAkM,SAAA2jB,IAAA5P,EAAA/T,SAAA2jB,IACL7vB,KAAAkM,SAAA2jB,EAAA,IAAA5P,EAAA/T,SAAA2jB,EAAA,KACA7vB,KAAAkM,SAAA2jB,EAAA,GAAAkL,GAAA9a,EAAA/T,SAAA2jB,EAAA,IAA8D,SAC9D,UAGAusB,GAAA11C,UAAA2jD,OAAA,SAAAjlD,GACA,OAAAi9D,GAAAriE,KAAAsiE,YAAAl9D,KAGAg3C,GAAA11C,UAAA47D,YAAA,SAAAl9D,GACA,GAAApF,MAAAugB,GAAsB,OAAA2iB,GACtB,GAAA99B,EAAA8pB,gBAAAlvB,KAAAogE,MAAAxtB,KAAAotB,GAAAG,IAA8D,OAAAngE,KAAAogE,MAE9D,IADA,IAAA/2D,KACAlG,EAAA,EAAiBA,EAAAnD,KAAAogE,MAAA3/D,OAAuB0C,IACxCnD,KAAAogE,MAAAj9D,GAAAR,gBAAAq9D,IACO32D,EAAAa,KAAAlK,KAAAogE,MAAAj9D,IAEP,OAAAkG,GAGA,IAAAkX,GAAA,IAAA67B,GAIAA,GAAA77B,SAEA67B,GAAAimB,iBAKA,IAAAD,GAAA,SAAAG,GACAviE,KAAAuiE,WAyHA,SAAAT,GAAAU,EAAAliE,GACA,IAAAA,IAAAkiE,EAAA/hE,OAAiC,OAAA+hE,EAEjC,IADA,IAAAn5D,KACAlG,EAAA,EAAiBA,EAAAq/D,EAAA/hE,OAAkB0C,IAAA,CACnC,IAAA4I,EAAAy2D,EAAAr/D,GACAkG,EAAAa,KAAA,IAAAiyC,GAAApwC,EAAAnK,KAAAtB,EAAAyL,EAAAlK,GAAAvB,EAAAyL,EAAApJ,OAEA,OAAA0G,EAoBA,SAAAw4D,GAAAW,EAAAp9D,EAAA9E,GACA,GAAA8E,EAAAsyB,OAAoB,YAEpB,IADA,IAAAt3B,EAAAE,EAAA8E,EAAA8oB,SAAAsN,EAAA,KACAr4B,EAAA,EAAA4I,OAAA,EAAkC5I,EAAAq/D,EAAA/hE,OAAkB0C,KACpD4I,EAAAy2D,EAAAr/D,KAAA4I,EAAAnK,KAAAtB,GAAAyL,EAAAlK,GAAAzB,KACAo7B,WAAAtxB,KAAA6B,GACAy2D,EAAAr/D,GAAA,MAGA,OAAAq4B,EAGA,SAAAumC,GAAAp+C,GAEA,IADA,IAAAta,KACAlG,EAAA,EAAiBA,EAAAwgB,EAAAljB,OAAkB0C,IAC9B,MAAAwgB,EAAAxgB,IAAwBkG,EAAAa,KAAAyZ,EAAAxgB,IAC7B,OAAAkG,EAQA,SAAAi3D,GAAAkC,EAAAp9D,EAAA9E,EAAAqH,GACA,IAAAuE,KAAAu2D,GAAA,EACAr9D,EAAAkD,QAAA,SAAA+4D,EAAAqB,GACA,IAAAlnC,EAAAqmC,GAAAW,EAAAnB,EAAAqB,EAAApiE,GACA,GAAAk7B,EAAA,CACAinC,GAAA,EACA,IAAA3K,EAAAwI,GAAA9kC,EAAA6lC,EAAA/gE,EAAAoiE,EAAA,EAAA/6D,GACAmwD,GAAAv3C,IACSrU,EAAAhC,KAAAw4D,IAAArB,EAAAnzC,SAAA4pC,MAIT,IADA,IAAAzN,EAAAyX,GAAAW,EAAAV,GAAAS,MAAAliE,GAAA6iC,KAAAs+B,IACAt+D,EAAA,EAAiBA,EAAAknD,EAAA5pD,OAAmB0C,IAAOknD,EAAAlnD,GAAAR,KAAAo9D,MAAA36D,EAAAilD,EAAAlnD,MAC3CwE,EAAAi5D,UAA2Bj5D,EAAAi5D,SAAAvW,EAAAlnD,GAAAP,MAC3BynD,EAAAn/C,OAAA/H,IAAA,IAEA,OAAAknD,EAAA5pD,QAAAyL,EAAAzL,OAAA,IAAA27C,GAAAiO,EAAAn+C,GAAAqU,GAOA,SAAAkhD,GAAAxoC,EAAAC,GACA,OAAAD,EAAAr3B,KAAAs3B,EAAAt3B,MAAAq3B,EAAAp3B,GAAAq3B,EAAAr3B,GAQA,SAAAwgE,GAAAG,GAEA,IADA,IAAAG,EAAAH,EACAr/D,EAAA,EAAiBA,EAAAw/D,EAAAliE,OAAA,EAAwB0C,IAAA,CACzC,IAAA4I,EAAA42D,EAAAx/D,GACA,GAAA4I,EAAAnK,MAAAmK,EAAAlK,GAA+B,QAAA+B,EAAAT,EAAA,EAAoBS,EAAA++D,EAAAliE,OAAoBmD,IAAA,CACvE,IAAAua,EAAAwkD,EAAA/+D,GACA,GAAAua,EAAAvc,MAAAmK,EAAAnK,KAAA,CAUAuc,EAAAvc,KAAAmK,EAAAlK,KACA8gE,GAAAH,IAAiCG,EAAAH,EAAAhiE,SAGjCmiE,EAAAx/D,GAAA4I,EAAAyiB,KAAAziB,EAAAnK,KAAAuc,EAAAvc,MACAghE,GAAAD,EAAA/+D,EAAAmI,EAAAyiB,KAAArQ,EAAAvc,KAAAmK,EAAAlK,MAEA,MAhBAsc,EAAAtc,IAAAkK,EAAAlK,KACA8gE,GAAAH,IAAiCG,EAAAH,EAAAhiE,SAGjCmiE,EAAA/+D,GAAAua,EAAAqQ,KAAArQ,EAAAvc,KAAAmK,EAAAlK,IACA+gE,GAAAD,EAAA/+D,EAAA,EAAAua,EAAAqQ,KAAAziB,EAAAlK,GAAAsc,EAAAtc,OAeA,OAAA8gE,EAGA,SAAAC,GAAAj/C,EAAAxgB,EAAA+mD,GACA,KAAA/mD,EAAAwgB,EAAAljB,QAAAghE,GAAAvX,EAAAvmC,EAAAxgB,IAAA,GAAyDA,IACzDwgB,EAAAzY,OAAA/H,EAAA,EAAA+mD,GAKA,SAAA2Y,GAAAlhE,GACA,IAAA65B,KAOA,OANA75B,EAAAk+C,SAAA,uBAAAj/B,GACA,IAAAvX,EAAAuX,EAAAjf,EAAAzB,OACAmJ,MAAAkX,IAAoCib,EAAAtxB,KAAAb,KAEpC1H,EAAAytD,eACK5zB,EAAAtxB,KAAAkyC,GAAA1mC,OAAA/T,EAAAzB,MAAAsC,KAAAb,EAAAytD,cAAAlF,QACLkY,GAAAxgE,KAAA45B,GAtPA4mC,GAAA17D,UAAA4jD,SAAA,SAAAhqD,EAAAwJ,GACA,GAAAA,EAAA4tB,OAAqB,OAAA0kB,GAAA77B,MAErB,IADA,IAAAib,KACAr4B,EAAA,EAAiBA,EAAAnD,KAAAuiE,QAAA9hE,OAAyB0C,IAAA,CAC1C,IAAAkG,EAAArJ,KAAAuiE,QAAAp/D,GAAAmnD,SAAAhqD,EAAAwJ,GACAT,GAAAkX,KACAlX,aAAA+4D,GAA4C5mC,IAAA9rB,OAAArG,EAAAk5D,SAClC/mC,EAAAtxB,KAAAb,IAEV,OAAA+4D,GAAAxgE,KAAA45B,IAGA4mC,GAAA17D,UAAAq0B,GAAA,SAAA9a,GACA,KAAAA,aAAAmiD,KACAniD,EAAAsiD,QAAA9hE,QAAAT,KAAAuiE,QAAA9hE,OAAoD,SACpD,QAAA0C,EAAA,EAAiBA,EAAAnD,KAAAuiE,QAAA9hE,OAAyB0C,IACrC,IAAAnD,KAAAuiE,QAAAp/D,GAAA43B,GAAA9a,EAAAsiD,QAAAp/D,IAA6C,SAClD,UAGAi/D,GAAA17D,UAAA2jD,OAAA,SAAAjlD,GAEA,IADA,IAAAiE,EAAAy5D,GAAA,EACA3/D,EAAA,EAAiBA,EAAAnD,KAAAuiE,QAAA9hE,OAAyB0C,IAAA,CAC1C,IAAAknD,EAAArqD,KAAAuiE,QAAAp/D,GAAAm/D,YAAAl9D,GACA,GAAAilD,EAAA5pD,OACA,GAAA4I,EAEK,CACLy5D,IACAz5D,IAAA7I,QACAsiE,GAAA,GAEA,QAAAl/D,EAAA,EAAqBA,EAAAymD,EAAA5pD,OAAmBmD,IAAOyF,EAAAa,KAAAmgD,EAAAzmD,SAN/CyF,EAAAghD,EASA,OAAAhhD,EAAAg5D,GAAAS,EAAAz5D,IAAA85B,KAAAs+B,KAAAv+B,IAMAk/B,GAAAxgE,KAAA,SAAA2gE,GACA,OAAAA,EAAA9hE,QACA,cAAA8f,GACA,cAAAgiD,EAAA,GACA,mBAAAH,GAAAG,KA+MA,IAAAQ,GAAA,SAAAziC,EAAA7+B,GACAzB,KAAAgjE,OAAAvhE,EAGAzB,KAAAE,MAAAuB,EAAAvB,MAEAF,KAAAqD,SAAArD,KAAAqD,SAAAga,KAAArd,MAEAA,KAAAijE,MAAA,KACAjjE,KAAA+6D,SAAA,EAEA/6D,KAAAgsD,YAAA,KAKAhsD,KAAA+oB,IAAAuX,KAAA4iC,OAAAxnD,SAAAC,cAAA,OACA2kB,IACAA,EAAA0Q,YAA4B1Q,EAAA0Q,YAAAhxC,KAAA+oB,KAC5BuX,EAAAn/B,MAA2Bm/B,EAAAtgC,KAAA+oB,KAC3BuX,EAAA4iC,QAA2BljE,KAAAmjE,SAAA,IAK3BnjE,KAAA+uD,SAAAqU,GAAApjE,MACAA,KAAA89D,WAAA,KACA99D,KAAAovD,cAAA,KACAiU,GAAArjE,MACAA,KAAAkpD,UAAAoa,GAAAtjE,MACAA,KAAA4iD,QAAAyK,EAAArtD,KAAAE,MAAAsC,IAAA+gE,GAAAvjE,MAAA6iE,GAAA7iE,WAAA+oB,IAAA/oB,MAEAA,KAAAywD,qBAAA,KAKAzwD,KAAAg/D,SAAA,KAx3CA,SAAAr9D,GACAA,EAAAswD,UAAA,EACAtwD,EAAA66D,UAAA,KACA76D,EAAAqxD,YAAA,KACArxD,EAAA2xD,gBAAA,EACA3xD,EAAAy6D,WAAoBz1C,KAAA,EAAAlX,EAAA,EAAAm0C,EAAA,EAAAjhD,KAAA,IACpBhB,EAAA6wD,oBAAA,KACA7wD,EAAA4wD,kBAAA,EAEA5wD,EAAAuyD,aAAA,EACAvyD,EAAAi6D,4BAAA,KAEAj6D,EAAAW,WAAA,EACAX,EAAA87D,iBAAA,KACA97D,EAAAgrD,oBACAhrD,EAAAw7D,oBAAA,IAEAx7D,EAAAutD,YAAA,IAAA+I,GAAAt2D,EAAA,SAAAC,EAAAC,EAAAwwD,EAAA1sC,GAAiF,OAAAysC,GAAAzwD,EAAAC,EAAAC,EAAAwwD,EAAA1sC,KACjFhkB,EAAAutD,YAAA/uD,QAEAwB,EAAAoyD,eAAA,EAEApyD,EAAA24D,cAAAx1D,OAAA4Q,OAAA,MACA,IAAAsZ,EAAA,SAAA7kB,GACA,IAAApK,EAAAk6D,GAAA9vD,GACAxI,EAAAonB,IAAA9L,iBAAA9S,EAAAxI,EAAA24D,cAAAnwD,GAAA,SAAAA,IA2CA,SAAAxI,EAAAwI,GACA,IAAAA,EAAAq5D,QAAuB,SACvB,GAAAr5D,EAAAqwD,iBAA+B,SAC/B,QAAAp1D,EAAA+E,EAAAggB,OAA+B/kB,GAAAzD,EAAAonB,IAAkB3jB,IAAAiW,WAC5C,IAAAjW,GAAA,IAAAA,EAAAf,UACLe,EAAAm5C,YAAAn5C,EAAAm5C,WAAA6H,UAAAj8C,GACO,SACP,SAjDAs5D,CAAA9hE,EAAAwI,IAAAowD,GAAA54D,EAAAwI,KACAxI,EAAAotD,UAAA5kD,EAAAxH,QAAAu3D,IACSn6D,EAAA4B,EAAAwI,MAIT,QAAAA,KAAA8vD,GAAAjrC,EAAA7kB,GAIAd,EAAAi0C,QAAsB37C,EAAAonB,IAAA9L,iBAAA,mBAAiD,cAEvEm9C,GAAAz4D,GAo1CA+hE,CAAA1jE,MAEAA,KAAA2jE,eACA3jE,KAAA4jE,qBAGA7+B,IAA4BtjC,OAAS0f,cAAA,GAAqB9U,MAAQ8U,cAAA,IAmTlE,SAAAoiD,GAAA5hE,GACA,IAAA6C,EAAAM,OAAA4Q,OAAA,MAcA,OAbAlR,EAAAmpD,MAAA,cACAnpD,EAAAq/D,gBAAAryD,OAAA7P,EAAAotD,UAEAptD,EAAAk+C,SAAA,sBAAA72C,GAEA,GADA,mBAAAA,IAAqCA,IAAArH,EAAAzB,QACrC8I,EAAgB,QAAA4B,KAAA5B,EAChB,SAAA4B,EACSpG,EAAAmpD,OAAA,IAAA3kD,EAAA4B,GACTpG,EAAAoG,IAAA,mBAAAA,GAAA,YAAAA,IACSpG,EAAAoG,GAAA4G,OAAAxI,EAAA4B,QAITuxC,GAAA/2C,KAAA,EAAAzD,EAAAzB,MAAAsC,IAAA0kB,QAAAqG,KAAA/oB,IAGA,SAAA6+D,GAAA1hE,GACA,GAAAA,EAAAm8D,WAAA,CACA,IAAA/0C,EAAArN,SAAAC,cAAA,OACAoN,EAAAurB,aAAA,2BACA3yC,EAAAytD,eAA0BrmC,MAAAmhC,KAAA/N,GAAAqM,OAAA7mD,EAAAzB,MAAAiC,UAAAusC,KAAA3lB,GAAmE2sB,KAAA,EAAAzxC,MAAAtC,EAAAm8D,mBAE7Fn8D,EAAAytD,cAAA,KAIA,SAAAgU,GAAAzhE,GACA,OAAAA,EAAAk+C,SAAA,oBAAA72C,GAAsD,WAAAA,EAAArH,EAAAzB,SAQtD,SAAAojE,GAAA3hE,GACA,IAAA0H,KAKA,OAJA1H,EAAAk+C,SAAA,qBAAA33C,GACA,QAAAK,KAAAL,EAA2BpD,OAAA4B,UAAA8B,eAAA5B,KAAAyC,EAAAd,KACpBc,EAAAd,GAAAL,EAAAK,MAEPc,EArVA07B,GAAAtjC,MAAAif,IAAA,WACA,GAAA1gB,KAAAgjE,OAAA9iE,OAAAF,KAAAE,MAAA,CACA,IAAAkB,EAAApB,KAAAgjE,OAEA,QAAA31D,KADArN,KAAAgjE,UACA5hE,EAA4BpB,KAAAgjE,OAAA31D,GAAAjM,EAAAiM,GAC5BrN,KAAAgjE,OAAA9iE,MAAAF,KAAAE,MAEA,OAAAF,KAAAgjE,QAMAD,GAAAr8D,UAAAs5B,OAAA,SAAAv+B,GACAA,EAAAM,iBAAA/B,KAAAgjE,OAAAjhE,iBAA6Dq4D,GAAAp6D,MAC7DA,KAAAgjE,OAAAvhE,EACAzB,KAAA8jE,iBAAAriE,EAAAvB,OAAA,IAOA6iE,GAAAr8D,UAAAq9D,SAAA,SAAAtiE,GACA,IAAAs4C,KACA,QAAA1sC,KAAArN,KAAAgjE,OAAiCjpB,EAAA1sC,GAAArN,KAAAgjE,OAAA31D,GAEjC,QAAAs/B,KADAoN,EAAA75C,MAAAF,KAAAE,MACAuB,EAA6Bs4C,EAAApN,GAAAlrC,EAAAkrC,GAC7B3sC,KAAAggC,OAAA+Z,IAMAgpB,GAAAr8D,UAAA29C,YAAA,SAAAnkD,GACAF,KAAA8jE,iBAAA5jE,EAAAF,KAAAE,MAAAsD,SAAAtD,EAAAsD,UAGAu/D,GAAAr8D,UAAAo9D,iBAAA,SAAA5jE,EAAA8jE,GACA,IAAAhiD,EAAAhiB,KAEAoB,EAAApB,KAAAE,MAAA+jE,GAAA,EAAAC,GAAA,EAQA,GALAhkE,EAAAqvB,aAAAvvB,KAAAsC,YACAo7D,GAAA19D,MACAkkE,GAAA,GAEAlkE,KAAAE,QACA8jE,EAAA,CACA,IAAA9a,EAAAoa,GAAAtjE,OAsSA,SAAAi5B,EAAAC,GACA,IAAAirC,EAAA,EAAAC,EAAA,EACA,QAAA77D,KAAA0wB,EAAA,CACA,GAAAA,EAAA1wB,IAAA2wB,EAAA3wB,GAA6B,SAC7B47D,IAEA,QAAAphC,KAAA7J,EAAoBkrC,IACpB,OAAAD,GAAAC,GA5SAC,CAAAnb,EAAAlpD,KAAAkpD,aACAlpD,KAAAkpD,YACA+a,GAAA,GAEA7J,GAAAp6D,MAGAA,KAAA+uD,SAAAqU,GAAApjE,MACAqjE,GAAArjE,MACA,IAAAspD,EAAAuZ,GAAA7iE,MAAAqpD,EAAAka,GAAAvjE,MAEAskE,EAAAN,EAAA,QACA9jE,EAAAqkE,kBAAAnjE,EAAAmjE,kBAAA,0BACAC,EAAAP,IAAAjkE,KAAA4iD,QAAAqD,YAAA/lD,EAAAsC,IAAA6mD,EAAAC,IACAkb,GAAAtkE,EAAAiC,UAAA44B,GAAA35B,EAAAe,aAAyD+hE,GAAA,GACzD,IAAAO,EAAA,YAAAH,GAAAJ,GAAA,MAAAlkE,KAAA+oB,IAAAW,MAAAg7C,gBAj6IA,SAAA/iE,GAGA,IAFA,IACAgjE,EAAAC,EADAplB,EAAA79C,EAAAonB,IAAA02B,wBAAAc,EAAAv9C,KAAAC,IAAA,EAAAu8C,EAAApzC,KAEAqD,GAAA+vC,EAAAl+B,KAAAk+B,EAAAj+B,OAAA,EAAAqiC,EAAArD,EAAA,EACAqD,EAAA5gD,KAAAyd,IAAAokD,YAAArlB,EAAAJ,QAA8CwE,GAAA,GAC9C,IAAA76B,EAAApnB,EAAA0K,KAAAg2C,iBAAA5yC,EAAAm0C,GACA,GAAA76B,GAAApnB,EAAAonB,KAAApnB,EAAAonB,IAAAjb,SAAAib,GAAA,CACA,IAAA+7C,EAAA/7C,EAAA02B,wBACA,GAAAqlB,EAAA14D,KAAAm0C,EAAA,IACAokB,EAAA57C,EACA67C,EAAAE,EAAA14D,IACA,QAGA,OAAUu4D,SAAAC,SAAAz4D,MAAAw0C,EAAAh/C,EAAAonB,MAm5IVg8C,CAAA/kE,MAEA,GAAAkkE,EAAA,CACAlkE,KAAAkvD,YAAAxG,OAMA,IAAAsc,EAAAR,IAAAn7D,EAAAszC,IAAAtzC,EAAA2zC,UAAAh9C,KAAAsC,YACAlB,EAAAe,UAAAoe,QAAArgB,EAAAiC,UAAAoe,OA8PA,SAAA0kD,EAAAC,GACA,IAAAzmD,EAAAzb,KAAAyd,IAAAwkD,EAAAn4C,QAAA8N,YAAAqqC,EAAAv2B,MAAAw2B,EAAAp4C,QAAA8N,YAAAsqC,EAAAx2B,OACA,OAAAu2B,EAAAn4C,QAAA3sB,MAAAse,IAAAymD,EAAAp4C,QAAA3sB,MAAAse,GAhQA0mD,CAAA/jE,EAAAe,UAAAjC,EAAAiC,WACA,GAAAqiE,EAAA,CAKA,IAAAY,EAAA/7D,EAAA2zC,OAAAh9C,KAAAgsD,YAAAhsD,KAAAqM,KAAAy4C,eAAAI,UAAA,MACA+e,GAAAjkE,KAAA4iD,QAAA5iB,OAAA9/B,EAAAsC,IAAA6mD,EAAAC,EAAAtpD,QACAA,KAAA4iD,QAAAiK,oBACA7sD,KAAA4iD,QAAAyD,UACArmD,KAAA4iD,QAAAyK,EAAAntD,EAAAsC,IAAA6mD,EAAAC,EAAAtpD,KAAA+oB,IAAA/oB,OAEAolE,IAAAplE,KAAAgsD,cAA8CgZ,GAAA,GAM9CA,KACAhlE,KAAAw8D,WAAAx8D,KAAAkvD,YAAAyJ,iBAAA59B,GAAA/6B,KAAAqM,KAAAy4C,iBAxgFA,SAAAnjD,GACA,IAAA4lD,EAAA5lD,EAAAihD,QAAAU,WAAA3hD,EAAAzB,MAAAiC,UAAAm2C,QACAmG,EAAA98C,EAAA0K,KAAAy4C,eACA,OAAA/G,EAAAwJ,EAAAniD,KAAAmiD,EAAAjnD,OAAAm+C,EAAAiJ,WAAAjJ,EAAAkJ,cAqgFA0d,CAAArlE,OACA6uD,GAAA7uD,KAAAglE,IAEAlW,GAAA9uD,KAAAE,EAAAiC,WACAnC,KAAAkvD,YAAAc,mBAEAhwD,KAAAkvD,YAAA/uD,QAKA,GAFAH,KAAA4jE,kBAAAxiE,GAEA,SAAAkjE,EACAtkE,KAAA+oB,IAAAy3B,UAAA,OACG,mBAAA8jB,EAAA,CACH,IAAA3kB,EAAA3/C,KAAAqM,KAAAy4C,eAAAI,UACAllD,KAAA6/C,SAAA,mCAAAj/B,GAA+D,OAAAA,EAAAoB,OAE/D9hB,EAAAiC,qBAAwCvC,EAAA,cACjC8/C,EAAA1/C,UAAA4iD,QAAA2C,YAAArlD,EAAAiC,UAAAP,MAAA69C,wBAAAE,GAEAD,EAAA1/C,UAAAqjD,YAAAnjD,EAAAiC,UAAAusC,MAAAiR,SACJ8kB,GAv7IH,SAAA1jE,GACA,IAAA4jE,EAAA5jE,EAAA4jE,OACAC,EAAA7jE,EAAA6jE,OACAz4D,EAAApL,EAAAoL,MAEAm5D,EAAAX,IAAAllB,wBAAArzC,IAAA,EACAw0C,EAAAz0C,EAAA,GAAAm5D,EAAA,EAAAA,EAAAV,GAk7IAW,CAAAd,IAIA1B,GAAAr8D,UAAA8+D,mBAAA,WAEA,IADA,IAAA7jE,EACAA,EAAA3B,KAAA2jE,YAAAx4D,OAAyCxJ,EAAA0kD,SAAoB1kD,EAAA0kD,WAG7D0c,GAAAr8D,UAAAk9D,kBAAA,SAAA6B,GACA,GAAAA,KAAAjiE,SAAAxD,KAAAE,MAAAsD,QAOA,QAAAqsB,EAAA,EAAqBA,EAAA7vB,KAAA2jE,YAAAljE,OAA+BovB,IAAA,CACpD,IAAA61C,EAAA1lE,KAAA2jE,YAAA9zC,GACA61C,EAAA1lC,QAA8B0lC,EAAA1lC,OAAAhgC,KAAAylE,OAT9B,CACAzlE,KAAAwlE,qBACA,QAAAriE,EAAA,EAAmBA,EAAAnD,KAAAE,MAAAsD,QAAA/C,OAA+B0C,IAAA,CAClD,IAAAlC,EAAAjB,KAAAE,MAAAsD,QAAAL,GACAlC,EAAA2B,KAAAjB,MAA6B3B,KAAA2jE,YAAAz5D,KAAAjJ,EAAA2B,KAAAjB,KAAA3B,UAiB7B+iE,GAAAr8D,UAAAm5C,SAAA,SAAAgb,EAAAj6C,GACA,IAAA5X,EAAAT,EAAAvI,KAAAgjE,QAAAhjE,KAAAgjE,OAAAnI,GACA,SAAAtyD,IAAAS,EAAA4X,IAAArY,MAAqD,OAAAS,EACrD,IAAAxF,EAAAxD,KAAAE,MAAAsD,QACA,GAAAA,EAAgB,QAAAL,EAAA,EAAgBA,EAAAK,EAAA/C,OAAoB0C,IAAA,CACpD,IAAA8nC,EAAAznC,EAAAL,GAAA1B,MAAAo5D,GACA,SAAA5vB,IAAAjiC,EAAA4X,IAAAqqB,MAA6D,OAAAjiC,IAM7D+5D,GAAAr8D,UAAAsoD,SAAA,WACA,OAAAhvD,KAAAqM,KAAA+3C,eAAApkD,KAAA+oB,KAKAg6C,GAAAr8D,UAAA49C,MAAA,WACAtkD,KAAAkvD,YAAAxG,OACA1oD,KAAA+uD,UAp9IA,SAAAhmC,GACA,GAAAA,EAAA48C,UAAsB,OAAA58C,EAAA48C,YACtB,GAAA7kB,EAA+B,OAAA/3B,EAAAu7B,MAAAxD,GAE/B,IAAAz/C,EAAAs/C,EAAA53B,GACAA,EAAAu7B,MAAA,MAAAxD,GACA8kB,oBAEA,OADA9kB,GAAgC8kB,eAAA,IAChC,SAEGh9D,GACHk4C,IACAA,GAAA,EACAF,EAAAv/C,EAAA,IAu8IsBwkE,CAAA7lE,KAAA+oB,KACtB8lC,GAAA7uD,MACAA,KAAAkvD,YAAA/uD,SAQA4kC,GAAA14B,KAAAqU,IAAA,WACA,IAAAilB,EAAA3lC,KAAAijE,MACA,SAAAt9B,EAAuB,QAAA8C,EAAAzoC,KAAA+oB,IAAA1N,WAAuCotB,EAAQA,IAAAptB,WACtE,MAAAotB,EAAApkC,UAAA,IAAAokC,EAAApkC,UAAAokC,EAAAiV,KAEA,OADAjV,EAAAqc,eAAiChgD,OAAAghE,eAAAr9B,GAAAqc,aAAA,WAA2D,OAAAppC,SAAAopC,iBAC5F9kD,KAAAijE,MAAAx6B,EAGA,OAAA9C,GAAAjqB,UAWAqnD,GAAAr8D,UAAAm7C,YAAA,SAAAb,GACA,OAAAa,EAAA7hD,KAAAghD,IAOA+hB,GAAAr8D,UAAA28C,YAAA,SAAAjhD,GACA,OAAAihD,EAAArjD,KAAAoC,IAQA2gE,GAAAr8D,UAAAq/D,SAAA,SAAA3jE,GACA,OAAApC,KAAA4iD,QAAAU,WAAAlhD,IAYA2gE,GAAAr8D,UAAAogD,QAAA,SAAA1kD,GACA,IAAAq4C,EAAAz6C,KAAA4iD,QAAAmE,OAAA3kD,GACA,OAAAq4C,IAAAqM,QAAA,MAYAic,GAAAr8D,UAAAs/D,SAAA,SAAA5gE,EAAA9E,EAAAg5B,QACA,IAAAA,OAAA,GAEA,IAAAl3B,EAAApC,KAAA4iD,QAAAI,WAAA59C,EAAA9E,EAAAg5B,GACA,SAAAl3B,EAAoB,UAAAiwB,WAAA,sCACpB,OAAAjwB,GAUA2gE,GAAAr8D,UAAA6pB,eAAA,SAAA6I,EAAAl5B,GACA,OAAAqwB,EAAAvwB,KAAAE,GAAAF,KAAAE,MAAAk5B,IAMA2pC,GAAAr8D,UAAA2/C,QAAA,WACArmD,KAAA4iD,WAnmDA,SAAAjhD,GAEA,QAAAgB,KADAhB,EAAAutD,YAAAxG,OACA/mD,EAAA24D,cACK34D,EAAAonB,IAAA8mC,oBAAAltD,EAAAhB,EAAA24D,cAAA33D,IACLs2D,aAAAt3D,EAAA87D,kBACAxE,aAAAt3D,EAAAi6D,6BA+lDAqK,CAAAjmE,MACAA,KAAAwlE,qBACAxlE,KAAAmjE,SACAnjE,KAAA4iD,QAAA5iB,OAAAhgC,KAAAE,MAAAsC,OAAAqgE,GAAA7iE,YACAA,KAAA+oB,IAAAlN,YAAA,IACG7b,KAAA+oB,IAAA1N,YACHrb,KAAA+oB,IAAA1N,WAAAqxC,YAAA1sD,KAAA+oB,KAEA/oB,KAAA4iD,QAAAyD,UACArmD,KAAA4iD,QAAA,OAIAmgB,GAAAr8D,UAAAw/D,cAAA,SAAA/7D,GACA,OAllDA,SAAAxI,EAAAwI,GACAowD,GAAA54D,EAAAwI,KAAA8vD,GAAA9vD,EAAAxH,QACAhB,EAAAotD,UAAA5kD,EAAAxH,QAAAu3D,IACKD,GAAA9vD,EAAAxH,MAAAhB,EAAAwI,GA+kDL+7D,CAAAlmE,KAAAmK,IAWA44D,GAAAr8D,UAAArD,SAAA,SAAA1C,GACA,IAAAwlE,EAAAnmE,KAAAgjE,OAAAmD,oBACAA,EAA4BA,EAAAv/D,KAAA5G,KAAAW,GACpBX,KAAAqkD,YAAArkD,KAAAE,MAAAiB,MAAAR,KAGRmE,OAAAuc,iBAAA0hD,GAAAr8D,UAAAq+B,uCC3yJA3lC,EAAAu4C,EAAAr4C,GAAAF,EAAAC,EAAAC,EAAA,kCAAA8mE,IAAAhnE,EAAAC,EAAAC,EAAA,6BAAA+mE,IAAAjnE,EAAAC,EAAAC,EAAA,8BAAAgnE,KAAAlnE,EAAAC,EAAAC,EAAA,gCAAAinE,IAAAnnE,EAAAC,EAAAC,EAAA,kCAAAknE,IAAApnE,EAAAC,EAAAC,EAAA,kCAAAmnE,IAAArnE,EAAAC,EAAAC,EAAA,+BAAAonE,IAAAtnE,EAAAC,EAAAC,EAAA,8BAAAqnE,KAAAvnE,EAAAC,EAAAC,EAAA,mCAAAsnE,KAAAxnE,EAAAC,EAAAC,EAAA,oCAAAunE,KAAAznE,EAAAC,EAAAC,EAAA,2BAAAwnE,KAAA1nE,EAAAC,EAAAC,EAAA,gCAAAynE,KAAA3nE,EAAAC,EAAAC,EAAA,iCAAA0nE,KAAA5nE,EAAAC,EAAAC,EAAA,+BAAA2nE,IAAA7nE,EAAAC,EAAAC,EAAA,6BAAA4nE,IAAA9nE,EAAAC,EAAAC,EAAA,mCAAA6nE,IAAA/nE,EAAAC,EAAAC,EAAA,mCAAA8nE,KAAAhoE,EAAAC,EAAAC,EAAA,4CAAA+nE,KAAAjoE,EAAAC,EAAAC,EAAA,iCAAAgoE,KAAAloE,EAAAC,EAAAC,EAAA,8BAAAioE,KAAAnoE,EAAAC,EAAAC,EAAA,gCAAAkoE,KAAApoE,EAAAC,EAAAC,EAAA,6BAAAmoE,IAAAroE,EAAAC,EAAAC,EAAA,8BAAAooE,KAAAtoE,EAAAC,EAAAC,EAAA,iCAAAqoE,KAAAvoE,EAAAC,EAAAC,EAAA,iCAAAsoE,KAAAxoE,EAAAC,EAAAC,EAAA,gCAAAuoE,IAAAzoE,EAAAC,EAAAC,EAAA,gCAAAwoE,IAAA1oE,EAAAC,EAAAC,EAAA,8BAAAyoE,IAAA3oE,EAAAC,EAAAC,EAAA,+BAAA0oE,KAAA5oE,EAAAC,EAAAC,EAAA,oCAAA2oE,IAAA7oE,EAAAC,EAAAC,EAAA,6BAAA4oE,IAAA9oE,EAAAC,EAAAC,EAAA,iCAAA6oE,IAAA/oE,EAAAC,EAAAC,EAAA,kCAAA8oE,IAAAhpE,EAAAC,EAAAC,EAAA,iCAAA+oE,KAAAjpE,EAAAC,EAAAC,EAAA,8BAAAgpE,KAAAlpE,EAAAC,EAAAC,EAAA,gCAAAipE,KAAAnpE,EAAAC,EAAAC,EAAA,iCAAAkpE,KAAAppE,EAAAC,EAAAC,EAAA,kCAAAmpE,IAAArpE,EAAAC,EAAAC,EAAA,4BAAAopE,IAAAtpE,EAAAC,EAAAC,EAAA,gCAAAqpE,KAAAvpE,EAAAC,EAAAC,EAAA,8BAAAspE,KAAAxpE,EAAAC,EAAAC,EAAA,sCAAAupE,KAAAzpE,EAAAC,EAAAC,EAAA,iCAAAwpE,KAAA1pE,EAAAC,EAAAC,EAAA,oCAAAgK,IAAAlK,EAAAC,EAAAC,EAAA,mCAAAypE,IAAA3pE,EAAAC,EAAAC,EAAA,+BAAA0pE,IAAA5pE,EAAAC,EAAAC,EAAA,iCAAA2pE,KAAA7pE,EAAAC,EAAAC,EAAA,qCAAA4pE,KAAA9pE,EAAAC,EAAAC,EAAA,uCAAA6pE,KAAA/pE,EAAAC,EAAAC,EAAA,oCAAA8pE,KAAAhqE,EAAAC,EAAAC,EAAA,0CAAA+pE,KAAA,IAiBAC,EAAAC,EAjBA3pE,EAAAR,EAAA,QAAAysB,EAAAzsB,EAAA,QAAAoqE,EAAApqE,EAAA,QAAAqqE,EAAArqE,EAAA,QAAAsqE,EAAAtqE,EAAA,QAoBA,uBAAAuqE,QAAA,CACA,IAAAC,EAAA,IAAAD,QACAL,EAAA,SAAAhgE,GAAkC,OAAAsgE,EAAAlpD,IAAApX,IAClCigE,EAAA,SAAAjgE,EAAAN,GAEA,OADA4gE,EAAAhnC,IAAAt5B,EAAAN,GACAA,OAEC,CACD,IAAA6gE,KAAAC,EAAA,EACAR,EAAA,SAAAhgE,GACA,QAAAnG,EAAA,EAAmBA,EAAA0mE,EAAAppE,OAAoB0C,GAAA,EAChC,GAAA0mE,EAAA1mE,IAAAmG,EAAyB,OAAAugE,EAAA1mE,EAAA,IAEhComE,EAAA,SAAAjgE,EAAAN,GAGA,OARA,IAMA8gE,IAAgCA,EAAA,GAChCD,EAAAC,KAAAxgE,EACAugE,EAAAC,KAAA9gE,GAIA,IAAA+gE,EAAA,SAAAzoD,EAAAlV,EAAAmV,EAAA69B,GACAp/C,KAAAshB,OAAmBthB,KAAAoM,MAAgBpM,KAAAuhB,QAAoBvhB,KAAAo/C,UAOvDinB,EAAA,SAAApiB,EAAAN,EAAAj5C,EAAAs/D,GAEAhqE,KAAAikD,QAEAjkD,KAAA2jD,SAGA3jD,KAAA0K,MAGA1K,KAAAgqE,YA2MA,SAAAC,EAAAzlE,GACA,GAAAA,EAAA0lE,SAAuB,OAAA1lE,EAAA0lE,SAAA1pE,QAEvB,IADA,IAAA6I,KACAlG,EAAA,EAAiBA,EAAAqB,EAAA2lE,QAAmBhnE,IAAOkG,EAAAa,KAAA,GAC3C,OAAAb,EAKA,SAAA+gE,EAAArhD,EAAAshD,GACA,IAAAC,EAAAvhD,EAAAE,aAAA,iBACAshD,EAAAD,GAAA,eAAA9zD,KAAA8zD,KAAAl6D,MAAA,KAAA1F,IAAA,SAAAiH,GAAoG,OAAAF,OAAAE,KAAoB,KACxHw4D,EAAA14D,OAAAsX,EAAAE,aAAA,eACA5f,GACA8gE,UACAK,QAAA/4D,OAAAsX,EAAAE,aAAA,eACAihD,SAAAK,KAAA9pE,QAAA0pE,EAAAI,EAAA,MAEA,QAAAhiE,KAAA8hE,EAAA,CACA,IAAAI,EAAAJ,EAAA9hE,GAAAkhB,WACAzgB,EAAAyhE,KAAA1hD,GACA,MAAA/f,IAAwBK,EAAAd,GAAAS,GAExB,OAAAK,EAGA,SAAAqhE,EAAAtlE,EAAAilE,GACA,IAAA7lE,KAKA,QAAA+D,KAJA,GAAAnD,EAAAZ,MAAA2lE,UAAgC3lE,EAAA2lE,QAAA/kE,EAAAZ,MAAA2lE,SAChC,GAAA/kE,EAAAZ,MAAAgmE,UAAgChmE,EAAAgmE,QAAAplE,EAAAZ,MAAAgmE,SAChCplE,EAAAZ,MAAA0lE,WACK1lE,EAAA,iBAAAY,EAAAZ,MAAA0lE,SAAAhlE,KAAA,MACLmlE,EAAA,CACA,IAAAM,EAAAN,EAAA9hE,GAAAqiE,WACAD,GAAiBA,EAAAvlE,EAAAZ,MAAA+D,GAAA/D,GAEjB,OAAAA,EAiCA,SAAAwkE,EAAArhE,GACA,IAAA0iE,EAAA1iE,EAAA4hB,mBACAshD,GACAV,SAAc9hD,QAAA,GACdmiD,SAAcniD,QAAA,GACd6hD,UAAe7hD,QAAA,OAEf,QAAA9f,KAAA8hE,EACKQ,EAAAtiE,IAAoB8f,QAAAgiD,EAAA9hE,GAAA8f,SAEzB,OACApJ,OACAiI,QAAA,aACA4jD,UAAA,QACAx+C,WAAA,EACAnF,MAAAxf,EAAA0hB,WACA/B,WAAkB/d,IAAA,UAClBge,MAAA,WAA+B,8BAE/BwjD,WACA7jD,QAAA,+BACA4jD,UAAA,MACAxjD,WAAkB/d,IAAA,OAClBge,MAAA,WAA+B,iBAE/ByjD,YACA9jD,QAAAvf,EAAA2hB,YACA9kB,MAAAqmE,EACAC,UAAA,OACAx+C,WAAA,EACAhF,WAAkB/d,IAAA,KAAAjF,SAAA,SAAAykB,GAAqC,OAAAqhD,EAAArhD,EAAAshD,MACvD9iD,MAAA,SAAAniB,GAAmC,YAAAslE,EAAAtlE,EAAAilE,GAAA,KAEnCY,cACA/jD,QAAAvf,EAAA2hB,YACA9kB,MAAAqmE,EACAC,UAAA,cACAx+C,WAAA,EACAhF,WAAkB/d,IAAA,KAAAjF,SAAA,SAAAykB,GAAqC,OAAAqhD,EAAArhD,EAAAshD,MACvD9iD,MAAA,SAAAniB,GAAmC,YAAAslE,EAAAtlE,EAAAilE,GAAA,MAKnC,SAAAtB,EAAA5kE,GACA,IAAAkF,EAAAlF,EAAAwhC,OAAAojC,eACA,IAAA1/D,EAEA,QAAAgE,KADAhE,EAAAlF,EAAAwhC,OAAAojC,kBACA5kE,EAAAsjB,MAAA,CACA,IAAA9kB,EAAAwB,EAAAsjB,MAAApa,GAAA69D,EAAAvoE,EAAAC,KAAAkoE,UACAI,IAAiB7hE,EAAA6hE,GAAAvoE,GAGjB,OAAA0G,EAhUAg9D,EAAA3/D,UAAA+gE,SAAA,SAAArlE,GACA,QAAAe,EAAA,EAAiBA,EAAAnD,KAAA0K,IAAAjK,OAAqB0C,IAAA,CACtC,IAAA++B,EAAAliC,KAAA0K,IAAAvH,GACA,GAAA++B,GAAA9/B,EAAA,CAGA,IAFA,IAAAkf,EAAAne,EAAAnD,KAAAikD,MAAA73C,EAAAjJ,EAAAnD,KAAAikD,MAAA,EACA1iC,EAAAD,EAAA,EAAA89B,EAAAhzC,EAAA,EACAxI,EAAA,EAAmB2d,EAAAvhB,KAAAikD,OAAAjkD,KAAA0K,IAAAvH,EAAAS,IAAAs+B,EAAiDt+B,IAAO2d,IAC3E,QAAA8lC,EAAA,EAAqBjI,EAAAp/C,KAAA2jD,QAAA3jD,KAAA0K,IAAAvH,EAAAnD,KAAAikD,MAAAoD,IAAAnlB,EAAoEmlB,IAASjI,IAClG,WAAA2qB,EAAAzoD,EAAAlV,EAAAmV,EAAA69B,IAEA,UAAA/sB,WAAA,uBAAAjwB,EAAA,WAKAikE,EAAA3/D,UAAAwgE,SAAA,SAAA9kE,GACA,QAAAe,EAAA,EAAiBA,EAAAnD,KAAA0K,IAAAjK,OAAqB0C,IACjC,GAAAnD,KAAA0K,IAAAvH,IAAAf,EAA0B,OAAAe,EAAAnD,KAAAikD,MAC/B,UAAA5xB,WAAA,uBAAAjwB,EAAA,WAMAikE,EAAA3/D,UAAAwhE,SAAA,SAAA9lE,EAAA+oE,EAAA/xC,GACA,IAAAr4B,EAAAf,KAAAynE,SAAArlE,GACAkf,EAAAvgB,EAAAugB,KACAC,EAAAxgB,EAAAwgB,MACAnV,EAAArL,EAAAqL,IACAgzC,EAAAr+C,EAAAq+C,OACA,eAAA+rB,GACA/xC,EAAA,KAAA9X,EAAAC,GAAAvhB,KAAAikD,OAAoD,KACpDjkD,KAAA0K,IAAA0B,EAAApM,KAAAikD,OAAA7qB,EAAA,EAAA9X,EAAA,EAAAC,KAEA6X,EAAA,KAAAhtB,EAAAgzC,GAAAp/C,KAAA2jD,QAAqD,KACrD3jD,KAAA0K,IAAA4W,EAAAthB,KAAAikD,OAAA7qB,EAAA,EAAAhtB,EAAA,EAAAgzC,KAMAinB,EAAA3/D,UAAA0kE,YAAA,SAAAnyC,EAAAC,GACA,IAAAn4B,EAAAf,KAAAynE,SAAAxuC,GACAoyC,EAAAtqE,EAAAugB,KACAgqD,EAAAvqE,EAAAwgB,MACAgqD,EAAAxqE,EAAAqL,IACAo/D,EAAAzqE,EAAAq+C,OACAzvB,EAAA3vB,KAAAynE,SAAAvuC,GACAuyC,EAAA97C,EAAArO,KACAoqD,EAAA/7C,EAAApO,MACAoqD,EAAAh8C,EAAAvjB,IACAw/D,EAAAj8C,EAAAyvB,OACA,WAAA2qB,EAAA/mE,KAAAyd,IAAA4qD,EAAAI,GAAAzoE,KAAAyd,IAAA8qD,EAAAI,GACA3oE,KAAAC,IAAAqoE,EAAAI,GAAA1oE,KAAAC,IAAAuoE,EAAAI,KAMAvF,EAAA3/D,UAAAmlE,YAAA,SAAArsB,GAEA,IADA,IAAAn2C,KAAAu2B,KACAlhB,EAAA8gC,EAAApzC,IAA0BsS,EAAA8gC,EAAAJ,OAAmB1gC,IAC7C,QAAAy4C,EAAA3X,EAAAl+B,KAA6B61C,EAAA3X,EAAAj+B,MAAkB41C,IAAA,CAC/C,IAAA7xD,EAAAoZ,EAAA1e,KAAAikD,MAAAkT,EAAA/0D,EAAApC,KAAA0K,IAAApF,GACAs6B,EAAAx9B,KACAw9B,EAAAx9B,IAAA,EACA+0D,GAAA3X,EAAAl+B,MAAA61C,GAAAn3D,KAAA0K,IAAApF,EAAA,IAAAlD,GACAsc,GAAA8gC,EAAApzC,KAAAsS,GAAA1e,KAAA0K,IAAApF,EAAAtF,KAAAikD,QAAA7hD,GACSiH,EAAAa,KAAA9H,IAGT,OAAAiH,GAMAg9D,EAAA3/D,UAAAolE,WAAA,SAAAptD,EAAAy4C,EAAAl4C,GACA,QAAA9b,EAAA,EAAA4oE,EAAA,GAAgC5oE,IAAA,CAChC,IAAA6oE,EAAAD,EAAA9sD,EAAAnV,MAAA3G,GAAA+qB,SACA,GAAA/qB,GAAAub,EAAA,CAGA,IAFA,IAAApZ,EAAA6xD,EAAAz4C,EAAA1e,KAAAikD,MAAAgoB,GAAAvtD,EAAA,GAAA1e,KAAAikD,MAEA3+C,EAAA2mE,GAAAjsE,KAAA0K,IAAApF,GAAAymE,GAAiEzmE,IACjE,OAAAA,GAAA2mE,EAAAD,EAAA,EAAAhsE,KAAA0K,IAAApF,GAEAymE,EAAAC,IAMA3F,EAAA3lD,IAAA,SAAAzB,GACA,OAAAqqD,EAAArqD,IAAAsqD,EAAAtqD,EAIA,SAAAA,GACA,YAAAA,EAAAtc,KAAAC,KAAAkoE,UAA6C,UAAAz4C,WAAA,qBAAApT,EAAAtc,KAAA0K,MAG7C,IAFA,IAAA42C,EA2DA,SAAAhlC,GAEA,IADA,IAAAglC,GAAA,EAAAioB,GAAA,EACAxtD,EAAA,EAAmBA,EAAAO,EAAAkK,WAAwBzK,IAAA,CAC3C,IAAAytD,EAAAltD,EAAAnV,MAAA4U,GAAA0tD,EAAA,EACA,GAAAF,EAAqB,QAAAtoE,EAAA,EAAgBA,EAAA8a,EAAS9a,IAE9C,IADA,IAAAyoE,EAAAptD,EAAAnV,MAAAlG,GACAT,EAAA,EAAqBA,EAAAkpE,EAAAljD,WAAwBhmB,IAAA,CAC7C,IAAAwb,EAAA0tD,EAAAviE,MAAA3G,GACAS,EAAA+a,EAAAna,MAAAgmE,QAAA9rD,IAA2C0tD,GAAAztD,EAAAna,MAAA2lE,SAG3C,QAAAt6C,EAAA,EAAqBA,EAAAs8C,EAAAhjD,WAA0B0G,IAAA,CAC/C,IAAAy8C,EAAAH,EAAAriE,MAAA+lB,GACAu8C,GAAAE,EAAA9nE,MAAA2lE,QACAmC,EAAA9nE,MAAAgmE,QAAA,IAAqC0B,GAAA,IAErC,GAAAjoB,EACOA,EAAAmoB,EACPnoB,GAAAmoB,IACOnoB,EAAAjhD,KAAAC,IAAAghD,EAAAmoB,IAEP,OAAAnoB,EAhFAsoB,CAAAttD,GAAA0kC,EAAA1kC,EAAAkK,WACAze,KAAA8hE,EAAA,EAAAxC,EAAA,KAAAyC,KACAtpE,EAAA,EAAA8D,EAAAg9C,EAAAN,EAAqCxgD,EAAA8D,EAAO9D,IAAOuH,EAAAvH,GAAA,EAEnD,QAAAub,EAAA,EAAAtc,EAAA,EAA4Bsc,EAAAilC,EAAcjlC,IAAA,CAC1C,IAAAytD,EAAAltD,EAAAnV,MAAA4U,GACAtc,IACA,QAAAytB,EAAA,GAAsBA,IAAA,CACtB,KAAA28C,EAAA9hE,EAAAjK,QAAA,GAAAiK,EAAA8hE,IAAuDA,IACvD,GAAA38C,GAAAs8C,EAAAhjD,WAAsC,MAMtC,IALA,IAAAujD,EAAAP,EAAAriE,MAAA+lB,GACA9uB,EAAA2rE,EAAAloE,MACA2lE,EAAAppE,EAAAopE,QACAK,EAAAzpE,EAAAypE,QACAN,EAAAnpE,EAAAmpE,SACAyC,EAAA,EAAqBA,EAAAnC,EAAamC,IAAA,CAClC,GAAAA,EAAAjuD,GAAAilC,EAAA,EACAqmB,WAAA9/D,MAA8CvH,KAAA,mBAAAP,MAAAghB,EAAAonD,EAAAmC,IAC9C,MAGA,IADA,IAAAxsE,EAAAqsE,EAAAG,EAAA1oB,EACA2oB,EAAA,EAAuBA,EAAAzC,EAAayC,IAAA,CACpC,GAAAliE,EAAAvK,EAAAysE,GACaliE,EAAAvK,EAAAysE,GAAAxqE,GAEA4nE,WAAA9/D,MAAqCvH,KAAA,YAAA+b,MAAAtc,MAAAghB,EAAA+mD,EAAAyC,IAClD,IAAAC,EAAA3C,KAAA0C,GACA,GAAAC,EAAA,CACA,IAAAC,GAAA3sE,EAAAysE,GAAA3oB,EAAA,EAAA7iD,EAAAqrE,EAAAK,GACA,MAAA1rE,MAAAyrE,GAAA,GAAAJ,EAAAK,EAAA,IACAL,EAAAK,GAAAD,EACAJ,EAAAK,EAAA,MACa1rE,GAAAyrE,GACbJ,EAAAK,EAAA,OAKAN,GAAArC,EACA/nE,GAAAsqE,EAAAx+C,SAGA,IADA,IAAA6+C,GAAAruD,EAAA,GAAAulC,EAAA+oB,EAAA,EACAR,EAAAO,GAAkC,GAAAriE,EAAA8hE,MAA0BQ,IAC5DA,IAAkBhD,WAAA9/D,MAAqCvH,KAAA,UAAA+b,MAAA0E,EAAA4pD,IACvD5qE,IAQA,IALA,IAAA6qE,EAAA,IAAA5G,EAAApiB,EAAAN,EAAAj5C,EAAAs/D,GAAAkD,GAAA,EAKA3uC,EAAA,GAAmB2uC,GAAA3uC,EAAAkuC,EAAAhsE,OAAsC89B,GAAA,EACpD,MAAAkuC,EAAAluC,IAAAkuC,EAAAluC,EAAA,GAAAolB,IAA6DupB,GAAA,GAClEA,GA6BA,SAAAxiE,EAAA+hE,EAAAxtD,GACAvU,EAAAs/D,WAAsBt/D,EAAAs/D,aACtB,QAAA7mE,EAAA,EAAAy8B,KAA4Bz8B,EAAAuH,MAAAjK,OAAoB0C,IAAA,CAChD,IAAAf,EAAAsI,MAAAvH,GACA,IAAAy8B,EAAAx9B,GAAA,CACAw9B,EAAAx9B,IAAA,EAEA,IADA,IAAAgD,EAAA6Z,EAAAqb,OAAAl4B,GAAA23C,EAAA,KACAn2C,EAAA,EAAmBA,EAAAwB,EAAAZ,MAAA2lE,QAAwBvmE,IAAA,CAC3C,IAAAuzD,GAAAh0D,EAAAS,GAAA8G,EAAAu5C,MAAAkpB,EAAAV,EAAA,EAAAtV,GACA,MAAAgW,GAAA/nE,EAAAZ,MAAA0lE,UAAA9kE,EAAAZ,MAAA0lE,SAAAtmE,IAAAupE,KACSpzB,MAAAkwB,EAAA7kE,EAAAZ,SAAAZ,GAAAupE,GAETpzB,GAAkBrvC,EAAAs/D,SAAAnwD,SAAuBlX,KAAA,oBAAAP,MAAA8nE,SAAAnwB,MAzCvBqzB,CAAAH,EAAAR,EAAAxtD,GAElB,OAAAguD,EA9DAI,CAAApuD,KAwOA,IAAA3V,EAAA,IAAc1J,EAAA,UAAS,kBAEvB,SAAAqnE,EAAA56C,GACA,QAAAhtB,EAAAgtB,EAAA5N,MAAA,EAA8Bpf,EAAA,EAAOA,IAChC,UAAAgtB,EAAAjnB,KAAA/F,GAAAsD,KAAAC,KAAAkoE,UAAiD,OAAAz+C,EAAAjnB,KAAA,GAAA3C,QAAA4pB,EAAArnB,OAAA3F,EAAA,IACtD,YAWA,SAAA0oE,EAAA7nE,GAEA,IADA,IAAA2sB,EAAA3sB,EAAAiC,UAAA0qB,MACAxtB,EAAAwtB,EAAApO,MAA2Bpf,EAAA,EAAOA,IAAO,UAAAwtB,EAAAznB,KAAA/F,GAAAsD,KAAAC,KAAAkoE,UAAkD,SAC3F,SAGA,SAAArC,EAAAvoE,GACA,IAAAo5C,EAAAp5C,EAAAiC,UACA,OAAAm3C,EAAAg0B,YACAh0B,EAAAg0B,YAAAlrE,IAAAk3C,EAAAi0B,UAAAnrE,IAAAk3C,EAAAg0B,YAAAh0B,EAAAi0B,UACGj0B,EAAAl0C,MAAA,QAAAk0C,EAAAl0C,KAAAzC,KAAAC,KAAAkoE,UACHxxB,EAAAxsB,QAEAm6C,EAAA3tB,EAAAzsB,QAGA,SAAAR,GACA,QAAA5Z,EAAA4Z,EAAA2B,UAAA5rB,EAAAiqB,EAAAjqB,IAAkDqQ,EAAOA,IAAA1I,WAAA3H,IAAA,CACzD,IAAA8oE,EAAAz4D,EAAA9P,KAAAC,KAAAkoE,UACA,WAAAI,GAAA,eAAAA,EAAkD,OAAA7+C,EAAA7pB,IAAAC,QAAAL,GAElD,QAAA4C,EAAAqnB,EAAApnB,WAAA+8C,EAAA31B,EAAAjqB,IAAsD4C,EAAQA,IAAAknB,UAAA81B,IAAA,CAC9D,IAAAwrB,EAAAxoE,EAAArC,KAAAC,KAAAkoE,UACA,WAAA0C,GAAA,eAAAA,EAAsD,OAAAnhD,EAAA7pB,IAAAC,QAAAu/C,EAAAh9C,EAAAkpB,WAVtDu/C,CAAAn0B,EAAAzsB,OAcA,SAAAs7C,EAAA97C,GACA,aAAAA,EAAA3pB,OAAAC,KAAAC,KAAAkoE,WAAAz+C,EAAA2B,UAGA,SAAAi6C,EAAA57C,GACA,OAAAA,EAAAjnB,KAAA,GAAA3C,QAAA4pB,EAAAjqB,IAAAiqB,EAAA2B,UAAAE,UAGA,SAAA45C,EAAA4F,EAAAC,GACA,OAAAD,EAAAjvD,OAAAkvD,EAAAlvD,OAAAivD,EAAAtrE,KAAAurE,EAAAxtE,OAAA,IAAAutE,EAAAtrE,KAAAurE,EAAAvtE,KAAA,GAGA,SAAAqnE,EAAAp7C,GACA,OAAAg6C,EAAA3lD,IAAA2L,EAAAjnB,MAAA,IAAAqiE,SAAAp7C,EAAAjqB,IAAAiqB,EAAAlsB,OAAA,IAGA,SAAA+mE,EAAA76C,GACA,OAAAg6C,EAAA3lD,IAAA2L,EAAAjnB,MAAA,IAAA8hE,SAAA76C,EAAAjqB,IAAAiqB,EAAAlsB,OAAA,IAGA,SAAA+nE,EAAA77C,EAAA8+C,EAAA/xC,GACA,IAAAj5B,EAAAksB,EAAAlsB,OAAA,GACAytE,EADAvH,EAAA3lD,IAAA2L,EAAAjnB,MAAA,IACA8iE,SAAA77C,EAAAjqB,IAAAjC,EAAAgrE,EAAA/xC,GACA,aAAAw0C,EAAA,KAAAvhD,EAAAjnB,KAAA,GAAA3C,QAAAtC,EAAAytE,GAGA,SAAAlF,EAAAlkE,EAAA6I,EAAArE,GACA,IAAAK,KACA,QAAAd,KAAA/D,EAA2B6E,EAAAd,GAAA/D,EAAA+D,GAE3B,OADAc,EAAAgE,GAAArE,EACAK,EAGA,SAAA++D,EAAA5jE,EAAApC,EAAAghB,QACA,IAAAA,MAAA,GAEA,IAAA/Z,EAAAq/D,EAAAlkE,EAAA,UAAAA,EAAA2lE,QAAA/mD,GAMA,OALA/Z,EAAA6gE,WACA7gE,EAAA6gE,SAAA7gE,EAAA6gE,SAAA1pE,QACA6I,EAAA6gE,SAAAh/D,OAAA9I,EAAAghB,GACA/Z,EAAA6gE,SAAAt3B,KAAA,SAAAg6B,GAA4C,OAAAA,EAAA,MAAoBvjE,EAAA6gE,SAAA,OAEhE7gE,EAGA,SAAAq9D,EAAAliE,EAAApC,EAAAghB,QACA,IAAAA,MAAA,GAEA,IAAA/Z,EAAAq/D,EAAAlkE,EAAA,UAAAA,EAAA2lE,QAAA/mD,GACA,GAAA/Z,EAAA6gE,SAAA,CACA7gE,EAAA6gE,SAAA7gE,EAAA6gE,SAAA1pE,QACA,QAAA2C,EAAA,EAAmBA,EAAAigB,EAAOjgB,IAAOkG,EAAA6gE,SAAAh/D,OAAA9I,EAAA,KAEjC,OAAAiH,EAGA,SAAA89D,EAAAz8D,EAAAuU,EAAAk4C,GAEA,IADA,IAAA0W,EAAA9E,EAAA9pD,EAAAtc,KAAAwB,QAAA2pE,YACApvD,EAAA,EAAmBA,EAAAhU,EAAAi5C,OAAkBjlC,IAChC,GAAAO,EAAAqb,OAAA5vB,MAAAysD,EAAAz4C,EAAAhU,EAAAu5C,QAAAthD,MAAAkrE,EACE,SACP,SAUA,IAAAzH,EAAA,SAAAnuB,GACA,SAAAmuB,EAAAkH,EAAAC,QACA,IAAAA,MAAAD,GAEA,IAAAruD,EAAAquD,EAAAloE,MAAA,GAAAsF,EAAA27D,EAAA3lD,IAAAzB,GAAA9e,EAAAmtE,EAAAntE,OAAA,GACAq/C,EAAA90C,EAAA0gE,YAAAkC,EAAAlrE,IAAAjC,EAAAotE,EAAAnrE,IAAAjC,GACAqC,EAAA8qE,EAAAloE,KAAA,GACA4Z,EAAAtU,EAAAmhE,YAAArsB,GAAA5kC,OAAA,SAAAwmB,GAA2D,OAAAA,GAAAmsC,EAAAnrE,IAAAjC,IAG3D6e,EAAAnF,QAAA0zD,EAAAnrE,IAAAjC,GACA,IAAAilB,EAAApG,EAAAtU,IAAA,SAAAtI,GACA,IAAAuc,EAAAM,EAAAqb,OAAAl4B,GAAAR,EAAAQ,EAAAjC,EAAA,EACA,WAAiBP,EAAA,eAAc4C,EAAAC,QAAAb,GAAAY,EAAAC,QAAAb,EAAA+c,EAAAuI,QAAAqG,SAE/B0qB,EAAArxC,KAAA5G,KAAAolB,EAAA,GAAA7iB,MAAA6iB,EAAA,GAAAoH,IAAApH,GAIAplB,KAAAstE,cAIAttE,KAAAutE,YAiLA,OA9KAt1B,IAAAmuB,EAAAz8D,UAAAsuC,GACAmuB,EAAA1/D,UAAA5B,OAAA4Q,OAAAuiC,KAAAvxC,WACA0/D,EAAA1/D,UAAAiG,YAAAy5D,EAEAA,EAAA1/D,UAAAgE,IAAA,SAAAlI,EAAAkgB,GACA,IAAA4qD,EAAA9qE,EAAAC,QAAAigB,EAAAhY,IAAA1K,KAAAstE,YAAAlrE,MACAmrE,EAAA/qE,EAAAC,QAAAigB,EAAAhY,IAAA1K,KAAAutE,UAAAnrE,MACA,GAAA+lE,EAAAmF,IAAAnF,EAAAoF,IAAAzF,EAAAwF,EAAAC,GAAA,CACA,IAAAQ,EAAA/tE,KAAAstE,YAAAloE,MAAA,IAAAkoE,EAAAloE,MAAA,GACA,OAAA2oE,GAAA/tE,KAAAguE,iBACS5H,EAAA6H,aAAAX,EAAAC,GACTQ,GAAA/tE,KAAAkuE,iBACS9H,EAAA+H,aAAAb,EAAAC,GAEA,IAAAnH,EAAAkH,EAAAC,GAET,OAAW3tE,EAAA,cAAam5C,QAAAu0B,EAAAC,IAMxBnH,EAAA1/D,UAAAwgB,QAAA,WAIA,IAHA,IAAAjI,EAAAjf,KAAAstE,YAAAloE,MAAA,GAAAsF,EAAA27D,EAAA3lD,IAAAzB,GAAA9e,EAAAH,KAAAstE,YAAAntE,OAAA,GACAq/C,EAAA90C,EAAA0gE,YAAAprE,KAAAstE,YAAAlrE,IAAAjC,EAAAH,KAAAutE,UAAAnrE,IAAAjC,GACAy/B,KAAiBwuC,KACjB1vD,EAAA8gC,EAAApzC,IAA4BsS,EAAA8gC,EAAAJ,OAAmB1gC,IAAA,CAE/C,IADA,IAAA2vD,KACA/oE,EAAAoZ,EAAAhU,EAAAu5C,MAAAzE,EAAAl+B,KAAA61C,EAAA3X,EAAAl+B,KAAoE61C,EAAA3X,EAAAj+B,MAAkB41C,IAAA7xD,IAAA,CACtF,IAAAlD,EAAAsI,MAAApF,GACA,IAAAs6B,EAAAx9B,GAAA,CACAw9B,EAAAx9B,IAAA,EACA,IAAAksE,EAAA5jE,EAAA+8D,SAAArlE,GAAAuc,EAAAM,EAAAqb,OAAAl4B,GACAmsE,EAAA/uB,EAAAl+B,KAAAgtD,EAAAhtD,KAAAktD,EAAAF,EAAA/sD,MAAAi+B,EAAAj+B,MACA,GAAAgtD,EAAA,GAAAC,EAAA,GACA,IAAAhqE,EAAAma,EAAAna,MACA+pE,EAAA,IAAgC/pE,EAAA4jE,EAAA5jE,EAAA,EAAA+pE,IAChCC,EAAA,IAAiChqE,EAAA4jE,EAAA5jE,IAAA2lE,QAAAqE,MACW7vD,EAA5C2vD,EAAAhtD,KAAAk+B,EAAAl+B,KAA4C3C,EAAAhc,KAAAuqB,cAAA1oB,GAC1Bma,EAAAhc,KAAA+S,OAAAlR,EAAAma,EAAAuI,SAElB,GAAAonD,EAAAliE,IAAAozC,EAAApzC,KAAAkiE,EAAAlvB,OAAAI,EAAAJ,OAAA,CACA,IAAAqvB,EAAA/F,EAAA/pD,EAAAna,MAAA,UAAAxB,KAAAyd,IAAA6tD,EAAAlvB,OAAAI,EAAAJ,QAAAp8C,KAAAC,IAAAqrE,EAAAliE,IAAAozC,EAAApzC,MAC0CuS,EAA1C2vD,EAAAliE,IAAAozC,EAAApzC,IAA0CuS,EAAAhc,KAAAuqB,cAAAuhD,GACxB9vD,EAAAhc,KAAA+S,OAAA+4D,EAAA9vD,EAAAuI,SAElBmnD,EAAAnkE,KAAAyU,IAGAyvD,EAAAlkE,KAAA+U,EAAAnV,MAAA4U,GAAA8P,KAAsC3C,EAAA,SAAQjqB,KAAAysE,KAG9C,IAAA50C,EAAAz5B,KAAAkuE,kBAAAluE,KAAAguE,iBAAA/uD,EAAAmvD,EACA,WAAeviD,EAAA,MAAMA,EAAA,SAAQjqB,KAAA63B,GAAA,MAG7B2sC,EAAA1/D,UAAAuC,QAAA,SAAAtI,EAAAumB,QACA,IAAAA,MAAwC2E,EAAA,MAAKtL,OAG7C,IADA,IAAA2B,EAAAvhB,EAAAkD,MAAApD,OAAA2kB,EAAAplB,KAAAolB,OACAjiB,EAAA,EAAmBA,EAAAiiB,EAAA3kB,OAAmB0C,IAAA,CACtC,IAAApC,EAAAqkB,EAAAjiB,GACAZ,EAAAxB,EAAAwB,MACAiqB,EAAAzrB,EAAAyrB,IACA9J,EAAA/hB,EAAA+hB,QAAAliB,MAAA0hB,GACAvhB,EAAAsI,QAAAyZ,EAAAhY,IAAAnI,EAAAH,KAAAsgB,EAAAhY,IAAA8hB,EAAApqB,KAAAe,EAAmE0oB,EAAA,MAAKtL,MAAA2G,GAExE,IAAAoyB,EAAArB,EAAAtpB,SAAAhuB,EAAA6B,IAAAC,QAAA9B,EAAA+hB,QAAAliB,MAAA0hB,GAAAxX,IAAA1K,KAAA6B,MAAA,GACAy3C,GAAc34C,EAAAmlB,aAAAwzB,IAGd8sB,EAAA1/D,UAAAxC,YAAA,SAAAvD,EAAAyE,GACApF,KAAAiJ,QAAAtI,EAAA,IAAyBkrB,EAAA,MAAMA,EAAA,SAAQjqB,KAAAwD,GAAA,OAGvCghE,EAAA1/D,UAAAgoE,YAAA,SAAA9tD,GAGA,IAFA,IAAA3B,EAAAjf,KAAAstE,YAAAloE,MAAA,GAAAsF,EAAA27D,EAAA3lD,IAAAzB,GAAA9e,EAAAH,KAAAstE,YAAAntE,OAAA,GACA6e,EAAAtU,EAAAmhE,YAAAnhE,EAAA0gE,YAAAprE,KAAAstE,YAAAlrE,IAAAjC,EAAAH,KAAAutE,UAAAnrE,IAAAjC,IACAgD,EAAA,EAAmBA,EAAA6b,EAAAve,OAAkB0C,IAC9Byd,EAAA3B,EAAAqb,OAAAtb,EAAA7b,IAAAhD,EAAA6e,EAAA7b,KAMPijE,EAAA1/D,UAAAwnE,eAAA,WACA,IAAAS,EAAA3uE,KAAAstE,YAAAhoE,OAAA,GAAAspE,EAAA5uE,KAAAutE,UAAAjoE,OAAA,GACA,GAAAtC,KAAAyd,IAAAkuD,EAAAC,GAAA,EAA2C,SAC3C,IAAAC,EAAAF,EAAA3uE,KAAAstE,YAAAt/C,UAAAxpB,MAAAgmE,QACAsE,EAAAF,EAAA5uE,KAAAutE,UAAAv/C,UAAAxpB,MAAAgmE,QACA,OAAAxnE,KAAAC,IAAA4rE,EAAAC,IAAA9uE,KAAAutE,UAAAnoE,MAAA,GAAA+jB,YAMAi9C,EAAA+H,aAAA,SAAAb,EAAAC,QACA,IAAAA,MAAAD,GAEA,IAAA5iE,EAAA27D,EAAA3lD,IAAA4sD,EAAAloE,MAAA,IAAAjF,EAAAmtE,EAAAntE,OAAA,GACA4uE,EAAArkE,EAAA+8D,SAAA6F,EAAAlrE,IAAAjC,GAAA6uE,EAAAtkE,EAAA+8D,SAAA8F,EAAAnrE,IAAAjC,GACAqC,EAAA8qE,EAAAloE,KAAA,GAYA,OAXA2pE,EAAA3iE,KAAA4iE,EAAA5iE,KACA2iE,EAAA3iE,IAAA,IACSkhE,EAAA9qE,EAAAC,QAAAtC,EAAAuK,MAAAqkE,EAAAztD,QACT0tD,EAAA5vB,OAAA10C,EAAAi5C,SACS4pB,EAAA/qE,EAAAC,QAAAtC,EAAAuK,QAAAu5C,OAAAv5C,EAAAi5C,OAAA,GAAAqrB,EAAAztD,MAAA,OAETytD,EAAA5iE,IAAA,IACSmhE,EAAA/qE,EAAAC,QAAAtC,EAAAuK,MAAAskE,EAAA1tD,QACTytD,EAAA3vB,OAAA10C,EAAAi5C,SACS2pB,EAAA9qE,EAAAC,QAAAtC,EAAAuK,QAAAu5C,OAAAv5C,EAAAi5C,OAAA,GAAAorB,EAAAxtD,MAAA,MAET,IAAA6kD,EAAAkH,EAAAC,IAMAnH,EAAA1/D,UAAAsnE,eAAA,WACA,IAAAtjE,EAAA27D,EAAA3lD,IAAA1gB,KAAAstE,YAAAloE,MAAA,IAAAjF,EAAAH,KAAAstE,YAAAntE,OAAA,GACA8uE,EAAAvkE,EAAAw8D,SAAAlnE,KAAAstE,YAAAlrE,IAAAjC,GACA+uE,EAAAxkE,EAAAw8D,SAAAlnE,KAAAutE,UAAAnrE,IAAAjC,GACA,GAAA6C,KAAAyd,IAAAwuD,EAAAC,GAAA,EAA6C,SAC7C,IAAAC,EAAAF,EAAAjvE,KAAAstE,YAAAt/C,UAAAxpB,MAAA2lE,QACAiF,EAAAF,EAAAlvE,KAAAutE,UAAAv/C,UAAAxpB,MAAA2lE,QACA,OAAAnnE,KAAAC,IAAAksE,EAAAC,IAAA1kE,EAAAu5C,OAGAmiB,EAAA1/D,UAAAq0B,GAAA,SAAA9a,GACA,OAAAA,aAAAmmD,GAAAnmD,EAAAqtD,YAAAlrE,KAAApC,KAAAstE,YAAAlrE,KACA6d,EAAAstD,UAAAnrE,KAAApC,KAAAutE,UAAAnrE,KAMAgkE,EAAA6H,aAAA,SAAAX,EAAAC,QACA,IAAAA,MAAAD,GAEA,IAAA5iE,EAAA27D,EAAA3lD,IAAA4sD,EAAAloE,MAAA,IAAAjF,EAAAmtE,EAAAntE,OAAA,GACA4uE,EAAArkE,EAAA+8D,SAAA6F,EAAAlrE,IAAAjC,GAAA6uE,EAAAtkE,EAAA+8D,SAAA8F,EAAAnrE,IAAAjC,GACAqC,EAAA8qE,EAAAloE,KAAA,GAYA,OAXA2pE,EAAAztD,MAAA0tD,EAAA1tD,MACAytD,EAAAztD,KAAA,IACSgsD,EAAA9qE,EAAAC,QAAAtC,EAAAuK,MAAAqkE,EAAA3iE,IAAA1B,EAAAu5C,SACT+qB,EAAAztD,MAAA7W,EAAAu5C,QACSspB,EAAA/qE,EAAAC,QAAAtC,EAAAuK,QAAAu5C,OAAA+qB,EAAA5iE,IAAA,UAET4iE,EAAA1tD,KAAA,IACSisD,EAAA/qE,EAAAC,QAAAtC,EAAAuK,MAAAskE,EAAA5iE,IAAA1B,EAAAu5C,SACT8qB,EAAAxtD,MAAA7W,EAAAu5C,QACSqpB,EAAA9qE,EAAAC,QAAAtC,EAAAuK,QAAAu5C,OAAA8qB,EAAA3iE,IAAA,SAET,IAAAg6D,EAAAkH,EAAAC,IAGAnH,EAAA1/D,UAAAwvB,OAAA,WACA,OAAYvzB,KAAA,OAAA21C,OAAAt4C,KAAAstE,YAAAlrE,IAAAssC,KAAA1uC,KAAAutE,UAAAnrE,MAGZgkE,EAAAjwC,SAAA,SAAA3zB,EAAA4zB,GACA,WAAAgwC,EAAA5jE,EAAAC,QAAA2zB,EAAAkiB,QAAA91C,EAAAC,QAAA2zB,EAAAsY,QAIA03B,EAAA1wD,OAAA,SAAAlT,EAAA6sE,EAAAC,GAGA,YAFA,IAAAA,MAAAD,GAEA,IAAAjJ,EAAA5jE,EAAAC,QAAA4sE,GAAA7sE,EAAAC,QAAA6sE,KAGAlJ,EAAA1/D,UAAAkf,YAAA,WAAiE,WAAA2pD,EAAAvvE,KAAAstE,YAAAlrE,IAAApC,KAAAutE,UAAAnrE,MAEjEgkE,EAxMA,CAyMExmE,EAAA,WAEFwmE,EAAA1/D,UAAAsyC,SAAA,EAEAp5C,EAAA,UAAS02B,OAAA,OAAA8vC,GAET,IAAAmJ,EAAA,SAAAj3B,EAAA5J,GACA1uC,KAAAs4C,SACAt4C,KAAA0uC,QAiBA,SAAA8gC,EAAAtvE,GACA,KAAAA,EAAAiC,qBAAAikE,GAAoD,YACpD,IAAApnD,KAIA,OAHA9e,EAAAiC,UAAAusE,YAAA,SAAAtpE,EAAAhD,GACA4c,EAAA9U,KAAeu/D,EAAA,EAAUrkE,KAAAhD,IAAAgD,EAAA8oB,UAAiCy/B,MAAA,oBAEjD8b,EAAA,EAAa/zD,OAAAxV,EAAAsC,IAAAwc,GAwEtB,SAAAynD,EAAAjmE,GACA,IAAAA,EAAA+sB,KAAoB,YAIpB,IAHA,IAAArG,EAAA1mB,EAAA0mB,QACA8P,EAAAx2B,EAAAw2B,UACAD,EAAAv2B,EAAAu2B,QACA,GAAA7P,EAAAiC,aAAA6N,EAAA,GAAAD,EAAA,YAAA7P,EAAAnd,WAAApH,KAAAC,KAAAkoE,YACA9zC,IACAD,IACA7P,IAAAnd,WAAAmd,QAEA,IAAAiW,EAAAjW,EAAAnd,WAAAmhE,EAAA/tC,EAAAx6B,KAAAC,KAAAkoE,UACA3mE,EAAAg5B,EAAAx6B,KAAAwB,OAAAiqE,KACA,UAAAlD,EACA,QAAA/nE,EAAA,EAAmBA,EAAA+jB,EAAAiC,WAAwBhmB,IAAA,CAC3C,IAAA6b,EAAAkI,EAAApd,MAAA3G,GAAA+jB,QACA5F,EAAAne,EAAA,EAAAH,KAAAC,IAAA,EAAA+zB,EAAA,GACAzV,EAAApe,EAAA+jB,EAAAiC,WAAA,IAAAnmB,KAAAC,IAAA,EAAA8zB,EAAA,IACAzV,GAAAC,KAA0BvC,EAAAywD,EAAA1G,EAAA5kE,GAAAua,IAAA,IAAkDmN,EAAA,MAAK7M,EAAAsC,EAAAC,IAAA2F,SACjFknD,EAAAlkE,KAAA8U,OAEG,YAAAksD,GAAA,eAAAA,EAGH,YAFAkD,EAAAlkE,KAAA8sB,GAAAD,EAAA04C,EAAA1G,EAAA5kE,GAAAua,IAAA,IAA8EmN,EAAA,MAAK3E,EAAA8P,EAAAD,IAAA7P,WAInF,OAMA,SAAA/iB,EAAAiqE,GAEA,IADA,IAAA7D,KACApnE,EAAA,EAAiBA,EAAAirE,EAAA3tE,OAAiB0C,IAElC,IADA,IAAAub,EAAA0vD,EAAAjrE,GACAS,EAAA8a,EAAAyK,WAAA,EAAoCvlB,GAAA,EAAQA,IAI5C,IAHA,IAAA7C,EAAA2d,EAAA5U,MAAAlG,GAAAY,MACAgmE,EAAAzpE,EAAAypE,QACAL,EAAAppE,EAAAopE,QACAxyB,EAAAx0C,EAAqBw0C,EAAAx0C,EAAAqnE,EAAiB7yB,IAC7B4yB,EAAA5yB,IAAA4yB,EAAA5yB,IAAA,GAAAwyB,EAIT,IADA,IAAAlmB,EAAA,EACAyrB,EAAA,EAAmBA,EAAAnF,EAAA9pE,OAAqBivE,IAASzrB,EAAAjhD,KAAAC,IAAAghD,EAAAsmB,EAAAmF,IACjD,QAAAC,EAAA,EAAmBA,EAAApF,EAAA9pE,OAAqBkvE,IAExC,GADAA,GAAAvB,EAAA3tE,QAA6B2tE,EAAAlkE,KAAW2hB,EAAA,SAAQtL,OAChDgqD,EAAAoF,GAAA1rB,EAAA,CAEA,IADA,IAAA1jC,EAAAwoD,EAAA5kE,GAAAwa,KAAAuO,gBAAAlO,KACA6Q,EAAA06C,EAAAoF,GAAiC9/C,EAAAo0B,EAAap0B,IAAS7Q,EAAA9U,KAAAqW,GACvD6tD,EAAAuB,GAAAvB,EAAAuB,GAAA3vD,OAAmC6L,EAAA,SAAQjqB,KAAAod,IAG3C,OAAU2kC,OAAAyqB,EAAA3tE,OAAAwjD,QAAAmqB,QA5BVwB,CAAAzrE,EAAAiqE,GA+BA,SAAAqB,EAAAprE,EAAA7D,GACA,IAAA4E,EAAAf,EAAA6oB,gBAEA,OADA,IAAew8C,EAAA,EAAStkE,GAAA6D,QAAA,EAAA7D,EAAA8hB,QAAAqG,KAAA/sB,GACxBgC,IAOA,SAAA+jE,EAAAxlE,EAAA8uE,EAAAC,GACA,IAAA7rB,EAAAljD,EAAAkjD,MACAN,EAAA5iD,EAAA4iD,OACAyqB,EAAArtE,EAAAqtE,KAEA,GAAAnqB,GAAA4rB,EAAA,CAEA,IADA,IAAAlqD,KAAAoqD,KACArxD,EAAA,EAAqBA,EAAA0vD,EAAA3tE,OAAmBie,IAAA,CAExC,IADA,IAAAie,EAAAyxC,EAAA1vD,GAAAM,KACAm4C,EAAAxxC,EAAAjH,IAAA,EAAAvb,EAAA,EAA4Cg0D,EAAA0Y,EAAgB1sE,IAAA,CAC5D,IAAAwb,EAAAge,EAAA7yB,MAAA3G,EAAAw5B,EAAAxT,YACAguC,EAAAx4C,EAAAna,MAAA2lE,QAAA0F,IACWlxD,IAAAhc,KAAA+S,OAAA0yD,EAAAzpD,EAAAna,MAAAma,EAAAna,MAAA2lE,QAAAhT,EAAAx4C,EAAAna,MAAA2lE,QAAA0F,GAAAlxD,EAAAuI,UACXlI,EAAA9U,KAAAyU,GACAw4C,GAAAx4C,EAAAna,MAAA2lE,QACA,QAAAvmE,EAAA,EAAuBA,EAAA+a,EAAAna,MAAAgmE,QAAwB5mE,IACpC+hB,EAAAjH,EAAA9a,IAAA+hB,EAAAjH,EAAA9a,IAAA,GAAA+a,EAAAna,MAAA2lE,QAEX4F,EAAA7lE,KAAmB2hB,EAAA,SAAQjqB,KAAAod,IAE3BovD,EAAA2B,EACA9rB,EAAA4rB,EAGA,GAAAlsB,GAAAmsB,EAAA,CAEA,IADA,IAAAE,KACAC,EAAA,EAAApgD,EAAA,EAAgCogD,EAAAH,EAAmBG,IAAApgD,IAAA,CAEnD,IADA,IAAAqgD,KAAA5iE,EAAA8gE,EAAAv+C,EAAA8zB,GACA0D,EAAA,EAAuBA,EAAA/5C,EAAA6b,WAAyBk+B,IAAA,CAChD,IAAAilB,EAAAh/D,EAAAxD,MAAAu9C,GACA4oB,EAAA3D,EAAA9nE,MAAAgmE,QAAAsF,IACWxD,IAAA3pE,KAAA+S,OAAAgzD,EAAA4D,EAAA9nE,MAAA,UAAAxB,KAAAC,IAAA,EAAA6sE,EAAAxD,EAAA9nE,MAAAgmE,UAAA8B,EAAAplD,UACXgpD,EAAAhmE,KAAAoiE,GAEA0D,EAAA9lE,KAAqB2hB,EAAA,SAAQjqB,KAAAsuE,IAE7B9B,EAAA4B,EACArsB,EAAAmsB,EAGA,OAAU7rB,QAAAN,SAAAyqB,QAwCV,SAAA+B,EAAAxvE,EAAA+J,EAAAuU,EAAA9e,EAAAmhB,EAAAC,EAAAnV,EAAA8V,GACA,MAAA9V,MAAA1B,EAAAi5C,OAAsC,SAEtC,IADA,IAAAnoB,GAAA,EACA27B,EAAA71C,EAAsB61C,EAAA51C,EAAa41C,IAAA,CACnC,IAAA7xD,EAAA8G,EAAA1B,EAAAu5C,MAAAkT,EAAA/0D,EAAAsI,MAAApF,GACA,GAAAoF,MAAApF,EAAAoF,EAAAu5C,QAAA7hD,EAAA,CACAo5B,GAAA,EACA,IAAA7c,EAAAM,EAAAqb,OAAAl4B,GACArB,EAAA2J,EAAA+8D,SAAArlE,GACAguE,EAAArvE,EAAAqL,IACAikE,EAAAtvE,EAAAugB,KACA3gB,EAAAitB,cAAAjtB,EAAA+hB,QAAAliB,MAAA0hB,GAAAxX,IAAAtI,EAAAjC,GAAA,KAAAuoE,EAAA/pD,EAAAna,MAAA,UAAA4H,EAAAgkE,IACAzvE,EAAAN,OAAAM,EAAA+hB,QAAAliB,MAAA0hB,GAAAxX,MAAAohE,WAAA1/D,EAAAikE,EAAApxD,IACAN,EAAAhc,KAAAuqB,cAAAw7C,EAAA/pD,EAAAna,MAAA,UAAA4rE,EAAAzxD,EAAAna,MAAAgmE,QAAAp+D,KACA+qD,GAAAx4C,EAAAna,MAAA2lE,QAAA,GAGA,OAAA3uC,EAMA,SAAA80C,EAAA3vE,EAAA+J,EAAAuU,EAAA9e,EAAAiM,EAAAgzC,EAAA99B,EAAAY,GACA,MAAAZ,MAAA5W,EAAAu5C,MAAuC,SAEvC,IADA,IAAAzoB,GAAA,EACA9c,EAAAtS,EAAqBsS,EAAA0gC,EAAc1gC,IAAA,CACnC,IAAApZ,EAAAoZ,EAAAhU,EAAAu5C,MAAA3iC,EAAAlf,EAAAsI,MAAApF,GACA,GAAAoF,MAAApF,EAAA,IAAAlD,EAAA,CACAo5B,GAAA,EACA,IAAA7c,EAAAM,EAAAqb,OAAAl4B,GAAAiuE,EAAA3lE,EAAAw8D,SAAA9kE,GACAmuE,EAAA5vE,EAAA+hB,QAAAliB,MAAA0hB,GAAAxX,IAAAtI,EAAAjC,GACAQ,EAAAitB,cAAA2iD,EAAA,KAAAnI,EAAAzpD,EAAAna,MAAA8c,EAAA+uD,EAAA1xD,EAAAna,MAAA2lE,SAAA7oD,EAAA+uD,KACA1vE,EAAAN,OAAAkwE,EAAA5xD,EAAAuP,SAAAvP,EAAAhc,KAAAuqB,cAAAk7C,EAAAzpD,EAAAna,MAAA,EAAA8c,EAAA+uD,KACA3xD,GAAAC,EAAAna,MAAAgmE,QAAA,GAGA,OAAAhvC,EAKA,SAAAgrC,EAAAtmE,EAAAmD,EAAAmtE,EAAAhxB,EAAAxgC,GACA,IAAAC,EAAAuxD,EAAAtwE,EAAAsC,IAAA83B,OAAAk2C,EAAA,GAAAtwE,EAAAsC,IAAAkI,EAAA27D,EAAA3lD,IAAAzB,GACA7S,EAAAozC,EAAApzC,IACAkV,EAAAk+B,EAAAl+B,KACAC,EAAAD,EAAAtC,EAAAilC,MAAA7E,EAAAhzC,EAAA4S,EAAA2kC,OACAhjD,EAAAT,EAAAS,GAAAuhB,EAAA,EACA,SAAAuuD,IACAxxD,EAAAuxD,EAAA7vE,EAAA6B,IAAA83B,OAAAk2C,EAAA,GAAA7vE,EAAA6B,IACAkI,EAAA27D,EAAA3lD,IAAAzB,GACAiD,EAAAvhB,EAAA+hB,QAAAN,KAAA3hB,QAtFA,SAAAE,EAAA+J,EAAAuU,EAAA9e,EAAA8jD,EAAAN,EAAAzhC,GACA,IAAA3B,EAAAmwD,EAAAjjD,EAAAs7C,EAAApoE,EAAA6B,IAAAG,KAAAwB,QACA,GAAA8/C,EAAAv5C,EAAAu5C,MACA,QAAAvlC,EAAA,EAAAstD,EAAA,EAAiCttD,EAAAhU,EAAAi5C,OAAkBjlC,IAAA,CACnD,IAAAytD,EAAAltD,EAAAnV,MAAA4U,GACAstD,GAAAG,EAAAj+C,SACA,IAAAlP,KAAA1S,OAAA,EAESA,EADT,MAAA6/D,EAAAjgD,WAAAigD,EAAAjgD,UAAAvpB,MAAA8qB,EAAA9O,KACS4B,MAAAkN,EAAA9O,KAAAuO,iBAEAwjD,MAAAjjD,EAAAqgD,YAAA5gD,iBACT,QAAA/pB,EAAAuH,EAAAu5C,MAA6B9gD,EAAA8gD,EAAW9gD,IAAO6b,EAAA9U,KAAAoC,GAC/C3L,EAAAN,OAAAM,EAAA+hB,QAAAliB,MAAA0hB,GAAAxX,IAAAshE,EAAA,EAAA7rE,GAAA6e,GAGA,GAAA2kC,EAAAj5C,EAAAi5C,OAAA,CAEA,IADA,IAAAusB,KACArgD,EAAA,EAAA8gD,GAAAjmE,EAAAi5C,OAAA,GAAAj5C,EAAAu5C,MAA6Dp0B,EAAA7sB,KAAAC,IAAAyH,EAAAu5C,SAAkCp0B,IAAA,CAC/F,IAAAjR,IAAAiR,GAAAnlB,EAAAu5C,QACAhlC,EAAAqb,OAAA5vB,MAAAimE,EAAA9gD,IAAAltB,MAAA8qB,EAAAqgD,YACAoC,EAAAhmE,KAAA0U,EACA8xD,MAAAjjD,EAAAqgD,YAAA5gD,iBACA3M,MAAAkN,EAAA9O,KAAAuO,kBAIA,IADA,IAAA0jD,EAAAnjD,EAAA/O,IAAAhJ,OAAA,KAA0CmW,EAAA,SAAQjqB,KAAAsuE,IAAA9B,KAClD7vC,EAAA7zB,EAAAi5C,OAA8BplB,EAAAolB,EAAcplB,IAAS6vC,EAAAlkE,KAAA0mE,GACrDjwE,EAAAN,OAAAM,EAAA+hB,QAAAliB,MAAA0hB,GAAAxX,IAAAvK,EAAA8e,EAAAiP,SAAA,GAAAkgD,GAEA,SAAA7tD,IAAAmwD,IA+DAG,CAAAlwE,EAAA+J,EAAAuU,EAAAuxD,EAAAjvD,EAAA69B,EAAAl9B,IAAsEuuD,IACtEN,EAAAxvE,EAAA+J,EAAAuU,EAAAuxD,EAAAlvD,EAAAC,EAAAnV,EAAA8V,IAAiFuuD,IACjFN,EAAAxvE,EAAA+J,EAAAuU,EAAAuxD,EAAAlvD,EAAAC,EAAA69B,EAAAl9B,IAAoFuuD,IACpFH,EAAA3vE,EAAA+J,EAAAuU,EAAAuxD,EAAApkE,EAAAgzC,EAAA99B,EAAAY,IAAgFuuD,IAChFH,EAAA3vE,EAAA+J,EAAAuU,EAAAuxD,EAAApkE,EAAAgzC,EAAA79B,EAAAW,IAAiFuuD,IAEjF,QAAA/xD,EAAAtS,EAAqBsS,EAAA0gC,EAAc1gC,IAAA,CACnC,IAAA9c,EAAA8I,EAAAohE,WAAAptD,EAAA4C,EAAArC,GAAApd,EAAA6I,EAAAohE,WAAAptD,EAAA6C,EAAAtC,GACAte,EAAAsI,QAAAtI,EAAA+hB,QAAAliB,MAAA0hB,GAAAxX,IAAA9I,EAAA4uE,GAAA7vE,EAAA+hB,QAAAliB,MAAA0hB,GAAAxX,IAAA7I,EAAA2uE,GACA,IAAmB3kD,EAAA,MAAK7M,EAAAovD,KAAA1vD,EAAAtS,GAAA,MAExBqkE,IACA9vE,EAAAmlB,aAAA,IAAAsgD,EAAAzlE,EAAA6B,IAAAC,QAAA+tE,EAAA9lE,EAAAohE,WAAA1/D,EAAAkV,EAAArC,IACAte,EAAA6B,IAAAC,QAAA+tE,EAAA9lE,EAAAohE,WAAA1sB,EAAA,EAAA79B,EAAA,EAAAtC,MACA5b,EAAA1C,GAtTA4uE,EAAA7oE,UAAAgE,IAAA,SAAAgY,GACA,WAAA6sD,EAAA7sD,EAAAhY,IAAA1K,KAAAs4C,QAAA51B,EAAAhY,IAAA1K,KAAA0uC,QAEA6gC,EAAA7oE,UAAAjE,QAAA,SAAAD,GACA,IAAA8qE,EAAA9qE,EAAAC,QAAAzC,KAAAs4C,QAAAi1B,EAAA/qE,EAAAC,QAAAzC,KAAA0uC,MACA,aAAA4+B,EAAA5qE,OAAAC,KAAAC,KAAAkoE,WACA,OAAAyC,EAAA7qE,OAAAC,KAAAC,KAAAkoE,WACAwC,EAAAhoE,QAAAgoE,EAAA5qE,OAAAymB,YACAokD,EAAAjoE,QAAAioE,EAAA7qE,OAAAymB,YACA2+C,EAAAwF,EAAAC,GACK,IAAAnH,EAAAkH,EAAAC,GAEQ3tE,EAAA,UAASutB,KAAAogD,EAAA,IA+StB,IAAAuD,EAAoBhsE,OAAA0kE,EAAA,EAAA1kE,EACpBisE,UAAAC,EAAA,YACAC,WAAAD,EAAA,WACAE,QAAAF,EAAA,WACAG,UAAAH,EAAA,UAEAI,kBAAAC,EAAA,YACAC,mBAAAD,EAAA,WACAE,gBAAAF,EAAA,WACAG,kBAAAH,EAAA,UAEAvgD,UAAA2gD,EACA1gD,gBAAA0gD,EACAzgD,OAAAygD,EACAxgD,aAAAwgD,IAGA,SAAAC,EAAAxxE,EAAAmD,EAAAlB,GACA,OAAAA,EAAA44B,GAAA76B,EAAAiC,aACAkB,GAAiBA,EAAAnD,EAAAS,GAAAmlB,aAAA3jB,GAAA6jB,mBACjB,GAGA,SAAAgrD,EAAA7F,EAAA/xC,GACA,gBAAAl5B,EAAAmD,EAAA1B,GACA,IAAA23C,EAAAp5C,EAAAiC,UACA,GAAAm3C,aAAA8sB,EACA,OAAAsL,EAAAxxE,EAAAmD,EAAgDzD,EAAA,UAASutB,KAAAmsB,EAAAi0B,UAAAn0C,IAEzD,YAAA+xC,IAAA7xB,EAAA/4B,MAAwC,SACxC,IAAAngB,EAAAuxE,EAAAhwE,EAAAwpE,EAAA/xC,GACA,SAAAh5B,EAAsB,SACtB,YAAA+qE,EACA,OAAAuG,EAAAxxE,EAAAmD,EAAgDzD,EAAA,UAASutB,KAAAjtB,EAAAsC,IAAAC,QAAA62C,EAAA5K,KAAAtV,OAEzD,IAAAw4C,EAAA1xE,EAAAsC,IAAAC,QAAArC,GAAAm0D,EAAA2T,EAAA0J,EAAAzG,EAAA/xC,GAIA,OAAAs4C,EAAAxxE,EAAAmD,EAHAkxD,EAA4B30D,EAAA,UAASutB,KAAAonC,EAAA,GACrCn7B,EAAA,EAAmCx5B,EAAA,UAASutB,KAAAjtB,EAAAsC,IAAAC,QAAAmvE,EAAA5sE,QAAA,QACtBpF,EAAA,UAASutB,KAAAjtB,EAAAsC,IAAAC,QAAAmvE,EAAAn/D,OAAA,SAM/B,SAAA4+D,EAAAlG,EAAA/xC,GACA,gBAAAl5B,EAAAmD,EAAA1B,GACA,IAAA23C,EAAAp5C,EAAAiC,UACA,KAAAm3C,aAAA8sB,GAAA,CACA,IAAAhmE,EAAAuxE,EAAAhwE,EAAAwpE,EAAA/xC,GACA,SAAAh5B,EAAwB,SACxBk5C,EAAA,IAAA8sB,EAAAlmE,EAAAsC,IAAAC,QAAArC,IAEA,IAAAysB,EAAAq7C,EAAA5uB,EAAAi0B,UAAApC,EAAA/xC,GACA,QAAAvM,GACA6kD,EAAAxxE,EAAAmD,EAAA,IAAA+iE,EAAA9sB,EAAAg0B,YAAAzgD,KAIA,SAAA4kD,EAAAvxE,EAAAmD,GACA,IAAAi2C,EAAAp5C,EAAAiC,UACA,KAAAm3C,aAAA8sB,GAAwC,SACxC,GAAA/iE,EAAA,CACA,IAAA1C,EAAAT,EAAAS,GAAAkxE,EAAA9I,EAAA7oE,EAAAiE,QAAAwa,KAAAuO,gBAAAhG,QACAoyB,EAAAo1B,YAAA,SAAA/vD,EAAAvc,GACAuc,EAAAuI,QAAA6T,GAAA82C,IACSlxE,EAAAsI,QAAAtI,EAAA+hB,QAAAhY,IAAAtI,EAAA,GAAAzB,EAAA+hB,QAAAhY,IAAAtI,EAAAuc,EAAAuP,SAAA,GACT,IAAuBrC,EAAA,MAAKgmD,EAAA,QAE5BlxE,EAAAa,YAAwB6B,EAAA1C,GAExB,SAGA,SAAA06D,EAAA15D,EAAAS,GACA,IAAAwvE,EAAA3K,EAAAtlE,EAAAzB,MAAAsC,IAAAC,QAAAL,IACA,QAAAwvE,IACAjwE,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAAmlB,aAAA,IAAAsgD,EAAAwL,MACA,GAGA,SAAA/J,EAAAlmE,EAAAohC,EAAAviC,GACA,IAAAunE,EAAApmE,EAAAzB,OAA+B,SAC/B,IAAA8e,EAAAynD,EAAAjmE,GAAA84C,EAAA33C,EAAAzB,MAAAiC,UACA,GAAAm3C,aAAA8sB,EAAA,CACApnD,IAAiBA,GAAUilC,MAAA,EAAAN,OAAA,EAAAyqB,MAA4BviD,EAAA,SAAQjqB,KAAA6tE,EAAA1G,EAAApnE,EAAAzB,MAAAiE,QAAAwa,KAAAne,OAC/D,IAAAye,EAAAq6B,EAAAg0B,YAAAloE,MAAA,GAAAjF,EAAAm5C,EAAAg0B,YAAAntE,OAAA,GACAq/C,EAAA6mB,EAAA3lD,IAAAzB,GAAAmsD,YAAA9xB,EAAAg0B,YAAAlrE,IAAAjC,EAAAm5C,EAAAi0B,UAAAnrE,IAAAjC,GAGA,OAFA6e,EAAAunD,EAAAvnD,EAAAwgC,EAAAj+B,MAAAi+B,EAAAl+B,KAAAk+B,EAAAJ,OAAAI,EAAApzC,KACAo6D,EAAA7kE,EAAAzB,MAAAyB,EAAA0B,SAAAlD,EAAAq/C,EAAAxgC,IACA,EACG,GAAAA,EAAA,CACH,IAAA4yD,EAAAnJ,EAAA9mE,EAAAzB,OAAAywE,EAAAiB,EAAAzxE,OAAA,GAEA,OADAqmE,EAAA7kE,EAAAzB,MAAAyB,EAAA0B,SAAAstE,EAAAtK,EAAA3lD,IAAAkxD,EAAAxsE,MAAA,IAAAqiE,SAAAmK,EAAAxvE,IAAAuuE,GAAA3xD,IACA,EAEA,SAIA,SAAA8yD,EAAAnwE,EAAAowE,GACA,IAAAA,EAAAjgB,UAAAigB,EAAAhgB,QAAA,CAEA,IAAAjlC,EAAAklD,EAAAC,EAAAtwE,EAAAowE,EAAA5nD,QACA,GAAA4nD,EAAA9f,UAAAtwD,EAAAzB,MAAAiC,qBAAAikE,EAEA8L,EAAAvwE,EAAAzB,MAAAiC,UAAAmrE,YAAAyE,GACAA,EAAApW,sBACG,GAAAoW,EAAA9f,UAAA+f,GACH,OAAAllD,EAAAm6C,EAAAtlE,EAAAzB,MAAAiC,UAAA2qB,WACAqlD,EAAAxwE,EAAAowE,GAAA3vE,KAAA0qB,EAAA1qB,IAGA8vE,EAAAplD,EAAAilD,GACAA,EAAApW,sBACG,IAAAqW,EAEH,OAwCArwE,EAAA0K,KAAA4Q,iBAAA,UAAAyrC,GACA/mD,EAAA0K,KAAA4Q,iBAAA,YAAAyrC,GACA/mD,EAAA0K,KAAA4Q,iBAAA,YAAA2hB,GArCA,SAAAszC,EAAAplD,EAAA3iB,GACA,IAAA0iB,EAAAslD,EAAAxwE,EAAAwI,GACAioE,EAAA,MAAA9oE,EAAA5F,SAAA/B,EAAAzB,OACA,IAAA2sB,IAAAi7C,EAAAh7C,EAAAD,GAAA,CACA,IAAAulD,EACY,OADSvlD,EAAAC,EAGrB,IAAA3qB,EAAA,IAAAikE,EAAAt5C,EAAAD,GACA,GAAAulD,IAAAzwE,EAAAzB,MAAAiC,UAAA44B,GAAA54B,GAAA,CACA,IAAAxB,EAAAgB,EAAAzB,MAAAS,GAAAmlB,aAAA3jB,GACAiwE,GAAqBzxE,EAAA2C,QAAAgG,EAAAwjB,EAAA1qB,KACrBT,EAAA0B,SAAA1C,IAKA,SAAA+nD,IACA/mD,EAAA0K,KAAAwjD,oBAAA,UAAAnH,GACA/mD,EAAA0K,KAAAwjD,oBAAA,YAAAnH,GACA/mD,EAAA0K,KAAAwjD,oBAAA,YAAAjxB,GACA,MAAAt1B,EAAA5F,SAAA/B,EAAAzB,QAA2CyB,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAA2C,QAAAgG,GAAA,IAG3C,SAAAs1B,EAAAz0B,GACA,IAAA2iB,EAAAwrB,EAAAhvC,EAAA5F,SAAA/B,EAAAzB,OACA,SAAAo4C,EAEAxrB,EAAAnrB,EAAAzB,MAAAsC,IAAAC,QAAA61C,QACK,GAAA25B,EAAAtwE,EAAAwI,EAAAggB,SAAA6nD,KAELllD,EAAAqlD,EAAAxwE,EAAAowE,IACqB,OAAArpB,IAErB57B,GAAkBolD,EAAAplD,EAAA3iB,IASlB,SAAAwnE,EAAAhwE,EAAAwpE,EAAA/xC,GACA,KAAAz3B,EAAAzB,MAAAiC,qBAAwCvC,EAAA,eAAiB,YAGzD,IAFA,IACAitB,EADAlrB,EAAAzB,MAAAiC,UACA0qB,MACAxtB,EAAAwtB,EAAApO,MAAA,EAA+Bpf,GAAA,EAAQA,IAAA,CACvC,IAAAqD,EAAAmqB,EAAAznB,KAAA/F,GACA,IADA+5B,EAAA,EAAAvM,EAAAvnB,MAAAjG,GAAAwtB,EAAAtnB,WAAAlG,MACA+5B,EAAA,IAAA12B,EAAAymB,YAAqD,YACrD,WAAAzmB,EAAAC,KAAAC,KAAAkoE,WAAA,eAAApoE,EAAAC,KAAAC,KAAAkoE,UAAA,CACA,IAAAuH,EAAAxlD,EAAA7nB,OAAA3F,GACAizE,EAAA,QAAAnH,EAAA/xC,EAAA,cAAAA,EAAA,iBACA,OAAAz3B,EAAA4uB,eAAA+hD,GAAAD,EAAA,MAGA,YAGA,SAAAJ,EAAAtwE,EAAAonB,GACA,KAAQA,MAAApnB,EAAAonB,IAAwBA,IAAA1N,WAC3B,SAAA0N,EAAAvf,UAAA,MAAAuf,EAAAvf,SAAoD,OAAAuf,EAGzD,SAAAopD,EAAAxwE,EAAAwI,GACA,IAAAooE,EAAA5wE,EAAAkgD,aAAmCvgC,KAAAnX,EAAAuwD,QAAAtuD,IAAAjC,EAAAwwD,UACnC,OAAA4X,GACAA,EAAAtL,EAAAtlE,EAAAzB,MAAAsC,IAAAC,QAAA8vE,EAAAnwE,MADkB,KAMlB,IAAAulE,GAAA,IAAuB/nE,EAAA,UAAS,cA+BhC,SAAA8nE,GAAAxnE,EAAAs7C,GACA,IAAA76C,EAAAimC,EAAA,SAAAxhC,EAAAhD,GACA,SAAAgD,EAAAzC,KAAAC,KAAAkoE,YAA8CnqE,EAU9C,SAAAT,EAAA+e,EAAAuzD,EAAA7xE,GACA,IAAA+J,EAAA27D,EAAA3lD,IAAAzB,GACA,IAAAvU,EAAAs/D,SAAsB,OAAArpE,EACtBA,IAAYA,EAAAT,EAAAS,IAKZ,IADA,IAkBAw8B,EAAAxY,EAlBA8tD,KACAtvE,EAAA,EAAiBA,EAAAuH,EAAAi5C,OAAgBxgD,IAAOsvE,EAAAvoE,KAAA,GACxC,QAAA2lB,EAAA,EAAmBA,EAAAnlB,EAAAs/D,SAAAvpE,OAA2BovB,IAAA,CAC9C,IAAA6iD,EAAAhoE,EAAAs/D,SAAAn6C,GACA,gBAAA6iD,EAAA/vE,KAAA,CAEA,IADA,IAAAgc,EAAAM,EAAAqb,OAAAo4C,EAAAtwE,KACAwB,EAAA,EAAqBA,EAAA+a,EAAAna,MAAAgmE,QAAwB5mE,IAAO6uE,EAAAC,EAAAh0D,IAAA9a,IAAA8uE,EAAAtvD,EACpDziB,EAAAitB,cAAAjtB,EAAA+hB,QAAAhY,IAAA8nE,EAAA,EAAAE,EAAAtwE,KAAA,KAAAgmE,EAAAzpD,EAAAna,MAAAma,EAAAna,MAAA2lE,QAAAuI,EAAAtvD,EAAAsvD,EAAAtvD,SACK,cAAAsvD,EAAA/vE,KACL8vE,EAAAC,EAAAh0D,MAAAg0D,EAAAtvD,OACK,uBAAAsvD,EAAA/vE,KAAA,CACL,IAAA2pE,EAAArtD,EAAAqb,OAAAo4C,EAAAtwE,KACAzB,EAAAitB,cAAAjtB,EAAA+hB,QAAAhY,IAAA8nE,EAAA,EAAAE,EAAAtwE,KAAA,KAAAsmE,EAAA4D,EAAA9nE,MAAA,UAAA8nE,EAAA9nE,MAAAgmE,QAAAkI,EAAAtvD,SACK,wBAAAsvD,EAAA/vE,KAAA,CACL,IAAAgwE,EAAA1zD,EAAAqb,OAAAo4C,EAAAtwE,KACAzB,EAAAitB,cAAAjtB,EAAA+hB,QAAAhY,IAAA8nE,EAAA,EAAAE,EAAAtwE,KAAA,KAAAsmE,EAAAiK,EAAAnuE,MAAA,WAAAkuE,EAAAxI,YAIA,QAAA3rC,EAAA,EAAmBA,EAAAk0C,EAAAhyE,OAAsB89B,IAASk0C,EAAAl0C,KAClD,MAAApB,IAAwBA,EAAAoB,GACxB5Z,EAAA4Z,GAMA,QAAAusB,EAAA,EAAA1oD,EAAAowE,EAAA,EAAuC1nB,EAAApgD,EAAAi5C,OAAkBmH,IAAA,CACzD,IAAApsC,EAAAO,EAAAnV,MAAAghD,GACA1qD,EAAAgC,EAAAsc,EAAAwP,SACA5hB,EAAAmmE,EAAA3nB,GACA,GAAAx+C,EAAA,GACA,IAAAsmE,EAAA,OACAl0D,EAAA3U,aACA6oE,EAAAl0D,EAAA3U,WAAApH,KAAAC,KAAAkoE,WAGA,IADA,IAAArjD,KACA4/B,EAAA,EAAuBA,EAAA/6C,EAAW+6C,IACzB5/B,EAAAvd,KAAA6+D,EAAA7oE,EAAAiE,QAAAyuE,GAAA1lD,iBACT,IAAAjB,EAAA,GAAA6+B,GAAA3tB,GAAA2tB,EAAA,GAAAnmC,GAAAmmC,EAAA1qD,EAAA,EAAAgC,EAAA,EACAzB,EAAAN,OAAAM,EAAA+hB,QAAAhY,IAAAuhB,GAAAxE,GAEArlB,EAAAhC,EAEA,OAAAO,EAAA2C,QAAAqkE,IAAmCD,WAAA,IA7DWmL,CAAA3yE,EAAAkF,EAAAhD,EAAAzB,KAI9C,OAFA66C,EACAA,EAAAh5C,KAAAtC,EAAAsC,KA/BA,SAAAswE,EAAA3e,EAAAv4B,EAAAt7B,EAAAsgB,GACA,IAAA8T,EAAAy/B,EAAAhrC,WAAA4pD,EAAAn3C,EAAAzS,WACA8O,EAAA,QAAA90B,EAAA,EAAAS,EAAA,EAA+BT,EAAA4vE,EAAa5vE,IAAA,CAE5C,IADA,IAAA2G,EAAA8xB,EAAA9xB,MAAA3G,GACAs7B,EAAA76B,EAAAqD,EAAAjE,KAAAyd,IAAAiU,EAAAvxB,EAAA,GAAoDs7B,EAAAx3B,EAAUw3B,IAC9D,GAAA01B,EAAArqD,MAAA20B,IAAA30B,EAAA,CACAlG,EAAA66B,EAAA,EACAn+B,GAAAwJ,EAAAokB,SACA,SAAA+J,EAGArX,EAAA9W,EAAAxJ,GACAsD,EAAA8wB,GAAAy/B,EAAArqD,MAAAlG,GAAAq9B,WAAAn3B,GACOgpE,EAAA3e,EAAArqD,MAAAlG,GAAAkG,EAAAxJ,EAAA,EAAAsgB,GAEA9W,EAAA+kB,aAAA,EAAA/kB,EAAAod,QAAAqG,KAAA3M,EAAAtgB,EAAA,GACPA,GAAAwJ,EAAAokB,UAeuC4kD,CAAAt3B,EAAAh5C,IAAAtC,EAAAsC,IAAA,EAAAokC,GADrB1mC,EAAAsC,IAAAo+B,YAAAgG,GAElBjmC,EAiEA,SAAA6nE,GAAAtoE,GACA,IAEAs/C,EAFAlG,EAAAp5C,EAAAiC,UAAAkqB,EAAAo8C,EAAAvoE,GACA+e,EAAAoN,EAAAjnB,MAAA,GAAAorE,EAAAnkD,EAAAlsB,OAAA,GAAAuK,EAAA27D,EAAA3lD,IAAAzB,GASA,OANKugC,EADLlG,aAAA8sB,EACK17D,EAAA0gE,YAAA9xB,EAAAg0B,YAAAlrE,IAAAouE,EAAAl3B,EAAAi0B,UAAAnrE,IAAAouE,GAEA9lE,EAAA+8D,SAAAp7C,EAAAjqB,IAAAouE,IACLA,aACAhxB,EAAA90C,MACA80C,EAAAvgC,QACAugC,EAIA,SAAAmnB,GAAAhmE,EAAAI,EAAAo2D,GACA,IAAAzsD,EAAA3J,EAAA2J,IACA8lE,EAAAzvE,EAAAyvE,WACAvxD,EAAAle,EAAAke,MAEA+zD,EAAA7b,EAAA,OACAgQ,EAAAz8D,EAAAuU,EAAAk4C,EAAA6b,KACKA,EAAA,GAAA7b,MAAAzsD,EAAAu5C,MAAA,QAEL,QAAAvlC,EAAA,EAAmBA,EAAAhU,EAAAi5C,OAAkBjlC,IAAA,CACrC,IAAApZ,EAAAoZ,EAAAhU,EAAAu5C,MAAAkT,EAEA,GAAAA,EAAA,GAAAA,EAAAzsD,EAAAu5C,OAAAv5C,MAAApF,EAAA,IAAAoF,MAAApF,GAAA,CACA,IAAAlD,EAAAsI,MAAApF,GAAAqZ,EAAAM,EAAAqb,OAAAl4B,GACAzB,EAAAitB,cAAAjtB,EAAA+hB,QAAAhY,IAAA8lE,EAAApuE,GAAA,KACAskE,EAAA/nD,EAAAna,MAAA2yD,EAAAzsD,EAAAw8D,SAAA9kE,KAEAsc,GAAAC,EAAAna,MAAAgmE,QAAA,MACK,CACL,IAAA7nE,EAAA,MAAAqwE,EAAAjK,EAAA9pD,EAAAtc,KAAAwB,QAAAwa,KACAM,EAAAqb,OAAA5vB,MAAApF,EAAA0tE,IAAArwE,KACAq/C,EAAAt3C,EAAAohE,WAAAptD,EAAAy4C,EAAAl4C,GACAte,EAAAN,OAAAM,EAAA+hB,QAAAhY,IAAA8lE,EAAAxuB,GAAAr/C,EAAAuqB,kBAGA,OAAAvsB,EAKA,SAAAkmE,GAAA3mE,EAAAmD,GACA,IAAA0kE,EAAA7nE,GAA0B,SAC1B,GAAAmD,EAAA,CACA,IAAAm8C,EAAAgpB,GAAAtoE,GACAmD,EAAAsjE,GAAAzmE,EAAAS,GAAA6+C,IAAAl+B,OAEA,SAKA,SAAAslD,GAAA1mE,EAAAmD,GACA,IAAA0kE,EAAA7nE,GAA0B,SAC1B,GAAAmD,EAAA,CACA,IAAAm8C,EAAAgpB,GAAAtoE,GACAmD,EAAAsjE,GAAAzmE,EAAAS,GAAA6+C,IAAAj+B,QAEA,SAGA,SAAA8mD,GAAA1nE,EAAAI,EAAAo2D,GAMA,IALA,IAAAzsD,EAAA3J,EAAA2J,IACAuU,EAAAle,EAAAke,MACAuxD,EAAAzvE,EAAAyvE,WAEAyC,EAAAtyE,EAAA+hB,QAAAN,KAAA3hB,OACAie,EAAA,EAAmBA,EAAAhU,EAAAi5C,QAAkB,CACrC,IAAAr+C,EAAAoZ,EAAAhU,EAAAu5C,MAAAkT,EAAA/0D,EAAAsI,MAAApF,GAAAqZ,EAAAM,EAAAqb,OAAAl4B,GAEA,GAAA+0D,EAAA,GAAAzsD,MAAApF,EAAA,IAAAlD,GAAA+0D,EAAAzsD,EAAAu5C,MAAA,GAAAv5C,MAAApF,EAAA,IAAAlD,EACAzB,EAAAitB,cAAAjtB,EAAA+hB,QAAAliB,MAAAyyE,GAAAvoE,IAAA8lE,EAAApuE,GAAA,KACAgmE,EAAAzpD,EAAAna,MAAA2yD,EAAAzsD,EAAAw8D,SAAA9kE,SACK,CACL,IAAAjC,EAAAQ,EAAA+hB,QAAAliB,MAAAyyE,GAAAvoE,IAAA8lE,EAAApuE,GACAzB,EAAA+D,OAAAvE,IAAAwe,EAAAuP,UAEAxP,GAAAC,EAAAna,MAAAgmE,SAMA,SAAAlD,GAAApnE,EAAAmD,GACA,IAAA0kE,EAAA7nE,GAA0B,SAC1B,GAAAmD,EAAA,CACA,IAAAm8C,EAAAgpB,GAAAtoE,GAAAS,EAAAT,EAAAS,GACA,MAAA6+C,EAAAl+B,MAAAk+B,EAAAj+B,OAAAi+B,EAAA90C,IAAAu5C,MAAyD,SACzD,QAAA9gD,EAAAq8C,EAAAj+B,MAAA,EACA8mD,GAAA1nE,EAAA6+C,EAAAr8C,GACAA,GAAAq8C,EAAAl+B,KAFiCne,IAGjCq8C,EAAAvgC,MAAAugC,EAAAgxB,WAAA7vE,EAAA6B,IAAA83B,OAAAklB,EAAAgxB,WAAA,GAAA7vE,EAAA6B,IACAg9C,EAAA90C,IAAA27D,EAAA3lD,IAAA8+B,EAAAvgC,OAEA5b,EAAA1C,GAEA,SAGA,SAAA4nE,GAAA79D,EAAAuU,EAAAP,GAEA,IADA,IAAAmvD,EAAA9E,EAAA9pD,EAAAtc,KAAAwB,QAAA2pE,YACA3W,EAAA,EAAmBA,EAAAzsD,EAAAu5C,MAAiBkT,IAC/B,GAAAl4C,EAAAqb,OAAA5vB,MAAAysD,EAAAz4C,EAAAhU,EAAAu5C,QAAAthD,MAAAkrE,EACE,SACP,SAGA,SAAA/G,GAAAnmE,EAAAI,EAAA2d,GAMA,IALA,IAAAhU,EAAA3J,EAAA2J,IACA8lE,EAAAzvE,EAAAyvE,WACAvxD,EAAAle,EAAAke,MAEAi0D,EAAA1C,EACArtE,EAAA,EAAiBA,EAAAub,EAASvb,IAAO+vE,GAAAj0D,EAAAnV,MAAA3G,GAAA+qB,SACjC,IAAAlP,KAAAm0D,EAAAz0D,EAAA,OACA6pD,GAAA79D,EAAAuU,EAAAP,EAAAy0D,KACKA,EAAA,GAAAz0D,MAAAhU,EAAAi5C,OAAA,QACL,QAAAwT,EAAA,EAAA7xD,EAAAoF,EAAAu5C,MAAAvlC,EAA4Cy4C,EAAAzsD,EAAAu5C,MAAiBkT,IAAA7xD,IAE7D,GAAAoZ,EAAA,GAAAA,EAAAhU,EAAAi5C,QAAAj5C,MAAApF,IAAAoF,MAAApF,EAAAoF,EAAAu5C,OAAA,CACA,IAAA7hD,EAAAsI,MAAApF,GAAAd,EAAAya,EAAAqb,OAAAl4B,GAAAoC,MACA7D,EAAAitB,cAAA4iD,EAAApuE,EAAA,KAAAsmE,EAAAlkE,EAAA,UAAAA,EAAAgmE,QAAA,IACArT,GAAA3yD,EAAA2lE,QAAA,MACK,CACL,IAAAxnE,EAAA,MAAAwwE,EAAApK,EAAA9pD,EAAAtc,KAAAwB,QAAAwa,KACAM,EAAAqb,OAAA5vB,MAAApF,EAAA6tE,EAAAzoE,EAAAu5C,QAAAthD,KACAqc,EAAA9U,KAAAvH,EAAAuqB,iBAIA,OADAvsB,EAAAN,OAAA6yE,EAAAnK,EAAA9pD,EAAAtc,KAAAwB,QAAAua,IAAAhJ,OAAA,KAAAsJ,IACAre,EAKA,SAAAqmE,GAAA9mE,EAAAmD,GACA,IAAA0kE,EAAA7nE,GAA0B,SAC1B,GAAAmD,EAAA,CACA,IAAAm8C,EAAAgpB,GAAAtoE,GACAmD,EAAAyjE,GAAA5mE,EAAAS,GAAA6+C,IAAApzC,MAEA,SAKA,SAAA26D,GAAA7mE,EAAAmD,GACA,IAAA0kE,EAAA7nE,GAA0B,SAC1B,GAAAmD,EAAA,CACA,IAAAm8C,EAAAgpB,GAAAtoE,GACAmD,EAAAyjE,GAAA5mE,EAAAS,GAAA6+C,IAAAJ,SAEA,SAGA,SAAAkpB,GAAA3nE,EAAAI,EAAA2d,GAMA,IALA,IAAAhU,EAAA3J,EAAA2J,IACAuU,EAAAle,EAAAke,MACAuxD,EAAAzvE,EAAAyvE,WAEA0C,EAAA,EACA/vE,EAAA,EAAiBA,EAAAub,EAASvb,IAAO+vE,GAAAj0D,EAAAnV,MAAA3G,GAAA+qB,SACjC,IAAAklD,EAAAF,EAAAj0D,EAAAnV,MAAA4U,GAAAwP,SAEAhM,EAAAvhB,EAAA+hB,QAAAN,KAAA3hB,OACAE,EAAA+D,OAAAwuE,EAAA1C,EAAA4C,EAAA5C,GAEA,QAAArZ,EAAA,EAAA7xD,EAAAoZ,EAAAhU,EAAAu5C,MAA4CkT,EAAAzsD,EAAAu5C,MAAiBkT,IAAA7xD,IAAA,CAC7D,IAAAlD,EAAAsI,MAAApF,GACA,GAAAoZ,EAAA,GAAAtc,GAAAsI,MAAApF,EAAAoF,EAAAu5C,OAAA,CAEA,IAAAz/C,EAAAya,EAAAqb,OAAAl4B,GAAAoC,MACA7D,EAAAitB,cAAAjtB,EAAA+hB,QAAAliB,MAAA0hB,GAAAxX,IAAAtI,EAAAouE,GAAA,KAAA9H,EAAAlkE,EAAA,UAAAA,EAAAgmE,QAAA,IACArT,GAAA3yD,EAAA2lE,QAAA,OACK,GAAAzrD,EAAAhU,EAAAu5C,OAAA7hD,GAAAsI,MAAApF,EAAAoF,EAAAu5C,OAAA,CAEL,IAAAtlC,EAAAM,EAAAqb,OAAAl4B,GACAosB,EAAA7P,EAAAhc,KAAA+S,OAAAgzD,EAAA/pD,EAAAna,MAAA,UAAAma,EAAAna,MAAAgmE,QAAA,GAAA7rD,EAAAuI,SACAmsD,EAAA3oE,EAAAohE,WAAAptD,EAAA,EAAAy4C,EAAAl4C,GACAte,EAAAN,OAAAM,EAAA+hB,QAAAliB,MAAA0hB,GAAAxX,IAAA8lE,EAAA6C,GAAA7kD,GACA2oC,GAAAx4C,EAAAna,MAAA2lE,QAAA,IAOA,SAAA5C,GAAArnE,EAAAmD,GACA,IAAA0kE,EAAA7nE,GAA0B,SAC1B,GAAAmD,EAAA,CACA,IAAAm8C,EAAAgpB,GAAAtoE,GAAAS,EAAAT,EAAAS,GACA,MAAA6+C,EAAApzC,KAAAozC,EAAAJ,QAAAI,EAAA90C,IAAAi5C,OAA0D,SAC1D,QAAAxgD,EAAAq8C,EAAAJ,OAAA,EACAkpB,GAAA3nE,EAAA6+C,EAAAr8C,GACAA,GAAAq8C,EAAApzC,IAFkCjJ,IAGlCq8C,EAAAvgC,MAAAugC,EAAAgxB,WAAA7vE,EAAA6B,IAAA83B,OAAAklB,EAAAgxB,WAAA,GAAA7vE,EAAA6B,IACAg9C,EAAA90C,IAAA27D,EAAA3lD,IAAA8+B,EAAAvgC,OAEA5b,EAAA1C,GAEA,SAGA,SAAA2yE,GAAA30D,GACA,IAAArK,EAAAqK,EAAAuI,QACA,UAAA5S,EAAA6U,YAAA7U,EAAAvK,WAAAoiB,aAAA,GAAA7X,EAAAvK,WAAAof,WA0BA,SAAA6+C,GAAA9nE,EAAAmD,GACA,IAAAi2C,EAAAp5C,EAAAiC,UACA,KAAAm3C,aAAA8sB,IAAA9sB,EAAAg0B,YAAAlrE,KAAAk3C,EAAAi0B,UAAAnrE,IAAoF,SACpF,IAAAo9C,EAAAgpB,GAAAtoE,GACAwK,EAAA80C,EAAA90C,IACA,GA5BA,SAAA3J,EAAAy+C,GAOA,IANA,IAAAyE,EAAAljD,EAAAkjD,MACAN,EAAA5iD,EAAA4iD,OACAj5C,EAAA3J,EAAA2J,IAEA6oE,EAAA/zB,EAAApzC,IAAA63C,EAAAzE,EAAAl+B,KAAAkyD,EAAAD,EACAE,GAAAj0B,EAAAJ,OAAA,GAAA6E,EAAAzE,EAAAl+B,KAAAoyD,EAAAH,GAAA/zB,EAAAj+B,MAAAi+B,EAAAl+B,KAAA,GACAne,EAAAq8C,EAAApzC,IAAwBjJ,EAAAq8C,EAAAJ,OAAiBj8C,IAAA,CACzC,GAAAq8C,EAAAl+B,KAAA,GAAA5W,EAAA8oE,IAAA9oE,EAAA8oE,EAAA,IACAh0B,EAAAj+B,MAAA0iC,GAAAv5C,EAAAgpE,IAAAhpE,EAAAgpE,EAAA,GAAuE,SACvEF,GAAAvvB,EAAuByvB,GAAAzvB,EAEvB,QAAAp0B,EAAA2vB,EAAAl+B,KAA2BuO,EAAA2vB,EAAAj+B,MAAkBsO,IAAA,CAC7C,GAAA2vB,EAAApzC,IAAA,GAAA1B,EAAA6oE,IAAA7oE,EAAA6oE,EAAAtvB,IACAzE,EAAAJ,OAAAuE,GAAAj5C,EAAA+oE,IAAA/oE,EAAA+oE,EAAAxvB,GAA+E,SAC/EsvB,IAAeE,IAEf,SAWAE,CAAAjpE,EAAA80C,GAAyC,SACzC,GAAAn8C,EAAA,CAEA,IADA,IAAoDuwE,EAAAC,EAApDlzE,EAAAT,EAAAS,GAAAi/B,KAAgC1Y,EAAY2E,EAAA,SAAQtL,MACpD7B,EAAA8gC,EAAApzC,IAA4BsS,EAAA8gC,EAAAJ,OAAmB1gC,IAC/C,QAAAy4C,EAAA3X,EAAAl+B,KAA+B61C,EAAA3X,EAAAj+B,MAAkB41C,IAAA,CACjD,IAAAkb,EAAA3nE,MAAAgU,EAAAhU,EAAAu5C,MAAAkT,GAAAx4C,EAAA6gC,EAAAvgC,MAAAqb,OAAA+3C,GACA,IAAAzyC,EAAAyyC,GAEA,GADAzyC,EAAAyyC,IAAA,EACA,MAAAuB,EACAA,EAAAvB,EACAwB,EAAAl1D,MACS,CACT20D,GAAA30D,KAA+BuI,IAAAlH,OAAArB,EAAAuI,UAC/B,IAAAwS,EAAA/4B,EAAA+hB,QAAAhY,IAAA2nE,EAAA7yB,EAAAgxB,YACA7vE,EAAA+D,OAAAg1B,IAAA/a,EAAAuP,WAOA,GAHAvtB,EAAAitB,cAAAgmD,EAAAp0B,EAAAgxB,WAAA,KACA9H,EAAAhC,EAAAmN,EAAArvE,MAAAqvE,EAAArvE,MAAA2lE,QAAA3qB,EAAAj+B,MAAAi+B,EAAAl+B,KAAAuyD,EAAArvE,MAAA2lE,SACA,UAAA3qB,EAAAJ,OAAAI,EAAApzC,MACA8a,EAAAqG,KAAA,CACA,IAAAntB,EAAAwzE,EAAA,EAAAC,EAAA3sD,QAAAqG,KACAptB,EAAAmzE,GAAAO,GAAAD,EAAA,EAAAxzE,EACAO,EAAAuD,YAAA/D,EAAAq/C,EAAAgxB,WAAApwE,EAAAo/C,EAAAgxB,WAAAtpD,GAEAvmB,EAAAmlB,aAAA,IAAAsgD,EAAAzlE,EAAA6B,IAAAC,QAAAmxE,EAAAp0B,EAAAgxB,cACAntE,EAAA1C,GAEA,SAKA,SAAAioE,GAAA1oE,EAAAmD,GACA,IAAA6jC,EAAA6hC,EAAA7oE,EAAAiE,QACA,OAAA0kE,GAAA,SAAA9nE,GACA,IAAAqE,EAAArE,EAAAqE,KAEA,OAAA8hC,EAAA9hC,EAAAzC,KAAAC,KAAAkoE,YAHAjC,CAIG3oE,EAAAmD,GAMH,SAAAwlE,GAAAiL,GACA,gBAAA5zE,EAAAmD,GACA,IACAqpE,EAAA2F,EADA/4B,EAAAp5C,EAAAiC,UAEA,GAAAm3C,aAAA8sB,EAIK,CACL,GAAA9sB,EAAAg0B,YAAAlrE,KAAAk3C,EAAAi0B,UAAAnrE,IAAqD,SACrDsqE,EAAApzB,EAAAg0B,YAAAt/C,UACAqkD,EAAA/4B,EAAAg0B,YAAAlrE,QAPA,CAEA,KADAsqE,EAjsCA,SAAArgD,GACA,QAAAhtB,EAAAgtB,EAAA5N,MAA0Bpf,EAAA,EAAOA,IAAA,CACjC,IAAA6rE,EAAA7+C,EAAAjnB,KAAA/F,GAAAsD,KAAAC,KAAAkoE,UACA,YAAAI,GAAA,gBAAAA,EAAoD,OAAA7+C,EAAAjnB,KAAA/F,GAEpD,YA4rCA00E,CAAAz6B,EAAA/2C,QACsB,SACtB8vE,EAAApL,EAAA3tB,EAAA/2C,OAAAH,IAMA,MAAAsqE,EAAAloE,MAAA2lE,SAAA,GAAAuC,EAAAloE,MAAAgmE,QAAqE,SACrE,GAAAnnE,EAAA,CACA,IAAA2wE,EAAAtH,EAAAloE,WAAA0lE,EAAA8J,EAAA9J,SACA8J,EAAAxJ,QAAA,IAAkCwJ,EAAAtL,EAAAsL,EAAA,cAClCA,EAAA7J,QAAA,IAAkC6J,EAAAtL,EAAAsL,EAAA,cAElC,IADA,IAGAC,EAHAz0B,EAAAgpB,GAAAtoE,GAAAS,EAAAT,EAAAS,GACAwC,EAAA,EAAqBA,EAAAq8C,EAAAj+B,MAAAi+B,EAAAl+B,KAA4Bne,IACxCqB,EAAA0F,KAAAggE,EAAAxB,EAAAsL,EAAA,WAAA9J,KAAA/mE,IAAA+mE,EAAA/mE,IAAA,MAAA6wE,GAET,QAAAt1D,EAAA8gC,EAAApzC,IAA8BsS,EAAA8gC,EAAAJ,OAAmB1gC,IAAA,CACjD,IAAAtc,EAAAo9C,EAAA90C,IAAAohE,WAAAptD,EAAA8gC,EAAAl+B,KAAAk+B,EAAAvgC,OACAP,GAAA8gC,EAAApzC,MAA8BhK,GAAAsqE,EAAAx+C,UAC9B,QAAAipC,EAAA3X,EAAAl+B,KAAAuO,EAAA,EAA0CsnC,EAAA3X,EAAAj+B,MAAkB41C,IAAAtnC,IAC5DsnC,GAAA3X,EAAAl+B,MAAA5C,GAAA8gC,EAAApzC,KACAzL,EAAAN,OAAA4zE,EAAAtzE,EAAA+hB,QAAAhY,IAAAtI,EAAAo9C,EAAAgxB,WAAA,GAAAsD,GAAsF1uE,KAAAsnE,EAAAhuD,MAAAy4C,QAAoCjqC,cAAA1oB,EAAAqrB,KAG1HlvB,EAAAitB,cAAAykD,EAAAyB,GAA6C1uE,KAAAsnE,EAAAhuD,IAAA8gC,EAAApzC,IAAA+qD,IAAA3X,EAAAl+B,OAA+C9c,EAAA,IAC5F80C,aAAA8sB,GACSzlE,EAAAmlB,aAAA,IAAAsgD,EAAAzlE,EAAA6B,IAAAC,QAAA62C,EAAAg0B,YAAAlrE,KACT6xE,GAAAtzE,EAAA6B,IAAAC,QAAAwxE,KACA5wE,EAAA1C,GAEA,UAQA,SAAAgoE,GAAAt7D,EAAArE,GACA,gBAAA9I,EAAAmD,GACA,IAAA0kE,EAAA7nE,GAA4B,SAC5B,IAAA0xE,EAAAnJ,EAAAvoE,GACA,GAAA0xE,EAAA5jD,UAAAxpB,MAAA6I,KAAArE,EAAgD,SAChD,GAAA3F,EAAA,CACA,IAAA1C,EAAAT,EAAAS,GACAT,EAAAiC,qBAAAikE,EACSlmE,EAAAiC,UAAAusE,YAAA,SAAAtpE,EAAAhD,GACTgD,EAAAZ,MAAA6I,KAAArE,GACarI,EAAAitB,cAAAxrB,EAAA,KAAAsmE,EAAAtjE,EAAAZ,MAAA6I,EAAArE,MAGJrI,EAAAitB,cAAAgkD,EAAAxvE,IAAA,KAAAsmE,EAAAkJ,EAAA5jD,UAAAxpB,MAAA6I,EAAArE,IACT3F,EAAA1C,GAEA,UAwBA,SAAAuzE,GAAAvxE,EAAA68C,EAAA/xB,GASA,IAPA,IAAA0mD,EAAA30B,EAAA90C,IAAAmhE,aACAvqD,KAAA,EACAlV,IAAA,EACAmV,MAAA,OAAA5e,EAAA68C,EAAA90C,IAAAu5C,MAAA,EACA7E,OAAA,UAAAz8C,EAAA68C,EAAA90C,IAAAi5C,OAAA,IAGAxgD,EAAA,EAAiBA,EAAAgxE,EAAA1zE,OAA0B0C,IAAA,CAC3C,IAAAwb,EAAA6gC,EAAAvgC,MAAAqb,OAAA65C,EAAAhxE,IACA,GAAAwb,KAAAhc,OAAA8qB,EAAAqgD,YACA,SAIA,SAMA,SAAA7E,GAAAtmE,EAAAgF,GAGA,OAFAA,MAAwBysE,oBAAA,IAExBA,mBA7CA,SAAAzxE,GACA,gBAAAzC,EAAAmD,GACA,IAAA0kE,EAAA7nE,GAA4B,SAC5B,GAAAmD,EAAA,CAMA,IALA,IAAAoqB,EAAAs7C,EAAA7oE,EAAAiE,QACAq7C,EAAAgpB,GAAAtoE,GAAAS,EAAAT,EAAAS,GACAqe,EAAAwgC,EAAA90C,IAAAmhE,YAAA,UAAAlpE,EAAA,IAAAonE,EAAAvqB,EAAAl+B,KAAA,EAAAk+B,EAAAj+B,MAAAi+B,EAAA90C,IAAAi5C,QACA,OAAAhhD,EAAA,IAAAonE,EAAA,EAAAvqB,EAAApzC,IAAAozC,EAAA90C,IAAAu5C,MAAAzE,EAAAJ,QAAAI,GACA/3B,EAAAzI,EAAAtU,IAAA,SAAAtI,GAA4C,OAAAo9C,EAAAvgC,MAAAqb,OAAAl4B,KAC5Ce,EAAA,EAAqBA,EAAA6b,EAAAve,OAAkB0C,IAC9BskB,EAAAtkB,GAAAR,MAAA8qB,EAAAqgD,aACEntE,EAAAitB,cAAA4xB,EAAAgxB,WAAAxxD,EAAA7b,GAAAsqB,EAAA9O,KAAA8I,EAAAtkB,GAAAqB,OACX,MAAA7D,EAAAkD,MAAApD,OAAiC,QAAAovB,EAAA,EAAkBA,EAAA7Q,EAAAve,OAAoBovB,IAC9DlvB,EAAAitB,cAAA4xB,EAAAgxB,WAAAxxD,EAAA6Q,GAAApC,EAAAqgD,YAAArmD,EAAAoI,GAAArrB,OACTnB,EAAA1C,GAEA,UA8BK0zE,CAAA1xE,GAEL,SAAAzC,EAAAmD,GACA,IAAA0kE,EAAA7nE,GAA4B,SAC5B,GAAAmD,EAAA,CACA,IAAAoqB,EAAAs7C,EAAA7oE,EAAAiE,QACAq7C,EAAAgpB,GAAAtoE,GAAAS,EAAAT,EAAAS,GAEA2zE,EAAAJ,GAAA,MAAA10B,EAAA/xB,GACA8mD,EAAAL,GAAA,SAAA10B,EAAA/xB,GAKA+mD,GAHA,WAAA7xE,EAAA2xE,EACA,QAAA3xE,GAAA4xE,GAEA,IAEAE,EAAA,UAAA9xE,EAAA,IAAAonE,EAAA,EAAAyK,EAAA,EAAAh1B,EAAA90C,IAAAi5C,QACA,OAAAhhD,EAAA,IAAAonE,EAAAyK,EAAA,EAAAh1B,EAAA90C,IAAAu5C,MAAA,GAAAzE,EAEAk1B,EAAA,UAAA/xE,EAAA4xE,EAAA9mD,EAAA9O,KAAA8O,EAAAqgD,YACA,OAAAnrE,EAAA2xE,EAAA7mD,EAAA9O,KAAA8O,EAAAqgD,YAAArgD,EAAA9O,KAEA6gC,EAAA90C,IAAAmhE,YAAA4I,GAAAnsE,QAAA,SAAAqsE,GACA,IAAAtC,EAAAsC,EAAAn1B,EAAAgxB,WACA7xD,EAAAhe,EAAA6B,IAAA83B,OAAA+3C,GAEA1zD,GACAhe,EAAAitB,cAAAykD,EAAAqC,EAAA/1D,EAAAna,SAIAnB,EAAA1C,GAEA,UAMA,IAAAyoE,GAAAH,GAAA,OAA2CmL,oBAAA,IAI3CjL,GAAAF,GAAA,UAAiDmL,oBAAA,IAIjDlL,GAAAD,GAAA,QAA6CmL,oBAAA,IAyB7C,SAAAxM,GAAAgN,GACA,gBAAA10E,EAAAmD,GACA,IAAA0kE,EAAA7nE,GAA4B,SAC5B,IAAAye,EA1BA,SAAAizD,EAAAx4C,GACA,GAAAA,EAAA,GACA,IAAAp0B,EAAA4sE,EAAA3sE,WACA,GAAAD,EAAiB,OAAA4sE,EAAAxvE,IAAA4C,EAAAkpB,SACjB,QAAAxP,EAAAkzD,EAAAtsE,OAAA,KAAA0mE,EAAA4F,EAAA5sE,SAAgE0Z,GAAA,EAAUA,IAAA,CAC1E,IAAAytD,EAAAyF,EAAAxsE,MAAA,GAAA0E,MAAA4U,GACA,GAAAytD,EAAAhjD,WAA+B,OAAA6iD,EAAA,EAAAG,EAAAjgD,UAAAgC,SAC/B89C,GAAAG,EAAAj+C,cAEG,CACH,GAAA0jD,EAAAtsE,QAAAssE,EAAAlvE,OAAAymB,WAAA,EAAsD,OAAAyoD,EAAAxvE,IAAAwvE,EAAA5jD,UAAAE,SAEtD,IADA,IAAAjP,EAAA2yD,EAAAxsE,MAAA,GACA6qE,EAAA2B,EAAArsE,YAAA,GAAAwmE,EAAA6F,EAAAn/D,QAAoEw9D,EAAAhxD,EAAAkK,WAA0B8mD,IAAA,CAC9F,IAAA4E,EAAA51D,EAAAnV,MAAAmmE,GACA,GAAA4E,EAAA1rD,WAAiC,OAAA4iD,EAAA,EACjCA,GAAA8I,EAAA3mD,WAWA4mD,CAAArM,EAAAvoE,GAAA00E,GACA,SAAAj2D,EAAA,CACA,GAAAtb,EAAA,CACA,IAAAuuE,EAAA1xE,EAAAsC,IAAAC,QAAAkc,GACAtb,EAAAnD,EAAAS,GAAAmlB,aAAqClmB,EAAA,cAAam5C,QAAA64B,EAAA3J,EAAA2J,KAAA5rD,kBAElD,WAMA,SAAAwhD,GAAAtnE,EAAAmD,GAEA,IADA,IAAAgpB,EAAAnsB,EAAAiC,UAAA2qB,QACAztB,EAAAgtB,EAAA5N,MAA0Bpf,EAAA,EAAOA,IAAA,CAEjC,YADAgtB,EAAAjnB,KAAA/F,GACAsD,KAAAC,KAAAkoE,UAEA,OADAznE,GAAqBA,EAAAnD,EAAAS,GAAA+D,OAAA2nB,EAAArnB,OAAA3F,GAAAgtB,EAAA5Z,MAAApT,IAAA2mB,mBACrB,EAGA,SAGA,IAAAsgD,GAAA,SAAAlhE,EAAA2vE,GACA/0E,KAAAoF,OACApF,KAAA+0E,eACA/0E,KAAA+oB,IAAArN,SAAAC,cAAA,OACA3b,KAAA+oB,IAAAld,UAAA,eACA7L,KAAAif,MAAAjf,KAAA+oB,IAAAioB,YAAAt1B,SAAAC,cAAA,UACA3b,KAAAk3D,SAAAl3D,KAAAif,MAAA+xB,YAAAt1B,SAAAC,cAAA,aACA0tD,GAAAjkE,EAAApF,KAAAk3D,SAAAl3D,KAAAif,MAAA81D,GACA/0E,KAAA4xC,WAAA5xC,KAAAif,MAAA+xB,YAAAt1B,SAAAC,cAAA,WAcA,SAAA0tD,GAAAjkE,EAAA8xD,EAAAj4C,EAAA81D,EAAAC,EAAAC,GAGA,IAFA,IAAAC,EAAA,EAAAC,GAAA,EACA7kB,EAAA4G,EAAAntD,WAAA2U,EAAAtZ,EAAA2E,WACA5G,EAAA,EAAAg0D,EAAA,EAA0Bh0D,EAAAub,EAAAyK,WAAoBhmB,IAI9C,IAHA,IAAApC,EAAA2d,EAAA5U,MAAA3G,GAAAqB,MACA2lE,EAAAppE,EAAAopE,QACAD,EAAAnpE,EAAAmpE,SACAtmE,EAAA,EAAmBA,EAAAumE,EAAavmE,IAAAuzD,IAAA,CAChC,IAAAie,EAAAJ,GAAA7d,EAAA8d,EAAA/K,KAAAtmE,GACAyxE,EAAAD,IAAA,QACAF,GAAAE,GAAAL,EACAK,IAAsBD,GAAA,GACtB7kB,GAGAA,EAAA5mC,MAAAu6B,OAAAoxB,IAA8C/kB,EAAA5mC,MAAAu6B,MAAAoxB,GAC9C/kB,IAAAtmD,aAHAktD,EAAAlmB,YAAAt1B,SAAAC,cAAA,QAAA+N,MAAAu6B,MAAAoxB,EAQA,KAAA/kB,GAAA,CACA,IAAA79C,EAAA69C,EAAAtmD,YACAsmD,EAAAj1C,WAAAqxC,YAAA4D,GACAA,EAAA79C,EAGA0iE,GACAl2D,EAAAyK,MAAAu6B,MAAAixB,EAAA,KACAj2D,EAAAyK,MAAA4rD,SAAA,KAEAr2D,EAAAyK,MAAAu6B,MAAA,GACAhlC,EAAAyK,MAAA4rD,SAAAJ,EAAA,MA3CA5O,GAAA5/D,UAAAs5B,OAAA,SAAA56B,GACA,OAAAA,EAAAzC,MAAA3C,KAAAoF,KAAAzC,OACA3C,KAAAoF,OACAikE,GAAAjkE,EAAApF,KAAAk3D,SAAAl3D,KAAAif,MAAAjf,KAAA+0E,eACA,IAGAzO,GAAA5/D,UAAAshD,eAAA,SAAAutB,GACA,oBAAAA,EAAA5yE,OAAA4yE,EAAAprD,QAAAnqB,KAAAif,OAAAjf,KAAAk3D,SAAAppD,SAAAynE,EAAAprD,UAuCA,IAAAk9C,GAAA,IAAgBznE,EAAA,UAAS,uBAEzB,SAAAwnE,GAAArmE,QACA,IAAAA,UACA,IAAAy0E,EAAAz0E,EAAAy0E,iBAAoC,IAAAA,MAAA,GACpC,IAAAT,EAAAh0E,EAAAg0E,kBAAsC,IAAAA,MAAA,IACtC,IAAAU,EAAA10E,EAAA00E,UAAsB,IAAAA,MAAAnP,IACtB,IAAAoP,EAAA30E,EAAA20E,oBAkCA,YAlCoD,IAAAA,OAAA,GAEpD,IAAmB91E,EAAA,QACnB0J,IAAA+9D,GACAnnE,OACAgB,KAAA,SAAA6hC,EAAA7iC,GAGA,OAFAF,KAAA4C,KAAAnB,MAAAynD,UAAA6f,EAAA7oE,EAAAiE,QAAA8a,MAAA5R,MACA,SAAAjI,EAAAzD,GAAiC,WAAA8zE,EAAArwE,EAAA2vE,EAAApzE,IACjC,IAAAg0E,IAAA,OAEAx0E,MAAA,SAAAR,EAAAS,GACA,OAAAA,EAAAD,MAAAR,KAGAc,OACAkJ,WAAA,SAAAzK,GAEA,OADAmnE,GAAA3jE,SAAAxD,GACA01E,cAAA,GAAgDjoB,MAAA,iBAAuB,MAGvE5rD,iBACA8zE,UAAA,SAAAl0E,EAAAwI,IAmCA,SAAAxI,EAAAwI,EAAAqrE,EAAAT,EAAAW,GACA,IAAAI,EAAAzO,GAAA3jE,SAAA/B,EAAAzB,OAEA,IAAA41E,EAAA9W,SAAA,CACA,IAAA70C,EA8EA,SAAAA,GACA,KAAAA,GAAA,MAAAA,EAAA3gB,UAAA,MAAA2gB,EAAA3gB,UACK2gB,IAAAs+B,UAAA36C,SAAA,oBAAAqc,EAAA9O,WACL,OAAA8O,EAjFA4rD,CAAA5rE,EAAAggB,QAAAxL,GAAA,EACA,GAAAwL,EAAA,CACA,IAAAppB,EAAAopB,EAAAs1B,wBACAn+B,EAAAvgB,EAAAugB,KACAC,EAAAxgB,EAAAwgB,MACApX,EAAAuwD,QAAAp5C,GAAAk0D,EACS72D,EAAAq3D,GAAAr0E,EAAAwI,EAAA,QACToX,EAAApX,EAAAuwD,SAAA8a,IACS72D,EAAAq3D,GAAAr0E,EAAAwI,EAAA,UAGT,GAAAwU,GAAAm3D,EAAAF,aAAA,CACA,IAAAF,IAAA,IAAA/2D,EAAA,CACA,IAAAizD,EAAAjwE,EAAAzB,MAAAsC,IAAAC,QAAAkc,GACAM,EAAA2yD,EAAAxsE,MAAA,GAAAsF,EAAA27D,EAAA3lD,IAAAzB,GAAA9e,EAAAyxE,EAAAzxE,OAAA,GACAg3D,EAAAzsD,EAAAw8D,SAAA0K,EAAAxvE,IAAAjC,GAAAyxE,EAAA5jD,UAAAxpB,MAAA2lE,QAAA,EAEA,GAAAhT,GAAAzsD,EAAAu5C,MAAA,EACA,OAIAgyB,GAAAt0E,EAAAgd,KA7DoDu3D,CAAAv0E,EAAAwI,EAAAqrE,EAAAT,EAAAW,IACpDS,WAAA,SAAAx0E,IAiEA,SAAAA,GACA,IAAAm0E,EAAAzO,GAAA3jE,SAAA/B,EAAAzB,OACA41E,EAAAF,cAAA,IAAAE,EAAA9W,UAA+DiX,GAAAt0E,GAAA,GAnEhBy0E,CAAAz0E,IAC/Cu6D,UAAA,SAAAv6D,EAAAwI,IAqEA,SAAAxI,EAAAwI,EAAA4qE,GACA,IAAAe,EAAAzO,GAAA3jE,SAAA/B,EAAAzB,OACA,OAAA41E,EAAAF,cAAAE,EAAA9W,SAA+D,SAE/D,IAAArgD,EAAAhd,EAAAzB,MAAAsC,IAAA83B,OAAAw7C,EAAAF,cACA3xB,EAyBA,SAAAtiD,EAAA0wE,EAAAtxE,GACA,IAAAopE,EAAAppE,EAAAopE,QACAD,EAAAnpE,EAAAmpE,SAEAjmB,EAAAimB,OAAAzpE,OAAA,GACA,GAAAwjD,EAAc,OAAAA,EACd,IAAAl7B,EAAApnB,EAAAokE,SAAAsM,GAEAgE,EADAttD,EAAA3jB,KAAA4sC,WAAAjpB,EAAAzoB,QACAg2E,YAAAzjC,EAAAs3B,EACA,GAAAD,EAAiB,QAAA/mE,EAAA,EAAgBA,EAAAgnE,EAAahnE,IAAO+mE,EAAA/mE,KACrDkzE,GAAAnM,EAAA/mE,GACA0vC,KAEA,OAAAwjC,EAAAxjC,EAtCA0jC,CAAA50E,EAAAm0E,EAAAF,aAAAj3D,EAAAna,OAGA,SAAAwnC,EAAA7hC,GACA6S,OAAA6yC,oBAAA,UAAA7jB,GACAhvB,OAAA6yC,oBAAA,YAAAjxB,GACA,IAAAk3C,EAAAzO,GAAA3jE,SAAA/B,EAAAzB,OACA41E,EAAA9W,YA6DA,SAAAr9D,EAAAgd,EAAAslC,GAKA,IAJA,IAAA2tB,EAAAjwE,EAAAzB,MAAAsC,IAAAC,QAAAkc,GACAM,EAAA2yD,EAAAxsE,MAAA,GAAAsF,EAAA27D,EAAA3lD,IAAAzB,GAAA9e,EAAAyxE,EAAAzxE,OAAA,GACAg3D,EAAAzsD,EAAAw8D,SAAA0K,EAAAxvE,IAAAjC,GAAAyxE,EAAA5jD,UAAAxpB,MAAA2lE,QAAA,EACAxpE,EAAAgB,EAAAzB,MAAAS,GACA+d,EAAA,EAAmBA,EAAAhU,EAAAi5C,OAAkBjlC,IAAA,CACrC,IAAA83D,EAAA93D,EAAAhU,EAAAu5C,MAAAkT,EAEA,IAAAz4C,GAAAhU,MAAA8rE,IAAA9rE,MAAA8rE,EAAA9rE,EAAAu5C,OAAA,CACA,IAAA7hD,EAAAsI,MAAA8rE,GACAz1E,EAAAke,EAAAqb,OAAAl4B,GACAoC,EAAAzD,EAAAyD,MACAc,EAAA,GAAAd,EAAA2lE,QAAA,EAAAhT,EAAAzsD,EAAAw8D,SAAA9kE,GACA,IAAAoC,EAAA0lE,UAAA1lE,EAAA0lE,SAAA5kE,IAAA2+C,EAAA,CACA,IAAAimB,EAAA1lE,EAAA0lE,SAAA1lE,EAAA0lE,SAAA1pE,QAAAi2E,GAAAjyE,EAAA2lE,SACAD,EAAA5kE,GAAA2+C,EACAtjD,EAAAitB,cAAAztB,EAAAiC,EAAA,KAAAsmE,EAAAlkE,EAAA,WAAA0lE,MAEAvpE,EAAAa,YAAsBG,EAAA0B,SAAA1C,GA9EtB+1E,CAAA/0E,EAAAm0E,EAAAF,aAAAe,GAAAb,EAAA9W,SAAA70D,EAAA4qE,IACApzE,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAA2C,QAAA+jE,IAAkDuP,YAAA,SAGlD,SAAAh4C,EAAAz0B,GACA,IAAAA,EAAA0sE,MAAuB,OAAA7qC,EAAA7hC,GACvB,IAAA2rE,EAAAzO,GAAA3jE,SAAA/B,EAAAzB,OACA42E,EAAAH,GAAAb,EAAA9W,SAAA70D,EAAA4qE,IA0EA,SAAApzE,EAAAgd,EAAAslC,EAAA8wB,GACA,IAAAnD,EAAAjwE,EAAAzB,MAAAsC,IAAAC,QAAAkc,GACAM,EAAA2yD,EAAAxsE,MAAA,GAAAjF,EAAAyxE,EAAAzxE,OAAA,GACAg3D,EAAAkP,EAAA3lD,IAAAzB,GAAAioD,SAAA0K,EAAAxvE,IAAAjC,GAAAyxE,EAAA5jD,UAAAxpB,MAAA2lE,QAAA,EACAphD,EAAApnB,EAAAokE,SAAA6L,EAAAzxE,OAAA,IAAAiF,KACA,cAAA2jB,EAAAvf,UAAmCuf,IAAA1N,WACnCguD,GAAApqD,EAAA8J,EAAAhf,WAAAgf,EAAAgsD,EAAA5d,EAAAlT,GA/EA8yB,CAAAp1E,EAAAm0E,EAAAF,aAAAkB,EAAA/B,GAfApzE,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAA2C,QAAA+jE,IAA8CuP,aAAcv2B,OAAAl2C,EAAAuwD,QAAAsc,WAAA/yB,MAkB5DjnC,OAAAC,iBAAA,UAAA+uB,GACAhvB,OAAAC,iBAAA,YAAA2hB,GACAz0B,EAAAwxD,iBA/FoDsb,CAAAt1E,EAAAwI,EAAA4qE,KAGpD1U,YAAA,SAAAngE,GACA,IAAA41E,EAAAzO,GAAA3jE,SAAAxD,GACA,GAAA41E,EAAAF,cAAA,EAA4C,OA6K5C,SAAA11E,EAAAye,GAKA,IAJA,IAAA0hD,KACAuR,EAAA1xE,EAAAsC,IAAAC,QAAAkc,GACAM,EAAA2yD,EAAAxsE,MAAA,GAAAsF,EAAA27D,EAAA3lD,IAAAzB,GAAA9e,EAAAyxE,EAAAzxE,OAAA,GACAg3D,EAAAzsD,EAAAw8D,SAAA0K,EAAAxvE,IAAAjC,GAAAyxE,EAAA5jD,UAAAxpB,MAAA2lE,QACAzrD,EAAA,EAAmBA,EAAAhU,EAAAi5C,OAAkBjlC,IAAA,CACrC,IAAApZ,EAAA6xD,EAAAz4C,EAAAhU,EAAAu5C,MAAA,EAIA,KAAAkT,GAAAzsD,EAAAu5C,OAAAv5C,MAAApF,IAAAoF,MAAApF,EAAA,IACA,GAAAoZ,GAAAhU,MAAApF,EAAA,IAAAoF,MAAApF,EAAA,EAAAoF,EAAAu5C,QAAA,CACA,IAAAouB,EAAA3nE,MAAApF,GACAlD,EAAAjC,EAAAkyE,EAAApzD,EAAAqb,OAAA+3C,GAAAnkD,SAAA,EACAnF,EAAArN,SAAAC,cAAA,OACAoN,EAAAld,UAAA,uBACAw0D,EAAAn2D,KAAuBu/D,EAAA,EAAUjhB,OAAApmD,EAAA2mB,KAGjC,OAAS0gD,EAAA,EAAa/zD,OAAAxV,EAAAsC,IAAA69D,GAhMsB6W,CAAAh3E,EAAA41E,EAAAF,eAG5C1sB,gBAMA,IAAAysB,GAAA,SAAAC,EAAA5W,GACAh/D,KAAA41E,eACA51E,KAAAg/D,YAyGA,SAAAgX,GAAAr0E,EAAAwI,EAAA8hB,GACA,IAAAuP,EAAA75B,EAAAkgD,aAAgCvgC,KAAAnX,EAAAuwD,QAAAtuD,IAAAjC,EAAAwwD,UAChC,IAAAn/B,EAAe,SACf,IAAAp5B,EAAAo5B,EAAAp5B,IACAwvE,EAAA3K,EAAAtlE,EAAAzB,MAAAsC,IAAAC,QAAAL,IACA,IAAAwvE,EAAe,SACf,YAAA3lD,EAAwB,OAAA2lD,EAAAxvE,IACxB,IAAAsI,EAAA27D,EAAA3lD,IAAAkxD,EAAAxsE,MAAA,IAAAjF,EAAAyxE,EAAAzxE,OAAA,GACAmF,EAAAoF,MAAAs0B,QAAA4yC,EAAAxvE,IAAAjC,GACA,OAAAmF,EAAAoF,EAAAu5C,OAAA,KAAA9jD,EAAAuK,MAAApF,EAAA,GAGA,SAAAqxE,GAAA3X,EAAA70D,EAAA4qE,GACA,IAAAz0E,EAAA6J,EAAAuwD,QAAAsE,EAAA3e,OACA,OAAAr9C,KAAAC,IAAA8xE,EAAA/V,EAAAgY,WAAA12E,GAGA,SAAA21E,GAAAt0E,EAAAqH,GACArH,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAA2C,QAAA+jE,IAA8C8P,UAAAnuE,KAiC9C,SAAAytE,GAAArzD,GAEA,IADA,IAAA/Z,KACAlG,EAAA,EAAiBA,EAAAigB,EAAOjgB,IAAOkG,EAAAa,KAAA,GAC/B,OAAAb,EAuCA,SAAAy/D,GAAA/nE,QACA,IAAAA,UACA,IAAAq2E,EAAAr2E,EAAAq2E,wBAEA,YAF4D,IAAAA,OAAA,GAE5D,IAAax3E,EAAA,QACb0J,MAKApJ,OACAgB,KAAA,WAA6B,aAC7BC,MAAA,SAAAR,EAAAi7B,GACA,IAAAgH,EAAAjiC,EAAAW,QAAAgI,GACA,SAAAs5B,EAA0B,UAAAA,EAAA,KAAAA,EAC1B,SAAAhH,IAAAj7B,EAAAa,WAA4C,OAAAo6B,EAC5C,IAAA76B,EAAAJ,EAAA+hB,QAAA0R,UAAAwH,GACA9H,EAAA/yB,EAAA+yB,QACA1xB,EAAArB,EAAAqB,IACA,OAAA0xB,EAAA,KAAA1xB,IAIAX,OACA4+D,YAAAmP,EAEAztE,iBACAm6D,UAAA4V,GAGAuF,uBAAA,SAAA11E,GACA,SAAA2H,EAAA5F,SAAA/B,EAAAzB,OAA+C,OAAAyB,EAAAzB,MAAAiC,WAG/Ck5D,oBAEAyV,gBAEAjJ,eAGAtsB,kBAAA,SAAAxY,EAAAyY,EAAAt7C,GACA,OAz2CA,SAAAA,EAAAS,EAAAy2E,GACA,IAAAE,EAAApM,EAAA5xB,GAAA34C,GAAAT,GAAAiC,UAAAK,GAAA7B,GAAAT,GAAAsC,IACA,GAAA82C,aAAqB15C,EAAA,gBAAasrE,EAAA5xB,EAAAl0C,KAAAzC,KAAAC,KAAAkoE,YAClC,WAAAI,GAAA,eAAAA,EACAoM,EAAAlR,EAAA1wD,OAAAlT,EAAA82C,EAAA13C,WACK,UAAAspE,EAAA,CACL,IAAA0G,EAAApvE,EAAAC,QAAA62C,EAAA13C,KAAA,GACA01E,EAAAlR,EAAA6H,aAAA2D,UACK,IAAAwF,EAAA,CACL,IAAA1sE,EAAA27D,EAAA3lD,IAAA44B,EAAAl0C,MAAAjF,EAAAm5C,EAAA13C,KAAA,EACAqyE,EAAA9zE,EAAAuK,QAAAu5C,MAAAv5C,EAAAi5C,OAAA,GACA2zB,EAAAlR,EAAA1wD,OAAAlT,EAAArC,EAAA,EAAA8zE,SAEG36B,aAAyB15C,EAAA,eApD5B,SAAAmB,GACA,IAAAwB,EAAAxB,EAAAwB,MACAiqB,EAAAzrB,EAAAyrB,IAEA,GAAAjqB,EAAAH,KAAAoqB,EAAApqB,KAAAG,EAAAH,IAAAG,EAAAH,IAAA,EAA0D,SAE1D,IADA,IAAAm1E,EAAAh1E,EAAAH,IAAAo1E,EAAAhrD,EAAApqB,IAAAqc,EAAAlc,EAAAkc,MACQA,GAAA,KACHlc,EAAAkQ,MAAAgM,EAAA,GAAAlc,EAAAnC,IAAAqe,IADeA,IAAA84D,KAEpB,QAAAl4E,EAAAmtB,EAAA/N,MAAyBpf,GAAA,KACpBmtB,EAAAxnB,OAAA3F,EAAA,GAAAmtB,EAAArsB,MAAAd,IAD4BA,IAAAm4E,KAEjC,OAAAD,GAAAC,GAAA,YAAAhhE,KAAAjU,EAAA6C,KAAAqZ,GAAA9b,KAAAC,KAAAkoE,WA0CyC2M,CAAAn+B,GACzCg+B,EAAgB13E,EAAA,cAAa8V,OAAAlT,EAAA82C,EAAA13C,MAC1B03C,aAAyB15C,EAAA,eAzC5B,SAAAmB,GAOA,IANA,IAGA22E,EACAC,EAJAp1E,EAAAxB,EAAAwB,MACAiqB,EAAAzrB,EAAAyrB,IAKArpB,EAAAZ,EAAAkc,MAA2Btb,EAAA,EAAOA,IAAA,CAClC,IAAAiC,EAAA7C,EAAA6C,KAAAjC,GACA,YAAAiC,EAAAzC,KAAAC,KAAAkoE,WAAA,gBAAA1lE,EAAAzC,KAAAC,KAAAkoE,UAAA,CACA4M,EAAAtyE,EACA,OAIA,QAAAyqB,EAAArD,EAAA/N,MAA2BoR,EAAA,EAASA,IAAA,CACpC,IAAA+nD,EAAAprD,EAAApnB,KAAAyqB,GACA,YAAA+nD,EAAAj1E,KAAAC,KAAAkoE,WAAA,gBAAA8M,EAAAj1E,KAAAC,KAAAkoE,UAAA,CACA6M,EAAAC,EACA,OAIA,OAAAF,IAAAC,GAAA,IAAAnrD,EAAAtpB,aAkByC20E,CAAAv+B,KACzCg+B,EAAgB13E,EAAA,cAAa8V,OAAAlT,EAAA82C,EAAA/2C,MAAApC,QAAAm5C,EAAA/2C,MAAAnC,QAI7B,OAFAk3E,IACK32E,MAAAT,EAAAS,KAAAmlB,aAAAwxD,GACL32E,EAq1CAm3E,CAAA53E,EAAAwnE,GAAAxnE,EAAAs7C,GAAA47B,MA7OAzB,GAAAjvE,UAAAvF,MAAA,SAAAR,GACA,IAAAT,EAAAF,KAAA+3E,EAAAp3E,EAAAW,QAAA+lE,IACA,GAAA0Q,GAAA,MAAAA,EAAAZ,UACK,WAAAxB,GAAAoC,EAAAZ,UAAA,MACL,GAAAY,QAAAnvE,IAAAmvE,EAAAnB,YACK,WAAAjB,GAAAz1E,EAAA01E,aAAAmC,EAAAnB,aACL,GAAA12E,EAAA01E,cAAA,GAAAj1E,EAAAa,WAAA,CACA,IAAAw2E,EAAAr3E,EAAA+hB,QAAAhY,IAAAxK,EAAA01E,cAAA,GACAzN,EAAAxnE,EAAA6B,IAAAC,QAAAu1E,MAAgDA,EAAA,MAChD93E,EAAA,IAAAy1E,GAAAqC,EAAA93E,EAAA8+D,UAEA,OAAA9+D,0BCp4DC,WAGD,IAAAisC,EA4BA,SAAAja,EAAA+lD,GAsBA,IArBA,IAKA3jE,EAEA4jE,EACA/yC,EAEAgzC,EAVAC,EAAA,EACA5oE,KAAAhP,MAAAoG,KAAAypB,WACAltB,EAAA,EACAigB,EAAA60D,EAAAx3E,OACA4I,EAAA,GAEA7B,GAAA,EAGA6wE,GAAA,EAEAC,EAAA,WAA8B,OAAA9oE,EAAA4oE,MAC9BG,EAAA,WAEA,IADA,IAAAC,EAAA,GACA,KAAAhiE,KAAAyhE,EAAA90E,KACAq1E,GAAAP,EAAA90E,KACAmR,EAAA2jE,EAAA90E,GAEA,OAAAq1E,EAAA/3E,OAAA,EAAAg4E,SAAAD,GAAA,MAGUr1E,EAAAigB,IAAOjgB,EAEjB,GADAmR,EAAA2jE,EAAA90E,GACAqE,EAeA,OAdAA,GAAA,EACA,KAAA8M,GACA+jE,GAAA,EACA/jE,EAAA2jE,IAAA90E,IAEA,KAAAmR,GAAA,KAAA2jE,EAAA90E,EAAA,IACAk1E,GAAA,EAEA/jE,EAAA2jE,EADA90E,GAAA,IAIAk1E,GAAA,EAEAF,EAAAI,IACAjkE,GACA,QACAjL,GAAAovE,SAAAH,IAAA,IAAA3xE,SAAA,GACA,MACA,QAEA,iBADAuxE,EAAAI,MACAJ,aAAA1mE,OACAnI,GAAA6uE,EAEA7uE,GAAAmI,OAAAwqD,aAAAyc,SAAAP,EAAA,KACA,MACA,QACA7uE,GAAAovE,SAAAH,IAAA,IACA,MACA,QACAnzC,EAAA3zB,OAAAknE,WAAAJ,KAAAK,QAAAR,GAAA,IACA9uE,GAAAgvE,EAAAlzC,IAAAl8B,QAAA,SACA,MACA,QACAI,GAAAmD,KAAAC,UAAA6rE,KACA,MACA,QACAjvE,GAAA,IAAAovE,SAAAH,IAAA,IAAA3xE,SAAA,GACA,MACA,QACA0C,GAAAivE,IACA,MACA,QACAjvE,GAAA,KAAAovE,SAAAH,IAAA,IAAA3xE,SAAA,IACA,MACA,QACA0C,GAAA,KAAAovE,SAAAH,IAAA,IAAA3xE,SAAA,IAAAiyE,cACA,MACA,QACAvvE,GAAAiL,MAGO,MAAAA,EACP9M,GAAA,EAEA6B,GAAAiL,EAGA,OAAAjL,GA1GA8iC,EAAArtC,EAAAC,QAAAmzB,GASAA,SACAia,EAAA0sC,SAUA,SAAAZ,EAAAa,GACA,OAAA5mD,EAAA/wB,MAAA,MAAA82E,GAAAvoE,OAAAopE,KATA,oBAAAt/D,SAAA,mBAAAA,QAAAqG,MACAssB,EAAA4sC,OAGA,WACAv/D,QAAAqG,IAAAqS,EAAA/wB,MAAA,KAAAkvB,cAxBC,yBCXD,MAAA2oD,SACAA,EAAAC,KACAA,EAAAlzE,MACAA,GACI3G,EAAQ,QAKZ+b,GACA47B,QAAA,OACAl0C,KAAA,oBACAs0C,OAAA,6FACA54B,GAAA,yDACAC,QAAA,iDACAU,WAAA,0CACAvF,KAAA,oEACAqB,KAAA,oZAUAy8B,IAAA,mFACAL,QAAA4hC,EACA/5D,MAAA+5D,EACAthC,SAAA,sCAGAwhC,WAAA,4EACAj6E,KAAA,UAGAk6E,OAAA,iCACAC,OAAA,gEACAj+D,EAAAs8B,IAAAwhC,EAAA99D,EAAAs8B,KACAxuC,QAAA,QAAAkS,EAAAg+D,QACAlwE,QAAA,QAAAkS,EAAAi+D,QACAC,WAEAl+D,EAAAk8B,OAAA,sBACAl8B,EAAArB,KAAA,+CACAqB,EAAArB,KAAAm/D,EAAA99D,EAAArB,KAAA,MACA7Q,QAAA,QAAAkS,EAAAk8B,QACAgiC,WAEAl+D,EAAAxB,KAAAs/D,EAAA99D,EAAAxB,MACA1Q,QAAA,QAAAkS,EAAAk8B,QACApuC,QAAA,wEACAA,QAAA,gBAAAkS,EAAAs8B,IAAAnqC,OAAA,KACA+rE,WAEAl+D,EAAAm+D,KAAA,gWAMAn+D,EAAAo+D,SAAA,yBACAp+D,EAAAH,KAAAi+D,EAAA99D,EAAAH,KAAA,KACA/R,QAAA,UAAAkS,EAAAo+D,UACAtwE,QAAA,MAAAkS,EAAAm+D,MACArwE,QAAA,wFACAowE,WAEAl+D,EAAAwE,UAAAs5D,EAAA99D,EAAA+9D,YACAjwE,QAAA,KAAAkS,EAAAoD,IACAtV,QAAA,2BACAA,QAAA,gBACAA,QAAA,wBACAA,QAAA,2DACAA,QAAA,iCACAA,QAAA,6DACAA,QAAA,MAAAkS,EAAAm+D,MACAD,WAEAl+D,EAAA+D,WAAA+5D,EAAA99D,EAAA+D,YACAjW,QAAA,YAAAkS,EAAAwE,WACA05D,WAMAl+D,EAAAg7B,OAAApwC,KAAuBoV,GAMvBA,EAAAk7B,IAAAtwC,KAAoBoV,EAAAg7B,QACpBiB,QAAA,iIAGAn4B,MAAA,4HAKA9D,EAAAk7B,IAAAe,QAAA6hC,EAAA99D,EAAAk7B,IAAAe,SACAnuC,QAAA,KAAAkS,EAAAoD,IACAtV,QAAA,2BACAA,QAAA,wBACAA,QAAA,qBACAA,QAAA,2DACAA,QAAA,iCACAA,QAAA,6DACAA,QAAA,MAAAkS,EAAAm+D,MACAD,WAEAl+D,EAAAk7B,IAAAp3B,MAAAg6D,EAAA99D,EAAAk7B,IAAAp3B,OACAhW,QAAA,KAAAkS,EAAAoD,IACAtV,QAAA,2BACAA,QAAA,wBACAA,QAAA,qBACAA,QAAA,2DACAA,QAAA,iCACAA,QAAA,6DACAA,QAAA,MAAAkS,EAAAm+D,MACAD,WAMAl+D,EAAAi7B,SAAArwC,KAAyBoV,EAAAg7B,QACzBn7B,KAAAi+D,EACA,8IAGAhwE,QAAA,UAAAkS,EAAAo+D,UACAtwE,QAAA,4KAIAowE,WACA5hC,IAAA,oEACAj5B,QAAA,6CACA24B,OAAA6hC,EACAr5D,UAAAs5D,EAAA99D,EAAAg7B,OAAA+iC,YACAjwE,QAAA,KAAAkS,EAAAoD,IACAtV,QAAA,6BACAA,QAAA,WAAAkS,EAAAu8B,UACAzuC,QAAA,wBACAA,QAAA,cACAA,QAAA,YACAA,QAAA,YACAowE,aAMA,MAAAr7D,GACA/X,OAAA,8CACAuzE,SAAA,sCACAlvD,IAAA0uD,EACAzvE,IAAA,2JAMAkhB,KAAA,gDACAgvD,QAAA,wDACAC,OAAA,gEACAC,OAAA,gHACAC,GAAA,oOACA/2E,KAAA,sCACAg3E,GAAA,wBACAlpD,IAAAqoD,EACA/5E,KAAA,6EAKA66E,aAAA,sCACA97D,EAAA47D,GAAAX,EAAAj7D,EAAA47D,IAAA3wE,QAAA,eAAA+U,EAAA87D,cAAAT,WAEAr7D,EAAA+7D,SAAA,8CAEA/7D,EAAAg8D,QAAA,+BACAh8D,EAAAi8D,OAAA,+IACAj8D,EAAAw7D,SAAAP,EAAAj7D,EAAAw7D,UACAvwE,QAAA,SAAA+U,EAAAg8D,SACA/wE,QAAA,QAAA+U,EAAAi8D,QACAZ,WAEAr7D,EAAAk8D,WAAA,8EAEAl8D,EAAAzU,IAAA0vE,EAAAj7D,EAAAzU,KACAN,QAAA,UAAAkS,EAAAo+D,UACAtwE,QAAA,YAAA+U,EAAAk8D,YACAb,WAEAr7D,EAAAm7D,OAAA,4CACAn7D,EAAAm8D,MAAA,2CACAn8D,EAAAo7D,OAAA,8DAEAp7D,EAAAyM,KAAAwuD,EAAAj7D,EAAAyM,MACAxhB,QAAA,QAAA+U,EAAAm7D,QACAlwE,QAAA,OAAA+U,EAAAm8D,OACAlxE,QAAA,QAAA+U,EAAAo7D,QACAC,WAEAr7D,EAAAy7D,QAAAR,EAAAj7D,EAAAy7D,SACAxwE,QAAA,QAAA+U,EAAAm7D,QACAE,WAMAr7D,EAAAm4B,OAAApwC,KAAwBiY,GAMxBA,EAAAo4B,SAAArwC,KAA0BiY,EAAAm4B,QAC1BwjC,OAAA,iEACAC,GAAA,2DACAnvD,KAAAwuD,EAAA,2BACAhwE,QAAA,QAAA+U,EAAAm7D,QACAE,WACAI,QAAAR,EAAA,iCACAhwE,QAAA,QAAA+U,EAAAm7D,QACAE,aAOAr7D,EAAAq4B,IAAAtwC,KAAqBiY,EAAAm4B,QACrBlwC,OAAAgzE,EAAAj7D,EAAA/X,QAAAgD,QAAA,aAAAowE,WACAe,gBAAA,4EACA9vD,IAAA,mEACA+vD,WAAA,yEACA1pD,IAAA,0BACA1xB,KAAA,sNAGA+e,EAAAq4B,IAAA/rB,IAAA2uD,EAAAj7D,EAAAq4B,IAAA/rB,IAAA,KACArhB,QAAA,QAAA+U,EAAAq4B,IAAA+jC,iBACAf,WAKAr7D,EAAAs8D,OAAAv0E,KAAwBiY,EAAAq4B,KACxBwjC,GAAAZ,EAAAj7D,EAAA67D,IAAA5wE,QAAA,OAAmC,KAAAowE,WACnCp6E,KAAAg6E,EAAAj7D,EAAAq4B,IAAAp3C,MACAgK,QAAA,wBACAA,QAAA,UAAoB,KACpBowE,aAGAv6E,EAAAC,SACAoc,QACA6C,6GC5KA,IA5FO,IAAAya,GACP8hD,EAAA,YACAC,EAAA,MACAC,GAAA,QACAC,GAAA,UACAC,GAAA,QACAC,GAAA,QACAC,GAAA,UACAC,GAAA,MACAC,GAAA,WACAC,GAAA,SACAC,GAAA,IACAC,GAAA,SACAC,GAAA,WACAC,GAAA,MACAC,GAAA,OACAC,GAAA,YACAC,GAAA,UACAC,GAAA,aACAC,GAAA,YACAC,GAAA,cACAC,GAAA,SACAC,GAAA,SACAC,GAAA,IACAC,GAAA,IACAC,GAAA,OACAC,GAAA,OACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,UACAC,IAAA,aACAC,IAAA,QACAC,IAAA,QACAC,IAAA,UACAC,IAAA,UACAC,IAAA,MACAC,IAAA,MACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KAGO30C,GACP40C,GAAA,IACAC,GAAA,IACAC,GAAA,IACAC,GAAA,IACAC,GAAA,IACAC,GAAA,IACAC,GAAA,IACAC,GAAA,IACAC,GAAA,IACAC,GAAA,IACAxC,GAAA,IACAC,GAAA,IACAiB,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KAGA3gC,EAAA,oBAAAtrB,WAAA,gBAAAtuB,KAAAsuB,UAAA6qB,WACAe,EAAA,oBAAA5rB,WAAA,iBAAAlb,KAAAkb,UAAA6rB,QACAT,EAAA,oBAAAprB,WAAA,aAAAlb,KAAAkb,UAAA6qB,WACAG,EAAA,oBAAAhrB,WAAA,MAAAlb,KAAAkb,UAAAC,UACAgrB,EAAA,oBAAAjrB,WAAA,gDAA6EtuB,KAAAsuB,UAAA6qB,WAC7E+hC,EAAAthC,IAAAN,IAAAM,EAAA,QAAAF,GAAAJ,EAGAv5C,EAAA,EAAeA,EAAA,GAAQA,IAAAs1B,EAAA,GAAAt1B,GAAAs1B,EAAA,GAAAt1B,GAAAqO,OAAArO,GAGvB,IAAAA,EAAA,EAAeA,GAAA,GAASA,IAAAs1B,EAAAt1B,EAAA,SAAAA,EAGxB,IAAAA,EAAA,GAAgBA,GAAA,GAASA,IACzBs1B,EAAAt1B,GAAAqO,OAAAwqD,aAAA74D,EAAA,IACA6lC,EAAA7lC,GAAAqO,OAAAwqD,aAAA74D,GAIA,QAAAN,KAAA41B,EAAAuQ,EAAAxgC,eAAA3F,KAAAmmC,EAAAnmC,GAAA41B,EAAA51B,oBCnGI07E,EAAG,oBAAA7sD,WAAA,MAAAlb,KAAAkb,UAAAC,UAEP,SAAA6sD,EAAAnxE,GACA,IAEAoxE,EAAAC,EAAA11C,EAAAgR,EAFAnH,EAAAxlC,EAAA+C,MAAA,UAAA/G,EAAAwpC,IAAApyC,OAAA,GACA,SAAA4I,IAA0BA,EAAA,KAE1B,QAAAlG,EAAA,EAAiBA,EAAA0vC,EAAApyC,OAAA,EAAsB0C,IAAA,CACvC,IAAAw7E,EAAA9rC,EAAA1vC,GACA,qBAAAqT,KAAAmoE,GAAsC3kC,GAAA,OACtC,eAAAxjC,KAAAmoE,GAAqCF,GAAA,OACrC,yBAAAjoE,KAAAmoE,GAA+CD,GAAA,OAC/C,iBAAAloE,KAAAmoE,GAAuC31C,GAAA,MACvC,cAAAxyB,KAAAmoE,GACU,UAAAl4E,MAAA,+BAAAk4E,GAD6BJ,EAAMvkC,GAAA,EAAsB0kC,GAAA,GAOnE,OAJAD,IAAYp1E,EAAA,OAAAA,GACZq1E,IAAar1E,EAAA,QAAAA,GACb2wC,IAAa3wC,EAAA,QAAAA,GACb2/B,IAAc3/B,EAAA,SAAAA,GACdA,EASA,SAAAu1E,EAAAvxE,EAAAlD,EAAA6+B,GAKA,OAJA7+B,EAAA6nD,SAAqB3kD,EAAA,OAAAA,GACrBlD,EAAA2nD,UAAsBzkD,EAAA,QAAAA,GACtBlD,EAAA4nD,UAAsB1kD,EAAA,QAAAA,IACtB,IAAA27B,GAAA7+B,EAAA8nD,WAA0C5kD,EAAA,SAAAA,GAC1CA,EAiCA,SAAAwxE,EAAAC,GACA,WAAar+C,EAAA,QAAQh/B,OAAQqvE,cAAAiO,EAAAD,MAO7B,SAAAC,EAAAD,GACA,IAAAp0E,EArDA,SAAAA,GACA,IAAA8jB,EAAA1pB,OAAA4Q,OAAA,MACA,QAAAnN,KAAAmC,EAAyB8jB,EAAAgwD,EAAAj2E,IAAAmC,EAAAnC,GACzB,OAAAimB,EAkDA8oD,CAAAwH,GACA,gBAAAn9E,EAAAwI,GACA,IAAsB60E,EAAtB3xE,EDwBO,SAAAlD,GAGP,IAEAkD,IAFAixE,IAAAn0E,EAAA2nD,SAAA3nD,EAAA6nD,QAAA7nD,EAAA4nD,WACAzU,GAAAX,IAAAxyC,EAAA8nD,UAAA9nD,EAAAb,KAAA,GAAAa,EAAAb,IAAA7I,SACA0J,EAAAb,MACAa,EAAA8nD,SAAAjpB,EAAAvQ,GAAAtuB,EAAA40C,UACA50C,EAAAb,KAAA,eASA,MAPA,OAAA+D,MAAA,UACA,OAAAA,MAAA,UAEA,QAAAA,MAAA,aACA,MAAAA,MAAA,WACA,SAAAA,MAAA,cACA,QAAAA,MAAA,aACAA,ECxCe4xE,CAAO90E,GAAA+0E,EAAA,GAAA7xE,EAAA5M,QAAA,KAAA4M,EACtB8xE,EAAAz0E,EAAAk0E,EAAAvxE,EAAAlD,GAAA+0E,IACA,GAAAC,KAAAx9E,EAAAzB,MAAAyB,EAAA0B,SAAA1B,GAA4D,SAC5D,GAAAu9E,IAAA/0E,EAAA8nD,UAAA9nD,EAAA6nD,QAAA7nD,EAAA4nD,SAAA1kD,EAAAk/B,WAAA,UACAyyC,EAAoBvmD,EAAItuB,EAAA40C,WAAAigC,GAAA3xE,EAAA,CAKxB,IAAA+xE,EAAA10E,EAAAk0E,EAAAI,EAAA70E,GAAA,IACA,GAAAi1E,KAAAz9E,EAAAzB,MAAAyB,EAAA0B,SAAA1B,GAAkE,cAC7D,GAAAu9E,GAAA/0E,EAAA8nD,SAAA,CAGL,IAAAotB,EAAA30E,EAAAk0E,EAAAvxE,EAAAlD,GAAA,IACA,GAAAk1E,KAAA19E,EAAAzB,MAAAyB,EAAA0B,SAAA1B,GAAoE,SAEpE,iCCnGA,MAAAgE,EAAiBvG,EAAQ,SACzBgH,SAAOA,GAAchH,EAAQ,SAC7B4e,OAAOA,GAAY5e,EAAQ,SAC3BkgF,mBACAA,EAAAr5E,OACAA,GACI7G,EAAQ,QAKZN,EAAAC,cAAA8G,EACA7G,YAAAif,EAAAtW,GAQA,GAPA3H,KAAA2H,WAAAvB,EACApG,KAAAie,QACAje,KAAAgB,MAAAgd,EAAAm4B,OACAn2C,KAAA2H,QAAAmW,SAAA9d,KAAA2H,QAAAmW,UAAA,IAAAnY,EACA3F,KAAA8d,SAAA9d,KAAA2H,QAAAmW,SACA9d,KAAA8d,SAAAnW,QAAA3H,KAAA2H,SAEA3H,KAAAie,MACA,UAAAxX,MAAA,6CAGAzG,KAAA2H,QAAAyuC,SACAp2C,KAAAgB,MAAAgd,EAAAo4B,SACKp2C,KAAA2H,QAAA0uC,MACLr2C,KAAA2H,QAAA2yE,OACAt6E,KAAAgB,MAAAgd,EAAAs8D,OAEAt6E,KAAAgB,MAAAgd,EAAAq4B,KAQAr1C,mBACA,OAAAgd,EAMAhf,cAAAsH,EAAA2X,EAAAtW,GAEA,OADA,IAAA9B,EAAAoY,EAAAtW,GACAK,OAAA1B,GAMAtH,OAAAsH,GACA,IACAmkB,EACAxrB,EACAC,EACAC,EACAm3C,EACAipC,EANAn4E,EAAA,GAQA,KAAAd,GAEA,GAAAgwC,EAAAt2C,KAAAgB,MAAAiF,OAAA7C,KAAAkD,GACAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACA2G,GAAAnB,EAAAqwC,EAAA,SAKA,GAAAA,EAAAt2C,KAAAgB,MAAAuI,IAAAnG,KAAAkD,IACAtG,KAAAw/E,QAAA,QAAAhpE,KAAA8/B,EAAA,IACAt2C,KAAAw/E,QAAA,EACSx/E,KAAAw/E,QAAA,UAAAhpE,KAAA8/B,EAAA,MACTt2C,KAAAw/E,QAAA,IAEAx/E,KAAAy/E,YAAA,iCAAAjpE,KAAA8/B,EAAA,IACAt2C,KAAAy/E,YAAA,EACSz/E,KAAAy/E,YAAA,mCAAAjpE,KAAA8/B,EAAA,MACTt2C,KAAAy/E,YAAA,GAGAn5E,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACA2G,GAAApH,KAAA8d,SAAA9C,KAAAhb,KAAA2H,QAAAouC,SACA/1C,KAAA2H,QAAA6vC,UACAx3C,KAAA2H,QAAA6vC,UAAAlB,EAAA,IACArwC,EAAAqwC,EAAA,IACAA,EAAA,SAKA,GAAAA,EAAAt2C,KAAAgB,MAAAypB,KAAArnB,KAAAkD,GAAA,CACA,MAAAo5E,EAAAJ,EAAAhpC,EAAA,SACA,GAAAopC,GAAA,GACA,MACAC,GADA,IAAArpC,EAAA,GAAAtX,QAAA,UACAsX,EAAA,GAAA71C,OAAAi/E,EACAppC,EAAA,GAAAA,EAAA,GAAAtrC,UAAA,EAAA00E,GACAppC,EAAA,GAAAA,EAAA,GAAAtrC,UAAA,EAAA20E,GAAAxjE,OACAm6B,EAAA,MAEAhwC,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACAT,KAAAw/E,QAAA,EACAtgF,EAAAo3C,EAAA,GACAt2C,KAAA2H,QAAAyuC,UACA3rB,EAAA,gCAAArnB,KAAAlE,KAGAA,EAAAurB,EAAA,GACAtrB,EAAAsrB,EAAA,IAEAtrB,EAAA,GAGAA,EAAAm3C,EAAA,GAAAA,EAAA,GAAA91C,MAAA,SAEAtB,IAAAid,OAAAlT,QAAA,sBACA7B,GAAApH,KAAA4/E,WAAAtpC,GACAp3C,KAAA2G,EAAAg6E,QAAA3gF,GACAC,MAAA0G,EAAAg6E,QAAA1gF,KAEAa,KAAAw/E,QAAA,OAKA,IAAAlpC,EAAAt2C,KAAAgB,MAAAy4E,QAAAr2E,KAAAkD,MACAgwC,EAAAt2C,KAAAgB,MAAA04E,OAAAt2E,KAAAkD,IADA,CAKA,GAHAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACAgqB,GAAA6rB,EAAA,IAAAA,EAAA,IAAArtC,QAAA,cACAwhB,EAAAzqB,KAAAie,MAAAwM,EAAAhhB,kBACAghB,EAAAvrB,KAAA,CACAkI,GAAAkvC,EAAA,GAAAiB,OAAA,GACAjxC,EAAAgwC,EAAA,GAAAtrC,UAAA,GAAA1E,EACA,SAEAtG,KAAAw/E,QAAA,EACAp4E,GAAApH,KAAA4/E,WAAAtpC,EAAA7rB,GACAzqB,KAAAw/E,QAAA,OAKA,GAAAlpC,EAAAt2C,KAAAgB,MAAA24E,OAAAv2E,KAAAkD,GACAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACA2G,GAAApH,KAAA8d,SAAA67D,OAAA35E,KAAAgI,OAAAsuC,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,UAKA,GAAAA,EAAAt2C,KAAAgB,MAAA44E,GAAAx2E,KAAAkD,GACAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACA2G,GAAApH,KAAA8d,SAAA87D,GAAA55E,KAAAgI,OAAAsuC,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,UAKA,GAAAA,EAAAt2C,KAAAgB,MAAA6B,KAAAO,KAAAkD,GACAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACA2G,GAAApH,KAAA8d,SAAAgiE,SAAA75E,EAAAqwC,EAAA,GAAAn6B,QAAA,SAKA,GAAAm6B,EAAAt2C,KAAAgB,MAAA64E,GAAAz2E,KAAAkD,GACAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACA2G,GAAApH,KAAA8d,SAAA+7D,UAKA,GAAAvjC,EAAAt2C,KAAAgB,MAAA2vB,IAAAvtB,KAAAkD,GACAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACA2G,GAAApH,KAAA8d,SAAA6S,IAAA3wB,KAAAgI,OAAAsuC,EAAA,UAKA,GAAAA,EAAAt2C,KAAAgB,MAAAw4E,SAAAp2E,KAAAkD,GACAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QAGAvB,EAFA,MAAAo3C,EAAA,GAEA,WADAr3C,EAAAgH,EAAAjG,KAAA+/E,OAAAzpC,EAAA,MAGAr3C,EAAAgH,EAAAqwC,EAAA,IAGAlvC,GAAApH,KAAA8d,SAAA2M,KAAAvrB,EAAA,KAAAD,QAKA,GAAAe,KAAAw/E,UAAAlpC,EAAAt2C,KAAAgB,MAAAspB,IAAAlnB,KAAAkD,KAuBA,GAAAgwC,EAAAt2C,KAAAgB,MAAA/B,KAAAmE,KAAAkD,GACAA,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACAT,KAAAy/E,WACAr4E,GAAApH,KAAA8d,SAAA7e,KAAAe,KAAA2H,QAAAouC,SAAA/1C,KAAA2H,QAAA6vC,UAAAx3C,KAAA2H,QAAA6vC,UAAAlB,EAAA,IAAArwC,EAAAqwC,EAAA,IAAAA,EAAA,IAEAlvC,GAAApH,KAAA8d,SAAA7e,KAAAgH,EAAAjG,KAAAggF,YAAA1pC,EAAA,WAKA,GAAAhwC,EACA,UAAAG,MAAA,0BAAAH,EAAAimC,WAAA,QAlCA,CACA,SAAA+J,EAAA,GAEAp3C,EAAA,WADAD,EAAAgH,EAAAqwC,EAAA,SAES,CAET,GACAipC,EAAAjpC,EAAA,GACAA,EAAA,GAAAt2C,KAAAgB,MAAAq5E,WAAAj3E,KAAAkzC,EAAA,aACWipC,IAAAjpC,EAAA,IACXr3C,EAAAgH,EAAAqwC,EAAA,IAEAp3C,EADA,SAAAo3C,EAAA,GACA,UAAAr3C,EAEAA,EAGAqH,IAAA0E,UAAAsrC,EAAA,GAAA71C,QACA2G,GAAApH,KAAA8d,SAAA2M,KAAAvrB,EAAA,KAAAD,GAoBA,OAAAmI,EAGApI,eAAAC,GACA,OAAAA,IAAAgK,QAAApD,EAAA7E,MAAA+4E,SAAA,MAAA96E,EAMAD,WAAAs3C,EAAA7rB,GACA,MAAAvrB,EAAAurB,EAAAvrB,KACAC,EAAAsrB,EAAAtrB,MAAA8G,EAAAwkB,EAAAtrB,OAAA,KAEA,YAAAm3C,EAAA,GAAAiB,OAAA,GACAv3C,KAAA8d,SAAA2M,KAAAvrB,EAAAC,EAAAa,KAAAgI,OAAAsuC,EAAA,KACAt2C,KAAA8d,SAAAmiE,MAAA/gF,EAAAC,EAAA8G,EAAAqwC,EAAA,KAMAt3C,YAAAC,GACA,OAAAe,KAAA2H,QAAAq4E,YACA/gF,EAEAgK,QAAA,YAEAA,QAAA,WAEAA,QAAA,0BAAgC,OAEhCA,QAAA,UAEAA,QAAA,+BAAgC,OAEhCA,QAAA,UAEAA,QAAA,SAAqB,KAfrBhK,EAqBAD,OAAAC,GACA,IAAAe,KAAA2H,QAAAo4E,OAAA,OAAA9gF,EACA,MAAA03C,EAAA13C,EAAAwB,OACA,IAEAy/E,EAFA94E,EAAA,GACAjE,EAAA,EAGA,KAAUA,EAAAwzC,EAAOxzC,IACjB+8E,EAAAjhF,EAAAstC,WAAAppC,GACAH,KAAAm9E,SAAA,KACAD,EAAA,IAAAA,EAAAv5E,SAAA,KAEAS,GAAA,KAAA84E,EAAA,IAGA,OAAA94E,uCChSAtC,OAAAs7E,eAAArhF,EAAA,cAA8CiK,OAAA,IAE9C,IAAAq3E,EAAuBjhF,EAAQ,QAC/BkhF,EAAuBlhF,EAAQ,QAC/BmhF,EAAwBnhF,EAAQ,QA8BhCohF,EAAA,SAAAn8E,EAAA6iB,GACA,gBAAAvmB,GACAyhC,MAAAC,QAAAh+B,KACAA,OAEA,QAAAlB,EAAA,EAAA6O,EAAA3N,EAAA5D,OAA4C0C,EAAA6O,EAAW7O,IAAA,CACvD,IAAAT,EAAA+9E,EAAAp8E,EAAAlB,GAAAs9E,CAAA9/E,EAAAwB,WACA,GAAAO,EAAA,CACA,IAAAg+E,EAAAC,EAAAj+E,EAAAN,IAAA8kB,EAAAy5D,CAAAhgF,GACA,GAAA+/E,IAAA//E,EACA,OAAA+/E,GAIA,OAAA//E,IA+BAigF,EAAA,SAAA15D,GACA,gBAAAvmB,GACA,GAAAkgF,EAAAlgF,EAAAwB,WAAA,CACA,IAAA2+E,EAAAngF,EAAAwB,UACAI,EAAAu+E,EAAAv+E,MACAiqB,EAAAs0D,EAAAt0D,IAEA,GAAAtF,aAAAo5D,EAAA5/C,UAAAn+B,EAAAG,OAAAirB,WAAAprB,EAAA+C,QAAA/C,EAAAgD,aAAA2hB,IAAA3kB,EAAAG,OAAA2C,eAAA9C,EAAA+C,QAAA/C,EAAAgD,aAAA2hB,EAAAvkB,MACA,OAAAo+E,EAAApgF,EAAAuD,YAAA3B,EAAAH,IAAAoqB,EAAApqB,IAAA8kB,GAEApB,aAAA,IAAAu6D,EAAAvoC,cAAAn3C,EAAA6B,IAAAC,QAAAF,EAAAH,QAGA,OAAAzB,IAcAqgF,EAAA,SAAAjwE,GACA,IAAAqoB,EAAA/I,UAAA5vB,OAAA,QAAAmI,IAAAynB,UAAA,GAAAA,UAAA,KACA,gBAAA1vB,GACA,IAAAsgF,EAAAZ,EAAApoC,UAAAtpB,SAAAhuB,EAAA6B,IAAAC,QAAAsO,GAAAqoB,GAAA,GACA,OAAA6nD,EACAtgF,EAAAmlB,aAAAm7D,GAEAtgF,IAIAugF,EAAA,SAAA97E,GACA,OAAAA,EAAAzC,MAAAyC,EAAAzC,KAAAC,KAAAy2C,YAMAvzB,EAAA,SAAA1gB,EAAAhD,EAAAzB,GACA,OALA,SAAAyE,GACA,OAAA87E,EAAA97E,MAAAzC,KAAA+0B,OAIAypD,CAAA/7E,GACAzE,EAAAmlB,aAAA,IAAAu6D,EAAAvoC,cAAAn3C,EAAA6B,IAAAC,QAAAL,KAEA4+E,EAAA5+E,EAAA4+E,CAAArgF,IAeAygF,EAAA,SAAAl6D,EAAAnW,EAAAswE,GACA,gBAAA1gF,GACA,IAAA2gF,EAAA,iBAAAvwE,EACAxO,EAAA5B,EAAAwB,UAAAI,MAEAg/E,EAAAD,EAAA3gF,EAAA6B,IAAAC,QAAAsO,GAAA8vE,EAAAlgF,EAAAwB,WAAAxB,EAAA6B,IAAAC,QAAAF,EAAAH,IAAA,GAAAG,EACAG,EAAA6+E,EAAA7+E,OAIA,GAAAm+E,EAAAlgF,EAAAwB,YAAAk/E,GACA1gF,KACAA,EAAAigF,EAAA15D,EAAA05D,CAAAjgF,IAEA,OAAAA,EAKA,GAAA6gF,EAAA9+E,IACA/B,KACAA,EAAA6/E,EAAA99E,EAAAC,KAAAukB,EAAAs5D,CAAA7/E,IACA,CACA,IAAAyB,EAAA8+E,EAAAh6D,GACAq6D,EAAAv8E,OAAAu8E,EAAA9iE,OAAA8iE,EAAAn/E,IACA,OAAA0jB,EAAAoB,EAAA9kB,EAAAzB,GAKA,GAAA8gF,EAAAF,EAAAr6D,GAAA,CACAvmB,EAAAN,OAAAkhF,EAAAn/E,IAAA8kB,GACA,IAAAw6D,EAAAJ,EAAAC,EAAAn/E,IAAA8+E,EAAAh6D,GACAvmB,EAAAwB,UAAA2qB,QAAA1qB,IAAA,EAAAzB,EAAAwB,UAAA2qB,QAAA1qB,IACA,OAAA2+E,EAAAj7D,EAAAoB,EAAAw6D,EAAA/gF,IAIA,QAAAwC,EAAAo+E,EAAA9iE,MAAkCtb,EAAA,EAAOA,IAAA,CACzC,IAAAw+E,EAAAJ,EAAA9uE,MAAAtP,GACAkpB,EAAA1rB,EAAA6B,IAAAC,QAAAk/E,GACA,GAAAF,EAAAp1D,EAAAnF,GAEA,OADAvmB,EAAAN,OAAAshF,EAAAz6D,GACA65D,EAAAj7D,EAAAoB,EAAAy6D,EAAAhhF,IAGA,OAAAA,IAmEAkgF,EAAA,SAAA1+E,GACA,OAAAA,aAAAk+E,EAAAvoC,eAKA8pC,EAAA,SAAAv9E,EAAAe,GACA,OAAAg9B,MAAAC,QAAAh+B,MAAA26B,QAAA55B,EAAAzC,OAAA,GAAAyC,EAAAzC,OAAA0B,GAKA08E,EAAA,SAAApgF,GACA,OAAAmE,OAAAkL,OAAAlL,OAAA4Q,OAAA/U,MAAA05C,QAAAV,KAAAC,QAOA+mC,EAAA,SAAA5vE,EAAAmW,GACA,gBAAAvmB,GACA,IAAAyE,EAAAzE,EAAA6B,IAAA83B,OAAAvpB,GACAsb,EAAA1rB,EAAA6B,IAAAC,QAAAsO,GACA,GAAA4c,EAAAtB,EAAAnF,GAAA,CAEA,IAAA/mB,GADAQ,IAAAuD,YAAA6M,IAAA3L,EAAA8oB,SAAAhH,IACA/kB,UAAAI,MAAAH,IAAA,EAKA,OAHAzB,EAAAqgF,EAAAh+E,KAAAC,IAAA9C,EAAA,MAAA6gF,CAAArgF,GAEAA,EAAAqgF,EAAArgF,EAAAwB,UAAAI,MAAApC,QAAA6gF,CAAArgF,GACAogF,EAAApgF,GAEA,OAAAA,IAMAgtB,EAAA,SAAAtB,EAAAnF,GACA,IAAA9hB,EAAAinB,EAAAjnB,KAAAinB,EAAA5N,OACA,OAAArZ,KAAAzC,KAAAg2B,aAAAzR,aAAAo5D,EAAA5/C,SAAAxZ,EAAAo5D,EAAA5/C,SAAA9+B,KAAAslB,KAMA26D,EAAA,SAAA9wE,GACA,gBAAApQ,GACA,IAAAyE,EAAAzE,EAAA6B,IAAA83B,OAAAvpB,GACA,OAAAgwE,EAAApgF,EAAA+D,OAAAqM,IAAA3L,EAAA8oB,aAMA66C,EAAA,SAAA5kE,GACA,GAAAA,EAAAwhC,OAAAojC,eACA,OAAA5kE,EAAAwhC,OAAAojC,eAEA,IAAA+Y,KAQA,OAPAh9E,OAAAwO,KAAAnP,EAAAsjB,OAAAnf,QAAA,SAAA3F,GACA,IAAA0B,EAAAF,EAAAsjB,MAAA9kB,GACA0B,EAAAzB,KAAAkoE,YACAgX,EAAAz9E,EAAAzB,KAAAkoE,WAAAzmE,KAGAF,EAAAwhC,OAAAojC,eAAA+Y,EACAA,GAaAL,EAAA,SAAAp1D,EAAAnF,GACA,IAAA5hB,EAAA+mB,EAAA/mB,QAEA,OAAA4hB,aAAAo5D,EAAA5/C,SACArU,EAAA3pB,OAAAirB,WAAAroB,IAAA4hB,GACGA,aAAAo5D,EAAAt6C,MACH3Z,EAAA3pB,OAAA2C,eAAAC,IAAA4hB,EAAAvkB,OAOA6+E,EAAA,SAAAp8E,GACA,OAAAA,GAAA,cAAAA,EAAAzC,KAAA0K,MAAA,IAAAjI,EAAA8oB,UAgBA6zD,EAAA,SAAAC,GACA,IAAA14D,EAAA+G,UAAA5vB,OAAA,QAAAmI,IAAAynB,UAAA,GAAAA,UAAA,QAEA,OAAA/G,EACA04D,EAAAx3C,cAAA,KAAAlhB,GAGA04D,EAAA90D,iBAKA+0D,EAAA,SAAAziC,GACA,gBAAAr9C,GAMA,IALA,IAAAuI,EAAA61E,EAAAla,SAAA3lD,IAAAve,EAAAmrE,YAAAloE,MAAA,IACAjF,EAAAgC,EAAAmrE,YAAAntE,OAAA,GACA6e,EAAAtU,EAAAmhE,YAAArsB,GACA0iC,EAAAx3E,EAAAmhE,YAAAnhE,EAAA0gE,YAAAjpE,EAAAmrE,YAAAlrE,IAAAjC,EAAAgC,EAAAorE,UAAAnrE,IAAAjC,IAEAgD,EAAA,EAAA6O,EAAAgN,EAAAve,OAAyC0C,EAAA6O,EAAW7O,IACpD,QAAA++E,EAAAljD,QAAAhgB,EAAA7b,IACA,SAIA,WA0BAg/E,EAAA,SAAAx+D,GACA,OAAAA,EAAA,GAAAjZ,IAAA,SAAAq4B,EAAA5/B,GACA,OAAAwgB,EAAAjZ,IAAA,SAAA03E,GACA,OAAAA,EAAAj/E,QA+BAk/E,EAAA,SAAAC,GAGA,IAFA,IAAA53E,EAAA61E,EAAAla,SAAA3lD,IAAA4hE,GACAlU,KACAmU,EAAA,EAAwBA,EAAA73E,EAAAi5C,OAAuB4+B,IAAA,CAI/C,IAHA,IAAAC,KACA5iD,KAEA6iD,EAAA,EAA0BA,EAAA/3E,EAAAu5C,MAAsBw+B,IAAA,CAChD,IAAApQ,EAAA3nE,MAAA63E,EAAA73E,EAAAu5C,MAAAw+B,GACA9jE,EAAA2jE,EAAAhoD,OAAA+3C,GACA7yB,EAAA90C,EAAA+8D,SAAA4K,GACAzyC,EAAAyyC,IAAA7yB,EAAApzC,MAAAm2E,EACAC,EAAAt4E,KAAA,OAGA01B,EAAAyyC,IAAA,EAEAmQ,EAAAt4E,KAAAyU,IAGAyvD,EAAAlkE,KAAAs4E,GAGA,OAAApU,GA6BAsU,EAAA,SAAAJ,EAAAK,GAGA,IAFA,IAAAC,KACAl4E,EAAA61E,EAAAla,SAAA3lD,IAAA4hE,GACAC,EAAA,EAAwBA,EAAA73E,EAAAi5C,OAAuB4+B,IAAA,CAI/C,IAHA,IAAA7jE,EAAA4jE,EAAAx4E,MAAAy4E,GACAC,KAEAC,EAAA,EAA0BA,EAAA/3E,EAAAu5C,MAAsBw+B,IAChD,GAAAE,EAAAJ,GAAAE,GAAA,CAGA,IAAApQ,EAAA3nE,MAAA63E,EAAA73E,EAAAu5C,MAAAw+B,GAEA9jE,EAAAgkE,EAAAJ,GAAAE,GAEAI,EADAP,EAAAhoD,OAAA+3C,GACA1vE,KAAA6nC,cAAA1lC,OAAAkL,UAA+D2O,EAAAna,OAAAma,EAAAuI,QAAAvI,EAAA1a,OAC/Du+E,EAAAt4E,KAAA24E,GAGAD,EAAA14E,KAAAwU,EAAA/b,KAAA6nC,cAAA9rB,EAAAla,MAAAg+E,EAAA9jE,EAAAza,QAKA,OAFAq+E,EAAA3/E,KAAA6nC,cAAA83C,EAAA99E,MAAAo+E,EAAAN,EAAAr+E,QAsBA6+E,EAAA,SAAA1U,EAAA2U,EAAAC,EAAAC,GACA,IAAArO,EAAAmO,EAAA,GAAAC,EAAA,QAEAE,EAAA9U,EAAAljE,OAAA63E,EAAA,GAAAA,EAAAtiF,QACA0iF,EAAAD,EAAAziF,OAAA,SACA0pB,OAAA,EAWA,OARAA,GADA,IAAA84D,GAAA,IAAArO,EACAoO,EAAA,KACG,IAAAC,IAAA,IAAArO,EACHoO,IAAAviF,OAAA,GAAA0iF,EAAA,GAEA,IAAAvO,EAAAoO,EAAA,GAAAA,IAAAviF,OAAA,GAAA0iF,EAGA/U,EAAAljE,OAAA/J,MAAAitE,GAAAjkD,EAAA,GAAAza,OAAAwzE,IACA9U,GAGAgV,EAAA,SAAAC,EAAAC,EAAAC,EAAA5gF,GACA,IACA6gF,EAAA,kDAAA7gF,EAAA,IAAA0gF,EAAA,OAAAC,EAAA,8DAEA,QAHAD,EAAAC,GAAA,MAIA,QAAAC,EAAA/iF,MAAA,EAAA+iF,EAAA9iF,OAAA,GAAAu+B,QAAAskD,GACA,UAAA78E,MAAA+8E,QAGA,QAAAD,EAAA/iF,MAAA,GAAAw+B,QAAAskD,GACA,UAAA78E,MAAA+8E,GAIA,UAUAC,EAAA,SAAAljB,GACA,gBAAAmjB,GACA,IAAAnhF,EAAAmhF,EAAAnhF,MACA,OAAAohF,EAAAphF,EAAAg+D,KAWAojB,EAAA,SAAAt3D,EAAAk0C,GACA,QAAAp9D,EAAAkpB,EAAA5N,MAA0Btb,EAAA,EAAOA,IAAA,CACjC,IAAAiC,EAAAinB,EAAAjnB,KAAAjC,GACA,GAAAo9D,EAAAn7D,GACA,OACAhD,IAAAe,EAAA,EAAAkpB,EAAArnB,OAAA7B,GAAA,EACAhD,MAAAksB,EAAAlsB,MAAAgD,GACAsb,MAAAtb,EACAiC,UAcAw+E,EAAA,SAAArjB,EAAAwF,GACA,gBAAA5jE,GACA,IAAAO,EAAA+gF,EAAAljB,EAAAkjB,CAAAthF,GACA,GAAAO,EACA,OAAAmhF,EAAAnhF,EAAAN,IAAA2jE,KAaA+d,EAAA,SAAAvjB,GACA,gBAAAp+D,GACA,QAAAshF,EAAAljB,EAAAkjB,CAAAthF,KAUAs+E,EAAA,SAAAp8E,GACA,gBAAAlC,GACA,OAAAshF,EAAA,SAAAr+E,GACA,OAAAw8E,EAAAv9E,EAAAe,IADAq+E,CAEKthF,KA6EL4hF,EAAA,SAAA5hF,GACA,IAAA8C,EAAA9C,EAAAI,MAAA0C,WAEA++E,EAAA3D,EAAApoC,UAAAtpB,SAAAxsB,EAAAI,OAAA,GACA,GAAAyhF,GAAA/+E,EAAA,CAEA,IAAAvC,EAAA+9E,EAAAx7E,EAAAtC,KAAA89E,CAAAuD,GACA,OAAAthF,EACAA,EAAAN,IAEA4hF,EAAAzhF,MAAAH,MAWAyhF,EAAA,SAAA9yE,EAAAg1D,GACA,IAAAh9C,EAAAg9C,EAAAh1D,GACA3L,EAAA2jB,EAAA3jB,KAAA4sC,WAAAjpB,EAAAzoB,QAEA,OAAAyoB,EAAA3jB,KAAAf,WAAA2hC,KAAAi+C,UACAl7D,EAAA3jB,KAAAiW,WAGAjW,KAAAf,WAAA2hC,KAAAi+C,UAIA7+E,EAHA2jB,EAAA3jB,MAYAgc,EAAA,SAAAhc,GACA,IAAA8+E,IAAA7zD,UAAA5vB,OAAA,QAAAmI,IAAAynB,UAAA,KAAAA,UAAA,GAEA,IAAAjrB,EACA,UAAAqB,MAAA,4BAEA,IAAA4C,KAOA,OANAjE,EAAAw7B,YAAA,SAAA92B,EAAA1H,GAEA,GADAiH,EAAAa,MAAiB9E,KAAA0E,EAAA1H,SACjB8hF,EACA,WAGA76E,GASA86E,EAAA,SAAA/+E,EAAAm7D,EAAA2jB,GACA,IAAA9+E,EACA,UAAAqB,MAAA,4BACG,IAAA85D,EACH,UAAA95D,MAAA,iCAEA,OAAA2a,EAAAhc,EAAA8+E,GAAAtpE,OAAA,SAAA9Q,GACA,OAAAy2D,EAAAz2D,EAAA1E,SA0DAg/E,EAAA,SAAAh/E,EAAAf,EAAA6/E,GACA,OAAAC,EAAA/+E,EAAA,SAAA0E,GACA,OAAAA,EAAAnH,OAAA0B,GACG6/E,IAmCH,IAAAG,EAAA,SAAAliF,GACA,OAAAshF,EAAA,SAAAr+E,GACA,OAAAA,EAAAzC,KAAAC,KAAAkoE,WAAA,UAAA1lE,EAAAzC,KAAAC,KAAAkoE,WADA2Y,CAEGthF,IAWHmiF,EAAA,SAAAniF,GACA,OAAAA,aAAAo+E,EAAAna,eAoEAme,EAAA,SAAApiF,GACA,GAAAmiF,EAAAniF,GAAA,CACA,IAAAuI,EAAA61E,EAAAla,SAAA3lD,IAAAve,EAAAmrE,YAAAloE,MAAA,IACA,OAAA68E,GACA3gE,KAAA,EACAC,MAAA7W,EAAAu5C,MACA73C,IAAA,EACAgzC,OAAA10C,EAAAi5C,QAJAs+B,CAKK9/E,GAGL,UASAqiF,EAAA,SAAAC,GACA,gBAAAtiF,GACA,IAAA8c,EAAAolE,EAAAliF,GACA,GAAA8c,EAAA,CACA,IAAAvU,EAAA61E,EAAAla,SAAA3lD,IAAAzB,EAAA7Z,MAEA,OADAg9B,MAAAC,QAAAoiD,KAAAriD,MAAAxgC,MAAA6iF,KACAn8D,OAAA,SAAAo8D,EAAAp/E,GACA,GAAAA,GAAA,GAAAA,GAAAoF,EAAAu5C,MAAA,GACA,IAAAjlC,EAAAtU,EAAAmhE,aACAvqD,KAAAhc,EACAic,MAAAjc,EAAA,EACA8G,IAAA,EACAgzC,OAAA10C,EAAAi5C,SAEA,OAAA+gC,EAAAh1E,OAAAsP,EAAAtU,IAAA,SAAAqmD,GACA,IAAA3rD,EAAA6Z,EAAA7Z,KAAAk1B,OAAAy2B,GACA3uD,EAAA2uD,EAAA9xC,EAAA9e,MACA,OAAoBiC,MAAAjC,MAAAiC,EAAA,EAAAgD,oBAcpBu/E,EAAA,SAAApC,GACA,gBAAApgF,GACA,IAAA8c,EAAAolE,EAAAliF,GACA,GAAA8c,EAAA,CACA,IAAAvU,EAAA61E,EAAAla,SAAA3lD,IAAAzB,EAAA7Z,MAEA,OADAg9B,MAAAC,QAAAkgD,KAAAngD,MAAAxgC,MAAA2gF,KACAj6D,OAAA,SAAAo8D,EAAAp/E,GACA,GAAAA,GAAA,GAAAA,GAAAoF,EAAAi5C,OAAA,GACA,IAAA3kC,EAAAtU,EAAAmhE,aACAvqD,KAAA,EACAC,MAAA7W,EAAAu5C,MACA73C,IAAA9G,EACA85C,OAAA95C,EAAA,IAEA,OAAAo/E,EAAAh1E,OAAAsP,EAAAtU,IAAA,SAAAqmD,GACA,IAAA3rD,EAAA6Z,EAAA7Z,KAAAk1B,OAAAy2B,GACA3uD,EAAA2uD,EAAA9xC,EAAA9e,MACA,OAAoBiC,MAAAjC,MAAAiC,EAAA,EAAAgD,oBAgCpBw/E,EAAA,SAAAjiF,GACA,gBAAA2C,EAAAg6B,GACA,gBAAA3+B,GACA,IAAAse,EAAAolE,EAAA1jF,EAAAwB,WACA6rE,EAAA,QAAArrE,EACA,GAAAsc,EAAA,CACA,IAAAvU,EAAA61E,EAAAla,SAAA3lD,IAAAzB,EAAA7Z,MAGA,GAAAE,GAAA,GAAAA,GAAA0oE,EAAAtjE,EAAAi5C,OAAAj5C,EAAAu5C,OAAA,CACA,IAAA3iC,EAAA0sD,EAAA,EAAA1oE,EACA8G,EAAA4hE,EAAA1oE,EAAA,EACAic,EAAAysD,EAAAtjE,EAAAu5C,MAAA3+C,EAAA,EACA85C,EAAA4uB,EAAA1oE,EAAA,EAAAoF,EAAAi5C,OAEA,GAAArkB,EAAA,CACA,IAAA3gB,EAAAkmE,EAAAlkF,EAAAwB,UAAAI,OACA,IAAAoc,EACA,OAAAhe,EAGA,IAAAmkF,EAAAp6E,EAAA+8D,SAAA9oD,EAAAvc,IAAA6c,EAAA9e,OACA6tE,GACA5hE,EAAApJ,KAAAyd,IAAArU,EAAA04E,EAAA14E,KACAgzC,EAAAp8C,KAAAC,IAAAm8C,EAAA0lC,EAAA1lC,UAEA99B,EAAAte,KAAAyd,IAAAa,EAAAwjE,EAAAxjE,MACAC,EAAAve,KAAAC,IAAAse,EAAAujE,EAAAvjE,QAIA,IAAAwjE,EAAAr6E,EAAAmhE,aACAvqD,OACAlV,MACAmV,MAAAysD,EAAAzsD,EAAAD,EAAA,EACA89B,OAAA4uB,EAAA5hE,EAAA,EAAAgzC,IAGA4lC,EAAA5lC,EAAAhzC,GAAA,EAAA24E,EAAAr6E,EAAAmhE,aACAvqD,KAAA0sD,EAAA1sD,EAAAC,EAAA,EACAnV,IAAA4hE,EAAA5uB,EAAA,EAAAhzC,EACAmV,QACA69B,WAGA1Q,EAAAzvB,EAAA9e,MAAA4kF,EAAA,GACAzsC,EAAAr5B,EAAA9e,MAAA6kF,IAAAvkF,OAAA,GACAosB,EAAAlsB,EAAA6B,IAAAC,QAAAisC,GACA5hB,EAAAnsB,EAAA6B,IAAAC,QAAA61C,GAEA,OAAAyoC,EAAApgF,EAAAmlB,aAAA,IAAAy6D,EAAAna,cAAAt5C,EAAAD,MAGA,OAAAlsB,KAcAskF,EAAAL,EAAA,UAWAM,EAAAN,EAAA,OAmcAO,EAAA,SAAA5C,GACA,gBAAA5hF,GACA,IAAAse,EAAAolE,EAAA1jF,EAAAwB,WACA,GAAA8c,EAAA,CACA,IAAAvU,EAAA61E,EAAAla,SAAA3lD,IAAAzB,EAAA7Z,MAEA,GAAAm9E,GAAA,GAAAA,GAAA73E,EAAAi5C,OAAA,CAKA,IAJA,IAAA2+B,EAAArjE,EAAA7Z,KACA4jE,EAAAD,EAAAuZ,EAAA3/E,KAAAwB,QAEA+uE,EAAAj0D,EAAA9e,MACAgD,EAAA,EAAuBA,EAAAo/E,EAAA,EAAkBp/E,IACzC+vE,GAAAoP,EAAAx4E,MAAA3G,GAAA+qB,SAGA,IAAAk3D,EAAA9C,EAAAx4E,MAAAy4E,GAEAvjE,KACAotD,EAAA,EAWA,GAVAgZ,EAAA98E,QAAA,SAAAqW,GAGA,IAAAA,EAAAna,MAAAgmE,UACA4B,GAAAztD,EAAAna,MAAA2lE,QACAnrD,EAAA9U,KAAA8+D,EAAArqD,EAAAhc,KAAAC,KAAAkoE,WAAA59C,cAAAvO,EAAAna,MAAAma,EAAA1a,WAKAmoE,EAAA1hE,EAAAu5C,MAAA,CAYA,IAXA,IAAAohC,KAEAC,EAAA,SAAAC,GACA,IAAAC,EAAAC,EAAAF,EAAA,SAAA5mE,EAAAhe,GACA,IAAA6pE,EAAA7rD,EAAAvZ,KAAAZ,MAAAgmE,QAEA,OAAAA,EAAA,GADA+a,EAAA/a,EACA+X,GAHAkD,CAIa9kF,GACb0kF,EAAAn7E,KAAA/I,MAAAkkF,EAtvBA,SAAAK,GAAkC,GAAAtjD,MAAAC,QAAAqjD,GAAA,CAA0B,QAAAviF,EAAA,EAAAwiF,EAAAvjD,MAAAsjD,EAAAjlF,QAA0C0C,EAAAuiF,EAAAjlF,OAAgB0C,IAAOwiF,EAAAxiF,GAAAuiF,EAAAviF,GAAoB,OAAAwiF,EAAsB,OAAAvjD,MAAAxgC,KAAA8jF,GAsvBvKE,CAAAJ,KAGAD,EAAAhD,EAAiCgD,GAAA,EAASA,IAC1CD,EAAAC,GAGAF,EAAA5kF,QACA4kF,EAAA/8E,QAAA,SAAAqW,GACAhe,EAAA+pE,EAAA/rD,GACA6rD,QAAA7rD,EAAAvZ,KAAAZ,MAAAgmE,QAAA,GADAE,CAEe/pE,KAKf,OAAAygF,EAAApY,EAAAtqD,IAAAhJ,OAAA0vE,EAAA5gF,MAAAwa,GAAAk0D,EAAAkO,CAAAzgF,IAGA,OAAAA,IAYAklF,EAAA,SAAApB,GACA,gBAAA9jF,GACA,IAAAse,EAAAolE,EAAA1jF,EAAAwB,WACA,GAAA8c,EAAA,CACA,IAAAvU,EAAA61E,EAAAla,SAAA3lD,IAAAzB,EAAA7Z,MACA,OAAAq/E,GAAA,IAAA/5E,EAAAu5C,MACA,OAAA6hC,EAAAnlF,GACO,GAAA8jF,GAAA,GAAAA,GAAA/5E,EAAAu5C,MAMP,OALAs8B,EAAAlY,aAAA1nE,GACA+J,MACA8lE,WAAAvxD,EAAA9e,MACA8e,QAAA7Z,MACSq/E,GACT1D,EAAApgF,GAGA,OAAAA,IAYAolF,EAAA,SAAAxD,GACA,gBAAA5hF,GACA,IAAAse,EAAAolE,EAAA1jF,EAAAwB,WACA,GAAA8c,EAAA,CACA,IAAAvU,EAAA61E,EAAAla,SAAA3lD,IAAAzB,EAAA7Z,MACA,OAAAm9E,GAAA,IAAA73E,EAAAi5C,OACA,OAAAmiC,EAAAnlF,GACO,GAAA4hF,GAAA,GAAAA,GAAA73E,EAAAi5C,OAMP,OALA48B,EAAAjY,UAAA3nE,GACA+J,MACA8lE,WAAAvxD,EAAA9e,MACA8e,QAAA7Z,MACSm9E,GACTxB,EAAApgF,GAGA,OAAAA,IAYAmlF,EAAA,SAAAnlF,GAGA,IAFA,IAAA4B,EAAA5B,EAAAwB,UAAAI,MAEAkc,EAAAlc,EAAAkc,MAA+BA,EAAA,EAAWA,IAAA,CAE1C,aADAlc,EAAA6C,KAAAqZ,GACA9b,KAAAC,KAAAkoE,UACA,OAAAiW,EAAApgF,EAAA+D,OAAAnC,EAAAyC,OAAAyZ,GAAAlc,EAAAkQ,MAAAgM,KAGA,OAAA9d,GA2LA+pE,EAAA,SAAA/rD,EAAAna,GACA,gBAAA7D,GACA,OAAAge,GACAhe,EAAAitB,cAAAjP,EAAAvc,IAAA,KAAA0C,OAAAkL,UAAuD2O,EAAAvZ,KAAAZ,UACvDu8E,EAAApgF,IAEAA,IAmDAkkF,EAAA,SAAAx4D,GAIA,OAAAs3D,EAAAt3D,EAHA,SAAAjnB,GACA,OAAAA,EAAAzC,KAAAC,KAAAkoE,WAAA,QAAAt0D,KAAApR,EAAAzC,KAAAC,KAAAkoE,cAaAkb,EAAA,SAAA35D,GACA,IAAA1N,EAAAkmE,EAAAx4D,GACA,GAAA1N,EAAA,CACA,IAAAM,EApnDA,SAAAoN,GAIA,OAAAs3D,EAAAt3D,EAHA,SAAAjnB,GACA,OAAAA,EAAAzC,KAAAC,KAAAkoE,WAAA,SAAAt0D,KAAApR,EAAAzC,KAAAC,KAAAkoE,aAknDAmb,CAAA55D,GACA3hB,EAAA61E,EAAAla,SAAA3lD,IAAAzB,EAAA7Z,MACAitE,EAAA1zD,EAAAvc,IAAA6c,EAAA9e,MACA,OAAAuK,EAAA0gE,YAAAiH,OAIAoT,EAAA,SAAAlD,EAAAhiB,GACA,gBAAA5/D,GACA,IAAA6kF,KACAxmE,EAAA2lE,EAAApC,EAAAoC,CAAAhkF,EAAAwB,WACA,GAAA6c,EACA,QAAApb,EAAAob,EAAAve,OAAA,EAAoCmD,GAAA,EAAQA,IAC5C28D,EAAAvhD,EAAApb,GAAAjD,IACA6kF,EAAAt7E,KAAA8U,EAAApb,IAKA,OAAA4hF,IAUAU,GAAA,SAAAzB,GACA,gBAAA9jF,GAqBA,IApBA,IAAAk3B,EAAA4sD,EACA3sD,EAAA2sD,EAIA0B,EAAA,SAAAhjF,GACA,IAAA6b,EAAAwlE,EAAArhF,EAAAqhF,CAAA7jF,EAAAwB,WACA6c,GACAA,EAAA1W,QAAA,SAAAqW,GACA,IAAAynE,EAAAznE,EAAAvZ,KAAAZ,MAAA2lE,QAAAhnE,EAAA,EACAijF,GAAAvuD,IACAA,EAAA10B,GAEAijF,EAAAtuD,IACAA,EAAAsuD,MAMAjjF,EAAAshF,EAA6BthF,GAAA,EAAQA,IACrCgjF,EAAAhjF,GAIA,IAAAkjF,EAAA,SAAAljF,GACA,IAAA6b,EAAAwlE,EAAArhF,EAAAqhF,CAAA7jF,EAAAwB,WACA6c,GACAA,EAAA1W,QAAA,SAAAqW,GACA,IAAAynE,EAAAznE,EAAAvZ,KAAAZ,MAAA2lE,QAAAhnE,EAAA,EACAwb,EAAAvZ,KAAAZ,MAAA2lE,QAAA,GAAAic,EAAAtuD,IACAA,EAAAsuD,MAMA,IAAAjjF,EAAAshF,EAA6BthF,GAAA20B,EAAe30B,IAC5CkjF,EAAAljF,GAIA,IAAAmjF,KACA,IAAAnjF,EAAA00B,EAA4B10B,GAAA20B,EAAe30B,IAAA,CAC3C,IAAAojF,EAAA/B,EAAArhF,EAAAqhF,CAAA7jF,EAAAwB,WACAokF,KAAA9lF,QACA6lF,EAAAp8E,KAAA/G,GAGA00B,EAAAyuD,EAAA,GACAxuD,EAAAwuD,IAAA7lF,OAAA,GAOA,IALA,IAAA+lF,EAAAhC,EAAA3sD,EAAA2sD,CAAA7jF,EAAAwB,WACAskF,EAAA9B,EAAA,EAAAA,CAAAhkF,EAAAwB,WACA2qB,EAAAnsB,EAAA6B,IAAAC,QAAA+jF,IAAA/lF,OAAA,GAAA2B,KAEAktE,OAAA,EACAoX,EAAA5uD,EAA4B4uD,GAAA7uD,EAAmB6uD,IAAA,CAC/C,IAAAC,EAAAnC,EAAAkC,EAAAlC,CAAA7jF,EAAAwB,WACA,GAAAwkF,KAAAlmF,OAAA,CACA,QAAAmD,EAAA6iF,EAAAhmF,OAAA,EAA8CmD,GAAA,EAAQA,IACtD,GAAA6iF,EAAA7iF,GAAAxB,MAAAukF,EAAA,GAAAvkF,IAAA,CACAktE,EAAAqX,EAAA,GACA,MAGA,GAAArX,EACA,OAMA,OAAYxiD,UAAAD,MADZlsB,EAAA6B,IAAAC,QAAA6sE,EAAAltE,KACYkkF,aAUZM,GAAA,SAAArE,GACA,gBAAA5hF,GAkBA,IAjBA,IAAAk3B,EAAA0qD,EACAzqD,EAAAyqD,EAGAsE,EAAA,SAAA1jF,GACAwhF,EAAAxhF,EAAAwhF,CAAAhkF,EAAAwB,WACAmG,QAAA,SAAAqW,GACA,IAAAynE,EAAAznE,EAAAvZ,KAAAZ,MAAAgmE,QAAArnE,EAAA,EACAijF,GAAAvuD,IACAA,EAAA10B,GAEAijF,EAAAtuD,IACAA,EAAAsuD,MAKAjjF,EAAAo/E,EAA0Bp/E,GAAA,EAAQA,IAClC0jF,EAAA1jF,GAIA,IAAA2jF,EAAA,SAAA3jF,GACAwhF,EAAAxhF,EAAAwhF,CAAAhkF,EAAAwB,WACAmG,QAAA,SAAAqW,GACA,IAAAynE,EAAAznE,EAAAvZ,KAAAZ,MAAAgmE,QAAArnE,EAAA,EACAwb,EAAAvZ,KAAAZ,MAAAgmE,QAAA,GAAA4b,EAAAtuD,IACAA,EAAAsuD,MAKA,IAAAjjF,EAAAo/E,EAA0Bp/E,GAAA20B,EAAe30B,IACzC2jF,EAAA3jF,GAIA,IAAAmjF,KACA,IAAAnjF,EAAA00B,EAA4B10B,GAAA20B,EAAe30B,IAAA,CAC3C,IAAAojF,EAAA5B,EAAAxhF,EAAAwhF,CAAAhkF,EAAAwB,WACAokF,KAAA9lF,QACA6lF,EAAAp8E,KAAA/G,GAGA00B,EAAAyuD,EAAA,GACAxuD,EAAAwuD,IAAA7lF,OAAA,GAOA,IALA,IAAAsmF,EAAApC,EAAA9sD,EAAA8sD,CAAAhkF,EAAAwB,WACA6kF,EAAAxC,EAAA,EAAAA,CAAA7jF,EAAAwB,WACA2qB,EAAAnsB,EAAA6B,IAAAC,QAAAskF,IAAAtmF,OAAA,GAAA2B,KAEAktE,OAAA,EACA2X,EAAAnvD,EAA4BmvD,GAAApvD,EAAmBovD,IAAA,CAC/C,IAAAzE,EAAAmC,EAAAsC,EAAAtC,CAAAhkF,EAAAwB,WACA,GAAAqgF,KAAA/hF,OAAA,CACA,QAAAmD,EAAAojF,EAAAvmF,OAAA,EAAiDmD,GAAA,EAAQA,IACzD,GAAAojF,EAAApjF,GAAAxB,MAAAogF,EAAA,GAAApgF,IAAA,CACAktE,EAAAkT,EAAA,GACA,MAGA,GAAAlT,EACA,OAMA,OAAYxiD,UAAAD,MADZlsB,EAAA6B,IAAAC,QAAA6sE,EAAAltE,KACYkkF,aAIZvnF,EAAA8hF,kBACA9hF,EAAA0iF,YACA1iF,EAAAsjF,gCACAtjF,EAAA2jF,gCACA3jF,EAAA0kF,iBACA1kF,EAAA4kF,6BACA5kF,EAAA6kF,mBACA7kF,EAAA+kF,gBACA/kF,EAAA0hF,uBACA1hF,EAAAmoF,iCAngDA,SAAA76D,EAAAhoB,GACA,OAAAs/E,EAAAt3D,EAAA,SAAAjnB,GACA,OAAAw8E,EAAAv9E,EAAAe,MAkgDArG,EAAAooF,oBAt/CA,SAAA9iF,GACA,gBAAAlC,GACA,OAAA2hF,EAAA,SAAA1+E,GACA,OAAAw8E,EAAAv9E,EAAAe,IADA0+E,CAEK3hF,KAm/CLpD,EAAAqoF,uBAx+CA,SAAA/iF,EAAA0hE,GACA,gBAAA5jE,GACA,OAAAyhF,EAAA,SAAAx+E,GACA,OAAAw8E,EAAAv9E,EAAAe,IACK2gE,EAFL6d,CAEKzhF,KAq+CLpD,EAAAsoF,uBAt9CA,SAAAhjF,GACA,gBAAAlC,GACA,GAAA0+E,EAAA1+E,GAAA,CACA,IAAAiD,EAAAjD,EAAAiD,KACA7C,EAAAJ,EAAAI,MAEA,GAAAq/E,EAAAv9E,EAAAe,GACA,OAAgBA,OAAAhD,IAAAG,EAAAH,IAAAqc,MAAAlc,EAAAkc,UAg9ChB1f,EAAAglF,2BACAhlF,EAAA8kF,kBACA9kF,EAAAqiB,UACAriB,EAAAolF,eACAplF,EAAAuoF,cAv3CA,SAAAliF,EAAA8+E,GACA,OAAAC,EAAA/+E,EAAA,SAAA0E,GACA,OAAAA,EAAAk3B,QACGkjD,IAq3CHnlF,EAAAwoF,gBA52CA,SAAAniF,EAAA8+E,GACA,OAAAC,EAAA/+E,EAAA,SAAA0E,GACA,OAAAA,EAAA6vB,UACGuqD,IA02CHnlF,EAAAyoF,eAj2CA,SAAApiF,EAAA8+E,GACA,OAAAC,EAAA/+E,EAAA,SAAA0E,GACA,OAAAA,EAAAujB,SACG62D,IA+1CHnlF,EAAA0oF,mBAt1CA,SAAAriF,EAAAm7D,EAAA2jB,GACA,OAAAC,EAAA/+E,EAAA,SAAA0E,GACA,QAAAy2D,EAAAz2D,EAAAtF,QACG0/E,IAo1CHnlF,EAAAqlF,qBACArlF,EAAA2oF,mBAh0CA,SAAAtiF,EAAA2pB,EAAAm1D,GACA,OAAAC,EAAA/+E,EAAA,SAAA0E,GACA,OAAAilB,EAAAO,QAAAxlB,EAAA7F,QACGigF,IA8zCHnlF,EAAA+O,SAnzCA,SAAA1I,EAAAf,GACA,QAAA+/E,EAAAh/E,EAAAf,GAAA5D,QAmzCA1B,EAAAslF,YACAtlF,EAAAulF,kBACAvlF,EAAA4oF,iBAlxCA,SAAAxlF,GACA,GAAAmiF,EAAAniF,GAAA,CAGA,IAAAhC,EAAAgC,EAAAmrE,YAAAntE,OAAA,GAEA,OADAogF,EAAAla,SAAA3lD,IAAAve,EAAAmrE,YAAAloE,MAAA,IACAgmE,YAAAjpE,EAAAmrE,YAAAlrE,IAAAjC,EAAAgC,EAAAorE,UAAAnrE,IAAAjC,KA6wCApB,EAAA6oF,iBApwCA,SAAAnD,GACA,gBAAAtiF,GACA,GAAAmiF,EAAAniF,GAAA,CACA,IAAAuI,EAAA61E,EAAAla,SAAA3lD,IAAAve,EAAAmrE,YAAAloE,MAAA,IACA,OAAA68E,GACA3gE,KAAAmjE,EACAljE,MAAAkjE,EAAA,EACAr4E,IAAA,EACAgzC,OAAA10C,EAAAi5C,QAJAs+B,CAKO9/E,GAGP,WAyvCApD,EAAA8oF,cA/uCA,SAAAtF,GACA,gBAAApgF,GACA,GAAAmiF,EAAAniF,GAAA,CACA,IAAAuI,EAAA61E,EAAAla,SAAA3lD,IAAAve,EAAAmrE,YAAAloE,MAAA,IACA,OAAA68E,GACA3gE,KAAA,EACAC,MAAA7W,EAAAu5C,MACA73C,IAAAm2E,EACAnjC,OAAAmjC,EAAA,GAJAN,CAKO9/E,GAGP,WAouCApD,EAAAwlF,kBACAxlF,EAAAylF,mBACAzlF,EAAA4lF,gBACA5lF,EAAA+oF,gBA3oCA,SAAA3lF,GACA,IAAA8c,EAAAolE,EAAAliF,GACA,GAAA8c,EAAA,CACA,IAAAvU,EAAA61E,EAAAla,SAAA3lD,IAAAzB,EAAA7Z,MAOA,OANAsF,EAAAmhE,aACAvqD,KAAA,EACAC,MAAA7W,EAAAu5C,MACA73C,IAAA,EACAgzC,OAAA10C,EAAAi5C,SAEAj5C,IAAA,SAAAqmD,GACA,IAAA3rD,EAAA6Z,EAAA7Z,KAAAk1B,OAAAy2B,GACA3uD,EAAA2uD,EAAA9xC,EAAA9e,MACA,OAAciC,MAAAjC,MAAAiC,EAAA,EAAAgD,YA+nCdrG,EAAAkmF,eACAlmF,EAAAmmF,YACAnmF,EAAAgpF,YApiCA,SAAApnF,GACA,IAAAse,EAAAolE,EAAA1jF,EAAAwB,WACA,GAAA8c,EAAA,CACA,IACAvU,EADA61E,EAAAla,SAAA3lD,IAAAzB,EAAA7Z,MACAsF,IAEA,GAAAA,KAAAjK,OAAA,CACA,IAAAiuC,EAAAzvB,EAAA9e,MAAAuK,EAAA,GACA4tC,EAAAr5B,EAAA9e,MAAAuK,IAAAjK,OAAA,GACAosB,EAAAlsB,EAAA6B,IAAAC,QAAAisC,GACA5hB,EAAAnsB,EAAA6B,IAAAC,QAAA61C,GAEA,OAAAyoC,EAAApgF,EAAAmlB,aAAA,IAAAy6D,EAAAna,cAAAt5C,EAAAD,MAGA,OAAAlsB,GAshCA5B,EAAAipF,UA1gCA,SAAArpE,EAAAxa,GACA,gBAAAxD,GACA,GAAAge,EAAA,CACA,IACAuI,EADA6hD,EAAA5kE,GAAAwa,KAAAuO,gBACAhG,QAEA,IAAAvI,EAAAvZ,KAAA8hB,QAAA6T,GAAA7T,GAEA,OADAvmB,EAAAuD,YAAAya,EAAAvc,IAAA,EAAAuc,EAAAvc,IAAAuc,EAAAvZ,KAAA8oB,SAAAhH,GACA65D,EAAApgF,GAGA,OAAAA,IAggCA5B,EAAAkpF,YAp/BA,SAAAxD,GACA,gBAAA9jF,GACA,IAAAse,EAAAolE,EAAA1jF,EAAAwB,WACA,GAAA8c,EAAA,CACA,IAAAvU,EAAA61E,EAAAla,SAAA3lD,IAAAzB,EAAA7Z,MACA,GAAAq/E,GAAA,GAAAA,GAAA/5E,EAAAu5C,MACA,OAAA88B,EAAAR,EAAA5Z,UAAAhmE,GACA+J,MACA8lE,WAAAvxD,EAAA9e,MACA8e,QAAA7Z,MACSq/E,IAGT,OAAA9jF,IAw+BA5B,EAAAmpF,QAr1BA,SAAAC,EAAAC,EAAA/4E,GACA,gBAAA1O,GACA,IACAgH,EAAA7C,OAAAkL,QAD0Bq4E,UAAA,EAAAzT,UAAA,GAC1BvlE,GACA4P,EAAAolE,EAAA1jF,EAAAwB,WACA,IAAA8c,EACA,OAAAte,EAGA,IACA2nF,EADA1B,GAAAuB,EAAAvB,CAAAjmF,GACA2lF,QAGAiC,EADA3B,GAAAwB,EAAAxB,CAAAjmF,GACA2lF,QAEA,GAAAgC,EAAAtpD,QAAAopD,IAAA,EACA,OAAAznF,GAGAgH,EAAA0gF,UAAAE,EAAA9nF,OAAA,GACA2iF,EAAA+E,EAAAC,EAAAG,EAAA,OAGA,IAAAC,EAp2BA,SAAAvpE,EAAA8jE,EAAAC,EAAApO,GACA,IAAAxG,EAAAiU,EAAApjE,EAAA7Z,MAIA,OAFAgpE,EAAA0U,EAAA1U,EAAA2U,EAAAC,EAAApO,GAEA8N,EAAAzjE,EAAA7Z,KAAAgpE,GA+1BAqa,CAAAxpE,EAAAqpE,EAAAC,EAAA5gF,EAAAitE,WAEA,OAAAmM,EAAApgF,GAAAuD,YAAA+a,EAAA7c,IAAA6c,EAAA7c,IAAA6c,EAAA7Z,KAAA8oB,SAAAs6D,KA6zBAzpF,EAAA2pF,WAzrBA,SAAAC,EAAAC,EAAAv5E,GACA,gBAAA1O,GACA,IACAgH,EAAA7C,OAAAkL,QAD0Bq4E,UAAA,EAAAzT,UAAA,GAC1BvlE,GACA4P,EAAAolE,EAAA1jF,EAAAwB,WACA,IAAA8c,EACA,OAAAte,EAGA,IACAkoF,EADA3C,GAAAyC,EAAAzC,CAAAvlF,GACA2lF,QAGAwC,EADA5C,GAAA0C,EAAA1C,CAAAvlF,GACA2lF,QAEA,GAAAuC,EAAA7pD,QAAA4pD,IAAA,EACA,OAAAjoF,GAGAgH,EAAA0gF,UAAAS,EAAAroF,OAAA,GACA2iF,EAAAuF,EAAAC,EAAAE,EAAA,UAGA,IAAAN,EA1gCA,SAAAvpE,EAAA8jE,EAAAC,EAAApO,GACA,IAAAxG,EAAA+T,EAAAE,EAAApjE,EAAA7Z,OAKA,OAHAgpE,EAAA0U,EAAA1U,EAAA2U,EAAAC,EAAApO,GACAxG,EAAA+T,EAAA/T,GAEAsU,EAAAzjE,EAAA7Z,KAAAgpE,GAogCA2a,CAAA9pE,EAAA4pE,EAAAC,EAAAnhF,EAAAitE,WAEA,OAAAmM,EAAApgF,GAAAuD,YAAA+a,EAAA7c,IAAA6c,EAAA7c,IAAA6c,EAAA7Z,KAAA8oB,SAAAs6D,KAiqBAzpF,EAAAiqF,SA/oBA,SAAAzG,EAAA0G,GACA,gBAAAtoF,GACA,IAAAse,EAAAolE,EAAA1jF,EAAAwB,WACA,GAAA8c,EAAA,CACA,IAAAvU,EAAA61E,EAAAla,SAAA3lD,IAAAzB,EAAA7Z,MACA8jF,EAAA3G,EAAA,EAEA,GAAA0G,GAAAC,GAAA,EACA,OAAAnI,EAAAoE,EAAA+D,EAAA/D,CAAAxkF,IAGA,GAAA4hF,GAAA,GAAAA,GAAA73E,EAAAi5C,OACA,OAAAo9B,EAAAR,EAAAzZ,OAAAnmE,GACA+J,MACA8lE,WAAAvxD,EAAA9e,MACA8e,QAAA7Z,MACSm9E,IAGT,OAAA5hF,IA6nBA5B,EAAAomF,aACApmF,EAAA8mF,iBACA9mF,EAAAgnF,cACAhnF,EAAA+mF,cACA/mF,EAAAoqF,sBApeA,SAAAxoF,GACA,IAAAwB,EAAAxB,EAAAwB,UAEA,GAAAoiF,EAAApiF,GACA,OAAA2jF,EAAAnlF,GAEA,GAAA2jF,EAAAniF,GAAA,CACA,IAAA8c,EAAAolE,EAAAliF,GACA,GAAA8c,EAAA,CACA,IAAAvU,EAAA61E,EAAAla,SAAA3lD,IAAAzB,EAAA7Z,MACAo6C,EAAA90C,EAAA0gE,YAAAjpE,EAAAmrE,YAAAlrE,IAAA6c,EAAA9e,MAAAgC,EAAAorE,UAAAnrE,IAAA6c,EAAA9e,OAEA,MAAAq/C,EAAAl+B,MAAAk+B,EAAAj+B,OAAA7W,EAAAu5C,MACA,SASA,IANA,IAAAmlC,EAAAtkF,OAAAkL,UAAwCwvC,GACxC90C,MACAuU,QAAA7Z,KACAorE,WAAAvxD,EAAA9e,QAGAgD,EAAAimF,EAAA7nE,MAAA,EACAg/D,EAAAlY,aAAA1nE,EAAAyoF,EAAAjmF,GACAA,IAAAimF,EAAA9nE,KAF0Cne,IAK1CimF,EAAAnqE,MAAAmqE,EAAA5Y,WAAA7vE,EAAA6B,IAAA83B,OAAA8uD,EAAA5Y,WAAA,GAAA7vE,EAAA6B,IACA4mF,EAAA1+E,IAAA61E,EAAAla,SAAA3lD,IAAA0oE,EAAAnqE,OAEA,OAAA8hE,EAAApgF,IAGA,OAAAA,GAocA5B,EAAAsqF,mBAzbA,SAAA1oF,GACA,IAAAwB,EAAAxB,EAAAwB,UAEA,GAAAoiF,EAAApiF,GACA,OAAA2jF,EAAAnlF,GAEA,GAAA2jF,EAAAniF,GAAA,CACA,IAAA8c,EAAAolE,EAAAliF,GACA,GAAA8c,EAAA,CACA,IAAAvU,EAAA61E,EAAAla,SAAA3lD,IAAAzB,EAAA7Z,MACAo6C,EAAA90C,EAAA0gE,YAAAjpE,EAAAmrE,YAAAlrE,IAAA6c,EAAA9e,MAAAgC,EAAAorE,UAAAnrE,IAAA6c,EAAA9e,OAEA,MAAAq/C,EAAApzC,KAAAozC,EAAAJ,QAAA10C,EAAAi5C,OACA,SASA,IANA,IAAAylC,EAAAtkF,OAAAkL,UAAwCwvC,GACxC90C,MACAuU,QAAA7Z,KACAorE,WAAAvxD,EAAA9e,QAGAgD,EAAAimF,EAAAhqC,OAAA,EACAmhC,EAAAjY,UAAA3nE,EAAAyoF,EAAAjmF,GACAA,IAAAimF,EAAAh9E,IAF2CjJ,IAK3CimF,EAAAnqE,MAAAmqE,EAAA5Y,WAAA7vE,EAAA6B,IAAA83B,OAAA8uD,EAAA5Y,WAAA,GAAA7vE,EAAA6B,IACA4mF,EAAA1+E,IAAA61E,EAAAla,SAAA3lD,IAAA0oE,EAAAnqE,OAGA,OAAA8hE,EAAApgF,IAGA,OAAAA,GAwZA5B,EAAAuqF,yBA7YA,SAAAj9D,GACA,gBAAA1rB,GACA,IAAA6+C,EAAAwmC,EAAA35D,GACA,OAAAmzB,EACAqmC,EAAArmC,EAAAl+B,KAAAukE,CAAA7E,EAAA30D,EAAAjqB,IAAA4+E,CAAArgF,IAEAA,IAwYA5B,EAAAwqF,sBA5XA,SAAAl9D,GACA,gBAAA1rB,GACA,IAAA6+C,EAAAwmC,EAAA35D,GACA,OAAAmzB,EACAumC,EAAAvmC,EAAApzC,IAAA25E,CAAA/E,EAAA30D,EAAAjqB,IAAA4+E,CAAArgF,IAEAA,IAuXA5B,EAAAyqF,oBA1WA,SAAA/E,EAAAgF,EAAAC,GACA,gBAAA/oF,GACA,IAAAqe,EAAAwlE,EAAAC,EAAAD,CAAA7jF,EAAAwB,WACA,GAAA6c,EAAA,CACA,QAAA7b,EAAA6b,EAAAve,OAAA,EAAoC0C,GAAA,EAAQA,IAC5CxC,EAAA8oF,EAAAzqE,EAAA7b,GAAAxC,GAEA,GAAA+oF,EAAA,CACA,IAAAr9D,EAAA1rB,EAAA6B,IAAAC,QAAA9B,EAAA+hB,QAAAhY,IAAAsU,IAAAve,OAAA,GAAA2B,MACAzB,EAAAmlB,aAAAu6D,EAAApoC,UAAA9qB,KAAAd,IAEA,OAAA00D,EAAApgF,GAEA,OAAAA,IA8VA5B,EAAA4qF,iBAjVA,SAAApH,EAAAkH,EAAAC,GACA,gBAAA/oF,GACA,IAAAqe,EAAA2lE,EAAApC,EAAAoC,CAAAhkF,EAAAwB,WACA,GAAA6c,EAAA,CACA,QAAA7b,EAAA6b,EAAAve,OAAA,EAAoC0C,GAAA,EAAQA,IAC5CxC,EAAA8oF,EAAAzqE,EAAA7b,GAAAxC,GAEA,GAAA+oF,EAAA,CACA,IAAAr9D,EAAA1rB,EAAA6B,IAAAC,QAAA9B,EAAA+hB,QAAAhY,IAAAsU,IAAAve,OAAA,GAAA2B,MACAzB,EAAAmlB,aAAAu6D,EAAApoC,UAAA9qB,KAAAd,KAGA,OAAA1rB,IAsUA5B,EAAA2rE,eACA3rE,EAAA6qF,YAtSA,SAAAzlF,GAcA,IAbA,IAAA0lF,EAAAx5D,UAAA5vB,OAAA,QAAAmI,IAAAynB,UAAA,GAAAA,UAAA,KACAy5D,EAAAz5D,UAAA5vB,OAAA,QAAAmI,IAAAynB,UAAA,GAAAA,UAAA,KACA05D,IAAA15D,UAAA5vB,OAAA,QAAAmI,IAAAynB,UAAA,KAAAA,UAAA,GACA/G,EAAA+G,UAAA5vB,OAAA,QAAAmI,IAAAynB,UAAA,GAAAA,UAAA,QAEA25D,EAAAjhB,EAAA5kE,GACA8lF,EAAAD,EAAArrE,KACAurE,EAAAF,EAAAlc,YACAqc,EAAAH,EAAAtrE,IACAO,EAAA+qE,EAAA/qE,MAEAD,KACAorE,KACAjnF,EAAA,EAAiBA,EAAA2mF,EAAe3mF,IAChC6b,EAAA9U,KAAA63E,EAAAkI,EAAA3gE,IAEAygE,GACAK,EAAAlgF,KAAA63E,EAAAmI,EAAA5gE,IAKA,IADA,IAAA8kD,KACAic,EAAA,EAAmBA,EAAAR,EAAiBQ,IACpCjc,EAAAlkE,KAAAigF,EAAA3/C,cAAA,KAAAu/C,GAAA,IAAAM,EAAAD,EAAAprE,IAGA,OAAAC,EAAAurB,cAAA,KAAA4jC,IA4QArvE,EAAA8lF,uBACA9lF,EAAAinF,2BACAjnF,EAAAmnF,6BACAnnF,EAAA6nF,0BACA7nF,EAAAurF,uBAnsEA,SAAAjmF,GACA,gBAAA1D,GACA,IAAA+B,EAAA+9E,EAAAp8E,EAAAo8E,CAAA9/E,EAAAwB,WACA,OAAAO,EACAm/E,EAAAn/E,EAAAN,IAAAy/E,CAAAlhF,GAEAA,IA8rEA5B,EAAAyhF,0BACAzhF,EAAAwrF,mBAvpEA,SAAA5pF,GACA,GAAAkgF,EAAAlgF,EAAAwB,WAAA,CACA,IAAAP,EAAAjB,EAAAwB,UAAAI,MAAAH,IACAP,EAAAlB,EAAAwB,UAAAqqB,IAAApqB,IACA,OAAA2+E,EAAApgF,EAAA+D,OAAA9C,EAAAC,IAEA,OAAAlB,GAkpEA5B,EAAA6hF,sBACA7hF,EAAAiiF,mBACAjiF,EAAAqiF,aACAriF,EAAAyrF,oBA7gEA,SAAAnmF,EAAA1B,EAAA6B,EAAAP,GACA,gBAAAtD,GACA,IAAA+B,EAAA+9E,EAAAp8E,EAAAo8E,CAAA9/E,EAAAwB,WACA,OAAAO,EACAq+E,EAAApgF,EAAAitB,cAAAlrB,EAAAN,IAAAO,EAAAmC,OAAAkL,UAAwEtN,EAAA0C,KAAAZ,SAAAP,IAExEtD,IAwgEA5B,EAAA0rF,uBA5/DA,SAAApmF,GACA,gBAAA1D,GACA,IAAAkgF,EAAAlgF,EAAAwB,WAAA,CACA,IAAAO,EAAA+9E,EAAAp8E,EAAAo8E,CAAA9/E,EAAAwB,WACA,GAAAO,EACA,OAAAq+E,EAAApgF,EAAAmlB,aAAAu6D,EAAAvoC,cAAApiC,OAAA/U,EAAA6B,IAAAE,EAAAN,OAGA,OAAAzB,IAq/DA5B,EAAA2rF,iBAz+DA,SAAA/pF,GACA,IAAAoQ,EAAAgzE,EAAApjF,EAAAwB,WACA,uBAAA4O,EACA8wE,EAAA9wE,EAAA8wE,CAAAlhF,GAEAA;;;;;;AC9OA,SAAAgqF,EAAAziF,EAAAoB,EAAAN,GAYA,OAXAM,KAAApB,EACApD,OAAAs7E,eAAAl4E,EAAAoB,GACAN,QACA4hF,YAAA,EACAzpE,cAAA,EACA0pE,UAAA,IAGA3iF,EAAAoB,GAAAN,EAGAd,EAGA,SAAA4iF,EAAAn1D,EAAAo1D,GACA,IAAAz3E,EAAAxO,OAAAwO,KAAAqiB,GAEA,GAAA7wB,OAAAkmF,sBAAA,CACA,IAAAC,EAAAnmF,OAAAkmF,sBAAAr1D,GACAo1D,IAAAE,IAAArwE,OAAA,SAAAswE,GACA,OAAApmF,OAAAqmF,yBAAAx1D,EAAAu1D,GAAAN,cAEAt3E,EAAApJ,KAAA/I,MAAAmS,EAAA23E,GAGA,OAAA33E,EAGA,SAAA83E,EAAAjhE,GACA,QAAAhnB,EAAA,EAAiBA,EAAAktB,UAAA5vB,OAAsB0C,IAAA,CACvC,IAAAmK,EAAA,MAAA+iB,UAAAltB,GAAAktB,UAAAltB,MAEAA,EAAA,EACA2nF,EAAAhmF,OAAAwI,IAAA,GAAAhF,QAAA,SAAAgB,GACAqhF,EAAAxgE,EAAA7gB,EAAAgE,EAAAhE,MAEKxE,OAAAumF,0BACLvmF,OAAAuc,iBAAA8I,EAAArlB,OAAAumF,0BAAA/9E,IAEAw9E,EAAAhmF,OAAAwI,IAAAhF,QAAA,SAAAgB,GACAxE,OAAAs7E,eAAAj2D,EAAA7gB,EAAAxE,OAAAqmF,yBAAA79E,EAAAhE,MAKA,OAAA6gB,EAGA,SAAAy7D,EAAAF,GACA,OAGA,SAAAA,GACA,GAAAtjD,MAAAC,QAAAqjD,GAAA,OAAA4F,EAAA5F,GAJA6F,CAAA7F,IAOA,SAAA8F,GACA,uBAAAl2E,eAAAm2E,YAAA3mF,OAAA0mF,GAAA,OAAAppD,MAAAxgC,KAAA4pF,GARAE,CAAAhG,IAWA,SAAAiG,EAAAC,GACA,IAAAD,EAAA,OACA,oBAAAA,EAAA,OAAAL,EAAAK,EAAAC,GACA,IAAAxoE,EAAAte,OAAA4B,UAAAC,SAAAC,KAAA+kF,GAAAnrF,MAAA,MACA,WAAA4iB,GAAAuoE,EAAAh/E,cAAAyW,EAAAuoE,EAAAh/E,YAAAU,MACA,WAAA+V,GAAA,QAAAA,EAAA,OAAAgf,MAAAxgC,KAAA+pF,GACA,iBAAAvoE,GAAA,2CAAA5M,KAAA4M,GAAA,OAAAkoE,EAAAK,EAAAC,GAjBAC,CAAAnG,IA4BA,WACA,UAAAhzD,UAAA,wIA7BAo5D,GAoBA,SAAAR,EAAA5F,EAAAt1D,IACA,MAAAA,KAAAs1D,EAAAjlF,UAAA2vB,EAAAs1D,EAAAjlF,QAEA,QAAA0C,EAAA,EAAAwiF,EAAA,IAAAvjD,MAAAhS,GAAwCjtB,EAAAitB,EAASjtB,IAAAwiF,EAAAxiF,GAAAuiF,EAAAviF,GAEjD,OAAAwiF,EAOA,SAAAoG,EAAA7rF,EAAAyC,GACA,IAAAqpF,EAAA9rF,EAAAiC,UACAP,EAAAoqF,EAAApqF,KACAC,EAAAmqF,EAAAnqF,GACAoC,KACA/D,EAAAsC,IAAAqsB,aAAAjtB,EAAAC,EAAA,SAAAuD,GACAnB,KAAAyL,OAAAk2E,EAAA3hF,GAAA2hF,EAAAxgF,EAAAnB,UAEA,IAAAy2B,EAAAz2B,EAAAsX,KAAA,SAAA0wE,GACA,OAAAA,EAAAtpF,KAAA0K,OAAA1K,EAAA0K,OAGA,OAAAqtB,EACAA,EAAAl2B,SAMA,SAAA0nF,EAAAhsF,EAAAyC,GACA,IAAAqpF,EAAA9rF,EAAAiC,UACAP,EAAAoqF,EAAApqF,KACAC,EAAAmqF,EAAAnqF,GACA4lB,KACAvnB,EAAAsC,IAAAqsB,aAAAjtB,EAAAC,EAAA,SAAAuD,GACAqiB,KAAA/X,OAAAk2E,EAAAn+D,IAAAriB,MAEA,IAAAA,EAAAqiB,EAAAxc,UAAAsQ,KAAA,SAAA4wE,GACA,OAAAA,EAAAxpF,KAAA0K,OAAA1K,EAAA0K,OAGA,OAAAjI,EACAA,EAAAZ,SAMA,SAAA4nF,IACA,IAAA//D,EAAAgE,UAAA5vB,OAAA,QAAAmI,IAAAynB,UAAA,GAAAA,UAAA,QACA1tB,EAAA0tB,UAAA5vB,OAAA,QAAAmI,IAAAynB,UAAA,GAAAA,UAAA,QAEA,IAAAhE,IAAA1pB,EACA,SAGA,IAAAxC,EAAAksB,EAAA3pB,OAAA2jC,WAAAha,EAAAnpB,cAEA,IAAA/C,EAAAiF,KACA,SAGA,IAAAqlB,EAAAtqB,EAAAiF,KAAAnB,MAAAsX,KAAA,SAAAmf,GACA,OAAAA,EAAA/3B,WAGA,IAAA8nB,EACA,SAQA,IALA,IAAAoN,EAAAxL,EAAA/mB,QACA4gC,EAAA7Z,EAAAlsB,UAAAG,OACAw3B,EAAAD,EAAA,EACAw0D,EAAAnmD,EAAA/lC,EAAAiF,KAAA8oB,SAEA2J,EAAA,GAAApN,EAAA6E,QAAAjD,EAAA3pB,OAAAoH,MAAA+tB,EAAA,GAAA5zB,QACA4zB,GAAA,EACAqO,GAAA7Z,EAAA3pB,OAAAoH,MAAA+tB,GAAA3J,SAGA,KAAA4J,EAAAzL,EAAA3pB,OAAAymB,YAAAsB,EAAA6E,QAAAjD,EAAA3pB,OAAAoH,MAAAguB,GAAA7zB,QACAooF,GAAAhgE,EAAA3pB,OAAAoH,MAAAguB,GAAA5J,SACA4J,GAAA,EAGA,OACAl2B,KAAAskC,EACArkC,GAAAwqF,GAIA,SAAAC,EAAApsF,EAAAyC,GACA,IAAAqpF,EAAA9rF,EAAAiC,UACAP,EAAAoqF,EAAApqF,KACAW,EAAAypF,EAAAzpF,MACAV,EAAAmqF,EAAAnqF,GAGA,OAFAmqF,EAAAzrE,QAGA5d,EAAA2sB,QAAApvB,EAAAqvB,aAAAhtB,EAAA0B,WAGA/D,EAAAsC,IAAAotB,aAAAhuB,EAAAC,EAAAc,GAGA,SAAA4pF,EAAA7I,GACA,IAAAj2D,EAAAi2D,EAAAj2D,MACAroB,EAAAs+E,EAAAt+E,KACA,OAAAg9B,MAAAC,QAAA5U,MAAA/a,SAAAtN,EAAAzC,OAAAyC,EAAAzC,OAAA8qB,EAGA,SAAA++D,EAAAtsF,EAAAyC,GACA,IAAA6B,EAAA6rB,UAAA5vB,OAAA,QAAAmI,IAAAynB,UAAA,GAAAA,UAAA,MAMAjrB,EAAaN,OAAA2nF,EAAA,uBAAA3nF,CAAsBnC,EAAtBmC,CAAsB5E,EAAAiC,YAA2B2C,OAAA2nF,EAAA,eAAA3nF,CAJ9D,SAAAM,GACA,OAAAA,EAAAzC,UAG8DmC,CAAc5E,EAAAiC,WAE5E,OAAA2C,OAAAwO,KAAA9O,GAAA/D,QAAA2E,EAIAA,OAAA0pB,UAAAnsB,EAAAyoF,OAAmEhmF,OAAAZ,aAHnEY,4vBCtIA,SAAAsnF,EAAAC,EAAAnoF,GACA,gBAAAtE,EAAAmD,GACA,IAAAtC,EAAAb,EAAAiC,UACAI,EAAAxB,EAAAwB,MACAiqB,EAAAzrB,EAAAyrB,IACA7nB,EAAApC,EAAAqC,WAAA4nB,GAAAogE,GAAA,EAAAC,EAAAloF,EACA,IAAAA,EAAiB,SAEjB,GAAAA,EAAA8Z,OAAA,GAAAlc,EAAA6C,KAAAT,EAAA8Z,MAAA,GAAA9b,KAAAsrB,kBAAA0+D,IAAA,GAAAhoF,EAAAkzB,WAAA,CAEA,MAAAt1B,EAAA+C,MAAAX,EAAA8Z,MAAA,GAA8C,SAC9C,IAAAquE,EAAA5sF,EAAAsC,IAAAC,QAAAkC,EAAAxE,MAAA,GACA0sF,EAAA,IAAuBE,EAAA,UAASD,IAAAnoF,EAAA8Z,OAChC9Z,EAAAmzB,SAAAnzB,EAAAjC,OAAAymB,aACSxkB,EAAA,IAAaooF,EAAA,UAASxqF,EAAArC,EAAAsC,IAAAC,QAAA+pB,EAAApsB,IAAAuE,EAAA8Z,QAAA9Z,EAAA8Z,QAC/BmuE,GAAA,EAEA,IAAA7nF,EAAeD,OAAAgb,EAAA,EAAAhb,CAAY+nF,EAAAF,EAAAnoF,EAAAG,GAC3B,QAAAI,IACA1B,GAAmBA,EAKnB,SAAA1C,EAAAgE,EAAAu1B,EAAA8yD,EAAAL,GAEA,IADA,IAAAzlE,EAAgB6lE,EAAA,SAAQxsE,MACxBpd,EAAA+2B,EAAAz5B,OAAA,EAAmC0C,GAAA,EAAQA,IACtC+jB,EAAW6lE,EAAA,SAAQnrF,KAAAs4B,EAAA/2B,GAAAR,KAAA+S,OAAAwkB,EAAA/2B,GAAAqB,MAAA0iB,IAExBvmB,EAAAmD,KAAA,IAAcgc,EAAA,EAAiBnb,EAAAxE,OAAA6sF,EAAA,KAAAroF,EAAAvE,IAAAuE,EAAAxE,MAAAwE,EAAAvE,IAC/B,IAAoC2sF,EAAA,MAAK7lE,EAAA,KAAAgT,EAAAz5B,QAAA,IAGzC,IADA,IAAA+6B,EAAA,EACA3L,EAAA,EAAmBA,EAAAqK,EAAAz5B,OAAuBovB,IAASqK,EAAArK,GAAAltB,MAAAgqF,IAAsCnxD,EAAA3L,EAAA,GAIzF,IAHA,IAAAo9D,EAAA/yD,EAAAz5B,OAAA+6B,EAEA0xD,EAAAvoF,EAAAxE,MAAA+5B,EAAAz5B,QAAAusF,EAAA,KAAAtqF,EAAAiC,EAAAjC,OACA67B,EAAA55B,EAAAkzB,WAAA5wB,EAAAtC,EAAAmzB,SAAAqF,GAAA,EAAoEoB,EAAAt3B,EAASs3B,IAAApB,GAAA,GAC7EA,GAAkBr4B,OAAAgb,EAAA,EAAAhb,CAAQnE,EAAA6B,IAAA0qF,EAAAD,KAC1BtsF,EAAAyP,MAAA88E,EAAAD,GACAC,GAAA,EAAAD,GAEAC,GAAAxqF,EAAAoH,MAAAy0B,GAAArQ,SAEA,OAAAvtB,EAzBmBwsF,CAAAjtF,EAAAS,GAAAgE,EAAAI,EAAA6nF,EAAAD,GAAA3mE,mBACnB,IA8BA,SAAAonE,EAAAC,GACA,gBAAAntF,EAAAmD,GACA,IAAAtC,EAAAb,EAAAiC,UACAI,EAAAxB,EAAAwB,MACAiqB,EAAAzrB,EAAAyrB,IACApnB,EAAArE,EAAAqE,KACA,GAAAA,KAAAioB,SAAA9qB,EAAAkc,MAAA,IAAAlc,EAAAwqB,WAAAP,GAA8E,SAC9E,IAAA8gE,EAAA/qF,EAAA6C,MAAA,GACA,GAAAkoF,EAAA3qF,MAAA0qF,EAAuC,SACvC,MAAA9qF,EAAAG,OAAAwkB,QAAAqG,MAAAhrB,EAAA6C,MAAA,GAAA+jB,YAAA5mB,EAAAgD,YAAA,IAIA,MAAAhD,EAAAkc,OAAAlc,EAAA6C,MAAA,GAAAzC,MAAA0qF,GACA9qF,EAAA+C,OAAA,IAAA/C,EAAA6C,MAAA,GAAA+jB,WAAA,EAA6D,SAC7D,GAAA9lB,EAAA,CAIA,IAHA,IAAA0B,EAAmBgoF,EAAA,SAAQxsE,MAAAgtE,EAAAhrF,EAAA+C,OAAA,KAG3BjG,EAAAkD,EAAAkc,OAAA8uE,EAAA,KAAsDluF,GAAAkD,EAAAkc,MAAA,EAAsBpf,IACjE0F,EAAQgoF,EAAA,SAAQnrF,KAAAW,EAAA6C,KAAA/F,GAAAmvB,KAAAzpB,IAE3BA,IAAAib,OAA2B+sE,EAAA,SAAQnrF,KAAAyrF,EAAAngE,kBACnC,IAAAwlC,EAAAxyD,EAAAS,GAAAsI,QAAA1G,EAAAyC,OAAAuoF,EAAA,SAAAhrF,EAAAkQ,OAAA,OAA6Fs6E,EAAA,MAAKhoF,EAAAwoF,EAAA,QAClG76B,EAAA5sC,aAAA5lB,EAAAiC,UAAAwK,YAAAwgB,KAAAulC,EAAAlwD,IAAAC,QAAAF,EAAAH,KAAAmrF,EAAA,QACAlqF,EAAAqvD,EAAA1sC,kBAEA,SAEA,IAAAqpB,EAAA7iB,EAAApqB,KAAAG,EAAAnC,MAAAktF,EAAArgE,eAAA,GAAAga,YAAA,KACAtmC,EAAAT,EAAAS,GAAA+D,OAAAnC,EAAAH,IAAAoqB,EAAApqB,KACAqrB,EAAA4hB,IAAA,MAAoC1sC,KAAA0sC,IACpC,QAASvqC,OAAAgb,EAAA,EAAAhb,CAAQnE,EAAA6B,IAAAD,EAAAH,IAAA,EAAAqrB,KACjBpqB,GAAmBA,EAAA1C,EAAAyP,MAAA7N,EAAAH,IAAA,EAAAqrB,GAAAzH,mBACnB,IAOA,SAAAwnE,EAAAH,GACA,gBAAAntF,EAAAmD,GACA,IAAAtC,EAAAb,EAAAiC,UACAI,EAAAxB,EAAAwB,MACAiqB,EAAAzrB,EAAAyrB,IACA7nB,EAAApC,EAAAqC,WAAA4nB,EAAA,SAAApnB,GAAuD,OAAAA,EAAA+jB,YAAA/jB,EAAA2E,WAAApH,MAAA0qF,IACvD,QAAA1oF,KACAtB,IACAd,EAAA6C,KAAAT,EAAA8Z,MAAA,GAAA9b,MAAA0qF,EAOA,SAAAntF,EAAAmD,EAAAgqF,EAAA1oF,GACA,IAAAhE,EAAAT,EAAAS,GAAAP,EAAAuE,EAAAvE,IAAAqtF,EAAA9oF,EAAA6nB,IAAApsB,IAAAuE,EAAA8Z,OACAre,EAAAqtF,IAGA9sF,EAAAmD,KAAA,IAAgBgc,EAAA,EAAiB1f,EAAA,EAAAqtF,EAAArtF,EAAAqtF,EACjC,IAAsCV,EAAA,MAAMA,EAAA,SAAQnrF,KAAAyrF,EAAA33E,OAAA,KAAA/Q,EAAAjC,OAAA8rB,SAAA,YACpD7pB,EAAA,IAAgBooF,EAAA,UAASpsF,EAAA6B,IAAAC,QAAAkC,EAAApC,MAAAH,KAAAzB,EAAA6B,IAAAC,QAAAgrF,GAAA9oF,EAAA8Z,QAGzB,OADApb,EAAA1C,EAAA8qB,KAAA9mB,EAA0BG,OAAAgb,EAAA,EAAAhb,CAAUH,IAAAqhB,mBACpC,EAhBO0nE,CAAAxtF,EAAAmD,EAAAgqF,EAAA1oF,GAmBP,SAAAzE,EAAAmD,EAAAsB,GAGA,IAFA,IAAAhE,EAAAT,EAAAS,GAAAgZ,EAAAhV,EAAAjC,OAEAN,EAAAuC,EAAAvE,IAAA+C,EAAAwB,EAAAmzB,SAAA,EAAA7wB,EAAAtC,EAAAkzB,WAAyE10B,EAAA8D,EAAO9D,IAChFf,GAAAuX,EAAA7P,MAAA3G,GAAA+qB,SACAvtB,EAAA+D,OAAAtC,EAAA,EAAAA,EAAA,GAEA,IAAA+C,EAAAxE,EAAA6B,IAAAC,QAAAkC,EAAAxE,OAAA2Z,EAAA3U,EAAA6oB,UACA4qB,EAAA,GAAAj0C,EAAAkzB,WAAAvK,EAAA3oB,EAAAmzB,UAAAne,EAAAwP,WACAzmB,EAAAyC,EAAAC,MAAA,GAAAuoF,EAAAxoF,EAAAG,OAAA,GACA,IAAA5C,EAAAirB,WAAAggE,GAAA/0C,EAAA,KAAA+0C,EAAA,EACA7zE,EAAAoN,QAAAlH,OAAAsN,EAAqDy/D,EAAA,SAAQxsE,MAASwsE,EAAA,SAAQnrF,KAAA+X,KACzE,SACL,IAAAxZ,EAAAgF,EAAA/C,IAAAhC,EAAAD,EAAA2Z,EAAAoU,SASA,OALAvtB,EAAAmD,KAAA,IAAcgc,EAAA,EAAiB3f,GAAAy4C,EAAA,KAAAx4C,GAAAktB,EAAA,KAAAntB,EAAA,EAAAC,EAAA,EAC/B,IAAoC2sF,EAAA,OAAKn0C,EAAYm0C,EAAA,SAAQxsE,MAASwsE,EAAA,SAAQnrF,KAAA+X,EAAA6U,KAAgBu+D,EAAA,SAAQxsE,SACtGP,OAAAsN,EAA0Dy/D,EAAA,SAAQxsE,MAASwsE,EAAA,SAAQnrF,KAAA+X,EAAA6U,KAAgBu+D,EAAA,SAAQxsE,SAC3Gq4B,EAAA,IAAAtrB,EAAA,KAAAsrB,EAAA,MACAv1C,EAAA1C,EAAAqlB,mBACA,EAvCO4nE,CAAA1tF,EAAAmD,EAAAsB,MA6CP,SAAAkpF,EAAAR,GACA,gBAAAntF,EAAAmD,GACA,IAAAtC,EAAAb,EAAAiC,UACAI,EAAAxB,EAAAwB,MACAiqB,EAAAzrB,EAAAyrB,IACA7nB,EAAApC,EAAAqC,WAAA4nB,EAAA,SAAApnB,GAAuD,OAAAA,EAAA+jB,YAAA/jB,EAAA2E,WAAApH,MAAA0qF,IACvD,IAAA1oF,EAAiB,SACjB,IAAAkzB,EAAAlzB,EAAAkzB,WACA,MAAAA,EAA0B,SAC1B,IAAAn1B,EAAAiC,EAAAjC,OAAAuC,EAAAvC,EAAAoH,MAAA+tB,EAAA,GACA,GAAA5yB,EAAAtC,MAAA0qF,EAAsC,SAEtC,GAAAhqF,EAAA,CACA,IAAAyqF,EAAA7oF,EAAAinB,WAAAjnB,EAAAinB,UAAAvpB,MAAAD,EAAAC,KACA8e,EAAkBsrE,EAAA,SAAQnrF,KAAAksF,EAAAT,EAAA33E,SAAA,MAC1BlV,EAAA,IAAsBusF,EAAA,MAAMA,EAAA,SAAQnrF,KAAAyrF,EAAA33E,OAAA,KAA4Bq3E,EAAA,SAAQnrF,KAAAc,EAAAC,KAAA+S,OAAA,KAAA+L,MACxEqsE,EAAA,OACA9oF,EAAAL,EAAAxE,MAAAsS,EAAA9N,EAAAvE,IACAiD,EAAAnD,EAAAS,GAAAmD,KAAA,IAAiCgc,EAAA,EAAiB9a,GAAA8oF,EAAA,KAAAr7E,EAClDzN,EAAAyN,EAAAjS,EAAA,OACAwlB,kBAEA;;;;;;AC3NA,SAAAplB,EAAA3B,EAAA,IACA,OAAAiB,EAAAmD,KACA,MAAAd,MACAA,GACKrC,EAAAiC,WACLC,IACAA,GACKG,EAAAH,IAEL,OADAiB,EAAAnD,EAAAS,GAAAC,WAAA3B,EAAAmD,KACA,GAgBA,SAAA2rF,EAAA3pF,EAAA2qB,EAAAzqB,GACA,WAAa0pF,EAAA,EAAS5pF,EAAA,CAAAlE,EAAAJ,EAAAK,EAAAC,KACtB,MAAAoE,EAAAF,aAAAG,SAAAH,EAAAxE,GAAAwE,GACA3D,GACAA,GACKT,EACL0P,EAAA9P,EAAAW,OAAA,EACA,IAAAwtF,EAAA7tF,EACA8tF,EAAA/tF,EAEA,GAAAL,EAAA8P,GAAA,CACA,MAAAu+E,EAAAhuF,EAAAL,EAAA,GAAAk/B,QAAAl/B,EAAA8P,EAAA,IACAw+E,EAAAD,EAAAruF,EAAA8P,EAAA,GAAAnP,OAAA,EACA4tF,EAAAF,EAAAruF,EAAA8P,EAAA,GAAArP,YAAAT,EAAA8P,IACA0+E,EAAAD,EAAAvuF,EAAA8P,GAAAnP,OAQA,GAlCA,SAAAN,EAAAC,EAAAF,GACA,IAAA+D,KAQA,OAPA/D,EAAAsC,IAAAqsB,aAAA1uB,EAAAC,EAAA,CAAAgF,EAAAhD,KACA6B,WAAAmB,EAAAnB,MAAAyG,IAAAgwB,KACAv6B,MAAAiC,EACAhC,IAAAgC,EAAAgD,EAAA8oB,SACAwM,aAGAz2B,EAkBAsqF,CAAApuF,EAAAC,EAAAF,GAAA0a,OAAAd,IACA,MAAA+wB,SACAA,GACS/wB,EAAA4gB,KAAA/3B,KACT,OAAAkoC,EAAAtvB,KAAA5Y,KAAA0K,OAAA0hB,EAAA1hB,QACOuN,OAAAd,KAAA1Z,IAAA+tF,GAEP1tF,OACA,SAGA6tF,EAAAF,GACAztF,EAAA+D,OAAA4pF,EAAAF,GAGAC,EAAAF,GACAxtF,EAAA+D,OAAAypF,EAAAE,GAIAJ,GADAC,EAAAC,GACAruF,EAAA8P,GAAAnP,OAKA,OAFAE,EAAAuvB,QAAAg+D,EAAAD,EAAAl/D,EAAArZ,OAAAlR,IACA7D,EAAA6uB,iBAAAT,GACApuB,IAIA,SAAA6tF,EAAApqF,EAAAzB,EAAA2B,GACA,WAAa0pF,EAAA,EAAS5pF,EAAA,CAAAlE,EAAAJ,EAAAK,EAAAC,KACtB,MAAAoE,EAAAF,aAAAG,SAAAH,EAAAxE,GAAAwE,GACA3D,GACAA,GACKT,EAML,OAJAJ,EAAA,IACAa,EAAAuD,YAAA/D,EAAA,EAAAC,EAAAuC,EAAA+S,OAAAlR,IAGA7D,IAIA,SAAA8tF,EAAArqF,EAAAzB,EAAA2B,GACA,MAAAvE,EAAA05B,IACA,MAAAhS,KAiCA,OAhCAgS,EAAAnxB,QAAAwB,IACA,GAAAA,EAAAk3B,OAAA,CACA,MAAA/hC,KACAA,GACS6K,EACT,IACAhK,EADAsC,EAAA,EAGA,GAGA,GAFAtC,EAAAsE,EAAAhB,KAAAnE,GAEA,CACA,MAAAkB,EAAAL,EAAAwF,MACAlF,EAAAD,EAAAL,EAAA,GAAAW,OACA+D,EAAAF,aAAAG,SAAAH,EAAAxE,EAAA,IAAAwE,EAEAnE,EAAA,GACAsnB,EAAAvd,KAAAJ,EAAAq3B,IAAA/+B,EAAAjC,IAGAsnB,EAAAvd,KAAAJ,EAAAq3B,IAAAhhC,EAAAC,GAAAs6B,KAAA/3B,EAAA+S,OAAAlR,GAAAq2B,SAAA/wB,EAAA7F,SACA7B,EAAAhC,SAESN,GAETsC,EAAAnD,EAAAwB,QACAgnB,EAAAvd,KAAAJ,EAAAq3B,IAAA/+B,SAGAqlB,EAAAvd,KAAAJ,EAAA0kB,KAAAzuB,EAAA+J,EAAAod,aAGW6lE,EAAA,SAAQnzD,UAAAnS,IAGnB,WAAainE,EAAA,QACbjtF,OACAktF,gBAAAnuF,GAAA,IAAoCusF,EAAA,MAAKhtF,EAAAS,EAAA0mB,SAAA1mB,EAAAw2B,UAAAx2B,EAAAu2B,YAKzC,SAAA63D,EAAAxqF,EAAAzB,EAAA2B,GACA,MAAAvE,EAAA,CAAA05B,EAAA/2B,KACA,MAAA+kB,KAqCA,OApCAgS,EAAAnxB,QAAAwB,IACA,GAAAA,EAAAk3B,OAAA,CACA,MAAA/hC,KACAA,EAAAgF,MACAA,GACS6F,EACT,IACAhK,EADAsC,EAAA,EAEA,MAAAysF,IAAA5qF,EAAA2W,OAAAnL,GAAA,SAAAA,EAAA9M,KAAA0K,MAAA,GAEA,MAAAwhF,GAAA,QAAA/uF,EAAAsE,EAAAhB,KAAAnE,KACA,GAAAyD,KAAAC,KAAAssB,eAAAtsB,IAAA7C,EAAA,IACA,MAAAK,EAAAL,EAAAwF,MACAlF,EAAAD,EAAAL,EAAA,GAAAW,OACA4tF,EAAAluF,EAAAL,EAAA,GAAAk/B,QAAAl/B,EAAA,IACAwuF,EAAAD,EAAAvuF,EAAA,GAAAW,OACA+D,EAAAF,aAAAG,SAAAH,EAAAxE,GAAAwE,EAEAnE,EAAA,GACAsnB,EAAAvd,KAAAJ,EAAAq3B,IAAA/+B,EAAAjC,IAIAsnB,EAAAvd,KAAAJ,EAAAq3B,IAAAktD,EAAAC,GAAA5zD,KAAA/3B,EAAA+S,OAAAlR,GAAAq2B,SAAA/wB,EAAA7F,SACA7B,EAAAhC,EAKAgC,EAAAnD,EAAAwB,QACAgnB,EAAAvd,KAAAJ,EAAAq3B,IAAA/+B,SAGAqlB,EAAAvd,KAAAJ,EAAA0kB,KAAAzuB,EAAA+J,EAAAod,QAAApd,OAGWijF,EAAA,SAAQnzD,UAAAnS,IAGnB,WAAainE,EAAA,QACbjtF,OACAktF,gBAAAnuF,GAAA,IAAoCusF,EAAA,MAAKhtF,EAAAS,EAAA0mB,SAAA1mB,EAAAw2B,UAAAx2B,EAAAu2B,YAKzC,SAAA9G,EAAAttB,GACA,OAAAzC,EAAAmD,KACA,MAAA1C,GACAA,EAAAwB,UACAA,GACKjC,EACL,IAAA0B,KACAA,EAAAC,GACAA,GACKM,EACL,MAAAI,MACAA,EAAAge,MACAA,GACKpe,EAEL,GAAAoe,EAAA,CACA,MAAA5b,EAAoBG,OAAA0lB,EAAA,EAAA1lB,CAAYvC,EAAAI,GAChCf,EAAA+C,EAAA/C,KACAC,EAAA8C,EAAA9C,GAIA,OADAlB,EAAAsvB,WAAAruB,EAAAC,EAAAc,GACAU,EAAA1C,IAIA,SAAAmuF,EAAAnqF,EAAA,KAAAhC,EAAA6B,MACA,OAAAtE,EAAAmD,KACA,MAAAd,MACAA,EAAAiqB,IACAA,GACKtsB,EAAAiC,UACLmD,EAAA/C,EAAA+C,QACA1D,EAAA+C,IAAA/C,KAAAW,EAAAH,IACAP,EAAA8C,IAAA9C,GAAA2qB,EAAApqB,IAEA,QAAAG,EAAAG,OAAA2C,eAAAC,IAAA3C,KAIAU,GACAA,EAAAnD,EAAAS,GAAAuD,YAAAtC,EAAAC,EAAAc,EAAA+S,OAAAlR,MAGA,IAwDA,SAAAuqF,EAAA1B,GACA,gBAAAntF,EAAAmD,GACA,MAAAd,MACAA,EAAAiqB,IACAA,EAAApnB,KACAA,GACKlF,EAAAiC,UACL,GAAAiD,KAAAioB,SAAA9qB,EAAAkc,MAAA,IAAAlc,EAAAwqB,WAAAP,GAAA,SACA,MAAA8gE,EAAA/qF,EAAA6C,MAAA,GACA,GAAAkoF,EAAA3qF,MAAA0qF,EAAA,SAEA,MAAA9qF,EAAAG,OAAAwkB,QAAAqG,KAAA,CAIA,MAAAhrB,EAAAkc,OAAAlc,EAAA6C,MAAA,GAAAzC,MAAA0qF,GAAA9qF,EAAA+C,OAAA,IAAA/C,EAAA6C,MAAA,GAAA+jB,WAAA,WAEA,GAAA9lB,EAAA,CACA,IAAA0B,EAAmBgoF,EAAA,SAAQxsE,MAC3B,MAAAgtE,EAAAhrF,EAAA+C,OAAA,KAGA,QAAAjG,EAAAkD,EAAAkc,OAAA8uE,EAAA,KAAsDluF,GAAAkD,EAAAkc,MAAA,EAAsBpf,IAAA0F,EAAagoF,EAAA,SAAQnrF,KAAAW,EAAA6C,KAAA/F,GAAAmvB,KAAAzpB,IAGjGA,IAAAib,OAA2B+sE,EAAA,SAAQnrF,KAAAyrF,EAAAngE,kBACnC,MAAAvsB,EAAAT,EAAAS,GAAAsI,QAAA1G,EAAAyC,OAAAuoF,EAAA,SAAAhrF,EAAAkQ,OAAA,OAA6Fs6E,EAAA,MAAKhoF,EAAAwoF,EAAA,QAClG5sF,EAAAmlB,aAAA5lB,EAAAiC,UAAAwK,YAAAwgB,KAAAxsB,EAAA6B,IAAAC,QAAAF,EAAAH,KAAAmrF,EAAA,QACAlqF,EAAA1C,EAAAqlB,kBAGA,SAGA,MAAAqpB,EAAA7iB,EAAApqB,KAAAG,EAAAnC,MAAAktF,EAAArgE,eAAA1qB,EAAAgD,YAAA,IAAA0hC,YAAA,KACAtmC,EAAAT,EAAAS,GAAA+D,OAAAnC,EAAAH,IAAAoqB,EAAApqB,KAIA,IAAAqrB,EAAA4hB,KACA1sC,KAAA0qF,IAEA1qF,KAAA0sC,IAOA,OALA5hB,QACA9qB,KAAA0qF,GACK,SA1EL,SAAA7qF,EAAAJ,EAAAqc,EAAA,EAAA+Z,GACA,MAAAnM,EAAA7pB,EAAAC,QAAAL,GACAq2B,EAAApM,EAAA5N,QACAia,EAAAF,OAAA/3B,OAAA,IAAA4rB,EAAA3pB,OACA,GAAA+1B,EAAA,GAAApM,EAAA3pB,OAAAC,KAAAC,KAAA0pB,YAAAD,EAAA3pB,OAAAirB,WAAAtB,EAAA/mB,QAAA+mB,EAAA3pB,OAAAymB,cAAAuP,EAAA/1B,KAAAg2B,aAAAtM,EAAA3pB,OAAAwkB,QAAA0Q,WAAAvL,EAAA/mB,QAAA+mB,EAAA3pB,OAAAymB,aAAA,SAEA,QAAA9pB,EAAAgtB,EAAA5N,MAAA,EAAAtb,EAAAsb,EAAA,EAA6Cpf,EAAAo5B,EAAUp5B,IAAA8D,IAAA,CACvD,MAAAiC,EAAAinB,EAAAjnB,KAAA/F,GACAiG,EAAA+mB,EAAA/mB,MAAAjG,GACA,GAAA+F,EAAAzC,KAAAC,KAAA0pB,UAAA,SACA,IAAAuM,EAAAzzB,EAAA8hB,QAAA0Q,WAAAtyB,EAAAF,EAAA+jB,YACA,MAAA1W,EAAA+lB,KAAAr1B,IAAAiC,EAMA,GALAqN,GAAArN,IAAAyzB,IAAAC,aAAA,EAAArmB,EAAA9P,KAAA+S,OAAAjD,EAAAjO,UAKAY,EAAAuoB,WAAAroB,EAAA,EAAAF,EAAA+jB,YAAA,SAIA,MAAA7jB,EAAA+mB,EAAA9mB,WAAAkzB,GACAM,EAAAP,KAAA,GACA,OAAAnM,EAAAjnB,KAAAqzB,GAAApzB,eAAAC,IAAAyzB,IAAAp2B,KAAA0pB,EAAAjnB,KAAAqzB,EAAA,GAAA91B,MAsDAwwB,CAAAxyB,EAAA6B,IAAAD,EAAAH,IAAA,EAAAqrB,KACApqB,KAAA1C,EAAAyP,MAAA7N,EAAAH,IAAA,EAAAqrB,GAAAzH,mBACA,IAKA,SAAAgpE,EAAArsF,EAAAssF,EAAAzqF,MACA,OAAAtE,EAAAmD,EAAA1B,KAGA,OAFqBmD,OAAA0lB,EAAA,EAAA1lB,CAAY5E,EAAAyC,EAAA6B,GAGpBM,OAAA27B,EAAA,EAAA37B,CAAYmqF,EAAZnqF,CAAY5E,EAAAmD,EAAA1B,GAGdmD,OAAA27B,EAAA,EAAA37B,CAAYnC,EAAA6B,EAAZM,CAAY5E,EAAAmD,EAAA1B,IAIvB,SAAAutF,EAAA9pF,EAAAjB,GACA,OAAAiB,EAAAzC,OAAAwB,EAAAsjB,MAAA0nE,aAAA/pF,EAAAzC,OAAAwB,EAAAsjB,MAAA2nE,cAAAhqF,EAAAzC,OAAAwB,EAAAsjB,MAAA4nE,UAGA,SAAAC,EAAA3C,EAAAU,GACA,OAAAntF,EAAAmD,EAAA1B,KACA,MAAAwC,OACAA,EAAAhC,UACAA,GACKjC,GACLqC,MACAA,EAAAiqB,IACAA,GACKrqB,EACLwC,EAAApC,EAAAqC,WAAA4nB,GAEA,IAAA7nB,EACA,SAGA,MAAA4qF,EAAuBzqF,OAAA0yB,EAAA,eAAA1yB,CAAcM,GAAA8pF,EAAA9pF,EAAAjB,GAAdW,CAAc3C,GAErC,GAAAwC,EAAA8Z,OAAA,GAAA8wE,GAAA5qF,EAAA8Z,MAAA8wE,EAAA9wE,OAAA,GACA,GAAA8wE,EAAAnqF,KAAAzC,OAAAgqF,EACA,OAAea,EAAYH,EAAZG,CAAYttF,EAAAmD,EAAA1B,GAG3B,GAAAutF,EAAAK,EAAAnqF,KAAAjB,IAAAwoF,EAAAh0D,aAAA42D,EAAAnqF,KAAA8hB,SAAA,CACA,MAAAvmB,GACAA,GACST,EAOT,OANAS,EAAAitB,cAAA2hE,EAAAntF,IAAAuqF,GAEAtpF,GACAA,EAAA1C,IAGA,GAIA,OAAW+rF,EAAUC,EAAVD,CAAUxsF,EAAAmD,EAAA1B,IAIrB,SAAA6tF,EAAA7sF,EAAA6B,MACA,OAAAtE,EAAAmD,EAAA1B,KAGA,OAFqBmD,OAAA0lB,EAAA,EAAA1lB,CAAY5E,EAAAyC,EAAA6B,GAGpBM,OAAA27B,EAAA,EAAA37B,CAAI5E,EAAAmD,GAGNyB,OAAA27B,EAAA,EAAA37B,CAAMnC,EAAA6B,EAANM,CAAM5E,EAAAmD,EAAA1B,IAIjB,SAAA8tF,EAAA9sF,EAAA6B,GACA,OAAAtE,EAAAmD,KACA,MAAA1C,GACAA,EAAAwB,UACAA,EAAAK,IACAA,GACKtC,EACL,IAAA0B,KACAA,EAAAC,GACAA,GACKM,EACL,MAAAI,MACAA,EAAAge,MACAA,GACKpe,EAEL,GAAAoe,EAAA,CACA,MAAA5b,EAAoBG,OAAA0lB,EAAA,EAAA1lB,CAAYvC,EAAAI,GAChCf,EAAA+C,EAAA/C,KACAC,EAAA8C,EAAA9C,GAUA,OAPAW,EAAAotB,aAAAhuB,EAAAC,EAAAc,IAGAhC,EAAAsvB,WAAAruB,EAAAC,EAAAc,GAGAhC,EAAAuvB,QAAAtuB,EAAAC,EAAAc,EAAA+S,OAAAlR,IACAnB,EAAA1C,yBC/bA,MAAA+uF,EAAA,UACAC,EAAA,WACAC,EAAA,qBACAC,EAAA,sBACAC,GACAC,IAAA,QACAC,IAAA,OACAC,IAAA,OACAC,IAAA,SACAC,IAAA,SAEAC,EAAAlQ,GAAA4P,EAAA5P,GAeA,MAAAmQ,EAAA,6CAEA,SAAAxyE,EAAA7C,GAEA,OAAAA,EAAA/R,QAAAonF,EAAA,CAAAttD,EAAA3f,IAEA,WADAA,IAAA3Z,eACA,IACA,MAAA2Z,EAAAm0B,OAAA,GACA,MAAAn0B,EAAAm0B,OAAA,GACA/lC,OAAAwqD,aAAAyc,SAAAr1D,EAAApY,UAAA,QACAwG,OAAAwqD,cAAA54C,EAAApY,UAAA,IAEA,IAIA,MAAAslF,EAAA,eAkBA,MAAAC,EAAA,UACAC,EAAA,gCA0BA,MAAAC,KACAC,EAAA,mBACAC,EAAA,oBACAC,EAAA,4BAEA,SAAAC,EAAAp4D,EAAAv5B,GACAuxF,EAAA,IAAAh4D,KAIAi4D,EAAAl6E,KAAAiiB,GACAg4D,EAAA,IAAAh4D,KAAA,IAEAg4D,EAAA,IAAAh4D,GAAAwd,EAAAxd,EAAA,SAIA,MAAAq4D,GAAA,KADAr4D,EAAAg4D,EAAA,IAAAh4D,IACAuG,QAAA,KAEA,aAAA9/B,EAAA8L,UAAA,KACA8lF,EACA5xF,EAEAu5B,EAAAxvB,QAAA0nF,EAAA,MAAAzxF,EACG,MAAAA,EAAAq4C,OAAA,GACHu5C,EACA5xF,EAEAu5B,EAAAxvB,QAAA2nF,EAAA,MAAA1xF,EAEAu5B,EAAAv5B,EA0DA,SAAA+2C,EAAA1Q,EAAAjxB,EAAAvQ,GACA,MAAA4yC,EAAApR,EAAA9kC,OACA,OAAAk2C,EACA,SAIA,IAAAo6C,EAAA,EAGA,KAAAA,EAAAp6C,GAAA,CACA,MAAAq6C,EAAAzrD,EAAAgS,OAAAZ,EAAAo6C,EAAA,GACA,GAAAC,IAAA18E,GAAAvQ,EAEK,IAAAitF,IAAA18E,IAAAvQ,EAGL,MAFAgtF,SAFAA,IAQA,OAAAxrD,EAAAn6B,OAAA,EAAAurC,EAAAo6C,GA+BAjyF,EAAAC,SACAkH,OAxNA,SAAA+U,EAAAi2E,GACA,GAAAA,GACA,GAAAvB,EAAAl5E,KAAAwE,GACA,OAAAA,EAAA/R,QAAA0mF,EAAAS,QAGA,GAAAR,EAAAp5E,KAAAwE,GACA,OAAAA,EAAA/R,QAAA4mF,EAAAO,GAIA,OAAAp1E,GA8MA6C,WACAo7D,KA3LA,SAAAiY,EAAA3qF,GACA2qF,IAAA5jF,QAAA4jF,EACA3qF,KAAA,GACA,MAAA2B,GACAe,QAAA,CAAAoE,EAAA43B,KAEAA,GADAA,IAAA33B,QAAA23B,GACAh8B,QAAAqnF,EAAA,MACAY,IAAAjoF,QAAAoE,EAAA43B,GACA/8B,GAEAmxE,SAAA,IACA,IAAA5oE,OAAAygF,EAAA3qF,IAGA,OAAA2B,GA8KAotC,SAzKA,SAAAS,EAAAtd,EAAAv5B,GACA,GAAA62C,EAAA,CACA,IAAAo7C,EACA,IACAA,EAAAC,mBAAAvzE,EAAA3e,IACA+J,QAAAsnF,EAAA,IACA9mF,cACK,MAAAxC,GACL,YAEA,OAAAkqF,EAAAnyD,QAAA,oBAAAmyD,EAAAnyD,QAAA,kBAAAmyD,EAAAnyD,QAAA,SACA,YAGAvG,IAAA+3D,EAAAh6E,KAAAtX,KACAA,EAAA2xF,EAAAp4D,EAAAv5B,IAEA,IACAA,EAAAmyF,UAAAnyF,GAAA+J,QAAA,YACG,MAAAhC,GACH,YAEA,OAAA/H,GAoJA2xF,aACA7X,UAhHkB51E,KAAA,cAiHlB2C,MA/GA,SAAAmC,GACA,IACAiiB,EACA7gB,EAFAnG,EAAA,EAIA,KAAQA,EAAAktB,UAAA5vB,OAAsB0C,IAE9B,IAAAmG,KADA6gB,EAAAkG,UAAAltB,GAEA2B,OAAA4B,UAAA8B,eAAA5B,KAAAujB,EAAA7gB,KACApB,EAAAoB,GAAA6gB,EAAA7gB,IAKA,OAAApB,GAkGAguC,WA/FA,SAAAi0C,EAAAn4E,GAGA,MAaAgN,EAbAmrE,EAAAlhF,QAAA,OAAAnJ,EAAAQ,EAAAilC,KACA,IAAA/9B,GAAA,EACA8pF,EAAAhxF,EACA,OAAAgxF,GAAA,UAAA/rD,EAAA+rD,IAAA9pF,KACA,OAAAA,EAGA,IAGA,OAGA4I,MAAA,OACA,IAAAjN,EAAA,EAEA,GAAA6b,EAAAve,OAAAuR,EACAgN,EAAA9T,OAAA8G,QAEA,KAAAgN,EAAAve,OAAAuR,GAAAgN,EAAA9U,KAAA,IAGA,KAAQ/G,EAAA6b,EAAAve,OAAkB0C,IAE1B6b,EAAA7b,GAAA6b,EAAA7b,GAAAgZ,OAAAlT,QAAA,aAEA,OAAA+V,GAmEAi3B,QACAqpC,mBAtCA,SAAA/5C,EAAArM,GACA,QAAAqM,EAAAvG,QAAA9F,EAAA,IACA,SAEA,MAAAyd,EAAApR,EAAA9kC,OACA,IAAA2nB,EAAA,EACAjlB,EAAA,EACA,KAAQA,EAAAwzC,EAAOxzC,IACf,UAAAoiC,EAAApiC,GACAA,SACK,GAAAoiC,EAAApiC,KAAA+1B,EAAA,GACL9Q,SACK,GAAAmd,EAAApiC,KAAA+1B,EAAA,MACL9Q,EACA,EACA,OAAAjlB,EAIA,UAoBA6C,yBAjBA,SAAAO,GACAA,KAAAwvC,WAAAxvC,EAAAmB,QACA8R,QAAA8B,KAAA,iOClOA,SAAApV,IACA,OACA8vC,QAAA,KACAskC,QAAA,EACAjkC,KAAA,EACAV,WAAA,EACAC,aAAA,GACA/uC,UAAA,KACA2uC,WAAA,YACAuqC,QAAA,EACA3pC,UAAA,EACAt4B,SAAA,KACAi4B,UAAA,EACAyB,UAAA,KACA9vC,QAAA,EACA4vC,YAAA,EACA0oC,aAAA,EACAnqC,OAAA,GAQA/2C,EAAAC,SACAqH,UAxBA4vC,QAAA,KACAskC,QAAA,EACAjkC,KAAA,EACAV,WAAA,EACAC,aAAA,GACA/uC,UAAA,KACA2uC,WAAA,YACAuqC,QAAA,EACA3pC,UAAA,EACAt4B,SAAA,KACAi4B,UAAA,EACAyB,UAAA,KACA9vC,QAAA,EACA4vC,YAAA,EACA0oC,aAAA,EACAnqC,OAAA,GAUA3vC,cACAC,eAPA,SAAAorF,GACAzyF,EAAAC,QAAAqH,SAAAmrF,sWClBIC,KAEJ,uBAAA9/D,WAAA,oBAAAhW,SAAA,CACA,IAAA4gC,EAAA,cAAAl5C,KAAAsuB,UAAA6qB,WACAC,EAAA,UAAAhmC,KAAAkb,UAAA6qB,WACAE,EAAA,wCAAyCr5C,KAAAsuB,UAAA6qB,WAEvCi1C,EAAM90C,IAAA,MAAAlmC,KAAAkb,UAAAC,UACR,IAAAgrB,EAAW60C,EAAM70C,MAAAH,GAAAC,GAAAH,GACfk1C,EAAM50C,WAAAJ,EAAA9gC,SAAAmhC,cAAA,EAAAJ,KAAA,GAAAH,KAAA,QACNk1C,EAAM10C,OAAAH,GAAA,gBAAAnmC,KAAAkb,UAAA6qB,WACNi1C,EAAMz0C,cAAiBy0C,EAAM10C,SAAA,iBAAA15C,KAAAsuB,UAAA6qB,aAAA,SAC/B,IAAAS,GAAAL,GAAA,gBAAAv5C,KAAAsuB,UAAA6qB,WACEi1C,EAAMx0C,WACNw0C,EAAMv0C,eAAAD,MAAA,GACNw0C,EAAMt0C,KAAAP,GAAA,cAAAnmC,KAAAkb,UAAA6qB,YAAA,cAAA/lC,KAAAkb,UAAA6qB,WACNi1C,EAAMr0C,QAAA,aAAA3mC,KAAAkb,UAAA6qB,WACNi1C,EAAMp0C,OAAA,wBAAA1hC,SAAA2hC,gBAAA3zB,MACN8nE,EAAMl0C,OAAA,iBAAA9mC,KAAAkb,UAAA6rB,QACNi0C,EAAMh0C,eAAkBg0C,EAAMp0C,UAAA,uBAAAh6C,KAAAsuB,UAAA6qB,aAAA,SAGhC,IAAAkB,EAAA,SAAAr4C,GACA,QAAAE,EAAA,GAAsBA,IAEtB,KADAF,IAAAurC,iBACgB,OAAArrC,GAIhB+V,EAAA,SAAAjW,GACA,IAAA1C,EAAA0C,EAAAiW,WACA,OAAA3Y,GAAA,IAAAA,EAAA2B,SAAA3B,EAAAg7C,KAAAh7C,GAGAi7C,EAAA,SAAAv4C,EAAAxD,EAAAC,GACA,IAAA8C,EAAA+W,SAAAkiC,cAGA,OAFAj5C,EAAAk5C,OAAAz4C,EAAA,MAAAvD,EAAAuD,EAAA6E,UAAAxJ,OAAAoB,GACA8C,EAAAm5C,SAAA14C,EAAAxD,GAAA,GACA+C,GAMAo5C,EAAA,SAAA34C,EAAA44C,EAAAC,EAAAC,GACA,OAAAD,IAAAE,EAAA/4C,EAAA44C,EAAAC,EAAAC,GAAA,IACAC,EAAA/4C,EAAA44C,EAAAC,EAAAC,EAAA,KAGAE,EAAA,gCAEA,SAAAD,EAAA/4C,EAAA44C,EAAAC,EAAAC,EAAA9kB,GACA,OAAS,CACT,GAAAh0B,GAAA64C,GAAAD,GAAAE,EAAiD,SACjD,GAAAF,IAAA5kB,EAAA,IAAAlL,EAAA9oB,IAAA,CACA,IAAA1C,EAAA0C,EAAAiW,WACA,MAAA3Y,EAAA2B,UAAAg6C,EAAAj5C,IAAAg5C,EAAA5nC,KAAApR,EAAAoE,WAAA,SAAApE,EAAAk5C,gBACS,SACTN,EAAAP,EAAAr4C,IAAAg0B,EAAA,OACAh0B,EAAA1C,MACK,OAAA0C,EAAAf,SAKL,SAHA,aADAe,IAAA4sC,WAAAgM,GAAA5kB,EAAA,UACAklB,gBAA4C,SAC5CN,EAAA5kB,EAAA,EAAAlL,EAAA9oB,GAAA,IAOA,SAAA8oB,EAAA9oB,GACA,UAAAA,EAAAf,SAAAe,EAAA6E,UAAAxJ,OAAA2E,EAAA4sC,WAAAvxC,OAcA,SAAA49C,EAAAt1B,GAEA,IADA,IAAA0xB,EACA7e,EAAA7S,EAAqB6S,KAA6B6e,EAAA7e,EAAA2iB,YAAxB3iB,IAAAvgB,YAC1B,OAAAo/B,KAAAr1C,MAAAq1C,EAAAr1C,KAAAioB,UAAAotB,EAAA1xB,QAAA0xB,EAAA7I,YAAA7oB,GAKA,IAAAy1B,EAAA,SAAAC,GACA,IAAAC,EAAAD,EAAAE,YAGA,OAFAD,GAAmB8yC,EAAMx0C,QAAAyB,EAAAG,aAAAH,EAAAI,WAAA,GAAAH,YACpBA,GAAA,GACLA,GAGA,SAAAI,EAAAC,EAAAz1C,GACA,IAAAa,EAAAuR,SAAAsjC,YAAA,SAIA,OAHA70C,EAAA80C,UAAA,iBACA90C,EAAA40C,UACA50C,EAAAb,IAAAa,EAAAtH,KAAAyG,EACAa,EAGA,SAAA+0C,EAAA18C,GACA,OAAU8e,KAAA,EAAAC,MAAA/e,EAAA66C,gBAAA8B,YACV/yC,IAAA,EAAAgzC,OAAA58C,EAAA66C,gBAAAgC,cAGA,SAAAC,EAAAt2C,EAAAijB,GACA,uBAAAjjB,MAAAijB,GAGA,SAAAszB,EAAAn6C,GACA,IAAAo6C,EAAAp6C,EAAAq6C,wBAEA,OAAUn+B,KAAAk+B,EAAAl+B,KAAAC,MAAAi+B,EAAAl+B,KAAAlc,EAAA+5C,YACV/yC,IAAAozC,EAAApzC,IAAAgzC,OAAAI,EAAApzC,IAAAhH,EAAAi6C,cAGA,SAAAK,EAAA/9C,EAAA69C,EAAAG,GAGA,IAFA,IAAAC,EAAAj+C,EAAAk+C,SAAA,sBAAAC,EAAAn+C,EAAAk+C,SAAA,mBACAr9C,EAAAb,EAAAonB,IAAAwoB,cACA7uC,EAAAi9C,GAAAh+C,EAAAonB,IACArmB,EAD0CA,EAAA2Y,EAAA3Y,GAE1C,MAAAA,EAAA2B,SAAA,CACA,IAAA07C,EAAAr9C,GAAAF,EAAA6b,MAAA,GAAA3b,EAAA2B,SACA27C,EAAAD,EAAAb,EAAA18C,GAAA+8C,EAAA78C,GACAu9C,EAAA,EAAAC,EAAA,EASA,GARAV,EAAApzC,IAAA4zC,EAAA5zC,IAAAkzC,EAAAM,EAAA,OACOM,IAAAF,EAAA5zC,IAAAozC,EAAApzC,IAAAkzC,EAAAQ,EAAA,QACPN,EAAAJ,OAAAY,EAAAZ,OAAAE,EAAAM,EAAA,YACOM,EAAAV,EAAAJ,OAAAY,EAAAZ,OAAAE,EAAAQ,EAAA,WACPN,EAAAl+B,KAAA0+B,EAAA1+B,KAAAg+B,EAAAM,EAAA,QACOK,IAAAD,EAAA1+B,KAAAk+B,EAAAl+B,KAAAg+B,EAAAQ,EAAA,SACPN,EAAAj+B,MAAAy+B,EAAAz+B,MAAA+9B,EAAAM,EAAA,WACOK,EAAAT,EAAAj+B,MAAAy+B,EAAAz+B,MAAA+9B,EAAAQ,EAAA,UACPG,GAAAC,EACA,GAAAH,EACAv9C,EAAA29C,YAAAC,SAAAH,EAAAC,OACO,CACP,IAAAG,EAAA39C,EAAA49C,WAAAC,EAAA79C,EAAA89C,UACAN,IAAoBx9C,EAAA89C,WAAAN,GACpBD,IAAoBv9C,EAAA49C,YAAAL,GACpB,IAAAQ,EAAA/9C,EAAA49C,WAAAD,EAAAK,EAAAh+C,EAAA89C,UAAAD,EACAf,GAAgBl+B,KAAAk+B,EAAAl+B,KAAAm/B,EAAAr0C,IAAAozC,EAAApzC,IAAAs0C,EAAAn/B,MAAAi+B,EAAAj+B,MAAAk/B,EAAArB,OAAAI,EAAAJ,OAAAsB,GAGhB,GAAAX,EAAgB,OAyBhB,SAAAY,EAAA53B,GAEA,IADA,IAAA5c,KAAA3J,EAAAumB,EAAAwoB,cACQxoB,IACR5c,EAAAjC,MAAgB6e,MAAA3c,IAAA2c,EAAAy3B,UAAAl/B,KAAAyH,EAAAu3B,aAChBv3B,GAAAvmB,GAFaumB,EAAA1N,EAAA0N,IAIb,OAAA5c,EAcA,SAAAy0C,EAAAz0C,EAAA00C,GACA,QAAA19C,EAAA,EAAiBA,EAAAgJ,EAAA1L,OAAkB0C,IAAA,CACnC,IAAApC,EAAAoL,EAAAhJ,GACA4lB,EAAAhoB,EAAAgoB,IACA3c,EAAArL,EAAAqL,IACAkV,EAAAvgB,EAAAugB,KACAyH,EAAAy3B,WAAAp0C,EAAAy0C,IAAsC93B,EAAAy3B,UAAAp0C,EAAAy0C,GACtC93B,EAAAu3B,YAAAh/B,IAAiCyH,EAAAu3B,WAAAh/B,IAIjC,IAAAw/B,EAAA,KAoBA,SAAAC,EAAA37C,EAAA47C,GAGA,IAFA,IAAAC,EAAAC,EAAAC,EAAA,IAAA7gD,EAAA,EACA8gD,EAAAJ,EAAA50C,IAAAi1C,EAAAL,EAAA50C,IACAtC,EAAA1E,EAAA2E,WAAAu3C,EAAA,EAAmDx3C,EAAOA,IAAAE,YAAAs3C,IAAA,CAC1D,IAAAC,OAAA,EACA,MAAAz3C,EAAAzF,SAA8Bk9C,EAAAz3C,EAAA03C,qBAC9B,OAAA13C,EAAAzF,SACU,SADyBk9C,EAAA5D,EAAA7zC,GAAA03C,iBAGnC,QAAAr+C,EAAA,EAAmBA,EAAAo+C,EAAA9gD,OAAkB0C,IAAA,CACrC,IAAAq8C,EAAA+B,EAAAp+C,GACA,GAAAq8C,EAAApzC,KAAAg1C,GAAA5B,EAAAJ,QAAAiC,EAAA,CACAD,EAAAp+C,KAAAC,IAAAu8C,EAAAJ,OAAAgC,GACAC,EAAAr+C,KAAAyd,IAAA++B,EAAApzC,IAAAi1C,GACA,IAAAI,EAAAjC,EAAAl+B,KAAA0/B,EAAA1/B,KAAAk+B,EAAAl+B,KAAA0/B,EAAA1/B,KACAk+B,EAAAj+B,MAAAy/B,EAAA1/B,KAAA0/B,EAAA1/B,KAAAk+B,EAAAj+B,MAAA,EACA,GAAAkgC,EAAAN,EAAA,CACAF,EAAAn3C,EACAq3C,EAAAM,EACAP,EAAAO,GAAA,GAAAR,EAAA58C,UAAyDid,KAAAk+B,EAAAj+B,MAAAy/B,EAAA1/B,KAAAk+B,EAAAj+B,MAAAi+B,EAAAl+B,KAAAlV,IAAA40C,EAAA50C,KAAyE40C,EAClI,GAAAl3C,EAAAzF,UAAAo9C,IACanhD,EAAAghD,GAAAN,EAAA1/B,OAAAk+B,EAAAl+B,KAAAk+B,EAAAj+B,OAAA,QACb,WAGA0/B,IAAAD,EAAA1/B,MAAAk+B,EAAAj+B,OAAAy/B,EAAA50C,KAAAozC,EAAApzC,KACA40C,EAAA1/B,MAAAk+B,EAAAl+B,MAAA0/B,EAAA50C,KAAAozC,EAAAJ,UACS9+C,EAAAghD,EAAA,IAGT,OAAAL,GAAA,GAAAA,EAAA58C,SAKA,SAAAe,EAAA47C,GAGA,IAFA,IAAA5wB,EAAAhrB,EAAA6E,UAAAxJ,OACAkE,EAAA+W,SAAAkiC,cACAz6C,EAAA,EAAiBA,EAAAitB,EAASjtB,IAAA,CAC1BwB,EAAAk5C,OAAAz4C,EAAAjC,EAAA,GACAwB,EAAAm5C,SAAA14C,EAAAjC,GACA,IAAAq8C,EAAAkC,EAAA/8C,EAAA,GACA,GAAA66C,EAAApzC,KAAAozC,EAAAJ,QACAuC,EAAAX,EAAAxB,GACO,OAASp6C,OAAA9E,OAAA6C,GAAA69C,EAAA1/B,OAAAk+B,EAAAl+B,KAAAk+B,EAAAj+B,OAAA,QAEhB,OAAUnc,OAAA9E,OAAA,GAhB+BshD,CAAAX,EAAAC,IACzCD,GAAAE,GAAA,GAAAF,EAAA58C,UAAkEe,OAAA9E,UAClEygD,EAAAE,EAAAC,GAiBA,SAAAS,EAAAX,EAAAxB,GACA,OAAAwB,EAAA1/B,MAAAk+B,EAAAl+B,KAAA,GAAA0/B,EAAA1/B,MAAAk+B,EAAAj+B,MAAA,GACAy/B,EAAA50C,KAAAozC,EAAApzC,IAAA,GAAA40C,EAAA50C,KAAAozC,EAAAJ,OAAA,EAgEA,SAAAyC,EAAAlgD,EAAAq/C,GACA,IAAAhxC,EAAA8xC,EAEA18C,EAAA9E,EAAA+L,EAAA1K,EAAA0K,KACA,GAAAA,EAAA01C,uBACA,IACA,IAAAC,EAAA31C,EAAA01C,uBAAAf,EAAA1/B,KAAA0/B,EAAA50C,KACA41C,IAAkB58C,GAAA4K,EAAAgyC,GAAAC,WAAA3hD,EAAA0P,EAAA1P,QACb,MAAAyiC,IAEL,IAAA39B,GAAAiH,EAAA61C,oBAAA,CACA,IAAAv9C,EAAA0H,EAAA61C,oBAAAlB,EAAA1/B,KAAA0/B,EAAA50C,KACAzH,IAAgBS,GAAA08C,EAAAn9C,GAAAw9C,eAAA7hD,EAAAwhD,EAAAM,aAGhB,IAAAhgD,EAAA2e,EAAA1U,EAAAg2C,iBAAArB,EAAA1/B,KAAA0/B,EAAA50C,IAAA,GACA,IAAA2U,IAAApf,EAAAonB,IAAAjb,SAAA,GAAAiT,EAAA1c,SAAA0c,EAAA1F,WAAA0F,GAAA,CACA,IAAAuhC,EAAA3gD,EAAAonB,IAAA02B,wBACA,IAAAkC,EAAAX,EAAAsB,GAA+B,YAE/B,KADAvhC,EAtCA,SAAAshC,EAAAnnC,EAAA8lC,EAAAsB,GACA,IAAAlyB,EAAAlV,EAAA82B,WAAAvxC,OACA,GAAA2vB,GAAAkyB,EAAAl2C,IAAAk2C,EAAAlD,OACA,QAAAmD,EAAAv/C,KAAAC,IAAA,EAAAD,KAAAyd,IAAA2P,EAAA,EAAAptB,KAAAw/C,MAAApyB,GAAA4wB,EAAA50C,IAAAk2C,EAAAl2C,MAAAk2C,EAAAlD,OAAAkD,EAAAl2C,MAAA,IAAAjJ,EAAAo/C,IAAyI,CACzI,IAAAz4C,EAAAoR,EAAA82B,WAAA7uC,GACA,MAAA2G,EAAAzF,SAEA,IADA,IAAAk9C,EAAAz3C,EAAA03C,iBACA59C,EAAA,EAAuBA,EAAA29C,EAAA9gD,OAAkBmD,IAAA,CACzC,IAAA47C,EAAA+B,EAAA39C,GACA,GAAA+9C,EAAAX,EAAAxB,GAAqC,OAAA6C,EAAAv4C,EAAAk3C,EAAAxB,GAGrC,IAAAr8C,KAAA,GAAAitB,IAAAmyB,EAA0C,MAG1C,OAAArnC,EAuBAmnC,CAAA1gD,EAAAonB,IAAAi4B,EAAAsB,IACe,YAKf,GAFMkvC,EAAMl0C,QAAAv8B,EAAAsG,YAA2BjiB,EAAA9E,EAAA,MACvCygB,EArFA,SAAAgI,EAAAi4B,GACA,IAAAt+C,EAAAqmB,EAAA1N,WACA,OAAA3Y,GAAA,QAAA8T,KAAA9T,EAAA8G,WAAAw3C,EAAA1/B,KAAAyH,EAAA02B,wBAAAn+B,KACK5e,EACLqmB,EAiFA05B,CAAA1hC,EAAAigC,GACA57C,EAAA,CACA,GAAQosF,EAAM10C,OAAA,GAAA13C,EAAAf,WAGd/D,EAAA0C,KAAAyd,IAAAngB,EAAA8E,EAAA4sC,WAAAvxC,SAGA2E,EAAA4sC,WAAAvxC,OAAA,CACA,IAAAiiD,EAAAvkC,EAAA/Y,EAAA4sC,WAAA1xC,GACA,OAAA6d,EAAA3U,WAAAk5C,EAAAvkC,EAAAshC,yBAAAl+B,OAAAy/B,EAAA1/B,MACAohC,EAAAtD,OAAA4B,EAAA50C,KACW9L,IAKX8E,GAAAzD,EAAAonB,KAAAzoB,GAAA8E,EAAA4sC,WAAAvxC,OAAA,MAAA2E,EAAA8mB,UAAA7nB,UACA28C,EAAA50C,IAAAhH,EAAA8mB,UAAAuzB,wBAAAL,OACOh9C,EAAAT,EAAAzB,MAAAsC,IAAA0kB,QAAAqG,KAIP,GAAAjtB,GAAA,GAAA8E,EAAAf,UAAA,MAAAe,EAAA4sC,WAAA1xC,EAAA,GAAAkJ,WACOpH,EA1FP,SAAAT,EAAAyD,EAAA9E,EAAA0gD,GAQA,IADA,IAAA2B,GAAA,EACA/mB,EAAAx2B,EACAw2B,GAAAj6B,EAAAonB,KADuB,CAEvB,IAAA0xB,EAAA94C,EAAAihD,QAAAC,YAAAjnB,GAAA,GACA,IAAA6e,EAAgB,YAChB,GAAAA,EAAAr1C,KAAAioB,SAAAotB,EAAA/3C,OAAA,CACA,IAAA88C,EAAA/E,EAAA1xB,IAAA02B,wBACA,GAAAD,EAAAl+B,KAAA0/B,EAAA1/B,MAAAk+B,EAAApzC,IAAA40C,EAAA50C,IAA6Du2C,EAAAlI,EAAAqI,cAC7D,MAAAtD,EAAAj+B,MAAAy/B,EAAA1/B,MAAAk+B,EAAAJ,OAAA4B,EAAA50C,KACY,MAD0Du2C,EAAAlI,EAAAsI,UAGtEnnB,EAAA6e,EAAA1xB,IAAA1N,WAEA,OAAAsnC,GAAA,EAAAA,EAAAhhD,EAAAihD,QAAAI,WAAA59C,EAAA9E,GAsEO2iD,CAAAthD,EAAAyD,EAAA9E,EAAA0gD,IAEP,MAAA5+C,IAAoBA,EAxGpB,SAAAT,EAAAof,EAAAigC,GACA,IAAAjgD,EAAAggD,EAAAhgC,EAAAigC,GACA57C,EAAArE,EAAAqE,KACA9E,EAAAS,EAAAT,OACAg5B,GAAA,EACA,MAAAl0B,EAAAf,WAAAe,EAAA2E,WAAA,CACA,IAAAy1C,EAAAp6C,EAAAq6C,wBACAnmB,EAAAkmB,EAAAl+B,MAAAk+B,EAAAj+B,OAAAy/B,EAAA1/B,MAAAk+B,EAAAl+B,KAAAk+B,EAAAj+B,OAAA,OAEA,OAAA5f,EAAAihD,QAAAI,WAAA59C,EAAA9E,EAAAg5B,GA+FoB4pB,CAAAvhD,EAAAof,EAAAigC,IAEpB,IAAAvG,EAAA94C,EAAAihD,QAAAC,YAAA9hC,GAAA,GACA,OAAU3e,MAAA+1B,OAAAsiB,IAAA0I,WAAA1I,EAAA2I,QAAA,GAGV,SAAA1B,EAAA/rB,EAAA2D,GACA,IAAAioB,EAAA5rB,EAAA6rB,iBACA,OAAAD,EAAA9gD,OAAA8gD,EAAAjoB,EAAA,IAAAioB,EAAA9gD,OAAA,GAAAk1B,EAAA8pB,wBAMA,SAAA4D,EAAA1hD,EAAAS,GACA,IAAArB,EAAAY,EAAAihD,QAAAU,WAAAlhD,GACAgD,EAAArE,EAAAqE,KACA9E,EAAAS,EAAAT,OAGA,MAAA8E,EAAAf,WAA6BmtF,EAAMp0C,QAAWo0C,EAAM10C,OAAA,CACpD,IAAA0C,EAAAkC,EAAA/D,EAAAv4C,EAAA9E,KAAA,GAIA,GAAQkxF,EAAM10C,OAAAx8C,GAAA,KAAAkW,KAAApR,EAAA6E,UAAA3J,EAAA,KAAAA,EAAA8E,EAAA6E,UAAAxJ,OAAA,CACd,IAAA8iD,EAAA7B,EAAA/D,EAAAv4C,EAAA9E,EAAA,EAAAA,EAAA,OACA,GAAAijD,EAAAn3C,KAAAozC,EAAApzC,IAAA,CACA,IAAAo3C,EAAA9B,EAAA/D,EAAAv4C,EAAA9E,IAAA,OACA,GAAAkjD,EAAAp3C,KAAAozC,EAAApzC,IACW,OAAAq3C,EAAAD,IAAAliC,KAAAiiC,EAAAjiC,OAGX,OAAAk+B,EAGA,MAAAp6C,EAAAf,WAAA1C,EAAAzB,MAAAsC,IAAAC,QAAAL,GAAAM,OAAAwsB,cAAA,CAEA,IAAAw0B,EAAAt3C,GAAA,EACA,GAAA9L,EAAA8E,EAAA4sC,WAAAvxC,OAAA,CACA,IAAAgS,EAAArN,EAAA4sC,WAAA1xC,GACA,GAAAmS,EAAApO,WAAgCq/C,EAAAjxC,EAAAgtC,yBAEhC,IAAAiE,GAAApjD,EAAA,CACA,IAAA0E,EAAAI,EAAA4sC,WAAA1xC,EAAA,GACA,GAAA0E,EAAAX,WAAiCq/C,EAAA1+C,EAAAy6C,wBAAyCrzC,GAAA,GAE1E,OAsCA,SAAAozC,EAAApzC,GACA,MAAAozC,EAAAmE,OAAyB,OAAAnE,EACzB,IAAAoE,EAAAx3C,EAAAozC,EAAApzC,IAAAozC,EAAAJ,OACA,OAAUhzC,IAAAw3C,EAAAxE,OAAAwE,EAAAtiC,KAAAk+B,EAAAl+B,KAAAC,MAAAi+B,EAAAj+B,OAzCVsiC,CAAAH,GAAAt+C,EAAAq6C,wBAAArzC,GASA,QAAAgtB,GAAA,EAAoBA,EAAA,EAASA,GAAA,EAC7B,GAAAA,EAAA,GAAA94B,EAAA,CACA,IAAAc,OAAA,EAAA+oB,EAAA,GAAA/kB,EAAAf,SAAAs5C,EAAAv4C,EAAA9E,EAAA,EAAAA,GACA,IAAAc,EAAAgE,EAAA4sC,WAAA1xC,EAAA,IAAA+D,SAAAs5C,EAAAv8C,GACA,GAAAA,EAAAiD,UAAA,MAAAjD,EAAAoI,SAAApI,EAAA,KACA,GAAA+oB,EAAA,CACA,IAAA25B,EAAApC,EAAAv3B,EAAA,GACA,GAAA25B,EAAA13C,IAAA03C,EAAA1E,OAAyC,OAAAqE,EAAAK,GAAA,SAEpC,GAAA1qB,EAAA,GAAA94B,EAAA4tB,EAAA9oB,GAAA,CACL,IAAA+Y,OAAA,EAAA4lC,EAAA,GAAA3+C,EAAAf,SAAAs5C,EAAAv4C,EAAA9E,IAAA,GACA,IAAA6d,EAAA/Y,EAAA4sC,WAAA1xC,IAAA+D,SAAAs5C,EAAAx/B,GACA,GAAAA,EAAA9Z,SAAA8Z,EAAA,KACA,GAAA4lC,EAAA,CACA,IAAAC,EAAAtC,EAAAqC,GAAA,GACA,GAAAC,EAAA53C,IAAA43C,EAAA5E,OAAyC,OAAAqE,EAAAO,GAAA,IAKzC,OAAAP,EAAA/B,EAAA,GAAAt8C,EAAAf,SAAAs5C,EAAAv4C,KAAA,OAGA,SAAAq+C,EAAAjE,EAAAl+B,GACA,MAAAk+B,EAAAyE,MAAwB,OAAAzE,EACxB,IAAA/vC,EAAA6R,EAAAk+B,EAAAl+B,KAAAk+B,EAAAj+B,MACA,OAAUnV,IAAAozC,EAAApzC,IAAAgzC,OAAAI,EAAAJ,OAAA99B,KAAA7R,EAAA8R,MAAA9R,GASV,SAAAy0C,EAAAviD,EAAAzB,EAAA0gB,GACA,IAAAujC,EAAAxiD,EAAAzB,MAAA4oC,EAAAnnC,EAAA0K,KAAA+3C,cACAD,GAAAjkD,GAA2ByB,EAAA0iD,YAAAnkD,GAC3B4oC,GAAAnnC,EAAAonB,KAA2BpnB,EAAA2iD,QAC3B,IACA,OAAA1jC,IACG,QACHujC,GAAAjkD,GAA6ByB,EAAA0iD,YAAAF,GAC7Brb,GAAAnnC,EAAAonB,KAAA+f,GAAuCA,EAAAwb,SAmCvC,IAAAC,EAAA,kBAiCA,IAAAC,EAAA,KAAAC,EAAA,KAAAC,GAAA,EACA,SAAAn0B,EAAA5uB,EAAAzB,EAAAk5B,GACA,OAAAorB,GAAAtkD,GAAAukD,GAAArrB,EAAiDsrB,GACjDF,EAAAtkD,EAAsBukD,EAAArrB,EACtBsrB,EAAA,MAAAtrB,GAAA,QAAAA,EAjEA,SAAAz3B,EAAAzB,EAAAk5B,GACA,IAAAkgB,EAAAp5C,EAAAiC,UACAkqB,EAAA,MAAA+M,EAAAkgB,EAAAxsB,QAAArM,IAAA64B,EAAAzsB,OAAAysB,EAAAxsB,QAAA7pB,IAAAq2C,EAAAzsB,OACA,OAAAq3B,EAAAviD,EAAAzB,EAAA,WAGA,IAFA,IACA6oB,EADApnB,EAAAihD,QAAAU,WAAAj3B,EAAAjqB,KACAgD,OACW,CACX,IAAAu/C,EAAAhjD,EAAAihD,QAAAC,YAAA95B,GAAA,GACA,IAAA47B,EAAqB,MACrB,GAAAA,EAAAv/C,KAAAioB,QAAA,CAAiCtE,EAAA47B,EAAA57B,IAAmB,MACpDA,EAAA47B,EAAA57B,IAAA1N,WAGA,IADA,IAAA2lC,EAAAqC,EAAA1hD,EAAA0qB,EAAAjqB,KACA0H,EAAAif,EAAAhf,WAAoCD,EAAOA,IAAAE,YAAA,CAC3C,IAAA46C,OAAA,EACA,MAAA96C,EAAAzF,SAAgCugD,EAAA96C,EAAA03C,qBAChC,OAAA13C,EAAAzF,SACY,SADyBugD,EAAAjH,EAAA7zC,EAAA,EAAAA,EAAAG,UAAAxJ,QAAA+gD,iBAErC,QAAAr+C,EAAA,EAAqBA,EAAAyhD,EAAAnkD,OAAkB0C,IAAA,CACvC,IAAAm/C,EAAAsC,EAAAzhD,GACA,GAAAm/C,EAAAlD,OAAAkD,EAAAl2C,MAAA,MAAAgtB,EAAAkpB,EAAAlD,OAAA4B,EAAA50C,IAAA,EAAAk2C,EAAAl2C,IAAA40C,EAAA5B,OAAA,GACW,UAGX,WA0CAyF,CAAAljD,EAAAzB,EAAAk5B,GApCA,SAAAz3B,EAAAzB,EAAAk5B,GACA,IACAvM,EADA3sB,EAAAiC,UACA0qB,MACA,IAAAA,EAAAnqB,OAAAypB,YAAkC,SAClC,IAAA7rB,EAAAusB,EAAA3pB,aAAA01C,GAAAt4C,EAAAgtB,EAAAhtB,GAAAusB,EAAAnqB,OAAAwkB,QAAAqG,KACA+rB,EAAAwL,eAGA,OAAAP,EAAA/tC,KAAAqW,EAAAnqB,OAAAmZ,cAAAy9B,EAAAyL,OAGAb,EAAAviD,EAAAzB,EAAA,WAMA,IAAA8kD,EAAA1L,EAAAuF,WAAA,GAAAoG,EAAA3L,EAAA4L,UAAAC,EAAA7L,EAAA8L,YACAC,EAAA/L,EAAAgM,eACAhM,EAAAyL,OAAA,OAAA3rB,EAAA,aACA,IACA/vB,IADAwjB,EAAApO,MAAA9c,EAAAihD,QAAA2C,YAAA14B,EAAA7nB,UAAArD,EAAAonB,KACAjb,SAAA,GAAAwrC,EAAA4L,UAAA7gD,SAAAi1C,EAAA4L,UAAA5L,EAAA4L,UAAA7pC,aACA4pC,GAAA3L,EAAA4L,WAAAC,GAAA7L,EAAA8L,YAKA,OAHA9L,EAAAkM,kBACAlM,EAAAzV,SAAAmhB,GACA,MAAAK,IAA+B/L,EAAAgM,eAAAD,GAC/Bh8C,IAlBK,QAAA+vB,GAAA,YAAAA,EAAAwf,EAAAtrB,EA4BLm4B,CAAA9jD,EAAAzB,EAAAk5B,IAsFA,IAIIq4D,EAAQ,SAAA/uF,EAAAwJ,EAAA6c,EAAA6oB,GACZ5xC,KAAA0C,SACA1C,KAAAkM,WACAlM,KAAA+oB,MAGAA,EAAAw1B,WAAAv+C,KAGAA,KAAA4xC,aACA5xC,KAAA2lD,MAdA,GAiBAzkC,GAA0B0kC,gBAAkBzkC,cAAA,GAAqBoM,MAAQpM,cAAA,GAAqBiiC,QAAUjiC,cAAA,GAAqB2hC,WAAa3hC,cAAA,GAAqBgiC,YAAchiC,cAAA,GAAqB4hC,UAAY5hC,cAAA,GAAqB0kC,UAAY1kC,cAAA,GAAqB2kC,aAAe3kC,cAAA,IAInRswE,EAAQ/qF,UAAAq/C,cAAA,WAAsD,UAC9D0rC,EAAQ/qF,UAAAs/C,YAAA,WAAkD,UAC1DyrC,EAAQ/qF,UAAAu/C,YAAA,WAAkD,UAC1DwrC,EAAQ/qF,UAAAw/C,YAAA,WAAkD,UAE1DhlC,EAAA0kC,eAAAllC,IAAA,WAAqD,UAMrD+wE,EAAQ/qF,UAAAy/C,UAAA,WAA8C,aAKtDsrC,EAAQ/qF,UAAA0/C,UAAA,WAA8C,UAGtDllC,EAAAqM,KAAA7M,IAAA,WAEA,IADA,IAAA6M,EAAA,EACApqB,EAAA,EAAiBA,EAAAnD,KAAAkM,SAAAzL,OAA0B0C,IAAOoqB,GAAAvtB,KAAAkM,SAAA/I,GAAAoqB,KAClD,OAAAA,GAKArM,EAAAkiC,OAAA1iC,IAAA,WAA6C,UAE7C+wE,EAAQ/qF,UAAA2/C,QAAA,WACRrmD,KAAA0C,OAAA,KACA1C,KAAA+oB,IAAAw1B,YAAAv+C,OAAoCA,KAAA+oB,IAAAw1B,WAAA,MACpC,QAAAp7C,EAAA,EAAiBA,EAAAnD,KAAAkM,SAAAzL,OAA0B0C,IACtCnD,KAAAkM,SAAA/I,GAAAkjD,WAGLorC,EAAQ/qF,UAAA4/C,eAAA,SAAAx8C,GACR,QAAA3G,EAAA,EAAAf,EAAApC,KAAAmjD,WAAwChgD,EAAAnD,KAAAkM,SAAAzL,OAA0B0C,IAAA,CAClE,IAAAy4B,EAAA57B,KAAAkM,SAAA/I,GACA,GAAAy4B,GAAA9xB,EAAuB,OAAA1H,EACvBA,GAAAw5B,EAAArO,OAIArM,EAAA4hC,UAAApiC,IAAA,WACA,OAAA1gB,KAAA0C,OAAA4jD,eAAAtmD,OAGAkhB,EAAAiiC,WAAAziC,IAAA,WACA,OAAA1gB,KAAA0C,OAAA1C,KAAA0C,OAAA4jD,eAAAtmD,WAAAojD,OAAA,GAGAliC,EAAA6hC,SAAAriC,IAAA,WACA,OAAA1gB,KAAA8iD,UAAA9iD,KAAAutB,MAGArM,EAAA2kC,SAAAnlC,IAAA,WACA,OAAA1gB,KAAAmjD,WAAAnjD,KAAAutB,KAAA,EAAAvtB,KAAAojD,QAIAquC,EAAQ/qF,UAAA6/C,gBAAA,SAAAx9B,EAAAzoB,EAAAg5B,GAGR,GAAAt5B,KAAA4xC,YAAA5xC,KAAA4xC,WAAA9jC,SAAA,GAAAib,EAAA1kB,SAAA0kB,IAAA1N,YAAA,CACA,GAAAie,EAAA,GACA,IAAAktB,EAAA/L,EACA,GAAA1xB,GAAA/oB,KAAA4xC,WACA4U,EAAAz9B,EAAAipB,WAAA1xC,EAAA,OACO,CACP,KAAAyoB,EAAA1N,YAAArb,KAAA4xC,YAAmD7oB,IAAA1N,WACnDmrC,EAAAz9B,EAAA4nB,gBAEA,KAAA6V,MAAA/L,EAAA+L,EAAAjI,aAAA9D,EAAA/3C,QAAA1C,OAAoFwmD,IAAA7V,gBACpF,OAAA6V,EAAAxmD,KAAAsmD,eAAA7L,KAAAltB,KAAAvtB,KAAAmjD,WAEA,IAAAsD,EAAAC,EACA,GAAA39B,GAAA/oB,KAAA4xC,WACA6U,EAAA19B,EAAAipB,WAAA1xC,OACO,CACP,KAAAyoB,EAAA1N,YAAArb,KAAA4xC,YAAmD7oB,IAAA1N,WACnDorC,EAAA19B,EAAA/e,YAEA,KAAAy8C,MAAAC,EAAAD,EAAAlI,aAAAmI,EAAAhkD,QAAA1C,OAAsFymD,IAAAz8C,YACtF,OAAAy8C,EAAAzmD,KAAAsmD,eAAAI,GAAA1mD,KAAA6lD,SAMA,IAAAv4B,EACA,GAAAttB,KAAA4xC,YAAA5xC,KAAA4xC,YAAA5xC,KAAA+oB,KAAA/oB,KAAA+oB,IAAAjb,SAAA9N,KAAA4xC,YACAtkB,EAAA,EAAAvE,EAAA2pB,wBAAA1yC,KAAA4xC,iBACG,GAAA5xC,KAAA+oB,IAAAhf,WAAA,CACH,MAAAzJ,EAAsB,QAAAmoC,EAAA1f,GAAwB0f,IAAAptB,WAAA,CAC9C,GAAAotB,GAAAzoC,KAAA+oB,IAAA,CAA+BuE,GAAA,EAAe,MAC9C,GAAAmb,EAAAptB,WAAAtR,YAAA0+B,EAAmD,MAEnD,SAAAnb,GAAAhtB,GAAAyoB,EAAAipB,WAAAvxC,OAA2D,QAAAkmD,EAAA59B,GAA0B49B,IAAAtrC,WAAA,CACrF,GAAAsrC,GAAA3mD,KAAA+oB,IAAA,CAAiCuE,GAAA,EAAc,MAC/C,GAAAq5B,EAAAtrC,WAAA6Q,WAAAy6B,EAAsD,OAGtD,aAAAr5B,EAAAgM,EAAA,EAAAhM,GAAAttB,KAAA6lD,SAAA7lD,KAAAmjD,YAKAsuC,EAAQ/qF,UAAAm8C,YAAA,SAAA95B,EAAA69B,GACR,QAAAzpB,GAAA,EAAAvB,EAAA7S,EAAmC6S,EAAKA,IAAAvgB,WAAA,CACxC,IAAAo/B,EAAAz6C,KAAA6mD,QAAAjrB,GACA,GAAA6e,KAAAmM,GAAAnM,EAAAr1C,MAAA,CAEA,IAAA+3B,IAAAsd,EAAAqM,UACA,GAAArM,EAAAqM,QAAAziD,SAAAo2C,EAAAqM,QAAAh5C,SAAA,GAAAib,EAAA1kB,SAAA0kB,IAAA1N,YAAAo/B,EAAAqM,SAAA/9B,GAGS,OAAA0xB,EAFAtd,GAAA,KAOTs0D,EAAQ/qF,UAAAmgD,QAAA,SAAA99B,GAER,IADA,IAAA0xB,EAAA1xB,EAAAw1B,WACA3iB,EAAA6e,EAAsB7e,EAAKA,IAAAl5B,OAAoB,GAAAk5B,GAAA57B,KAAmB,OAAAy6C,GAGlEg3C,EAAQ/qF,UAAAs8C,WAAA,SAAAj6B,EAAAzoB,EAAAg5B,GACR,QAAAmF,EAAA1V,EAAsB0V,EAAMA,IAAApjB,WAAA,CAC5B,IAAAo/B,EAAAz6C,KAAA6mD,QAAApoB,GACA,GAAAgc,EAAe,OAAAA,EAAA8L,gBAAAx9B,EAAAzoB,EAAAg5B,GAEf,UAMAm4D,EAAQ/qF,UAAAqgD,OAAA,SAAA3kD,GACR,QAAAe,EAAA,EAAA7C,EAAA,EAA6B6C,EAAAnD,KAAAkM,SAAAzL,OAA0B0C,IAAA,CACvD,IAAA2G,EAAA9J,KAAAkM,SAAA/I,GAAA/C,EAAAE,EAAAwJ,EAAAyjB,KACA,GAAAjtB,GAAA8B,GAAAhC,GAAAE,EAAA,CACA,MAAAwJ,EAAAs5C,QAAAt5C,EAAAoC,SAAAzL,QAAsDqJ,IAAAoC,SAAA,GACtD,OAAApC,EAEA,GAAA1H,EAAAhC,EAAoB,OAAA0J,EAAAi9C,OAAA3kD,EAAA9B,EAAAwJ,EAAAs5C,QACpB9iD,EAAAF,IAKAqxF,EAAQ/qF,UAAA48C,WAAA,SAAAlhD,GACR,IAAApC,KAAA4xC,WAAyB,OAASxsC,KAAApF,KAAA+oB,IAAAzoB,OAAA,GAClC,QAAAA,EAAA,EAAA6C,EAAA,GAA8BA,IAAA,CAC9B,GAAA7C,GAAA8B,EAAA,CACA,KAAAe,EAAAnD,KAAAkM,SAAAzL,SAAAT,KAAAkM,SAAA/I,GAAAyiD,gBAAA5lD,KAAAkM,SAAA/I,GAAA4lB,IAAA1N,YAAArb,KAAA4xC,aAAmIzuC,IACnI,OAAciC,KAAApF,KAAA4xC,WACdtxC,OAAA6C,GAAAnD,KAAAkM,SAAAzL,OAAAT,KAAA4xC,WAAAI,WAAAvxC,OAAAg9C,EAAAz9C,KAAAkM,SAAA/I,GAAA4lB,MAEA,GAAA5lB,GAAAnD,KAAAkM,SAAAzL,OAAoC,UAAAgG,MAAA,oBAAArE,GACpC,IAAA0H,EAAA9J,KAAAkM,SAAA/I,GAAA/C,EAAAE,EAAAwJ,EAAAyjB,KACA,GAAAnrB,EAAAhC,EAAoB,OAAA0J,EAAAw5C,WAAAlhD,EAAA9B,EAAAwJ,EAAAs5C,QACpB9iD,EAAAF,IAMAqxF,EAAQ/qF,UAAAsgD,WAAA,SAAAplD,EAAAC,EAAA42B,GAGR,QAFA,IAAAA,MAAA,GAEA,GAAAz4B,KAAAkM,SAAAzL,OACK,OAAS2E,KAAApF,KAAA4xC,WAAAhwC,OAAAC,KAAAolD,WAAA,EAAAC,SAAAlnD,KAAA4xC,WAAAI,WAAAvxC,QAGd,IADA,IAAAwmD,GAAA,EAAAC,GAAA,EACA5mD,EAAAm4B,EAAAt1B,EAAA,GAAiCA,IAAA,CACjC,IAAA2G,EAAA9J,KAAAkM,SAAA/I,GAAA/C,EAAAE,EAAAwJ,EAAAyjB,KACA,OAAA05B,GAAArlD,GAAAxB,EAAA,CACA,IAAA+mD,EAAA7mD,EAAAwJ,EAAAs5C,OAEA,GAAAxhD,GAAAulD,GAAAtlD,GAAAzB,EAAA0J,EAAAs5C,QAAAt5C,EAAA1E,MACA0E,EAAA8nC,YAAA5xC,KAAA4xC,WAAA9jC,SAAAhE,EAAA8nC,YACS,OAAA9nC,EAAAk9C,WAAAplD,EAAAC,EAAAslD,GAETvlD,EAAAtB,EACA,QAAAsD,EAAAT,EAAqBS,EAAA,EAAOA,IAAA,CAC5B,IAAAxC,EAAApB,KAAAkM,SAAAtI,EAAA,GACA,GAAAxC,EAAAmsB,MAAAnsB,EAAA2nB,IAAA1N,YAAArb,KAAA4xC,aAAAxwC,EAAAgmD,aAAA,IACAH,EAAAxJ,EAAAr8C,EAAA2nB,KAAA,EACA,MAEAnnB,GAAAR,EAAAmsB,MAEA,GAAA05B,IAA6BA,EAAA,GAE7B,GAAAA,GAAA,IAAA7mD,EAAAyB,GAAAsB,GAAAnD,KAAAkM,SAAAzL,OAAA,IACAoB,EAAAzB,EACA,QAAAinD,EAAAlkD,EAAA,EAA2BkkD,EAAArnD,KAAAkM,SAAAzL,OAA4B4mD,IAAA,CACvD,IAAAlpC,EAAAne,KAAAkM,SAAAm7C,GACA,GAAAlpC,EAAAoP,MAAApP,EAAA4K,IAAA1N,YAAArb,KAAA4xC,aAAAzzB,EAAAipC,cAAA,IACAF,EAAAzJ,EAAAt/B,EAAA4K,KACA,MAEAlnB,GAAAsc,EAAAoP,MAEA,GAAA25B,IAA2BA,EAAAlnD,KAAA4xC,WAAAI,WAAAvxC,QAC3B,MAEAH,EAAAF,EAEA,OAAUgF,KAAApF,KAAA4xC,WAAAhwC,OAAAC,KAAAolD,aAAAC,aAGVuqC,EAAQ/qF,UAAA0gD,aAAA,SAAAn7B,GACR,GAAAjsB,KAAAojD,SAAApjD,KAAA4xC,aAAA5xC,KAAAkM,SAAAzL,OAAiE,SACjE,IAAAqJ,EAAA9J,KAAAkM,SAAA+f,EAAA,IAAAjsB,KAAAkM,SAAAzL,OAAA,GACA,UAAAqJ,EAAAyjB,MAAAzjB,EAAAs9C,aAAAn7B,IAIAwlE,EAAQ/qF,UAAA6+C,YAAA,SAAAnjD,GACR,IAAArB,EAAAf,KAAAsjD,WAAAlhD,GACAgD,EAAArE,EAAAqE,KACA9E,EAAAS,EAAAT,OACA,MAAA8E,EAAAf,UAAA/D,GAAA8E,EAAA4sC,WAAAvxC,OACK,UAAA4xB,WAAA,qBAAAjwB,GACL,OAAAgD,EAAA4sC,WAAA1xC,IASAmxF,EAAQ/qF,UAAAof,aAAA,SAAAwyB,EAAA5J,EAAAriC,EAAAi7C,GAGR,IADA,IAAA1lD,EAAAoB,KAAAyd,IAAA63B,EAAA5J,GAAA7sC,EAAAmB,KAAAC,IAAAq1C,EAAA5J,GACAvrC,EAAA,EAAA7C,EAAA,EAA6B6C,EAAAnD,KAAAkM,SAAAzL,OAA0B0C,IAAA,CACvD,IAAA2G,EAAA9J,KAAAkM,SAAA/I,GAAA/C,EAAAE,EAAAwJ,EAAAyjB,KACA,GAAA3rB,EAAAtB,GAAAuB,EAAAzB,EACO,OAAA0J,EAAAgc,aAAAwyB,EAAAh4C,EAAAwJ,EAAAs5C,OAAA1U,EAAApuC,EAAAwJ,EAAAs5C,OAAA/2C,EAAAi7C,GACPhnD,EAAAF,EAGA,IAAAmnD,EAAAvnD,KAAAsjD,WAAAhL,GAAAkP,EAAAxnD,KAAAsjD,WAAA5U,GACA+P,EAAApyC,EAAAy4C,eAEA,GAAAwC,IACAvJ,EAAAwJ,EAAAniD,KAAAmiD,EAAAjnD,OAAAm+C,EAAAiJ,WAAAjJ,EAAAkJ,gBACA5J,EAAAyJ,EAAApiD,KAAAoiD,EAAAlnD,OAAAm+C,EAAAyG,UAAAzG,EAAA2G,aAFA,CAOA,IAAAssC,GAAA,EACA,GAAMF,EAAM10C,OAAAxE,GAAA5J,EAAA,CACZ,IAAAttC,EAAAmmD,EAAAniD,KAAA4sC,WAAAuV,EAAAjnD,OAAA,GACAc,GAAA,MAAAA,EAAAoI,WAAwCkoF,GAAA,GAKxC,IAAA9pC,GAAA,EACA,IAAAnJ,EAAAoJ,QAAAvP,GAAA5J,KAAAgjD,EAAA,CACAjzC,EAAAqJ,SAAAP,EAAAniD,KAAAmiD,EAAAjnD,QACA,IACAg4C,GAAA5J,GAA2B+P,EAAAoJ,OAAAL,EAAApiD,KAAAoiD,EAAAlnD,QAC3BsnD,GAAA,EACK,MAAAzgD,GAKL,KAAAA,aAAA4gD,cAA2C,MAAA5gD,GAG3C,IAAAygD,EAAA,CACA,GAAAtP,EAAA5J,EAAA,CAAwB,IAAAvJ,EAAAoiB,EAAqBA,EAAAC,EAAqBA,EAAAriB,EAClE,IAAAxgC,EAAA+W,SAAAkiC,cACAj5C,EAAAk5C,OAAA2J,EAAApiD,KAAAoiD,EAAAlnD,QACAqE,EAAAm5C,SAAAyJ,EAAAniD,KAAAmiD,EAAAjnD,QACAm+C,EAAA+G,kBACA/G,EAAA5a,SAAAl/B,MAKA8sF,EAAQ/qF,UAAAshD,eAAA,SAAAC,GACR,OAAAjoD,KAAA4xC,YAAA,aAAAqW,EAAAtlD,MAGAue,EAAA4kC,YAAAplC,IAAA,WACA,OAAA1gB,KAAA4xC,YAAA5xC,KAAA4xC,YAAA5xC,KAAA+oB,MAAA/oB,KAAA+oB,IAAAjb,SAAA9N,KAAA4xC,aAKA6/C,EAAQ/qF,UAAAwhD,UAAA,SAAAtmD,EAAAC,GACR,QAAAvB,EAAA,EAAA6C,EAAA,EAA6BA,EAAAnD,KAAAkM,SAAAzL,OAA0B0C,IAAA,CACvD,IAAA2G,EAAA9J,KAAAkM,SAAA/I,GAAA/C,EAAAE,EAAAwJ,EAAAyjB,KACA,GAAAjtB,GAAAF,EAAAwB,GAAAxB,GAAAyB,GAAAvB,EAAAsB,EAAAxB,GAAAyB,EAAAvB,EAAA,CACA,IAAA6nD,EAAA7nD,EAAAwJ,EAAAs5C,OAAAgF,EAAAhoD,EAAA0J,EAAAs5C,OACA,GAAAxhD,GAAAumD,GAAAtmD,GAAAumD,EAKA,OAJApoD,KAAA2lD,MAAA/jD,GAAAtB,GAAAuB,GAAAzB,EArUA,SAsUAwB,GAAAumD,GAAAtmD,GAAAumD,IACAt+C,EAAAg8C,aAAAh8C,EAAAif,IAAA1N,YAAArb,KAAA4xC,WACc9nC,EAAAo+C,UAAAtmD,EAAAumD,EAAAtmD,EAAAsmD,GAD+Dr+C,EAAA67C,MAvU7E,GA2UA77C,EAAA67C,MA3UA,EA8UArlD,EAAAF,EAEAJ,KAAA2lD,MAhVA,GAmVA8rC,EAAQ/qF,UAAA2hD,iBAAA,WAER,IADA,IAAAjgC,EAAA,EACAhjB,EAAApF,KAAA0C,OAA8B0C,EAAMA,IAAA1C,OAAA0lB,IAAA,CACpC,IAAAu9B,EAAA,GAAAv9B,EAtVA,IAuVAhjB,EAAAugD,UAA6BvgD,EAAAugD,WAI7B7gD,OAAAuc,iBAAyBowE,EAAQ/qF,UAAAwa,GAIjC,IAAAonC,KAIAC,EAAA,SAAA7C,GACA,SAAA6C,EAAA7lD,EAAA8lD,EAAA7mD,EAAAS,GACA,IAAA89B,EAAAnX,EAAAy/B,EAAA7lD,KAAA4kB,MAKA,GAJA,mBAAAwB,IAAmCA,IAAApnB,EAAA,WACnC,OAAAu+B,EACAA,EAAAx9B,OAAwBw9B,EAAAx9B,OAAA4jD,eAAApmB,QAAxB,EADkB99B,MAGlBomD,EAAA7lD,KAAAC,KAAA8yC,IAAA,CACA,MAAA3sB,EAAA1kB,SAAA,CACA,IAAAU,EAAA2W,SAAAC,cAAA,QACA5W,EAAAisC,YAAAjoB,GACAA,EAAAhkB,EAEAgkB,EAAAu1B,iBAAA,EACAv1B,EAAA0/B,UAAAn8C,IAAA,sBAEAo5C,EAAA9+C,KAAA5G,KAAA0C,EAAA4lD,EAAAv/B,EAAA,MACA/oB,KAAAwoD,SACAtoB,EAAAlgC,KAGA0lD,IAAA6C,EAAA5+C,UAAA+7C,GACA6C,EAAA7hD,UAAA5B,OAAA4Q,OAAAgwC,KAAAh/C,WACA6hD,EAAA7hD,UAAAiG,YAAA47C,EAEA,IAAAjsB,GAA8BspB,gBAAkBzkC,cAAA,IAuBhD,OArBAmb,EAAAspB,eAAAllC,IAAA,WACA,OAAA1gB,KAAAwoD,OAAA7lD,KAAAspB,KAAA,GAGAs8B,EAAA7hD,UAAAq/C,cAAA,SAAAyC,GACA,OAnYA,GAmYAxoD,KAAA2lD,OAAA6C,EAAA7lD,KAAAo4B,GAAA/6B,KAAAwoD,OAAA7lD,OAGA4lD,EAAA7hD,UAAAy/C,UAAA,WAA8D,OAASr9C,QAAA,IAEvEy/C,EAAA7hD,UAAA0/C,UAAA,SAAAj8C,GACA,IAAAu+C,EAAA1oD,KAAAwoD,OAAA5lD,KAAAwjD,UACA,QAAAsC,KAAAv+C,IAGAo+C,EAAA7hD,UAAAshD,eAAA,SAAAC,GACA,mBAAAA,EAAAtlD,MAAA3C,KAAAwoD,OAAA5lD,KAAA+lD,iBAGA7jD,OAAAuc,iBAAAknC,EAAA7hD,UAAA41B,GAEAisB,EAhDA,CAiDEkpC,GAEF7oC,EAAA,SAAAlD,GACA,SAAAkD,EAAAlmD,EAAAqmB,EAAA8/B,EAAA5pD,GACAymD,EAAA9+C,KAAA5G,KAAA0C,EAAA4lD,EAAAv/B,EAAA,MACA/oB,KAAA6oD,UACA7oD,KAAAf,OAGAymD,IAAAkD,EAAAj/C,UAAA+7C,GACAkD,EAAAliD,UAAA5B,OAAA4Q,OAAAgwC,KAAAh/C,WACAkiD,EAAAliD,UAAAiG,YAAAi8C,EAEA,IAAA7jB,GAA8BxX,MAAQpM,cAAA,IAmBtC,OAjBA4jB,EAAAxX,KAAA7M,IAAA,WAA+C,OAAA1gB,KAAAf,KAAAwB,QAE/CmoD,EAAAliD,UAAA6/C,gBAAA,SAAAx9B,EAAAzoB,GACA,OAAAyoB,GAAA/oB,KAAA6oD,QAA8B7oD,KAAAmjD,YAAA7iD,EAAAN,KAAAutB,KAAA,GAC9BvtB,KAAAmjD,WAAA7iD,GAGAsoD,EAAAliD,UAAA48C,WAAA,SAAAlhD,GACA,OAAYgD,KAAApF,KAAA6oD,QAAAvoD,OAAA8B,IAGZwmD,EAAAliD,UAAAshD,eAAA,SAAAc,GACA,wBAAAA,EAAAnmD,MAAAmmD,EAAA3+B,OAAAlgB,WAAA6+C,EAAAC,UAGAjkD,OAAAuc,iBAAAunC,EAAAliD,UAAAq+B,GAEA6jB,EA9BA,CA+BE6oC,GAOEE,EAAY,SAAAjsC,GAChB,SAAAsD,EAAAtmD,EAAAg4B,EAAA3R,EAAA6oB,GACA8T,EAAA9+C,KAAA5G,KAAA0C,KAAAqmB,EAAA6oB,GACA5xC,KAAA06B,OAwCA,OArCAgrB,IAAAsD,EAAAr/C,UAAA+7C,GACAsD,EAAAtiD,UAAA5B,OAAA4Q,OAAAgwC,KAAAh/C,WACAsiD,EAAAtiD,UAAAiG,YAAAq8C,EAEAA,EAAAtzC,OAAA,SAAAhT,EAAAg4B,EAAA1c,EAAArc,GACA,IAAAsnD,EAAAtnD,EAAAunD,UAAAxuB,EAAA/3B,KAAA0K,MACAzK,EAAAqmD,KAAAvuB,EAAA/4B,EAAAqc,GAGA,OAFApb,KAAAmmB,MACOnmB,EAAQkd,EAAA,cAAa+zB,WAAAn4B,SAAAgf,EAAA/3B,KAAAC,KAAA2kB,MAAAmT,EAAA1c,KAC5B,IAAAgrC,EAAAtmD,EAAAg4B,EAAA93B,EAAAmmB,IAAAnmB,EAAAgvC,YAAAhvC,EAAAmmB,MAGAigC,EAAAtiD,UAAAy/C,UAAA,WAA4D,OAASzrB,KAAA16B,KAAA06B,KAAA/3B,KAAA0K,KAAA7I,MAAAxE,KAAA06B,KAAAl2B,MAAAqtC,eAAA7xC,KAAA4xC,aAErEoX,EAAAtiD,UAAAs/C,YAAA,SAAAtrB,GAAoE,OAhdpE,GAgdoE16B,KAAA2lD,OAAA3lD,KAAA06B,KAAAK,GAAAL,IAEpEsuB,EAAAtiD,UAAAwhD,UAAA,SAAAtmD,EAAAC,GAGA,GAFA6jD,EAAAh/C,UAAAwhD,UAAAthD,KAAA5G,KAAA4B,EAAAC,GAndA,GAqdA7B,KAAA2lD,MAAA,CAEA,IADA,IAAAjjD,EAAA1C,KAAA0C,QACAA,EAAA0C,MAA4B1C,WAC5BA,EAAAijD,MAAA3lD,KAAA2lD,QAAsCjjD,EAAAijD,MAAA3lD,KAAA2lD,OACtC3lD,KAAA2lD,MAzdA,IA6dAqD,EAAAtiD,UAAAlG,MAAA,SAAAoB,EAAAC,EAAAF,GACA,IAAA6sB,EAAAw6B,EAAAtzC,OAAA1V,KAAA0C,OAAA1C,KAAA06B,MAAA,EAAA/4B,GACA8lB,EAAAznB,KAAAkM,SAAAqhB,EAAAvtB,KAAAutB,KACA1rB,EAAA0rB,IAAoB9F,EAAA0hC,GAAA1hC,EAAA5lB,EAAA0rB,EAAA5rB,IACpBC,EAAA,IAAmB6lB,EAAA0hC,GAAA1hC,EAAA,EAAA7lB,EAAAD,IACnB,QAAAwB,EAAA,EAAmBA,EAAAskB,EAAAhnB,OAAkB0C,IAAOskB,EAAAtkB,GAAAT,OAAA8rB,EAE5C,OADAA,EAAAtiB,SAAAub,EACA+G,GAGAw6B,EA3CgB,CA4CdyoC,GAKEG,EAAY,SAAAlsC,GAChB,SAAA0D,EAAA1mD,EAAA0C,EAAAikD,EAAAC,EAAAvgC,EAAA6oB,EAAAkV,EAAAnlD,EAAAS,GACAsjD,EAAA9+C,KAAA5G,KAAA0C,EAAA0C,EAAAsyB,OAAA4wB,KAAAv/B,EAAA6oB,GACA5xC,KAAA8mD,UACA9mD,KAAAoF,OACApF,KAAAqpD,YACArpD,KAAAspD,YACA1X,GAAqB5xC,KAAAupD,eAAA5nD,EAAAS,GAGrBsjD,IAAA0D,EAAAz/C,UAAA+7C,GACA0D,EAAA1iD,UAAA5B,OAAA4Q,OAAAgwC,KAAAh/C,WACA0iD,EAAA1iD,UAAAiG,YAAAy8C,EAEA,IAAAnjB,GAA8B1Y,MAAQpM,cAAA,GAAqBiiC,QAAUjiC,cAAA,IA6MrE,OAlMAioC,EAAA1zC,OAAA,SAAAhT,EAAA0C,EAAAikD,EAAAC,EAAA3nD,EAAAS,GACA,IAAA4N,EAEAw5C,EAAAP,EAAAtnD,EAAAunD,UAAA9jD,EAAAzC,KAAA0K,MACAzK,EAAAqmD,KAAA7jD,EAAAzD,EAAA,WAGA,OAAA6nD,EACAA,EAAA9mD,OAA2B8mD,EAAA9mD,OAAA4jD,eAAAkD,QAA3B,EADqBpnD,GAEhBinD,GAELtgC,EAAAnmB,KAAAmmB,IAAA6oB,EAAAhvC,KAAAgvC,WACA,GAAAxsC,EAAA47B,OACA,GAAAjY,GACA,MAAAA,EAAA1kB,SAAmC,UAAAguB,WAAA,iDADlBtJ,EAAArN,SAAA81B,eAAApsC,EAAAnG,WAEZ8pB,IACmBA,GAAxB/Y,EAAW8P,EAAA,cAAa+zB,WAAAn4B,SAAAtW,EAAAzC,KAAAC,KAAA2kB,MAAAniB,KAAA2jB,IAAA6oB,EAAA5hC,EAAA4hC,YAExBA,GAAAxsC,EAAA47B,QAAA,MAAAjY,EAAAvf,WACAuf,EAAAC,aAAA,qBAAiDD,EAAAu1B,iBAAA,GACjDl5C,EAAAzC,KAAAC,KAAAykB,YAAqC0B,EAAA1B,WAAA,IAGrC,IAAAy/B,EAAA/9B,EAGA,OAFAA,EAAA0gC,GAAA1gC,EAAAsgC,EAAAjkD,GAEAxC,EACO4mD,EAAA,IAAAE,EAAAhnD,EAAA0C,EAAAikD,EAAAC,EAAAvgC,EAAA6oB,EAAAkV,EACPlkD,EAAAjB,EAAAS,EAAA,GACAgD,EAAA47B,OACO,IAAA2oB,EAAAjnD,EAAA0C,EAAAikD,EAAAC,EAAAvgC,EAAA+9B,EAAAnlD,GAEA,IAAAynD,EAAA1mD,EAAA0C,EAAAikD,EAAAC,EAAAvgC,EAAA6oB,EAAAkV,EAAAnlD,EAAAS,EAAA,IAGPgnD,EAAA1iD,UAAAy/C,UAAA,WACA,IAAAnkC,EAAAhiB,KAGA,GAAAA,KAAAoF,KAAAzC,KAAAC,KAAAgnD,cAA4C,YAK5C,IAAA70C,GAAgB3P,KAAApF,KAAAoF,KAAAzC,KAAA0K,KAAA7I,MAAAxE,KAAAoF,KAAAZ,OAIhB,OAHAxE,KAAAoF,KAAAzC,KAAAC,KAAAC,OAAmCkS,EAAAgT,mBAAA,QACnC/nB,KAAA4xC,aAAA5xC,KAAA8lD,YAA+C/wC,EAAA88B,eAAA7xC,KAAA4xC,WACrC78B,EAAA48B,WAAA,WAAgC,OAAA3vB,EAAA4vB,WAA4B9xB,EAAA,SAAQS,MAAAyB,EAAA5c,KAAA8hB,SAC9EnS,GAGAq0C,EAAA1iD,UAAAu/C,YAAA,SAAA7gD,EAAAikD,EAAAC,GACA,OA1jBA,GA0jBAtpD,KAAA2lD,OAAAvgD,EAAA21B,GAAA/6B,KAAAoF,OACAykD,GAAAR,EAAArpD,KAAAqpD,YAAAC,EAAAvuB,GAAA/6B,KAAAspD,YAGArjB,EAAA1Y,KAAA7M,IAAA,WAA+C,OAAA1gB,KAAAoF,KAAA8oB,UAE/C+X,EAAAmd,OAAA1iC,IAAA,WAAiD,OAAA1gB,KAAAoF,KAAAsyB,OAAA,KAMjD0xB,EAAA1iD,UAAA6iD,eAAA,SAAA5nD,EAAAS,GACA,IAAA4f,EAAAhiB,KAEAge,EAAAhe,KAAAoF,KAAA8pB,cAAA8uB,EAAA57C,EACA0nD,EAAA9rC,GAAArc,EAAAW,WAAAtC,KAAA+pD,qBAAApoD,EAAAS,GACA4nD,EAAA,IAAAC,GAAAjqD,KAAA8pD,KAAA1kD,OAqkBA,SAAA1C,EAAAwnD,EAAAC,EAAAC,GACA,IAAAC,EAAAH,EAAAG,OAAA3nD,GAAApC,EAAA,EAEA,MAAA+pD,EAAA5pD,OAAA,CACA,QAAA0C,EAAA,EAAmBA,EAAAT,EAAAymB,WAAuBhmB,IAAA,CAC1C,IAAA2G,EAAApH,EAAAoH,MAAA3G,GACAinD,EAAAtgD,EAAAugD,EAAAH,EAAAI,SAAAhqD,EAAAwJ,GAAA3G,GACA7C,GAAAwJ,EAAAokB,SAEA,OAIA,IADA,IAAAq8B,EAAA,EAAAzhB,KAAA0hB,EAAA,KACAC,EAAA,IAA4B,CAC5B,GAAAF,EAAAF,EAAA5pD,QAAA4pD,EAAAE,GAAA1oD,IAAAvB,EAAA,CAEA,IADA,IAAAkoD,EAAA6B,EAAAE,KAAAG,OAAA,EACAH,EAAAF,EAAA5pD,QAAA4pD,EAAAE,GAAA1oD,IAAAvB,IACSoqD,OAAAlC,KAAAt+C,KAAAmgD,EAAAE,MACT,GAAAG,EAAA,CACAA,EAAAvnB,KAAAwnB,IACA,QAAA96B,EAAA,EAAyBA,EAAA66B,EAAAjqD,OAAsBovB,IAASs6B,EAAAO,EAAA76B,GAAA46B,IAAAD,QAExDL,EAAA3B,EAAAiC,IAAAD,GAIA,IAAAI,OAAA,EAAAtlD,OAAA,EACA,GAAAklD,EACAllD,GAAA,EACAslD,EAAAJ,EACAA,EAAA,SACK,MAAAC,EAAA/nD,EAAAymB,YAIL,MAHA7jB,EAAAmlD,EACAG,EAAAloD,EAAAoH,MAAA2gD,KAKA,QAAAlsB,EAAA,EAAqBA,EAAAuK,EAAAroC,OAAqB89B,IAASuK,EAAAvK,GAAA18B,IAAAvB,GAAgCwoC,EAAA59B,OAAAqzB,IAAA,GACnF,KAAAgsB,EAAAF,EAAA5pD,QAAA4pD,EAAAE,GAAA3oD,MAAAtB,GAAA+pD,EAAAE,GAAA1oD,GAAAvB,GACOwoC,EAAA5+B,KAAAmgD,EAAAE,MAEP,IAAAnqD,EAAAE,EAAAsqD,EAAA18B,SACA,GAAA08B,EAAA5pB,OAAA,CACA,IAAA6pB,EAAAzqD,EACAmqD,EAAAF,EAAA5pD,QAAA4pD,EAAAE,GAAA3oD,KAAAipD,IAAwEA,EAAAR,EAAAE,GAAA3oD,MACxE,QAAAkpD,EAAA,EAAuBA,EAAAhiB,EAAAroC,OAAqBqqD,IAAShiB,EAAAgiB,GAAAjpD,GAAAgpD,IAA8BA,EAAA/hB,EAAAgiB,GAAAjpD,IACnFgpD,EAAAzqD,IACAoqD,EAAAI,EAAAzpB,IAAA0pB,EAAAvqD,GACAsqD,IAAAzpB,IAAA,EAAA0pB,EAAAvqD,GACAF,EAAAyqD,EACAvlD,GAAA,GAIA,IAAA+jD,EAAAvgB,EAAAroC,OACAmqD,EAAAjxB,WAAAixB,EAAAlzB,OAAAoR,EAAAluB,OAAA,SAAAvb,GAA4E,OAAAA,EAAA2e,SAC5E8qB,EAAAtoC,QAFA8nD,EAGA8B,EAAAQ,EAAAvB,EAAAa,EAAAI,SAAAhqD,EAAAsqD,GAAAtlD,GACAhF,EAAAF,GA/nBA2qD,CAAA/qD,KAAAoF,KAAApF,KAAAspD,UAAA,SAAAd,EAAArlD,EAAA6nD,GACAxC,EAAA5lD,KAAAqB,MACS+lD,EAAAiB,YAAAzC,EAAA5lD,KAAAqB,MAAA+Z,EAAArc,GACT6mD,EAAA7lD,KAAAspB,MAAA,IAAA++B,GACShB,EAAAiB,YAAA9nD,GAAA6e,EAAA5c,KAAA+jB,WAAmDrJ,EAAA,KAAIojB,KAAAlhB,EAAA5c,KAAA0E,MAAA3G,GAAAc,MAAA+Z,EAAArc,GAGhEqoD,EAAAkB,YAAA1C,EAAA7mD,EAAAq8C,IACK,SAAAl0C,EAAAu/C,EAAAC,EAAAnmD,GAEL6mD,EAAAiB,YAAAnhD,EAAA7F,MAAA+Z,EAAArc,GAGAqoD,EAAAmB,cAAArhD,EAAAu/C,EAAAC,EAAAnmD,IAEA6mD,EAAAoB,eAAAthD,EAAAu/C,EAAAC,EAAA3nD,EAAAwB,IAEA6mD,EAAAjmB,QAAAj6B,EAAAu/C,EAAAC,EAAA3nD,EAAAq8C,GACAA,GAAAl0C,EAAAokB,WAGA87B,EAAAiB,YAAA3C,EAAAtqC,EAAArc,GACA3B,KAAAoF,KAAA+mB,aAAgC69B,EAAAqB,oBAChCrB,EAAAsB,eAGAtB,EAAAuB,SAtmBA,GAsmBAvrD,KAAA2lD,SAEAmE,GAAwB9pD,KAAAwrD,wBAAA7pD,EAAAmoD,GAgPxB,SAAA2B,EAAAC,EAAAC,EAAAhqD,GACA,IAAAonB,EAAA2iC,EAAA3hD,WAAA6hD,GAAA,EACA,QAAAzoD,EAAA,EAAiBA,EAAAwoD,EAAAlrD,OAAkB0C,IAAA,CACnC,IAAAs3C,EAAAkR,EAAAxoD,GAAA0oD,EAAApR,EAAA1xB,IACA,GAAA8iC,EAAAxwC,YAAAqwC,EAAA,CACA,KAAAG,GAAA9iC,GAA+BA,EAAA+iC,GAAA/iC,GAAe6iC,GAAA,EAC9C7iC,IAAA/e,iBAEA4hD,GAAA,EACAF,EAAAK,aAAAF,EAAA9iC,GAEA,GAAA0xB,aAAwBk3C,EAAY,CACpC,IAAAvvF,EAAA2mB,IAAA4nB,gBAAA+a,EAAAx/B,UACAu/B,EAAAhR,EAAA7I,WAAA6I,EAAAvuC,SAAAvK,GACAonB,EAAA3mB,IAAA4H,YAAA0hD,EAAA3hD,YAGA,KAAAgf,GAAeA,EAAA+iC,GAAA/iC,GAAe6iC,GAAA,EAC9BA,GAAAjqD,EAAAqqD,aAAAN,IAAiD/pD,EAAAqqD,YAAA,MAjQjDP,CAAAzrD,KAAA4xC,WAAA5xC,KAAAkM,SAAAvK,GACU6vF,EAAMt0C,KAumBhB,SAAAn0B,GACA,SAAAA,EAAAvf,UAAA,MAAAuf,EAAAvf,SAAA,CACA,IAAAyiD,EAAAljC,EAAAW,MAAAwiC,QACAnjC,EAAAW,MAAAwiC,QAAAD,EAAA,kCACAjvC,OAAAmvC,iBAAApjC,GAAAqjC,UACArjC,EAAAW,MAAAwiC,QAAAD,GA5mBuBI,CAAArsD,KAAA+oB,OAIvBqgC,EAAA1iD,UAAAqjD,qBAAA,SAAApoD,EAAAS,GAIA,IAAArB,EAAAY,EAAAzB,MAAAiC,UACAP,EAAAb,EAAAa,KACAC,EAAAd,EAAAc,GACA,OAAAF,EAAAzB,MAAAiC,qBAA0Cs+B,EAAA,gBAAa7+B,EAAAQ,GAAAP,EAAAO,EAAApC,KAAAoF,KAAA8hB,QAAAqG,MAAvD,CACA,IAAA+rB,EAAA33C,EAAA0K,KAAAy4C,eACAnS,EAmmBA,SAAAvtC,EAAA9E,GACA,OAAS,CACT,MAAA8E,EAAAf,SAA6B,OAAAe,EAC7B,MAAAA,EAAAf,UAAA/D,EAAA,GACA,GAAA8E,EAAA4sC,WAAAvxC,OAAAH,GAAA,GAAA8E,EAAA4sC,WAAA1xC,GAAA+D,SACS,OAAAe,EAAA4sC,WAAA1xC,GACT8E,IAAA4sC,WAAA1xC,EAAA,GACAA,EAAA4tB,EAAA9oB,OACK,SAAAA,EAAAf,UAAA/D,EAAA8E,EAAA4sC,WAAAvxC,QAIL,YAHA2E,IAAA4sC,WAAA1xC,GACAA,EAAA,IA7mBAgsD,CAAAhT,EAAA4L,UAAA5L,EAAA8L,aACA,GAAAzS,GAAA3yC,KAAA+oB,IAAAjb,SAAA6kC,EAAAt3B,YAAA,CAKA,IAAApc,EAAA0zC,EAAA1oC,UACAsiD,EA8mBA,SAAA5vB,EAAA19B,EAAA2C,EAAAC,GACA,QAAAsB,EAAA,EAAAf,EAAA,EAA0Be,EAAAw5B,EAAAxT,YAAA/mB,GAAAP,GAAkC,CAC5D,IAAAiI,EAAA6yB,EAAA7yB,MAAA3G,KAAAqpD,EAAApqD,EAEA,GADAA,GAAA0H,EAAAokB,SACApkB,EAAAk3B,OAAA,CAEA,IADA,IAAAuE,EAAAz7B,EAAA7K,KACAkE,EAAAw5B,EAAAxT,YAAA,CACA,IAAAhL,EAAAwe,EAAA7yB,MAAA3G,KAEA,GADAf,GAAA+b,EAAA+P,UACA/P,EAAA6iB,OAAyB,MACzBuE,GAAApnB,EAAAlf,KAEA,GAAAmD,GAAAR,EAAA,CACA,IAAA45B,EAAA+J,EAAAhlC,YAAAtB,EAAA4C,EAAA2qD,GACA,GAAAhxB,GAAA,GAAAA,EAAAv8B,EAAAwB,OAAA+rD,GAAA5qD,EACS,OAAA4qD,EAAAhxB,IAGT,SAhoBAixB,CAAAzsD,KAAAoF,KAAA8hB,QAAAjoB,EAAA2C,EAAAQ,EAAAP,EAAAO,GAEA,OAAAmqD,EAAA,QAAiCnnD,KAAAutC,EAAAvwC,IAAAmqD,EAAAttD,WAGjCmqD,EAAA1iD,UAAA8kD,wBAAA,SAAA7pD,EAAAZ,GACA,IAAAqE,EAAArE,EAAAqE,KACAhD,EAAArB,EAAAqB,IACAnD,EAAA8B,EAAA9B,KAGA,IAAAe,KAAA6mD,QAAAzhD,GAAA,CAIA,IADA,IAAAslC,EAAAtlC,EAEAslC,EAAArvB,YAAArb,KAAA4xC,WADWlH,IAAArvB,WAAA,CAEX,KAAAqvB,EAAAiG,iBAAuCjG,EAAArvB,WAAAqxC,YAAAhiB,EAAAiG,iBACvC,KAAAjG,EAAA1gC,aAAmC0gC,EAAArvB,WAAAqxC,YAAAhiB,EAAA1gC,aACnC0gC,EAAA6T,aAA+B7T,EAAA6T,WAAA,MAE/B,IAAA9D,EAAA,IAAAmO,EAAA5oD,KAAA0qC,EAAAtlC,EAAAnG,GACA0C,EAAAgrD,iBAAAziD,KAAAuwC,GAGAz6C,KAAAkM,SAAAi9C,GAAAnpD,KAAAkM,SAAA9J,IAAAnD,EAAAwB,OAAAkB,EAAA84C,KAMA2O,EAAA1iD,UAAAs5B,OAAA,SAAA56B,EAAAikD,EAAAC,EAAA3nD,GACA,QA9pBA,GA8pBA3B,KAAA2lD,QACAvgD,EAAA67B,WAAAjhC,KAAAoF,SACApF,KAAA4sD,YAAAxnD,EAAAikD,EAAAC,EAAA3nD,IACA,IAGAynD,EAAA1iD,UAAAkmD,YAAA,SAAAxnD,EAAAikD,EAAAC,EAAA3nD,GACA3B,KAAA6sD,gBAAAxD,GACArpD,KAAAoF,OACApF,KAAAspD,YACAtpD,KAAA4xC,YAA0B5xC,KAAAupD,eAAA5nD,EAAA3B,KAAAmjD,YAC1BnjD,KAAA2lD,MAzqBA,GA4qBAyD,EAAA1iD,UAAAmmD,gBAAA,SAAAxD,GACA,IAAAQ,GAAAR,EAAArpD,KAAAqpD,WAAA,CACA,IAAAyD,EAAA,GAAA9sD,KAAA8mD,QAAAziD,SACA0oD,EAAA/sD,KAAA+oB,IACA/oB,KAAA+oB,IAAAikC,GAAAhtD,KAAA+oB,IAAA/oB,KAAA8mD,QACAmG,GAAAjtD,KAAAqpD,UAAArpD,KAAAoF,KAAA0nD,GACAG,GAAA5D,EAAArpD,KAAAoF,KAAA0nD,IACA9sD,KAAA+oB,KAAAgkC,IACAA,EAAAxO,WAAA,KACAv+C,KAAA+oB,IAAAw1B,WAAAv+C,MAEAA,KAAAqpD,cAIAD,EAAA1iD,UAAAwmD,WAAA,WACAltD,KAAA8mD,QAAA2B,UAAAn8C,IAAA,6BACAtM,KAAA4xC,YAAA5xC,KAAAoF,KAAAzC,KAAAC,KAAAykB,YAA4DrnB,KAAA+oB,IAAA1B,WAAA,IAI5D+hC,EAAA1iD,UAAAymD,aAAA,WACAntD,KAAA8mD,QAAA2B,UAAAtoB,OAAA,6BACAngC,KAAA4xC,YAAA5xC,KAAAoF,KAAAzC,KAAAC,KAAAykB,WAA4DrnB,KAAA+oB,IAAAqkC,gBAAA,cAG5DtoD,OAAAuc,iBAAA+nC,EAAA1iD,UAAAu/B,GAEAmjB,EA3NgB,CA4NdqoC,GAIF,SAAApkC,EAAA7qD,EAAA6mD,EAAAC,EAAAvgC,EAAApnB,GAEA,OADA8nD,GAAA1gC,EAAAsgC,EAAA7mD,GACA,IAAaovF,EAAY,KAAApvF,EAAA6mD,EAAAC,EAAAvgC,MAAApnB,EAAA,GAGzB,IAAAgoD,EAAA,SAAAP,GACA,SAAAO,EAAAjnD,EAAA0C,EAAAikD,EAAAC,EAAAvgC,EAAA+9B,EAAAnlD,GACAynD,EAAAxiD,KAAA5G,KAAA0C,EAAA0C,EAAAikD,EAAAC,EAAAvgC,EAAA,KAAA+9B,EAAAnlD,GAkDA,OA/CAynD,IAAAO,EAAAhgD,UAAAy/C,GACAO,EAAAjjD,UAAA5B,OAAA4Q,OAAA0zC,KAAA1iD,WACAijD,EAAAjjD,UAAAiG,YAAAg9C,EAEAA,EAAAjjD,UAAAy/C,UAAA,WAEA,IADA,IAAA9tC,EAAArY,KAAA8mD,QAAAzrC,WACAhD,MAAArY,KAAA+oB,MAAA1Q,EAAAi1C,UAAwDj1C,IAAAgD,WACxD,OAAYhD,SAAA,IAGZsxC,EAAAjjD,UAAAs5B,OAAA,SAAA56B,EAAAikD,EAAAtmB,EAAAphC,GACA,QAluBA,GAkuBA3B,KAAA2lD,OAluBA,GAkuBA3lD,KAAA2lD,QAAA3lD,KAAAutD,aACAnoD,EAAA67B,WAAAjhC,KAAAoF,SACApF,KAAA6sD,gBAAAxD,GApuBA,GAquBArpD,KAAA2lD,OAAAvgD,EAAAnG,MAAAe,KAAAoF,KAAAnG,MAAAmG,EAAAnG,MAAAe,KAAA8mD,QAAA78C,YACAjK,KAAA8mD,QAAA78C,UAAA7E,EAAAnG,KACA0C,EAAAqqD,aAAAhsD,KAAA8mD,UAA6CnlD,EAAAqqD,YAAA,OAE7ChsD,KAAAoF,OACApF,KAAA2lD,MA1uBA,GA2uBA,IAGAgE,EAAAjjD,UAAA6mD,SAAA,WAEA,IADA,IAAA7B,EAAA1rD,KAAA0C,OAAAkvC,WACAxuB,EAAApjB,KAAA8mD,QAA8B1jC,EAAGA,IAAA/H,WAAoB,GAAA+H,GAAAsoC,EAAsB,SAC3E,UAGA/B,EAAAjjD,UAAA48C,WAAA,SAAAlhD,GACA,OAAYgD,KAAApF,KAAA8mD,QAAAxmD,OAAA8B,IAGZunD,EAAAjjD,UAAA6/C,gBAAA,SAAAx9B,EAAAzoB,EAAAg5B,GACA,OAAAvQ,GAAA/oB,KAAA8mD,QAA8B9mD,KAAAmjD,WAAAngD,KAAAyd,IAAAngB,EAAAN,KAAAoF,KAAAnG,KAAAwB,QAC9B2oD,EAAA1iD,UAAA6/C,gBAAA3/C,KAAA5G,KAAA+oB,EAAAzoB,EAAAg5B,IAGAqwB,EAAAjjD,UAAAshD,eAAA,SAAAC,GACA,uBAAAA,EAAAtlD,MAAA,aAAAslD,EAAAtlD,MAGAgnD,EAAAjjD,UAAAlG,MAAA,SAAAoB,EAAAC,EAAAF,GACA,IAAAyD,EAAApF,KAAAoF,KAAA+7B,IAAAv/B,EAAAC,GAAAknB,EAAArN,SAAA81B,eAAApsC,EAAAnG,MACA,WAAA0qD,EAAA3pD,KAAA0C,OAAA0C,EAAApF,KAAAqpD,UAAArpD,KAAAspD,UAAAvgC,IAAApnB,IAGAgoD,EApDA,CAqDEioC,GAIFpkC,EAAA,SAAA9H,GACA,SAAA8H,IACA9H,EAAAvkD,MAAAnB,KAAAqwB,WAUA,OAPAq1B,IAAA8H,EAAA7jD,UAAA+7C,GACA8H,EAAA9mD,UAAA5B,OAAA4Q,OAAAgwC,KAAAh/C,WACA8mD,EAAA9mD,UAAAiG,YAAA6gD,EAEAA,EAAA9mD,UAAAy/C,UAAA,WAA8D,OAASr9C,QAAA,IACvE0kD,EAAA9mD,UAAAw/C,YAAA,WAAkE,OArxBlE,GAqxBkElmD,KAAA2lD,OAElE6H,EAZA,CAaEikC,GAKF/nC,EAAA,SAAAN,GACA,SAAAM,EAAAhnD,EAAA0C,EAAAikD,EAAAC,EAAAvgC,EAAA6oB,EAAAkV,EAAAlkD,EAAAjB,EAAAS,GACAgnD,EAAAxiD,KAAA5G,KAAA0C,EAAA0C,EAAAikD,EAAAC,EAAAvgC,EAAA6oB,EAAAkV,EAAAnlD,EAAAS,GACApC,KAAA4C,OAiDA,OA9CAwmD,IAAAM,EAAA//C,UAAAy/C,GACAM,EAAAhjD,UAAA5B,OAAA4Q,OAAA0zC,KAAA1iD,WACAgjD,EAAAhjD,UAAAiG,YAAA+8C,EAKAA,EAAAhjD,UAAAs5B,OAAA,SAAA56B,EAAAikD,EAAAC,EAAA3nD,GACA,GA3yBA,GA2yBA3B,KAAA2lD,MAAmC,SACnC,GAAA3lD,KAAA4C,KAAAo9B,OAAA,CACA,IAAA32B,EAAArJ,KAAA4C,KAAAo9B,OAAA56B,EAAAikD,GAEA,OADAhgD,GAAmBrJ,KAAA4sD,YAAAxnD,EAAAikD,EAAAC,EAAA3nD,GACnB0H,EACK,SAAArJ,KAAA4xC,aAAAxsC,EAAAsyB,SAGL0xB,EAAA1iD,UAAAs5B,OAAAp5B,KAAA5G,KAAAoF,EAAAikD,EAAAC,EAAA3nD,IAIA+nD,EAAAhjD,UAAAwmD,WAAA,WACAltD,KAAA4C,KAAAsqD,WAAAltD,KAAA4C,KAAAsqD,aAAA9D,EAAA1iD,UAAAwmD,WAAAtmD,KAAA5G,OAGA0pD,EAAAhjD,UAAAymD,aAAA,WACAntD,KAAA4C,KAAAuqD,aAAAntD,KAAA4C,KAAAuqD,eAAA/D,EAAA1iD,UAAAymD,aAAAvmD,KAAA5G,OAGA0pD,EAAAhjD,UAAAof,aAAA,SAAAwyB,EAAA5J,EAAAriC,EAAAi7C,GACAtnD,KAAA4C,KAAAkjB,aAAA9lB,KAAA4C,KAAAkjB,aAAAwyB,EAAA5J,EAAAriC,GACA+8C,EAAA1iD,UAAAof,aAAAlf,KAAA5G,KAAAs4C,EAAA5J,EAAAriC,EAAAi7C,IAGAoC,EAAAhjD,UAAA2/C,QAAA,WACArmD,KAAA4C,KAAAyjD,SAA4BrmD,KAAA4C,KAAAyjD,UAC5B+C,EAAA1iD,UAAA2/C,QAAAz/C,KAAA5G,OAGA0pD,EAAAhjD,UAAA0/C,UAAA,SAAAj8C,GACA,QAAAnK,KAAA4C,KAAAwjD,WAAApmD,KAAA4C,KAAAwjD,UAAAj8C,IAGAu/C,EAAAhjD,UAAAshD,eAAA,SAAAC,GACA,OAAAjoD,KAAA4C,KAAAolD,eAAAhoD,KAAA4C,KAAAolD,eAAAC,GAAAmB,EAAA1iD,UAAAshD,eAAAphD,KAAA5G,KAAAioD,IAGAyB,EApDA,CAqDEkoC,GA2BF,SAAAnkC,EAAAjkD,GACAA,IAAiBxJ,KAAAwJ,YAEjBikD,EAAA/mD,UAAA5B,OAAA4Q,OAAA,MAEA,IAAAg4C,GAAA,IAAAD,GAEA,SAAAR,GAAA5D,EAAAjkD,EAAA0nD,GACA,MAAAzD,EAAA5oD,OAA8B,OAAAitD,EAI9B,IAFA,IAAAthD,EAAA0gD,EAAAY,EAAA,OAAAD,EAAApkD,GAAA+C,GAEAjJ,EAAA,EAAiBA,EAAAkmD,EAAA5oD,OAAsB0C,IAAA,CACvC,IAAAqB,EAAA6kD,EAAAlmD,GAAAR,KAAA6B,MAAAo3B,EAAAxvB,EACA,GAAA5H,EAIA,QAAA6I,KAHA7I,EAAAgF,UACOH,EAAAa,KAAA0xB,EAAA,IAAA6xB,EAAAjpD,EAAAgF,WAEPhF,EAAA,CACA,IAAAygC,EAAAzgC,EAAA6I,GACA,MAAA43B,IACA6nB,GAAA,GAAAzjD,EAAA5I,QACS4I,EAAAa,KAAA0xB,EAAAxvB,EAAA,IAAAqhD,EAAAroD,EAAAu0B,SAAA,eACT,SAAAtsB,EAA4BuuB,EAAA+xB,OAAA/xB,EAAA+xB,MAAA/xB,EAAA+xB,MAAA,QAAA1oB,EAC5B,SAAA53B,EAAiCuuB,EAAAlS,OAAAkS,EAAAlS,MAAAkS,EAAAlS,MAAA,IAAwC,IAAAub,EACzE,YAAA53B,IAAoCuuB,EAAAvuB,GAAA43B,KAIpC,OAAA57B,EAGA,SAAA2jD,GAAAY,EAAA9G,EAAA+G,EAAAC,GAEA,GAAAD,GAAAH,GAAAI,GAAAJ,EAAwD,OAAA5G,EAGxD,IADA,IAAAiH,EAAAjH,EACA3jD,EAAA,EAAiBA,EAAA2qD,EAAArtD,OAAwB0C,IAAA,CACzC,IAAA+mD,EAAA4D,EAAA3qD,GAAA/B,EAAAysD,EAAA1qD,GACA,GAAAA,EAAA,CACA,IAAAT,OAAA,EACAtB,KAAAoI,UAAA0gD,EAAA1gD,UAAAukD,GAAAH,IACAlrD,EAAAqrD,EAAA1yC,aAAA3Y,EAAAuxC,QAAAxqC,eAAAygD,EAAA1gD,SACAukD,EAAArrD,IAEAA,EAAAgZ,SAAAC,cAAAuuC,EAAA1gD,WACA8jD,UAAA,EACA5qD,EAAAsuC,YAAA+c,GACA3sD,EAAAssD,EAAA,GACAK,EAAArrD,GAGAsrD,GAAAD,EAAA3sD,GAAAssD,EAAA,GAAAxD,GAEA,OAAA6D,EAGA,SAAAC,GAAAjlC,EAAA3nB,EAAAw6B,GACA,QAAAvuB,KAAAjM,EACK,SAAAiM,GAAA,SAAAA,GAAA,YAAAA,QAAAuuB,GACE7S,EAAAqkC,gBAAA//C,GACP,QAAAs/B,KAAA/Q,EACK,SAAA+Q,GAAA,SAAAA,GAAA,YAAAA,GAAA/Q,EAAA+Q,IAAAvrC,EAAAurC,IACE5jB,EAAAurB,aAAA3H,EAAA/Q,EAAA+Q,IACP,GAAAvrC,EAAAusD,OAAA/xB,EAAA+xB,MAAA,CAGA,IAFA,IAAAM,EAAA7sD,EAAAusD,MAAAvsD,EAAAusD,MAAAv9C,MAAA,KAAAk4C,EACA4F,EAAAtyB,EAAA+xB,MAAA/xB,EAAA+xB,MAAAv9C,MAAA,KAAAk4C,EACAnlD,EAAA,EAAmBA,EAAA8qD,EAAAxtD,OAAqB0C,KAAO,GAAA+qD,EAAAlvB,QAAAivB,EAAA9qD,KACxC4lB,EAAA0/B,UAAAtoB,OAAA8tB,EAAA9qD,IACP,QAAA0sB,EAAA,EAAqBA,EAAAq+B,EAAAztD,OAAsBovB,KAAS,GAAAo+B,EAAAjvB,QAAAkvB,EAAAr+B,KAC7C9G,EAAA0/B,UAAAn8C,IAAA4hD,EAAAr+B,IAEP,GAAAzuB,EAAAsoB,OAAAkS,EAAAlS,MAAA,CACA,GAAAtoB,EAAAsoB,MAEA,IADA,IAA2F9Z,EAA3FrH,EAAA,gFACAqH,EAAArH,EAAAnF,KAAAhC,EAAAsoB,QACSX,EAAAW,MAAAykC,eAAAv+C,EAAA,IAETgsB,EAAAlS,QACOX,EAAAW,MAAAwiC,SAAAtwB,EAAAlS,QAIP,SAAA+/B,GAAA1gC,EAAAmhC,EAAA9kD,GACA,OAAA4nD,GAAAjkC,IAAA2kC,EAAAT,GAAA/C,EAAA9kD,EAAA,GAAA2jB,EAAA1kB,WAIA,SAAAwlD,GAAA5wB,EAAAC,GACA,GAAAD,EAAAx4B,QAAAy4B,EAAAz4B,OAA6B,SAC7B,QAAA0C,EAAA,EAAiBA,EAAA81B,EAAAx4B,OAAc0C,IAAO,IAAA81B,EAAA91B,GAAAR,KAAAo4B,GAAA7B,EAAA/1B,GAAAR,MAAgC,SACtE,SAIA,SAAAmpD,GAAA/iC,GACA,IAAA5K,EAAA4K,EAAA/e,YAEA,OADA+e,EAAA1N,WAAAqxC,YAAA3jC,GACA5K,EAKA,IAAA8rC,GAAA,SAAA79C,EAAAgiD,GACApuD,KAAAoM,MACApM,KAAAquD,KAAAD,EAGApuD,KAAAsF,MAAA,EAGAtF,KAAAmM,SAEAnM,KAAAurD,SAAA,EAEA,IAAAld,EA6JA,SAAA1R,EAAAgvB,GAEA,IADA,IAAAtiD,KAAAjJ,EAAAu8B,EAAAxT,WACAhmB,EAAAwoD,EAAAlrD,OAAA,EAAgCL,EAAA,GAAA+C,GAAA,EAAmBA,IAAA,CACnD,IAAAs3C,EAAAkR,EAAAxoD,GAAAiC,EAAAq1C,EAAAr1C,KACA,GAAAA,EAAA,CACA,GAAAA,GAAAu3B,EAAA7yB,MAAA1J,EAAA,GAAsC,MACtCiJ,EAAAa,KAAAuwC,KACAr6C,GAEA,OAAUqnB,MAAApe,EAAA4B,UAAA3K,OAAAF,GAtKVkuD,CAAAliD,EAAAhH,KAAA8hB,QAAA9a,EAAAF,UACAlM,KAAAuuD,WAAAlgB,EAAA5mB,MACAznB,KAAAwuD,eAAAngB,EAAA/tC,QAuKA,SAAAqqD,GAAA1xB,EAAAC,GAA4B,OAAAD,EAAAt2B,KAAAspB,KAAAiN,EAAAv2B,KAAAspB,KA6H5B,SAAAk9B,GAAA1hC,EAAA7lB,EAAAC,EAAAF,EAAA8kC,GAEA,IADA,IAAAp9B,KACAlG,EAAA,EAAA66C,EAAA,EAA0B76C,EAAAskB,EAAAhnB,OAAkB0C,IAAA,CAC5C,IAAA2G,EAAA2d,EAAAtkB,GAAAhD,EAAA69C,EAAA59C,EAAA49C,GAAAl0C,EAAAyjB,KACAptB,GAAA0B,GAAAzB,GAAAwB,EACAyH,EAAAa,KAAAJ,IAEA3J,EAAAyB,GAAyByH,EAAAa,KAAAJ,EAAAtJ,MAAA,EAAAoB,EAAAzB,EAAAwB,IACzB8kC,IACAp9B,EAAAa,KAAAu8B,GACAA,EAAA,MAEArmC,EAAAyB,GAAqBwH,EAAAa,KAAAJ,EAAAtJ,MAAAqB,EAAA1B,EAAA2J,EAAAyjB,KAAA5rB,KAGrB,OAAA0H,EAGA,SAAAsnD,GAAAzwD,EAAAk5B,GACA,IAAAr4B,EAAAb,EAAAiC,UACA2qB,EAAA/rB,EAAA+rB,QACAD,EAAA9rB,EAAA8rB,MACA+jC,EAAAx3B,EAAA,EAAAtM,EAAA7pB,IAAA4pB,GAAAC,EAAArM,IAAAoM,GACA1nB,EAAAyrD,EAAAluD,OAAAwsB,cAAA0hC,EAAAnyC,MAAAve,EAAAsC,IAAAC,QAAA22B,EAAA,EAAAw3B,EAAAn+C,QAAAm+C,EAAA5rD,UAAA,KAAA4rD,EACA,OAAAzrD,GAAmBs7B,EAAA,UAAS9R,SAAAxpB,EAAAi0B,GAG5B,SAAAj4B,GAAAQ,EAAA23C,GAEA,OADA33C,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAAmlB,aAAAwzB,GAAAtzB,mBACA,EAGA,SAAA6qC,GAAAlvD,EAAAy3B,EAAA03B,GACA,IAAAxX,EAAA33C,EAAAzB,MAAAiC,UACA,KAAAm3C,aAAqB7Y,EAAA,eAuBlB,IAAA6Y,aAAyB7Y,EAAA,eAAa6Y,EAAAl0C,KAAAu0B,SACzC,OAAAx4B,GAAAQ,EAAA,IAA2B8+B,EAAA,cAAarH,EAAA,EAAAkgB,EAAA9sB,IAAA8sB,EAAA/2C,QAExC,IAAA2lC,EAAAyoB,GAAAhvD,EAAAzB,MAAAk5B,GACA,QAAA8O,GAAiB/mC,GAAAQ,EAAAumC,GA1BjB,IAAAoR,EAAA/4B,OAAAuwC,EAAA9xB,QAAA,QACA,SACK,GAAAr9B,EAAA4uB,eAAA6I,EAAA,mBACL,IAAAjb,EAAAwyC,GAAAhvD,EAAAzB,MAAAk5B,GACA,SAAAjb,gBAAmCsiB,EAAA,gBAAiBt/B,GAAAQ,EAAAwc,GAE/C,KAAYqzE,EAAM90C,KAAAoU,EAAA9xB,QAAA,UACvB,IAAAyb,EAAA5tB,EAAAysB,EAAAzsB,MAAAznB,EAAAynB,EAAAwX,WAAA,KAAAjL,EAAA,EAAAvM,EAAA5nB,WAAA4nB,EAAAmB,UACA,IAAA5oB,KAAA47B,OAAiC,SACjC,IAAA+vB,EAAA33B,EAAA,EAAAvM,EAAAzqB,IAAAgD,EAAA8oB,SAAArB,EAAAzqB,IACA,SAAAgD,EAAAsrB,SAAA+pB,EAAA94C,EAAAihD,QAAAmE,OAAAgK,MAAAtW,EAAA7I,cACUnR,EAAA,cAAajQ,aAAAprB,GACvBjE,GAAAQ,EAAA,IAA+B8+B,EAAA,cAAarH,EAAA,EAAAz3B,EAAAzB,MAAAsC,IAAAC,QAAAoqB,EAAAzqB,IAAAgD,EAAA8oB,UAAArB,MAC3B2kE,EAAMp0C,QAIvBj8C,GAAAQ,EAAA,IAA+B8+B,EAAA,cAAa9+B,EAAAzB,MAAAsC,IAAAC,QAAA22B,EAAA,EAAA23B,IAAA3rD,EAAA8oB,cAc5C,SAAA8iC,GAAA5rD,GACA,UAAAA,EAAAf,SAAAe,EAAA6E,UAAAxJ,OAAA2E,EAAA4sC,WAAAvxC,OAGA,SAAAwwD,GAAAloC,GACA,IAAA0xB,EAAA1xB,EAAAw1B,WACA,OAAA9D,GAAA,GAAAA,EAAAltB,OAAAxE,EAAA/e,aAAA,MAAA+e,EAAAvf,UAKA,SAAA0nD,GAAAvvD,GACA,IAAA23C,EAAA33C,EAAA0K,KAAAy4C,eACA1/C,EAAAk0C,EAAA4L,UAAA5kD,EAAAg5C,EAAA8L,YACA,GAAAhgD,EAAA,CACA,IAAA+rD,EAAAC,EAAA9J,GAAA,EAKA,IADMkqC,EAAM10C,OAAA,GAAA13C,EAAAf,UAAA/D,EAAA0wD,GAAA5rD,IAAA6rD,GAAA7rD,EAAA4sC,WAAA1xC,MAAiGgnD,GAAA,KAE7G,GAAAhnD,EAAA,GACA,MAAA8E,EAAAf,SACA,MAEA,IAAAW,EAAAI,EAAA4sC,WAAA1xC,EAAA,GACA,GAAA2wD,GAAAjsD,GACAmsD,EAAA/rD,EACAgsD,IAAA9wD,MACS,OAAA0E,EAAAX,SAGO,MADhB/D,GADA8E,EAAAJ,GACAiF,UAAAxJ,YAGK,IAAA4wD,GAAAjsD,GACL,MAGA,IADA,IAAAhE,EAAAgE,EAAAurC,gBACAvvC,GAAA6vD,GAAA7vD,IACA+vD,EAAA/rD,EAAAiW,WACA+1C,EAAA3T,EAAAr8C,GACAA,IAAAuvC,gBAEA,GAAAvvC,EAMAd,EAAA0wD,GADA5rD,EAAAhE,OALA,CAEA,IADAgE,IAAAiW,aACA1Z,EAAAonB,IAA+B,MAC/BzoB,EAAA,GAOAgnD,EAAcgK,GAAA3vD,EAAA23C,EAAAl0C,EAAA9E,GACd6wD,GAAsBG,GAAA3vD,EAAA23C,EAAA6X,EAAAC,IAKtB,SAAAG,GAAA5vD,GACA,IAAA23C,EAAA33C,EAAA0K,KAAAy4C,eACA1/C,EAAAk0C,EAAA4L,UAAA5kD,EAAAg5C,EAAA8L,YACA,GAAAhgD,EAAA,CAGA,IAFA,IACA+rD,EAAAC,EADAhhC,EAAA4gC,GAAA5rD,KAGA,GAAA9E,EAAA8vB,EAAA,CACA,MAAAhrB,EAAAf,SAA+B,MAE/B,IAAA4sD,GADA7rD,EAAA4sC,WAAA1xC,IAKY,MAHZ6wD,EAAA/rD,EACAgsD,IAAA9wD,MAGK,IAAA+wD,GAAAjsD,GACL,MAGA,IADA,IAAA+Y,EAAA/Y,EAAA4E,YACAmU,GAAA8yC,GAAA9yC,IACAgzC,EAAAhzC,EAAA9C,WACA+1C,EAAA3T,EAAAt/B,GAAA,EACAA,IAAAnU,YAEA,GAAAmU,EAMA7d,EAAA,EACA8vB,EAAA4gC,GAFA5rD,EAAA+Y,OALA,CAEA,IADA/Y,IAAAiW,aACA1Z,EAAAonB,IAA+B,MAC/BzoB,EAAA8vB,EAAA,GAQA+gC,GAAiBG,GAAA3vD,EAAA23C,EAAA6X,EAAAC,IAGjB,SAAAC,GAAAtoC,GACA,IAAA0xB,EAAA1xB,EAAAw1B,WACA,OAAA9D,KAAAr1C,MAAAq1C,EAAAr1C,KAAAioB,QAGA,SAAAikC,GAAA3vD,EAAA23C,EAAAl0C,EAAA9E,GACA,GAAAk+C,EAAAlF,GAAA,CACA,IAAA30C,EAAA+W,SAAAkiC,cACAj5C,EAAAk5C,OAAAz4C,EAAA9E,GACAqE,EAAAm5C,SAAA14C,EAAA9E,GACAg5C,EAAAkM,kBACAlM,EAAAzV,SAAAl/B,QACG20C,EAAAuO,QACHvO,EAAAuO,OAAAziD,EAAA9E,GAEAqB,EAAAutD,YAAAc,kBAOA,SAAAwB,GAAA7vD,EAAAy3B,EAAA03B,GACA,IAAAxX,EAAA33C,EAAAzB,MAAAiC,UACA,GAAAm3C,aAAqB7Y,EAAA,gBAAa6Y,EAAA/4B,OAAAuwC,EAAA9xB,QAAA,QAA2C,SAC7E,GAAMwyD,EAAM90C,KAAAoU,EAAA9xB,QAAA,QAAiC,SAC7C,IAAAz8B,EAAA+2C,EAAA/2C,MACAiqB,EAAA8sB,EAAA9sB,IAEA,IAAAjqB,EAAAG,OAAAwsB,eAAAvtB,EAAA4uB,eAAA6I,EAAA,gBACA,IAAAjb,EAAAwyC,GAAAhvD,EAAAzB,MAAAk5B,GACA,GAAAjb,gBAAiCsiB,EAAA,cAC1B,OAAAt/B,GAAAQ,EAAAwc,GAEP,IAAA5b,EAAAG,OAAAwsB,cAAA,CACA,IAAAuiC,EAAiBhxB,EAAA,UAAS9R,SAAAyK,EAAA,EAAA72B,EAAAiqB,EAAA4M,GAC1B,OAAAq4B,GAAAtwD,GAAAQ,EAAA8vD,GAEA,SAGA,SAAAC,GAAA/vD,EAAAy3B,GACA,KAAAz3B,EAAAzB,MAAAiC,qBAAwCs+B,EAAA,eAAiB,SACzD,IAAA1/B,EAAAY,EAAAzB,MAAAiC,UACA0qB,EAAA9rB,EAAA8rB,MACAC,EAAA/rB,EAAA+rB,QACAvM,EAAAxf,EAAAwf,MACA,IAAAsM,EAAAE,WAAAD,GAAmC,SACnC,IAAAvM,EAAe,SACf,GAAA5e,EAAA4uB,eAAA6I,EAAA,wBAA8D,SAC9D,IAAAu4B,GAAA9kC,EAAAwX,aAAAjL,EAAA,EAAAvM,EAAA5nB,WAAA4nB,EAAAmB,WACA,GAAA2jC,MAAA3wB,OAAA,CACA,IAAArgC,EAAAgB,EAAAzB,MAAAS,GAIA,OAHAy4B,EAAA,EAAkBz4B,EAAA+D,OAAAmoB,EAAAzqB,IAAAuvD,EAAAzjC,SAAArB,EAAAzqB,KACRzB,EAAA+D,OAAAmoB,EAAAzqB,IAAAyqB,EAAAzqB,IAAAuvD,EAAAzjC,UACVvsB,EAAA0B,SAAA1C,IACA,EAEA,SAGA,SAAAixD,GAAAjwD,EAAAyD,EAAAlF,GACAyB,EAAAutD,YAAAxG,OACAtjD,EAAAk5C,gBAAAp+C,EACAyB,EAAAutD,YAAA/uD,QAoCA,SAAA0xD,GAAAlwD,EAAAwI,GACA,IAAAtH,EAAAsH,EAAA40C,QAAA+R,EAVA,SAAA3mD,GACA,IAAAd,EAAA,GAKA,OAJAc,EAAA2nD,UAAsBzoD,GAAA,KACtBc,EAAA4nD,UAAsB1oD,GAAA,KACtBc,EAAA6nD,SAAqB3oD,GAAA,KACrBc,EAAA8nD,WAAuB5oD,GAAA,KACvBA,EAIA6oD,CAAA/nD,GACA,UAAAtH,GAAoB2uF,EAAM90C,KAAA,IAAA75C,GAAA,KAAAiuD,EAC1BY,GAAA/vD,GAAA,IAAAuvD,GAAAvvD,GACG,IAAAkB,GAAyB2uF,EAAM90C,KAAA,IAAA75C,GAAA,KAAAiuD,EAClCY,GAAA/vD,EAAA,IAAA4vD,GAAA5vD,GACG,IAAAkB,GAAA,IAAAA,IAEA,IAAAA,EACHguD,GAAAlvD,GAAA,EAAAmvD,IAAAI,GAAAvvD,GACG,IAAAkB,EACHguD,GAAAlvD,EAAA,EAAAmvD,IAAAS,GAAA5vD,GACG,IAAAkB,EACH2uD,GAAA7vD,GAAA,EAAAmvD,IAAAI,GAAAvvD,GACG,IAAAkB,EA3CH,SAAAlB,GACA,GAAO6vF,EAAMx0C,UAAAr7C,EAAAzB,MAAAiC,UAAA0qB,MAAA3pB,aAAA,GAAb,CACA,IAAAnC,EAAAY,EAAA0K,KAAAy4C,eACAI,EAAAnkD,EAAAmkD,UACAE,EAAArkD,EAAAqkD,YACA,GAAAF,GAAA,GAAAA,EAAA7gD,UAAA,GAAA+gD,GACAF,EAAAn7C,YAAA,SAAAm7C,EAAAn7C,WAAAu0C,gBAAA,CACA,IAAAx0C,EAAAo7C,EAAAn7C,WACA6nD,GAAAjwD,EAAAmI,GAAA,GACA7H,WAAA,WAA4B,OAAA2vD,GAAAjwD,EAAAmI,GAAA,IAA6C,MAmCzE+nF,CAAAlwF,IAAA6vD,GAAA7vD,EAAA,EAAAmvD,IAAAS,GAAA5vD,GACGmvD,IAAmB0gC,EAAM90C,IAAA,WAC5B,IAAA75C,GAAA,IAAAA,GAAA,IAAAA,GAAA,IAAAA,IAMA,SAAA4rD,GAAA9sD,EAAAoX,GACA,IAAA0lC,EAAA98C,EAAA0K,KAAAy4C,eAAAtiD,EAAAb,EAAAzB,MAAAsC,IACA,IAAAi8C,EAAAyG,UAA0B,YAC1B,IAAArC,EAAAlhD,EAAAihD,QAAAC,YAAApE,EAAAyG,WAAAwJ,EAAA7L,GAAA,GAAAA,EAAAt1B,KACAmhB,EAAA/sC,EAAAihD,QAAAI,WAAAvE,EAAAyG,UAAAzG,EAAA2G,aACA,GAAA1W,EAAA,EAAiB,YACjB,IAAA5hB,EAAA3qB,EAAA0qB,EAAArqB,EAAAC,QAAAisC,GACA,GAAA8P,EAAAC,GAAA,CAEA,IADA3xB,EAAAD,EACAg2B,MAAAz9C,MAA8Cy9C,IAAAngD,OAC9C,GAAAmgD,KAAAz9C,KAAAsrB,QAAkD+P,EAAA,cAAajQ,aAAAqyB,EAAAz9C,OAAAy9C,EAAAngD,UAC/DmgD,EAAAz9C,KAAAu0B,WAjnEA,SAAAv0B,EAAA9E,EAAAoC,GACA,QAAAk2C,EAAA,GAAAt4C,EAAAgtB,EAAAhtB,GAAA4tB,EAAA9oB,GAAmEwzC,GAAAtrB,GAAkB,CACrF,GAAAloB,GAAA1C,EAAyB,SACzB,IAAA4C,EAAAm4C,EAAAr4C,GAEA,KADAA,IAAAiW,YACgB,SAChBu9B,KAAA,GAAAtzC,EACAgoB,KAAAhoB,GAAA4oB,EAAA9oB,IA0mEAupD,CAAAlQ,EAAAyG,UAAAzG,EAAA2G,YAAAvC,EAAA95B,MAAA,CACA,IAAA3mB,EAAAygD,EAAAC,UACA3gD,EAAA,IAAsBs+B,EAAA,cAAaiO,GAAAtsC,EAAAyqB,EAAArqB,EAAAC,QAAAL,SAEhC,CACH,IAAAk2C,EAAA32C,EAAAihD,QAAAI,WAAAvE,EAAAiJ,WAAAjJ,EAAAkJ,cACA,GAAArP,EAAA,EAAqB,YACrBxrB,EAAAtqB,EAAAC,QAAA61C,GAGAn2C,IAEAA,EAAAysD,GAAAjtD,EAAAmrB,EAAAD,EADA,WAAA9T,GAAApX,EAAAzB,MAAAiC,UAAAusC,KAAA7hB,EAAAzqB,MAAAssD,EAAA,OAGA,OAAAvsD,EAGA,SAAA0sD,GAAAltD,EAAA2lD,GACA,IAAAhO,EAAA33C,EAAAzB,MAAAiC,UAGA,GAFA2sD,GAAAntD,EAAA23C,GAEA33C,EAAAotD,SAAAptD,EAAAqtD,WACAC,GAAAttD,IAAA+Z,SAAA0oC,eAAA1oC,SAAA0oC,cAAAt2C,SAAAnM,EAAAonB,KADA,CAKA,GAFApnB,EAAAutD,YAAAC,sBAEAxtD,EAAAytD,eAwEA,SAAAztD,GACA,IAAA88C,EAAA98C,EAAA0K,KAAAy4C,eAAAngD,EAAA+W,SAAAkiC,cACAx4C,EAAAzD,EAAAytD,cAAArmC,IAAAsmC,EAAA,OAAAjqD,EAAAoE,SACA6lD,EAAY1qD,EAAAk5C,OAAAz4C,EAAAiW,WAAAoiC,EAAAr4C,GAAA,GACJT,EAAAk5C,OAAAz4C,EAAA,GACRT,EAAAmjD,UAAA,GACArJ,EAAA+G,kBACA/G,EAAA5a,SAAAl/B,IAMA0qD,IAAA1tD,EAAAzB,MAAAiC,UAAA62C,SAA+Cw4C,EAAM70C,IAAO60C,EAAM50C,YAAA,KAClEx3C,EAAAkqD,UAAA,EACAlqD,EAAAkqD,UAAA,GAtFAC,CAAA5tD,OACG,CACH,IAEA6tD,EAAAC,EAFAnX,EAAAgB,EAAAhB,OACA5J,EAAA4K,EAAA5K,MAEAghB,IAAApW,aAA0D7Y,EAAA,gBAC1D6Y,EAAA/2C,MAAAG,OAAAwsB,gBACSsgC,EAAAG,GAAAhuD,EAAA23C,EAAA13C,OACT03C,EAAA/4B,OAAA+4B,EAAA/2C,MAAAG,OAAAwsB,gBACSugC,EAAAE,GAAAhuD,EAAA23C,EAAAz3C,MAETF,EAAAihD,QAAA98B,aAAAwyB,EAAA5J,EAAA/sC,EAAA0K,KAAAi7C,GACAoI,KACAF,GAA8BI,GAAAJ,GAC9BC,GAA4BG,GAAAH,IAE5BnW,EAAAN,QACAr3C,EAAAonB,IAAA0/B,UAAAtoB,OAAA,8BAEAx+B,EAAAonB,IAAA0/B,UAAAn8C,IAAA,6BACA,sBAAAoP,UAsCA,SAAA/Z,GACA,IAAAa,EAAAb,EAAAonB,IAAAwoB,cACA/uC,EAAAqtD,oBAAA,kBAAAluD,EAAAmuD,oBACA,IAAArR,EAAA98C,EAAA0K,KAAAy4C,eACA1/C,EAAAq5C,EAAAiJ,WAAApnD,EAAAm+C,EAAAkJ,aACAnlD,EAAAya,iBAAA,kBAAAtb,EAAAmuD,mBAAA,WACArR,EAAAiJ,YAAAtiD,GAAAq5C,EAAAkJ,cAAArnD,IACAkC,EAAAqtD,oBAAA,kBAAAluD,EAAAmuD,oBACAnuD,EAAAonB,IAAA0/B,UAAAtoB,OAAA,gCA9C4C4vB,CAAApuD,IAI5CA,EAAAutD,YAAAc,kBACAruD,EAAAutD,YAAAe,oBA9nBAhG,GAAAvjD,UAAAwpD,YAAA,SAAA5qD,GACA,OAAAA,GAAAtF,KAAAwuD,eAAAxuD,KAAAuuD,WAAAjpD,EAAAtF,KAAAwuD,gBAAA,MAKAvE,GAAAvjD,UAAAypD,eAAA,SAAAhwD,EAAAC,GACA,GAAAD,GAAAC,EAAA,CACA,QAAA+C,EAAAhD,EAAqBgD,EAAA/C,EAAS+C,IAAOnD,KAAAoM,IAAAF,SAAA/I,GAAAkjD,UACrCrmD,KAAAoM,IAAAF,SAAAhB,OAAA/K,EAAAC,EAAAD,GACAH,KAAAurD,SAAA,IAIAtB,GAAAvjD,UAAA4kD,YAAA,WACAtrD,KAAAmwD,eAAAnwD,KAAAsF,MAAAtF,KAAAoM,IAAAF,SAAAzL,SAMAwpD,GAAAvjD,UAAAukD,YAAA,SAAAhnD,EAAA+Z,EAAArc,GAGA,IAFA,IAAA4xC,EAAA,EAAA90B,EAAAze,KAAAmM,MAAA1L,QAAA,EACA2vD,EAAAptD,KAAAyd,IAAAhC,EAAAxa,EAAAxD,QACA8yC,EAAA6c,IACA7c,GAAA90B,EAAA,EAAAze,KAAAoM,IAAApM,KAAAmM,MAAAonC,EAAA,OAAAyS,YAAA/hD,EAAAsvC,MAAA,IAAAtvC,EAAAsvC,GAAA5wC,KAAAC,KAAA6wC,UACKF,IAEL,KAAAA,EAAA90B,GACAze,KAAAsrD,cACAtrD,KAAAoM,IAAAu5C,MAngCA,EAogCA3lD,KAAAsF,MAAAtF,KAAAmM,MAAAhB,MACAnL,KAAAoM,IAAApM,KAAAmM,MAAAhB,MACAsT,IAEA,KAAAA,EAAAxa,EAAAxD,QAAA,CACAT,KAAAmM,MAAAjC,KAAAlK,KAAAoM,IAAApM,KAAAsF,MAAA,GAEA,IADA,IAAAk2B,GAAA,EACAr4B,EAAAnD,KAAAsF,MAA4BnC,EAAAH,KAAAyd,IAAAzgB,KAAAsF,MAAA,EAAAtF,KAAAoM,IAAAF,SAAAzL,QAAwD0C,IACpF,GAAAnD,KAAAoM,IAAAF,SAAA/I,GAAA6iD,YAAA/hD,EAAAwa,IAAA,CAA2D+c,EAAAr4B,EAAW,MAEtE,GAAAq4B,GAAA,EACAA,EAAAx7B,KAAAsF,QACAtF,KAAAurD,SAAA,EACAvrD,KAAAmwD,eAAAnwD,KAAAsF,MAAAk2B,IAEAx7B,KAAAoM,IAAApM,KAAAoM,IAAAF,SAAAlM,KAAAsF,WACK,CACL,IAAA+qD,EAAqBshC,EAAYj8E,OAAA1V,KAAAoM,IAAAnI,EAAAwa,GAAAT,EAAArc,GACjC3B,KAAAoM,IAAAF,SAAAhB,OAAAlL,KAAAsF,MAAA,EAAA+qD,GACArwD,KAAAoM,IAAAikD,EACArwD,KAAAurD,SAAA,EAEAvrD,KAAAsF,MAAA,EACAmZ,MAOAwrC,GAAAvjD,UAAAykD,cAAA,SAAA/lD,EAAAikD,EAAAC,EAAAhkD,GACA,IAAAk2B,GAAA,EAAA8yB,EAAAhpD,EAAA,OAAAsD,EAAA5I,KAAAkwD,YAAA5qD,GAAA4G,EAAAlM,KAAAoM,IAAAF,SACA,GAAAoiD,KAAArI,YAAA7gD,EAAAikD,EAAAC,GACA9tB,EAAAtvB,EAAA8yB,QAAAsvB,QAEA,QAAAnrD,EAAAnD,KAAAsF,MAAA2B,EAAAjE,KAAAyd,IAAAvU,EAAAzL,OAAA0C,EAAA,GAAkEA,EAAA8D,EAAO9D,IAAA,CACzE,IAAA2G,EAAAoC,EAAA/I,GACA,GAAA2G,EAAAm8C,YAAA7gD,EAAAikD,EAAAC,IAAAtpD,KAAAuuD,WAAAvvB,QAAAl1B,GAAA,GACA0xB,EAAAr4B,EACA,OAIA,QAAAq4B,EAAA,KACAx7B,KAAAmwD,eAAAnwD,KAAAsF,MAAAk2B,GACAx7B,KAAAsF,SACA,IAMA2kD,GAAAvjD,UAAA0kD,eAAA,SAAAhmD,EAAAikD,EAAAC,EAAA3nD,EAAA2D,GACA,QAAAnC,EAAAnD,KAAAsF,MAA0BnC,EAAAnD,KAAAoM,IAAAF,SAAAzL,OAA8B0C,IAAA,CACxD,IAAAgb,EAAAne,KAAAoM,IAAAF,SAAA/I,GACA,GAAAgb,aAAwByzE,EAAY,CACpC,IAAAtjC,EAAAtuD,KAAAuuD,WAAAvvB,QAAA7gB,GACA,GAAAmwC,GAAA,GAAAA,EAAAtuD,KAAAwuD,gBAAAlpD,EAAqE,SACrE,IAAAgrD,EAAAnyC,EAAA4K,IAQA,KAHA/oB,KAAAquD,OAAAiC,GAAAtwD,KAAAquD,MAAA,GAAAiC,EAAAjsD,UAAAisD,EAAAxiD,SAAA9N,KAAAquD,KAAAhzC,gBACAjW,EAAA47B,QAAA7iB,EAAA/Y,MAAA+Y,EAAA/Y,KAAA47B,QAAA7iB,EAAA2oC,QAAA78C,WAAA7E,EAAAnG,MApkCA,GAqkCAkf,EAAAwnC,OAAAkE,GAAAR,EAAAlrC,EAAAkrC,cACAlrC,EAAA6hB,OAAA56B,EAAAikD,EAAAC,EAAA3nD,GAIA,OAHA3B,KAAAmwD,eAAAnwD,KAAAsF,MAAAnC,GACAgb,EAAA4K,KAAAunC,IAAkCtwD,KAAAurD,SAAA,GAClCvrD,KAAAsF,SACA,EAEA,OAGA,UAKA2kD,GAAAvjD,UAAAq9B,QAAA,SAAA3+B,EAAAikD,EAAAC,EAAA3nD,EAAAS,GACApC,KAAAoM,IAAAF,SAAAhB,OAAAlL,KAAAsF,QAAA,EAA4CssF,EAAYl8E,OAAA1V,KAAAoM,IAAAhH,EAAAikD,EAAAC,EAAA3nD,EAAAS,IACxDpC,KAAAurD,SAAA,GAGAtB,GAAAvjD,UAAAwkD,YAAA,SAAA1C,EAAA7mD,EAAAS,GACA,IAAA+b,EAAAne,KAAAsF,MAAAtF,KAAAoM,IAAAF,SAAAzL,OAAAT,KAAAoM,IAAAF,SAAAlM,KAAAsF,OAAA,KACA,IAAA6Y,MAAA4nC,cAAAyC,OAAArqC,EAAAqqC,QAAArqC,EAAAqqC,OAAA7lD,KAAA4kB,MAAAlM,WAEG,CACH,IAAAo/B,EAAA,IAAA8N,EAAAvoD,KAAAoM,IAAAo8C,EAAA7mD,EAAAS,GACApC,KAAAoM,IAAAF,SAAAhB,OAAAlL,KAAAsF,QAAA,EAAAm1C,GACAz6C,KAAAurD,SAAA,OAJAvrD,KAAAsF,SAUA2kD,GAAAvjD,UAAA2kD,kBAAA,WAEA,IADA,IAAAn/B,EAAAlsB,KAAAoM,IAAAF,SAAAlM,KAAAsF,MAAA,GACA4mB,aAA8BylE,GAAezlE,IAAAhgB,SAAAggB,EAAAhgB,SAAAzL,OAAA,GAE7C,IAAAyrB,KACAA,aAAAy9B,IACA,MAAAnzC,KAAA0V,EAAA9mB,KAAAnG,MACA,GAAAe,KAAAsF,MAAAtF,KAAAoM,IAAAF,SAAAzL,QAAAT,KAAAoM,IAAAF,SAAAlM,KAAAsF,OAAA4gD,cACAlmD,KAAAsF,YACK,CACL,IAAAyjB,EAAArN,SAAAC,cAAA,MACA3b,KAAAoM,IAAAF,SAAAhB,OAAAlL,KAAAsF,QAAA,MAAAkoD,EAAAxtD,KAAAoM,IAAAk8C,EAAAv/B,EAAA,OACA/oB,KAAAurD,SAAA,IAwfA,IAAAmE,GAAoC8hC,EAAMl0C,QAAWk0C,EAAMx0C,QAAWw0C,EAAMv0C,eAAA,GAE5E,SAAA0S,GAAAhuD,EAAAS,GACA,IAAArB,EAAAY,EAAAihD,QAAAU,WAAAlhD,GACAgD,EAAArE,EAAAqE,KACA9E,EAAAS,EAAAT,OACAmS,EAAAnS,EAAA8E,EAAA4sC,WAAAvxC,OAAA2E,EAAA4sC,WAAA1xC,GAAA,KACA0E,EAAA1E,EAAA8E,EAAA4sC,WAAA1xC,EAAA,QACA,GAAMkxF,EAAMl0C,QAAA7qC,GAAA,SAAAA,EAAA6rC,gBAAuD,OAAAiS,GAAA99C,GACnE,KAAAA,GAAA,SAAAA,EAAA6rC,iBAAAt5C,GAAA,SAAAA,EAAAs5C,iBAAA,CACA,GAAA7rC,EAAgB,OAAA89C,GAAA99C,GAChB,GAAAzN,EAAsB,OAAAurD,GAAAvrD,IAItB,SAAAurD,GAAAr1C,GAGA,OAFAA,EAAAojC,gBAAA,OACMkzC,EAAMl0C,QAAApiC,EAAAmM,YAA+BnM,EAAAmM,WAAA,EAA2BnM,EAAAs1C,cAAA,GACtEt1C,EAGA,SAAA00C,GAAA10C,GACAA,EAAAojC,gBAAA,QACApjC,EAAAs1C,eAA6Bt1C,EAAAmM,WAAA,EAA0BnM,EAAAs1C,aAAA,MAmCvD,SAAA1B,GAAAntD,EAAA23C,GACA,GAAAA,aAAqB7Y,EAAA,cAAa,CAClC,IAAAga,EAAA94C,EAAAihD,QAAAmE,OAAAzN,EAAA13C,MACA64C,GAAA94C,EAAA8uD,uBACAC,GAAA/uD,GACA84C,GAAiBA,EAAAyS,aACjBvrD,EAAA8uD,qBAAAhW,QAGAiW,GAAA/uD,GAKA,SAAA+uD,GAAA/uD,GACAA,EAAA8uD,uBACA9uD,EAAA8uD,qBAAA/tD,QACOf,EAAA8uD,qBAAAtD,eACPxrD,EAAA8uD,qBAAA,MAIA,SAAA7B,GAAAjtD,EAAAmrB,EAAAD,EAAAyM,GACA,OAAA33B,EAAAk+C,SAAA,kCAAAj/B,GAA+D,OAAAA,EAAAjf,EAAAmrB,EAAAD,MACxD4T,EAAA,cAAasY,QAAAjsB,EAAAD,EAAAyM,GAQpB,SAAA21B,GAAAttD,GACA,IAAA23C,EAAA33C,EAAA0K,KAAAy4C,eACA,IAAAxL,EAAAoO,WAAwB,SACxB,IAIA,OAAA/lD,EAAAonB,IAAAjb,SAAA,GAAAwrC,EAAAoO,WAAArjD,SAAAi1C,EAAAoO,WAAArsC,WAAAi+B,EAAAoO,cACA/lD,EAAAotD,UAAAptD,EAAAonB,IAAAjb,SAAA,GAAAwrC,EAAA4L,UAAA7gD,SAAAi1C,EAAA4L,UAAA7pC,WAAAi+B,EAAA4L,YACG,MAAAniB,GACH,UA+DA,SAAAmO,GAAAnoB,GACA,IAAA0xB,EAAA1xB,EAAAw1B,WACA,GAAA9D,EACA,OAAAA,EAAA0L,YACG,SAAAp9B,EAAAvf,UAAAuf,EAAA1N,WAAA,CAIH,GAAQm2E,EAAMl0C,QAAA,aAAA9mC,KAAAuS,EAAA1N,WAAA7R,UAAA,CACd,IAAA6O,EAAAqD,SAAAC,cAAA,OAEA,OADAtD,EAAA24B,YAAAt1B,SAAAC,cAAA,QACctD,QACT,GAAA0Q,EAAA1N,WAAA6Q,WAAAnD,GAA6CyoE,EAAMl0C,QAAA,gBAAA9mC,KAAAuS,EAAA1N,WAAA7R,UACxD,OAAcV,QAAA,QAEX,UAAAigB,EAAAvf,UAAAuf,EAAAE,aAAA,oBACH,OAAYngB,QAAA,GAIZ,SAAAspD,GAAAzwD,EAAAC,EAAAC,EAAAwwD,EAAAC,GACA,GAAA1wD,EAAA,GACA,IAAAmX,EAAApX,EAAA4wD,kBAAA5Y,KAAAC,MAAA,GAAAj4C,EAAA6wD,oBAAA,KACAC,EAAAhE,GAAA9sD,EAAAoX,GACA,GAAA05C,IAAA9wD,EAAAzB,MAAAiC,UAAA44B,GAAA03B,GAAA,CACA,IAAAC,EAAA/wD,EAAAzB,MAAAS,GAAAmlB,aAAA2sC,GACA,WAAA15C,EAAgC25C,EAAApvD,QAAA,cAChC,OAAAyV,GAAiC25C,EAAA1sC,iBACjCrkB,EAAA0B,SAAAqvD,QAPA,CAYA,IAAAvuB,EAAAxiC,EAAAzB,MAAAsC,IAAAC,QAAAb,GACA+wD,EAAAxuB,EAAAvJ,YAAA/4B,GACAD,EAAAuiC,EAAAn/B,OAAA2tD,EAAA,GACA9wD,EAAAF,EAAAzB,MAAAsC,IAAAC,QAAAZ,GAAA4Q,MAAAkgD,EAAA,GAEA,IAIAC,EAAAC,EAJAvZ,EAAA33C,EAAAzB,MAAAiC,UACAkF,EAtFA,SAAA1F,EAAAmxD,EAAAC,GACA,IAAAhyD,EAAAY,EAAAihD,QAAAoE,WAAA8L,EAAAC,GACArwD,EAAA3B,EAAAqE,KACA6hD,EAAAlmD,EAAAkmD,WACAC,EAAAnmD,EAAAmmD,SACAtlD,EAAAb,EAAAa,KACAC,EAAAd,EAAAc,GAEA48C,EAAA98C,EAAA0K,KAAAy4C,eAAAvpC,EAAA,KAAA+8B,EAAAmG,EAAAiJ,WAQA,GAPApP,GAAA32C,EAAAonB,IAAAjb,SAAA,GAAAwqC,EAAAj0C,SAAAi0C,IAAAj9B,cACAE,IAAanW,KAAAkzC,EAAAh4C,OAAAm+C,EAAAkJ,eACbnJ,EAAAC,IACOljC,EAAArR,MAAY9E,KAAAq5C,EAAAyG,UAAA5kD,OAAAm+C,EAAA2G,eAIbosC,EAAMx0C,QAAA,IAAAr7C,EAAAqxD,YACZ,QAAAhV,EAAAkJ,EAA4BlJ,EAAAiJ,EAAkBjJ,IAAA,CAC9C,IAAA54C,EAAA1C,EAAAsvC,WAAAgM,EAAA,GAAAvD,EAAAr1C,EAAAm5C,WACA,SAAAn5C,EAAAf,WAAAo2C,EAAA,CAA2CyM,EAAAlJ,EAAgB,MAC3D,IAAAvD,KAAAltB,KAA+B,MAG/B,IAAA0lC,EAAAtxD,EAAAzB,MAAAsC,IACAqF,EAAAlG,EAAAk+C,SAAA,cAA6C//B,EAAA,UAAS8sB,WAAAjrC,EAAAzB,MAAAiE,QACtD5B,EAAA0wD,EAAAxwD,QAAAb,GAEA03C,EAAA,KAAA92C,EAAAqF,EAAAR,MAAA3E,GACAgoC,QAAAnoC,EAAAG,OACAgtC,SAAAntC,EAAAG,OAAAuqB,eAAA1qB,EAAA+C,SACAmtC,SAAA,EACA7wC,KAAAqlD,EACAplD,GAAAqlD,EACAn/B,oBAAAxlB,EAAAG,OAAAC,KAAAC,KAAAC,MAAA,OACAqwD,iBAAA,EACAvjB,cAAAp0B,EACA21B,gBACAv6B,QAAApU,IAEA,GAAAgZ,GAAA,MAAAA,EAAA,GAAAnZ,IAAA,CACA,IAAA+wD,EAAA53C,EAAA,GAAAnZ,IAAAssC,EAAAnzB,EAAA,IAAAA,EAAA,GAAAnZ,IACA,MAAAssC,IAAuBA,EAAAykB,GACvB7Z,GAAWhB,OAAA6a,EAAAvxD,EAAA8sC,OAAA9sC,GAEX,OAAUY,MAAA82C,MAAA13C,OAAAC,MA0CVuxD,CAAAzxD,EAAAC,EAAAC,GAEAW,EAAAb,EAAAzB,MAAAsC,IAAA6wD,EAAA7wD,EAAAhC,MAAA6G,EAAAzF,KAAAyF,EAAAxF,IAGA,IAAAF,EAAAqxD,aAAArZ,KAAAC,MAAA,IAAAj4C,EAAA2xD,iBACAV,EAAAjxD,EAAAzB,MAAAiC,UAAAN,GACAgxD,EAAA,QAEAD,EAAAjxD,EAAAzB,MAAAiC,UAAAP,KACAixD,EAAA,SAEAlxD,EAAAqxD,YAAA,KAEA,IAAAO,EAmMA,SAAAt6B,EAAAC,EAAA92B,EAAAwwD,EAAAC,GACA,IAAA1yD,EAAA84B,EAAAoI,cAAAnI,EAAA92B,GACA,SAAAjC,EAAsB,YACtB,IAAAY,EAAAk4B,EAAAuI,YAAAtI,EAAA92B,EAAA62B,EAAA1L,KAAAnrB,EAAA82B,EAAA3L,MACAimC,EAAAzyD,EAAAk4B,EACAw6B,EAAA1yD,EAAAm4B,EACA,UAAA25B,EAAA,CACA,IAAAa,EAAA1wD,KAAAC,IAAA,EAAA9C,EAAA6C,KAAAyd,IAAA+yC,EAAAC,IACAb,GAAAY,EAAAE,EAAAvzD,EAEA,GAAAqzD,EAAArzD,GAAA84B,EAAA1L,KAAA2L,EAAA3L,KAAA,CACA,IAAAqR,EAAAg0B,GAAAzyD,GAAAyyD,GAAAY,EAAArzD,EAAAyyD,EAAA,EAEAa,GADAtzD,GAAAy+B,IACA60B,EAAAD,GACAA,EAAArzD,OACG,GAAAszD,EAAAtzD,EAAA,CACH,IAAAwzD,EAAAf,GAAAzyD,GAAAyyD,GAAAa,EAAAtzD,EAAAyyD,EAAA,EAEAY,GADArzD,GAAAwzD,IACAH,EAAAC,GACAA,EAAAtzD,EAEA,OAAUA,QAAAqzD,OAAAC,QAxNVG,CAAAP,EAAAnsC,QAAA7f,EAAA7E,IAAA0kB,QAAA7f,EAAAzF,KAAAgxD,EAAAC,GACA,IAAAU,EAAA,CACA,KAAAlB,GAAA/Y,aAAmC7Y,EAAA,gBAAa6Y,EAAA/4B,OAAA+4B,EAAAzsB,MAAAE,WAAAusB,EAAAxsB,WAChDnrB,EAAAW,WAAA+E,EAAAiyC,KAAAjyC,EAAAiyC,IAAAhB,QAAAjxC,EAAAiyC,IAAA5K,KAEK,CACL,GAAArnC,EAAAiyC,IAAA,CACA,IAAAua,EAAAC,GAAAnyD,IAAAzB,MAAAsC,IAAA6E,EAAAiyC,KACAua,MAAA94B,GAAAp5B,EAAAzB,MAAAiC,YAAuDR,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAAmlB,aAAA+tC,IAEvD,OANAN,GAAgBpzD,MAAAm5C,EAAA13C,KAAA4xD,KAAAla,EAAAz3C,GAAA4xD,KAAAna,EAAAz3C,IAShBF,EAAAoyD,iBAIApyD,EAAAzB,MAAAiC,UAAAP,KAAAD,EAAAzB,MAAAiC,UAAAN,IACA0xD,EAAApzD,OAAAozD,EAAAE,MACA9xD,EAAAzB,MAAAiC,qBAAsCs+B,EAAA,gBACtC8yB,EAAApzD,MAAAwB,EAAAzB,MAAAiC,UAAAP,MAAA2xD,EAAApzD,OAAAwB,EAAAzB,MAAAiC,UAAAP,KAAA,EACA2xD,EAAApzD,MAAAwB,EAAAzB,MAAAiC,UAAAP,KACK2xD,EAAAC,KAAA7xD,EAAAzB,MAAAiC,UAAAN,IAAA0xD,EAAAC,MAAA7xD,EAAAzB,MAAAiC,UAAAN,GAAA,IACL0xD,EAAAE,MAAA9xD,EAAAzB,MAAAiC,UAAAN,GAAA0xD,EAAAC,KACAD,EAAAC,KAAA7xD,EAAAzB,MAAAiC,UAAAN,KAOM2vF,EAAM70C,IAAO60C,EAAM50C,YAAA,IAAA2W,EAAAE,MAAAF,EAAApzD,MAAA,GACzBozD,EAAAC,MAAAD,EAAApzD,OAAAozD,EAAApzD,MAAAkH,EAAAzF,MACA,MAAAyF,EAAA7E,IAAAO,YAAAwwD,EAAApzD,MAAAkH,EAAAzF,KAAA,EAAA2xD,EAAApzD,MAAAkH,EAAAzF,KAAA,KACA2xD,EAAApzD,QACAozD,EAAAC,OACAD,EAAAE,QAGA,IAGAO,EAHAzxD,EAAA8E,EAAA7E,IAAAghC,eAAA+vB,EAAApzD,MAAAkH,EAAAzF,MACA4qB,EAAAnlB,EAAA7E,IAAAghC,eAAA+vB,EAAAE,KAAApsD,EAAAzF,MACAqyD,EAAA1xD,EAAAwqB,WAAAP,IAAAjqB,EAAAG,OAAAwsB,cAIA,IAAQsiE,EAAMt0C,KAAAv7C,EAAAuyD,aAAAva,KAAAC,MAAA,OACdqa,GAAA3B,EAAA1f,KAAA,SAAAxvB,GAAwD,aAAAA,EAAA5Z,UAAA,KAAA4Z,EAAA5Z,cACxDyqD,GAAA1xD,EAAAH,IAAAiF,EAAA7E,IAAA0kB,QAAAqG,OACAymC,EAAmBvzB,EAAA,UAAS9R,SAAAtnB,EAAA7E,IAAAC,QAAAF,EAAAH,IAAA,WAC5B4xD,EAAAtlB,MAAAliB,EAAApqB,MACAT,EAAAk+C,SAAA,yBAAAj/B,GAAmD,OAAAA,EAAAjf,EAAAm9C,EAAA,eACnDn9C,EAAAuyD,aAAA,OAIA,GAAAvyD,EAAAzB,MAAAiC,UAAAm2C,OAAAib,EAAApzD,OAqGA,SAAAg0D,EAAAh0D,EAAAC,EAAAg0D,EAAAC,GACA,IAAAD,EAAA1xD,OAAAypB,aAEA/rB,EAAAD,GAAAk0D,EAAAjyD,IAAAgyD,EAAAhyD,KAEAkyD,GAAAF,GAAA,MAAAC,EAAAjyD,IACK,SAEL,IAAA+C,EAAAgvD,EAAA1xD,QAAAtC,GAEA,GAAAgF,EAAAjC,aAAAiC,EAAAzC,OAAAwkB,QAAAqG,OAAApoB,EAAAzC,OAAAypB,YACK,SACL,IAAAooC,EAAAJ,EAAA1xD,QAAA6xD,GAAAnvD,GAAA,OAEA,IAAAovD,EAAA7xD,OAAAypB,aAAAooC,EAAAnyD,IAAAhC,GACAk0D,GAAAC,GAAA,MAAAn0D,EACK,SAGL,OAAAg0D,EAAA1xD,OAAAwkB,QAAAia,IAAAizB,EAAAlxD,cAAA63B,GAAAw5B,EAAA7xD,OAAAwkB,SAvHAstC,CAAAhyD,EAAA+wD,EAAApzD,MAAAozD,EAAAC,KAAAjxD,EAAAiqB,IACA7qB,EAAAk+C,SAAA,yBAAAj/B,GAAmD,OAAAA,EAAAjf,EAAAm9C,EAAA,kBAC3C0yC,EAAMr0C,SAAYq0C,EAAMx0C,QAAUr7C,EAAAutD,YAAAuF,+BAH1C,CAeM+8B,EAAMr0C,UAAA8W,GAAA1xD,EAAApC,SAAAqsB,EAAArsB,SAAA,GAAAqsB,EAAAtpB,cAAAX,EAAAkc,OAAA+N,EAAA/N,OACZpX,EAAAiyC,KAAAjyC,EAAAiyC,IAAAhB,QAAAjxC,EAAAiyC,IAAA5K,MAAArnC,EAAAiyC,IAAA5K,MAAA6kB,EAAAC,OACAD,EAAAE,MAAA,EACAjnC,EAAAnlB,EAAA7E,IAAAghC,eAAA+vB,EAAAE,KAAApsD,EAAAzF,MACAK,WAAA,WACAN,EAAAk+C,SAAA,yBAAAj/B,GAAmD,OAAAA,EAAAjf,EAAAm9C,EAAA,gBAC9C,KAGL,IAEAn+C,EAAA4uB,EAAAmlC,EAAAC,EAFAC,EAAArB,EAAApzD,MAAA00D,EAAAtB,EAAAC,KAGA,GAAAS,EACA,GAAA1xD,EAAAH,KAAAoqB,EAAApqB,IAGUovF,EAAM70C,IAAO60C,EAAM50C,YAAA,OAAAr6C,EAAAW,eAC7BvB,EAAAutD,YAAAuF,2BACAxyD,WAAA,WAAgC,OAAA4sD,GAAAltD,IAA+B,KAE/DhB,EAAAgB,EAAAzB,MAAAS,GAAA+D,OAAAkwD,EAAAC,GACAtlC,EAAA/sB,EAAAC,QAAA8wD,EAAApzD,OAAAilC,YAAA5iC,EAAAC,QAAA8wD,EAAAC,YACK,GACLD,EAAAC,MAAAD,EAAAE,OAAAkB,EAAAnyD,EAAAC,QAAA8wD,EAAApzD,UACAu0D,EAyCA,SAAA94B,EAAAx6B,GAGA,IAFA,IACAuB,EAAA+3B,EAAAsF,EADA80B,EAAAl5B,EAAA7xB,WAAA9F,MAAA8wD,EAAA3zD,EAAA2I,WAAA9F,MACA0hB,EAAAmvC,EAAA35B,EAAA45B,EACA5xD,EAAA,EAAiBA,EAAA4xD,EAAAt0D,OAAsB0C,IAAOwiB,EAAAovC,EAAA5xD,GAAA83B,cAAAtV,GAC9C,QAAAkK,EAAA,EAAmBA,EAAAilC,EAAAr0D,OAAuBovB,IAASsL,EAAA25B,EAAAjlC,GAAAoL,cAAAE,GACnD,MAAAxV,EAAAllB,QAAA,GAAA06B,EAAA16B,OACAi6B,EAAA/U,EAAA,GACAhjB,EAAA,MACAq9B,EAAA,SAAA56B,GAA8B,OAAAA,EAAAs1B,OAAAG,SAAAz1B,EAAAnB,aAC3B,OAAA0hB,EAAAllB,QAAA,GAAA06B,EAAA16B,OAKH,YAJAi6B,EAAAS,EAAA,GACAx4B,EAAA,SACAq9B,EAAA,SAAA56B,GAA8B,OAAAA,EAAAs1B,OAAAO,cAAA71B,EAAAnB,SAK9B,IADA,IAAA81C,KACAxb,EAAA,EAAmBA,EAAAn9B,EAAA+nB,WAAuBoV,IAASwb,EAAA7vC,KAAA81B,EAAA5+B,EAAA0I,MAAAy0B,KACnD,GAAMze,EAAA,SAAQle,KAAAm4C,GAAAhf,GAAAa,GAAyB,OAASlB,OAAA/3B,QA3DhDqyD,CAAAzyD,EAAAG,OAAAwkB,QAAAia,IAAA5+B,EAAAW,aAAAspB,EAAAtpB,cACAyxD,EAAAjyD,OAAAwkB,QAAAia,IAAAwzB,EAAAzxD,aAAAqwD,EAAAC,KAAAmB,EAAAx0D,WAEAQ,EAAAgB,EAAAzB,MAAAS,GACA,OAAA+zD,EAAA/xD,KAAqChC,EAAAuvB,QAAA0kC,EAAAC,EAAAH,EAAAh6B,MACzB/5B,EAAAsvB,WAAA2kC,EAAAC,EAAAH,EAAAh6B,WACP,GAAAn4B,EAAAG,OAAAoH,MAAAvH,EAAA+C,SAAA07B,QAAAz+B,EAAA+C,SAAAknB,EAAAlnB,SAAAknB,EAAA6X,WAAA,MAEL,IAAAplC,EAAAsD,EAAAG,OAAAK,YAAAR,EAAAW,aAAAspB,EAAAtpB,cACA,GAAAvB,EAAAk+C,SAAA,2BAAAj/B,GAAyD,OAAAA,EAAAjf,EAAAizD,EAAAC,EAAA51D,KAA0C,OACnG0B,EAAAgB,EAAAzB,MAAAS,GAAAC,WAAA3B,EAAA21D,EAAAC,GAMA,GAFAl0D,IACKA,EAAAgB,EAAAzB,MAAAS,GAAAsI,QAAA2rD,EAAAC,EAAAxtD,EAAA7E,IAAAhC,MAAA+yD,EAAApzD,MAAAkH,EAAAzF,KAAA2xD,EAAAE,KAAApsD,EAAAzF,QACLyF,EAAAiyC,IAAA,CACA,IAAA2b,EAAAnB,GAAAnyD,EAAAhB,EAAA6B,IAAA6E,EAAAiyC,KAMA2b,KAAmBu8B,EAAMx0C,QAAWw0C,EAAMr0C,SAAAx7C,EAAAW,WAAA2yD,EAAA10C,QAC1C00C,EAAAvmB,MAAAkmB,GAAAK,EAAAvmB,MAAA/tC,EAAA+hB,QAAAhY,IAAAmqD,GAAA,IACiB28B,EAAM70C,IAAAsY,EAAA10C,OAAA00C,EAAAvmB,MAAAkmB,IAChBj0D,EAAAmlB,aAAAmvC,GAEP1lC,GAAoB5uB,EAAAs4C,YAAA1pB,GACpB5tB,EAAA0B,SAAA1C,EAAAqlB,oBAGA,SAAA8tC,GAAAnyD,EAAAa,EAAA0yD,GACA,OAAAlyD,KAAAC,IAAAiyD,EAAA5c,OAAA4c,EAAAxmB,MAAAlsC,EAAA0kB,QAAAqG,KAAsE,KACtEqhC,GAAAjtD,EAAAa,EAAAC,QAAAyyD,EAAA5c,QAAA91C,EAAAC,QAAAyyD,EAAAxmB,OAkDA,SAAA4lB,GAAAjoC,EAAA8oC,EAAAC,GAEA,IADA,IAAA32C,EAAA4N,EAAA5N,MAAAre,EAAA+0D,EAAA9oC,EAAAjsB,MAAAisB,EAAAjqB,IACAqc,EAAA,IAAA02C,GAAA9oC,EAAA9mB,WAAAkZ,IAAA4N,EAAAjnB,KAAAqZ,GAAA0K,aACA1K,IACAre,IACA+0D,GAAA,EAEA,GAAAC,EAEA,IADA,IAAAj3C,EAAAkO,EAAAjnB,KAAAqZ,GAAAgZ,WAAApL,EAAA9mB,WAAAkZ,IACAN,MAAAuZ,QACAvZ,IAAApU,WACA3J,IAGA,OAAAA,EA2BA,SAAAi1D,GAAA1zD,EAAAnB,GAKA,IAJA,IAAAmW,KACAuQ,EAAA1mB,EAAA0mB,QACA8P,EAAAx2B,EAAAw2B,UACAD,EAAAv2B,EAAAu2B,QACAC,EAAA,GAAAD,EAAA,MAAA7P,EAAAiC,YAAA,GAAAjC,EAAAnd,WAAAof,YAAA,CACA6N,IACAD,IACA,IAAA3xB,EAAA8hB,EAAAnd,WACA4M,EAAAzM,KAAA9E,EAAAzC,KAAA0K,KAAAjI,EAAAzC,KAAAiqB,mBAAAxnB,EAAAZ,MAAA,MACA0iB,EAAA9hB,EAAA8hB,QAGA,IAAAouC,EAAA3zD,EAAAk+C,SAAA,wBAA2D//B,EAAA,cAAa8sB,WAAAjrC,EAAAzB,MAAAiE,QACxE3B,EAAA+yD,KAAAxwD,EAAAvC,EAAAmZ,cAAA,OACA5W,EAAAisC,YAAAskB,EAAAjiB,kBAAAnsB,GAA0DxL,SAAAlZ,KAG1D,IADA,IAAAsqD,EAAA/iD,EAAAhF,EAAAgF,WACAA,GAAA,GAAAA,EAAA1F,WAAAyoD,EAAA0I,GAAAzrD,EAAAP,SAAAC,iBAAA,CACA,QAAAtG,EAAA2pD,EAAArsD,OAAA,EAAsC0C,GAAA,EAAQA,IAAA,CAE9C,IADA,IAAAsyD,EAAAjzD,EAAAmZ,cAAAmxC,EAAA3pD,IACA4B,EAAAgF,YAA+B0rD,EAAAzkB,YAAAjsC,EAAAgF,YAC/BhF,EAAAisC,YAAAykB,GAEA1rD,EAAAhF,EAAAgF,WASA,OANAA,GAAA,GAAAA,EAAA1F,UACK0F,EAAAuqC,aAAA,gBAAAtd,EAAA,IAAAD,EAAA,IAAAvqB,KAAAC,UAAAkK,KAKKoS,IAAAhkB,EAAA9F,KAHV0C,EAAAk+C,SAAA,mCAAAj/B,GAAoE,OAAAA,EAAApgB,MACpEA,EAAA0mB,QAAAnkB,YAAA,EAAAvC,EAAA0mB,QAAAqG,KAAA,SAOA,SAAAmoC,GAAA/zD,EAAA1C,EAAA+b,EAAA26C,EAAAziB,GACA,IAAAnqB,EAAAvoB,EAAAo1D,EAAA1iB,EAAAxwC,OAAAC,KAAAC,KAAAC,KACA,IAAAmY,IAAA/b,EAAuB,YACvB,IAAA42D,EAAA52D,IAAA02D,GAAAC,IAAA56C,GACA,GAAA66C,EAAA,CAEA,GADAl0D,EAAAk+C,SAAA,+BAAAj/B,GAAuD3hB,EAAA2hB,EAAA3hB,EAAA22D,GAAAD,KACvDC,EAAiB,WAAY91C,EAAA,MAAMA,EAAA,SAAQle,KAAAD,EAAAzB,MAAAiE,OAAAlF,SAAA,KAC3C,IAAA62D,EAAAn0D,EAAAk+C,SAAA,+BAAAj/B,GAAoE,OAAAA,EAAA3hB,EAAAi0C,EAAAyiB,KACpEG,EACAt1D,EAAAs1D,GAEA/sC,EAAArN,SAAAC,cAAA,OACA1c,EAAAkd,OAAA/L,MAAA,iBAAA9H,QAAA,SAAA6S,GACA4N,EAAAioB,YAAAt1B,SAAAC,cAAA,MAAAE,YAAAV,UAIAxZ,EAAAk+C,SAAA,+BAAAj/B,GAAuD5F,EAAA4F,EAAA5F,KACvD+N,EAyHA,SAAA/N,GACA,IAAA+6C,EAAA,qBAAA3yD,KAAA4X,GACA+6C,IAAc/6C,IAAAxa,MAAAu1D,EAAA,GAAAt1D,SACd,IACAsE,EADAgc,EAAAw0C,KAAA55C,cAAA,OACAq6C,EAAA,oCAAA5yD,KAAA4X,GAAAyD,EAAA,GACA1Z,EAAAixD,GAAAR,GAAAQ,EAAA,GAAAvsD,kBACAuR,EAAAjW,EAAA2F,IAAA,SAAA0Y,GAAkC,UAAAA,EAAA,MAAwBle,KAAA,IAAA8V,EAAAjW,EAAA2F,IAAA,SAAA0Y,GAA2C,WAAAA,EAAA,MAAyBnY,UAAA/F,KAAA,IAC9HuZ,EAAA1Z,EAAAtE,QAEAsgB,EAAAnF,UAAAZ,EACA,QAAA7X,EAAA,EAAiBA,EAAAsb,EAAWtb,IAAO4d,IAAAhX,WACnC,OAAAgX,EApIAk1C,CAAAj7C,GAGA,IAAAk7C,EAAAntC,KAAA+oB,cAAA,mBACAqkB,EAAAD,GAAA,oBAAA9yD,KAAA8yD,EAAAjtC,aAAA,kBACA,IAAAzoB,EAAA,CACA,IAAAqH,EAAAlG,EAAAk+C,SAAA,oBAAAl+C,EAAAk+C,SAAA,cAAmF//B,EAAA,UAAS8sB,WAAAjrC,EAAAzB,MAAAiE,QAC5F3D,EAAAqH,EAAAokC,WAAAljB,GAAoChB,sBAAA8tC,IAAAM,GAAAx/C,QAAAu8B,IAQpC,OALK1yC,EADL21D,EA8HA,SAAA31D,EAAAmW,GACA,IAAAnW,EAAA+sB,KAAoB,OAAA/sB,EACpB,IAAAmjB,EAAAxf,EAAA3D,EAAA0mB,QAAAnd,WAAApH,KAAAwB,OACA,IAAOwf,EAAAnX,KAAAnF,MAAAsP,GACP,MAAA1P,GAAY,OAAAzG,EAIZ,IAHA,IAAA0mB,EAAA1mB,EAAA0mB,QACA8P,EAAAx2B,EAAAw2B,UACAD,EAAAv2B,EAAAu2B,QACA5zB,EAAAwgB,EAAAljB,OAAA,EAAgC0C,GAAA,EAAQA,GAAA,GACxC,IAAAR,EAAAwB,EAAAsjB,MAAA9D,EAAAxgB,IACA,IAAAR,KAAAiqB,mBAA2C,MAC3C1F,EAAcpH,EAAA,SAAQle,KAAAe,EAAA+S,OAAAiO,EAAAxgB,EAAA,GAAA+jB,IACtB8P,IAAgBD,IAEhB,WAAajX,EAAA,MAAKoH,EAAA8P,EAAAD,GA3Ibq/B,CAmFL,SAAA51D,EAAAw2B,EAAAD,GACAC,EAAAx2B,EAAAw2B,YACKx2B,EAAA,IAAasf,EAAA,MAAKu2C,GAAA71D,EAAA0mB,SAAA,EAAA8P,EAAAx2B,EAAAw2B,UAAA,EAAAx2B,EAAAu2B,SAAAC,EAAAx2B,EAAAu2B,UACvBA,EAAAv2B,EAAAu2B,UACKv2B,EAAA,IAAasf,EAAA,MAAKu2C,GAAA71D,EAAA0mB,QAAA,EAAA6P,EAAAv2B,EAAAu2B,QAAA,KAAAv2B,EAAAw2B,UAAAD,IACvB,OAAAv2B,EAxFK81D,CAAA91D,GAAA21D,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAESr2C,EAAA,MAAK4kB,QAcnB,SAAAjL,EAAAyZ,GACA,GAAAzZ,EAAAtQ,WAAA,EAAgC,OAAAsQ,EAsBhC,IArBA,IAAAzK,EAAA,SAAA3vB,GACA,IAAAqD,EAAAwwC,EAAA9tC,KAAA/F,GACAS,EAAA4C,EAAAuqB,eAAAimB,EAAA5tC,MAAAjG,IACAk3D,OAAA,EAAAltD,KAeA,GAdAowB,EAAAnxB,QAAA,SAAAlD,GACA,GAAAiE,EAAA,CACA,IAAAmtD,EAAAzxD,EAAAjF,EAAAuuB,aAAAjpB,EAAAzC,MACA,IAAAoC,EAAkB,OAAAsE,EAAA,KAClB,GAAAmtD,EAAAntD,EAAA5I,QAAA81D,EAAA91D,QA+BA,SAAAg2D,EAAA1xD,EAAAwxD,EAAAnxD,EAAAsxD,EAAAj4C,GACA,GAAAA,EAAA1Z,EAAAtE,QAAAge,EAAA83C,EAAA91D,QAAAsE,EAAA0Z,IAAA83C,EAAA93C,GAAA,CACA,IAAAgD,EAAAg1C,EAAA1xD,EAAAwxD,EAAAnxD,EAAAsxD,EAAAxqC,UAAAzN,EAAA,GACA,GAAAgD,EAAgB,OAAAi1C,EAAAloC,KAAAkoC,EAAAxvC,QAAA4R,aAAA49B,EAAAvtC,WAAA,EAAA1H,IAChB,IAAA3hB,EAAA42D,EAAAzpC,eAAAypC,EAAAvtC,YACA,GAAArpB,EAAAwuB,UAAA7P,GAAA1Z,EAAAtE,OAAA,EAAA2E,EAAAzC,KAAAoC,EAAA0Z,EAAA,IACO,OAAAi4C,EAAAloC,KAAAkoC,EAAAxvC,QAAAlH,OAA4CF,EAAA,SAAQle,KAAA+0D,GAAAvxD,EAAAL,EAAA0Z,EAAA,OArC3Dg4C,CAAA1xD,EAAAwxD,EAAAnxD,EAAAiE,IAAA5I,OAAA,MACA4I,IAAA5I,OAAA,GAAA+1D,MACO,CACPntD,EAAA5I,SAA4B4I,IAAA5I,OAAA,GAsC5B,SAAAm2D,EAAAxxD,EAAAqZ,GACA,MAAAA,EAAmB,OAAArZ,EACnB,IAAAq0B,EAAAr0B,EAAA8hB,QAAA4R,aAAA1zB,EAAA+jB,WAAA,EAAAytC,EAAAxxD,EAAA8mB,UAAAzN,EAAA,IACA,IAAAqd,EAAA12B,EAAA6nB,eAAA7nB,EAAA+jB,YAAA4S,WAA6Djc,EAAA,SAAQS,OAAA,GACrE,OAAAnb,EAAAopB,KAAAiL,EAAAzZ,OAAA8b,IA1C4B86B,CAAAvtD,IAAA5I,OAAA,GAAA81D,EAAA91D,SAC5B,IAAAo2D,EAAAF,GAAAvxD,EAAAL,GACAsE,EAAAa,KAAA2sD,GACA/2D,IAAAwuB,UAAAuoC,EAAAl0D,KAAAk0D,EAAAryD,OACA+xD,EAAAxxD,MAGAsE,EAAiB,OAAS8lB,EAAIrP,EAAA,SAAQle,KAAAyH,KAGtChK,EAAA6zC,EAAAz0B,MAA8Bpf,GAAA,EAAQA,IAAA,CACtC,IAAA+vB,EAAAJ,EAAA3vB,GAEA,GAAA+vB,EAAA,OAAAA,EAAAD,EAEA,OAAAsK,EA1CmBq9B,CAAAt2D,EAAA0mB,QAAAgsB,IAAA,GAEnBvxC,EAAAk+C,SAAA,2BAAAj/B,GAAiDpgB,EAAAogB,EAAApgB,KACjDA,EA0CA,SAAAm2D,GAAAvxD,EAAAL,EAAAnD,QACA,IAAAA,MAAA,GAEA,QAAAuB,EAAA4B,EAAAtE,OAAA,EAA+B0C,GAAAvB,EAAWuB,IACrCiC,EAAAL,EAAA5B,GAAAuS,OAAA,KAA6BoK,EAAA,SAAQle,KAAAwD,IAC1C,OAAAA,EAsBA,SAAAixD,GAAA58B,EAAAxN,EAAArqB,EAAAC,EAAA4c,EAAAsY,GACA,IAAA3xB,EAAA6mB,EAAA,EAAAwN,EAAA1vB,WAAA0vB,EAAAvN,UAAAzK,EAAArc,EAAA8hB,QAKA,OAJAzI,EAAA5c,EAAA,IAAuB4f,EAAA40C,GAAA50C,EAAAwK,EAAArqB,EAAAC,EAAA4c,EAAA,EAAAsY,IACvBtY,GAAA7c,IACK6f,EAAAwK,EAAA,EAAA7mB,EAAA6nB,eAAA,GAAA8O,WAAAta,EAAAgY,EAAAtQ,WAAA,GAAA4N,GAAAtY,GAAAuB,OAAAyB,GACLA,EAAAzB,OAAA5a,EAAA6nB,eAAA7nB,EAAA+jB,YAAA4S,WAAqEjc,EAAA,SAAQS,OAAA,KAC7EkZ,EAAAX,aAAA7M,EAAA,IAAAwN,EAAAtQ,WAAA,EAAA/jB,EAAAopB,KAAA/M,IAcA,IAAA+zC,IACAuB,OAAA,SACAC,OAAA,SACAzoB,OAAA,SACA0oB,SAAA,SACAC,UAAA,SACAC,KAAA,oBACAx2D,IAAA,iBACAy2D,IAAA,sBACAC,IAAA,uBAGAC,GAAA,KACA,SAAA/B,KACA,OAAA+B,QAAA57C,SAAA67C,eAAAC,mBAAA,UAkCA,IAAAC,IACAC,WAAA,EACAC,eAAA,EACAC,uBAAA,EACAjtD,YAAA,EACAktD,mBAAA,EACAC,SAAA,GAGAC,GAAkBy5B,EAAM70C,IAAO60C,EAAM50C,YAAA,GAErCob,GAAA,WACAh4D,KAAA0nD,WAAA1nD,KAAA2nD,aAAA3nD,KAAAklD,UAAAllD,KAAAolD,YAAA,MAGA4S,GAAAtxD,UAAAk8B,IAAA,SAAA0W,GACAt5C,KAAA0nD,WAAApO,EAAAoO,WAAmC1nD,KAAA2nD,aAAArO,EAAAqO,aACnC3nD,KAAAklD,UAAA5L,EAAA4L,UAAiCllD,KAAAolD,YAAA9L,EAAA8L,aAGjC4S,GAAAtxD,UAAAq0B,GAAA,SAAAue,GACA,OAAAA,EAAAoO,YAAA1nD,KAAA0nD,YAAApO,EAAAqO,cAAA3nD,KAAA2nD,cACArO,EAAA4L,WAAAllD,KAAAklD,WAAA5L,EAAA8L,aAAAplD,KAAAolD,aAGA,IAAA6S,GAAA,SAAAt2D,EAAAu2D,GACA,IAAAl2C,EAAAhiB,KAEAA,KAAA2B,OACA3B,KAAAk4D,kBACAl4D,KAAAm4D,SACAn4D,KAAAo4D,cAAA,EACAp4D,KAAAq4D,SAAAr7C,OAAAs7C,kBACA,IAAAt7C,OAAAs7C,iBAAA,SAAAC,GACA,QAAAp1D,EAAA,EAAqBA,EAAAo1D,EAAA93D,OAAsB0C,IAAO6e,EAAAm2C,MAAAjuD,KAAAquD,EAAAp1D,IAKxCquF,EAAM70C,IAAO60C,EAAM50C,YAAA,IAAA2b,EAAA3lB,KAC7B,SAAAhjC,GAAsB,mBAAAA,EAAAjN,MAAAiN,EAAA4oD,aAAA/3D,QACtB,iBAAAmP,EAAAjN,MAAAiN,EAAAm5C,SAAAtoD,OAAAmP,EAAAua,OAAAlgB,UAAAxJ,SACSuhB,EAAAy2C,YAEAz2C,EAAA02C,UAET14D,KAAA24D,iBAAA,IAAAX,GACAD,KACA/3D,KAAA44D,WAAA,SAAA3xD,GACA+a,EAAAm2C,MAAAjuD,MAAyBigB,OAAAljB,EAAAkjB,OAAAxnB,KAAA,gBAAAomD,SAAA9hD,EAAA4xD,YACzB72C,EAAAy2C,cAGAz4D,KAAA84D,kBAAA94D,KAAA84D,kBAAAz7C,KAAArd,MACAA,KAAA+4D,6BAAA,GAGAd,GAAAvxD,UAAA+xD,UAAA,WACA,IAAAz2C,EAAAhiB,KAEAA,KAAAo4D,aAAA,IACKp4D,KAAAo4D,aAAAp7C,OAAA/a,WAAA,WAAoD+f,EAAAo2C,cAAA,EAA0Bp2C,EAAA02C,SAAkB,MAGrGT,GAAAvxD,UAAAsyD,WAAA,WACAh5D,KAAAo4D,cAAA,IACAp7C,OAAAi8C,aAAAj5D,KAAAo4D,cACAp4D,KAAAo4D,cAAA,EACAp4D,KAAA04D,UAIAT,GAAAvxD,UAAAvG,MAAA,WACAH,KAAAq4D,UACKr4D,KAAAq4D,SAAAa,QAAAl5D,KAAA2B,KAAAonB,IAAA0uC,IACLM,IACK/3D,KAAA2B,KAAAonB,IAAA9L,iBAAA,2BAAAjd,KAAA44D,YACL54D,KAAAiwD,oBAGAgI,GAAAvxD,UAAAgiD,KAAA,WACA,IAAA1mC,EAAAhiB,KAEA,GAAAA,KAAAq4D,SAAA,CACA,IAAAc,EAAAn5D,KAAAq4D,SAAAe,cACA,GAAAD,EAAA14D,OAAA,CACA,QAAA0C,EAAA,EAAqBA,EAAAg2D,EAAA14D,OAAiB0C,IAAOnD,KAAAm4D,MAAAjuD,KAAAivD,EAAAh2D,IAC7C6Z,OAAA/a,WAAA,WAAqC,OAAA+f,EAAA02C,SAAyB,IAE9D14D,KAAAq4D,SAAAgB,aAEAtB,IAAoB/3D,KAAA2B,KAAAonB,IAAA8mC,oBAAA,2BAAA7vD,KAAA44D,YACpB54D,KAAAmvD,uBAGA8I,GAAAvxD,UAAAupD,iBAAA,WACAjwD,KAAA2B,KAAAonB,IAAAwoB,cAAAt0B,iBAAA,kBAAAjd,KAAA84D,oBAGAb,GAAAvxD,UAAAyoD,oBAAA,WACAnvD,KAAA2B,KAAAonB,IAAAwoB,cAAAse,oBAAA,kBAAA7vD,KAAA84D,oBAGAb,GAAAvxD,UAAA+tD,yBAAA,WACA,IAAAzyC,EAAAhiB,KAEAA,KAAA+4D,6BAAA,EACA92D,WAAA,WAA0B,OAAA+f,EAAA+2C,6BAAA,GAAqD,KAG/Ed,GAAAvxD,UAAAoyD,kBAAA,WACA,GA7pBA,SAAAn3D,GACA,QAAAA,EAAAotD,UAAAptD,EAAA0K,KAAA+3C,eAAAziD,EAAAonB,MACAkmC,GAAAttD,GA2pBA23D,CAAAt5D,KAAA2B,MAAA,CACA,GAAA3B,KAAA+4D,4BAAyC,OAAAlK,GAAA7uD,KAAA2B,MAIzC,GAAM6vF,EAAM70C,IAAO60C,EAAM50C,YAAA,KAAA58C,KAAA2B,KAAAzB,MAAAiC,UAAAoe,MAAA,CACzB,IAAA+4B,EAAAt5C,KAAA2B,KAAA0K,KAAAy4C,eAEA,GAAAxL,EAAA4L,WAAAnH,EAAAzE,EAAA4L,UAAA5L,EAAA8L,YAAA9L,EAAAoO,WAAApO,EAAAqO,cACO,OAAA3nD,KAAAy4D,YAEPz4D,KAAA04D,UAGAT,GAAAvxD,UAAAspD,gBAAA,WACAhwD,KAAA24D,iBAAA/1B,IAAA5iC,KAAA2B,KAAA0K,KAAAy4C,iBAGAmT,GAAAvxD,UAAA6yD,sBAAA,SAAAjgB,GACA,MAAAA,EAAAsF,WAA4B,SAC5B,IAAA4a,EAAAlgB,EAAAuF,WAAA,GAAA4a,wBACAhf,EAAAz6C,KAAA2B,KAAAihD,QAAAC,YAAA2W,GACA,OAAA/e,KAAAuN,gBAAmCrlD,KAAA,YAAAwnB,OAAA,GAAAqvC,EAAAn1D,SAAAm1D,EAAAn+C,WAAAm+C,KACnCx5D,KAAAgwD,mBACA,QAFA,GAMAiI,GAAAvxD,UAAAgyD,MAAA,WACA,GAAA14D,KAAA2B,KAAAihD,WAAA5iD,KAAAo4D,cAAA,IACA,IAAAG,EAAAv4D,KAAAq4D,SAAAr4D,KAAAq4D,SAAAe,iBACAp5D,KAAAm4D,MAAA13D,SACA83D,EAAAv4D,KAAAm4D,MAAAzoD,OAAA6oD,GACAv4D,KAAAm4D,MAAA13D,OAAA,GAGA,IAAA64C,EAAAt5C,KAAA2B,KAAA0K,KAAAy4C,eACA2N,GAAAzyD,KAAA+4D,8BAAA/4D,KAAA24D,iBAAA59B,GAAAue,IAAA2V,GAAAjvD,KAAA2B,QAAA3B,KAAAu5D,sBAAAjgB,GAEA13C,GAAA,EAAAC,GAAA,EAAAwwD,GAAA,EAAA1sC,KACA,GAAA3lB,KAAA2B,KAAAotD,SACA,QAAA5rD,EAAA,EAAmBA,EAAAo1D,EAAA93D,OAAsB0C,IAAA,CACzC,IAAAu2D,EAAA15D,KAAA25D,iBAAApB,EAAAp1D,GAAAwiB,GACA+zC,IACA93D,IAAA,EAAA83D,EAAA93D,KAAAoB,KAAAyd,IAAAi5C,EAAA93D,QACAC,IAAA,EAAA63D,EAAA73D,GAAAmB,KAAAC,IAAAy2D,EAAA73D,MACA63D,EAAArH,WAAgCA,GAAA,IAKhC,GAAMm/B,EAAM10C,OAAAn3B,EAAAllB,OAAA,GACZ,IAAAm5D,EAAAj0C,EAAA/K,OAAA,SAAAwI,GAAyC,YAAAA,EAAA5Z,WACzC,MAAAowD,EAAAn5D,OAAA,CACA,IAAAw4B,EAAA2gC,EAAA,GACA1gC,EAAA0gC,EAAA,GACA3gC,EAAA5d,YAAA4d,EAAA5d,uBAAA6d,EAAA7d,WAAoE6d,EAAAiH,SACxDlH,EAAAkH,WAIZv+B,GAAA,GAAA6wD,KACA7wD,GAAA,IACA5B,KAAA2B,KAAAihD,QAAAsF,UAAAtmD,EAAAC,GA0DA,SAAAF,GACA,GAAAk4D,GAAmB,OACnBA,IAAA,EACA,UAAA1N,iBAAAxqD,EAAAonB,KAAA+wC,YACKtgD,QAAA,iLA7DLugD,CAAA/5D,KAAA2B,OAEA3B,KAAAk4D,gBAAAt2D,EAAAC,EAAAwwD,EAAA1sC,GACA3lB,KAAA2B,KAAAihD,QAAA+C,MAAkC3lD,KAAA2B,KAAA0iD,YAAArkD,KAAA2B,KAAAzB,OAClCF,KAAA24D,iBAAA59B,GAAAue,IAA8CuV,GAAA7uD,KAAA2B,SAI9Cs2D,GAAAvxD,UAAAizD,iBAAA,SAAA7Q,EAAAnjC,GAEA,GAAAA,EAAAqZ,QAAA8pB,EAAA3+B,SAAA,EAAuC,YACvC,IAAAswB,EAAAz6C,KAAA2B,KAAAihD,QAAAC,YAAAiG,EAAA3+B,QACA,iBAAA2+B,EAAAnmD,OACA83C,GAAAz6C,KAAA2B,KAAAihD,SAAA,mBAAAkG,EAAAkR,eAEA,SAAAlR,EAAAkR,gBAAAlR,EAAAC,WAAAD,EAAA3+B,OAAAlB,aAAA,UACK,YACL,IAAAwxB,KAAAuN,eAAAc,GAA0C,YAE1C,gBAAAA,EAAAnmD,KAAA,CACA,IAAAvB,EAAA0nD,EAAAnY,gBAAAxyB,EAAA2qC,EAAA9+C,YACA,GAAQwnF,EAAM70C,IAAO60C,EAAM50C,YAAA,IAAAkM,EAAAwJ,WAAA7xD,OAG3B,QAAA0C,EAAA,EAAqBA,EAAA2lD,EAAAwJ,WAAA7xD,OAA2B0C,IAAA,CAChD,IAAApC,EAAA+nD,EAAAwJ,WAAAnvD,GACAwtC,EAAA5vC,EAAA4vC,gBACA3mC,EAAAjJ,EAAAiJ,cACA2mC,GAAAvO,MAAA17B,UAAAs4B,QAAAp4B,KAAAkiD,EAAAwJ,WAAA3hB,GAAA,KAAoGvvC,EAAAuvC,KACpG3mC,GAAAo4B,MAAA17B,UAAAs4B,QAAAp4B,KAAAkiD,EAAAwJ,WAAAtoD,GAAA,KAA4FmU,EAAAnU,GAQ5F,IALA,IAAAi9C,EAAA7lD,KAAAia,YAAAytC,EAAA3+B,OACAszB,EAAAr8C,GAAA,IACAQ,EAAA64C,EAAA8L,gBAAAuC,EAAA3+B,OAAA88B,GAAA,GACAC,EAAA/oC,KAAA9C,YAAAytC,EAAA3+B,OACAszB,EAAAt/B,GAAA2qC,EAAA3+B,OAAA6nB,WAAAvxC,OACAovB,EAAA,EAAqBA,EAAAi5B,EAAAwJ,WAAA7xD,OAA6BovB,IAASlK,EAAAzb,KAAA4+C,EAAAwJ,WAAAziC,IAE3D,OAAYjuB,OAAAC,GADZ44C,EAAA8L,gBAAAuC,EAAA3+B,OAAA+8B,EAAA,IAEG,oBAAA4B,EAAAnmD,MACSf,KAAA64C,EAAA0I,WAAA1I,EAAA2I,OAAAvhD,GAAA44C,EAAAoL,SAAApL,EAAA2I,SAGZxhD,KAAA64C,EAAA0I,WACAthD,GAAA44C,EAAAoL,SAKAwM,SAAAvJ,EAAA3+B,OAAAlgB,WAAA6+C,EAAAC,WAKA,IAAA8Q,IAAA,EAWA,IAAAI,MAAiBC,MA2CjB,SAAAC,GAAAx4D,EAAAoX,GACApX,EAAA6wD,oBAAAz5C,EACApX,EAAA4wD,kBAAA5Y,KAAAC,MAWA,SAAAwgB,GAAAz4D,GACAA,EAAAk+C,SAAA,2BAAAwa,GACA,QAAA13D,KAAA03D,EAAuC14D,EAAA24D,cAAA33D,IAChChB,EAAAonB,IAAA9L,iBAAAta,EAAAhB,EAAA24D,cAAA33D,GAAA,SAAAwH,GAA8E,OAAAowD,GAAA54D,EAAAwI,OAIrF,SAAAowD,GAAA54D,EAAAwI,GACA,OAAAxI,EAAAk+C,SAAA,2BAAAoa,GACA,IAAAl6D,EAAAk6D,EAAA9vD,EAAAxH,MACA,QAAA5C,MAAA4B,EAAAwI,MAAAqwD,oBAoEA,SAAAC,GAAAtwD,GAA6B,OAASmX,KAAAnX,EAAAuwD,QAAAtuD,IAAAjC,EAAAwwD,SAOtC,SAAAC,GAAAj5D,EAAAk5D,EAAAz4D,EAAA+1B,EAAAhuB,GACA,OAAAguB,EAAqB,SAQrB,IAPA,IAAA9L,EAAA1qB,EAAAzB,MAAAsC,IAAAC,QAAA01B,GACAnJ,EAAA,SAAA7rB,GACA,GAAAxB,EAAAk+C,SAAAgb,EAAA,SAAAj6C,GAA8C,OAAAzd,EAAAkpB,EAAA5N,MAAAmC,EAAAjf,EAAAS,EAAAiqB,EAAA2B,UAAA3B,EAAArnB,OAAA7B,GAAAgH,GAAA,GAC9CyW,EAAAjf,EAAAS,EAAAiqB,EAAAjnB,KAAAjC,GAAAkpB,EAAArnB,OAAA7B,GAAAgH,GAAA,KACO,OAASglB,GAAA,IAGhBhsB,EAAAkpB,EAAA5N,MAAA,EAA8Btb,EAAA,EAAOA,IAAA,CACrC,IAAAisB,EAAAJ,EAAA7rB,GAEA,GAAAisB,EAAA,OAAAA,EAAAD,EAEA,SAGA,SAAA2rC,GAAAn5D,EAAAQ,EAAA4W,GACApX,EAAAo5D,SAAsBp5D,EAAA2iD,QACtB,IAAA3jD,EAAAgB,EAAAzB,MAAAS,GAAAmlB,aAAA3jB,GACA,WAAA4W,GAA4BpY,EAAA2C,QAAA,cAC5B3B,EAAA0B,SAAA1C,GAuCA,SAAAq6D,GAAAr5D,EAAAS,EAAA+1B,EAAAhuB,EAAA+iD,GACA,OAAA0N,GAAAj5D,EAAA,gBAAAS,EAAA+1B,EAAAhuB,IACAxI,EAAAk+C,SAAA,uBAAAj/B,GAA+C,OAAAA,EAAAjf,EAAAS,EAAA+H,OAC/C+iD,EA7BA,SAAAvrD,EAAAw2B,GACA,OAAAA,EAAqB,SACrB,IAAA8iC,EAAAC,EAAA5hB,EAAA33C,EAAAzB,MAAAiC,UACAm3C,aAAqB7Y,EAAA,gBAAgBw6B,EAAA3hB,EAAAl0C,MAGrC,IADA,IAAAinB,EAAA1qB,EAAAzB,MAAAsC,IAAAC,QAAA01B,GACAh1B,EAAAkpB,EAAA5N,MAAA,EAA8Btb,EAAA,EAAOA,IAAA,CACrC,IAAAiC,EAAAjC,EAAAkpB,EAAA5N,MAAA4N,EAAA2B,UAAA3B,EAAAjnB,KAAAjC,GACA,GAAQs9B,EAAA,cAAajQ,aAAAprB,GAAA,CAGZ81D,EAFTD,GAAA3hB,EAAA/2C,MAAAkc,MAAA,GACAtb,GAAAm2C,EAAA/2C,MAAAkc,OAAA4N,EAAArnB,OAAAs0C,EAAA/2C,MAAAkc,MAAA,IAAA66B,EAAA/2C,MAAAH,IACSiqB,EAAArnB,OAAAs0C,EAAA/2C,MAAAkc,OAEA4N,EAAArnB,OAAA7B,GACT,OAIA,aAAA+3D,IACAJ,GAAAn5D,EAA0B8+B,EAAA,cAAa/qB,OAAA/T,EAAAzB,MAAAsC,IAAA04D,GAAA,YACvC,GASAC,CAAAx5D,EAAAw2B,GAvCA,SAAAx2B,EAAAw2B,GACA,OAAAA,EAAqB,SACrB,IAAA9L,EAAA1qB,EAAAzB,MAAAsC,IAAAC,QAAA01B,GAAA/yB,EAAAinB,EAAA2B,UACA,SAAA5oB,KAAAsrB,QAA6B+P,EAAA,cAAajQ,aAAAprB,MAC1C01D,GAAAn5D,EAAA,IAA8B8+B,EAAA,cAAapU,GAAA,YAC3C,GAkCA+uC,CAAAz5D,EAAAw2B,IAQA,SAAAkjC,GAAA15D,EAAAS,EAAA+1B,EAAAhuB,GACA,OAAAywD,GAAAj5D,EAAA,sBAAAS,EAAA+1B,EAAAhuB,IACAxI,EAAAk+C,SAAA,6BAAAj/B,GAAqD,OAAAA,EAAAjf,EAAAS,EAAA+H,MAIrD,SAAAxI,EAAAw2B,GACA,IAAA31B,EAAAb,EAAAzB,MAAAsC,IACA,OAAA21B,EACA,QAAA31B,EAAA0sB,gBACA4rC,GAAAn5D,EAA4B8+B,EAAA,cAAa/qB,OAAAlT,EAAA,EAAAA,EAAA0kB,QAAAqG,MAAA,YACzC,GAMA,IADA,IAAAlB,EAAA7pB,EAAAC,QAAA01B,GACAh1B,EAAAkpB,EAAA5N,MAAA,EAA8Btb,EAAA,EAAOA,IAAA,CACrC,IAAAiC,EAAAjC,EAAAkpB,EAAA5N,MAAA4N,EAAA2B,UAAA3B,EAAAjnB,KAAAjC,GACA4tD,EAAA1kC,EAAArnB,OAAA7B,GACA,GAAAiC,EAAA8pB,cACO4rC,GAAAn5D,EAAuB8+B,EAAA,cAAa/qB,OAAAlT,EAAAuuD,EAAA,EAAAA,EAAA,EAAA3rD,EAAA8hB,QAAAqG,MAAA,eAC3C,KAAakT,EAAA,cAAajQ,aAAAprB,GAGnB,SAFA01D,GAAAn5D,EAAuB8+B,EAAA,cAAa/qB,OAAAlT,EAAAuuD,GAAA,WAG3C,UAvBAuK,CAAA35D,EAAAw2B,GA2BA,SAAAojC,GAAA55D,GACA,OAAA65D,GAAA75D,GA7JAu4D,GAAAuB,QAAA,SAAA95D,EAAAwI,GAEA,GADAxI,EAAAswD,SAAA,IAAA9nD,EAAA40C,SAAA50C,EAAA8nD,UACAyJ,GAAA/5D,EAAAwI,GAQA,GAPAxI,EAAAutD,YAAA8J,aACAr3D,EAAAqxD,YAAA7oD,EAAA40C,QACAp9C,EAAA2xD,gBAAA3Z,KAAAC,OAKM43C,EAAMt0C,KAAA,IAAA/yC,EAAA40C,SAAA50C,EAAA2nD,SAAA3nD,EAAA6nD,QAAA7nD,EAAA4nD,QASTpwD,EAAAk+C,SAAA,yBAAAj/B,GAAuD,OAAAA,EAAAjf,EAAAwI,MAAyB0nD,GAAAlwD,EAAAwI,GACnFA,EAAAwxD,iBAEAxB,GAAAx4D,EAAA,WAZY,CACZ,IAAAi4C,EAAAD,KAAAC,MACAj4C,EAAAuyD,aAAAta,EACAj4C,EAAAi6D,4BAAA35D,WAAA,WACAN,EAAAuyD,cAAAta,IACAj4C,EAAAk+C,SAAA,yBAAAj/B,GAAqD,OAAAA,EAAAjf,EAAAm9C,EAAA,eACrDn9C,EAAAuyD,aAAA,IAEK,OAQLgG,GAAA2B,MAAA,SAAAl6D,EAAAsF,GACA,IAAAA,EAAA83C,UAAwBp9C,EAAAswD,UAAA,IAGxBiI,GAAA4B,SAAA,SAAAn6D,EAAAwI,GACA,KAAAuxD,GAAA/5D,EAAAwI,OAAA4xD,UACA5xD,EAAA2nD,UAAA3nD,EAAA6nD,QAAwCw/B,EAAM90C,KAAAvyC,EAAA4nD,SAE9C,GAAApwD,EAAAk+C,SAAA,0BAAAj/B,GAAoD,OAAAA,EAAAjf,EAAAwI,KACpDA,EAAAwxD,qBADA,CAKA,IAAAriB,EAAA33C,EAAAzB,MAAAiC,UACA,KAAAm3C,aAAuB7Y,EAAA,eAAa6Y,EAAA/2C,MAAAwqB,WAAAusB,EAAA9sB,MAAA,CACpC,IAAAvtB,EAAAuS,OAAAwqD,aAAA7xD,EAAA4xD,UACAp6D,EAAAk+C,SAAA,2BAAAj/B,GAAwD,OAAAA,EAAAjf,EAAA23C,EAAA/2C,MAAAH,IAAAk3C,EAAA9sB,IAAApqB,IAAAnD,MACjD0C,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAAC,WAAA3B,GAAA+mB,kBACP7b,EAAAwxD,oBAoHA,IAAAM,GAAyBu1B,EAAM90C,IAAA,oBAE/Bud,GAAAiC,UAAA,SAAAv6D,EAAAwI,GACAxI,EAAAswD,SAAA9nD,EAAA8nD,SACA,IAAAkK,EAAAZ,GAAA55D,GACAi4C,EAAAD,KAAAC,MAAAj3C,EAAA,cACAi3C,EAAAj4C,EAAAy6D,UAAAz1C,KAAA,KApHA,SAAAxc,EAAAkyD,GACA,IAAA5a,EAAA4a,EAAA5sD,EAAAtF,EAAAuwD,QAAA4B,EAAAD,EAAAzY,EAAAz5C,EAAAwwD,QACA,OAAAlZ,IAAA6a,IAAA,IAkHAC,CAAApyD,EAAAxI,EAAAy6D,aAAAjyD,EAAA8xD,MACA,eAAAt6D,EAAAy6D,UAAAz5D,KAA+CA,EAAA,cAC/C,eAAAhB,EAAAy6D,UAAAz5D,OAAoDA,EAAA,gBAEpDhB,EAAAy6D,WAAoBz1C,KAAAizB,EAAAnqC,EAAAtF,EAAAuwD,QAAA9W,EAAAz5C,EAAAwwD,QAAAh4D,QAEpB,IAAAP,EAAAT,EAAAkgD,YAAA4Y,GAAAtwD,IACA/H,IAEA,eAAAO,EACKhB,EAAA66D,UAAA,IAAsBs1B,GAASnwF,EAAAS,EAAA+H,EAAAgyD,IACpC,eAAAx5D,EAxDA,SAAAhB,EAAAS,EAAA+1B,EAAAhuB,GACA,OAAAywD,GAAAj5D,EAAA,sBAAAS,EAAA+1B,EAAAhuB,IACAxI,EAAAk+C,SAAA,6BAAAj/B,GAAqD,OAAAA,EAAAjf,EAAAS,EAAA+H,MAsDrDkxD,IAAA15D,EAAAS,QAAA+1B,OAAAhuB,GACKA,EAAAwxD,iBAEAxB,GAAAx4D,EAAA,aAGL,IAAImwF,GAAS,SAAAnwF,EAAAS,EAAA+H,EAAAgyD,GACb,IAUAle,EAAAye,EAVA16C,EAAAhiB,KAWA,GATAA,KAAA2B,OACA3B,KAAAizD,SAAAtxD,EAAAzB,MAAAsC,IACAxC,KAAAoC,MACApC,KAAAmK,QACAnK,KAAAm8D,UACAn8D,KAAAktD,WAAA/iD,EAAA8xD,IACAj8D,KAAA28D,aAAAxyD,EAAA8nD,SAGA7vD,EAAA+1B,QAAA,EACA8lB,EAAAt8C,EAAAzB,MAAAsC,IAAA83B,OAAAl4B,EAAA+1B,QACAukC,EAAAt6D,EAAA+1B,WACG,CACH,IAAA9L,EAAA1qB,EAAAzB,MAAAsC,IAAAC,QAAAL,OACA67C,EAAA5xB,EAAA3pB,OACAg6D,EAAArwC,EAAA5N,MAAA4N,EAAArnB,SAAA,EAGAhF,KAAA48D,UAAA,KAEA,IAAAzyC,EAAAgyC,EAAA,KAAAhyD,EAAAggB,OACA0yC,EAAA1yC,EAAAxoB,EAAAihD,QAAAC,YAAA14B,GAAA,QACAnqB,KAAAmqB,OAAA0yC,IAAA9zC,IAAA,MAEAk1B,EAAAt7C,KAAAC,KAAAykB,YAAA,IAAA42B,EAAAt7C,KAAAC,KAAAy2C,YACA13C,EAAAzB,MAAAiC,qBAAsCs+B,EAAA,eAAai8B,GAAA/6D,EAAAzB,MAAAiC,UAAAP,QAC9C5B,KAAA48D,WAAmBx3D,KAAA64C,EACxB77C,IAAAs6D,EACAI,QAAA98D,KAAAmqB,SAAAnqB,KAAAmqB,OAAA9C,UACA01C,cAAA/8D,KAAAmqB,QAAoDqnE,EAAM10C,QAAA98C,KAAAmqB,OAAAnB,aAAA,qBAE1DhpB,KAAAmqB,QAAAnqB,KAAA48D,YAAA58D,KAAA48D,UAAAE,SAAA98D,KAAA48D,UAAAG,iBACA/8D,KAAA2B,KAAAutD,YAAAxG,OACA1oD,KAAA48D,UAAAE,UAAiC98D,KAAAmqB,OAAA9C,WAAA,GACjCrnB,KAAA48D,UAAAG,eACO96D,WAAA,WAAyB,OAAA+f,EAAAmI,OAAAmqB,aAAA,4BAAiE,IACjGt0C,KAAA2B,KAAAutD,YAAA/uD,SAGAwB,EAAA0K,KAAA4Q,iBAAA,UAAAjd,KAAAg9D,GAAAh9D,KAAAg9D,GAAA3/C,KAAArd,OACA2B,EAAA0K,KAAA4Q,iBAAA,YAAAjd,KAAA4+B,KAAA5+B,KAAA4+B,KAAAvhB,KAAArd,OACAm6D,GAAAx4D,EAAA,YA6DA,SAAA+5D,GAAA/5D,EAAAwI,GACA,QAAAxI,EAAAW,cAWMkvF,EAAMl0C,QAAAt6C,KAAAi6D,IAAA9yD,EAAA+yD,UAAAv7D,EAAAw7D,oBAAA,OACZx7D,EAAAw7D,oBAAA,KACA,GAxEA20B,GAASprF,UAAAQ,KAAA,WACTlH,KAAA2B,KAAA0K,KAAAwjD,oBAAA,UAAA7vD,KAAAg9D,IACAh9D,KAAA2B,KAAA0K,KAAAwjD,oBAAA,YAAA7vD,KAAA4+B,MACA5+B,KAAA48D,WAAA58D,KAAAmqB,SACAnqB,KAAA2B,KAAAutD,YAAAxG,OACA1oD,KAAA48D,UAAAE,SAAiC98D,KAAAmqB,OAAAijC,gBAAA,aACjCptD,KAAA48D,UAAAG,eAAuC/8D,KAAAmqB,OAAAijC,gBAAA,mBACvCptD,KAAA2B,KAAAutD,YAAA/uD,SAEAH,KAAA2B,KAAA66D,UAAA,MAGAs1B,GAASprF,UAAAs2D,GAAA,SAAA7yD,GAGT,GAFAnK,KAAAkH,OAEAlH,KAAA2B,KAAAonB,IAAAjb,SAAA,GAAA3D,EAAAggB,OAAA9lB,SAAA8F,EAAAggB,OAAA9O,WAAAlR,EAAAggB,QAAA,CAGA,IAAA/nB,EAAApC,KAAAoC,IACApC,KAAA2B,KAAAzB,MAAAsC,KAAAxC,KAAAizD,WAA6C7wD,EAAApC,KAAA2B,KAAAkgD,YAAA4Y,GAAAtwD,KAE7CnK,KAAA28D,eAAAv6D,EACA+3D,GAAAn6D,KAAA2B,KAAA,WACGq5D,GAAAh7D,KAAA2B,KAAAS,QAAA+1B,OAAAhuB,EAAAnK,KAAAktD,YACH/iD,EAAAwxD,iBACG37D,KAAAm8D,SAEWq1B,EAAMl0C,QAAAt9C,KAAA48D,YAAA58D,KAAA48D,UAAAx3D,KAAAsrB,QAQN8gE,EAAMx0C,UAAAh9C,KAAA2B,KAAAzB,MAAAiC,qBAAkDs+B,EAAA,iBACtEr+B,OAAApC,KAAA2B,KAAAzB,MAAAiC,UAAAP,MAAAQ,OAAApC,KAAA2B,KAAAzB,MAAAiC,UAAAN,KACAi5D,GAAA96D,KAAA2B,KAA+B8+B,EAAA,UAAStT,KAAAntB,KAAA2B,KAAAzB,MAAAsC,IAAAC,QAAAL,QAAA,WACxC+H,EAAAwxD,kBAEAxB,GAAAn6D,KAAA2B,KAAA,aAIAmwF,GAASprF,UAAAk4B,KAAA,SAAAz0B,IACTnK,KAAA28D,eAAA35D,KAAAi6D,IAAAj9D,KAAAmK,MAAAsF,EAAAtF,EAAAuwD,SAAA,GACA13D,KAAAi6D,IAAAj9D,KAAAmK,MAAAy5C,EAAAz5C,EAAAwwD,SAAA,KACK36D,KAAA28D,cAAA,GACLxC,GAAAn6D,KAAA2B,KAAA,YAGAs4D,GAAAmD,UAAA,SAAAz7D,GACA45D,GAAA55D,GACAw4D,GAAAx4D,EAAA,YAGAs4D,GAAAoD,YAAA,SAAA17D,GAAwC,OAAA45D,GAAA55D,IAsBxC,IAAA27D,GAAyBk0B,EAAMr0C,QAAA,OA8C/B,SAAAogB,GAAA57D,EAAA67D,GACAvE,aAAAt3D,EAAA87D,kBACAD,GAAA,IAAmB77D,EAAA87D,iBAAAx7D,WAAA,WAAiD,OAAAu5D,GAAA75D,IAA+B67D,IAGnG,SAAAE,GAAA/7D,GAEA,IADAA,EAAAW,WAAA,EACAX,EAAAgrD,iBAAAlsD,OAAA,GAA4CkB,EAAAgrD,iBAAAxhD,MAAAk9C,mBAG5C,SAAAmT,GAAA75D,EAAAg8D,GAGA,GAFAh8D,EAAAutD,YAAA8J,aACA0E,GAAA/7D,GACAg8D,GAAAh8D,EAAAihD,QAAA+C,MAAA,CACA,IAAArM,EAAAmV,GAAA9sD,GAGA,OAFA23C,MAAAve,GAAAp5B,EAAAzB,MAAAiC,WAA+CR,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAAmlB,aAAAwzB,IACrC33C,EAAA0iD,YAAA1iD,EAAAzB,QACV,EAEA,SA/DAg6D,GAAA0D,iBAAA1D,GAAA2D,kBAAA,SAAAl8D,GACA,IAAAA,EAAAW,UAAA,CACAX,EAAAutD,YAAAwJ,QACA,IAAAx4D,EAAAyB,EAAAzB,MACAmsB,EAAAnsB,EAAAiC,UAAAI,MACA,GAAArC,EAAAiC,UAAAoe,QACArgB,EAAAqvB,cAAAlD,EAAAgY,YAAAhY,EAAAnpB,cAAAmpB,EAAApnB,WAAAhB,MAAA2uC,KAAA,SAAAhjC,GAAiH,WAAAA,EAAAjN,KAAAC,KAAAwnB,aAEjHzoB,EAAAm8D,WAAAn8D,EAAAzB,MAAAqvB,aAAAlD,EAAApoB,QACAu3D,GAAA75D,GAAA,GACAA,EAAAm8D,WAAA,UAMA,GAJAtC,GAAA75D,GAIU6vF,EAAM10C,OAAA58C,EAAAiC,UAAAoe,OAAA8L,EAAAnpB,eAAAmpB,EAAAgY,YAAAhY,EAAApnB,WAAAhB,MAAAxD,OAEhB,IADA,IAAA64C,EAAA33C,EAAA0K,KAAAy4C,eACA1/C,EAAAk0C,EAAA4L,UAAA5kD,EAAAg5C,EAAA8L,YAAgEhgD,GAAA,GAAAA,EAAAf,UAAA,GAAA/D,GAA2C,CAC3G,IAAA0E,EAAA1E,EAAA,EAAA8E,EAAA8mB,UAAA9mB,EAAA4sC,WAAA1xC,EAAA,GACA,IAAA0E,EAAwB,MACxB,MAAAA,EAAAX,SAAA,CACAi1C,EAAAwO,SAAA9iD,IAAAiF,UAAAxJ,QACA,MAEA2E,EAAAJ,EACA1E,GAAA,EAKAqB,EAAAW,WAAA,EAEAi7D,GAAA57D,EAAA27D,KAGApD,GAAAl4D,eAAA,SAAAL,EAAAwI,GACAxI,EAAAW,YACAX,EAAAW,WAAA,EACAX,EAAAw7D,mBAAAhzD,EAAA+yD,UACAK,GAAA57D,EAAA,MAkDA,IAAAo8D,GAA0ByzB,EAAM70C,IAAO60C,EAAM50C,WAAA,IACtC40C,EAAMt0C,KAAQs0C,EAAMh0C,eAAA,IA0C3B,SAAAwgB,GAAAr8D,EAAA1C,EAAA+b,EAAA/T,GACA,IAAAzG,EAAAk1D,GAAA/zD,EAAA1C,EAAA+b,EAAArZ,EAAAswD,SAAAtwD,EAAAzB,MAAAiC,UAAAI,OACA,IAAAZ,EAAAk+C,SAAA,uBAAAj/B,GAAiD,OAAAA,EAAAjf,EAAAsF,EAAAzG,GAA4Bsf,EAAA,MAAKS,UAAU/f,EAA5F,CAEA,IAAAy9D,EAvBA,SAAAz9D,GACA,UAAAA,EAAAw2B,WAAA,GAAAx2B,EAAAu2B,SAAA,GAAAv2B,EAAA0mB,QAAAiC,WAAA3oB,EAAA0mB,QAAAnd,WAAA,KAsBAm0D,CAAA19D,GACAG,EAAAs9D,EAAAt8D,EAAAzB,MAAAS,GAAA6nB,qBAAAy1C,EAAAt8D,EAAAswD,UAAAtwD,EAAAzB,MAAAS,GAAA25C,iBAAA95C,GACAmB,EAAA0B,SAAA1C,EAAAqlB,iBAAA1iB,QAAA,YAAAA,QAAA,qBA9CA22D,GAAAzrC,KAAA0rC,GAAA/4B,IAAA,SAAAx/B,EAAAsF,GACA,IAAAqyC,EAAA33C,EAAAzB,MAAAiC,UAAAg/B,EAAA,OAAAl6B,EAAAtE,KACA,IAAA22C,EAAA/4B,MAAA,CAGA,IAAA1X,EAAAk1D,GAAA,KAAA92D,EAAAk3D,cAEAp9D,EAAAs0D,GAAA1zD,EADA23C,EAAApyB,WAEA6B,EAAAhoB,EAAAgoB,IACA9pB,EAAA8B,EAAA9B,KACA4J,GACA5B,EAAA00D,iBACA9yD,EAAAu1D,YACAv1D,EAAAw1D,QAAA,YAAAt1C,EAAAnN,WACA/S,EAAAw1D,QAAA,aAAAp/D,IAzCA,SAAA0C,EAAAonB,GAGA,GAAApnB,EAAAonB,IAAA1N,WAAA,CACA,IAAAtW,EAAApD,EAAAonB,IAAA1N,WAAA21B,YAAAt1B,SAAAC,cAAA,QACA5W,EAAAisC,YAAAjoB,GACAhkB,EAAA2kB,MAAAwiC,QAAA,6CACA,IAAA5S,EAAAwL,eAAAngD,EAAA+W,SAAAkiC,cACAj5C,EAAA25D,mBAAAv1C,GAIApnB,EAAAonB,IAAAw1C,OACAjlB,EAAAkM,kBACAlM,EAAAzV,SAAAl/B,GACA1C,WAAA,WACA8C,EAAAsW,YAA0BtW,EAAAsW,WAAAqxC,YAAA3nD,GAC1BpD,EAAA2iD,SACG,KAyBHka,CAAA78D,EAAAonB,GAEAoY,GAAYx/B,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAAorB,kBAAA/F,iBAAA1iB,QAAA,oBA+BZ42D,GAAAuE,MAAA,SAAA98D,EAAAsF,GACA,IAAA4B,EAAAk1D,GAAA,KAAA92D,EAAAk3D,cACAnjD,EAAAnS,KAAA61D,QAAA,aAAAz/D,EAAA4J,KAAA61D,QAAA,cACA71D,IAAAmS,GAAA/b,GAAA4J,EAAA81D,MAAAl+D,SACAu9D,GAAAr8D,EAAA1C,EAAA+b,EAAA/T,GACAA,EAAA00D,kBA7BA,SAAAh6D,EAAAsF,GACA,GAAAtF,EAAAonB,IAAA1N,WAAA,CACA,IAAAs6C,EAAAh0D,EAAAswD,UAAAtwD,EAAAzB,MAAAiC,UAAAI,MAAAG,OAAAC,KAAAC,KAAAC,KACAsnB,EAAAxoB,EAAAonB,IAAA1N,WAAA21B,YAAAt1B,SAAAC,cAAAg6C,EAAA,mBACAA,IAAmBxrC,EAAAm0B,gBAAA,QACnBn0B,EAAAT,MAAAwiC,QAAA,6CACA/hC,EAAAm6B,QACAriD,WAAA,WACAN,EAAA2iD,QACAn6B,EAAA9O,YAA4B8O,EAAA9O,WAAAqxC,YAAAviC,GAC5BwrC,EAAoBqI,GAAAr8D,EAAAwoB,EAAAnhB,MAAA,KAAA/B,GACV+2D,GAAAr8D,EAAAwoB,EAAAtO,YAAAsO,EAAAvO,UAAA3U,IACP,KAmBH23D,CAAAj9D,EAAAsF,IAIA,IAKA43D,GAAuB2yB,EAAM90C,IAAA,mBA2H7B,QAAAn0C,MAzHA0xD,GAAA6E,UAAA,SAAAn9D,EAAAsF,GACA,IAAAu1D,EAAA76D,EAAA66D,UAEA,GADAA,GAAkBA,EAAAt1D,OAClBD,EAAA83D,aAAA,CAEA,IAAAzlB,EAAA33C,EAAAzB,MAAAiC,UACAC,EAAAk3C,EAAA/4B,MAAA,KAAA5e,EAAAkgD,YAAA4Y,GAAAxzD,IACA,GAAA7E,UAAAk3C,EAAA13C,MAAAQ,QAAAk3C,aAA+D7Y,EAAA,cAAa6Y,EAAAz3C,GAAA,EAAAy3C,EAAAz3C,UAAyB,GAAA26D,KAAAI,UACrGj7D,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAAmlB,aAA6C2a,EAAA,cAAa/qB,OAAA/T,EAAAzB,MAAAsC,IAAAg6D,EAAAI,UAAAx6D,YACvD,GAAA6E,EAAAkjB,QAAA,GAAAljB,EAAAkjB,OAAA9lB,SAAA,CACH,IAAAo2C,EAAA94C,EAAAihD,QAAAC,YAAA57C,EAAAkjB,QAAA,GACA,IAAAswB,MAAAr1C,KAAAzC,KAAAC,KAAAykB,WAAAozB,GAAA94C,EAAAihD,QAA0E,OAC1EjhD,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAAmlB,aAA6C2a,EAAA,cAAa/qB,OAAA/T,EAAAzB,MAAAsC,IAAAi4C,EAAAqI,aAE1D,IAAAtiD,EAAAmB,EAAAzB,MAAAiC,UAAA+kB,UACAnmB,EAAAs0D,GAAA1zD,EAAAnB,GACAuoB,EAAAhoB,EAAAgoB,IACA9pB,EAAA8B,EAAA9B,KACAgI,EAAA83D,aAAAX,YACAn3D,EAAA83D,aAAAV,QAAAN,GAAA,mBAAAh1C,EAAAnN,WACAmiD,IAA4B92D,EAAA83D,aAAAV,QAAA,aAAAp/D,GAC5B0C,EAAAq9D,SAAA,IA5BA,SAAAx+D,EAAAo+B,GACA5+B,KAAAQ,QACAR,KAAA4+B,OA0BA,CAAAp+B,GAAAyG,EAAA43D,OAGA5E,GAAAgF,QAAA,SAAAt9D,GACAqb,OAAA/a,WAAA,WAAiC,OAAAN,EAAAq9D,SAAA,MAA+B,KAGhE9E,GAAAgF,SAAAhF,GAAAiF,UAAA,SAAAp8B,EAAA97B,GAAkE,OAAAA,EAAA00D,kBAElEzB,GAAAkF,KAAA,SAAAz9D,EAAAsF,GACA,IAAA+3D,EAAAr9D,EAAAq9D,SAGA,GAFAr9D,EAAAq9D,SAAA,KAEA/3D,EAAA83D,aAAA,CAEA,IAAAM,EAAA19D,EAAAkgD,YAAA4Y,GAAAxzD,IACA,GAAAo4D,EAAA,CACA,IAAAC,EAAA39D,EAAAzB,MAAAsC,IAAAC,QAAA48D,EAAAj9D,KACA,GAAAk9D,EAAA,CACA,IAAA9+D,EAAAw+D,KAAAx+D,OACAk1D,GAAA/zD,EAAAsF,EAAA83D,aAAAL,QAAAX,GAAA,qBACAA,GAAA,KAAA92D,EAAA83D,aAAAL,QAAA,gBAAAY,GACA,GAAA39D,EAAAk+C,SAAA,sBAAAj/B,GAAgD,OAAAA,EAAAjf,EAAAsF,EAAAzG,GAA4Bsf,EAAA,MAAKS,MAAAy+C,KAAApgC,QACjF33B,EAAA00D,sBAGA,GAAAn7D,EAAA,CAEAyG,EAAA00D,iBACA,IAAApiC,EAAA/4B,EAA0BsE,OAAAye,EAAA,EAAAze,CAASnD,EAAAzB,MAAAsC,IAAA88D,EAAAl9D,IAAA5B,GAAA8+D,EAAAl9D,IACnC,MAAAm3B,IAA0BA,EAAA+lC,EAAAl9D,KAE1B,IAAAzB,EAAAgB,EAAAzB,MAAAS,GACAq+D,KAAApgC,MAAkCj+B,EAAAorB,kBAElC,IAAA3pB,EAAAzB,EAAA+hB,QAAAhY,IAAA6uB,GACAgmC,EAAA,GAAA/+D,EAAAw2B,WAAA,GAAAx2B,EAAAu2B,SAAA,GAAAv2B,EAAA0mB,QAAAiC,WACAq2C,EAAA7+D,EAAA6B,IAKA,GAJA+8D,EACK5+D,EAAA6+B,iBAAAp9B,IAAA5B,EAAA0mB,QAAAnd,YAEApJ,EAAAk+B,aAAAz8B,IAAA5B,IACLG,EAAA6B,IAAAu4B,GAAAykC,GAAA,CAEA,IAAAnzC,EAAA1rB,EAAA6B,IAAAC,QAAAL,GACAm9D,GAAgB9+B,EAAA,cAAajQ,aAAAhwB,EAAA0mB,QAAAnd,aAC7BsiB,EAAA2B,WAAA3B,EAAA2B,UAAAiT,WAAAzgC,EAAA0mB,QAAAnd,YACKpJ,EAAAmlB,aAAA,IAAqB2a,EAAA,cAAapU,IAElC1rB,EAAAmlB,aAAA8oC,GAAAjtD,EAAA0qB,EAAA1rB,EAAA6B,IAAAC,QAAA9B,EAAA+hB,QAAAhY,IAAA6uB,MACL53B,EAAA2iD,QACA3iD,EAAA0B,SAAA1C,EAAA2C,QAAA,yBAGA22D,GAAA3V,MAAA,SAAA3iD,GACAA,EAAAo5D,UACAp5D,EAAAutD,YAAAxG,OACA/mD,EAAAonB,IAAA0/B,UAAAn8C,IAAA,uBACA3K,EAAAutD,YAAA/uD,QACAwB,EAAAo5D,SAAA,EACA94D,WAAA,WACAN,EAAAihD,SAAAjhD,EAAAqtD,aAAArtD,EAAAutD,YAAAyJ,iBAAA59B,GAAAp5B,EAAA0K,KAAAy4C,iBACS+J,GAAAltD,IACJ,MAILs4D,GAAAsE,KAAA,SAAA58D,GACAA,EAAAo5D,UACAp5D,EAAAutD,YAAAxG,OACA/mD,EAAAonB,IAAA0/B,UAAAtoB,OAAA,uBACAx+B,EAAAutD,YAAA/uD,QACAwB,EAAAutD,YAAAyJ,iBAAA/1B,QACAjhC,EAAAo5D,SAAA,IAIAd,GAAAwF,YAAA,SAAA99D,EAAAwI,GAMA,GAAMqnF,EAAMx0C,QAAWw0C,EAAMr0C,SAAA,yBAAAhzC,EAAAu1D,UAAA,CAC7B,IAAA3L,EAAApyD,EAAAoyD,eACA9xD,WAAA,WACA,GAAAN,EAAAoyD,oBAEApyD,EAAAonB,IAAAw1C,OACA58D,EAAA2iD,SACA3iD,EAAAk+C,SAAA,yBAAAj/B,GAAuD,OAAAA,EAAAjf,EAAAm9C,EAAA,mBAAvD,CACA,IACA58C,EADAP,EAAAzB,MAAAiC,UACAD,QAEAA,KAAAE,IAAA,GAAuCT,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAA+D,OAAAxC,EAAAE,IAAA,EAAAF,EAAAE,KAAA4jB,oBAClC,MAKLk0C,GAAgCD,GAAA1xD,IAAA2xD,GAAA3xD,IAEhC,SAAAo3D,GAAA1mC,EAAAC,GACA,GAAAD,GAAAC,EAAe,SACf,QAAAkI,KAAAnI,EAAoB,GAAAA,EAAAmI,KAAAlI,EAAAkI,GAAqB,SACzC,QAAAqB,KAAAvJ,EAAsB,KAAAuJ,KAAAxJ,GAAmB,SACzC,SAGA,IAAA2mC,GAAA,SAAAr4C,EAAA3kB,GACA5C,KAAA4C,QAAAi9D,GACA7/D,KAAAisB,KAAAjsB,KAAA4C,KAAAqpB,MAAA,EACAjsB,KAAAunB,SAGAq4C,GAAAl5D,UAAAgE,IAAA,SAAAgY,EAAA3W,EAAAzL,EAAAw/D,GACA,IAAA/+D,EAAA2hB,EAAA0R,UAAAroB,EAAAnK,KAAAk+D,EAAA9/D,KAAAisB,KAAA,QACA7pB,EAAArB,EAAAqB,IAEA,OADArB,EAAA+yB,QACA,SAAAqoB,GAAA/5C,EAAA9B,EAAA8B,EAAA9B,EAAAN,OAGA4/D,GAAAl5D,UAAAq5D,MAAA,WAAgD,UAEhDH,GAAAl5D,UAAAq0B,GAAA,SAAA9a,GACA,OAAAjgB,MAAAigB,GACAA,aAAA2/C,KACA5/D,KAAA4C,KAAA0G,KAAAtJ,KAAA4C,KAAA0G,KAAA2W,EAAArd,KAAA0G,KACAtJ,KAAAunB,OAAAtH,EAAAsH,OAAAo4C,GAAA3/D,KAAA4C,KAAAqd,EAAArd,QAGA,IAAAo9D,GAAA,SAAAx7D,EAAA5B,GACA5C,KAAA4C,QAAAi9D,GACA7/D,KAAAwE,SAGAw7D,GAAAt5D,UAAAgE,IAAA,SAAAgY,EAAA3W,EAAAzL,EAAAw/D,GACA,IAAAl+D,EAAA8gB,EAAAhY,IAAAqB,EAAAnK,KAAAk+D,EAAA9/D,KAAA4C,KAAAq9D,gBAAA,KAAA3/D,EACAuB,EAAA6gB,EAAAhY,IAAAqB,EAAAlK,GAAAi+D,EAAA9/D,KAAA4C,KAAAs9D,aAAA,MAAA5/D,EACA,OAAAsB,GAAAC,EAAA,SAAAs6C,GAAAv6C,EAAAC,EAAA7B,OAGAggE,GAAAt5D,UAAAq5D,MAAA,SAAAh9B,EAAAh3B,GAAuD,OAAAA,EAAAnK,KAAAmK,EAAAlK,IAEvDm+D,GAAAt5D,UAAAq0B,GAAA,SAAA9a,GACA,OAAAjgB,MAAAigB,GACAA,aAAA+/C,IAAAL,GAAA3/D,KAAAwE,MAAAyb,EAAAzb,QACAm7D,GAAA3/D,KAAA4C,KAAAqd,EAAArd,OAGAo9D,GAAAG,GAAA,SAAAp0D,GAAoC,OAAAA,EAAApJ,gBAAAq9D,IAEpC,IAAA71B,GAAA,SAAA3lC,EAAA5B,GACA5C,KAAA4C,QAAAi9D,GACA7/D,KAAAwE,SAGA2lC,GAAAzjC,UAAAgE,IAAA,SAAAgY,EAAA3W,EAAAzL,EAAAw/D,GACA,IAAAl+D,EAAA8gB,EAAA0R,UAAAroB,EAAAnK,KAAAk+D,EAAA,GACA,GAAAl+D,EAAAkyB,QAAqB,YACrB,IAAAjyB,EAAA6gB,EAAA0R,UAAAroB,EAAAlK,GAAAi+D,GAAA,GACA,OAAAj+D,EAAAiyB,SAAAjyB,EAAAO,KAAAR,EAAAQ,IAAyC,KACzC,IAAA+5C,GAAAv6C,EAAAQ,IAAA9B,EAAAuB,EAAAO,IAAA9B,EAAAN,OAGAmqC,GAAAzjC,UAAAq5D,MAAA,SAAA36D,EAAA2G,GACA,IAAAhL,EAAAqE,EAAA8hB,QAAAtV,UAAA7F,EAAAnK,MACA0D,EAAAvE,EAAAuE,MACAhF,EAAAS,EAAAT,OACA,OAAAA,GAAAyL,EAAAnK,MAAAtB,EAAA8E,EAAA0E,MAAAxE,GAAA4oB,UAAAniB,EAAAlK,IAGAsoC,GAAAzjC,UAAAq0B,GAAA,SAAA9a,GACA,OAAAjgB,MAAAigB,GACAA,aAAAkqB,IAAAw1B,GAAA3/D,KAAAwE,MAAAyb,EAAAzb,QACAm7D,GAAA3/D,KAAA4C,KAAAqd,EAAArd,OAMA,IAAAu5C,GAAA,SAAAv6C,EAAAC,EAAAc,GAGA3C,KAAA4B,OAIA5B,KAAA6B,KACA7B,KAAA2C,QAGA25B,IAA4B15B,MAAQue,cAAA,GAAqBnD,QAAUmD,cAAA,IAEnEg7B,GAAAz1C,UAAA8nB,KAAA,SAAA5sB,EAAAC,GACA,WAAAs6C,GAAAv6C,EAAAC,EAAA7B,KAAA2C,OAGAw5C,GAAAz1C,UAAAq0B,GAAA,SAAA9a,EAAA3f,GAGA,YAFA,IAAAA,MAAA,GAEAN,KAAA2C,KAAAo4B,GAAA9a,EAAAtd,OAAA3C,KAAA4B,KAAAtB,GAAA2f,EAAAre,MAAA5B,KAAA6B,GAAAvB,GAAA2f,EAAApe,IAGAs6C,GAAAz1C,UAAAgE,IAAA,SAAAgY,EAAApiB,EAAAw/D,GACA,OAAA9/D,KAAA2C,KAAA+H,IAAAgY,EAAA1iB,KAAAM,EAAAw/D,IAoDA3jB,GAAAqM,OAAA,SAAApmD,EAAAmlB,EAAA3kB,GACA,WAAAu5C,GAAA/5C,IAAA,IAAAw9D,GAAAr4C,EAAA3kB,KAoBAu5C,GAAAn+B,OAAA,SAAApc,EAAAC,EAAA2C,EAAA5B,GACA,WAAAu5C,GAAAv6C,EAAAC,EAAA,IAAAm+D,GAAAx7D,EAAA5B,KAYAu5C,GAAA/2C,KAAA,SAAAxD,EAAAC,EAAA2C,EAAA5B,GACA,WAAAu5C,GAAAv6C,EAAAC,EAAA,IAAAsoC,GAAA3lC,EAAA5B,KAMA05B,GAAA15B,KAAA8d,IAAA,WAA6C,OAAA1gB,KAAA2C,KAAAC,MAE7C05B,GAAAte,OAAA0C,IAAA,WAA+C,OAAA1gB,KAAA2C,gBAAAq9D,IAE/Cl7D,OAAAuc,iBAAA86B,GAAAz1C,UAAA41B,IAkBA,IAAA4G,MAAA28B,MAMAzjB,GAAA,SAAAgkB,EAAAl0D,GACAlM,KAAAogE,WAAA3/D,OAAA2/D,EAAAl9B,GACAljC,KAAAkM,cAAAzL,OAAAyL,EAAAg3B,IAMAkZ,GAAA1mC,OAAA,SAAAlT,EAAA69D,GACA,OAAAA,EAAA5/D,OAAA6/D,GAAAD,EAAA79D,EAAA,EAAAq9D,IAAuEkyB,IAUvE31C,GAAA11C,UAAA6U,KAAA,SAAApb,EAAAC,EAAAmgE,GACA,IAAAl3D,KAEA,OADArJ,KAAAwgE,UAAA,MAAArgE,EAAA,EAAAA,EAAA,MAAAC,EAAA,IAAAA,EAAAiJ,EAAA,EAAAk3D,GACAl3D,GAGA+yC,GAAA11C,UAAA85D,UAAA,SAAArgE,EAAAC,EAAAiJ,EAAA/I,EAAAigE,GACA,QAAAp9D,EAAA,EAAiBA,EAAAnD,KAAAogE,MAAA3/D,OAAuB0C,IAAA,CACxC,IAAA4I,EAAA/L,KAAAogE,MAAAj9D,GACA4I,EAAAnK,MAAAxB,GAAA2L,EAAAlK,IAAA1B,KAAAogE,KAAAx0D,EAAAnJ,QACOyG,EAAAa,KAAA6B,EAAAyiB,KAAAziB,EAAAnK,KAAAtB,EAAAyL,EAAAlK,GAAAvB,IAEP,QAAAuvB,EAAA,EAAmBA,EAAA7vB,KAAAkM,SAAAzL,OAA4BovB,GAAA,EAC/C,GAAA7vB,KAAAkM,SAAA2jB,GAAAzvB,GAAAJ,KAAAkM,SAAA2jB,EAAA,GAAA1vB,EAAA,CACA,IAAAsgE,EAAAzgE,KAAAkM,SAAA2jB,GAAA,EACA7vB,KAAAkM,SAAA2jB,EAAA,GAAA2wC,UAAArgE,EAAAsgE,EAAArgE,EAAAqgE,EAAAp3D,EAAA/I,EAAAmgE,EAAAF,KAeAnkB,GAAA11C,UAAAgE,IAAA,SAAAgY,EAAAlgB,EAAAmF,GACA,OAAA3H,MAAc+xF,IAAK,GAAArvE,EAAAN,KAAA3hB,OAA+BT,KAClDA,KAAA0gE,SAAAh+C,EAAAlgB,EAAA,IAAAmF,GAAAk4D,KAGAzjB,GAAA11C,UAAAg6D,SAAA,SAAAh+C,EAAAtd,EAAA9E,EAAAw/D,EAAAn4D,GAEA,IADA,IAAAg5D,EACAx9D,EAAA,EAAiBA,EAAAnD,KAAAogE,MAAA3/D,OAAuB0C,IAAA,CACxC,IAAAu2B,EAAA15B,KAAAogE,MAAAj9D,GAAAuH,IAAAgY,EAAApiB,EAAAw/D,GACApmC,KAAA/2B,KAAAo9D,MAAA36D,EAAAs0B,IAAoDinC,WAAAz2D,KAAAwvB,GACpD/xB,EAAAi5D,UAAgCj5D,EAAAi5D,SAAA5gE,KAAAogE,MAAAj9D,GAAAP,MAGhC,OAAA5C,KAAAkM,SAAAzL,OAiMA,SAAAogE,EAAAF,EAAAj+C,EAAAtd,EAAA9E,EAAAw/D,EAAAn4D,GAiBA,IAhBA,IAAAuE,EAAA20D,EAAArgE,QAIAwoC,EAAA,SAAAnU,EAAAisC,EAAAhsC,EAAAisC,GACA,QAAA59D,EAAA,EAAmBA,EAAA+I,EAAAzL,OAAqB0C,GAAA,GACxC,IAAA/C,EAAA8L,EAAA/I,EAAA,GAAA69D,OAAA,GACA,GAAA5gE,GAAAy0B,EAAAz0B,EAAA0/D,IACAgB,GAAA50D,EAAA/I,GAAA28D,EACA5zD,EAAA/I,EAAA,MACO2xB,GAAAx0B,IAAA0gE,EAAAD,EAAAjsC,GAAAgsC,EAAAjsC,MACP3oB,EAAA/I,IAAA69D,EACA90D,EAAA/I,EAAA,IAAA69D,MAIA79D,EAAA,EAAiBA,EAAAuf,EAAAN,KAAA3hB,OAAyB0C,IAAOuf,EAAAN,KAAAjf,GAAAmF,QAAA0gC,GAKjD,IADA,IAAAi4B,GAAA,EACApxC,EAAA,EAAmBA,EAAA3jB,EAAAzL,OAAuBovB,GAAA,EAAY,OAAA3jB,EAAA2jB,EAAA,IACtD,IAAAjuB,EAAA8gB,EAAAhY,IAAAwB,EAAA2jB,GAAAiwC,GAAAoB,EAAAt/D,EAAAtB,EACA,GAAA4gE,EAAA,GAAAA,GAAA97D,EAAA8hB,QAAAqG,KAAA,CACA0zC,GAAA,EACA,SAGA,IAAAp/D,EAAA6gB,EAAAhY,IAAAm2D,EAAAhxC,EAAA,GAAAiwC,GAAA,GAAAqB,EAAAt/D,EAAAvB,EACAS,EAAAqE,EAAA8hB,QAAAtV,UAAAsvD,GACA57D,EAAAvE,EAAAuE,MACA87D,EAAArgE,EAAAT,OACA+gE,EAAAj8D,EAAAqyB,WAAAnyB,GACA,GAAA+7D,GAAAD,GAAAF,GAAAE,EAAAC,EAAAnzC,UAAAizC,EAAA,CACA,IAAAznC,EAAAxtB,EAAA2jB,EAAA,GAAA6wC,SAAAh+C,EAAA2+C,EAAAz/D,EAAA,EAAAsK,EAAA2jB,GAAAiwC,EAAA,EAAAn4D,GACA+xB,GAAoBq4D,IACpB7lF,EAAA2jB,GAAAqxC,EACAh1D,EAAA2jB,EAAA,GAAAsxC,EACAj1D,EAAA2jB,EAAA,GAAA6J,IAEAxtB,EAAA2jB,EAAA,MACAoxC,GAAA,QAGAA,GAAA,EAKA,GAAAA,EAAA,CACA,IAAAZ,EA4BA,SAAAn0D,EAAA20D,EAAAR,EAAA39C,EAAApiB,EAAAw/D,EAAAn4D,GAEA,SAAA25D,EAAA1+B,EAAAk9B,GACA,QAAA38D,EAAA,EAAmBA,EAAAy/B,EAAAw9B,MAAA3/D,OAAsB0C,IAAA,CACzC,IAAAu2B,EAAAkJ,EAAAw9B,MAAAj9D,GAAAuH,IAAAgY,EAAApiB,EAAAw/D,GACApmC,EAAmB2mC,EAAAn2D,KAAAwvB,GACnB/xB,EAAAi5D,UAAkCj5D,EAAAi5D,SAAAh+B,EAAAw9B,MAAAj9D,GAAAP,MAElC,QAAAitB,EAAA,EAAqBA,EAAA+S,EAAA12B,SAAAzL,OAA2BovB,GAAA,EACzCyxC,EAAA1+B,EAAA12B,SAAA2jB,EAAA,GAAA+S,EAAA12B,SAAA2jB,GAAAiwC,EAAA,GAEP,QAAA38D,EAAA,EAAiBA,EAAA+I,EAAAzL,OAAqB0C,GAAA,GAAU,GAAA+I,EAAA/I,EAAA,IAC3Cm+D,EAAAp1D,EAAA/I,EAAA,GAAA09D,EAAA19D,GAAA28D,EAAA,GAEL,OAAAO,EA1CAkB,CAAAr1D,EAAA20D,EAAAF,MAAAj+C,EACApiB,EAAAw/D,EAAAn4D,GACAoiC,EAAAu2B,GAAAD,EAAAj7D,EAAA,EAAAuC,GACAg5D,EAAA52B,EAAAq2B,MACA,QAAA7hC,EAAA,EAAqBA,EAAAryB,EAAAzL,OAAuB89B,GAAA,EAAYryB,EAAAqyB,EAAA,OACxDryB,EAAAhB,OAAAqzB,EAAA,GACAA,GAAA,GAEA,QAAAusB,EAAA,EAAAlnD,EAAA,EAA4BknD,EAAA/gB,EAAA79B,SAAAzL,OAA6BqqD,GAAA,GAEzD,IADA,IAAA0W,EAAAz3B,EAAA79B,SAAA4+C,GACAlnD,EAAAsI,EAAAzL,QAAAyL,EAAAtI,GAAA49D,GAA2D59D,GAAA,EAC3DsI,EAAAhB,OAAAtH,EAAA,EAAAmmC,EAAA79B,SAAA4+C,GAAA/gB,EAAA79B,SAAA4+C,EAAA,GAAA/gB,EAAA79B,SAAA4+C,EAAA,KAIA,WAAA1O,GAAAukB,KAAAx9B,KAAAs+B,IAAAv1D,GAlQKw1D,CAAA1hE,KAAAkM,SAAAy0D,EAAAj+C,EAAAtd,EAAA9E,EAAAw/D,EAAAn4D,GAEAg5D,EAAA,IAAAvkB,GAAAukB,EAAAx9B,KAAAs+B,KAA6DswB,IAOlE31C,GAAA11C,UAAA4F,IAAA,SAAA9J,EAAA69D,GACA,OAAAA,EAAA5/D,OACAT,MAAc+xF,GAAQ31C,GAAA1mC,OAAAlT,EAAA69D,GACtBrgE,KAAA2hE,SAAAn/D,EAAA69D,EAAA,GAF4BrgE,MAK5Bo8C,GAAA11C,UAAAi7D,SAAA,SAAAn/D,EAAA69D,EAAA//D,GACA,IAEA4L,EAFA8V,EAAAhiB,KAEAshD,EAAA,EACA9+C,EAAA8F,QAAA,SAAA+4D,EAAAD,GACA,IAAA5lC,EAAAomC,EAAAR,EAAA9gE,EACA,GAAAk7B,EAAAqmC,GAAAxB,EAAAgB,EAAAO,GAAA,CAGA,IADA11D,IAAoBA,EAAA8V,EAAA9V,SAAA1L,SACpB8gD,EAAAp1C,EAAAzL,QAAAyL,EAAAo1C,GAAA8f,GAAgF9f,GAAA,EAChFp1C,EAAAo1C,IAAA8f,EACOl1D,EAAAo1C,EAAA,GAAAp1C,EAAAo1C,EAAA,GAAAqgB,SAAAN,EAAA7lC,EAAAomC,EAAA,GAEA11D,EAAAhB,OAAAo2C,EAAA,EAAA8f,IAAAC,EAAAnzC,SAAAoyC,GAAA9kC,EAAA6lC,EAAAO,EAAA,EAAA/B,KACPve,GAAA,KAGA,IAAA8e,EAAA0B,GAAAxgB,EAAAygB,GAAA1B,MAAA//D,GACA,WAAA87C,GAAAgkB,EAAA3/D,OAAAT,KAAAogE,MAAA1wD,OAAA0wD,GAAAj9B,KAAAs+B,IAAAzhE,KAAAogE,MACAl0D,GAAAlM,KAAAkM,WAMAkwC,GAAA11C,UAAAy5B,OAAA,SAAAkgC,GACA,UAAAA,EAAA5/D,QAAAT,MAAyC+xF,GAAQ/xF,KACjDA,KAAAgiE,YAAA3B,EAAA,IAGAjkB,GAAA11C,UAAAs7D,YAAA,SAAA3B,EAAA//D,GAEA,IADA,IAAA4L,EAAAlM,KAAAkM,SAAAk0D,EAAApgE,KAAAogE,MACAj9D,EAAA,EAAiBA,EAAA+I,EAAAzL,OAAqB0C,GAAA,GAEtC,IADA,IAAAq4B,OAAA,EAAA55B,EAAAsK,EAAA/I,GAAA7C,EAAAuB,EAAAqK,EAAA/I,EAAA,GAAA7C,EACAsD,EAAA,EAAAmI,OAAA,EAAoCnI,EAAAy8D,EAAA5/D,OAAwBmD,KAAOmI,EAAAs0D,EAAAz8D,KACnEmI,EAAAnK,QAAAmK,EAAAlK,OACAw+D,EAAAz8D,GAAA,MACS43B,WAAAtxB,KAAA6B,IAGT,GAAAyvB,EAAA,CACAtvB,GAAAlM,KAAAkM,WAAoCA,EAAAlM,KAAAkM,SAAA1L,SACpC,IAAA26B,EAAAjvB,EAAA/I,EAAA,GAAA6+D,YAAAxmC,EAAA55B,EAAA,GACAu5B,GAAmB42D,GACnB7lF,EAAA/I,EAAA,GAAAg4B,GAEAjvB,EAAAhB,OAAA/H,EAAA,GACAA,GAAA,IAGA,GAAAi9D,EAAA3/D,OAAqB,QAAAovB,EAAA,EAAAoyC,OAAA,EAAqCpyC,EAAAwwC,EAAA5/D,OAA0BovB,IAAS,GAAAoyC,EAAA5B,EAAAxwC,GAC7F,QAAAw3B,EAAA,EAAqBA,EAAA+Y,EAAA3/D,OAAoB4mD,IAAS+Y,EAAA/Y,GAAAtsB,GAAAknC,EAAA3hE,KAClD8/D,GAAApgE,KAAAogE,QAAgCA,EAAApgE,KAAAogE,MAAA5/D,SAChC4/D,EAAAl1D,OAAAm8C,IAAA,IAGA,OAAAn7C,GAAAlM,KAAAkM,UAAAk0D,GAAApgE,KAAAogE,MAAyDpgE,KACzDogE,EAAA3/D,QAAAyL,EAAAzL,OAAA,IAAA27C,GAAAgkB,EAAAl0D,GAAgF6lF,IAGhF31C,GAAA11C,UAAA4jD,SAAA,SAAAhqD,EAAA8E,GACA,GAAApF,MAAc+xF,GAAQ,OAAA/xF,KACtB,GAAAoF,EAAAsyB,OAAoB,OAAA0kB,GAAA77B,MAGpB,IADA,IAAAzW,EAAAs2D,EACAj9D,EAAA,EAAiBA,EAAAnD,KAAAkM,SAAAzL,OAA0B0C,GAAA,EAAU,GAAAnD,KAAAkM,SAAA/I,IAAA7C,EAAA,CACrDN,KAAAkM,SAAA/I,IAAA7C,IAAqCwJ,EAAA9J,KAAAkM,SAAA/I,EAAA,IACrC,MAGA,IADA,IAAAhD,EAAAG,EAAA,EAAAF,EAAAD,EAAAiF,EAAA8hB,QAAAqG,KACAsC,EAAA,EAAmBA,EAAA7vB,KAAAogE,MAAA3/D,OAAyBovB,IAAA,CAC5C,IAAAqyC,EAAAliE,KAAAogE,MAAAvwC,GACA,GAAAqyC,EAAAtgE,KAAAxB,GAAA8hE,EAAArgE,GAAA1B,GAAA+hE,EAAAv/D,gBAAAq9D,GAAA,CACA,IAAAp+D,EAAAoB,KAAAC,IAAA9C,EAAA+hE,EAAAtgE,MAAAzB,EAAA0B,EAAAmB,KAAAyd,IAAArgB,EAAA8hE,EAAArgE,IAAA1B,EACAyB,EAAAC,IAAsBu+D,WAAAl2D,KAAAg4D,EAAA1zC,KAAA5sB,EAAAC,KAGtB,GAAAu+D,EAAA,CACA,IAAA+B,EAAA,IAAA/lB,GAAAgkB,EAAAj9B,KAAAs+B,KACA,OAAA33D,EAAA,IAAAs4D,IAAAD,EAAAr4D,IAAAq4D,EAEA,OAAAr4D,GAAkBioF,IAGlB31C,GAAA11C,UAAAq0B,GAAA,SAAA9a,GACA,GAAAjgB,MAAAigB,EAAsB,SACtB,KAAAA,aAAAm8B,KACAp8C,KAAAogE,MAAA3/D,QAAAwf,EAAAmgD,MAAA3/D,QACAT,KAAAkM,SAAAzL,QAAAwf,EAAA/T,SAAAzL,OAAsD,SACtD,QAAA0C,EAAA,EAAiBA,EAAAnD,KAAAogE,MAAA3/D,OAAuB0C,IACnC,IAAAnD,KAAAogE,MAAAj9D,GAAA43B,GAAA9a,EAAAmgD,MAAAj9D,IAAyC,SAC9C,QAAA0sB,EAAA,EAAmBA,EAAA7vB,KAAAkM,SAAAzL,OAA4BovB,GAAA,EAC1C,GAAA7vB,KAAAkM,SAAA2jB,IAAA5P,EAAA/T,SAAA2jB,IACL7vB,KAAAkM,SAAA2jB,EAAA,IAAA5P,EAAA/T,SAAA2jB,EAAA,KACA7vB,KAAAkM,SAAA2jB,EAAA,GAAAkL,GAAA9a,EAAA/T,SAAA2jB,EAAA,IAA8D,SAC9D,UAGAusB,GAAA11C,UAAA2jD,OAAA,SAAAjlD,GACA,OAAAi9D,GAAAriE,KAAAsiE,YAAAl9D,KAGAg3C,GAAA11C,UAAA47D,YAAA,SAAAl9D,GACA,GAAApF,MAAc+xF,GAAQ,OAAA7uD,GACtB,GAAA99B,EAAA8pB,gBAAAlvB,KAAAogE,MAAAxtB,KAAAotB,GAAAG,IAA8D,OAAAngE,KAAAogE,MAE9D,IADA,IAAA/2D,KACAlG,EAAA,EAAiBA,EAAAnD,KAAAogE,MAAA3/D,OAAuB0C,IACxCnD,KAAAogE,MAAAj9D,GAAAR,gBAAAq9D,IACO32D,EAAAa,KAAAlK,KAAAogE,MAAAj9D,IAEP,OAAAkG,GAGA,IAAI0oF,GAAK,IAAA31C,GAITA,GAAA77B,MAAsBwxE,GAEtB31C,GAAAimB,iBAKA,IAAAD,GAAA,SAAAG,GACAviE,KAAAuiE,WAyHA,SAAAT,GAAAU,EAAAliE,GACA,IAAAA,IAAAkiE,EAAA/hE,OAAiC,OAAA+hE,EAEjC,IADA,IAAAn5D,KACAlG,EAAA,EAAiBA,EAAAq/D,EAAA/hE,OAAkB0C,IAAA,CACnC,IAAA4I,EAAAy2D,EAAAr/D,GACAkG,EAAAa,KAAA,IAAAiyC,GAAApwC,EAAAnK,KAAAtB,EAAAyL,EAAAlK,GAAAvB,EAAAyL,EAAApJ,OAEA,OAAA0G,EAoBA,SAAAw4D,GAAAW,EAAAp9D,EAAA9E,GACA,GAAA8E,EAAAsyB,OAAoB,YAEpB,IADA,IAAAt3B,EAAAE,EAAA8E,EAAA8oB,SAAAsN,EAAA,KACAr4B,EAAA,EAAA4I,OAAA,EAAkC5I,EAAAq/D,EAAA/hE,OAAkB0C,KACpD4I,EAAAy2D,EAAAr/D,KAAA4I,EAAAnK,KAAAtB,GAAAyL,EAAAlK,GAAAzB,KACAo7B,WAAAtxB,KAAA6B,GACAy2D,EAAAr/D,GAAA,MAGA,OAAAq4B,EAGA,SAAAumC,GAAAp+C,GAEA,IADA,IAAAta,KACAlG,EAAA,EAAiBA,EAAAwgB,EAAAljB,OAAkB0C,IAC9B,MAAAwgB,EAAAxgB,IAAwBkG,EAAAa,KAAAyZ,EAAAxgB,IAC7B,OAAAkG,EAQA,SAAAi3D,GAAAkC,EAAAp9D,EAAA9E,EAAAqH,GACA,IAAAuE,KAAAu2D,GAAA,EACAr9D,EAAAkD,QAAA,SAAA+4D,EAAAqB,GACA,IAAAlnC,EAAAqmC,GAAAW,EAAAnB,EAAAqB,EAAApiE,GACA,GAAAk7B,EAAA,CACAinC,GAAA,EACA,IAAA3K,EAAAwI,GAAA9kC,EAAA6lC,EAAA/gE,EAAAoiE,EAAA,EAAA/6D,GACAmwD,GAAqBi6B,IACZ7lF,EAAAhC,KAAAw4D,IAAArB,EAAAnzC,SAAA4pC,MAIT,IADA,IAAAzN,EAAAyX,GAAAW,EAAAV,GAAAS,MAAAliE,GAAA6iC,KAAAs+B,IACAt+D,EAAA,EAAiBA,EAAAknD,EAAA5pD,OAAmB0C,IAAOknD,EAAAlnD,GAAAR,KAAAo9D,MAAA36D,EAAAilD,EAAAlnD,MAC3CwE,EAAAi5D,UAA2Bj5D,EAAAi5D,SAAAvW,EAAAlnD,GAAAP,MAC3BynD,EAAAn/C,OAAA/H,IAAA,IAEA,OAAAknD,EAAA5pD,QAAAyL,EAAAzL,OAAA,IAAA27C,GAAAiO,EAAAn+C,GAAkF6lF,GAOlF,SAAAtwB,GAAAxoC,EAAAC,GACA,OAAAD,EAAAr3B,KAAAs3B,EAAAt3B,MAAAq3B,EAAAp3B,GAAAq3B,EAAAr3B,GAQA,SAAAwgE,GAAAG,GAEA,IADA,IAAAG,EAAAH,EACAr/D,EAAA,EAAiBA,EAAAw/D,EAAAliE,OAAA,EAAwB0C,IAAA,CACzC,IAAA4I,EAAA42D,EAAAx/D,GACA,GAAA4I,EAAAnK,MAAAmK,EAAAlK,GAA+B,QAAA+B,EAAAT,EAAA,EAAoBS,EAAA++D,EAAAliE,OAAoBmD,IAAA,CACvE,IAAAua,EAAAwkD,EAAA/+D,GACA,GAAAua,EAAAvc,MAAAmK,EAAAnK,KAAA,CAUAuc,EAAAvc,KAAAmK,EAAAlK,KACA8gE,GAAAH,IAAiCG,EAAAH,EAAAhiE,SAGjCmiE,EAAAx/D,GAAA4I,EAAAyiB,KAAAziB,EAAAnK,KAAAuc,EAAAvc,MACAghE,GAAAD,EAAA/+D,EAAAmI,EAAAyiB,KAAArQ,EAAAvc,KAAAmK,EAAAlK,MAEA,MAhBAsc,EAAAtc,IAAAkK,EAAAlK,KACA8gE,GAAAH,IAAiCG,EAAAH,EAAAhiE,SAGjCmiE,EAAA/+D,GAAAua,EAAAqQ,KAAArQ,EAAAvc,KAAAmK,EAAAlK,IACA+gE,GAAAD,EAAA/+D,EAAA,EAAAua,EAAAqQ,KAAAziB,EAAAlK,GAAAsc,EAAAtc,OAeA,OAAA8gE,EAGA,SAAAC,GAAAj/C,EAAAxgB,EAAA+mD,GACA,KAAA/mD,EAAAwgB,EAAAljB,QAAAghE,GAAAvX,EAAAvmC,EAAAxgB,IAAA,GAAyDA,IACzDwgB,EAAAzY,OAAA/H,EAAA,EAAA+mD,GAKA,SAAA2Y,GAAAlhE,GACA,IAAA65B,KAOA,OANA75B,EAAAk+C,SAAA,uBAAAj/B,GACA,IAAAvX,EAAAuX,EAAAjf,EAAAzB,OACAmJ,MAA4B0oF,IAAQv2D,EAAAtxB,KAAAb,KAEpC1H,EAAAytD,eACK5zB,EAAAtxB,KAAAkyC,GAAA1mC,OAAA/T,EAAAzB,MAAAsC,KAAAb,EAAAytD,cAAAlF,QACLkY,GAAAxgE,KAAA45B,GAtPA4mC,GAAA17D,UAAA4jD,SAAA,SAAAhqD,EAAAwJ,GACA,GAAAA,EAAA4tB,OAAqB,OAAA0kB,GAAA77B,MAErB,IADA,IAAAib,KACAr4B,EAAA,EAAiBA,EAAAnD,KAAAuiE,QAAA9hE,OAAyB0C,IAAA,CAC1C,IAAAkG,EAAArJ,KAAAuiE,QAAAp/D,GAAAmnD,SAAAhqD,EAAAwJ,GACAT,GAAkB0oF,KAClB1oF,aAAA+4D,GAA4C5mC,IAAA9rB,OAAArG,EAAAk5D,SAClC/mC,EAAAtxB,KAAAb,IAEV,OAAA+4D,GAAAxgE,KAAA45B,IAGA4mC,GAAA17D,UAAAq0B,GAAA,SAAA9a,GACA,KAAAA,aAAAmiD,KACAniD,EAAAsiD,QAAA9hE,QAAAT,KAAAuiE,QAAA9hE,OAAoD,SACpD,QAAA0C,EAAA,EAAiBA,EAAAnD,KAAAuiE,QAAA9hE,OAAyB0C,IACrC,IAAAnD,KAAAuiE,QAAAp/D,GAAA43B,GAAA9a,EAAAsiD,QAAAp/D,IAA6C,SAClD,UAGAi/D,GAAA17D,UAAA2jD,OAAA,SAAAjlD,GAEA,IADA,IAAAiE,EAAAy5D,GAAA,EACA3/D,EAAA,EAAiBA,EAAAnD,KAAAuiE,QAAA9hE,OAAyB0C,IAAA,CAC1C,IAAAknD,EAAArqD,KAAAuiE,QAAAp/D,GAAAm/D,YAAAl9D,GACA,GAAAilD,EAAA5pD,OACA,GAAA4I,EAEK,CACLy5D,IACAz5D,IAAA7I,QACAsiE,GAAA,GAEA,QAAAl/D,EAAA,EAAqBA,EAAAymD,EAAA5pD,OAAmBmD,IAAOyF,EAAAa,KAAAmgD,EAAAzmD,SAN/CyF,EAAAghD,EASA,OAAAhhD,EAAAg5D,GAAAS,EAAAz5D,IAAA85B,KAAAs+B,KAAAv+B,IAMAk/B,GAAAxgE,KAAA,SAAA2gE,GACA,OAAAA,EAAA9hE,QACA,cAAmBsxF,GACnB,cAAAxvB,EAAA,GACA,mBAAAH,GAAAG,KA+MA,IAAAQ,GAAA,SAAAziC,EAAA7+B,GACAzB,KAAAgjE,OAAAvhE,EAGAzB,KAAAE,MAAAuB,EAAAvB,MAEAF,KAAAqD,SAAArD,KAAAqD,SAAAga,KAAArd,MAEAA,KAAAijE,MAAA,KACAjjE,KAAA+6D,SAAA,EAEA/6D,KAAAgsD,YAAA,KAKAhsD,KAAA+oB,IAAAuX,KAAA4iC,OAAAxnD,SAAAC,cAAA,OACA2kB,IACAA,EAAA0Q,YAA4B1Q,EAAA0Q,YAAAhxC,KAAA+oB,KAC5BuX,EAAAn/B,MAA2Bm/B,EAAAtgC,KAAA+oB,KAC3BuX,EAAA4iC,QAA2BljE,KAAAmjE,SAAA,IAK3BnjE,KAAA+uD,SAAAqU,GAAApjE,MACAA,KAAA89D,WAAA,KACA99D,KAAAovD,cAAA,KACAiU,GAAArjE,MACAA,KAAAkpD,UAAAoa,GAAAtjE,MACAA,KAAA4iD,QAAAyK,EAAArtD,KAAAE,MAAAsC,IAAA+gE,GAAAvjE,MAAA6iE,GAAA7iE,WAAA+oB,IAAA/oB,MAEAA,KAAAywD,qBAAA,KAKAzwD,KAAAg/D,SAAA,KAp3CA,SAAAr9D,GACAA,EAAAswD,UAAA,EACAtwD,EAAA66D,UAAA,KACA76D,EAAAqxD,YAAA,KACArxD,EAAA2xD,gBAAA,EACA3xD,EAAAy6D,WAAoBz1C,KAAA,EAAAlX,EAAA,EAAAm0C,EAAA,EAAAjhD,KAAA,IACpBhB,EAAA6wD,oBAAA,KACA7wD,EAAA4wD,kBAAA,EAEA5wD,EAAAuyD,aAAA,EACAvyD,EAAAi6D,4BAAA,KAEAj6D,EAAAW,WAAA,EACAX,EAAA87D,iBAAA,KACA97D,EAAAgrD,oBACAhrD,EAAAw7D,oBAAA,IAEAx7D,EAAAutD,YAAA,IAAA+I,GAAAt2D,EAAA,SAAAC,EAAAC,EAAAwwD,EAAA1sC,GAAiF,OAAAysC,GAAAzwD,EAAAC,EAAAC,EAAAwwD,EAAA1sC,KACjFhkB,EAAAutD,YAAA/uD,QAEAwB,EAAAoyD,eAAA,EAEApyD,EAAA24D,cAAAx1D,OAAA4Q,OAAA,MACA,IAAAsZ,EAAA,SAAA7kB,GACA,IAAApK,EAAAk6D,GAAA9vD,GACAxI,EAAAonB,IAAA9L,iBAAA9S,EAAAxI,EAAA24D,cAAAnwD,GAAA,SAAAA,IA2CA,SAAAxI,EAAAwI,GACA,IAAAA,EAAAq5D,QAAuB,SACvB,GAAAr5D,EAAAqwD,iBAA+B,SAC/B,QAAAp1D,EAAA+E,EAAAggB,OAA+B/kB,GAAAzD,EAAAonB,IAAkB3jB,IAAAiW,WAC5C,IAAAjW,GAAA,IAAAA,EAAAf,UACLe,EAAAm5C,YAAAn5C,EAAAm5C,WAAA6H,UAAAj8C,GACO,SACP,SAjDAs5D,CAAA9hE,EAAAwI,IAAAowD,GAAA54D,EAAAwI,KACAxI,EAAAotD,UAAA5kD,EAAAxH,QAAAu3D,IACSn6D,EAAA4B,EAAAwI,MAIT,QAAAA,KAAA8vD,GAAAjrC,EAAA7kB,GAIMqnF,EAAMl0C,QAAU37C,EAAAonB,IAAA9L,iBAAA,mBAAiD,cAEvEm9C,GAAAz4D,GAg1CA+hE,CAAA1jE,MAEAA,KAAA2jE,eACA3jE,KAAA4jE,qBAGA7+B,IAA4BtjC,OAAS0f,cAAA,GAAqB9U,MAAQ8U,cAAA,IAmTlE,SAAAoiD,GAAA5hE,GACA,IAAA6C,EAAAM,OAAA4Q,OAAA,MAcA,OAbAlR,EAAAmpD,MAAA,cACAnpD,EAAAq/D,gBAAAryD,OAAA7P,EAAAotD,UAEAptD,EAAAk+C,SAAA,sBAAA72C,GAEA,GADA,mBAAAA,IAAqCA,IAAArH,EAAAzB,QACrC8I,EAAgB,QAAA4B,KAAA5B,EAChB,SAAA4B,EACSpG,EAAAmpD,OAAA,IAAA3kD,EAAA4B,GACTpG,EAAAoG,IAAA,mBAAAA,GAAA,YAAAA,IACSpG,EAAAoG,GAAA4G,OAAAxI,EAAA4B,QAITuxC,GAAA/2C,KAAA,EAAAzD,EAAAzB,MAAAsC,IAAA0kB,QAAAqG,KAAA/oB,IAGA,SAAA6+D,GAAA1hE,GACA,GAAAA,EAAAm8D,WAAA,CACA,IAAA/0C,EAAArN,SAAAC,cAAA,OACAoN,EAAAurB,aAAA,2BACA3yC,EAAAytD,eAA0BrmC,MAAAmhC,KAAA/N,GAAAqM,OAAA7mD,EAAAzB,MAAAiC,UAAAusC,KAAA3lB,GAAmE2sB,KAAA,EAAAzxC,MAAAtC,EAAAm8D,mBAE7Fn8D,EAAAytD,cAAA,KAIA,SAAAgU,GAAAzhE,GACA,OAAAA,EAAAk+C,SAAA,oBAAA72C,GAAsD,WAAAA,EAAArH,EAAAzB,SAQtD,SAAAojE,GAAA3hE,GACA,IAAA0H,KAKA,OAJA1H,EAAAk+C,SAAA,qBAAA33C,GACA,QAAAK,KAAAL,EAA2BpD,OAAA4B,UAAA8B,eAAA5B,KAAAyC,EAAAd,KACpBc,EAAAd,GAAAL,EAAAK,MAEPc,EArVA07B,GAAAtjC,MAAAif,IAAA,WACA,GAAA1gB,KAAAgjE,OAAA9iE,OAAAF,KAAAE,MAAA,CACA,IAAAkB,EAAApB,KAAAgjE,OAEA,QAAA31D,KADArN,KAAAgjE,UACA5hE,EAA4BpB,KAAAgjE,OAAA31D,GAAAjM,EAAAiM,GAC5BrN,KAAAgjE,OAAA9iE,MAAAF,KAAAE,MAEA,OAAAF,KAAAgjE,QAMAD,GAAAr8D,UAAAs5B,OAAA,SAAAv+B,GACAA,EAAAM,iBAAA/B,KAAAgjE,OAAAjhE,iBAA6Dq4D,GAAAp6D,MAC7DA,KAAAgjE,OAAAvhE,EACAzB,KAAA8jE,iBAAAriE,EAAAvB,OAAA,IAOA6iE,GAAAr8D,UAAAq9D,SAAA,SAAAtiE,GACA,IAAAs4C,KACA,QAAA1sC,KAAArN,KAAAgjE,OAAiCjpB,EAAA1sC,GAAArN,KAAAgjE,OAAA31D,GAEjC,QAAAs/B,KADAoN,EAAA75C,MAAAF,KAAAE,MACAuB,EAA6Bs4C,EAAApN,GAAAlrC,EAAAkrC,GAC7B3sC,KAAAggC,OAAA+Z,IAMAgpB,GAAAr8D,UAAA29C,YAAA,SAAAnkD,GACAF,KAAA8jE,iBAAA5jE,EAAAF,KAAAE,MAAAsD,SAAAtD,EAAAsD,UAGAu/D,GAAAr8D,UAAAo9D,iBAAA,SAAA5jE,EAAA8jE,GACA,IAAAhiD,EAAAhiB,KAEAoB,EAAApB,KAAAE,MAAA+jE,GAAA,EAAAC,GAAA,EAQA,GALAhkE,EAAAqvB,aAAAvvB,KAAAsC,YACAo7D,GAAA19D,MACAkkE,GAAA,GAEAlkE,KAAAE,QACA8jE,EAAA,CACA,IAAA9a,EAAAoa,GAAAtjE,OAsSA,SAAAi5B,EAAAC,GACA,IAAAirC,EAAA,EAAAC,EAAA,EACA,QAAA77D,KAAA0wB,EAAA,CACA,GAAAA,EAAA1wB,IAAA2wB,EAAA3wB,GAA6B,SAC7B47D,IAEA,QAAAphC,KAAA7J,EAAoBkrC,IACpB,OAAAD,GAAAC,GA5SAC,CAAAnb,EAAAlpD,KAAAkpD,aACAlpD,KAAAkpD,YACA+a,GAAA,GAEA7J,GAAAp6D,MAGAA,KAAA+uD,SAAAqU,GAAApjE,MACAqjE,GAAArjE,MACA,IAAAspD,EAAAuZ,GAAA7iE,MAAAqpD,EAAAka,GAAAvjE,MAEAskE,EAAAN,EAAA,QACA9jE,EAAAqkE,kBAAAnjE,EAAAmjE,kBAAA,0BACAC,EAAAP,IAAAjkE,KAAA4iD,QAAAqD,YAAA/lD,EAAAsC,IAAA6mD,EAAAC,IACAkb,GAAAtkE,EAAAiC,UAAA44B,GAAA35B,EAAAe,aAAyD+hE,GAAA,GACzD,IAAAO,EAAA,YAAAH,GAAAJ,GAAA,MAAAlkE,KAAA+oB,IAAAW,MAAAg7C,gBAn5IA,SAAA/iE,GAGA,IAFA,IACAgjE,EAAAC,EADAplB,EAAA79C,EAAAonB,IAAA02B,wBAAAc,EAAAv9C,KAAAC,IAAA,EAAAu8C,EAAApzC,KAEAqD,GAAA+vC,EAAAl+B,KAAAk+B,EAAAj+B,OAAA,EAAAqiC,EAAArD,EAAA,EACAqD,EAAA5gD,KAAAyd,IAAAokD,YAAArlB,EAAAJ,QAA8CwE,GAAA,GAC9C,IAAA76B,EAAApnB,EAAA0K,KAAAg2C,iBAAA5yC,EAAAm0C,GACA,GAAA76B,GAAApnB,EAAAonB,KAAApnB,EAAAonB,IAAAjb,SAAAib,GAAA,CACA,IAAA+7C,EAAA/7C,EAAA02B,wBACA,GAAAqlB,EAAA14D,KAAAm0C,EAAA,IACAokB,EAAA57C,EACA67C,EAAAE,EAAA14D,IACA,QAGA,OAAUu4D,SAAAC,SAAAz4D,MAAAw0C,EAAAh/C,EAAAonB,MAq4IVg8C,CAAA/kE,MAEA,GAAAkkE,EAAA,CACAlkE,KAAAkvD,YAAAxG,OAMA,IAAAsc,EAAAR,IAAuCgtB,EAAM70C,IAAO60C,EAAMx0C,UAAAh9C,KAAAsC,YAC1DlB,EAAAe,UAAAoe,QAAArgB,EAAAiC,UAAAoe,OA8PA,SAAA0kD,EAAAC,GACA,IAAAzmD,EAAAzb,KAAAyd,IAAAwkD,EAAAn4C,QAAA8N,YAAAqqC,EAAAv2B,MAAAw2B,EAAAp4C,QAAA8N,YAAAsqC,EAAAx2B,OACA,OAAAu2B,EAAAn4C,QAAA3sB,MAAAse,IAAAymD,EAAAp4C,QAAA3sB,MAAAse,GAhQA0mD,CAAA/jE,EAAAe,UAAAjC,EAAAiC,WACA,GAAAqiE,EAAA,CAKA,IAAAY,EAAyBosB,EAAMx0C,OAAAh9C,KAAAgsD,YAAAhsD,KAAAqM,KAAAy4C,eAAAI,UAAA,MAC/B+e,GAAAjkE,KAAA4iD,QAAA5iB,OAAA9/B,EAAAsC,IAAA6mD,EAAAC,EAAAtpD,QACAA,KAAA4iD,QAAAiK,oBACA7sD,KAAA4iD,QAAAyD,UACArmD,KAAA4iD,QAAAyK,EAAAntD,EAAAsC,IAAA6mD,EAAAC,EAAAtpD,KAAA+oB,IAAA/oB,OAEAolE,IAAAplE,KAAAgsD,cAA8CgZ,GAAA,GAM9CA,KACAhlE,KAAAw8D,WAAAx8D,KAAAkvD,YAAAyJ,iBAAA59B,GAAA/6B,KAAAqM,KAAAy4C,iBAlvEA,SAAAnjD,GACA,IAAA4lD,EAAA5lD,EAAAihD,QAAAU,WAAA3hD,EAAAzB,MAAAiC,UAAAm2C,QACAmG,EAAA98C,EAAA0K,KAAAy4C,eACA,OAAA/G,EAAAwJ,EAAAniD,KAAAmiD,EAAAjnD,OAAAm+C,EAAAiJ,WAAAjJ,EAAAkJ,cA+uEA0d,CAAArlE,OACA6uD,GAAA7uD,KAAAglE,IAEAlW,GAAA9uD,KAAAE,EAAAiC,WACAnC,KAAAkvD,YAAAc,mBAEAhwD,KAAAkvD,YAAA/uD,QAKA,GAFAH,KAAA4jE,kBAAAxiE,GAEA,SAAAkjE,EACAtkE,KAAA+oB,IAAAy3B,UAAA,OACG,mBAAA8jB,EAAA,CACH,IAAA3kB,EAAA3/C,KAAAqM,KAAAy4C,eAAAI,UACAllD,KAAA6/C,SAAA,mCAAAj/B,GAA+D,OAAAA,EAAAoB,OAE/D9hB,EAAAiC,qBAAwCs+B,EAAA,cACjCif,EAAA1/C,UAAA4iD,QAAA2C,YAAArlD,EAAAiC,UAAAP,MAAA69C,wBAAAE,GAEAD,EAAA1/C,UAAAqjD,YAAAnjD,EAAAiC,UAAAusC,MAAAiR,SACJ8kB,GAz6IH,SAAA1jE,GACA,IAAA4jE,EAAA5jE,EAAA4jE,OACAC,EAAA7jE,EAAA6jE,OACAz4D,EAAApL,EAAAoL,MAEAm5D,EAAAX,IAAAllB,wBAAArzC,IAAA,EACAw0C,EAAAz0C,EAAA,GAAAm5D,EAAA,EAAAA,EAAAV,GAo6IAW,CAAAd,IAIA1B,GAAAr8D,UAAA8+D,mBAAA,WAEA,IADA,IAAA7jE,EACAA,EAAA3B,KAAA2jE,YAAAx4D,OAAyCxJ,EAAA0kD,SAAoB1kD,EAAA0kD,WAG7D0c,GAAAr8D,UAAAk9D,kBAAA,SAAA6B,GACA,GAAAA,KAAAjiE,SAAAxD,KAAAE,MAAAsD,QAOA,QAAAqsB,EAAA,EAAqBA,EAAA7vB,KAAA2jE,YAAAljE,OAA+BovB,IAAA,CACpD,IAAA61C,EAAA1lE,KAAA2jE,YAAA9zC,GACA61C,EAAA1lC,QAA8B0lC,EAAA1lC,OAAAhgC,KAAAylE,OAT9B,CACAzlE,KAAAwlE,qBACA,QAAAriE,EAAA,EAAmBA,EAAAnD,KAAAE,MAAAsD,QAAA/C,OAA+B0C,IAAA,CAClD,IAAAlC,EAAAjB,KAAAE,MAAAsD,QAAAL,GACAlC,EAAA2B,KAAAjB,MAA6B3B,KAAA2jE,YAAAz5D,KAAAjJ,EAAA2B,KAAAjB,KAAA3B,UAiB7B+iE,GAAAr8D,UAAAm5C,SAAA,SAAAgb,EAAAj6C,GACA,IAAA5X,EAAAT,EAAAvI,KAAAgjE,QAAAhjE,KAAAgjE,OAAAnI,GACA,SAAAtyD,IAAAS,EAAA4X,IAAArY,MAAqD,OAAAS,EACrD,IAAAxF,EAAAxD,KAAAE,MAAAsD,QACA,GAAAA,EAAgB,QAAAL,EAAA,EAAgBA,EAAAK,EAAA/C,OAAoB0C,IAAA,CACpD,IAAA8nC,EAAAznC,EAAAL,GAAA1B,MAAAo5D,GACA,SAAA5vB,IAAAjiC,EAAA4X,IAAAqqB,MAA6D,OAAAjiC,IAM7D+5D,GAAAr8D,UAAAsoD,SAAA,WACA,OAAAhvD,KAAAqM,KAAA+3C,eAAApkD,KAAA+oB,KAKAg6C,GAAAr8D,UAAA49C,MAAA,WACAtkD,KAAAkvD,YAAAxG,OACA1oD,KAAA+uD,UAt8IA,SAAAhmC,GACA,GAAAA,EAAA48C,UAAsB,OAAA58C,EAAA48C,YACtB,GAAA7kB,EAA+B,OAAA/3B,EAAAu7B,MAAAxD,GAE/B,IAAAz/C,EAAAs/C,EAAA53B,GACAA,EAAAu7B,MAAA,MAAAxD,GACA8kB,oBAEA,OADA9kB,GAAgC8kB,eAAA,IAChC,SAEGh9D,GACHk4C,IACAA,GAAA,EACAF,EAAAv/C,EAAA,IAy7IsBwkE,CAAA7lE,KAAA+oB,KACtB8lC,GAAA7uD,MACAA,KAAAkvD,YAAA/uD,SAQA4kC,GAAA14B,KAAAqU,IAAA,WACA,IAAAilB,EAAA3lC,KAAAijE,MACA,SAAAt9B,EAAuB,QAAA8C,EAAAzoC,KAAA+oB,IAAA1N,WAAuCotB,EAAQA,IAAAptB,WACtE,MAAAotB,EAAApkC,UAAA,IAAAokC,EAAApkC,UAAAokC,EAAAiV,KAEA,OADAjV,EAAAqc,eAAiChgD,OAAAghE,eAAAr9B,GAAAqc,aAAA,WAA2D,OAAAppC,SAAAopC,iBAC5F9kD,KAAAijE,MAAAx6B,EAGA,OAAA9C,GAAAjqB,UAWAqnD,GAAAr8D,UAAAm7C,YAAA,SAAAb,GACA,OAAAa,EAAA7hD,KAAAghD,IAOA+hB,GAAAr8D,UAAA28C,YAAA,SAAAjhD,GACA,OAAAihD,EAAArjD,KAAAoC,IAQA2gE,GAAAr8D,UAAAq/D,SAAA,SAAA3jE,GACA,OAAApC,KAAA4iD,QAAAU,WAAAlhD,IAYA2gE,GAAAr8D,UAAAogD,QAAA,SAAA1kD,GACA,IAAAq4C,EAAAz6C,KAAA4iD,QAAAmE,OAAA3kD,GACA,OAAAq4C,IAAAqM,QAAA,MAYAic,GAAAr8D,UAAAs/D,SAAA,SAAA5gE,EAAA9E,EAAAg5B,QACA,IAAAA,OAAA,GAEA,IAAAl3B,EAAApC,KAAA4iD,QAAAI,WAAA59C,EAAA9E,EAAAg5B,GACA,SAAAl3B,EAAoB,UAAAiwB,WAAA,sCACpB,OAAAjwB,GAUA2gE,GAAAr8D,UAAA6pB,eAAA,SAAA6I,EAAAl5B,GACA,OAAAqwB,EAAAvwB,KAAAE,GAAAF,KAAAE,MAAAk5B,IAMA2pC,GAAAr8D,UAAA2/C,QAAA,WACArmD,KAAA4iD,WA/lDA,SAAAjhD,GAEA,QAAAgB,KADAhB,EAAAutD,YAAAxG,OACA/mD,EAAA24D,cACK34D,EAAAonB,IAAA8mC,oBAAAltD,EAAAhB,EAAA24D,cAAA33D,IACLs2D,aAAAt3D,EAAA87D,kBACAxE,aAAAt3D,EAAAi6D,6BA2lDAqK,CAAAjmE,MACAA,KAAAwlE,qBACAxlE,KAAAmjE,SACAnjE,KAAA4iD,QAAA5iB,OAAAhgC,KAAAE,MAAAsC,OAAAqgE,GAAA7iE,YACAA,KAAA+oB,IAAAlN,YAAA,IACG7b,KAAA+oB,IAAA1N,YACHrb,KAAA+oB,IAAA1N,WAAAqxC,YAAA1sD,KAAA+oB,KAEA/oB,KAAA4iD,QAAAyD,UACArmD,KAAA4iD,QAAA,OAIAmgB,GAAAr8D,UAAAw/D,cAAA,SAAA/7D,GACA,OA9kDA,SAAAxI,EAAAwI,GACAowD,GAAA54D,EAAAwI,KAAA8vD,GAAA9vD,EAAAxH,QACAhB,EAAAotD,UAAA5kD,EAAAxH,QAAAu3D,IACKD,GAAA9vD,EAAAxH,MAAAhB,EAAAwI,GA2kDL+7D,CAAAlmE,KAAAmK,IAWA44D,GAAAr8D,UAAArD,SAAA,SAAA1C,GACA,IAAAwlE,EAAAnmE,KAAAgjE,OAAAmD,oBACAA,EAA4BA,EAAAv/D,KAAA5G,KAAAW,GACpBX,KAAAqkD,YAAArkD,KAAAE,MAAAiB,MAAAR,KAGRmE,OAAAuc,iBAAA0hD,GAAAr8D,UAAAq+B,ICnwJA,IAAAitD,GAAA,SAAAC,EAAAtqF,GACA,IAAAqa,EAAAhiB,KAEAA,KAAAiyF,aACAjyF,KAAAikD,MAAAt8C,EAAAs8C,OAAA,EACAjkD,KAAAkyF,MAAAvqF,EAAAuqF,OAAA,QACAlyF,KAAA2tD,MAAAhmD,EAAAgmD,MACA3tD,KAAAmyF,UAAA,KACAnyF,KAAAkb,QAAA,KACAlb,KAAAoyF,QAAA,KAEApyF,KAAAi6D,UAAA,yCAAAvvD,IAAA,SAAA2C,GACA,IAAAtN,EAAA,SAAAkH,GAAgC,OAAA+a,EAAA3U,GAAApG,IAEhC,OADAgrF,EAAAlpE,IAAA9L,iBAAA5P,EAAAtN,IACYsN,OAAAtN,cAIZiyF,GAAAtrF,UAAA2/C,QAAA,WACA,IAAArkC,EAAAhiB,KAEAA,KAAAi6D,SAAA3xD,QAAA,SAAAvH,GACA,IAAAsM,EAAAtM,EAAAsM,KACAtN,EAAAgB,EAAAhB,QAEA,OAAAiiB,EAAAiwE,WAAAlpE,IAAA8mC,oBAAAxiD,EAAAtN,MAIAiyF,GAAAtrF,UAAAs5B,OAAA,SAAAiyD,EAAAxsB,GACA,MAAAzlE,KAAAmyF,WAAA1sB,EAAAjjE,KAAAyvF,EAAA/xF,MAAAsC,KAAwExC,KAAAqyF,iBAGxEL,GAAAtrF,UAAA4rF,UAAA,SAAAlwF,GACAA,GAAApC,KAAAmyF,YACAnyF,KAAAmyF,UAAA/vF,EACA,MAAAA,GACApC,KAAAkb,QAAAG,WAAAqxC,YAAA1sD,KAAAkb,SACAlb,KAAAkb,QAAA,MAEAlb,KAAAqyF,kBAIAL,GAAAtrF,UAAA2rF,cAAA,WACA,IAAA7yC,EAAAnzB,EAAArsB,KAAAiyF,WAAA/xF,MAAAsC,IAAAC,QAAAzC,KAAAmyF,WACA,IAAA9lE,EAAA3pB,OAAAwsB,cAAA,CACA,IAAAlqB,EAAAqnB,EAAApnB,WAAAwN,EAAA4Z,EAAA2B,UACA,GAAAhpB,GAAAyN,EAAA,CACA,IAAA8/E,EAAAvyF,KAAAiyF,WAAAnrC,QAAA9mD,KAAAmyF,WAAAntF,IAAAkpB,SAAA,IAAAuxB,wBACArzC,EAAApH,EAAAutF,EAAAnzC,OAAAmzC,EAAAnmF,IACApH,GAAAyN,IACSrG,KAAApM,KAAAiyF,WAAAnrC,QAAA9mD,KAAAmyF,WAAA1yC,wBAAArzC,KAAA,GACTozC,GAAcl+B,KAAAixE,EAAAjxE,KAAAC,MAAAgxE,EAAAhxE,MAAAnV,MAAApM,KAAAikD,MAAA,EAAA7E,OAAAhzC,EAAApM,KAAAikD,MAAA,IAGd,IAAAzE,EAAA,CACA,IAAAwB,EAAAhhD,KAAAiyF,WAAA5uC,YAAArjD,KAAAmyF,WACA3yC,GAAYl+B,KAAA0/B,EAAA1/B,KAAAthB,KAAAikD,MAAA,EAAA1iC,MAAAy/B,EAAA1/B,KAAAthB,KAAAikD,MAAA,EAAA73C,IAAA40C,EAAA50C,IAAAgzC,OAAA4B,EAAA5B,QAGZ,IAAA18C,EAAA1C,KAAAiyF,WAAAlpE,IAAAypE,aACAxyF,KAAAkb,UACAlb,KAAAkb,QAAAxY,EAAAsuC,YAAAt1B,SAAAC,cAAA,QACA3b,KAAA2tD,QAAqB3tD,KAAAkb,QAAArP,UAAA7L,KAAA2tD,OACrB3tD,KAAAkb,QAAAwO,MAAAwiC,QAAA,4EAAwFlsD,KAAAkyF,OAExF,IAAAO,GAAA/vF,MAAAgZ,SAAA2C,MAAA,UAAA8tC,iBAAAzpD,GAAAqO,UACSuQ,MAAAoxE,YAAAtmF,KAAAumF,aAAsCjwF,EAAA+8C,wBAC/Cz/C,KAAAkb,QAAAwO,MAAApI,KAAAk+B,EAAAl+B,KAAAmxE,EAAAnxE,KAAA,KACAthB,KAAAkb,QAAAwO,MAAAtd,IAAAozC,EAAApzC,IAAAqmF,EAAArmF,IAAA,KACApM,KAAAkb,QAAAwO,MAAAu6B,MAAAzE,EAAAj+B,MAAAi+B,EAAAl+B,KAAA,KACAthB,KAAAkb,QAAAwO,MAAAi6B,OAAAnE,EAAAJ,OAAAI,EAAApzC,IAAA,MAGA4lF,GAAAtrF,UAAAksF,gBAAA,SAAAR,GACA,IAAApwE,EAAAhiB,KAEAi5D,aAAAj5D,KAAAoyF,SACApyF,KAAAoyF,QAAAnwF,WAAA,WAAyC,OAAA+f,EAAAswE,UAAA,OAAiCF,IAG1EJ,GAAAtrF,UAAAw4D,SAAA,SAAA/0D,GACA,GAAAnK,KAAAiyF,WAAAljC,SAAA,CACA,IAAA3sD,EAAApC,KAAAiyF,WAAApwC,aAAyCvgC,KAAAnX,EAAAuwD,QAAAtuD,IAAAjC,EAAAwwD,UACzC,GAAAv4D,EAAA,CACA,IAAA+nB,EAAA/nB,MACApC,KAAAiyF,WAAAjzB,UAAAh/D,KAAAiyF,WAAAjzB,SAAAx+D,OAEA,OADA2pB,EAAerlB,OAAAye,EAAA,EAAAze,CAAS9E,KAAAiyF,WAAA/xF,MAAAsC,IAAA2nB,EAAAnqB,KAAAiyF,WAAAjzB,SAAAx+D,UACG2pB,EAAA/nB,OAE3BpC,KAAAsyF,UAAAnoE,GACAnqB,KAAA4yF,gBAAA,QAIAZ,GAAAtrF,UAAAu4D,QAAA,WACAj/D,KAAA4yF,gBAAA,KAGAZ,GAAAtrF,UAAA04D,KAAA,WACAp/D,KAAA4yF,gBAAA,KAGAZ,GAAAtrF,UAAAmsF,UAAA,SAAA1oF,GACAA,EAAAggB,QAAAnqB,KAAAiyF,WAAAlpE,KAAA/oB,KAAAiyF,WAAAlpE,IAAAjb,SAAA3D,EAAA2oF,gBACK9yF,KAAAsyF,UAAA,qCC7HDS,GAAS,SAAA96C,GACb,SAAA+6C,EAAA3mE,GACA4rB,EAAArxC,KAAA5G,KAAAqsB,KA6EA,OA1EA4rB,IAAA+6C,EAAArpF,UAAAsuC,GACA+6C,EAAAtsF,UAAA5B,OAAA4Q,OAAAuiC,KAAAvxC,WACAssF,EAAAtsF,UAAAiG,YAAAqmF,EAEAA,EAAAtsF,UAAAgE,IAAA,SAAAlI,EAAAkgB,GACA,IAAA2J,EAAA7pB,EAAAC,QAAAigB,EAAAhY,IAAA1K,KAAA0uC,OACA,OAAAskD,EAAAjzB,MAAA1zC,GAAA,IAAA2mE,EAAA3mE,GAAA4rB,EAAA9qB,KAAAd,IAGA2mE,EAAAtsF,UAAAwgB,QAAA,WAAqD,OAAQpH,EAAA,MAAKS,OAElEyyE,EAAAtsF,UAAAq0B,GAAA,SAAA9a,GACA,OAAAA,aAAA+yE,GAAA/yE,EAAAyuB,MAAA1uC,KAAA0uC,MAGAskD,EAAAtsF,UAAAwvB,OAAA,WACA,OAAYvzB,KAAA,YAAAP,IAAApC,KAAA0uC,OAGZskD,EAAA78D,SAAA,SAAA3zB,EAAA4zB,GACA,oBAAAA,EAAAh0B,IAAsC,UAAAiwB,WAAA,wCACtC,WAAA2gE,EAAAxwF,EAAAC,QAAA2zB,EAAAh0B,OAGA4wF,EAAAtsF,UAAAkf,YAAA,WAA6D,WAAAqtE,GAAAjzF,KAAAs4C,SAE7D06C,EAAAjzB,MAAA,SAAA1zC,GACA,IAAA3pB,EAAA2pB,EAAA3pB,OACA,GAAAA,EAAAypB,cAgEA,SAAAE,GACA,QAAAhtB,EAAAgtB,EAAA5N,MAA0Bpf,GAAA,EAAQA,IAAA,CAClC,IAAAiG,EAAA+mB,EAAA/mB,MAAAjG,GAEA,MAAAiG,EAEA,QAAAN,EAAAqnB,EAAAjnB,KAAA/F,GAAAyK,MAAAxE,EAAA,IAAqDN,IAAAknB,UAAA,CACrD,MAAAlnB,EAAAmkB,aAAAnkB,EAAAkqB,eAAAlqB,EAAA0rB,QAAA1rB,EAAArC,KAAAC,KAAA0pB,UAA6G,SAC7G,GAAAtnB,EAAAkqB,cAAiC,UAIjC,SA5EAgkE,CAAA7mE,KA+EA,SAAAA,GACA,QAAAhtB,EAAAgtB,EAAA5N,MAA0Bpf,GAAA,EAAQA,IAAA,CAClC,IAAAiG,EAAA+mB,EAAA9mB,WAAAlG,GAAAqD,EAAA2pB,EAAAjnB,KAAA/F,GACA,GAAAiG,GAAA5C,EAAAymB,WACA,QAAA1W,EAAA/P,EAAAoH,MAAAxE,IAA0CmN,IAAA1I,WAAA,CAC1C,MAAA0I,EAAA0W,aAAA1W,EAAAyc,eAAAzc,EAAAie,QAAAje,EAAA9P,KAAAC,KAAA0pB,UAAyG,SACzG,GAAA7Z,EAAAyc,cAAgC,UAGhC,SAxFAikE,CAAA9mE,GAA0E,SAC1E,IAAA+mE,EAAA1wF,EAAAC,KAAAC,KAAAywF,eACA,SAAAD,EAA2B,OAAAA,EAC3B,IAAA5lE,EAAA9qB,EAAAuqB,eAAAZ,EAAA/mB,SAAA2hC,YACA,OAAAzZ,KAAArB,aAGA6mE,EAAArkE,SAAA,SAAAtC,EAAA+M,EAAAk6D,GACA7qD,EAAA,OAAmB,CACnB,IAAA6qD,GAAAN,EAAAjzB,MAAA1zC,GAA+C,OAAAA,EAG/C,IAFA,IAAAjqB,EAAAiqB,EAAAjqB,IAAA+b,EAAA,KAEA9e,EAAAgtB,EAAA5N,OAA+Bpf,IAAA,CAC/B,IAAAqD,EAAA2pB,EAAAjnB,KAAA/F,GACA,GAAA+5B,EAAA,EAAA/M,EAAA9mB,WAAAlG,GAAAqD,EAAAymB,WAAAkD,EAAA/mB,MAAAjG,GAAA,GACA8e,EAAAzb,EAAAoH,MAAAsvB,EAAA,EAAA/M,EAAA9mB,WAAAlG,GAAAgtB,EAAA/mB,MAAAjG,GAAA,GACA,MACS,MAAAA,EACT,YAEA+C,GAAAg3B,EACA,IAAAm6D,EAAAlnE,EAAA7pB,IAAAC,QAAAL,GACA,GAAA4wF,EAAAjzB,MAAAwzB,GAAoC,OAAAA,EAIpC,OAAa,CACb,IAAAp7D,EAAAiB,EAAA,EAAAjb,EAAApU,WAAAoU,EAAA+N,UACA,IAAAiM,EAAA,CACA,GAAAha,EAAAuS,SAAAvS,EAAA6iB,SAA8CP,EAAA,cAAajQ,aAAArS,GAAA,CAC3DkO,IAAA7pB,IAAAC,QAAAL,EAAA+b,EAAA+P,SAAAkL,GACAk6D,GAAA,EACA,SAAA7qD,EAEA,MAEAtqB,EAAAga,EACA/1B,GAAAg3B,EACA,IAAAo6D,EAAAnnE,EAAA7pB,IAAAC,QAAAL,GACA,GAAA4wF,EAAAjzB,MAAAyzB,GAAsC,OAAAA,EAGtC,cAIAR,EA/Ea,CAgFXvyD,EAAA,WAEFsyD,GAASrsF,UAAAsyC,SAAA,EAETvY,EAAA,UAASnK,OAAA,YAAqBy8D,IAE9B,IAAAE,GAAA,SAAA7wF,GACApC,KAAAoC,OAEA6wF,GAAAvsF,UAAAgE,IAAA,SAAAgY,GACA,WAAAuwE,GAAAvwE,EAAAhY,IAAA1K,KAAAoC,OAEA6wF,GAAAvsF,UAAAjE,QAAA,SAAAD,GACA,IAAA6pB,EAAA7pB,EAAAC,QAAAzC,KAAAoC,KACA,OAAS2wF,GAAShzB,MAAA1zC,GAAA,IAAmB0mE,GAAS1mE,GAASoU,EAAA,UAAStT,KAAAd,IAsChE,IAAAonE,GAAA,WACA,WAAahzD,EAAA,QACbh/B,OACA4+D,YAAAqzB,GAEArc,uBAAA,SAAAsc,EAAA7mE,EAAAD,GACA,GAAAC,EAAA1qB,KAAAyqB,EAAAzqB,KAAwC2wF,GAAShzB,MAAAlzC,GAAgB,WAAYkmE,GAASlmE,IAGtFtC,eACAumD,qBAKAA,GAAoBhsE,OAAA8uF,GAAA,EAAA9uF,EACpBisE,UAAAC,GAAA,YACAC,WAAAD,GAAA,WACAE,QAAAF,GAAA,WACAG,UAAAH,GAAA,YAGA,SAAAA,GAAA7F,EAAA/xC,GACA,IAAAk5C,EAAA,QAAAnH,EAAA/xC,EAAA,cAAAA,EAAA,iBACA,gBAAAl5B,EAAAmD,EAAA1B,GACA,IAAA23C,EAAAp5C,EAAAiC,UACAgD,EAAAi0B,EAAA,EAAAkgB,EAAA9sB,IAAA8sB,EAAA/2C,MAAA+wF,EAAAh6C,EAAA/4B,MACA,GAAA+4B,aAAuB7Y,EAAA,cAAa,CACpC,IAAA9+B,EAAA4uB,eAAA+hD,IAAA,GAAAntE,EAAAsZ,MAA8D,SAC9D60E,GAAA,EACAnuF,EAAAjF,EAAAsC,IAAAC,QAAA22B,EAAA,EAAAj0B,EAAAsN,QAAAtN,EAAAH,UAEA,IAAA6uF,EAAiBd,GAASpkE,SAAAxpB,EAAAi0B,EAAAk6D,GAC1B,QAAAO,IACAxwF,GAAmBA,EAAAnD,EAAAS,GAAAmlB,aAAA,IAAoCitE,GAASc,MAChE,IAIA,SAAAtpE,GAAA5oB,EAAAS,EAAA+H,GACA,IAAAxI,EAAAotD,SAAuB,SACvB,IAAA1iC,EAAA1qB,EAAAzB,MAAAsC,IAAAC,QAAAL,GACA,IAAO2wF,GAAShzB,MAAA1zC,GAAe,SAC/B,IACA8L,EADAx2B,EAAAkgD,aAA8BvgC,KAAAnX,EAAAuwD,QAAAtuD,IAAAjC,EAAAwwD,UAC9BxiC,OACA,QAAAA,GAAA,GAAqBsI,EAAA,cAAajQ,aAAA7uB,EAAAzB,MAAAsC,IAAA83B,OAAAnC,OAClCx2B,EAAA0B,SAAA1B,EAAAzB,MAAAS,GAAAmlB,aAAA,IAA+CitE,GAAS1mE,MACxD,GAGA,SAAAqnE,GAAAxzF,GACA,KAAAA,EAAAiC,qBAAmC4wF,IAAa,YAChD,IAAA3tF,EAAAsW,SAAAC,cAAA,OAEA,OADAvW,EAAAyG,UAAA,wBACSioF,GAAA,EAAap+E,OAAAxV,EAAAsC,KAAoBsxF,GAAA,EAAUtrC,OAAAtoD,EAAAiC,UAAAusC,KAAAtpC,GAAqCkE,IAAA,2FCzKnFyqF,GACN/0F,YAAAg1F,GAAAC,OACAA,EAAAC,UACAA,EAAAxxF,OACAA,EAAA0C,KACAA,EAAAzD,KACAA,EAAA0+D,YACAA,EAAA8zB,OACAA,IAEAn0F,KAAAg0F,YACAh0F,KAAAi0F,SACAj0F,KAAAk0F,YACAl0F,KAAA0C,SACA1C,KAAAoF,OACApF,KAAA2B,OACA3B,KAAAqgE,cACArgE,KAAAu/D,SAAAv/D,KAAAoF,KAAAnB,MACAjE,KAAAo0F,QAAAp0F,KAAAu/D,OACAv/D,KAAAm0F,OAAAn0F,KAAAo0F,OAAAp0F,KAAAq0F,WAAAF,EACAn0F,KAAAs0F,eAAA,EACAt0F,KAAA+oB,IAAA/oB,KAAAu0F,YACAv0F,KAAA4xC,WAAA5xC,KAAAw0F,GAAAC,MAAAvtE,QAGAloB,YACA,MAAA01F,EAAsBC,GAAA,QAAG9sC,OAAA7nD,KAAAg0F,WACzBvyF,GACAwyF,OAAAj0F,KAAAi0F,OACA7uF,KAAApF,KAAAoF,KACAzD,KAAA3B,KAAA2B,KACAwyF,OAAA,IAAAn0F,KAAAm0F,SACA9zB,YAAArgE,KAAAqgE,YACAu0B,UAAA,EACAjtF,QAAA3H,KAAAk0F,UAAAvsF,QACAktF,YAAArwF,GAAAxE,KAAA60F,YAAArwF,IAeA,MAZA,mBAAAxE,KAAAk0F,UAAApuE,eACA9lB,KAAA8lB,aAAA9lB,KAAAk0F,UAAApuE,cAGA,mBAAA9lB,KAAAk0F,UAAAl0D,SACAhgC,KAAAggC,OAAAhgC,KAAAk0F,UAAAl0D,QAGAhgC,KAAAw0F,GAAA,IAAAE,GACAhyF,OAAA1C,KAAA0C,OACAoyF,UAAArzF,IACKszF,SACL/0F,KAAAw0F,GAAAQ,IAGAh2F,OAAAoG,EAAAi7D,GACA,OAAAj7D,EAAAzC,OAAA3C,KAAAoF,KAAAzC,OAIAyC,IAAApF,KAAAoF,MAAApF,KAAAqgE,kBAIArgE,KAAAoF,OACApF,KAAAqgE,cACArgE,KAAAi1F,sBACA7vF,OACAi7D,iBAEA,IAGArhE,qBAAAyC,GACA,IAAAzB,KAAAw0F,GAAAxxB,OACA,OAMA,MAAAkyB,EAA2BP,GAAA,QAAGjvE,OAAAhe,OAC1BitF,GAAA,QAAGjvE,OAAAhe,QAAA,EACP5C,OAAAqwF,QAAA1zF,GAAA6G,QAAA,EAAAgB,EAAAN,MACAhJ,KAAAw0F,GAAAxxB,OAAA15D,GAAAN,IAII2rF,GAAA,QAAGjvE,OAAAhe,OAAAwtF,EAGPl2F,YAAAwF,GACA,IAAAxE,KAAA2B,KAAAotD,SACA,OAGA,MAAA7uD,MACAA,GACKF,KAAA2B,MACLgB,KACAA,GACK3C,KAAAoF,KACLhD,EAAApC,KAAAm0F,SACAiB,MAAsBp1F,KAAAoF,KAAAZ,SACtBA,GAEA6wF,EAAAr1F,KAAAo0F,OAAAl0F,EAAAS,GAAAsvB,WAAA7tB,EAAAR,KAAAQ,EAAAP,GAAAc,GAAAutB,QAAA9tB,EAAAR,KAAAQ,EAAAP,GAAAc,EAAA+S,OAAA0/E,IAAAl1F,EAAAS,GAAAitB,cAAAxrB,EAAA,KAAAgzF,GACAp1F,KAAA2B,KAAA0B,SAAAgyF,GAKAr2F,eAAAipD,GAEA,oBAAAA,EAAAtlD,QAIA3C,KAAA4xC,aAIA5xC,KAAA4xC,WAAA9jC,SAAAm6C,EAAA99B,SAIAnrB,UAAAmL,GACA,sBAAAnK,KAAAk0F,UAAA9tC,UACA,OAAApmD,KAAAk0F,UAAA9tC,UAAAj8C,GAGA,MAAAkd,IAAArnB,KAAAk0F,UAAA/vF,OAAAkjB,UAEA,GAAAA,GAAA,cAAAld,EAAAxH,KAAA,CACA,MAAA2yF,EAAAnrF,EAAAggB,OAAA82B,SAAA92C,EAAAggB,OAAA82B,QAAA,sBACAq0C,IAAAt1F,KAAA+oB,MAAAusE,GAAAt1F,KAAA+oB,IAAAjb,SAAAwnF,MAGAt1F,KAAAs0F,eAAA,EACA54E,SAAAuB,iBAAA,eACAjd,KAAAs0F,eAAA,IAEAiB,MAAA,KAKA,MAAAC,EAAA,SAAArrF,EAAAxH,KACA8yF,EAAA,UAAAtrF,EAAAxH,KACA+yF,EAAA,QAAAvrF,EAAAxH,KACAgzF,EAAAxrF,EAAAxH,KAAAkW,WAAA,kBAAA1O,EAAAxH,KAEA,QAAA0kB,GAAAsuE,GAAAH,GAAAC,GAAAC,IAIA11F,KAAAs0F,cAGAt1F,aACAgB,KAAAi1F,sBACAL,UAAA,IAIA51F,eACAgB,KAAAi1F,sBACAL,UAAA,IAIA51F,aACA,MAAAoD,EAAApC,KAAA2B,KAAAqkE,SAAAhmE,KAAA+oB,KACA6sE,EAAA51F,KAAA2B,KAAAzB,MAAAsC,IAAAC,QAAAL,GAEA,OADkB0C,OAAA0lB,GAAA,EAAA1lB,CAAY8wF,EAAA51F,KAAAoF,KAAAzC,MAI9B3D,UACAgB,KAAAw0F,GAAAqB,kBAKA5gD,GAEAj2C,GAAAmL,EAAA2rF,GASA,OARA91F,KAAA+1F,WAAA/1F,KAAA+1F,eAEA/1F,KAAA+1F,WAAA5rF,KACAnK,KAAA+1F,WAAA5rF,OAGAnK,KAAA+1F,WAAA5rF,GAAAD,KAAA4rF,GAEA91F,KAGAhB,KAAAmL,KAAAqF,GACAxP,KAAA+1F,WAAA/1F,KAAA+1F,eACA,MAAAC,EAAAh2F,KAAA+1F,WAAA5rF,GAMA,OAJA6rF,GACAA,EAAA1tF,QAAA9B,KAAArF,MAAAnB,KAAAwP,IAGAxP,KAMAhB,IAAAmL,EAAA2rF,GACA,GAAAzlE,UAAA5vB,OAEK,CAEL,MAAAu1F,EAAAh2F,KAAA+1F,WAAA/1F,KAAA+1F,WAAA5rF,GAAA,KAEA6rF,IACAF,EACA91F,KAAA+1F,WAAA5rF,GAAA6rF,EAAAp7E,OAAAxC,OAAA09E,UAEA91F,KAAA+1F,WAAA5rF,SATAnK,KAAA+1F,cAcA,OAAA/1F,YAKAi2F,GACAj3F,YAAA2I,MACA3H,KAAA2H,YAAoB3H,KAAAkoB,kBACpBvgB,GAIA3I,OACA,YAGAA,WAAAi1F,EAAA,MACAj0F,KAAAi0F,SAGA5mF,WACA,YAGA1K,WACA,kBAGAulB,qBACA,SAGA1kB,cACA,SAGAxE,aACA,SAGAA,aACA,SAGAA,OACA,gBAKMk3F,GACNl3F,YAAAm3F,KAAAlC,GACAkC,EAAA7tF,QAAA4rF,IACAA,EAAAkC,WAAAnC,GACAC,EAAAhzF,SAEAlB,KAAAm2F,aAGA1uE,YACA,OAAAznB,KAAAm2F,WAAAv7E,OAAAs5E,GAAA,SAAAA,EAAAvxF,MAAA2lB,OAAA,CAAAb,GACApa,OACAlJ,iBACYsjB,EACZzoB,CAAAqO,GAAAlJ,QAIAwD,cACA,MAAAhG,KACAA,GACK3B,KACL,OAAAA,KAAAm2F,WAAA7tE,OAAA,CAAAb,EAAAysE,SAA0DzsE,EAC1DzoB,CAAAk1F,EAAA7mF,MAAA,IAAAgpF,MAAAnC,EAAAvsF,SACA3I,IAAAkJ,EAAAK,EAAAS,GACA,MAAAuiD,EAAArjD,EAAAK,KAAAS,EASA,OARAlE,OAAAkL,OAAA9H,GACAlJ,CAAAuJ,GAAAS,IAGAuiD,GACA5pD,EAAA0iD,YAAA1iD,EAAAzB,QAGA,WAOA+D,YACA,OAAAjE,KAAAm2F,WAAAv7E,OAAAs5E,GAAA,SAAAA,EAAAvxF,MAAA2lB,OAAA,CAAArkB,GACAoJ,OACAlJ,iBACYF,EACZjF,CAAAqO,GAAAlJ,QAIAX,cACA,OAAAxD,KAAAm2F,WAAAv7E,OAAAs5E,KAAA1wF,SAAA8kB,OAAA,CAAAguE,GACA9yF,iBACK8yF,KAAA9yF,OAGLxE,SAAAmF,OACAA,IAEA,MAAAoyF,EAAAv2F,KAAAm2F,WAAAv7E,OAAAs5E,IAAA,aAAAxhF,SAAAwhF,EAAAvxF,OAAAiY,OAAAs5E,KAAA5gF,MAAA5I,IAAAwpF,KAAA5gF,MACAnP,YAEAqyF,EAAAx2F,KAAAm2F,WAAAv7E,OAAAs5E,IAAA,eAAAxhF,SAAAwhF,EAAAvxF,OAAAiY,OAAAs5E,KAAA5gF,MAAA5I,IAAAwpF,KAAA5gF,MACA3Q,KAAAwB,EAAA,GAAAuL,OAAAwkF,EAAAvxF,KAAA,MAAAuxF,EAAA7mF,MACAlJ,YAEA,UAAAoyF,KAAAC,GAAA9rF,IAAA4I,GAAiExO,OAAA8uF,GAAA,EAAA9uF,CAAMwO,IAGvEtU,YAAAmF,OACAA,EAAAsyF,mBACAA,IAEA,KAAAA,aAAAr0D,QAAAq0D,EAAA,SACA,MAAAC,EAAAD,aAAAr0D,MAAApiC,KAAAm2F,WAAAv7E,OAAAs5E,IAAAuC,EAAA/jF,SAAAwhF,EAAA7mF,OAAArN,KAAAm2F,WACAQ,EAAAD,EAAA97E,OAAAs5E,IAAA,aAAAxhF,SAAAwhF,EAAAvxF,OAAAiY,OAAAs5E,KAAA10F,YAAAkL,IAAAwpF,KAAA10F,YACA2E,YAEAyyF,EAAAF,EAAA97E,OAAAs5E,IAAA,eAAAxhF,SAAAwhF,EAAAvxF,OAAAiY,OAAAs5E,KAAA10F,YAAAkL,IAAAwpF,KAAA10F,YACAmD,KAAAwB,EAAA,GAAAuL,OAAAwkF,EAAAvxF,KAAA,MAAAuxF,EAAA7mF,MACAlJ,YAEA,UAAAwyF,KAAAC,GAAAtuE,OAAA,CAAAuuE,EAAAr3F,QAAAq3F,KAAAr3F,OAGAR,YAAAmF,OACAA,EAAAsyF,mBACAA,IAEA,KAAAA,aAAAr0D,QAAAq0D,EAAA,SACA,MAAAC,EAAAD,aAAAr0D,MAAApiC,KAAAm2F,WAAAv7E,OAAAs5E,IAAAuC,EAAA/jF,SAAAwhF,EAAA7mF,OAAArN,KAAAm2F,WACAW,EAAAJ,EAAA97E,OAAAs5E,IAAA,aAAAxhF,SAAAwhF,EAAAvxF,OAAAiY,OAAAs5E,KAAA6C,YAAArsF,IAAAwpF,KAAA6C,YACA5yF,YAEA6yF,EAAAN,EAAA97E,OAAAs5E,IAAA,eAAAxhF,SAAAwhF,EAAAvxF,OAAAiY,OAAAs5E,KAAA6C,YAAArsF,IAAAwpF,KAAA6C,YACAp0F,KAAAwB,EAAA,GAAAuL,OAAAwkF,EAAAvxF,KAAA,MAAAuxF,EAAA7mF,MACAlJ,YAEA,UAAA2yF,KAAAE,GAAA1uE,OAAA,CAAA2uE,EAAAF,QAAAE,KAAAF,OAGA/3F,UAAAmF,OACAA,EAAAxC,KACAA,IAEA,OAAA3B,KAAAm2F,WAAAv7E,OAAAs5E,KAAA/jE,UAAA7H,OAAA,CAAA4uE,EAAAhD,KACA,MAAA7mF,KACAA,EAAA1K,KACAA,GACOuxF,EACP/jE,KACAnnB,EAAAkrF,EAAA/jE,UACAhsB,aACA,eAAAuO,SAAA/P,IACAA,KAAAwB,EAAA,GAAAuL,OAAA/M,EAAA,MAAA0K,SAIAlM,EAAA,CAAAiX,EAAA5T,MACA7C,EAAAotD,WAIAptD,EAAA2iD,QACAlsC,EAAA5T,EAAA4T,CAAAzW,EAAAzB,MAAAyB,EAAA0B,SAAA1B,IAGAq2E,EAAA,CAAAmf,EAAAC,KACAh1D,MAAAC,QAAA+0D,GACAjnE,EAAAgnE,GAAA3yF,IAAA4yF,EAAA9uF,QAAA9B,GAAArF,EAAAqF,EAAAhC,KACS,mBAAA4yF,IACTjnE,EAAAgnE,GAAA3yF,IAAArD,EAAAi2F,EAAA5yF,MAYA,MARA,iBAAAwE,EACAlE,OAAAqwF,QAAAnsF,GAAAV,QAAA,EAAA+uF,EAAAC,MACAtf,EAAAqf,EAAAC,KAGAtf,EAAA3qE,EAAArE,OAGckuF,KACd/mE,eA2BAuS,WAAAuzD,GACAj3F,YAAA2I,MACAwF,MAAAxF,GAGAhF,WACA,aAGAhB,WACA,YAGAwC,aACA,YAGAnF,UACA,cAKA,SAAAu4F,GAAAvuF,EAAA,EAAAyX,EAAA,EAAAxd,EAAA,GACA,OAAAD,KAAAyd,IAAAzd,KAAAC,IAAAw1E,SAAAzvE,EAAA,IAAAyX,GAAAxd,SAGA+iC,WAAAiwD,GACAj3F,YAAA2I,MACAwF,MAAAxF,GAGAhF,WACA,aAGAhB,WACA,YAGAwC,aACA,YAGAnF,UACA,oBAKAw4F,WAAAxxD,GACA34B,WACA,YAGAlJ,aACA,OACA+iB,QAAA,iBAMMuwE,WAASzxD,GACf34B,WACA,kBAGAlJ,aACA,OACA+iB,QAAA,UACAC,MAAA,QACAE,WAAA,EACAC,WACA/d,IAAA,MAEAge,MAAA,aAIAvoB,UAAA2D,KACAA,IAEA,UAAiBmC,OAAA0iB,GAAA,EAAA1iB,CAAYnC,UAK7B+0F,WAAA1xD,GACA34B,WACA,aAGAlJ,aACA,OACAgjB,MAAA,WAMA,IAAAwwE,GAAA,q7BAEMC,WAAM3iD,GACZj2C,YAAA2I,MACAwF,QACAnN,KAAAkoB,gBACA2vE,eACA9oC,UAAA,EACA+oC,UAAA,KACA3B,cACAjvE,QAAA,GACAwjB,QAAA,MACAqtD,eACAp1F,KAAA,MACAukB,UACAvkB,KAAA,eAGAq1F,sBAAA,EACAC,mBAAA,EACAC,mBAAA,EACAC,cACAC,kBAAA,EACAC,iBAAA,EACAC,gBACAC,WAAA,EACAC,OAAA,OACAC,cAAA,OACAC,SAAA,OACAC,QAAA,OACAC,OAAA,OACAC,QAAA,OACAC,OAAA,QAEA94F,KAAAwkB,QAAA,6DACAxkB,KAAAkB,KAAAyG,GAGA3I,KAAA2I,MACA3H,KAAA4H,eAAqB5H,KAAAkoB,kBACrBvgB,IAEA3H,KAAA+6D,SAAA,EACA/6D,KAAAmC,WACAP,KAAA,EACAC,GAAA,GAEA7B,KAAAkb,QAAAQ,SAAAC,cAAA,OACA3b,KAAAm2F,WAAAn2F,KAAA+4F,mBACA/4F,KAAAynB,MAAAznB,KAAAg5F,cACAh5F,KAAAiE,MAAAjE,KAAAi5F,cACAj5F,KAAAmE,OAAAnE,KAAAk5F,eACAl5F,KAAAwD,QAAAxD,KAAAm5F,gBACAn5F,KAAAo5F,QAAAp5F,KAAAq5F,gBACAr5F,KAAAR,WAAAQ,KAAAs5F,mBACAt5F,KAAA+2F,WAAA/2F,KAAAu5F,mBACAv5F,KAAA2B,KAAA3B,KAAAw5F,aACAx5F,KAAAmwB,SAAAnwB,KAAAy5F,iBACAz5F,KAAA05F,yBAEA15F,KAAA2H,QAAA4wF,WArLA,SAAAZ,GACqC,CACrC,MAAAjuE,EAAAhO,SAAAC,cAAA,SACA+N,EAAA/mB,KAAA,WACA+mB,EAAA7N,YAAA87E,EACA,MAAAjpD,KACAA,GACKhzB,UACL3R,WACAA,GACK2kC,EAEL3kC,EACA2kC,EAAAqd,aAAAriC,EAAA3f,GAEA2kC,EAAAsC,YAAAtnB,IAuKA6uE,CAAAZ,IAGA,OAAA33F,KAAA2H,QAAAmwF,WACA93F,KAAAskD,MAAAtkD,KAAA2H,QAAAmwF,WAGA93F,KAAAwkB,OAAAlc,QAAA+E,IACArN,KAAA25F,GAAAtsF,EAAArN,KAAA2H;;;;;;AA7mBA,SAAA49B,GACA,OAAAA,EAAAt8B,QAAA,uBAAA2wF,EAAAt0F,IAAA,IAAAA,EAAAs0F,EAAAnwF,cAAAmwF,EAAAhhB,eAAA3vE,QAAA,WA4mBA4wF,CAAA,MAAAnqF,OAAArC,MAAA,YAEArN,KAAA85F,KAAA,QACAn4F,KAAA3B,KAAA2B,KACAzB,MAAAF,KAAAE,QAGAF,KAAAm2F,WAAAx0F,KAAA3B,KAAA2B,KAGA3C,WAAA2I,GACA3H,KAAA2H,YAAoB3H,KAAA2H,WACpBA,GAGA3H,KAAA2B,MAAA3B,KAAAE,OACAF,KAAA2B,KAAA0iD,YAAArkD,KAAAE,OAIA65F,wBACA,OAAA/5F,KAAA2H,QAAAqwF,sBAIA,IAAAR,GAAA,IAAAE,GAAA,IAAuCD,OAGvCv3F,YACA,OAAAF,KAAA2B,KAAA3B,KAAA2B,KAAAzB,MAAA,KAGAlB,mBACA,WAAek3F,OAAgBl2F,KAAA+5F,qBAAA/5F,KAAA2H,QAAAwuF,YAAAn2F,MAG/BhB,gBACA,OAAAgB,KAAAm2F,WAAA3yF,QAGAxE,gBACA,OAAAgB,KAAAm2F,WAAAiD,SACAj1F,OAAAnE,KAAAmE,SAIAnF,mBACA,OAAAgB,KAAAm2F,WAAA32F,YACA2E,OAAAnE,KAAAmE,OACAsyF,mBAAAz2F,KAAA2H,QAAAswF,oBAIAj5F,mBACA,OAAAgB,KAAAm2F,WAAAY,YACA5yF,OAAAnE,KAAAmE,OACAsyF,mBAAAz2F,KAAA2H,QAAAuwF,oBAIAl5F,iBACA,OAAAgB,KAAAm2F,WAAAhmE,UACAhsB,OAAAnE,KAAAmE,OACAxC,KAAA3B,KAAA2B,OAIA3C,cACA,OAAAgB,KAAAm2F,WAAA1uE,MAGAzoB,cACA,OAAAgB,KAAAm2F,WAAAlyF,MAGAjF,eACA,WAAe8gB,EAAA,QACf4qB,QAAA1qC,KAAA2H,QAAA+iC,QACAjjB,MAAAznB,KAAAynB,MACAxjB,MAAAjE,KAAAiE,QAIAjF,cACA,OAAWyhC,EAAA,YAAW/qB,QACtBvR,OAAAnE,KAAAmE,OACA3B,IAAAxC,KAAAg6F,eAAAh6F,KAAA2H,QAAAuf,SACA1jB,YAAAxD,KAAAwD,QAAiCsB,OAAAkpF,GAAA,EAAAlpF,EACjC9D,MAAAhB,KAAAR,gBACOQ,KAAA+2F,cAAA/2F,KAAAo5F,QAAwCt0F,OAAA8uF,GAAA,EAAA9uF,EAC/CgsB,UAAmBk9D,GAAA,IACTlpF,OAAA8uF,GAAA,EAAA9uF,CAAOm1F,GAAA,MAAUj6F,KAAA2H,QAAAywF,kBF1sB3B,SAAAzwF,GAGA,YAFA,IAAAA,UAEA,IAAa84B,EAAA,QACb9+B,KAAA,SAAAswF,GAAqC,WAAAD,GAAAC,EAAAtqF,MEssB8BwwF,CAAUn4F,KAAA2H,QAAAwwF,mBAAAn4F,KAAA2H,QAAA0wF,iBAAsE5E,SAAS,IAAehzD,EAAA,QAC3Kn3B,IAAA,IAAiBm3B,EAAA,UAAS,YAC1Bh/B,OACAstD,SAAA,IAAA/uD,KAAA2H,QAAAonD,YAEO,IAAOtuB,EAAA,QACdh/B,OACAkJ,YACAuvF,SAAA,GAEAn4F,iBACAuiD,MAAA,CAAA3iD,EAAAwI,KACAnK,KAAA+6D,SAAA,EACA/6D,KAAA85F,KAAA,SACA3vF,QACAjK,MAAAyB,EAAAzB,MACAyB,SAEA,MAAA0zF,EAAAr1F,KAAAE,MAAAS,GAAA2C,QAAA,cACAtD,KAAA2B,KAAA0B,SAAAgyF,IAEA92B,KAAA,CAAA58D,EAAAwI,KACAnK,KAAA+6D,SAAA,EACA/6D,KAAA85F,KAAA,QACA3vF,QACAjK,MAAAyB,EAAAzB,MACAyB,SAEA,MAAA0zF,EAAAr1F,KAAAE,MAAAS,GAAA2C,QAAA,cACAtD,KAAA2B,KAAA0B,SAAAgyF,QAIO,IAAO50D,EAAA,QACdh/B,MAAAzB,KAAA2H,QAAAkwF,iBAKA74F,eAAAkoB,EAAAoxE,EAAAt4F,KAAA2H,QAAA2wF,cACA,UAAApxE,EACA,OAAAlnB,KAAAmE,OAAAm+B,aAAAtiC,KAAA2H,QAAAowF,eAGA,oBAAA7wE,EACA,IACA,OAAAlnB,KAAAmE,OAAAm+B,aAAApb,GACO,MAAAzN,GAEP,OADAD,QAAA8B,KAAA,kDAAA4L,EAAA,SAAAzN,GACAzZ,KAAAmE,OAAAm+B,aAAAtiC,KAAA2H,QAAAowF,eAIA,oBAAA7wE,EAAA,CACA,MAAAizE,EAAA,QAAAzqF,OAAAwX,EAAA,UAEAhM,GADA,IAAA8B,OAAA2uB,WACAyuD,gBAAAD,EAAA,aAAA97E,KAAAg8E,kBACA,OAAav6E,EAAA,UAAS8sB,WAAA5sC,KAAAmE,QAAAkD,MAAA6T,EAAAo9E,GAGtB,SAGAt5F,aACA,WAAe+jE,GAAU/iE,KAAAkb,SACzBhb,MAAAF,KAAAs6F,cACAzyB,YAAA,IAAAr4D,KACAxP,KAAA85F,KAAA,WAAAtqF,IAEA+qF,WAAA,IAAA/qF,KACAxP,KAAA85F,KAAA,UAAAtqF,IAEA22D,oBAAAnmE,KAAAmmE,oBAAA9oD,KAAArd,QAIAhB,mBAAAg1F,EAAA,MACAA,GAIAh0F,KAAA2B,KAAAoiE,UACA7a,UAAAlpD,KAAAw6F,eACA93F,OAAAsxF,EACAmC,eAAAn2F,KAAA+5F,qBAAA/5F,KAAA2H,QAAAwuF,gBAKAn3F,eAAA0D,OACAA,EAAAyzF,WACAA,IAEA,OAAAA,EAAAv7E,OAAAs5E,IAAA,eAAAxhF,SAAAwhF,EAAAvxF,OAAAiY,OAAAs5E,KAAAvyF,MAAA2mB,OAAA,CAAA4gC,EAAAgrC,KAcA,UAAchrC,EACdlqD,CAAAk1F,EAAA7mF,MAdA,CAAAjI,EAAAzD,EAAAwyF,EAAA9zB,KACA,MAAA2zB,EAAAE,EAAAvyF,KACA,WAAmBoyF,GAAaC,GAChCC,OAAAj0F,KACAk0F,YACAxxF,SACA0C,OACAzD,OACAwyF,SACA9zB,uBAUArhE,oBAAAq2F,GACA,MAAAj6C,EAAAp7C,KAAAE,MAAAiB,MAAAk0F,GACAr1F,KAAA2B,KAAA0iD,YAAAjJ,GACAp7C,KAAAmC,WACAP,KAAA5B,KAAAE,MAAAiC,UAAAP,KACAC,GAAA7B,KAAAE,MAAAiC,UAAAN,IAEA7B,KAAA05F,yBACA15F,KAAA85F,KAAA,eACAW,QAAAz6F,KAAAy6F,QAAAp9E,KAAArd,MACA06F,QAAA16F,KAAA06F,QAAAr9E,KAAArd,MACAE,MAAAF,KAAAE,MACAm1F,gBAGAA,EAAA7zF,aAAA6zF,EAAA/zF,QAAA,kBAIAtB,KAAA26F,WAAAtF,GAGAr2F,WAAAq2F,GACAr1F,KAAA85F,KAAA,UACAW,QAAAz6F,KAAAy6F,QAAAp9E,KAAArd,MACA06F,QAAA16F,KAAA06F,QAAAr9E,KAAArd,MACAE,MAAAF,KAAAE,MACAm1F,gBAIAr2F,iBAAA+R,EAAA,MACA,GAAA/Q,KAAAmC,WAAA,OAAA4O,EACA,OAAA/Q,KAAAmC,UAGA,aAAA4O,IAAA,IAAAA,EACA,OACAnP,KAAA,EACAC,GAAA,GAIA,WAAAkP,EAAA,CACA,MAAAvO,IACAA,GACOxC,KAAAE,MACP,OACA0B,KAAAY,EAAA0kB,QAAAqG,KACA1rB,GAAAW,EAAA0kB,QAAAqG,MAIA,OACA3rB,KAAAmP,EACAlP,GAAAkP,GAIA/R,MAAA+R,EAAA,MACA,GAAA/Q,KAAA2B,KAAAo5D,SAAA,OAAAhqD,IAAA,IAAAA,EACA,OAGA,MAAAnP,KACAA,EAAAC,GACAA,GACK7B,KAAA8zD,iBAAA/iD,GACL/Q,KAAA8lB,aAAAlkB,EAAAC,GACAI,WAAA,IAAAjC,KAAA2B,KAAA2iD,QAAA,IAGAtlD,aAAA4C,EAAA,EAAAC,EAAA,GACA,MAAAW,IACAA,EAAA7B,GACAA,GACKX,KAAAE,MACL06F,EAAArD,GAAA31F,EAAA,EAAAY,EAAA0kB,QAAAqG,MACAstE,EAAAtD,GAAA11F,EAAA,EAAAW,EAAA0kB,QAAAqG,MACAprB,EAAsBs+B,EAAA,cAAa/qB,OAAAlT,EAAAo4F,EAAAC,GACnCxF,EAAA10F,EAAAmlB,aAAA3jB,GACAnC,KAAA2B,KAAA0B,SAAAgyF,GAGAr2F,OACAgB,KAAA2B,KAAAonB,IAAAw1C,OAGAv/D,gBACA,OAAAwN,KAAAnF,MAAAmF,KAAAC,WACAgb,MAAAznB,KAAAm2F,WAAA1uE,MACAxjB,MAAAjE,KAAAm2F,WAAAlyF,SAIAjF,UACA,MAAAouC,EAAA1xB,SAAAC,cAAA,OACA8d,EAAqB3Z,EAAA,cAAa8sB,WAAA5sC,KAAAmE,QAAAkvC,kBAAArzC,KAAAE,MAAAsC,IAAA0kB,SAElC,OADAkmB,EAAA4D,YAAAvX,GACA2T,EAAAxxB,UAGA5c,UACA,OAAAgB,KAAAE,MAAAsC,IAAA0zB,SAGAl3B,WAAAkoB,KAAyByzE,GAAA,EAAArC,GACzB,MAAA91F,IACAA,EAAA7B,GACAA,GACKX,KAAAE,MACLwb,EAAA1b,KAAAg6F,eAAA9yE,EAAAoxE,GACAn2F,EAAsBs+B,EAAA,cAAa/qB,OAAAlT,EAAA,EAAAA,EAAA0kB,QAAAqG,MACnC8nE,EAAA10F,EAAAmlB,aAAA3jB,GAAAqmB,qBAAA9M,GAAA,GAAApY,QAAA,iBAAAq3F,GACA36F,KAAA2B,KAAA0B,SAAAgyF,GAGAr2F,aAAA27F,GAAA,GACA36F,KAAA86F,WAAA96F,KAAA2H,QAAAowF,cAAA4C,GAGA37F,yBACAgB,KAAAmvC,YAAArqC,OAAAqwF,QAAAn1F,KAAAmE,OAAAF,OAAAqkB,OAAA,CAAArkB,GAAAoJ,EAAAqtB,UAA2Fz2B,EAC3FjF,CAAAqO,GAAA,CAAA7I,OAA8BM,OAAA0lB,GAAA,EAAA1lB,CAAY9E,KAAAE,MAAAw6B,EAAAl2B,SAE1CxE,KAAA+6F,gBAAAj2F,OAAAqwF,QAAAn1F,KAAAmE,OAAAF,OAAAqkB,OAAA,CAAArkB,GAAAoJ,EAAAqtB,UAA+Fz2B,EAC/FjF,CAAAqO,GAAcvI,OAAA0lB,GAAA,EAAA1lB,CAAY9E,KAAAE,MAAAw6B,SAE1B16B,KAAAg7F,YAAAl2F,OAAAqwF,QAAAn1F,KAAAmE,OAAAsjB,OAAAa,OAAA,CAAAb,GAAApa,EAAAjI,UAA2FqiB,EAC3FzoB,CAAAqO,GAAA,CAAA7I,OAA8BM,OAAA0lB,GAAA,EAAA1lB,CAAY9E,KAAAE,MAAAkF,EAAAZ,SAI1CxF,aAAA2D,EAAA,MACA,OAAA3C,KAAA+6F,gBAAAp4F,GAGA3D,aAAA2D,EAAA,MACA,UAAgBmC,OAAA0lB,GAAA,EAAA1lB,CAAY9E,KAAAE,MAAAF,KAAAmE,OAAAsjB,MAAA9kB,KAI5Bs4F,eACA,OAAAn2F,OAAAqwF,YAA2Bn1F,KAAAmvC,eAC3BnvC,KAAAg7F,cACK1yE,OAAA,CAAAmF,GAAApgB,EAAArE,UAAqCykB,EAC1CzuB,CAAAqO,GAAA,CAAA7I,OAAyBwE,EAAAxE,SAIzBxF,eAAAiC,EAAA,KAAAi6F,GACA,MAAA13F,EAAA,mBAAA03F,IAAAj6F,EAAAjB,KAAAE,MAAAsD,UAAAvC,KAAAjB,KAAAE,MAAAsD,SACA43C,EAAAp7C,KAAAE,MAAA27C,aACAr4C,YAEAxD,KAAA2B,KAAA0iD,YAAAjJ,GAGAp8C,iBAAAqO,EAAA,MACA,IAAAA,IAAArN,KAAA2B,KAAAihD,QACA,OAGA,MAAAxH,EAAAp7C,KAAAE,MAAA27C,aACAr4C,QAAAxD,KAAAE,MAAAsD,QAAAoX,OAAA3Z,MAAAqI,IAAAuP,WAAA,GAAAnJ,OAAArC,EAAA,SAEArN,KAAA2B,KAAA0iD,YAAAjJ,GAGAp8C,UACAgB,KAAA2B,MAIA3B,KAAA2B,KAAA0kD,WAKA,IAAA80C,IACA15F,OACAwyF,QACA5rE,QAAA,KACA1lB,KAAAmC,SAGAs2F,OACAnH,QACAoH,WAAA,EAEAr8F,QAAAi1F,GACAA,KAAA/4E,SACAlb,KAAAs7F,UAAA,KACAt7F,KAAAg1F,IAAAhkD,YAAAijD,EAAA/4E,QAAAnR,YACAkqF,EAAAsH,mBAAAv7F,WAQA8K,OAAA6Q,GACAA,EAAA,OAGA3c,gBACAgB,KAAAi0F,OAAA/4E,QAAAlb,KAAAg1F,YAKAwG,GACAx8F,aAAA2I,QACAA,IAEA3H,KAAA2H,UACA3H,KAAAy7F,aAAA,EAEAz7F,KAAA07F,iBAAA17F,KAAAuqB,YAAAlN,KAAArd,MACAA,KAAA2H,QAAAuT,QAAA+B,iBAAA,YAAAjd,KAAA07F,kBACAC,SAAA,IAGA37F,KAAA47F,YAAA,MACA57F,KAAAy7F,YACAz7F,KAAAy7F,aAAA,EAIAz7F,KAAA2H,QAAAssF,OAAA6F,KAAA,4BAGA95F,KAAA2H,QAAAssF,OAAA0F,GAAA,OAAA35F,KAAA47F,aAGA58F,cACAgB,KAAAy7F,aAAA,EAGAz8F,UACAgB,KAAA2H,QAAAuT,QAAA20C,oBAAA,YAAA7vD,KAAA07F,kBACA17F,KAAA2H,QAAAssF,OAAAj2C,IAAA,OAAAh+C,KAAA47F,cAmBA,IAAAC,IACAp6F,OACAwyF,QACA5rE,QAAA,KACA1lB,KAAAmC,SAIA+D,KAAA,MAEAkyD,SAAA,IAIAqgC,OACAnH,QACAoH,WAAA,EAEAr8F,QAAAi1F,GACAA,GACAj0F,KAAAs7F,UAAA,KACArH,EAAA6H,eAnCA,SAAAn0F,GACA,WAAa84B,EAAA,QACbn3B,IAAA,IAAam3B,EAAA,UAAS,YAEtB9+B,KAAAswF,GACA,IAAAuJ,IACAvJ,aACAtqF,cA4BAo0F,EACA9H,SACA/4E,QAAAlb,KAAAg1F,OAEAh1F,KAAA+6D,QAAAk5B,EAAAl5B,QACAk5B,EAAA0F,GAAA,aACA35F,KAAA+6D,SAAA,IAEAk5B,EAAA0F,GAAA,sBAAA5+B,IACA/6D,KAAA+6D,iBASA/7D,SACA,OAAAgB,KAAAi0F,OAIAj0F,KAAAg8F,aAAA3zE,SACA0yC,QAAA/6D,KAAA+6D,QACAzW,MAAAtkD,KAAAi0F,OAAA3vC,MACAn0B,SAAAnwB,KAAAi0F,OAAA9jE,SACA8qE,SAAAj7F,KAAAi0F,OAAAgH,SACAlP,aAAA/rF,KAAAi0F,OAAAlI,aAAA1uE,KAAArd,KAAAi0F,QACA/H,aAAAlsF,KAAAi0F,OAAA/H,aAAA7uE,KAAArd,KAAAi0F,UATA,OAsNAnvF,OAIAm3F,QA+MAn3F","file":"static/js/chunk-68ea.6d56674a.js","sourcesContent":["/**\n * TextRenderer\n * returns only the textual part of the token\n */\nmodule.exports = class TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n\n em(text) {\n return text;\n }\n\n codespan(text) {\n return text;\n }\n\n del(text) {\n return text;\n }\n\n html(text) {\n return text;\n }\n\n text(text) {\n return text;\n }\n\n link(href, title, text) {\n return '' + text;\n }\n\n image(href, title, text) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n};\n","import { Plugin } from 'prosemirror-state';\nimport { findWrapping, canJoin } from 'prosemirror-transform';\n\n// ::- Input rules are regular expressions describing a piece of text\n// that, when typed, causes something to happen. This might be\n// changing two dashes into an emdash, wrapping a paragraph starting\n// with `\"> \"` into a blockquote, or something entirely different.\nvar InputRule = function InputRule(match, handler) {\n this.match = match;\n this.handler = typeof handler == \"string\" ? stringHandler(handler) : handler;\n};\n\nfunction stringHandler(string) {\n return function(state, match, start, end) {\n var insert = string;\n if (match[1]) {\n var offset = match[0].lastIndexOf(match[1]);\n insert += match[0].slice(offset + match[1].length);\n start += offset;\n var cutOff = start - end;\n if (cutOff > 0) {\n insert = match[0].slice(offset - cutOff, offset) + insert;\n start = end;\n }\n }\n return state.tr.insertText(insert, start, end)\n }\n}\n\nvar MAX_MATCH = 500;\n\n// :: (config: {rules: [InputRule]}) → Plugin\n// Create an input rules plugin. When enabled, it will cause text\n// input that matches any of the given rules to trigger the rule's\n// action.\nfunction inputRules(ref) {\n var rules = ref.rules;\n\n var plugin = new Plugin({\n state: {\n init: function init() { return null },\n apply: function apply(tr, prev) {\n var stored = tr.getMeta(this);\n if (stored) { return stored }\n return tr.selectionSet || tr.docChanged ? null : prev\n }\n },\n\n props: {\n handleTextInput: function handleTextInput(view, from, to, text) {\n return run(view, from, to, text, rules, plugin)\n },\n handleDOMEvents: {\n compositionend: function (view) {\n setTimeout(function () {\n var ref = view.state.selection;\n var $cursor = ref.$cursor;\n if ($cursor) { run(view, $cursor.pos, $cursor.pos, \"\", rules, plugin); }\n });\n }\n }\n },\n\n isInputRules: true\n });\n return plugin\n}\n\nfunction run(view, from, to, text, rules, plugin) {\n if (view.composing) { return false }\n var state = view.state, $from = state.doc.resolve(from);\n if ($from.parent.type.spec.code) { return false }\n var textBefore = $from.parent.textBetween(Math.max(0, $from.parentOffset - MAX_MATCH), $from.parentOffset,\n null, \"\\ufffc\") + text;\n for (var i = 0; i < rules.length; i++) {\n var match = rules[i].match.exec(textBefore);\n var tr = match && rules[i].handler(state, match, from - (match[0].length - text.length), to);\n if (!tr) { continue }\n view.dispatch(tr.setMeta(plugin, {transform: tr, from: from, to: to, text: text}));\n return true\n }\n return false\n}\n\n// :: (EditorState, ?(Transaction)) → bool\n// This is a command that will undo an input rule, if applying such a\n// rule was the last thing that the user did.\nfunction undoInputRule(state, dispatch) {\n var plugins = state.plugins;\n for (var i = 0; i < plugins.length; i++) {\n var plugin = plugins[i], undoable = (void 0);\n if (plugin.spec.isInputRules && (undoable = plugin.getState(state))) {\n if (dispatch) {\n var tr = state.tr, toUndo = undoable.transform;\n for (var j = toUndo.steps.length - 1; j >= 0; j--)\n { tr.step(toUndo.steps[j].invert(toUndo.docs[j])); }\n var marks = tr.doc.resolve(undoable.from).marks();\n dispatch(tr.replaceWith(undoable.from, undoable.to, state.schema.text(undoable.text, marks)));\n }\n return true\n }\n }\n return false\n}\n\n// :: InputRule Converts double dashes to an emdash.\nvar emDash = new InputRule(/--$/, \"—\");\n// :: InputRule Converts three dots to an ellipsis character.\nvar ellipsis = new InputRule(/\\.\\.\\.$/, \"…\");\n// :: InputRule “Smart” opening double quotes.\nvar openDoubleQuote = new InputRule(/(?:^|[\\s\\{\\[\\(\\<'\"\\u2018\\u201C])(\")$/, \"“\");\n// :: InputRule “Smart” closing double quotes.\nvar closeDoubleQuote = new InputRule(/\"$/, \"”\");\n// :: InputRule “Smart” opening single quotes.\nvar openSingleQuote = new InputRule(/(?:^|[\\s\\{\\[\\(\\<'\"\\u2018\\u201C])(')$/, \"‘\");\n// :: InputRule “Smart” closing single quotes.\nvar closeSingleQuote = new InputRule(/'$/, \"’\");\n\n// :: [InputRule] Smart-quote related input rules.\nvar smartQuotes = [openDoubleQuote, closeDoubleQuote, openSingleQuote, closeSingleQuote];\n\n// :: (RegExp, NodeType, ?union, ?([string], Node) → bool) → InputRule\n// Build an input rule for automatically wrapping a textblock when a\n// given string is typed. The `regexp` argument is\n// directly passed through to the `InputRule` constructor. You'll\n// probably want the regexp to start with `^`, so that the pattern can\n// only occur at the start of a textblock.\n//\n// `nodeType` is the type of node to wrap in. If it needs attributes,\n// you can either pass them directly, or pass a function that will\n// compute them from the regular expression match.\n//\n// By default, if there's a node with the same type above the newly\n// wrapped node, the rule will try to [join](#transform.Transform.join) those\n// two nodes. You can pass a join predicate, which takes a regular\n// expression match and the node before the wrapped node, and can\n// return a boolean to indicate whether a join should happen.\nfunction wrappingInputRule(regexp, nodeType, getAttrs, joinPredicate) {\n return new InputRule(regexp, function (state, match, start, end) {\n var attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs;\n var tr = state.tr.delete(start, end);\n var $start = tr.doc.resolve(start), range = $start.blockRange(), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping) { return null }\n tr.wrap(range, wrapping);\n var before = tr.doc.resolve(start - 1).nodeBefore;\n if (before && before.type == nodeType && canJoin(tr.doc, start - 1) &&\n (!joinPredicate || joinPredicate(match, before)))\n { tr.join(start - 1); }\n return tr\n })\n}\n\n// :: (RegExp, NodeType, ?union) → InputRule\n// Build an input rule that changes the type of a textblock when the\n// matched text is typed into it. You'll usually want to start your\n// regexp with `^` to that it is only matched at the start of a\n// textblock. The optional `getAttrs` parameter can be used to compute\n// the new node's attributes, and works the same as in the\n// `wrappingInputRule` function.\nfunction textblockTypeInputRule(regexp, nodeType, getAttrs) {\n return new InputRule(regexp, function (state, match, start, end) {\n var $start = state.doc.resolve(start);\n var attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs;\n if (!$start.node(-1).canReplaceWith($start.index(-1), $start.indexAfter(-1), nodeType)) { return null }\n return state.tr\n .delete(start, end)\n .setBlockType(start, start, nodeType, attrs)\n })\n}\n\nexport { InputRule, closeDoubleQuote, closeSingleQuote, ellipsis, emDash, inputRules, openDoubleQuote, openSingleQuote, smartQuotes, textblockTypeInputRule, undoInputRule, wrappingInputRule };\n//# sourceMappingURL=index.es.js.map\n","const Lexer = require('./Lexer.js');\nconst Parser = require('./Parser.js');\nconst Renderer = require('./Renderer.js');\nconst TextRenderer = require('./TextRenderer.js');\nconst InlineLexer = require('./InlineLexer.js');\nconst Slugger = require('./Slugger.js');\nconst {\n merge,\n checkSanitizeDeprecation,\n escape\n} = require('./helpers.js');\nconst {\n getDefaults,\n changeDefaults,\n defaults\n} = require('./defaults.js');\n\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n const highlight = opt.highlight;\n let tokens,\n pending,\n i = 0;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n const done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n let out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occurred:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n};\n\nmarked.getDefaults = getDefaults;\n\nmarked.defaults = defaults;\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.Slugger = Slugger;\n\nmarked.parse = marked;\n\nmodule.exports = marked;\n","// https://github.com/substack/deep-freeze/blob/master/index.js\n/** @param {any} obj */\nfunction deepFreeze(obj) {\n Object.freeze(obj);\n\n var objIsFunction = typeof obj === 'function';\n\n Object.getOwnPropertyNames(obj).forEach(function(prop) {\n if (Object.hasOwnProperty.call(obj, prop)\n && obj[prop] !== null\n && (typeof obj[prop] === \"object\" || typeof obj[prop] === \"function\")\n // IE11 fix: https://github.com/highlightjs/highlight.js/issues/2318\n // TODO: remove in the future\n && (objIsFunction ? prop !== 'caller' && prop !== 'callee' && prop !== 'arguments' : true)\n && !Object.isFrozen(obj[prop])) {\n deepFreeze(obj[prop]);\n }\n });\n\n return obj;\n}\n\nclass Response {\n /**\n * @param {CompiledMode} mode\n */\n constructor(mode) {\n // eslint-disable-next-line no-undefined\n if (mode.data === undefined) mode.data = {};\n\n this.data = mode.data;\n }\n\n ignoreMatch() {\n this.ignore = true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction escapeHTML(value) {\n return value\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record[]} objects\n * @returns {T} a single new object\n */\nfunction inherit(original, ...objects) {\n /** @type Record */\n var result = {};\n\n for (const key in original) {\n result[key] = original[key];\n }\n objects.forEach(function(obj) {\n for (const key in obj) {\n result[key] = obj[key];\n }\n });\n return /** @type {T} */ (result);\n}\n\n/* Stream merging */\n\n/**\n * @typedef Event\n * @property {'start'|'stop'} event\n * @property {number} offset\n * @property {Node} node\n */\n\n/**\n * @param {Node} node\n */\nfunction tag(node) {\n return node.nodeName.toLowerCase();\n}\n\n/**\n * @param {Node} node\n */\nfunction nodeStream(node) {\n /** @type Event[] */\n var result = [];\n (function _nodeStream(node, offset) {\n for (var child = node.firstChild; child; child = child.nextSibling) {\n if (child.nodeType === 3) {\n offset += child.nodeValue.length;\n } else if (child.nodeType === 1) {\n result.push({\n event: 'start',\n offset: offset,\n node: child\n });\n offset = _nodeStream(child, offset);\n // Prevent void elements from having an end tag that would actually\n // double them in the output. There are more void elements in HTML\n // but we list only those realistically expected in code display.\n if (!tag(child).match(/br|hr|img|input/)) {\n result.push({\n event: 'stop',\n offset: offset,\n node: child\n });\n }\n }\n }\n return offset;\n })(node, 0);\n return result;\n}\n\n/**\n * @param {any} original - the original stream\n * @param {any} highlighted - stream of the highlighted source\n * @param {string} value - the original source itself\n */\nfunction mergeStreams(original, highlighted, value) {\n var processed = 0;\n var result = '';\n var nodeStack = [];\n\n function selectStream() {\n if (!original.length || !highlighted.length) {\n return original.length ? original : highlighted;\n }\n if (original[0].offset !== highlighted[0].offset) {\n return (original[0].offset < highlighted[0].offset) ? original : highlighted;\n }\n\n /*\n To avoid starting the stream just before it should stop the order is\n ensured that original always starts first and closes last:\n\n if (event1 == 'start' && event2 == 'start')\n return original;\n if (event1 == 'start' && event2 == 'stop')\n return highlighted;\n if (event1 == 'stop' && event2 == 'start')\n return original;\n if (event1 == 'stop' && event2 == 'stop')\n return highlighted;\n\n ... which is collapsed to:\n */\n return highlighted[0].event === 'start' ? original : highlighted;\n }\n\n /**\n * @param {Node} node\n */\n function open(node) {\n /** @param {Attr} attr */\n function attr_str(attr) {\n return ' ' + attr.nodeName + '=\"' + escapeHTML(attr.value) + '\"';\n }\n // @ts-ignore\n result += '<' + tag(node) + [].map.call(node.attributes, attr_str).join('') + '>';\n }\n\n /**\n * @param {Node} node\n */\n function close(node) {\n result += '';\n }\n\n /**\n * @param {Event} event\n */\n function render(event) {\n (event.event === 'start' ? open : close)(event.node);\n }\n\n while (original.length || highlighted.length) {\n var stream = selectStream();\n result += escapeHTML(value.substring(processed, stream[0].offset));\n processed = stream[0].offset;\n if (stream === original) {\n /*\n On any opening or closing tag of the original markup we first close\n the entire highlighted node stack, then render the original tag along\n with all the following original tags at the same offset and then\n reopen all the tags on the highlighted stack.\n */\n nodeStack.reverse().forEach(close);\n do {\n render(stream.splice(0, 1)[0]);\n stream = selectStream();\n } while (stream === original && stream.length && stream[0].offset === processed);\n nodeStack.reverse().forEach(open);\n } else {\n if (stream[0].event === 'start') {\n nodeStack.push(stream[0].node);\n } else {\n nodeStack.pop();\n }\n render(stream.splice(0, 1)[0]);\n }\n }\n return result + escapeHTML(value.substr(processed));\n}\n\nvar utils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n escapeHTML: escapeHTML,\n inherit: inherit,\n nodeStream: nodeStream,\n mergeStreams: mergeStreams\n});\n\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */\n\n/** @typedef {{kind?: string, sublanguage?: boolean}} Node */\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\n/** */\n\nconst SPAN_CLOSE = '';\n\n/**\n * Determines if a node needs to be wrapped in \n *\n * @param {Node} node */\nconst emitsWrappingTags = (node) => {\n return !!node.kind;\n};\n\n/** @type {Renderer} */\nclass HTMLRenderer {\n /**\n * Creates a new HTMLRenderer\n *\n * @param {Tree} parseTree - the parse tree (must support `walk` API)\n * @param {{classPrefix: string}} options\n */\n constructor(parseTree, options) {\n this.buffer = \"\";\n this.classPrefix = options.classPrefix;\n parseTree.walk(this);\n }\n\n /**\n * Adds texts to the output stream\n *\n * @param {string} text */\n addText(text) {\n this.buffer += escapeHTML(text);\n }\n\n /**\n * Adds a node open to the output stream (if needed)\n *\n * @param {Node} node */\n openNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n let className = node.kind;\n if (!node.sublanguage) {\n className = `${this.classPrefix}${className}`;\n }\n this.span(className);\n }\n\n /**\n * Adds a node close to the output stream (if needed)\n *\n * @param {Node} node */\n closeNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n this.buffer += SPAN_CLOSE;\n }\n\n /**\n * returns the accumulated buffer\n */\n value() {\n return this.buffer;\n }\n\n // helpers\n\n /**\n * Builds a span element\n *\n * @param {string} className */\n span(className) {\n this.buffer += ``;\n }\n}\n\n/** @typedef {{kind?: string, sublanguage?: boolean, children: Node[]} | string} Node */\n/** @typedef {{kind?: string, sublanguage?: boolean, children: Node[]} } DataNode */\n/** */\n\nclass TokenTree {\n constructor() {\n /** @type DataNode */\n this.rootNode = { children: [] };\n this.stack = [this.rootNode];\n }\n\n get top() {\n return this.stack[this.stack.length - 1];\n }\n\n get root() { return this.rootNode; }\n\n /** @param {Node} node */\n add(node) {\n this.top.children.push(node);\n }\n\n /** @param {string} kind */\n openNode(kind) {\n /** @type Node */\n const node = { kind, children: [] };\n this.add(node);\n this.stack.push(node);\n }\n\n closeNode() {\n if (this.stack.length > 1) {\n return this.stack.pop();\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n\n closeAllNodes() {\n while (this.closeNode());\n }\n\n toJSON() {\n return JSON.stringify(this.rootNode, null, 4);\n }\n\n /**\n * @typedef { import(\"./html_renderer\").Renderer } Renderer\n * @param {Renderer} builder\n */\n walk(builder) {\n // this does not\n return this.constructor._walk(builder, this.rootNode);\n // this works\n // return TokenTree._walk(builder, this.rootNode);\n }\n\n /**\n * @param {Renderer} builder\n * @param {Node} node\n */\n static _walk(builder, node) {\n if (typeof node === \"string\") {\n builder.addText(node);\n } else if (node.children) {\n builder.openNode(node);\n node.children.forEach((child) => this._walk(builder, child));\n builder.closeNode(node);\n }\n return builder;\n }\n\n /**\n * @param {Node} node\n */\n static _collapse(node) {\n if (typeof node === \"string\") return;\n if (!node.children) return;\n\n if (node.children.every(el => typeof el === \"string\")) {\n // node.text = node.children.join(\"\");\n // delete node.children;\n node.children = [node.children.join(\"\")];\n } else {\n node.children.forEach((child) => {\n TokenTree._collapse(child);\n });\n }\n }\n}\n\n/**\n Currently this is all private API, but this is the minimal API necessary\n that an Emitter must implement to fully support the parser.\n\n Minimal interface:\n\n - addKeyword(text, kind)\n - addText(text)\n - addSublanguage(emitter, subLanguageName)\n - finalize()\n - openNode(kind)\n - closeNode()\n - closeAllNodes()\n - toHTML()\n\n*/\n\n/**\n * @implements {Emitter}\n */\nclass TokenTreeEmitter extends TokenTree {\n /**\n * @param {*} options\n */\n constructor(options) {\n super();\n this.options = options;\n }\n\n /**\n * @param {string} text\n * @param {string} kind\n */\n addKeyword(text, kind) {\n if (text === \"\") { return; }\n\n this.openNode(kind);\n this.addText(text);\n this.closeNode();\n }\n\n /**\n * @param {string} text\n */\n addText(text) {\n if (text === \"\") { return; }\n\n this.add(text);\n }\n\n /**\n * @param {Emitter & {root: DataNode}} emitter\n * @param {string} name\n */\n addSublanguage(emitter, name) {\n /** @type DataNode */\n const node = emitter.root;\n node.kind = name;\n node.sublanguage = true;\n this.add(node);\n }\n\n toHTML() {\n const renderer = new HTMLRenderer(this, this.options);\n return renderer.value();\n }\n\n finalize() {\n return true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\nfunction escape(value) {\n return new RegExp(value.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'm');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * @param {RegExp} re\n * @returns {number}\n */\nfunction countMatchGroups(re) {\n return (new RegExp(re.toString() + '|')).exec('').length - 1;\n}\n\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */\nfunction startsWith(re, lexeme) {\n var match = re && re.exec(lexeme);\n return match && match.index === 0;\n}\n\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {string} separator\n * @returns {string}\n */\nfunction join(regexps, separator = \"|\") {\n // backreferenceRe matches an open parenthesis or backreference. To avoid\n // an incorrect parse, it additionally matches the following:\n // - [...] elements, where the meaning of parentheses and escapes change\n // - other escape sequences, so we do not misparse escape sequences as\n // interesting elements\n // - non-matching or lookahead parentheses, which do not capture. These\n // follow the '(' with a '?'.\n var backreferenceRe = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n var numCaptures = 0;\n var ret = '';\n for (var i = 0; i < regexps.length; i++) {\n numCaptures += 1;\n var offset = numCaptures;\n var re = source(regexps[i]);\n if (i > 0) {\n ret += separator;\n }\n ret += \"(\";\n while (re.length > 0) {\n var match = backreferenceRe.exec(re);\n if (match == null) {\n ret += re;\n break;\n }\n ret += re.substring(0, match.index);\n re = re.substring(match.index + match[0].length);\n if (match[0][0] === '\\\\' && match[1]) {\n // Adjust the backreference.\n ret += '\\\\' + String(Number(match[1]) + offset);\n } else {\n ret += match[0];\n if (match[0] === '(') {\n numCaptures++;\n }\n }\n }\n ret += \")\";\n }\n return ret;\n}\n\n// Common regexps\nconst IDENT_RE = '[a-zA-Z]\\\\w*';\nconst UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\nconst NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\nconst C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\nconst BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\nconst RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n/**\n* @param { Partial & {binary?: string | RegExp} } opts\n*/\nconst SHEBANG = (opts = {}) => {\n const beginShebang = /^#![ ]*\\//;\n if (opts.binary) {\n opts.begin = concat(\n beginShebang,\n /.*\\b/,\n opts.binary,\n /\\b.*/);\n }\n return inherit({\n className: 'meta',\n begin: beginShebang,\n end: /$/,\n relevance: 0,\n /** @type {ModeCallback} */\n \"on:begin\": (m, resp) => {\n if (m.index !== 0) resp.ignoreMatch();\n }\n }, opts);\n};\n\n// Common modes\nconst BACKSLASH_ESCAPE = {\n begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n};\nconst APOS_STRING_MODE = {\n className: 'string',\n begin: '\\'',\n end: '\\'',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst QUOTE_STRING_MODE = {\n className: 'string',\n begin: '\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst PHRASAL_WORDS_MODE = {\n begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial}\n */\nconst COMMENT = function(begin, end, modeOptions = {}) {\n var mode = inherit(\n {\n className: 'comment',\n begin,\n end,\n contains: []\n },\n modeOptions\n );\n mode.contains.push(PHRASAL_WORDS_MODE);\n mode.contains.push({\n className: 'doctag',\n begin: '(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):',\n relevance: 0\n });\n return mode;\n};\nconst C_LINE_COMMENT_MODE = COMMENT('//', '$');\nconst C_BLOCK_COMMENT_MODE = COMMENT('/\\\\*', '\\\\*/');\nconst HASH_COMMENT_MODE = COMMENT('#', '$');\nconst NUMBER_MODE = {\n className: 'number',\n begin: NUMBER_RE,\n relevance: 0\n};\nconst C_NUMBER_MODE = {\n className: 'number',\n begin: C_NUMBER_RE,\n relevance: 0\n};\nconst BINARY_NUMBER_MODE = {\n className: 'number',\n begin: BINARY_NUMBER_RE,\n relevance: 0\n};\nconst CSS_NUMBER_MODE = {\n className: 'number',\n begin: NUMBER_RE + '(' +\n '%|em|ex|ch|rem' +\n '|vw|vh|vmin|vmax' +\n '|cm|mm|in|pt|pc|px' +\n '|deg|grad|rad|turn' +\n '|s|ms' +\n '|Hz|kHz' +\n '|dpi|dpcm|dppx' +\n ')?',\n relevance: 0\n};\nconst REGEXP_MODE = {\n // this outer rule makes sure we actually have a WHOLE regex and not simply\n // an expression such as:\n //\n // 3 / something\n //\n // (which will then blow up when regex's `illegal` sees the newline)\n begin: /(?=\\/[^/\\n]*\\/)/,\n contains: [{\n className: 'regexp',\n begin: /\\//,\n end: /\\/[gimuy]*/,\n illegal: /\\n/,\n contains: [\n BACKSLASH_ESCAPE,\n {\n begin: /\\[/,\n end: /\\]/,\n relevance: 0,\n contains: [BACKSLASH_ESCAPE]\n }\n ]\n }]\n};\nconst TITLE_MODE = {\n className: 'title',\n begin: IDENT_RE,\n relevance: 0\n};\nconst UNDERSCORE_TITLE_MODE = {\n className: 'title',\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0\n};\nconst METHOD_GUARD = {\n // excludes method names from keyword processing\n begin: '\\\\.\\\\s*' + UNDERSCORE_IDENT_RE,\n relevance: 0\n};\n\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial} mode\n */\nconst END_SAME_AS_BEGIN = function(mode) {\n return Object.assign(mode,\n {\n /** @type {ModeCallback} */\n 'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; },\n /** @type {ModeCallback} */\n 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }\n });\n};\n\nvar MODES = /*#__PURE__*/Object.freeze({\n __proto__: null,\n IDENT_RE: IDENT_RE,\n UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n NUMBER_RE: NUMBER_RE,\n C_NUMBER_RE: C_NUMBER_RE,\n BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n RE_STARTERS_RE: RE_STARTERS_RE,\n SHEBANG: SHEBANG,\n BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n APOS_STRING_MODE: APOS_STRING_MODE,\n QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n COMMENT: COMMENT,\n C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n NUMBER_MODE: NUMBER_MODE,\n C_NUMBER_MODE: C_NUMBER_MODE,\n BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n CSS_NUMBER_MODE: CSS_NUMBER_MODE,\n REGEXP_MODE: REGEXP_MODE,\n TITLE_MODE: TITLE_MODE,\n UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE,\n METHOD_GUARD: METHOD_GUARD,\n END_SAME_AS_BEGIN: END_SAME_AS_BEGIN\n});\n\n// keywords that should have no default relevance value\nvar COMMON_KEYWORDS = 'of and for in not or if then'.split(' ');\n\n// compilation\n\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @returns {CompiledLanguage}\n */\nfunction compileLanguage(language) {\n /**\n * Builds a regex with the case sensativility of the current language\n *\n * @param {RegExp | string} value\n * @param {boolean} [global]\n */\n function langRe(value, global) {\n return new RegExp(\n source(value),\n 'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '')\n );\n }\n\n /**\n Stores multiple regular expressions and allows you to quickly search for\n them all in a string simultaneously - returning the first match. It does\n this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n and joined by `|` - using match groups to track position. When a match is\n found checking which position in the array has content allows us to figure\n out which of the original regexes / match groups triggered the match.\n\n The match object itself (the result of `Regex.exec`) is returned but also\n enhanced by merging in any meta-data that was registered with the regex.\n This is how we keep track of which mode matched, and what type of rule\n (`illegal`, `begin`, end, etc).\n */\n class MultiRegex {\n constructor() {\n this.matchIndexes = {};\n // @ts-ignore\n this.regexes = [];\n this.matchAt = 1;\n this.position = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n opts.position = this.position++;\n // @ts-ignore\n this.matchIndexes[this.matchAt] = opts;\n this.regexes.push([opts, re]);\n this.matchAt += countMatchGroups(re) + 1;\n }\n\n compile() {\n if (this.regexes.length === 0) {\n // avoids the need to check length every time exec is called\n // @ts-ignore\n this.exec = () => null;\n }\n const terminators = this.regexes.map(el => el[1]);\n this.matcherRe = langRe(join(terminators), true);\n this.lastIndex = 0;\n }\n\n /** @param {string} s */\n exec(s) {\n this.matcherRe.lastIndex = this.lastIndex;\n const match = this.matcherRe.exec(s);\n if (!match) { return null; }\n\n // eslint-disable-next-line no-undefined\n const i = match.findIndex((el, i) => i > 0 && el !== undefined);\n // @ts-ignore\n const matchData = this.matchIndexes[i];\n // trim off any earlier non-relevant match groups (ie, the other regex\n // match groups that make up the multi-matcher)\n match.splice(0, i);\n\n return Object.assign(match, matchData);\n }\n }\n\n /*\n Created to solve the key deficiently with MultiRegex - there is no way to\n test for multiple matches at a single location. Why would we need to do\n that? In the future a more dynamic engine will allow certain matches to be\n ignored. An example: if we matched say the 3rd regex in a large group but\n decided to ignore it - we'd need to started testing again at the 4th\n regex... but MultiRegex itself gives us no real way to do that.\n\n So what this class creates MultiRegexs on the fly for whatever search\n position they are needed.\n\n NOTE: These additional MultiRegex objects are created dynamically. For most\n grammars most of the time we will never actually need anything more than the\n first MultiRegex - so this shouldn't have too much overhead.\n\n Say this is our search group, and we match regex3, but wish to ignore it.\n\n regex1 | regex2 | regex3 | regex4 | regex5 ' ie, startAt = 0\n\n What we need is a new MultiRegex that only includes the remaining\n possibilities:\n\n regex4 | regex5 ' ie, startAt = 3\n\n This class wraps all that complexity up in a simple API... `startAt` decides\n where in the array of expressions to start doing the matching. It\n auto-increments, so if a match is found at position 2, then startAt will be\n set to 3. If the end is reached startAt will return to 0.\n\n MOST of the time the parser will be setting startAt manually to 0.\n */\n class ResumableMultiRegex {\n constructor() {\n // @ts-ignore\n this.rules = [];\n // @ts-ignore\n this.multiRegexes = [];\n this.count = 0;\n\n this.lastIndex = 0;\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n getMatcher(index) {\n if (this.multiRegexes[index]) return this.multiRegexes[index];\n\n const matcher = new MultiRegex();\n this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts));\n matcher.compile();\n this.multiRegexes[index] = matcher;\n return matcher;\n }\n\n considerAll() {\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n this.rules.push([re, opts]);\n if (opts.type === \"begin\") this.count++;\n }\n\n /** @param {string} s */\n exec(s) {\n const m = this.getMatcher(this.regexIndex);\n m.lastIndex = this.lastIndex;\n const result = m.exec(s);\n if (result) {\n this.regexIndex += result.position + 1;\n if (this.regexIndex === this.count) { // wrap-around\n this.regexIndex = 0;\n }\n }\n\n // this.regexIndex = 0;\n return result;\n }\n }\n\n /**\n * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n * the content and find matches.\n *\n * @param {CompiledMode} mode\n * @returns {ResumableMultiRegex}\n */\n function buildModeRegex(mode) {\n const mm = new ResumableMultiRegex();\n\n mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: \"begin\" }));\n\n if (mode.terminator_end) {\n mm.addRule(mode.terminator_end, { type: \"end\" });\n }\n if (mode.illegal) {\n mm.addRule(mode.illegal, { type: \"illegal\" });\n }\n\n return mm;\n }\n\n // TODO: We need negative look-behind support to do this properly\n /**\n * Skip a match if it has a preceding or trailing dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\n function skipIfhasPrecedingOrTrailingDot(match, response) {\n const before = match.input[match.index - 1];\n const after = match.input[match.index + match[0].length];\n if (before === \".\" || after === \".\") {\n response.ignoreMatch();\n }\n }\n\n /** skip vs abort vs ignore\n *\n * @skip - The mode is still entered and exited normally (and contains rules apply),\n * but all content is held and added to the parent buffer rather than being\n * output when the mode ends. Mostly used with `sublanguage` to build up\n * a single large buffer than can be parsed by sublanguage.\n *\n * - The mode begin ands ends normally.\n * - Content matched is added to the parent mode buffer.\n * - The parser cursor is moved forward normally.\n *\n * @abort - A hack placeholder until we have ignore. Aborts the mode (as if it\n * never matched) but DOES NOT continue to match subsequent `contains`\n * modes. Abort is bad/suboptimal because it can result in modes\n * farther down not getting applied because an earlier rule eats the\n * content but then aborts.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is added to the mode buffer.\n * - The parser cursor is moved forward accordingly.\n *\n * @ignore - Ignores the mode (as if it never matched) and continues to match any\n * subsequent `contains` modes. Ignore isn't technically possible with\n * the current parser implementation.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is ignored.\n * - The parser cursor is not moved forward.\n */\n\n /**\n * Compiles an individual mode\n *\n * This can raise an error if the mode contains certain detectable known logic\n * issues.\n * @param {Mode} mode\n * @param {CompiledMode | null} [parent]\n * @returns {CompiledMode | never}\n */\n function compileMode(mode, parent) {\n const cmode = /** @type CompiledMode */ (mode);\n if (mode.compiled) return cmode;\n mode.compiled = true;\n\n // __beforeBegin is considered private API, internal use only\n mode.__beforeBegin = null;\n\n mode.keywords = mode.keywords || mode.beginKeywords;\n\n let kw_pattern = null;\n if (typeof mode.keywords === \"object\") {\n kw_pattern = mode.keywords.$pattern;\n delete mode.keywords.$pattern;\n }\n\n if (mode.keywords) {\n mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n }\n\n // both are not allowed\n if (mode.lexemes && kw_pattern) {\n throw new Error(\"ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) \");\n }\n\n // `mode.lexemes` was the old standard before we added and now recommend\n // using `keywords.$pattern` to pass the keyword pattern\n cmode.keywordPatternRe = langRe(mode.lexemes || kw_pattern || /\\w+/, true);\n\n if (parent) {\n if (mode.beginKeywords) {\n // for languages with keywords that include non-word characters checking for\n // a word boundary is not sufficient, so instead we check for a word boundary\n // or whitespace - this does no harm in any case since our keyword engine\n // doesn't allow spaces in keywords anyways and we still check for the boundary\n // first\n mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?=\\\\b|\\\\s)';\n mode.__beforeBegin = skipIfhasPrecedingOrTrailingDot;\n }\n if (!mode.begin) mode.begin = /\\B|\\b/;\n cmode.beginRe = langRe(mode.begin);\n if (mode.endSameAsBegin) mode.end = mode.begin;\n if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n if (mode.end) cmode.endRe = langRe(mode.end);\n cmode.terminator_end = source(mode.end) || '';\n if (mode.endsWithParent && parent.terminator_end) {\n cmode.terminator_end += (mode.end ? '|' : '') + parent.terminator_end;\n }\n }\n if (mode.illegal) cmode.illegalRe = langRe(mode.illegal);\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 1;\n if (!mode.contains) mode.contains = [];\n\n mode.contains = [].concat(...mode.contains.map(function(c) {\n return expand_or_clone_mode(c === 'self' ? mode : c);\n }));\n mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); });\n\n if (mode.starts) {\n compileMode(mode.starts, parent);\n }\n\n cmode.matcher = buildModeRegex(cmode);\n return cmode;\n }\n\n // self is not valid at the top-level\n if (language.contains && language.contains.includes('self')) {\n throw new Error(\"ERR: contains `self` is not supported at the top-level of a language. See documentation.\");\n }\n return compileMode(/** @type Mode */ (language));\n}\n\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */\nfunction dependencyOnParent(mode) {\n if (!mode) return false;\n\n return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */\nfunction expand_or_clone_mode(mode) {\n if (mode.variants && !mode.cached_variants) {\n mode.cached_variants = mode.variants.map(function(variant) {\n return inherit(mode, { variants: null }, variant);\n });\n }\n\n // EXPAND\n // if we have variants then essentially \"replace\" the mode with the variants\n // this happens in compileMode, where this function is called from\n if (mode.cached_variants) {\n return mode.cached_variants;\n }\n\n // CLONE\n // if we have dependencies on parents then we need a unique\n // instance of ourselves, so we can be reused with many\n // different parents without issue\n if (dependencyOnParent(mode)) {\n return inherit(mode, { starts: mode.starts ? inherit(mode.starts) : null });\n }\n\n if (Object.isFrozen(mode)) {\n return inherit(mode);\n }\n\n // no special dependency issues, just return ourselves\n return mode;\n}\n\n/***********************************************\n Keywords\n***********************************************/\n\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record} rawKeywords\n * @param {boolean} case_insensitive\n */\nfunction compileKeywords(rawKeywords, case_insensitive) {\n /** @type KeywordDict */\n var compiled_keywords = {};\n\n if (typeof rawKeywords === 'string') { // string\n splitAndCompile('keyword', rawKeywords);\n } else {\n Object.keys(rawKeywords).forEach(function(className) {\n splitAndCompile(className, rawKeywords[className]);\n });\n }\n return compiled_keywords;\n\n // ---\n\n /**\n * Compiles an individual list of keywords\n *\n * Ex: \"for if when while|5\"\n *\n * @param {string} className\n * @param {string} keywordList\n */\n function splitAndCompile(className, keywordList) {\n if (case_insensitive) {\n keywordList = keywordList.toLowerCase();\n }\n keywordList.split(' ').forEach(function(keyword) {\n var pair = keyword.split('|');\n compiled_keywords[pair[0]] = [className, scoreForKeyword(pair[0], pair[1])];\n });\n }\n}\n\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */\nfunction scoreForKeyword(keyword, providedScore) {\n // manual scores always win over common keywords\n // so you can force a score of 1 if you really insist\n if (providedScore) {\n return Number(providedScore);\n }\n\n return commonKeyword(keyword) ? 0 : 1;\n}\n\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */\nfunction commonKeyword(keyword) {\n return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n\nvar version = \"10.1.2\";\n\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\nconst escape$1 = escapeHTML;\nconst inherit$1 = inherit;\n\nconst { nodeStream: nodeStream$1, mergeStreams: mergeStreams$1 } = utils;\nconst NO_MATCH = Symbol(\"nomatch\");\n\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */\nconst HLJS = function(hljs) {\n // Convenience variables for build-in objects\n /** @type {unknown[]} */\n var ArrayProto = [];\n\n // Global internal variables used within the highlight.js library.\n /** @type {Record} */\n var languages = Object.create(null);\n /** @type {Record} */\n var aliases = Object.create(null);\n /** @type {HLJSPlugin[]} */\n var plugins = [];\n\n // safe/production mode - swallows more errors, tries to keep running\n // even if a single syntax or parse hits a fatal error\n var SAFE_MODE = true;\n var fixMarkupRe = /(^(<[^>]+>|\\t|)+|\\n)/gm;\n var LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n /** @type {Language} */\n const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] };\n\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n /** @type HLJSOptions */\n var options = {\n noHighlightRe: /^(no-?highlight)$/i,\n languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n classPrefix: 'hljs-',\n tabReplace: null,\n useBR: false,\n languages: null,\n // beta configuration options, subject to change, welcome to discuss\n // https://github.com/highlightjs/highlight.js/issues/1086\n __emitter: TokenTreeEmitter\n };\n\n /* Utility functions */\n\n /**\n * Tests a language name to see if highlighting should be skipped\n * @param {string} languageName\n */\n function shouldNotHighlight(languageName) {\n return options.noHighlightRe.test(languageName);\n }\n\n /**\n * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n */\n function blockLanguage(block) {\n var classes = block.className + ' ';\n\n classes += block.parentNode ? block.parentNode.className : '';\n\n // language-* takes precedence over non-prefixed class names.\n const match = options.languageDetectRe.exec(classes);\n if (match) {\n var language = getLanguage(match[1]);\n if (!language) {\n console.warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n console.warn(\"Falling back to no-highlight mode for this block.\", block);\n }\n return language ? match[1] : 'no-highlight';\n }\n\n return classes\n .split(/\\s+/)\n .find((_class) => shouldNotHighlight(_class) || getLanguage(_class));\n }\n\n /**\n * Core highlighting function.\n *\n * @param {string} languageName - the language to use for highlighting\n * @param {string} code - the code to highlight\n * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n * @param {Mode} [continuation] - current continuation mode, if any\n *\n * @returns {HighlightResult} Result - an object that represents the result\n * @property {string} language - the language name\n * @property {number} relevance - the relevance score\n * @property {string} value - the highlighted HTML code\n * @property {string} code - the original raw code\n * @property {Mode} top - top of the current mode stack\n * @property {boolean} illegal - indicates whether any illegal matches were found\n */\n function highlight(languageName, code, ignoreIllegals, continuation) {\n /** @type {{ code: string, language: string, result?: any }} */\n var context = {\n code,\n language: languageName\n };\n // the plugin can change the desired language or the code to be highlighted\n // just be changing the object it was passed\n fire(\"before:highlight\", context);\n\n // a before plugin can usurp the result completely by providing it's own\n // in which case we don't even need to call highlight\n var result = context.result ?\n context.result :\n _highlight(context.language, context.code, ignoreIllegals, continuation);\n\n result.code = context.code;\n // the plugin can change anything in result to suite it\n fire(\"after:highlight\", result);\n\n return result;\n }\n\n /**\n * private highlight that's used internally and does not fire callbacks\n *\n * @param {string} languageName - the language to use for highlighting\n * @param {string} code - the code to highlight\n * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n * @param {Mode} [continuation] - current continuation mode, if any\n */\n function _highlight(languageName, code, ignoreIllegals, continuation) {\n var codeToHighlight = code;\n\n /**\n * Return keyword data if a match is a keyword\n * @param {CompiledMode} mode - current mode\n * @param {RegExpMatchArray} match - regexp match data\n * @returns {KeywordData | false}\n */\n function keywordData(mode, match) {\n var matchText = language.case_insensitive ? match[0].toLowerCase() : match[0];\n return Object.prototype.hasOwnProperty.call(mode.keywords, matchText) && mode.keywords[matchText];\n }\n\n function processKeywords() {\n if (!top.keywords) {\n emitter.addText(mode_buffer);\n return;\n }\n\n let last_index = 0;\n top.keywordPatternRe.lastIndex = 0;\n let match = top.keywordPatternRe.exec(mode_buffer);\n let buf = \"\";\n\n while (match) {\n buf += mode_buffer.substring(last_index, match.index);\n const data = keywordData(top, match);\n if (data) {\n const [kind, keywordRelevance] = data;\n emitter.addText(buf);\n buf = \"\";\n\n relevance += keywordRelevance;\n emitter.addKeyword(match[0], kind);\n } else {\n buf += match[0];\n }\n last_index = top.keywordPatternRe.lastIndex;\n match = top.keywordPatternRe.exec(mode_buffer);\n }\n buf += mode_buffer.substr(last_index);\n emitter.addText(buf);\n }\n\n function processSubLanguage() {\n if (mode_buffer === \"\") return;\n /** @type HighlightResult */\n var result = null;\n\n if (typeof top.subLanguage === 'string') {\n if (!languages[top.subLanguage]) {\n emitter.addText(mode_buffer);\n return;\n }\n result = _highlight(top.subLanguage, mode_buffer, true, continuations[top.subLanguage]);\n continuations[top.subLanguage] = result.top;\n } else {\n result = highlightAuto(mode_buffer, top.subLanguage.length ? top.subLanguage : null);\n }\n\n // Counting embedded language score towards the host language may be disabled\n // with zeroing the containing mode relevance. Use case in point is Markdown that\n // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n // score.\n if (top.relevance > 0) {\n relevance += result.relevance;\n }\n emitter.addSublanguage(result.emitter, result.language);\n }\n\n function processBuffer() {\n if (top.subLanguage != null) {\n processSubLanguage();\n } else {\n processKeywords();\n }\n mode_buffer = '';\n }\n\n /**\n * @param {Mode} mode - new mode to start\n */\n function startNewMode(mode) {\n if (mode.className) {\n emitter.openNode(mode.className);\n }\n top = Object.create(mode, { parent: { value: top } });\n return top;\n }\n\n /**\n * @param {CompiledMode } mode - the mode to potentially end\n * @param {RegExpMatchArray} match - the latest match\n * @param {string} matchPlusRemainder - match plus remainder of content\n * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n */\n function endOfMode(mode, match, matchPlusRemainder) {\n let matched = startsWith(mode.endRe, matchPlusRemainder);\n\n if (matched) {\n if (mode[\"on:end\"]) {\n const resp = new Response(mode);\n mode[\"on:end\"](match, resp);\n if (resp.ignore) matched = false;\n }\n\n if (matched) {\n while (mode.endsParent && mode.parent) {\n mode = mode.parent;\n }\n return mode;\n }\n }\n // even if on:end fires an `ignore` it's still possible\n // that we might trigger the end node because of a parent mode\n if (mode.endsWithParent) {\n return endOfMode(mode.parent, match, matchPlusRemainder);\n }\n }\n\n /**\n * Handle matching but then ignoring a sequence of text\n *\n * @param {string} lexeme - string containing full match text\n */\n function doIgnore(lexeme) {\n if (top.matcher.regexIndex === 0) {\n // no more regexs to potentially match here, so we move the cursor forward one\n // space\n mode_buffer += lexeme[0];\n return 1;\n } else {\n // no need to move the cursor, we still have additional regexes to try and\n // match at this very spot\n continueScanAtSamePosition = true;\n return 0;\n }\n }\n\n /**\n * Handle the start of a new potential mode match\n *\n * @param {EnhancedMatch} match - the current match\n * @returns {number} how far to advance the parse cursor\n */\n function doBeginMatch(match) {\n var lexeme = match[0];\n var new_mode = match.rule;\n\n const resp = new Response(new_mode);\n // first internal before callbacks, then the public ones\n const beforeCallbacks = [new_mode.__beforeBegin, new_mode[\"on:begin\"]];\n for (const cb of beforeCallbacks) {\n if (!cb) continue;\n cb(match, resp);\n if (resp.ignore) return doIgnore(lexeme);\n }\n\n if (new_mode && new_mode.endSameAsBegin) {\n new_mode.endRe = escape(lexeme);\n }\n\n if (new_mode.skip) {\n mode_buffer += lexeme;\n } else {\n if (new_mode.excludeBegin) {\n mode_buffer += lexeme;\n }\n processBuffer();\n if (!new_mode.returnBegin && !new_mode.excludeBegin) {\n mode_buffer = lexeme;\n }\n }\n startNewMode(new_mode);\n // if (mode[\"after:begin\"]) {\n // let resp = new Response(mode);\n // mode[\"after:begin\"](match, resp);\n // }\n return new_mode.returnBegin ? 0 : lexeme.length;\n }\n\n /**\n * Handle the potential end of mode\n *\n * @param {RegExpMatchArray} match - the current match\n */\n function doEndMatch(match) {\n var lexeme = match[0];\n var matchPlusRemainder = codeToHighlight.substr(match.index);\n\n var end_mode = endOfMode(top, match, matchPlusRemainder);\n if (!end_mode) { return NO_MATCH; }\n\n var origin = top;\n if (origin.skip) {\n mode_buffer += lexeme;\n } else {\n if (!(origin.returnEnd || origin.excludeEnd)) {\n mode_buffer += lexeme;\n }\n processBuffer();\n if (origin.excludeEnd) {\n mode_buffer = lexeme;\n }\n }\n do {\n if (top.className) {\n emitter.closeNode();\n }\n if (!top.skip && !top.subLanguage) {\n relevance += top.relevance;\n }\n top = top.parent;\n } while (top !== end_mode.parent);\n if (end_mode.starts) {\n if (end_mode.endSameAsBegin) {\n end_mode.starts.endRe = end_mode.endRe;\n }\n startNewMode(end_mode.starts);\n }\n return origin.returnEnd ? 0 : lexeme.length;\n }\n\n function processContinuations() {\n var list = [];\n for (var current = top; current !== language; current = current.parent) {\n if (current.className) {\n list.unshift(current.className);\n }\n }\n list.forEach(item => emitter.openNode(item));\n }\n\n /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */\n var lastMatch = {};\n\n /**\n * Process an individual match\n *\n * @param {string} textBeforeMatch - text preceeding the match (since the last match)\n * @param {EnhancedMatch} [match] - the match itself\n */\n function processLexeme(textBeforeMatch, match) {\n var lexeme = match && match[0];\n\n // add non-matched text to the current mode buffer\n mode_buffer += textBeforeMatch;\n\n if (lexeme == null) {\n processBuffer();\n return 0;\n }\n\n // we've found a 0 width match and we're stuck, so we need to advance\n // this happens when we have badly behaved rules that have optional matchers to the degree that\n // sometimes they can end up matching nothing at all\n // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n // spit the \"skipped\" character that our regex choked on back into the output sequence\n mode_buffer += codeToHighlight.slice(match.index, match.index + 1);\n if (!SAFE_MODE) {\n /** @type {AnnotatedError} */\n const err = new Error('0 width match regex');\n err.languageName = languageName;\n err.badRule = lastMatch.rule;\n throw err;\n }\n return 1;\n }\n lastMatch = match;\n\n if (match.type === \"begin\") {\n return doBeginMatch(match);\n } else if (match.type === \"illegal\" && !ignoreIllegals) {\n // illegal match, we do not continue processing\n /** @type {AnnotatedError} */\n const err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.className || '') + '\"');\n err.mode = top;\n throw err;\n } else if (match.type === \"end\") {\n var processed = doEndMatch(match);\n if (processed !== NO_MATCH) {\n return processed;\n }\n }\n\n // edge case for when illegal matches $ (end of line) which is technically\n // a 0 width match but not a begin/end match so it's not caught by the\n // first handler (when ignoreIllegals is true)\n if (match.type === \"illegal\" && lexeme === \"\") {\n // advance so we aren't stuck in an infinite loop\n return 1;\n }\n\n // infinite loops are BAD, this is a last ditch catch all. if we have a\n // decent number of iterations yet our index (cursor position in our\n // parsing) still 3x behind our index then something is very wrong\n // so we bail\n if (iterations > 100000 && iterations > match.index * 3) {\n const err = new Error('potential infinite loop, way more iterations than matches');\n throw err;\n }\n\n /*\n Why might be find ourselves here? Only one occasion now. An end match that was\n triggered but could not be completed. When might this happen? When an `endSameasBegin`\n rule sets the end rule to a specific match. Since the overall mode termination rule that's\n being used to scan the text isn't recompiled that means that any match that LOOKS like\n the end (but is not, because it is not an exact match to the beginning) will\n end up here. A definite end match, but when `doEndMatch` tries to \"reapply\"\n the end rule and fails to match, we wind up here, and just silently ignore the end.\n\n This causes no real harm other than stopping a few times too many.\n */\n\n mode_buffer += lexeme;\n return lexeme.length;\n }\n\n var language = getLanguage(languageName);\n if (!language) {\n console.error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n throw new Error('Unknown language: \"' + languageName + '\"');\n }\n\n var md = compileLanguage(language);\n var result = '';\n /** @type {CompiledMode} */\n var top = continuation || md;\n /** @type Record */\n var continuations = {}; // keep continuations for sub-languages\n var emitter = new options.__emitter(options);\n processContinuations();\n var mode_buffer = '';\n var relevance = 0;\n var index = 0;\n var iterations = 0;\n var continueScanAtSamePosition = false;\n\n try {\n top.matcher.considerAll();\n\n for (;;) {\n iterations++;\n if (continueScanAtSamePosition) {\n // only regexes not matched previously will now be\n // considered for a potential match\n continueScanAtSamePosition = false;\n } else {\n top.matcher.lastIndex = index;\n top.matcher.considerAll();\n }\n const match = top.matcher.exec(codeToHighlight);\n // console.log(\"match\", match[0], match.rule && match.rule.begin)\n if (!match) break;\n\n const beforeMatch = codeToHighlight.substring(index, match.index);\n const processedCount = processLexeme(beforeMatch, match);\n index = match.index + processedCount;\n }\n processLexeme(codeToHighlight.substr(index));\n emitter.closeAllNodes();\n emitter.finalize();\n result = emitter.toHTML();\n\n return {\n relevance: relevance,\n value: result,\n language: languageName,\n illegal: false,\n emitter: emitter,\n top: top\n };\n } catch (err) {\n if (err.message && err.message.includes('Illegal')) {\n return {\n illegal: true,\n illegalBy: {\n msg: err.message,\n context: codeToHighlight.slice(index - 100, index + 100),\n mode: err.mode\n },\n sofar: result,\n relevance: 0,\n value: escape$1(codeToHighlight),\n emitter: emitter\n };\n } else if (SAFE_MODE) {\n return {\n illegal: false,\n relevance: 0,\n value: escape$1(codeToHighlight),\n emitter: emitter,\n language: languageName,\n top: top,\n errorRaised: err\n };\n } else {\n throw err;\n }\n }\n }\n\n /**\n * returns a valid highlight result, without actually doing any actual work,\n * auto highlight starts with this and it's possible for small snippets that\n * auto-detection may not find a better match\n * @param {string} code\n * @returns {HighlightResult}\n */\n function justTextHighlightResult(code) {\n const result = {\n relevance: 0,\n emitter: new options.__emitter(options),\n value: escape$1(code),\n illegal: false,\n top: PLAINTEXT_LANGUAGE\n };\n result.emitter.addText(code);\n return result;\n }\n\n /**\n Highlighting with language detection. Accepts a string with the code to\n highlight. Returns an object with the following properties:\n\n - language (detected language)\n - relevance (int)\n - value (an HTML string with highlighting markup)\n - second_best (object with the same structure for second-best heuristically\n detected language, may be absent)\n\n @param {string} code\n @param {Array} [languageSubset]\n @returns {AutoHighlightResult}\n */\n function highlightAuto(code, languageSubset) {\n languageSubset = languageSubset || options.languages || Object.keys(languages);\n var result = justTextHighlightResult(code);\n var secondBest = result;\n languageSubset.filter(getLanguage).filter(autoDetection).forEach(function(name) {\n var current = _highlight(name, code, false);\n current.language = name;\n if (current.relevance > secondBest.relevance) {\n secondBest = current;\n }\n if (current.relevance > result.relevance) {\n secondBest = result;\n result = current;\n }\n });\n if (secondBest.language) {\n // second_best (with underscore) is the expected API\n result.second_best = secondBest;\n }\n return result;\n }\n\n /**\n Post-processing of the highlighted markup:\n\n - replace TABs with something more useful\n - replace real line-breaks with '
    ' for non-pre containers\n\n @param {string} html\n @returns {string}\n */\n function fixMarkup(html) {\n if (!(options.tabReplace || options.useBR)) {\n return html;\n }\n\n return html.replace(fixMarkupRe, match => {\n if (match === '\\n') {\n return options.useBR ? '
    ' : match;\n } else if (options.tabReplace) {\n return match.replace(/\\t/g, options.tabReplace);\n }\n return match;\n });\n }\n\n /**\n * Builds new class name for block given the language name\n *\n * @param {string} prevClassName\n * @param {string} [currentLang]\n * @param {string} [resultLang]\n */\n function buildClassName(prevClassName, currentLang, resultLang) {\n var language = currentLang ? aliases[currentLang] : resultLang;\n var result = [prevClassName.trim()];\n\n if (!prevClassName.match(/\\bhljs\\b/)) {\n result.push('hljs');\n }\n\n if (!prevClassName.includes(language)) {\n result.push(language);\n }\n\n return result.join(' ').trim();\n }\n\n /**\n * Applies highlighting to a DOM node containing code. Accepts a DOM node and\n * two optional parameters for fixMarkup.\n *\n * @param {HighlightedHTMLElement} element - the HTML element to highlight\n */\n function highlightBlock(element) {\n /** @type HTMLElement */\n let node = null;\n const language = blockLanguage(element);\n\n if (shouldNotHighlight(language)) return;\n\n fire(\"before:highlightBlock\",\n { block: element, language: language });\n\n if (options.useBR) {\n node = document.createElement('div');\n node.innerHTML = element.innerHTML.replace(/\\n/g, '').replace(//g, '\\n');\n } else {\n node = element;\n }\n const text = node.textContent;\n const result = language ? highlight(language, text, true) : highlightAuto(text);\n\n const originalStream = nodeStream$1(node);\n if (originalStream.length) {\n const resultNode = document.createElement('div');\n resultNode.innerHTML = result.value;\n result.value = mergeStreams$1(originalStream, nodeStream$1(resultNode), text);\n }\n result.value = fixMarkup(result.value);\n\n fire(\"after:highlightBlock\", { block: element, result: result });\n\n element.innerHTML = result.value;\n element.className = buildClassName(element.className, language, result.language);\n element.result = {\n language: result.language,\n // TODO: remove with version 11.0\n re: result.relevance,\n relavance: result.relevance\n };\n if (result.second_best) {\n element.second_best = {\n language: result.second_best.language,\n // TODO: remove with version 11.0\n re: result.second_best.relevance,\n relavance: result.second_best.relevance\n };\n }\n }\n\n /**\n * Updates highlight.js global options with the passed options\n *\n * @param {{}} userOptions\n */\n function configure(userOptions) {\n options = inherit$1(options, userOptions);\n }\n\n /**\n * Highlights to all
     blocks on a page\n   *\n   * @type {Function & {called?: boolean}}\n   */\n  const initHighlighting = () => {\n    if (initHighlighting.called) return;\n    initHighlighting.called = true;\n\n    var blocks = document.querySelectorAll('pre code');\n    ArrayProto.forEach.call(blocks, highlightBlock);\n  };\n\n  // Higlights all when DOMContentLoaded fires\n  function initHighlightingOnLoad() {\n    // @ts-ignore\n    window.addEventListener('DOMContentLoaded', initHighlighting, false);\n  }\n\n  /**\n   * Register a language grammar module\n   *\n   * @param {string} languageName\n   * @param {LanguageFn} languageDefinition\n   */\n  function registerLanguage(languageName, languageDefinition) {\n    var lang = null;\n    try {\n      lang = languageDefinition(hljs);\n    } catch (error) {\n      console.error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n      // hard or soft error\n      if (!SAFE_MODE) { throw error; } else { console.error(error); }\n      // languages that have serious errors are replaced with essentially a\n      // \"plaintext\" stand-in so that the code blocks will still get normal\n      // css classes applied to them - and one bad language won't break the\n      // entire highlighter\n      lang = PLAINTEXT_LANGUAGE;\n    }\n    // give it a temporary name if it doesn't have one in the meta-data\n    if (!lang.name) lang.name = languageName;\n    languages[languageName] = lang;\n    lang.rawDefinition = languageDefinition.bind(null, hljs);\n\n    if (lang.aliases) {\n      registerAliases(lang.aliases, { languageName });\n    }\n  }\n\n  /**\n   * @returns {string[]} List of language internal names\n   */\n  function listLanguages() {\n    return Object.keys(languages);\n  }\n\n  /**\n    intended usage: When one language truly requires another\n\n    Unlike `getLanguage`, this will throw when the requested language\n    is not available.\n\n    @param {string} name - name of the language to fetch/require\n    @returns {Language | never}\n  */\n  function requireLanguage(name) {\n    var lang = getLanguage(name);\n    if (lang) { return lang; }\n\n    var err = new Error('The \\'{}\\' language is required, but not loaded.'.replace('{}', name));\n    throw err;\n  }\n\n  /**\n   * @param {string} name - name of the language to retrieve\n   * @returns {Language | undefined}\n   */\n  function getLanguage(name) {\n    name = (name || '').toLowerCase();\n    return languages[name] || languages[aliases[name]];\n  }\n\n  /**\n   *\n   * @param {string|string[]} aliasList - single alias or list of aliases\n   * @param {{languageName: string}} opts\n   */\n  function registerAliases(aliasList, { languageName }) {\n    if (typeof aliasList === 'string') {\n      aliasList = [aliasList];\n    }\n    aliasList.forEach(alias => { aliases[alias] = languageName; });\n  }\n\n  /**\n   * Determines if a given language has auto-detection enabled\n   * @param {string} name - name of the language\n   */\n  function autoDetection(name) {\n    var lang = getLanguage(name);\n    return lang && !lang.disableAutodetect;\n  }\n\n  /**\n   * @param {HLJSPlugin} plugin\n   */\n  function addPlugin(plugin) {\n    plugins.push(plugin);\n  }\n\n  /**\n   *\n   * @param {PluginEvent} event\n   * @param {any} args\n   */\n  function fire(event, args) {\n    var cb = event;\n    plugins.forEach(function(plugin) {\n      if (plugin[cb]) {\n        plugin[cb](args);\n      }\n    });\n  }\n\n  /* Interface definition */\n\n  Object.assign(hljs, {\n    highlight,\n    highlightAuto,\n    fixMarkup,\n    highlightBlock,\n    configure,\n    initHighlighting,\n    initHighlightingOnLoad,\n    registerLanguage,\n    listLanguages,\n    getLanguage,\n    registerAliases,\n    requireLanguage,\n    autoDetection,\n    inherit: inherit$1,\n    addPlugin\n  });\n\n  hljs.debugMode = function() { SAFE_MODE = false; };\n  hljs.safeMode = function() { SAFE_MODE = true; };\n  hljs.versionString = version;\n\n  for (const key in MODES) {\n    // @ts-ignore\n    if (typeof MODES[key] === \"object\") {\n      // @ts-ignore\n      deepFreeze(MODES[key]);\n    }\n  }\n\n  // merge all the modes/regexs into our main object\n  Object.assign(hljs, MODES);\n\n  return hljs;\n};\n\n// export an \"instance\" of the highlighter\nvar highlight = HLJS({});\n\nmodule.exports = highlight;\n","const Renderer = require('./Renderer.js');\nconst Slugger = require('./Slugger.js');\nconst InlineLexer = require('./InlineLexer.js');\nconst TextRenderer = require('./TextRenderer.js');\nconst { defaults } = require('./defaults.js');\nconst {\n  merge,\n  unescape\n} = require('./helpers.js');\n\n/**\n * Parsing & Compiling\n */\nmodule.exports = class Parser {\n  constructor(options) {\n    this.tokens = [];\n    this.token = null;\n    this.options = options || defaults;\n    this.options.renderer = this.options.renderer || new Renderer();\n    this.renderer = this.options.renderer;\n    this.renderer.options = this.options;\n    this.slugger = new Slugger();\n  }\n\n  /**\n   * Static Parse Method\n   */\n  static parse(tokens, options) {\n    const parser = new Parser(options);\n    return parser.parse(tokens);\n  };\n\n  /**\n   * Parse Loop\n   */\n  parse(tokens) {\n    this.inline = new InlineLexer(tokens.links, this.options);\n    // use an InlineLexer with a TextRenderer to extract pure text\n    this.inlineText = new InlineLexer(\n      tokens.links,\n      merge({}, this.options, { renderer: new TextRenderer() })\n    );\n    this.tokens = tokens.reverse();\n\n    let out = '';\n    while (this.next()) {\n      out += this.tok();\n    }\n\n    return out;\n  };\n\n  /**\n   * Next Token\n   */\n  next() {\n    this.token = this.tokens.pop();\n    return this.token;\n  };\n\n  /**\n   * Preview Next Token\n   */\n  peek() {\n    return this.tokens[this.tokens.length - 1] || 0;\n  };\n\n  /**\n   * Parse Text Tokens\n   */\n  parseText() {\n    let body = this.token.text;\n\n    while (this.peek().type === 'text') {\n      body += '\\n' + this.next().text;\n    }\n\n    return this.inline.output(body);\n  };\n\n  /**\n   * Parse Current Token\n   */\n  tok() {\n    let body = '';\n    switch (this.token.type) {\n      case 'space': {\n        return '';\n      }\n      case 'hr': {\n        return this.renderer.hr();\n      }\n      case 'heading': {\n        return this.renderer.heading(\n          this.inline.output(this.token.text),\n          this.token.depth,\n          unescape(this.inlineText.output(this.token.text)),\n          this.slugger);\n      }\n      case 'code': {\n        return this.renderer.code(this.token.text,\n          this.token.lang,\n          this.token.escaped);\n      }\n      case 'table': {\n        let header = '',\n          i,\n          row,\n          cell,\n          j;\n\n        // header\n        cell = '';\n        for (i = 0; i < this.token.header.length; i++) {\n          cell += this.renderer.tablecell(\n            this.inline.output(this.token.header[i]),\n            { header: true, align: this.token.align[i] }\n          );\n        }\n        header += this.renderer.tablerow(cell);\n\n        for (i = 0; i < this.token.cells.length; i++) {\n          row = this.token.cells[i];\n\n          cell = '';\n          for (j = 0; j < row.length; j++) {\n            cell += this.renderer.tablecell(\n              this.inline.output(row[j]),\n              { header: false, align: this.token.align[j] }\n            );\n          }\n\n          body += this.renderer.tablerow(cell);\n        }\n        return this.renderer.table(header, body);\n      }\n      case 'blockquote_start': {\n        body = '';\n\n        while (this.next().type !== 'blockquote_end') {\n          body += this.tok();\n        }\n\n        return this.renderer.blockquote(body);\n      }\n      case 'list_start': {\n        body = '';\n        const ordered = this.token.ordered,\n          start = this.token.start;\n\n        while (this.next().type !== 'list_end') {\n          body += this.tok();\n        }\n\n        return this.renderer.list(body, ordered, start);\n      }\n      case 'list_item_start': {\n        body = '';\n        const loose = this.token.loose;\n        const checked = this.token.checked;\n        const task = this.token.task;\n\n        if (this.token.task) {\n          if (loose) {\n            if (this.peek().type === 'text') {\n              const nextToken = this.peek();\n              nextToken.text = this.renderer.checkbox(checked) + ' ' + nextToken.text;\n            } else {\n              this.tokens.push({\n                type: 'text',\n                text: this.renderer.checkbox(checked)\n              });\n            }\n          } else {\n            body += this.renderer.checkbox(checked);\n          }\n        }\n\n        while (this.next().type !== 'list_item_end') {\n          body += !loose && this.token.type === 'text'\n            ? this.parseText()\n            : this.tok();\n        }\n        return this.renderer.listitem(body, task, checked);\n      }\n      case 'html': {\n        // TODO parse inline content if parameter markdown=1\n        return this.renderer.html(this.token.text);\n      }\n      case 'paragraph': {\n        return this.renderer.paragraph(this.inline.output(this.token.text));\n      }\n      case 'text': {\n        return this.renderer.paragraph(this.parseText());\n      }\n      default: {\n        const errMsg = 'Token with \"' + this.token.type + '\" type was not found.';\n        if (this.options.silent) {\n          console.log(errMsg);\n        } else {\n          throw new Error(errMsg);\n        }\n      }\n    }\n  };\n};\n","import { PluginKey, Plugin, TextSelection } from 'prosemirror-state';\n\nvar Rebaseable = function Rebaseable(step, inverted, origin) {\n  this.step = step;\n  this.inverted = inverted;\n  this.origin = origin;\n};\n\n// : ([Rebaseable], [Step], Transform) → [Rebaseable]\n// Undo a given set of steps, apply a set of other steps, and then\n// redo them.\nfunction rebaseSteps(steps, over, transform) {\n  for (var i = steps.length - 1; i >= 0; i--) { transform.step(steps[i].inverted); }\n  for (var i$1 = 0; i$1 < over.length; i$1++) { transform.step(over[i$1]); }\n  var result = [];\n  for (var i$2 = 0, mapFrom = steps.length; i$2 < steps.length; i$2++) {\n    var mapped = steps[i$2].step.map(transform.mapping.slice(mapFrom));\n    mapFrom--;\n    if (mapped && !transform.maybeStep(mapped).failed) {\n      transform.mapping.setMirror(mapFrom, transform.steps.length - 1);\n      result.push(new Rebaseable(mapped, mapped.invert(transform.docs[transform.docs.length - 1]), steps[i$2].origin));\n    }\n  }\n  return result\n}\n\n// This state field accumulates changes that have to be sent to the\n// central authority in the collaborating group and makes it possible\n// to integrate changes made by peers into our local document. It is\n// defined by the plugin, and will be available as the `collab` field\n// in the resulting editor state.\nvar CollabState = function CollabState(version, unconfirmed) {\n  // : number\n  // The version number of the last update received from the central\n  // authority. Starts at 0 or the value of the `version` property\n  // in the option object, for the editor's value when the option\n  // was enabled.\n  this.version = version;\n\n  // : [Rebaseable]\n  // The local steps that havent been successfully sent to the\n  // server yet.\n  this.unconfirmed = unconfirmed;\n};\n\nfunction unconfirmedFrom(transform) {\n  var result = [];\n  for (var i = 0; i < transform.steps.length; i++)\n    { result.push(new Rebaseable(transform.steps[i],\n                               transform.steps[i].invert(transform.docs[i]),\n                               transform)); }\n  return result\n}\n\nvar collabKey = new PluginKey(\"collab\");\n\n// :: (?Object) → Plugin\n//\n// Creates a plugin that enables the collaborative editing framework\n// for the editor.\n//\n//   config::- An optional set of options\n//\n//     version:: ?number\n//     The starting version number of the collaborative editing.\n//     Defaults to 0.\n//\n//     clientID:: ?union\n//     This client's ID, used to distinguish its changes from those of\n//     other clients. Defaults to a random 32-bit number.\nfunction collab(config) {\n  if ( config === void 0 ) config = {};\n\n  config = {version: config.version || 0,\n            clientID: config.clientID == null ? Math.floor(Math.random() * 0xFFFFFFFF) : config.clientID};\n\n  return new Plugin({\n    key: collabKey,\n\n    state: {\n      init: function () { return new CollabState(config.version, []); },\n      apply: function apply(tr, collab) {\n        var newState = tr.getMeta(collabKey);\n        if (newState)\n          { return newState }\n        if (tr.docChanged)\n          { return new CollabState(collab.version, collab.unconfirmed.concat(unconfirmedFrom(tr))) }\n        return collab\n      }\n    },\n\n    config: config,\n    // This is used to notify the history plugin to not merge steps,\n    // so that the history can be rebased.\n    historyPreserveItems: true\n  })\n}\n\n// :: (state: EditorState, steps: [Step], clientIDs: [union], options: ?Object) → Transaction\n// Create a transaction that represents a set of new steps received from\n// the authority. Applying this transaction moves the state forward to\n// adjust to the authority's view of the document.\n//\n//   options::- Additional options.\n//\n//     mapSelectionBackward:: ?boolean\n//     When enabled (the default is `false`), if the current selection\n//     is a [text selection](#state.TextSelection), its sides are\n//     mapped with a negative bias for this transaction, so that\n//     content inserted at the cursor ends up after the cursor. Users\n//     usually prefer this, but it isn't done by default for reasons\n//     of backwards compatibility.\nfunction receiveTransaction(state, steps, clientIDs, options) {\n  // Pushes a set of steps (received from the central authority) into\n  // the editor state (which should have the collab plugin enabled).\n  // Will recognize its own changes, and confirm unconfirmed steps as\n  // appropriate. Remaining unconfirmed steps will be rebased over\n  // remote steps.\n  var collabState = collabKey.getState(state);\n  var version = collabState.version + steps.length;\n  var ourID = collabKey.get(state).spec.config.clientID;\n\n  // Find out which prefix of the steps originated with us\n  var ours = 0;\n  while (ours < clientIDs.length && clientIDs[ours] == ourID) { ++ours; }\n  var unconfirmed = collabState.unconfirmed.slice(ours);\n  steps = ours ? steps.slice(ours) : steps;\n\n  // If all steps originated with us, we're done.\n  if (!steps.length)\n    { return state.tr.setMeta(collabKey, new CollabState(version, unconfirmed)) }\n\n  var nUnconfirmed = unconfirmed.length;\n  var tr = state.tr;\n  if (nUnconfirmed) {\n    unconfirmed = rebaseSteps(unconfirmed, steps, tr);\n  } else {\n    for (var i = 0; i < steps.length; i++) { tr.step(steps[i]); }\n    unconfirmed = [];\n  }\n\n  var newCollabState = new CollabState(version, unconfirmed);\n  if (options && options.mapSelectionBackward && state.selection instanceof TextSelection) {\n    tr.setSelection(TextSelection.between(tr.doc.resolve(tr.mapping.map(state.selection.anchor, -1)),\n                                          tr.doc.resolve(tr.mapping.map(state.selection.head, -1)), -1));\n    tr.updated &= ~1;\n  }\n  return tr.setMeta(\"rebased\", nUnconfirmed).setMeta(\"addToHistory\", false).setMeta(collabKey, newCollabState)\n}\n\n// :: (state: EditorState) → ?{version: number, steps: [Step], clientID: union, origins: [Transaction]}\n// Provides data describing the editor's unconfirmed steps, which need\n// to be sent to the central authority. Returns null when there is\n// nothing to send.\n//\n// `origins` holds the _original_ transactions that produced each\n// steps. This can be useful for looking up time stamps and other\n// metadata for the steps, but note that the steps may have been\n// rebased, whereas the origin transactions are still the old,\n// unchanged objects.\nfunction sendableSteps(state) {\n  var collabState = collabKey.getState(state);\n  if (collabState.unconfirmed.length == 0) { return null }\n  return {\n    version: collabState.version,\n    steps: collabState.unconfirmed.map(function (s) { return s.step; }),\n    clientID: collabKey.get(state).spec.config.clientID,\n    get origins() { return this._origins || (this._origins = collabState.unconfirmed.map(function (s) { return s.origin; })) }\n  }\n}\n\n// :: (EditorState) → number\n// Get the version up to which the collab plugin has synced with the\n// central authority.\nfunction getVersion(state) {\n  return collabKey.getState(state).version\n}\n\nexport { collab, getVersion, rebaseSteps, receiveTransaction, sendableSteps };\n//# sourceMappingURL=index.es.js.map\n","var GOOD_LEAF_SIZE = 200;\n\n// :: class A rope sequence is a persistent sequence data structure\n// that supports appending, prepending, and slicing without doing a\n// full copy. It is represented as a mostly-balanced tree.\nvar RopeSequence = function RopeSequence () {};\n\nRopeSequence.prototype.append = function append (other) {\n  if (!other.length) { return this }\n  other = RopeSequence.from(other);\n\n  return (!this.length && other) ||\n    (other.length < GOOD_LEAF_SIZE && this.leafAppend(other)) ||\n    (this.length < GOOD_LEAF_SIZE && other.leafPrepend(this)) ||\n    this.appendInner(other)\n};\n\n// :: (union<[T], RopeSequence>) → RopeSequence\n// Prepend an array or other rope to this one, returning a new rope.\nRopeSequence.prototype.prepend = function prepend (other) {\n  if (!other.length) { return this }\n  return RopeSequence.from(other).append(this)\n};\n\nRopeSequence.prototype.appendInner = function appendInner (other) {\n  return new Append(this, other)\n};\n\n// :: (?number, ?number) → RopeSequence\n// Create a rope repesenting a sub-sequence of this rope.\nRopeSequence.prototype.slice = function slice (from, to) {\n    if ( from === void 0 ) from = 0;\n    if ( to === void 0 ) to = this.length;\n\n  if (from >= to) { return RopeSequence.empty }\n  return this.sliceInner(Math.max(0, from), Math.min(this.length, to))\n};\n\n// :: (number) → T\n// Retrieve the element at the given position from this rope.\nRopeSequence.prototype.get = function get (i) {\n  if (i < 0 || i >= this.length) { return undefined }\n  return this.getInner(i)\n};\n\n// :: ((element: T, index: number) → ?bool, ?number, ?number)\n// Call the given function for each element between the given\n// indices. This tends to be more efficient than looping over the\n// indices and calling `get`, because it doesn't have to descend the\n// tree for every element.\nRopeSequence.prototype.forEach = function forEach (f, from, to) {\n    if ( from === void 0 ) from = 0;\n    if ( to === void 0 ) to = this.length;\n\n  if (from <= to)\n    { this.forEachInner(f, from, to, 0); }\n  else\n    { this.forEachInvertedInner(f, from, to, 0); }\n};\n\n// :: ((element: T, index: number) → U, ?number, ?number) → [U]\n// Map the given functions over the elements of the rope, producing\n// a flat array.\nRopeSequence.prototype.map = function map (f, from, to) {\n    if ( from === void 0 ) from = 0;\n    if ( to === void 0 ) to = this.length;\n\n  var result = [];\n  this.forEach(function (elt, i) { return result.push(f(elt, i)); }, from, to);\n  return result\n};\n\n// :: (?union<[T], RopeSequence>) → RopeSequence\n// Create a rope representing the given array, or return the rope\n// itself if a rope was given.\nRopeSequence.from = function from (values) {\n  if (values instanceof RopeSequence) { return values }\n  return values && values.length ? new Leaf(values) : RopeSequence.empty\n};\n\nvar Leaf = /*@__PURE__*/(function (RopeSequence) {\n  function Leaf(values) {\n    RopeSequence.call(this);\n    this.values = values;\n  }\n\n  if ( RopeSequence ) Leaf.__proto__ = RopeSequence;\n  Leaf.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n  Leaf.prototype.constructor = Leaf;\n\n  var prototypeAccessors = { length: { configurable: true },depth: { configurable: true } };\n\n  Leaf.prototype.flatten = function flatten () {\n    return this.values\n  };\n\n  Leaf.prototype.sliceInner = function sliceInner (from, to) {\n    if (from == 0 && to == this.length) { return this }\n    return new Leaf(this.values.slice(from, to))\n  };\n\n  Leaf.prototype.getInner = function getInner (i) {\n    return this.values[i]\n  };\n\n  Leaf.prototype.forEachInner = function forEachInner (f, from, to, start) {\n    for (var i = from; i < to; i++)\n      { if (f(this.values[i], start + i) === false) { return false } }\n  };\n\n  Leaf.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n    for (var i = from - 1; i >= to; i--)\n      { if (f(this.values[i], start + i) === false) { return false } }\n  };\n\n  Leaf.prototype.leafAppend = function leafAppend (other) {\n    if (this.length + other.length <= GOOD_LEAF_SIZE)\n      { return new Leaf(this.values.concat(other.flatten())) }\n  };\n\n  Leaf.prototype.leafPrepend = function leafPrepend (other) {\n    if (this.length + other.length <= GOOD_LEAF_SIZE)\n      { return new Leaf(other.flatten().concat(this.values)) }\n  };\n\n  prototypeAccessors.length.get = function () { return this.values.length };\n\n  prototypeAccessors.depth.get = function () { return 0 };\n\n  Object.defineProperties( Leaf.prototype, prototypeAccessors );\n\n  return Leaf;\n}(RopeSequence));\n\n// :: RopeSequence\n// The empty rope sequence.\nRopeSequence.empty = new Leaf([]);\n\nvar Append = /*@__PURE__*/(function (RopeSequence) {\n  function Append(left, right) {\n    RopeSequence.call(this);\n    this.left = left;\n    this.right = right;\n    this.length = left.length + right.length;\n    this.depth = Math.max(left.depth, right.depth) + 1;\n  }\n\n  if ( RopeSequence ) Append.__proto__ = RopeSequence;\n  Append.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n  Append.prototype.constructor = Append;\n\n  Append.prototype.flatten = function flatten () {\n    return this.left.flatten().concat(this.right.flatten())\n  };\n\n  Append.prototype.getInner = function getInner (i) {\n    return i < this.left.length ? this.left.get(i) : this.right.get(i - this.left.length)\n  };\n\n  Append.prototype.forEachInner = function forEachInner (f, from, to, start) {\n    var leftLen = this.left.length;\n    if (from < leftLen &&\n        this.left.forEachInner(f, from, Math.min(to, leftLen), start) === false)\n      { return false }\n    if (to > leftLen &&\n        this.right.forEachInner(f, Math.max(from - leftLen, 0), Math.min(this.length, to) - leftLen, start + leftLen) === false)\n      { return false }\n  };\n\n  Append.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n    var leftLen = this.left.length;\n    if (from > leftLen &&\n        this.right.forEachInvertedInner(f, from - leftLen, Math.max(to, leftLen) - leftLen, start + leftLen) === false)\n      { return false }\n    if (to < leftLen &&\n        this.left.forEachInvertedInner(f, Math.min(from, leftLen), to, start) === false)\n      { return false }\n  };\n\n  Append.prototype.sliceInner = function sliceInner (from, to) {\n    if (from == 0 && to == this.length) { return this }\n    var leftLen = this.left.length;\n    if (to <= leftLen) { return this.left.slice(from, to) }\n    if (from >= leftLen) { return this.right.slice(from - leftLen, to - leftLen) }\n    return this.left.slice(from, leftLen).append(this.right.slice(0, to - leftLen))\n  };\n\n  Append.prototype.leafAppend = function leafAppend (other) {\n    var inner = this.right.leafAppend(other);\n    if (inner) { return new Append(this.left, inner) }\n  };\n\n  Append.prototype.leafPrepend = function leafPrepend (other) {\n    var inner = this.left.leafPrepend(other);\n    if (inner) { return new Append(inner, this.right) }\n  };\n\n  Append.prototype.appendInner = function appendInner (other) {\n    if (this.left.depth >= Math.max(this.right.depth, other.depth) + 1)\n      { return new Append(this.left, new Append(this.right, other)) }\n    return new Append(this, other)\n  };\n\n  return Append;\n}(RopeSequence));\n\nvar ropeSequence = RopeSequence;\n\nexport default ropeSequence;\n","import RopeSequence from 'rope-sequence';\nimport { Mapping } from 'prosemirror-transform';\nimport { PluginKey, Plugin } from 'prosemirror-state';\n\n// ProseMirror's history isn't simply a way to roll back to a previous\n// state, because ProseMirror supports applying changes without adding\n// them to the history (for example during collaboration).\n//\n// To this end, each 'Branch' (one for the undo history and one for\n// the redo history) keeps an array of 'Items', which can optionally\n// hold a step (an actual undoable change), and always hold a position\n// map (which is needed to move changes below them to apply to the\n// current document).\n//\n// An item that has both a step and a selection bookmark is the start\n// of an 'event' — a group of changes that will be undone or redone at\n// once. (It stores only the bookmark, since that way we don't have to\n// provide a document until the selection is actually applied, which\n// is useful when compressing.)\n\n// Used to schedule history compression\nvar max_empty_items = 500;\n\nvar Branch = function Branch(items, eventCount) {\n  this.items = items;\n  this.eventCount = eventCount;\n};\n\n// : (EditorState, bool) → ?{transform: Transform, selection: ?SelectionBookmark, remaining: Branch}\n// Pop the latest event off the branch's history and apply it\n// to a document transform.\nBranch.prototype.popEvent = function popEvent (state, preserveItems) {\n    var this$1 = this;\n\n  if (this.eventCount == 0) { return null }\n\n  var end = this.items.length;\n  for (;; end--) {\n    var next = this.items.get(end - 1);\n    if (next.selection) { --end; break }\n  }\n\n  var remap, mapFrom;\n  if (preserveItems) {\n    remap = this.remapping(end, this.items.length);\n    mapFrom = remap.maps.length;\n  }\n  var transform = state.tr;\n  var selection, remaining;\n  var addAfter = [], addBefore = [];\n\n  this.items.forEach(function (item, i) {\n    if (!item.step) {\n      if (!remap) {\n        remap = this$1.remapping(end, i + 1);\n        mapFrom = remap.maps.length;\n      }\n      mapFrom--;\n      addBefore.push(item);\n      return\n    }\n\n    if (remap) {\n      addBefore.push(new Item(item.map));\n      var step = item.step.map(remap.slice(mapFrom)), map;\n\n      if (step && transform.maybeStep(step).doc) {\n        map = transform.mapping.maps[transform.mapping.maps.length - 1];\n        addAfter.push(new Item(map, null, null, addAfter.length + addBefore.length));\n      }\n      mapFrom--;\n      if (map) { remap.appendMap(map, mapFrom); }\n    } else {\n      transform.maybeStep(item.step);\n    }\n\n    if (item.selection) {\n      selection = remap ? item.selection.map(remap.slice(mapFrom)) : item.selection;\n      remaining = new Branch(this$1.items.slice(0, end).append(addBefore.reverse().concat(addAfter)), this$1.eventCount - 1);\n      return false\n    }\n  }, this.items.length, 0);\n\n  return {remaining: remaining, transform: transform, selection: selection}\n};\n\n// : (Transform, ?SelectionBookmark, Object) → Branch\n// Create a new branch with the given transform added.\nBranch.prototype.addTransform = function addTransform (transform, selection, histOptions, preserveItems) {\n  var newItems = [], eventCount = this.eventCount;\n  var oldItems = this.items, lastItem = !preserveItems && oldItems.length ? oldItems.get(oldItems.length - 1) : null;\n\n  for (var i = 0; i < transform.steps.length; i++) {\n    var step = transform.steps[i].invert(transform.docs[i]);\n    var item = new Item(transform.mapping.maps[i], step, selection), merged = (void 0);\n    if (merged = lastItem && lastItem.merge(item)) {\n      item = merged;\n      if (i) { newItems.pop(); }\n      else { oldItems = oldItems.slice(0, oldItems.length - 1); }\n    }\n    newItems.push(item);\n    if (selection) {\n      eventCount++;\n      selection = null;\n    }\n    if (!preserveItems) { lastItem = item; }\n  }\n  var overflow = eventCount - histOptions.depth;\n  if (overflow > DEPTH_OVERFLOW) {\n    oldItems = cutOffEvents(oldItems, overflow);\n    eventCount -= overflow;\n  }\n  return new Branch(oldItems.append(newItems), eventCount)\n};\n\nBranch.prototype.remapping = function remapping (from, to) {\n  var maps = new Mapping;\n  this.items.forEach(function (item, i) {\n    var mirrorPos = item.mirrorOffset != null && i - item.mirrorOffset >= from\n        ? maps.maps.length - item.mirrorOffset : null;\n    maps.appendMap(item.map, mirrorPos);\n  }, from, to);\n  return maps\n};\n\nBranch.prototype.addMaps = function addMaps (array) {\n  if (this.eventCount == 0) { return this }\n  return new Branch(this.items.append(array.map(function (map) { return new Item(map); })), this.eventCount)\n};\n\n// : (Transform, number)\n// When the collab module receives remote changes, the history has\n// to know about those, so that it can adjust the steps that were\n// rebased on top of the remote changes, and include the position\n// maps for the remote changes in its array of items.\nBranch.prototype.rebased = function rebased (rebasedTransform, rebasedCount) {\n  if (!this.eventCount) { return this }\n\n  var rebasedItems = [], start = Math.max(0, this.items.length - rebasedCount);\n\n  var mapping = rebasedTransform.mapping;\n  var newUntil = rebasedTransform.steps.length;\n  var eventCount = this.eventCount;\n  this.items.forEach(function (item) { if (item.selection) { eventCount--; } }, start);\n\n  var iRebased = rebasedCount;\n  this.items.forEach(function (item) {\n    var pos = mapping.getMirror(--iRebased);\n    if (pos == null) { return }\n    newUntil = Math.min(newUntil, pos);\n    var map = mapping.maps[pos];\n    if (item.step) {\n      var step = rebasedTransform.steps[pos].invert(rebasedTransform.docs[pos]);\n      var selection = item.selection && item.selection.map(mapping.slice(iRebased + 1, pos));\n      if (selection) { eventCount++; }\n      rebasedItems.push(new Item(map, step, selection));\n    } else {\n      rebasedItems.push(new Item(map));\n    }\n  }, start);\n\n  var newMaps = [];\n  for (var i = rebasedCount; i < newUntil; i++)\n    { newMaps.push(new Item(mapping.maps[i])); }\n  var items = this.items.slice(0, start).append(newMaps).append(rebasedItems);\n  var branch = new Branch(items, eventCount);\n\n  if (branch.emptyItemCount() > max_empty_items)\n    { branch = branch.compress(this.items.length - rebasedItems.length); }\n  return branch\n};\n\nBranch.prototype.emptyItemCount = function emptyItemCount () {\n  var count = 0;\n  this.items.forEach(function (item) { if (!item.step) { count++; } });\n  return count\n};\n\n// Compressing a branch means rewriting it to push the air (map-only\n// items) out. During collaboration, these naturally accumulate\n// because each remote change adds one. The `upto` argument is used\n// to ensure that only the items below a given level are compressed,\n// because `rebased` relies on a clean, untouched set of items in\n// order to associate old items with rebased steps.\nBranch.prototype.compress = function compress (upto) {\n    if ( upto === void 0 ) upto = this.items.length;\n\n  var remap = this.remapping(0, upto), mapFrom = remap.maps.length;\n  var items = [], events = 0;\n  this.items.forEach(function (item, i) {\n    if (i >= upto) {\n      items.push(item);\n      if (item.selection) { events++; }\n    } else if (item.step) {\n      var step = item.step.map(remap.slice(mapFrom)), map = step && step.getMap();\n      mapFrom--;\n      if (map) { remap.appendMap(map, mapFrom); }\n      if (step) {\n        var selection = item.selection && item.selection.map(remap.slice(mapFrom));\n        if (selection) { events++; }\n        var newItem = new Item(map.invert(), step, selection), merged, last = items.length - 1;\n        if (merged = items.length && items[last].merge(newItem))\n          { items[last] = merged; }\n        else\n          { items.push(newItem); }\n      }\n    } else if (item.map) {\n      mapFrom--;\n    }\n  }, this.items.length, 0);\n  return new Branch(RopeSequence.from(items.reverse()), events)\n};\n\nBranch.empty = new Branch(RopeSequence.empty, 0);\n\nfunction cutOffEvents(items, n) {\n  var cutPoint;\n  items.forEach(function (item, i) {\n    if (item.selection && (n-- == 0)) {\n      cutPoint = i;\n      return false\n    }\n  });\n  return items.slice(cutPoint)\n}\n\nvar Item = function Item(map, step, selection, mirrorOffset) {\n  // The (forward) step map for this item.\n  this.map = map;\n  // The inverted step\n  this.step = step;\n  // If this is non-null, this item is the start of a group, and\n  // this selection is the starting selection for the group (the one\n  // that was active before the first step was applied)\n  this.selection = selection;\n  // If this item is the inverse of a previous mapping on the stack,\n  // this points at the inverse's offset\n  this.mirrorOffset = mirrorOffset;\n};\n\nItem.prototype.merge = function merge (other) {\n  if (this.step && other.step && !other.selection) {\n    var step = other.step.merge(this.step);\n    if (step) { return new Item(step.getMap().invert(), step, this.selection) }\n  }\n};\n\n// The value of the state field that tracks undo/redo history for that\n// state. Will be stored in the plugin state when the history plugin\n// is active.\nvar HistoryState = function HistoryState(done, undone, prevRanges, prevTime) {\n  this.done = done;\n  this.undone = undone;\n  this.prevRanges = prevRanges;\n  this.prevTime = prevTime;\n};\n\nvar DEPTH_OVERFLOW = 20;\n\n// : (HistoryState, EditorState, Transaction, Object)\n// Record a transformation in undo history.\nfunction applyTransaction(history, state, tr, options) {\n  var historyTr = tr.getMeta(historyKey), rebased;\n  if (historyTr) { return historyTr.historyState }\n\n  if (tr.getMeta(closeHistoryKey)) { history = new HistoryState(history.done, history.undone, null, 0); }\n\n  var appended = tr.getMeta(\"appendedTransaction\");\n\n  if (tr.steps.length == 0) {\n    return history\n  } else if (appended && appended.getMeta(historyKey)) {\n    if (appended.getMeta(historyKey).redo)\n      { return new HistoryState(history.done.addTransform(tr, null, options, mustPreserveItems(state)),\n                              history.undone, rangesFor(tr.mapping.maps[tr.steps.length - 1]), history.prevTime) }\n    else\n      { return new HistoryState(history.done, history.undone.addTransform(tr, null, options, mustPreserveItems(state)),\n                              null, history.prevTime) }\n  } else if (tr.getMeta(\"addToHistory\") !== false && !(appended && appended.getMeta(\"addToHistory\") === false)) {\n    // Group transforms that occur in quick succession into one event.\n    var newGroup = history.prevTime == 0 || !appended && (history.prevTime < (tr.time || 0) - options.newGroupDelay ||\n                                                          !isAdjacentTo(tr, history.prevRanges));\n    var prevRanges = appended ? mapRanges(history.prevRanges, tr.mapping) : rangesFor(tr.mapping.maps[tr.steps.length - 1]);\n    return new HistoryState(history.done.addTransform(tr, newGroup ? state.selection.getBookmark() : null,\n                                                      options, mustPreserveItems(state)),\n                            Branch.empty, prevRanges, tr.time)\n  } else if (rebased = tr.getMeta(\"rebased\")) {\n    // Used by the collab module to tell the history that some of its\n    // content has been rebased.\n    return new HistoryState(history.done.rebased(tr, rebased),\n                            history.undone.rebased(tr, rebased),\n                            mapRanges(history.prevRanges, tr.mapping), history.prevTime)\n  } else {\n    return new HistoryState(history.done.addMaps(tr.mapping.maps),\n                            history.undone.addMaps(tr.mapping.maps),\n                            mapRanges(history.prevRanges, tr.mapping), history.prevTime)\n  }\n}\n\nfunction isAdjacentTo(transform, prevRanges) {\n  if (!prevRanges) { return false }\n  if (!transform.docChanged) { return true }\n  var adjacent = false;\n  transform.mapping.maps[0].forEach(function (start, end) {\n    for (var i = 0; i < prevRanges.length; i += 2)\n      { if (start <= prevRanges[i + 1] && end >= prevRanges[i])\n        { adjacent = true; } }\n  });\n  return adjacent\n}\n\nfunction rangesFor(map) {\n  var result = [];\n  map.forEach(function (_from, _to, from, to) { return result.push(from, to); });\n  return result\n}\n\nfunction mapRanges(ranges, mapping) {\n  if (!ranges) { return null }\n  var result = [];\n  for (var i = 0; i < ranges.length; i += 2) {\n    var from = mapping.map(ranges[i], 1), to = mapping.map(ranges[i + 1], -1);\n    if (from <= to) { result.push(from, to); }\n  }\n  return result\n}\n\n// : (HistoryState, EditorState, (tr: Transaction), bool)\n// Apply the latest event from one branch to the document and shift the event\n// onto the other branch.\nfunction histTransaction(history, state, dispatch, redo) {\n  var preserveItems = mustPreserveItems(state), histOptions = historyKey.get(state).spec.config;\n  var pop = (redo ? history.undone : history.done).popEvent(state, preserveItems);\n  if (!pop) { return }\n\n  var selection = pop.selection.resolve(pop.transform.doc);\n  var added = (redo ? history.done : history.undone).addTransform(pop.transform, state.selection.getBookmark(),\n                                                                  histOptions, preserveItems);\n\n  var newHist = new HistoryState(redo ? added : pop.remaining, redo ? pop.remaining : added, null, 0);\n  dispatch(pop.transform.setSelection(selection).setMeta(historyKey, {redo: redo, historyState: newHist}).scrollIntoView());\n}\n\nvar cachedPreserveItems = false, cachedPreserveItemsPlugins = null;\n// Check whether any plugin in the given state has a\n// `historyPreserveItems` property in its spec, in which case we must\n// preserve steps exactly as they came in, so that they can be\n// rebased.\nfunction mustPreserveItems(state) {\n  var plugins = state.plugins;\n  if (cachedPreserveItemsPlugins != plugins) {\n    cachedPreserveItems = false;\n    cachedPreserveItemsPlugins = plugins;\n    for (var i = 0; i < plugins.length; i++) { if (plugins[i].spec.historyPreserveItems) {\n      cachedPreserveItems = true;\n      break\n    } }\n  }\n  return cachedPreserveItems\n}\n\n// :: (Transaction) → Transaction\n// Set a flag on the given transaction that will prevent further steps\n// from being appended to an existing history event (so that they\n// require a separate undo command to undo).\nfunction closeHistory(tr) {\n  return tr.setMeta(closeHistoryKey, true)\n}\n\nvar historyKey = new PluginKey(\"history\");\nvar closeHistoryKey = new PluginKey(\"closeHistory\");\n\n// :: (?Object) → Plugin\n// Returns a plugin that enables the undo history for an editor. The\n// plugin will track undo and redo stacks, which can be used with the\n// [`undo`](#history.undo) and [`redo`](#history.redo) commands.\n//\n// You can set an `\"addToHistory\"` [metadata\n// property](#state.Transaction.setMeta) of `false` on a transaction\n// to prevent it from being rolled back by undo.\n//\n//   config::-\n//   Supports the following configuration options:\n//\n//     depth:: ?number\n//     The amount of history events that are collected before the\n//     oldest events are discarded. Defaults to 100.\n//\n//     newGroupDelay:: ?number\n//     The delay between changes after which a new group should be\n//     started. Defaults to 500 (milliseconds). Note that when changes\n//     aren't adjacent, a new group is always started.\nfunction history(config) {\n  config = {depth: config && config.depth || 100,\n            newGroupDelay: config && config.newGroupDelay || 500};\n  return new Plugin({\n    key: historyKey,\n\n    state: {\n      init: function init() {\n        return new HistoryState(Branch.empty, Branch.empty, null, 0)\n      },\n      apply: function apply(tr, hist, state) {\n        return applyTransaction(hist, state, tr, config)\n      }\n    },\n\n    config: config\n  })\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// A command function that undoes the last change, if any.\nfunction undo(state, dispatch) {\n  var hist = historyKey.getState(state);\n  if (!hist || hist.done.eventCount == 0) { return false }\n  if (dispatch) { histTransaction(hist, state, dispatch, false); }\n  return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// A command function that redoes the last undone change, if any.\nfunction redo(state, dispatch) {\n  var hist = historyKey.getState(state);\n  if (!hist || hist.undone.eventCount == 0) { return false }\n  if (dispatch) { histTransaction(hist, state, dispatch, true); }\n  return true\n}\n\n// :: (EditorState) → number\n// The amount of undoable events available in a given state.\nfunction undoDepth(state) {\n  var hist = historyKey.getState(state);\n  return hist ? hist.done.eventCount : 0\n}\n\n// :: (EditorState) → number\n// The amount of redoable events available in a given editor state.\nfunction redoDepth(state) {\n  var hist = historyKey.getState(state);\n  return hist ? hist.undone.eventCount : 0\n}\n\nexport { HistoryState, closeHistory, history, redo, redoDepth, undo, undoDepth };\n//# sourceMappingURL=index.es.js.map\n","\n    /*!\n    * tiptap-extensions v1.32.6\n    * (c) 2020 überdosis GbR (limited liability)\n    * @license MIT\n    */\n  \nimport { Node, Plugin, PluginKey, Mark, Extension } from 'tiptap';\nimport { toggleWrap, wrappingInputRule, toggleList, toggleBlockType, setBlockType, textblockTypeInputRule, chainCommands, exitCode, nodeInputRule, splitListItem, sinkListItem, liftListItem, insertText, replaceText, splitToDefaultListItem, toggleMark, markInputRule, markPasteRule, updateMark, removeMark, pasteRule } from 'tiptap-commands';\nimport low from 'lowlight/lib/core';\nimport { DecorationSet, Decoration } from 'prosemirror-view';\nimport { findBlockNodes, createTable } from 'prosemirror-utils';\nimport { Plugin as Plugin$1, PluginKey as PluginKey$1, TextSelection } from 'prosemirror-state';\nimport { tableNodes, addColumnBefore, addColumnAfter, deleteColumn, addRowBefore, addRowAfter, deleteRow, deleteTable, mergeCells, splitCell, toggleHeaderColumn, toggleHeaderRow, toggleHeaderCell, setCellAttr, fixTables, goToNextCell, columnResizing, tableEditing } from 'prosemirror-tables';\nimport { getMarkAttrs, nodeEqualsType } from 'tiptap-utils';\nimport { Step } from 'prosemirror-transform';\nimport { sendableSteps, getVersion, receiveTransaction, collab } from 'prosemirror-collab';\nimport { history, undo, redo, undoDepth, redoDepth } from 'prosemirror-history';\n\nclass Blockquote extends Node {\n  get name() {\n    return 'blockquote';\n  }\n\n  get schema() {\n    return {\n      content: 'block*',\n      group: 'block',\n      defining: true,\n      draggable: false,\n      parseDOM: [{\n        tag: 'blockquote'\n      }],\n      toDOM: () => ['blockquote', 0]\n    };\n  }\n\n  commands({\n    type,\n    schema\n  }) {\n    return () => toggleWrap(type, schema.nodes.paragraph);\n  }\n\n  keys({\n    type\n  }) {\n    return {\n      'Ctrl->': toggleWrap(type)\n    };\n  }\n\n  inputRules({\n    type\n  }) {\n    return [wrappingInputRule(/^\\s*>\\s$/, type)];\n  }\n\n}\n\nclass BulletList extends Node {\n  get name() {\n    return 'bullet_list';\n  }\n\n  get schema() {\n    return {\n      content: 'list_item+',\n      group: 'block',\n      parseDOM: [{\n        tag: 'ul'\n      }],\n      toDOM: () => ['ul', 0]\n    };\n  }\n\n  commands({\n    type,\n    schema\n  }) {\n    return () => toggleList(type, schema.nodes.list_item);\n  }\n\n  keys({\n    type,\n    schema\n  }) {\n    return {\n      'Shift-Ctrl-8': toggleList(type, schema.nodes.list_item)\n    };\n  }\n\n  inputRules({\n    type\n  }) {\n    return [wrappingInputRule(/^\\s*([-+*])\\s$/, type)];\n  }\n\n}\n\nclass CodeBlock extends Node {\n  get name() {\n    return 'code_block';\n  }\n\n  get schema() {\n    return {\n      content: 'text*',\n      marks: '',\n      group: 'block',\n      code: true,\n      defining: true,\n      draggable: false,\n      parseDOM: [{\n        tag: 'pre',\n        preserveWhitespace: 'full'\n      }],\n      toDOM: () => ['pre', ['code', 0]]\n    };\n  }\n\n  commands({\n    type,\n    schema\n  }) {\n    return () => toggleBlockType(type, schema.nodes.paragraph);\n  }\n\n  keys({\n    type\n  }) {\n    return {\n      'Shift-Ctrl-\\\\': setBlockType(type)\n    };\n  }\n\n  inputRules({\n    type\n  }) {\n    return [textblockTypeInputRule(/^```$/, type)];\n  }\n\n}\n\nfunction getDecorations({\n  doc,\n  name\n}) {\n  const decorations = [];\n  const blocks = findBlockNodes(doc).filter(item => item.node.type.name === name);\n\n  const flatten = list => list.reduce((a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), []);\n\n  function parseNodes(nodes, className = []) {\n    return nodes.map(node => {\n      const classes = [...className, ...(node.properties ? node.properties.className : [])];\n\n      if (node.children) {\n        return parseNodes(node.children, classes);\n      }\n\n      return {\n        text: node.value,\n        classes\n      };\n    });\n  }\n\n  blocks.forEach(block => {\n    let startPos = block.pos + 1;\n    const nodes = low.highlightAuto(block.node.textContent).value;\n    flatten(parseNodes(nodes)).map(node => {\n      const from = startPos;\n      const to = from + node.text.length;\n      startPos = to;\n      return { ...node,\n        from,\n        to\n      };\n    }).forEach(node => {\n      const decoration = Decoration.inline(node.from, node.to, {\n        class: node.classes.join(' ')\n      });\n      decorations.push(decoration);\n    });\n  });\n  return DecorationSet.create(doc, decorations);\n}\n\nfunction HighlightPlugin({\n  name\n}) {\n  return new Plugin({\n    name: new PluginKey('highlight'),\n    state: {\n      init: (_, {\n        doc\n      }) => getDecorations({\n        doc,\n        name\n      }),\n      apply: (transaction, decorationSet, oldState, newState) => {\n        // TODO: find way to cache decorations\n        // https://discuss.prosemirror.net/t/how-to-update-multiple-inline-decorations-on-node-change/1493\n        const oldNodeName = oldState.selection.$head.parent.type.name;\n        const newNodeName = newState.selection.$head.parent.type.name;\n        const oldNodes = findBlockNodes(oldState.doc).filter(item => item.node.type.name === name);\n        const newNodes = findBlockNodes(newState.doc).filter(item => item.node.type.name === name); // Apply decorations if selection includes named node, or transaction changes named node.\n\n        if (transaction.docChanged && ([oldNodeName, newNodeName].includes(name) || newNodes.length !== oldNodes.length)) {\n          return getDecorations({\n            doc: transaction.doc,\n            name\n          });\n        }\n\n        return decorationSet.map(transaction.mapping, transaction.doc);\n      }\n    },\n    props: {\n      decorations(state) {\n        return this.getState(state);\n      }\n\n    }\n  });\n}\n\nclass CodeBlockHighlight extends Node {\n  constructor(options = {}) {\n    super(options);\n\n    try {\n      Object.entries(this.options.languages).forEach(([name, mapping]) => {\n        low.registerLanguage(name, mapping);\n      });\n    } catch (err) {\n      throw new Error('Invalid syntax highlight definitions: define at least one highlight.js language mapping');\n    }\n  }\n\n  get name() {\n    return 'code_block';\n  }\n\n  get defaultOptions() {\n    return {\n      languages: {}\n    };\n  }\n\n  get schema() {\n    return {\n      content: 'text*',\n      marks: '',\n      group: 'block',\n      code: true,\n      defining: true,\n      draggable: false,\n      parseDOM: [{\n        tag: 'pre',\n        preserveWhitespace: 'full'\n      }],\n      toDOM: () => ['pre', ['code', 0]]\n    };\n  }\n\n  commands({\n    type,\n    schema\n  }) {\n    return () => toggleBlockType(type, schema.nodes.paragraph);\n  }\n\n  keys({\n    type\n  }) {\n    return {\n      'Shift-Ctrl-\\\\': setBlockType(type)\n    };\n  }\n\n  inputRules({\n    type\n  }) {\n    return [textblockTypeInputRule(/^```$/, type)];\n  }\n\n  get plugins() {\n    return [HighlightPlugin({\n      name: this.name\n    })];\n  }\n\n}\n\nclass HardBreak extends Node {\n  get name() {\n    return 'hard_break';\n  }\n\n  get schema() {\n    return {\n      inline: true,\n      group: 'inline',\n      selectable: false,\n      parseDOM: [{\n        tag: 'br'\n      }],\n      toDOM: () => ['br']\n    };\n  }\n\n  keys({\n    type\n  }) {\n    const command = chainCommands(exitCode, (state, dispatch) => {\n      dispatch(state.tr.replaceSelectionWith(type.create()).scrollIntoView());\n      return true;\n    });\n    return {\n      'Mod-Enter': command,\n      'Shift-Enter': command\n    };\n  }\n\n}\n\nclass Heading extends Node {\n  get name() {\n    return 'heading';\n  }\n\n  get defaultOptions() {\n    return {\n      levels: [1, 2, 3, 4, 5, 6]\n    };\n  }\n\n  get schema() {\n    return {\n      attrs: {\n        level: {\n          default: 1\n        }\n      },\n      content: 'inline*',\n      group: 'block',\n      defining: true,\n      draggable: false,\n      parseDOM: this.options.levels.map(level => ({\n        tag: \"h\".concat(level),\n        attrs: {\n          level\n        }\n      })),\n      toDOM: node => [\"h\".concat(node.attrs.level), 0]\n    };\n  }\n\n  commands({\n    type,\n    schema\n  }) {\n    return attrs => toggleBlockType(type, schema.nodes.paragraph, attrs);\n  }\n\n  keys({\n    type\n  }) {\n    return this.options.levels.reduce((items, level) => ({ ...items,\n      ...{\n        [\"Shift-Ctrl-\".concat(level)]: setBlockType(type, {\n          level\n        })\n      }\n    }), {});\n  }\n\n  inputRules({\n    type\n  }) {\n    return this.options.levels.map(level => textblockTypeInputRule(new RegExp(\"^(#{1,\".concat(level, \"})\\\\s$\")), type, () => ({\n      level\n    })));\n  }\n\n}\n\nclass HorizontalRule extends Node {\n  get name() {\n    return 'horizontal_rule';\n  }\n\n  get schema() {\n    return {\n      group: 'block',\n      parseDOM: [{\n        tag: 'hr'\n      }],\n      toDOM: () => ['hr']\n    };\n  }\n\n  commands({\n    type\n  }) {\n    return () => (state, dispatch) => dispatch(state.tr.replaceSelectionWith(type.create()));\n  }\n\n  inputRules({\n    type\n  }) {\n    return [nodeInputRule(/^(?:---|___\\s|\\*\\*\\*\\s)$/, type)];\n  }\n\n}\n\n/**\n * Matches following attributes in Markdown-typed image: [, alt, src, title]\n *\n * Example:\n * ![Lorem](image.jpg) -> [, \"Lorem\", \"image.jpg\"]\n * ![](image.jpg \"Ipsum\") -> [, \"\", \"image.jpg\", \"Ipsum\"]\n * ![Lorem](image.jpg \"Ipsum\") -> [, \"Lorem\", \"image.jpg\", \"Ipsum\"]\n */\n\nconst IMAGE_INPUT_REGEX = /!\\[(.+|:?)]\\((\\S+)(?:(?:\\s+)[\"'](\\S+)[\"'])?\\)/;\nclass Image extends Node {\n  get name() {\n    return 'image';\n  }\n\n  get schema() {\n    return {\n      inline: true,\n      attrs: {\n        src: {},\n        alt: {\n          default: null\n        },\n        title: {\n          default: null\n        }\n      },\n      group: 'inline',\n      draggable: true,\n      parseDOM: [{\n        tag: 'img[src]',\n        getAttrs: dom => ({\n          src: dom.getAttribute('src'),\n          title: dom.getAttribute('title'),\n          alt: dom.getAttribute('alt')\n        })\n      }],\n      toDOM: node => ['img', node.attrs]\n    };\n  }\n\n  commands({\n    type\n  }) {\n    return attrs => (state, dispatch) => {\n      const {\n        selection\n      } = state;\n      const position = selection.$cursor ? selection.$cursor.pos : selection.$to.pos;\n      const node = type.create(attrs);\n      const transaction = state.tr.insert(position, node);\n      dispatch(transaction);\n    };\n  }\n\n  inputRules({\n    type\n  }) {\n    return [nodeInputRule(IMAGE_INPUT_REGEX, type, match => {\n      const [, alt, src, title] = match;\n      return {\n        src,\n        alt,\n        title\n      };\n    })];\n  }\n\n  get plugins() {\n    return [new Plugin({\n      props: {\n        handleDOMEvents: {\n          drop(view, event) {\n            const hasFiles = event.dataTransfer && event.dataTransfer.files && event.dataTransfer.files.length;\n\n            if (!hasFiles) {\n              return;\n            }\n\n            const images = Array.from(event.dataTransfer.files).filter(file => /image/i.test(file.type));\n\n            if (images.length === 0) {\n              return;\n            }\n\n            event.preventDefault();\n            const {\n              schema\n            } = view.state;\n            const coordinates = view.posAtCoords({\n              left: event.clientX,\n              top: event.clientY\n            });\n            images.forEach(image => {\n              const reader = new FileReader();\n\n              reader.onload = readerEvent => {\n                const node = schema.nodes.image.create({\n                  src: readerEvent.target.result\n                });\n                const transaction = view.state.tr.insert(coordinates.pos, node);\n                view.dispatch(transaction);\n              };\n\n              reader.readAsDataURL(image);\n            });\n          }\n\n        }\n      }\n    })];\n  }\n\n}\n\nclass ListItem extends Node {\n  get name() {\n    return 'list_item';\n  }\n\n  get schema() {\n    return {\n      content: 'paragraph block*',\n      defining: true,\n      draggable: false,\n      parseDOM: [{\n        tag: 'li'\n      }],\n      toDOM: () => ['li', 0]\n    };\n  }\n\n  keys({\n    type\n  }) {\n    return {\n      Enter: splitListItem(type),\n      Tab: sinkListItem(type),\n      'Shift-Tab': liftListItem(type)\n    };\n  }\n\n}\n\nfunction triggerCharacter({\n  char = '@',\n  allowSpaces = false,\n  startOfLine = false\n}) {\n  return $position => {\n    // cancel if top level node\n    if ($position.depth <= 0) {\n      return false;\n    } // Matching expressions used for later\n\n\n    const escapedChar = \"\\\\\".concat(char);\n    const suffix = new RegExp(\"\\\\s\".concat(escapedChar, \"$\"));\n    const prefix = startOfLine ? '^' : '';\n    const regexp = allowSpaces ? new RegExp(\"\".concat(prefix).concat(escapedChar, \".*?(?=\\\\s\").concat(escapedChar, \"|$)\"), 'gm') : new RegExp(\"\".concat(prefix, \"(?:^)?\").concat(escapedChar, \"[^\\\\s\").concat(escapedChar, \"]*\"), 'gm'); // Lookup the boundaries of the current node\n\n    const textFrom = $position.before();\n    const textTo = $position.end();\n    const text = $position.doc.textBetween(textFrom, textTo, '\\0', '\\0');\n    let match = regexp.exec(text);\n    let position;\n\n    while (match !== null) {\n      // JavaScript doesn't have lookbehinds; this hacks a check that first character is \" \"\n      // or the line beginning\n      const matchPrefix = match.input.slice(Math.max(0, match.index - 1), match.index);\n\n      if (/^[\\s\\0]?$/.test(matchPrefix)) {\n        // The absolute position of the match in the document\n        const from = match.index + $position.start();\n        let to = from + match[0].length; // Edge case handling; if spaces are allowed and we're directly in between\n        // two triggers\n\n        if (allowSpaces && suffix.test(text.slice(to - 1, to + 1))) {\n          match[0] += ' ';\n          to += 1;\n        } // If the $position is located within the matched substring, return that range\n\n\n        if (from < $position.pos && to >= $position.pos) {\n          position = {\n            range: {\n              from,\n              to\n            },\n            query: match[0].slice(char.length),\n            text: match[0]\n          };\n        }\n      }\n\n      match = regexp.exec(text);\n    }\n\n    return position;\n  };\n}\n\nfunction SuggestionsPlugin({\n  matcher = {\n    char: '@',\n    allowSpaces: false,\n    startOfLine: false\n  },\n  appendText = null,\n  suggestionClass = 'suggestion',\n  command = () => false,\n  items = [],\n  onEnter = () => false,\n  onChange = () => false,\n  onExit = () => false,\n  onKeyDown = () => false,\n  onFilter = (searchItems, query) => {\n    if (!query) {\n      return searchItems;\n    }\n\n    return searchItems.filter(item => JSON.stringify(item).toLowerCase().includes(query.toLowerCase()));\n  }\n}) {\n  return new Plugin$1({\n    key: new PluginKey$1('suggestions'),\n\n    view() {\n      return {\n        update: async (view, prevState) => {\n          const prev = this.key.getState(prevState);\n          const next = this.key.getState(view.state); // See how the state changed\n\n          const moved = prev.active && next.active && prev.range.from !== next.range.from;\n          const started = !prev.active && next.active;\n          const stopped = prev.active && !next.active;\n          const changed = !started && !stopped && prev.query !== next.query;\n          const handleStart = started || moved;\n          const handleChange = changed && !moved;\n          const handleExit = stopped || moved; // Cancel when suggestion isn't active\n\n          if (!handleStart && !handleChange && !handleExit) {\n            return;\n          }\n\n          const state = handleExit ? prev : next;\n          const decorationNode = document.querySelector(\"[data-decoration-id=\\\"\".concat(state.decorationId, \"\\\"]\")); // build a virtual node for popper.js or tippy.js\n          // this can be used for building popups without a DOM node\n\n          const virtualNode = decorationNode ? {\n            getBoundingClientRect() {\n              return decorationNode.getBoundingClientRect();\n            },\n\n            clientWidth: decorationNode.clientWidth,\n            clientHeight: decorationNode.clientHeight\n          } : null;\n          const props = {\n            view,\n            range: state.range,\n            query: state.query,\n            text: state.text,\n            decorationNode,\n            virtualNode,\n            items: handleChange || handleStart ? await onFilter(Array.isArray(items) ? items : await items(), state.query) : [],\n            command: ({\n              range,\n              attrs\n            }) => {\n              command({\n                range,\n                attrs,\n                schema: view.state.schema\n              })(view.state, view.dispatch, view);\n\n              if (appendText) {\n                insertText(appendText)(view.state, view.dispatch, view);\n              }\n            }\n          }; // Trigger the hooks when necessary\n\n          if (handleExit) {\n            onExit(props);\n          }\n\n          if (handleChange) {\n            onChange(props);\n          }\n\n          if (handleStart) {\n            onEnter(props);\n          }\n        }\n      };\n    },\n\n    state: {\n      // Initialize the plugin's internal state.\n      init() {\n        return {\n          active: false,\n          range: {},\n          query: null,\n          text: null\n        };\n      },\n\n      // Apply changes to the plugin state from a view transaction.\n      apply(tr, prev) {\n        const {\n          selection\n        } = tr;\n        const next = { ...prev\n        }; // We can only be suggesting if there is no selection\n\n        if (selection.from === selection.to) {\n          // Reset active state if we just left the previous suggestion range\n          if (selection.from < prev.range.from || selection.from > prev.range.to) {\n            next.active = false;\n          } // Try to match against where our cursor currently is\n\n\n          const $position = selection.$from;\n          const match = triggerCharacter(matcher)($position);\n          const decorationId = (Math.random() + 1).toString(36).substr(2, 5); // If we found a match, update the current state to show it\n\n          if (match) {\n            next.active = true;\n            next.decorationId = prev.decorationId ? prev.decorationId : decorationId;\n            next.range = match.range;\n            next.query = match.query;\n            next.text = match.text;\n          } else {\n            next.active = false;\n          }\n        } else {\n          next.active = false;\n        } // Make sure to empty the range if suggestion is inactive\n\n\n        if (!next.active) {\n          next.decorationId = null;\n          next.range = {};\n          next.query = null;\n          next.text = null;\n        }\n\n        return next;\n      }\n\n    },\n    props: {\n      // Call the keydown hook if suggestion is active.\n      handleKeyDown(view, event) {\n        const {\n          active,\n          range\n        } = this.getState(view.state);\n        if (!active) return false;\n        return onKeyDown({\n          view,\n          event,\n          range\n        });\n      },\n\n      // Setup decorator on the currently active suggestion.\n      decorations(editorState) {\n        const {\n          active,\n          range,\n          decorationId\n        } = this.getState(editorState);\n        if (!active) return null;\n        return DecorationSet.create(editorState.doc, [Decoration.inline(range.from, range.to, {\n          nodeName: 'span',\n          class: suggestionClass,\n          'data-decoration-id': decorationId\n        })]);\n      }\n\n    }\n  });\n}\n\nclass Mention extends Node {\n  get name() {\n    return 'mention';\n  }\n\n  get defaultOptions() {\n    return {\n      matcher: {\n        char: '@',\n        allowSpaces: false,\n        startOfLine: false\n      },\n      mentionClass: 'mention',\n      suggestionClass: 'mention-suggestion'\n    };\n  }\n\n  get schema() {\n    return {\n      attrs: {\n        id: {},\n        label: {}\n      },\n      group: 'inline',\n      inline: true,\n      selectable: false,\n      atom: true,\n      toDOM: node => ['span', {\n        class: this.options.mentionClass,\n        'data-mention-id': node.attrs.id\n      }, \"\".concat(this.options.matcher.char).concat(node.attrs.label)],\n      parseDOM: [{\n        tag: 'span[data-mention-id]',\n        getAttrs: dom => {\n          const id = dom.getAttribute('data-mention-id');\n          const label = dom.innerText.split(this.options.matcher.char).join('');\n          return {\n            id,\n            label\n          };\n        }\n      }]\n    };\n  }\n\n  commands({\n    schema\n  }) {\n    return attrs => replaceText(null, schema.nodes[this.name], attrs);\n  }\n\n  get plugins() {\n    return [SuggestionsPlugin({\n      command: ({\n        range,\n        attrs,\n        schema\n      }) => replaceText(range, schema.nodes[this.name], attrs),\n      appendText: ' ',\n      matcher: this.options.matcher,\n      items: this.options.items,\n      onEnter: this.options.onEnter,\n      onChange: this.options.onChange,\n      onExit: this.options.onExit,\n      onKeyDown: this.options.onKeyDown,\n      onFilter: this.options.onFilter,\n      suggestionClass: this.options.suggestionClass\n    })];\n  }\n\n}\n\nclass OrderedList extends Node {\n  get name() {\n    return 'ordered_list';\n  }\n\n  get schema() {\n    return {\n      attrs: {\n        order: {\n          default: 1\n        }\n      },\n      content: 'list_item+',\n      group: 'block',\n      parseDOM: [{\n        tag: 'ol',\n        getAttrs: dom => ({\n          order: dom.hasAttribute('start') ? +dom.getAttribute('start') : 1\n        })\n      }],\n      toDOM: node => node.attrs.order === 1 ? ['ol', 0] : ['ol', {\n        start: node.attrs.order\n      }, 0]\n    };\n  }\n\n  commands({\n    type,\n    schema\n  }) {\n    return () => toggleList(type, schema.nodes.list_item);\n  }\n\n  keys({\n    type,\n    schema\n  }) {\n    return {\n      'Shift-Ctrl-9': toggleList(type, schema.nodes.list_item)\n    };\n  }\n\n  inputRules({\n    type\n  }) {\n    return [wrappingInputRule(/^(\\d+)\\.\\s$/, type, match => ({\n      order: +match[1]\n    }), (match, node) => node.childCount + node.attrs.order === +match[1])];\n  }\n\n}\n\nvar TableNodes = tableNodes({\n  tableGroup: 'block',\n  cellContent: 'block+',\n  cellAttributes: {\n    background: {\n      default: null,\n\n      getFromDOM(dom) {\n        return dom.style.backgroundColor || null;\n      },\n\n      setDOMAttr(value, attrs) {\n        if (value) {\n          const style = {\n            style: \"\".concat(attrs.style || '', \"background-color: \").concat(value, \";\")\n          };\n          Object.assign(attrs, style);\n        }\n      }\n\n    }\n  }\n});\n\nclass Table extends Node {\n  get name() {\n    return 'table';\n  }\n\n  get defaultOptions() {\n    return {\n      resizable: false\n    };\n  }\n\n  get schema() {\n    return TableNodes.table;\n  }\n\n  commands({\n    schema\n  }) {\n    return {\n      createTable: ({\n        rowsCount,\n        colsCount,\n        withHeaderRow\n      }) => (state, dispatch) => {\n        const offset = state.tr.selection.anchor + 1;\n        const nodes = createTable(schema, rowsCount, colsCount, withHeaderRow);\n        const tr = state.tr.replaceSelectionWith(nodes).scrollIntoView();\n        const resolvedPos = tr.doc.resolve(offset);\n        tr.setSelection(TextSelection.near(resolvedPos));\n        dispatch(tr);\n      },\n      addColumnBefore: () => addColumnBefore,\n      addColumnAfter: () => addColumnAfter,\n      deleteColumn: () => deleteColumn,\n      addRowBefore: () => addRowBefore,\n      addRowAfter: () => addRowAfter,\n      deleteRow: () => deleteRow,\n      deleteTable: () => deleteTable,\n      toggleCellMerge: () => (state, dispatch) => {\n        if (mergeCells(state, dispatch)) {\n          return;\n        }\n\n        splitCell(state, dispatch);\n      },\n      mergeCells: () => mergeCells,\n      splitCell: () => splitCell,\n      toggleHeaderColumn: () => toggleHeaderColumn,\n      toggleHeaderRow: () => toggleHeaderRow,\n      toggleHeaderCell: () => toggleHeaderCell,\n      setCellAttr: () => setCellAttr,\n      fixTables: () => fixTables\n    };\n  }\n\n  keys() {\n    return {\n      Tab: goToNextCell(1),\n      'Shift-Tab': goToNextCell(-1)\n    };\n  }\n\n  get plugins() {\n    return [...(this.options.resizable ? [columnResizing()] : []), tableEditing()];\n  }\n\n}\n\nclass TableHeader extends Node {\n  get name() {\n    return 'table_header';\n  }\n\n  get schema() {\n    return TableNodes.table_header;\n  }\n\n}\n\nclass TableCell extends Node {\n  get name() {\n    return 'table_cell';\n  }\n\n  get schema() {\n    return TableNodes.table_cell;\n  }\n\n}\n\nclass TableRow extends Node {\n  get name() {\n    return 'table_row';\n  }\n\n  get schema() {\n    return TableNodes.table_row;\n  }\n\n}\n\nclass TodoItem extends Node {\n  get name() {\n    return 'todo_item';\n  }\n\n  get defaultOptions() {\n    return {\n      nested: false\n    };\n  }\n\n  get view() {\n    return {\n      props: ['node', 'updateAttrs', 'view'],\n      methods: {\n        onChange() {\n          this.updateAttrs({\n            done: !this.node.attrs.done\n          });\n        }\n\n      },\n      template: \"\\n        
  • \\n \\n
    \\n
  • \\n \"\n };\n }\n\n get schema() {\n return {\n attrs: {\n done: {\n default: false\n }\n },\n draggable: true,\n content: this.options.nested ? '(paragraph|todo_list)+' : 'paragraph+',\n toDOM: node => {\n const {\n done\n } = node.attrs;\n return ['li', {\n 'data-type': this.name,\n 'data-done': done.toString()\n }, ['span', {\n class: 'todo-checkbox',\n contenteditable: 'false'\n }], ['div', {\n class: 'todo-content'\n }, 0]];\n },\n parseDOM: [{\n priority: 51,\n tag: \"[data-type=\\\"\".concat(this.name, \"\\\"]\"),\n getAttrs: dom => ({\n done: dom.getAttribute('data-done') === 'true'\n })\n }]\n };\n }\n\n keys({\n type\n }) {\n return {\n Enter: splitToDefaultListItem(type),\n Tab: this.options.nested ? sinkListItem(type) : () => {},\n 'Shift-Tab': liftListItem(type)\n };\n }\n\n}\n\nclass TodoList extends Node {\n get name() {\n return 'todo_list';\n }\n\n get schema() {\n return {\n group: 'block',\n content: 'todo_item+',\n toDOM: () => ['ul', {\n 'data-type': this.name\n }, 0],\n parseDOM: [{\n priority: 51,\n tag: \"[data-type=\\\"\".concat(this.name, \"\\\"]\")\n }]\n };\n }\n\n commands({\n type,\n schema\n }) {\n return () => toggleList(type, schema.nodes.todo_item);\n }\n\n inputRules({\n type\n }) {\n return [wrappingInputRule(/^\\s*(\\[ \\])\\s$/, type)];\n }\n\n}\n\nclass Bold extends Mark {\n get name() {\n return 'bold';\n }\n\n get schema() {\n return {\n parseDOM: [{\n tag: 'strong'\n }, {\n tag: 'b',\n getAttrs: node => node.style.fontWeight !== 'normal' && null\n }, {\n style: 'font-weight',\n getAttrs: value => /^(bold(er)?|[5-9]\\d{2,})$/.test(value) && null\n }],\n toDOM: () => ['strong', 0]\n };\n }\n\n keys({\n type\n }) {\n return {\n 'Mod-b': toggleMark(type)\n };\n }\n\n commands({\n type\n }) {\n return () => toggleMark(type);\n }\n\n inputRules({\n type\n }) {\n return [markInputRule(/(?:\\*\\*|__)([^*_]+)(?:\\*\\*|__)$/, type)];\n }\n\n pasteRules({\n type\n }) {\n return [markPasteRule(/(?:\\*\\*|__)([^*_]+)(?:\\*\\*|__)/g, type)];\n }\n\n}\n\nclass Code extends Mark {\n get name() {\n return 'code';\n }\n\n get schema() {\n return {\n excludes: '_',\n parseDOM: [{\n tag: 'code'\n }],\n toDOM: () => ['code', 0]\n };\n }\n\n keys({\n type\n }) {\n return {\n 'Mod-`': toggleMark(type)\n };\n }\n\n commands({\n type\n }) {\n return () => toggleMark(type);\n }\n\n inputRules({\n type\n }) {\n return [markInputRule(/(?:`)([^`]+)(?:`)$/, type)];\n }\n\n pasteRules({\n type\n }) {\n return [markPasteRule(/(?:`)([^`]+)(?:`)/g, type)];\n }\n\n}\n\nclass Italic extends Mark {\n get name() {\n return 'italic';\n }\n\n get schema() {\n return {\n parseDOM: [{\n tag: 'i'\n }, {\n tag: 'em'\n }, {\n style: 'font-style=italic'\n }],\n toDOM: () => ['em', 0]\n };\n }\n\n keys({\n type\n }) {\n return {\n 'Mod-i': toggleMark(type)\n };\n }\n\n commands({\n type\n }) {\n return () => toggleMark(type);\n }\n\n inputRules({\n type\n }) {\n return [markInputRule(/(?:^|[^_])(_([^_]+)_)$/, type), markInputRule(/(?:^|[^*])(\\*([^*]+)\\*)$/, type)];\n }\n\n pasteRules({\n type\n }) {\n return [markPasteRule(/_([^_]+)_/g, type), markPasteRule(/\\*([^*]+)\\*/g, type)];\n }\n\n}\n\nclass Link extends Mark {\n get name() {\n return 'link';\n }\n\n get defaultOptions() {\n return {\n openOnClick: true,\n target: null\n };\n }\n\n get schema() {\n return {\n attrs: {\n href: {\n default: null\n },\n target: {\n default: null\n }\n },\n inclusive: false,\n parseDOM: [{\n tag: 'a[href]',\n getAttrs: dom => ({\n href: dom.getAttribute('href'),\n target: dom.getAttribute('target')\n })\n }],\n toDOM: node => ['a', { ...node.attrs,\n rel: 'noopener noreferrer nofollow',\n target: this.options.target\n }, 0]\n };\n }\n\n commands({\n type\n }) {\n return attrs => {\n if (attrs.href) {\n return updateMark(type, attrs);\n }\n\n return removeMark(type);\n };\n }\n\n pasteRules({\n type\n }) {\n return [pasteRule(/https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z]{2,}\\b([-a-zA-Z0-9@:%_+.~#?&//=,]*)/gi, type, url => ({\n href: url\n }))];\n }\n\n get plugins() {\n if (!this.options.openOnClick) {\n return [];\n }\n\n return [new Plugin({\n props: {\n handleClick: (view, pos, event) => {\n const {\n schema\n } = view.state;\n const attrs = getMarkAttrs(view.state, schema.marks.link);\n\n if (attrs.href && event.target instanceof HTMLAnchorElement) {\n event.stopPropagation();\n window.open(attrs.href, attrs.target);\n }\n }\n }\n })];\n }\n\n}\n\nclass Strike extends Mark {\n get name() {\n return 'strike';\n }\n\n get schema() {\n return {\n parseDOM: [{\n tag: 's'\n }, {\n tag: 'del'\n }, {\n tag: 'strike'\n }, {\n style: 'text-decoration',\n getAttrs: value => value === 'line-through'\n }],\n toDOM: () => ['s', 0]\n };\n }\n\n keys({\n type\n }) {\n return {\n 'Mod-d': toggleMark(type)\n };\n }\n\n commands({\n type\n }) {\n return () => toggleMark(type);\n }\n\n inputRules({\n type\n }) {\n return [markInputRule(/~([^~]+)~$/, type)];\n }\n\n pasteRules({\n type\n }) {\n return [markPasteRule(/~([^~]+)~/g, type)];\n }\n\n}\n\nclass Underline extends Mark {\n get name() {\n return 'underline';\n }\n\n get schema() {\n return {\n parseDOM: [{\n tag: 'u'\n }, {\n style: 'text-decoration',\n getAttrs: value => value === 'underline'\n }],\n toDOM: () => ['u', 0]\n };\n }\n\n keys({\n type\n }) {\n return {\n 'Mod-u': toggleMark(type)\n };\n }\n\n commands({\n type\n }) {\n return () => toggleMark(type);\n }\n\n}\n\nclass Collaboration extends Extension {\n get name() {\n return 'collaboration';\n }\n\n init() {\n this.getSendableSteps = this.debounce(state => {\n const sendable = sendableSteps(state);\n\n if (sendable) {\n this.options.onSendable({\n editor: this.editor,\n sendable: {\n version: sendable.version,\n steps: sendable.steps.map(step => step.toJSON()),\n clientID: sendable.clientID\n }\n });\n }\n }, this.options.debounce);\n this.editor.on('transaction', ({\n state\n }) => {\n this.getSendableSteps(state);\n });\n }\n\n get defaultOptions() {\n return {\n version: 0,\n clientID: Math.floor(Math.random() * 0xFFFFFFFF),\n debounce: 250,\n onSendable: () => {},\n update: ({\n steps,\n version\n }) => {\n const {\n state,\n view,\n schema\n } = this.editor;\n\n if (getVersion(state) > version) {\n return;\n }\n\n view.dispatch(receiveTransaction(state, steps.map(item => Step.fromJSON(schema, item.step)), steps.map(item => item.clientID)));\n }\n };\n }\n\n get plugins() {\n return [collab({\n version: this.options.version,\n clientID: this.options.clientID\n })];\n }\n\n debounce(fn, delay) {\n let timeout;\n return function (...args) {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n timeout = setTimeout(() => {\n fn(...args);\n timeout = null;\n }, delay);\n };\n }\n\n}\n\nclass Focus extends Extension {\n get name() {\n return 'focus';\n }\n\n get defaultOptions() {\n return {\n className: 'has-focus',\n nested: false\n };\n }\n\n get plugins() {\n return [new Plugin({\n props: {\n decorations: ({\n doc,\n plugins,\n selection\n }) => {\n const editablePlugin = plugins.find(plugin => plugin.key.startsWith('editable$'));\n const editable = editablePlugin.props.editable();\n const active = editable && this.options.className;\n const {\n focused\n } = this.editor;\n const {\n anchor\n } = selection;\n const decorations = [];\n\n if (!active || !focused) {\n return false;\n }\n\n doc.descendants((node, pos) => {\n const hasAnchor = anchor >= pos && anchor <= pos + node.nodeSize;\n\n if (hasAnchor && !node.isText) {\n const decoration = Decoration.node(pos, pos + node.nodeSize, {\n class: this.options.className\n });\n decorations.push(decoration);\n }\n\n return this.options.nested;\n });\n return DecorationSet.create(doc, decorations);\n }\n }\n })];\n }\n\n}\n\nclass History extends Extension {\n get name() {\n return 'history';\n }\n\n get defaultOptions() {\n return {\n depth: '',\n newGroupDelay: ''\n };\n }\n\n keys() {\n const keymap = {\n 'Mod-z': undo,\n 'Mod-y': redo,\n 'Shift-Mod-z': redo,\n // Russian language\n 'Mod-я': undo,\n 'Shift-Mod-я': redo\n };\n return keymap;\n }\n\n get plugins() {\n return [history({\n depth: this.options.depth,\n newGroupDelay: this.options.newGroupDelay\n })];\n }\n\n commands() {\n return {\n undo: () => undo,\n redo: () => redo,\n undoDepth: () => undoDepth,\n redoDepth: () => redoDepth\n };\n }\n\n}\n\nclass Placeholder extends Extension {\n get name() {\n return 'placeholder';\n }\n\n get defaultOptions() {\n return {\n emptyEditorClass: 'is-editor-empty',\n emptyNodeClass: 'is-empty',\n emptyNodeText: 'Write something …',\n showOnlyWhenEditable: true,\n showOnlyCurrent: true\n };\n }\n\n get plugins() {\n return [new Plugin({\n props: {\n decorations: ({\n doc,\n plugins,\n selection\n }) => {\n const editablePlugin = plugins.find(plugin => plugin.key.startsWith('editable$'));\n const editable = editablePlugin.props.editable();\n const active = editable || !this.options.showOnlyWhenEditable;\n const {\n anchor\n } = selection;\n const decorations = [];\n const isEditorEmpty = doc.textContent.length === 0;\n\n if (!active) {\n return false;\n }\n\n doc.descendants((node, pos) => {\n const hasAnchor = anchor >= pos && anchor <= pos + node.nodeSize;\n const isNodeEmpty = node.content.size === 0;\n\n if ((hasAnchor || !this.options.showOnlyCurrent) && isNodeEmpty) {\n const classes = [this.options.emptyNodeClass];\n\n if (isEditorEmpty) {\n classes.push(this.options.emptyEditorClass);\n }\n\n const decoration = Decoration.node(pos, pos + node.nodeSize, {\n class: classes.join(' '),\n 'data-empty-text': typeof this.options.emptyNodeText === 'function' ? this.options.emptyNodeText(node) : this.options.emptyNodeText\n });\n decorations.push(decoration);\n }\n\n return false;\n });\n return DecorationSet.create(doc, decorations);\n }\n }\n })];\n }\n\n}\n\nclass Search extends Extension {\n constructor(options = {}) {\n super(options);\n this.results = [];\n this.searchTerm = null;\n this._updating = false;\n }\n\n get name() {\n return 'search';\n }\n\n get defaultOptions() {\n return {\n autoSelectNext: true,\n findClass: 'find',\n searching: false,\n caseSensitive: false,\n disableRegex: true,\n alwaysSearch: false\n };\n }\n\n commands() {\n return {\n find: attrs => this.find(attrs),\n replace: attrs => this.replace(attrs),\n replaceAll: attrs => this.replaceAll(attrs),\n clearSearch: () => this.clear()\n };\n }\n\n get findRegExp() {\n return RegExp(this.searchTerm, !this.options.caseSensitive ? 'gui' : 'gu');\n }\n\n get decorations() {\n return this.results.map(deco => Decoration.inline(deco.from, deco.to, {\n class: this.options.findClass\n }));\n }\n\n _search(doc) {\n this.results = [];\n const mergedTextNodes = [];\n let index = 0;\n\n if (!this.searchTerm) {\n return;\n }\n\n doc.descendants((node, pos) => {\n if (node.isText) {\n if (mergedTextNodes[index]) {\n mergedTextNodes[index] = {\n text: mergedTextNodes[index].text + node.text,\n pos: mergedTextNodes[index].pos\n };\n } else {\n mergedTextNodes[index] = {\n text: node.text,\n pos\n };\n }\n } else {\n index += 1;\n }\n });\n mergedTextNodes.forEach(({\n text,\n pos\n }) => {\n const search = this.findRegExp;\n let m; // eslint-disable-next-line no-cond-assign\n\n while (m = search.exec(text)) {\n if (m[0] === '') {\n break;\n }\n\n this.results.push({\n from: pos + m.index,\n to: pos + m.index + m[0].length\n });\n }\n });\n }\n\n replace(replace) {\n return (state, dispatch) => {\n const firstResult = this.results[0];\n\n if (!firstResult) {\n return;\n }\n\n const {\n from,\n to\n } = this.results[0];\n dispatch(state.tr.insertText(replace, from, to));\n this.editor.commands.find(this.searchTerm);\n };\n }\n\n rebaseNextResult(replace, index, lastOffset = 0) {\n const nextIndex = index + 1;\n\n if (!this.results[nextIndex]) {\n return null;\n }\n\n const {\n from: currentFrom,\n to: currentTo\n } = this.results[index];\n const offset = currentTo - currentFrom - replace.length + lastOffset;\n const {\n from,\n to\n } = this.results[nextIndex];\n this.results[nextIndex] = {\n to: to - offset,\n from: from - offset\n };\n return offset;\n }\n\n replaceAll(replace) {\n return ({\n tr\n }, dispatch) => {\n let offset;\n\n if (!this.results.length) {\n return;\n }\n\n this.results.forEach(({\n from,\n to\n }, index) => {\n tr.insertText(replace, from, to);\n offset = this.rebaseNextResult(replace, index, offset);\n });\n dispatch(tr);\n this.editor.commands.find(this.searchTerm);\n };\n }\n\n find(searchTerm) {\n return (state, dispatch) => {\n this.searchTerm = this.options.disableRegex ? searchTerm.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&') : searchTerm;\n this.updateView(state, dispatch);\n };\n }\n\n clear() {\n return (state, dispatch) => {\n this.searchTerm = null;\n this.updateView(state, dispatch);\n };\n }\n\n updateView({\n tr\n }, dispatch) {\n this._updating = true;\n dispatch(tr);\n this._updating = false;\n }\n\n createDeco(doc) {\n this._search(doc);\n\n return this.decorations ? DecorationSet.create(doc, this.decorations) : [];\n }\n\n get plugins() {\n return [new Plugin({\n state: {\n init() {\n return DecorationSet.empty;\n },\n\n apply: (tr, old) => {\n if (this._updating || this.options.searching || tr.docChanged && this.options.alwaysSearch) {\n return this.createDeco(tr.doc);\n }\n\n if (tr.docChanged) {\n return old.map(tr.mapping, tr.doc);\n }\n\n return old;\n }\n },\n props: {\n decorations(state) {\n return this.getState(state);\n }\n\n }\n })];\n }\n\n}\n\nclass TrailingNode extends Extension {\n get name() {\n return 'trailing_node';\n }\n\n get defaultOptions() {\n return {\n node: 'paragraph',\n notAfter: ['paragraph']\n };\n }\n\n get plugins() {\n const plugin = new PluginKey(this.name);\n const disabledNodes = Object.entries(this.editor.schema.nodes).map(([, value]) => value).filter(node => this.options.notAfter.includes(node.name));\n return [new Plugin({\n key: plugin,\n view: () => ({\n update: view => {\n const {\n state\n } = view;\n const insertNodeAtEnd = plugin.getState(state);\n\n if (!insertNodeAtEnd) {\n return;\n }\n\n const {\n doc,\n schema,\n tr\n } = state;\n const type = schema.nodes[this.options.node];\n const transaction = tr.insert(doc.content.size, type.create());\n view.dispatch(transaction);\n }\n }),\n state: {\n init: (_, state) => {\n const lastNode = state.tr.doc.lastChild;\n return !nodeEqualsType({\n node: lastNode,\n types: disabledNodes\n });\n },\n apply: (tr, value) => {\n if (!tr.docChanged) {\n return value;\n }\n\n const lastNode = tr.doc.lastChild;\n return !nodeEqualsType({\n node: lastNode,\n types: disabledNodes\n });\n }\n }\n })];\n }\n\n}\n\nexport { Blockquote, Bold, BulletList, Code, CodeBlock, CodeBlockHighlight, Collaboration, Focus, HardBreak, Heading, HighlightPlugin as Highlight, History, HorizontalRule, Image, Italic, Link, ListItem, Mention, OrderedList, Placeholder, Search, Strike, SuggestionsPlugin as Suggestions, Table, TableCell, TableHeader, TableRow, TodoItem, TodoList, TrailingNode, Underline };\n","import { liftTarget, canJoin, joinPoint, canSplit, ReplaceAroundStep, findWrapping } from 'prosemirror-transform';\nimport { Fragment, Slice } from 'prosemirror-model';\nimport { NodeSelection, Selection, TextSelection, AllSelection } from 'prosemirror-state';\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Delete the selection, if there is one.\nfunction deleteSelection(state, dispatch) {\n if (state.selection.empty) { return false }\n if (dispatch) { dispatch(state.tr.deleteSelection().scrollIntoView()); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// If the selection is empty and at the start of a textblock, try to\n// reduce the distance between that block and the one before it—if\n// there's a block directly before it that can be joined, join them.\n// If not, try to move the selected block closer to the next one in\n// the document structure by lifting it out of its parent or moving it\n// into a parent of the previous block. Will use the view for accurate\n// (bidi-aware) start-of-textblock detection if given.\nfunction joinBackward(state, dispatch, view) {\n var ref = state.selection;\n var $cursor = ref.$cursor;\n if (!$cursor || (view ? !view.endOfTextblock(\"backward\", state)\n : $cursor.parentOffset > 0))\n { return false }\n\n var $cut = findCutBefore($cursor);\n\n // If there is no node before this, try to lift\n if (!$cut) {\n var range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null) { return false }\n if (dispatch) { dispatch(state.tr.lift(range, target).scrollIntoView()); }\n return true\n }\n\n var before = $cut.nodeBefore;\n // Apply the joining algorithm\n if (!before.type.spec.isolating && deleteBarrier(state, $cut, dispatch))\n { return true }\n\n // If the node below has no content and the node above is\n // selectable, delete the node below and select the one above.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(before, \"end\") || NodeSelection.isSelectable(before))) {\n if (dispatch) {\n var tr = state.tr.deleteRange($cursor.before(), $cursor.after());\n tr.setSelection(textblockAt(before, \"end\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos, -1)), -1)\n : NodeSelection.create(tr.doc, $cut.pos - before.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true\n }\n\n // If the node before is an atom, delete it\n if (before.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch) { dispatch(state.tr.delete($cut.pos - before.nodeSize, $cut.pos).scrollIntoView()); }\n return true\n }\n\n return false\n}\n\nfunction textblockAt(node, side) {\n for (; node; node = (side == \"start\" ? node.firstChild : node.lastChild))\n { if (node.isTextblock) { return true } }\n return false\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// When the selection is empty and at the start of a textblock, select\n// the node before that textblock, if possible. This is intended to be\n// bound to keys like backspace, after\n// [`joinBackward`](#commands.joinBackward) or other deleting\n// commands, as a fall-back behavior when the schema doesn't allow\n// deletion at the selected point.\nfunction selectNodeBackward(state, dispatch, view) {\n var ref = state.selection;\n var $head = ref.$head;\n var empty = ref.empty;\n var $cut = $head;\n if (!empty) { return false }\n\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"backward\", state) : $head.parentOffset > 0) { return false }\n $cut = findCutBefore($head);\n }\n var node = $cut && $cut.nodeBefore;\n if (!node || !NodeSelection.isSelectable(node)) { return false }\n if (dispatch)\n { dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos - node.nodeSize)).scrollIntoView()); }\n return true\n}\n\nfunction findCutBefore($pos) {\n if (!$pos.parent.type.spec.isolating) { for (var i = $pos.depth - 1; i >= 0; i--) {\n if ($pos.index(i) > 0) { return $pos.doc.resolve($pos.before(i + 1)) }\n if ($pos.node(i).type.spec.isolating) { break }\n } }\n return null\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// If the selection is empty and the cursor is at the end of a\n// textblock, try to reduce or remove the boundary between that block\n// and the one after it, either by joining them or by moving the other\n// block closer to this one in the tree structure. Will use the view\n// for accurate start-of-textblock detection if given.\nfunction joinForward(state, dispatch, view) {\n var ref = state.selection;\n var $cursor = ref.$cursor;\n if (!$cursor || (view ? !view.endOfTextblock(\"forward\", state)\n : $cursor.parentOffset < $cursor.parent.content.size))\n { return false }\n\n var $cut = findCutAfter($cursor);\n\n // If there is no node after this, there's nothing to do\n if (!$cut) { return false }\n\n var after = $cut.nodeAfter;\n // Try the joining algorithm\n if (deleteBarrier(state, $cut, dispatch)) { return true }\n\n // If the node above has no content and the node below is\n // selectable, delete the node above and select the one below.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(after, \"start\") || NodeSelection.isSelectable(after))) {\n if (dispatch) {\n var tr = state.tr.deleteRange($cursor.before(), $cursor.after());\n tr.setSelection(textblockAt(after, \"start\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos)), 1)\n : NodeSelection.create(tr.doc, tr.mapping.map($cut.pos)));\n dispatch(tr.scrollIntoView());\n }\n return true\n }\n\n // If the next node is an atom, delete it\n if (after.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch) { dispatch(state.tr.delete($cut.pos, $cut.pos + after.nodeSize).scrollIntoView()); }\n return true\n }\n\n return false\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// When the selection is empty and at the end of a textblock, select\n// the node coming after that textblock, if possible. This is intended\n// to be bound to keys like delete, after\n// [`joinForward`](#commands.joinForward) and similar deleting\n// commands, to provide a fall-back behavior when the schema doesn't\n// allow deletion at the selected point.\nfunction selectNodeForward(state, dispatch, view) {\n var ref = state.selection;\n var $head = ref.$head;\n var empty = ref.empty;\n var $cut = $head;\n if (!empty) { return false }\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"forward\", state) : $head.parentOffset < $head.parent.content.size)\n { return false }\n $cut = findCutAfter($head);\n }\n var node = $cut && $cut.nodeAfter;\n if (!node || !NodeSelection.isSelectable(node)) { return false }\n if (dispatch)\n { dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos)).scrollIntoView()); }\n return true\n}\n\nfunction findCutAfter($pos) {\n if (!$pos.parent.type.spec.isolating) { for (var i = $pos.depth - 1; i >= 0; i--) {\n var parent = $pos.node(i);\n if ($pos.index(i) + 1 < parent.childCount) { return $pos.doc.resolve($pos.after(i + 1)) }\n if (parent.type.spec.isolating) { break }\n } }\n return null\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Join the selected block or, if there is a text selection, the\n// closest ancestor block of the selection that can be joined, with\n// the sibling above it.\nfunction joinUp(state, dispatch) {\n var sel = state.selection, nodeSel = sel instanceof NodeSelection, point;\n if (nodeSel) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.from)) { return false }\n point = sel.from;\n } else {\n point = joinPoint(state.doc, sel.from, -1);\n if (point == null) { return false }\n }\n if (dispatch) {\n var tr = state.tr.join(point);\n if (nodeSel) { tr.setSelection(NodeSelection.create(tr.doc, point - state.doc.resolve(point).nodeBefore.nodeSize)); }\n dispatch(tr.scrollIntoView());\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Join the selected block, or the closest ancestor of the selection\n// that can be joined, with the sibling after it.\nfunction joinDown(state, dispatch) {\n var sel = state.selection, point;\n if (sel instanceof NodeSelection) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.to)) { return false }\n point = sel.to;\n } else {\n point = joinPoint(state.doc, sel.to, 1);\n if (point == null) { return false }\n }\n if (dispatch)\n { dispatch(state.tr.join(point).scrollIntoView()); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Lift the selected block, or the closest ancestor block of the\n// selection that can be lifted, out of its parent node.\nfunction lift(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var range = $from.blockRange($to), target = range && liftTarget(range);\n if (target == null) { return false }\n if (dispatch) { dispatch(state.tr.lift(range, target).scrollIntoView()); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// If the selection is in a node whose type has a truthy\n// [`code`](#model.NodeSpec.code) property in its spec, replace the\n// selection with a newline character.\nfunction newlineInCode(state, dispatch) {\n var ref = state.selection;\n var $head = ref.$head;\n var $anchor = ref.$anchor;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor)) { return false }\n if (dispatch) { dispatch(state.tr.insertText(\"\\n\").scrollIntoView()); }\n return true\n}\n\nfunction defaultBlockAt(match) {\n for (var i = 0; i < match.edgeCount; i++) {\n var ref = match.edge(i);\n var type = ref.type;\n if (type.isTextblock && !type.hasRequiredAttrs()) { return type }\n }\n return null\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// When the selection is in a node with a truthy\n// [`code`](#model.NodeSpec.code) property in its spec, create a\n// default block after the code block, and move the cursor there.\nfunction exitCode(state, dispatch) {\n var ref = state.selection;\n var $head = ref.$head;\n var $anchor = ref.$anchor;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor)) { return false }\n var above = $head.node(-1), after = $head.indexAfter(-1), type = defaultBlockAt(above.contentMatchAt(after));\n if (!above.canReplaceWith(after, after, type)) { return false }\n if (dispatch) {\n var pos = $head.after(), tr = state.tr.replaceWith(pos, pos, type.createAndFill());\n tr.setSelection(Selection.near(tr.doc.resolve(pos), 1));\n dispatch(tr.scrollIntoView());\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// If a block node is selected, create an empty paragraph before (if\n// it is its parent's first child) or after it.\nfunction createParagraphNear(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n if ($from.parent.inlineContent || $to.parent.inlineContent) { return false }\n var type = defaultBlockAt($from.parent.contentMatchAt($to.indexAfter()));\n if (!type || !type.isTextblock) { return false }\n if (dispatch) {\n var side = (!$from.parentOffset && $to.index() < $to.parent.childCount ? $from : $to).pos;\n var tr = state.tr.insert(side, type.createAndFill());\n tr.setSelection(TextSelection.create(tr.doc, side + 1));\n dispatch(tr.scrollIntoView());\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// If the cursor is in an empty textblock that can be lifted, lift the\n// block.\nfunction liftEmptyBlock(state, dispatch) {\n var ref = state.selection;\n var $cursor = ref.$cursor;\n if (!$cursor || $cursor.parent.content.size) { return false }\n if ($cursor.depth > 1 && $cursor.after() != $cursor.end(-1)) {\n var before = $cursor.before();\n if (canSplit(state.doc, before)) {\n if (dispatch) { dispatch(state.tr.split(before).scrollIntoView()); }\n return true\n }\n }\n var range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null) { return false }\n if (dispatch) { dispatch(state.tr.lift(range, target).scrollIntoView()); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Split the parent block of the selection. If the selection is a text\n// selection, also delete its content.\nfunction splitBlock(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n if (state.selection instanceof NodeSelection && state.selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(state.doc, $from.pos)) { return false }\n if (dispatch) { dispatch(state.tr.split($from.pos).scrollIntoView()); }\n return true\n }\n\n if (!$from.parent.isBlock) { return false }\n\n if (dispatch) {\n var atEnd = $to.parentOffset == $to.parent.content.size;\n var tr = state.tr;\n if (state.selection instanceof TextSelection) { tr.deleteSelection(); }\n var deflt = $from.depth == 0 ? null : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)));\n var types = atEnd && deflt ? [{type: deflt}] : null;\n var can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types);\n if (!types && !can && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt && [{type: deflt}])) {\n types = [{type: deflt}];\n can = true;\n }\n if (can) {\n tr.split(tr.mapping.map($from.pos), 1, types);\n if (!atEnd && !$from.parentOffset && $from.parent.type != deflt &&\n $from.node(-1).canReplace($from.index(-1), $from.indexAfter(-1), Fragment.from(deflt.create(), $from.parent)))\n { tr.setNodeMarkup(tr.mapping.map($from.before()), deflt); }\n }\n dispatch(tr.scrollIntoView());\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Acts like [`splitBlock`](#commands.splitBlock), but without\n// resetting the set of active marks at the cursor.\nfunction splitBlockKeepMarks(state, dispatch) {\n return splitBlock(state, dispatch && (function (tr) {\n var marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks) { tr.ensureMarks(marks); }\n dispatch(tr);\n }))\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Move the selection to the node wrapping the current selection, if\n// any. (Will not select the document node.)\nfunction selectParentNode(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var to = ref.to;\n var pos;\n var same = $from.sharedDepth(to);\n if (same == 0) { return false }\n pos = $from.before(same);\n if (dispatch) { dispatch(state.tr.setSelection(NodeSelection.create(state.doc, pos))); }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Select the whole document.\nfunction selectAll(state, dispatch) {\n if (dispatch) { dispatch(state.tr.setSelection(new AllSelection(state.doc))); }\n return true\n}\n\nfunction joinMaybeClear(state, $pos, dispatch) {\n var before = $pos.nodeBefore, after = $pos.nodeAfter, index = $pos.index();\n if (!before || !after || !before.type.compatibleContent(after.type)) { return false }\n if (!before.content.size && $pos.parent.canReplace(index - 1, index)) {\n if (dispatch) { dispatch(state.tr.delete($pos.pos - before.nodeSize, $pos.pos).scrollIntoView()); }\n return true\n }\n if (!$pos.parent.canReplace(index, index + 1) || !(after.isTextblock || canJoin(state.doc, $pos.pos)))\n { return false }\n if (dispatch)\n { dispatch(state.tr\n .clearIncompatible($pos.pos, before.type, before.contentMatchAt(before.childCount))\n .join($pos.pos)\n .scrollIntoView()); }\n return true\n}\n\nfunction deleteBarrier(state, $cut, dispatch) {\n var before = $cut.nodeBefore, after = $cut.nodeAfter, conn, match;\n if (before.type.spec.isolating || after.type.spec.isolating) { return false }\n if (joinMaybeClear(state, $cut, dispatch)) { return true }\n\n if ($cut.parent.canReplace($cut.index(), $cut.index() + 1) &&\n (conn = (match = before.contentMatchAt(before.childCount)).findWrapping(after.type)) &&\n match.matchType(conn[0] || after.type).validEnd) {\n if (dispatch) {\n var end = $cut.pos + after.nodeSize, wrap = Fragment.empty;\n for (var i = conn.length - 1; i >= 0; i--)\n { wrap = Fragment.from(conn[i].create(null, wrap)); }\n wrap = Fragment.from(before.copy(wrap));\n var tr = state.tr.step(new ReplaceAroundStep($cut.pos - 1, end, $cut.pos, end, new Slice(wrap, 1, 0), conn.length, true));\n var joinAt = end + 2 * conn.length;\n if (canJoin(tr.doc, joinAt)) { tr.join(joinAt); }\n dispatch(tr.scrollIntoView());\n }\n return true\n }\n\n var selAfter = Selection.findFrom($cut, 1);\n var range = selAfter && selAfter.$from.blockRange(selAfter.$to), target = range && liftTarget(range);\n if (target != null && target >= $cut.depth) {\n if (dispatch) { dispatch(state.tr.lift(range, target).scrollIntoView()); }\n return true\n }\n\n return false\n}\n\n// Parameterized commands\n\n// :: (NodeType, ?Object) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Wrap the selection in a node of the given type with the given\n// attributes.\nfunction wrapIn(nodeType, attrs) {\n return function(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var range = $from.blockRange($to), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping) { return false }\n if (dispatch) { dispatch(state.tr.wrap(range, wrapping).scrollIntoView()); }\n return true\n }\n}\n\n// :: (NodeType, ?Object) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Returns a command that tries to set the selected textblocks to the\n// given node type with the given attributes.\nfunction setBlockType(nodeType, attrs) {\n return function(state, dispatch) {\n var ref = state.selection;\n var from = ref.from;\n var to = ref.to;\n var applicable = false;\n state.doc.nodesBetween(from, to, function (node, pos) {\n if (applicable) { return false }\n if (!node.isTextblock || node.hasMarkup(nodeType, attrs)) { return }\n if (node.type == nodeType) {\n applicable = true;\n } else {\n var $pos = state.doc.resolve(pos), index = $pos.index();\n applicable = $pos.parent.canReplaceWith(index, index + 1, nodeType);\n }\n });\n if (!applicable) { return false }\n if (dispatch) { dispatch(state.tr.setBlockType(from, to, nodeType, attrs).scrollIntoView()); }\n return true\n }\n}\n\nfunction markApplies(doc, ranges, type) {\n var loop = function ( i ) {\n var ref = ranges[i];\n var $from = ref.$from;\n var $to = ref.$to;\n var can = $from.depth == 0 ? doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, function (node) {\n if (can) { return false }\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can) { return { v: true } }\n };\n\n for (var i = 0; i < ranges.length; i++) {\n var returned = loop( i );\n\n if ( returned ) return returned.v;\n }\n return false\n}\n\n// :: (MarkType, ?Object) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Create a command function that toggles the given mark with the\n// given attributes. Will return `false` when the current selection\n// doesn't support that mark. This will remove the mark if any marks\n// of that type exist in the selection, or add it otherwise. If the\n// selection is empty, this applies to the [stored\n// marks](#state.EditorState.storedMarks) instead of a range of the\n// document.\nfunction toggleMark(markType, attrs) {\n return function(state, dispatch) {\n var ref = state.selection;\n var empty = ref.empty;\n var $cursor = ref.$cursor;\n var ranges = ref.ranges;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType)) { return false }\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks()))\n { dispatch(state.tr.removeStoredMark(markType)); }\n else\n { dispatch(state.tr.addStoredMark(markType.create(attrs))); }\n } else {\n var has = false, tr = state.tr;\n for (var i = 0; !has && i < ranges.length; i++) {\n var ref$1 = ranges[i];\n var $from = ref$1.$from;\n var $to = ref$1.$to;\n has = state.doc.rangeHasMark($from.pos, $to.pos, markType);\n }\n for (var i$1 = 0; i$1 < ranges.length; i$1++) {\n var ref$2 = ranges[i$1];\n var $from$1 = ref$2.$from;\n var $to$1 = ref$2.$to;\n if (has) { tr.removeMark($from$1.pos, $to$1.pos, markType); }\n else { tr.addMark($from$1.pos, $to$1.pos, markType.create(attrs)); }\n }\n dispatch(tr.scrollIntoView());\n }\n }\n return true\n }\n}\n\nfunction wrapDispatchForJoin(dispatch, isJoinable) {\n return function (tr) {\n if (!tr.isGeneric) { return dispatch(tr) }\n\n var ranges = [];\n for (var i = 0; i < tr.mapping.maps.length; i++) {\n var map = tr.mapping.maps[i];\n for (var j = 0; j < ranges.length; j++)\n { ranges[j] = map.map(ranges[j]); }\n map.forEach(function (_s, _e, from, to) { return ranges.push(from, to); });\n }\n\n // Figure out which joinable points exist inside those ranges,\n // by checking all node boundaries in their parent nodes.\n var joinable = [];\n for (var i$1 = 0; i$1 < ranges.length; i$1 += 2) {\n var from = ranges[i$1], to = ranges[i$1 + 1];\n var $from = tr.doc.resolve(from), depth = $from.sharedDepth(to), parent = $from.node(depth);\n for (var index = $from.indexAfter(depth), pos = $from.after(depth + 1); pos <= to; ++index) {\n var after = parent.maybeChild(index);\n if (!after) { break }\n if (index && joinable.indexOf(pos) == -1) {\n var before = parent.child(index - 1);\n if (before.type == after.type && isJoinable(before, after))\n { joinable.push(pos); }\n }\n pos += after.nodeSize;\n }\n }\n // Join the joinable points\n joinable.sort(function (a, b) { return a - b; });\n for (var i$2 = joinable.length - 1; i$2 >= 0; i$2--) {\n if (canJoin(tr.doc, joinable[i$2])) { tr.join(joinable[i$2]); }\n }\n dispatch(tr);\n }\n}\n\n// :: ((state: EditorState, ?(tr: Transaction)) → bool, union<(before: Node, after: Node) → bool, [string]>) → (state: EditorState, ?(tr: Transaction)) → bool\n// Wrap a command so that, when it produces a transform that causes\n// two joinable nodes to end up next to each other, those are joined.\n// Nodes are considered joinable when they are of the same type and\n// when the `isJoinable` predicate returns true for them or, if an\n// array of strings was passed, if their node type name is in that\n// array.\nfunction autoJoin(command, isJoinable) {\n if (Array.isArray(isJoinable)) {\n var types = isJoinable;\n isJoinable = function (node) { return types.indexOf(node.type.name) > -1; };\n }\n return function (state, dispatch) { return command(state, dispatch && wrapDispatchForJoin(dispatch, isJoinable)); }\n}\n\n// :: (...[(EditorState, ?(tr: Transaction), ?EditorView) → bool]) → (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// Combine a number of command functions into a single function (which\n// calls them one by one until one returns true).\nfunction chainCommands() {\n var commands = [], len = arguments.length;\n while ( len-- ) commands[ len ] = arguments[ len ];\n\n return function(state, dispatch, view) {\n for (var i = 0; i < commands.length; i++)\n { if (commands[i](state, dispatch, view)) { return true } }\n return false\n }\n}\n\nvar backspace = chainCommands(deleteSelection, joinBackward, selectNodeBackward);\nvar del = chainCommands(deleteSelection, joinForward, selectNodeForward);\n\n// :: Object\n// A basic keymap containing bindings not specific to any schema.\n// Binds the following keys (when multiple commands are listed, they\n// are chained with [`chainCommands`](#commands.chainCommands)):\n//\n// * **Enter** to `newlineInCode`, `createParagraphNear`, `liftEmptyBlock`, `splitBlock`\n// * **Mod-Enter** to `exitCode`\n// * **Backspace** and **Mod-Backspace** to `deleteSelection`, `joinBackward`, `selectNodeBackward`\n// * **Delete** and **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n// * **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n// * **Mod-a** to `selectAll`\nvar pcBaseKeymap = {\n \"Enter\": chainCommands(newlineInCode, createParagraphNear, liftEmptyBlock, splitBlock),\n \"Mod-Enter\": exitCode,\n \"Backspace\": backspace,\n \"Mod-Backspace\": backspace,\n \"Delete\": del,\n \"Mod-Delete\": del,\n \"Mod-a\": selectAll\n};\n\n// :: Object\n// A copy of `pcBaseKeymap` that also binds **Ctrl-h** like Backspace,\n// **Ctrl-d** like Delete, **Alt-Backspace** like Ctrl-Backspace, and\n// **Ctrl-Alt-Backspace**, **Alt-Delete**, and **Alt-d** like\n// Ctrl-Delete.\nvar macBaseKeymap = {\n \"Ctrl-h\": pcBaseKeymap[\"Backspace\"],\n \"Alt-Backspace\": pcBaseKeymap[\"Mod-Backspace\"],\n \"Ctrl-d\": pcBaseKeymap[\"Delete\"],\n \"Ctrl-Alt-Backspace\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-Delete\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-d\": pcBaseKeymap[\"Mod-Delete\"]\n};\nfor (var key in pcBaseKeymap) { macBaseKeymap[key] = pcBaseKeymap[key]; }\n\n// declare global: os, navigator\nvar mac = typeof navigator != \"undefined\" ? /Mac/.test(navigator.platform)\n : typeof os != \"undefined\" ? os.platform() == \"darwin\" : false;\n\n// :: Object\n// Depending on the detected platform, this will hold\n// [`pcBasekeymap`](#commands.pcBaseKeymap) or\n// [`macBaseKeymap`](#commands.macBaseKeymap).\nvar baseKeymap = mac ? macBaseKeymap : pcBaseKeymap;\n\nexport { autoJoin, baseKeymap, chainCommands, createParagraphNear, deleteSelection, exitCode, joinBackward, joinDown, joinForward, joinUp, lift, liftEmptyBlock, macBaseKeymap, newlineInCode, pcBaseKeymap, selectAll, selectNodeBackward, selectNodeForward, selectParentNode, setBlockType, splitBlock, splitBlockKeepMarks, toggleMark, wrapIn };\n//# sourceMappingURL=index.es.js.map\n","'use strict'\n\nvar formatter = require('format')\n\nvar fault = create(Error)\n\nmodule.exports = fault\n\nfault.eval = create(EvalError)\nfault.range = create(RangeError)\nfault.reference = create(ReferenceError)\nfault.syntax = create(SyntaxError)\nfault.type = create(TypeError)\nfault.uri = create(URIError)\n\nfault.create = create\n\n// Create a new `EConstructor`, with the formatted `format` as a first argument.\nfunction create(EConstructor) {\n FormattedError.displayName = EConstructor.displayName || EConstructor.name\n\n return FormattedError\n\n function FormattedError(format) {\n if (format) {\n format = formatter.apply(null, arguments)\n }\n\n return new EConstructor(format)\n }\n}\n","import { ReplaceError, Slice, Fragment, MarkType } from 'prosemirror-model';\n\n// Mappable:: interface\n// There are several things that positions can be mapped through.\n// Such objects conform to this interface.\n//\n// map:: (pos: number, assoc: ?number) → number\n// Map a position through this object. When given, `assoc` (should\n// be -1 or 1, defaults to 1) determines with which side the\n// position is associated, which determines in which direction to\n// move when a chunk of content is inserted at the mapped position.\n//\n// mapResult:: (pos: number, assoc: ?number) → MapResult\n// Map a position, and return an object containing additional\n// information about the mapping. The result's `deleted` field tells\n// you whether the position was deleted (completely enclosed in a\n// replaced range) during the mapping. When content on only one side\n// is deleted, the position itself is only considered deleted when\n// `assoc` points in the direction of the deleted content.\n\n// Recovery values encode a range index and an offset. They are\n// represented as numbers, because tons of them will be created when\n// mapping, for example, a large number of decorations. The number's\n// lower 16 bits provide the index, the remaining bits the offset.\n//\n// Note: We intentionally don't use bit shift operators to en- and\n// decode these, since those clip to 32 bits, which we might in rare\n// cases want to overflow. A 64-bit float can represent 48-bit\n// integers precisely.\n\nvar lower16 = 0xffff;\nvar factor16 = Math.pow(2, 16);\n\nfunction makeRecover(index, offset) { return index + offset * factor16 }\nfunction recoverIndex(value) { return value & lower16 }\nfunction recoverOffset(value) { return (value - (value & lower16)) / factor16 }\n\n// ::- An object representing a mapped position with extra\n// information.\nvar MapResult = function MapResult(pos, deleted, recover) {\n if ( deleted === void 0 ) deleted = false;\n if ( recover === void 0 ) recover = null;\n\n // :: number The mapped version of the position.\n this.pos = pos;\n // :: bool Tells you whether the position was deleted, that is,\n // whether the step removed its surroundings from the document.\n this.deleted = deleted;\n this.recover = recover;\n};\n\n// :: class extends Mappable\n// A map describing the deletions and insertions made by a step, which\n// can be used to find the correspondence between positions in the\n// pre-step version of a document and the same position in the\n// post-step version.\nvar StepMap = function StepMap(ranges, inverted) {\n if ( inverted === void 0 ) inverted = false;\n\n this.ranges = ranges;\n this.inverted = inverted;\n};\n\nStepMap.prototype.recover = function recover (value) {\n var diff = 0, index = recoverIndex(value);\n if (!this.inverted) { for (var i = 0; i < index; i++)\n { diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1]; } }\n return this.ranges[index * 3] + diff + recoverOffset(value)\n};\n\n// : (number, ?number) → MapResult\nStepMap.prototype.mapResult = function mapResult (pos, assoc) {\n if ( assoc === void 0 ) assoc = 1;\n return this._map(pos, assoc, false) };\n\n// : (number, ?number) → number\nStepMap.prototype.map = function map (pos, assoc) {\n if ( assoc === void 0 ) assoc = 1;\n return this._map(pos, assoc, true) };\n\nStepMap.prototype._map = function _map (pos, assoc, simple) {\n var diff = 0, oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (var i = 0; i < this.ranges.length; i += 3) {\n var start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos) { break }\n var oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex], end = start + oldSize;\n if (pos <= end) {\n var side = !oldSize ? assoc : pos == start ? -1 : pos == end ? 1 : assoc;\n var result = start + diff + (side < 0 ? 0 : newSize);\n if (simple) { return result }\n var recover = pos == (assoc < 0 ? start : end) ? null : makeRecover(i / 3, pos - start);\n return new MapResult(result, assoc < 0 ? pos != start : pos != end, recover)\n }\n diff += newSize - oldSize;\n }\n return simple ? pos + diff : new MapResult(pos + diff)\n};\n\nStepMap.prototype.touches = function touches (pos, recover) {\n var diff = 0, index = recoverIndex(recover);\n var oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (var i = 0; i < this.ranges.length; i += 3) {\n var start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos) { break }\n var oldSize = this.ranges[i + oldIndex], end = start + oldSize;\n if (pos <= end && i == index * 3) { return true }\n diff += this.ranges[i + newIndex] - oldSize;\n }\n return false\n};\n\n// :: ((oldStart: number, oldEnd: number, newStart: number, newEnd: number))\n// Calls the given function on each of the changed ranges included in\n// this map.\nStepMap.prototype.forEach = function forEach (f) {\n var oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (var i = 0, diff = 0; i < this.ranges.length; i += 3) {\n var start = this.ranges[i], oldStart = start - (this.inverted ? diff : 0), newStart = start + (this.inverted ? 0 : diff);\n var oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex];\n f(oldStart, oldStart + oldSize, newStart, newStart + newSize);\n diff += newSize - oldSize;\n }\n};\n\n// :: () → StepMap\n// Create an inverted version of this map. The result can be used to\n// map positions in the post-step document to the pre-step document.\nStepMap.prototype.invert = function invert () {\n return new StepMap(this.ranges, !this.inverted)\n};\n\nStepMap.prototype.toString = function toString () {\n return (this.inverted ? \"-\" : \"\") + JSON.stringify(this.ranges)\n};\n\n// :: (n: number) → StepMap\n// Create a map that moves all positions by offset `n` (which may be\n// negative). This can be useful when applying steps meant for a\n// sub-document to a larger document, or vice-versa.\nStepMap.offset = function offset (n) {\n return n == 0 ? StepMap.empty : new StepMap(n < 0 ? [0, -n, 0] : [0, 0, n])\n};\n\nStepMap.empty = new StepMap([]);\n\n// :: class extends Mappable\n// A mapping represents a pipeline of zero or more [step\n// maps](#transform.StepMap). It has special provisions for losslessly\n// handling mapping positions through a series of steps in which some\n// steps are inverted versions of earlier steps. (This comes up when\n// ‘[rebasing](/docs/guide/#transform.rebasing)’ steps for\n// collaboration or history management.)\nvar Mapping = function Mapping(maps, mirror, from, to) {\n // :: [StepMap]\n // The step maps in this mapping.\n this.maps = maps || [];\n // :: number\n // The starting position in the `maps` array, used when `map` or\n // `mapResult` is called.\n this.from = from || 0;\n // :: number\n // The end position in the `maps` array.\n this.to = to == null ? this.maps.length : to;\n this.mirror = mirror;\n};\n\n// :: (?number, ?number) → Mapping\n// Create a mapping that maps only through a part of this one.\nMapping.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.maps.length;\n\n return new Mapping(this.maps, this.mirror, from, to)\n};\n\nMapping.prototype.copy = function copy () {\n return new Mapping(this.maps.slice(), this.mirror && this.mirror.slice(), this.from, this.to)\n};\n\n// :: (StepMap, ?number)\n// Add a step map to the end of this mapping. If `mirrors` is\n// given, it should be the index of the step map that is the mirror\n// image of this one.\nMapping.prototype.appendMap = function appendMap (map, mirrors) {\n this.to = this.maps.push(map);\n if (mirrors != null) { this.setMirror(this.maps.length - 1, mirrors); }\n};\n\n// :: (Mapping)\n// Add all the step maps in a given mapping to this one (preserving\n// mirroring information).\nMapping.prototype.appendMapping = function appendMapping (mapping) {\n for (var i = 0, startSize = this.maps.length; i < mapping.maps.length; i++) {\n var mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i], mirr != null && mirr < i ? startSize + mirr : null);\n }\n};\n\n// :: (number) → ?number\n// Finds the offset of the step map that mirrors the map at the\n// given offset, in this mapping (as per the second argument to\n// `appendMap`).\nMapping.prototype.getMirror = function getMirror (n) {\n if (this.mirror) { for (var i = 0; i < this.mirror.length; i++)\n { if (this.mirror[i] == n) { return this.mirror[i + (i % 2 ? -1 : 1)] } } }\n};\n\nMapping.prototype.setMirror = function setMirror (n, m) {\n if (!this.mirror) { this.mirror = []; }\n this.mirror.push(n, m);\n};\n\n// :: (Mapping)\n// Append the inverse of the given mapping to this one.\nMapping.prototype.appendMappingInverted = function appendMappingInverted (mapping) {\n for (var i = mapping.maps.length - 1, totalSize = this.maps.length + mapping.maps.length; i >= 0; i--) {\n var mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i].invert(), mirr != null && mirr > i ? totalSize - mirr - 1 : null);\n }\n};\n\n// :: () → Mapping\n// Create an inverted version of this mapping.\nMapping.prototype.invert = function invert () {\n var inverse = new Mapping;\n inverse.appendMappingInverted(this);\n return inverse\n};\n\n// : (number, ?number) → number\n// Map a position through this mapping.\nMapping.prototype.map = function map (pos, assoc) {\n if ( assoc === void 0 ) assoc = 1;\n\n if (this.mirror) { return this._map(pos, assoc, true) }\n for (var i = this.from; i < this.to; i++)\n { pos = this.maps[i].map(pos, assoc); }\n return pos\n};\n\n// : (number, ?number) → MapResult\n// Map a position through this mapping, returning a mapping\n// result.\nMapping.prototype.mapResult = function mapResult (pos, assoc) {\n if ( assoc === void 0 ) assoc = 1;\n return this._map(pos, assoc, false) };\n\nMapping.prototype._map = function _map (pos, assoc, simple) {\n var deleted = false;\n\n for (var i = this.from; i < this.to; i++) {\n var map = this.maps[i], result = map.mapResult(pos, assoc);\n if (result.recover != null) {\n var corr = this.getMirror(i);\n if (corr != null && corr > i && corr < this.to) {\n i = corr;\n pos = this.maps[corr].recover(result.recover);\n continue\n }\n }\n\n if (result.deleted) { deleted = true; }\n pos = result.pos;\n }\n\n return simple ? pos : new MapResult(pos, deleted)\n};\n\nfunction TransformError(message) {\n var err = Error.call(this, message);\n err.__proto__ = TransformError.prototype;\n return err\n}\n\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\nTransformError.prototype.name = \"TransformError\";\n\n// ::- Abstraction to build up and track an array of\n// [steps](#transform.Step) representing a document transformation.\n//\n// Most transforming methods return the `Transform` object itself, so\n// that they can be chained.\nvar Transform = function Transform(doc) {\n // :: Node\n // The current document (the result of applying the steps in the\n // transform).\n this.doc = doc;\n // :: [Step]\n // The steps in this transform.\n this.steps = [];\n // :: [Node]\n // The documents before each of the steps.\n this.docs = [];\n // :: Mapping\n // A mapping with the maps for each of the steps in this transform.\n this.mapping = new Mapping;\n};\n\nvar prototypeAccessors = { before: { configurable: true },docChanged: { configurable: true } };\n\n// :: Node The starting document.\nprototypeAccessors.before.get = function () { return this.docs.length ? this.docs[0] : this.doc };\n\n// :: (step: Step) → this\n// Apply a new step in this transform, saving the result. Throws an\n// error when the step fails.\nTransform.prototype.step = function step (object) {\n var result = this.maybeStep(object);\n if (result.failed) { throw new TransformError(result.failed) }\n return this\n};\n\n// :: (Step) → StepResult\n// Try to apply a step in this transformation, ignoring it if it\n// fails. Returns the step result.\nTransform.prototype.maybeStep = function maybeStep (step) {\n var result = step.apply(this.doc);\n if (!result.failed) { this.addStep(step, result.doc); }\n return result\n};\n\n// :: bool\n// True when the document has been changed (when there are any\n// steps).\nprototypeAccessors.docChanged.get = function () {\n return this.steps.length > 0\n};\n\nTransform.prototype.addStep = function addStep (step, doc) {\n this.docs.push(this.doc);\n this.steps.push(step);\n this.mapping.appendMap(step.getMap());\n this.doc = doc;\n};\n\nObject.defineProperties( Transform.prototype, prototypeAccessors );\n\nfunction mustOverride() { throw new Error(\"Override me\") }\n\nvar stepsByID = Object.create(null);\n\n// ::- A step object represents an atomic change. It generally applies\n// only to the document it was created for, since the positions\n// stored in it will only make sense for that document.\n//\n// New steps are defined by creating classes that extend `Step`,\n// overriding the `apply`, `invert`, `map`, `getMap` and `fromJSON`\n// methods, and registering your class with a unique\n// JSON-serialization identifier using\n// [`Step.jsonID`](#transform.Step^jsonID).\nvar Step = function Step () {};\n\nStep.prototype.apply = function apply (_doc) { return mustOverride() };\n\n// :: () → StepMap\n// Get the step map that represents the changes made by this step,\n// and which can be used to transform between positions in the old\n// and the new document.\nStep.prototype.getMap = function getMap () { return StepMap.empty };\n\n// :: (doc: Node) → Step\n// Create an inverted version of this step. Needs the document as it\n// was before the step as argument.\nStep.prototype.invert = function invert (_doc) { return mustOverride() };\n\n// :: (mapping: Mappable) → ?Step\n// Map this step through a mappable thing, returning either a\n// version of that step with its positions adjusted, or `null` if\n// the step was entirely deleted by the mapping.\nStep.prototype.map = function map (_mapping) { return mustOverride() };\n\n// :: (other: Step) → ?Step\n// Try to merge this step with another one, to be applied directly\n// after it. Returns the merged step when possible, null if the\n// steps can't be merged.\nStep.prototype.merge = function merge (_other) { return null };\n\n// :: () → Object\n// Create a JSON-serializeable representation of this step. When\n// defining this for a custom subclass, make sure the result object\n// includes the step type's [JSON id](#transform.Step^jsonID) under\n// the `stepType` property.\nStep.prototype.toJSON = function toJSON () { return mustOverride() };\n\n// :: (Schema, Object) → Step\n// Deserialize a step from its JSON representation. Will call\n// through to the step class' own implementation of this method.\nStep.fromJSON = function fromJSON (schema, json) {\n if (!json || !json.stepType) { throw new RangeError(\"Invalid input for Step.fromJSON\") }\n var type = stepsByID[json.stepType];\n if (!type) { throw new RangeError((\"No step type \" + (json.stepType) + \" defined\")) }\n return type.fromJSON(schema, json)\n};\n\n// :: (string, constructor)\n// To be able to serialize steps to JSON, each step needs a string\n// ID to attach to its JSON representation. Use this method to\n// register an ID for your step classes. Try to pick something\n// that's unlikely to clash with steps from other modules.\nStep.jsonID = function jsonID (id, stepClass) {\n if (id in stepsByID) { throw new RangeError(\"Duplicate use of step JSON ID \" + id) }\n stepsByID[id] = stepClass;\n stepClass.prototype.jsonID = id;\n return stepClass\n};\n\n// ::- The result of [applying](#transform.Step.apply) a step. Contains either a\n// new document or a failure value.\nvar StepResult = function StepResult(doc, failed) {\n // :: ?Node The transformed document.\n this.doc = doc;\n // :: ?string Text providing information about a failed step.\n this.failed = failed;\n};\n\n// :: (Node) → StepResult\n// Create a successful step result.\nStepResult.ok = function ok (doc) { return new StepResult(doc, null) };\n\n// :: (string) → StepResult\n// Create a failed step result.\nStepResult.fail = function fail (message) { return new StepResult(null, message) };\n\n// :: (Node, number, number, Slice) → StepResult\n// Call [`Node.replace`](#model.Node.replace) with the given\n// arguments. Create a successful result if it succeeds, and a\n// failed one if it throws a `ReplaceError`.\nStepResult.fromReplace = function fromReplace (doc, from, to, slice) {\n try {\n return StepResult.ok(doc.replace(from, to, slice))\n } catch (e) {\n if (e instanceof ReplaceError) { return StepResult.fail(e.message) }\n throw e\n }\n};\n\n// ::- Replace a part of the document with a slice of new content.\nvar ReplaceStep = /*@__PURE__*/(function (Step) {\n function ReplaceStep(from, to, slice, structure) {\n Step.call(this);\n this.from = from;\n this.to = to;\n this.slice = slice;\n this.structure = !!structure;\n }\n\n if ( Step ) ReplaceStep.__proto__ = Step;\n ReplaceStep.prototype = Object.create( Step && Step.prototype );\n ReplaceStep.prototype.constructor = ReplaceStep;\n\n ReplaceStep.prototype.apply = function apply (doc) {\n if (this.structure && contentBetween(doc, this.from, this.to))\n { return StepResult.fail(\"Structure replace would overwrite content\") }\n return StepResult.fromReplace(doc, this.from, this.to, this.slice)\n };\n\n ReplaceStep.prototype.getMap = function getMap () {\n return new StepMap([this.from, this.to - this.from, this.slice.size])\n };\n\n ReplaceStep.prototype.invert = function invert (doc) {\n return new ReplaceStep(this.from, this.from + this.slice.size, doc.slice(this.from, this.to))\n };\n\n ReplaceStep.prototype.map = function map (mapping) {\n var from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted) { return null }\n return new ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice)\n };\n\n ReplaceStep.prototype.merge = function merge (other) {\n if (!(other instanceof ReplaceStep) || other.structure != this.structure) { return null }\n\n if (this.from + this.slice.size == other.from && !this.slice.openEnd && !other.slice.openStart) {\n var slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(this.slice.content.append(other.slice.content), this.slice.openStart, other.slice.openEnd);\n return new ReplaceStep(this.from, this.to + (other.to - other.from), slice, this.structure)\n } else if (other.to == this.from && !this.slice.openStart && !other.slice.openEnd) {\n var slice$1 = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(other.slice.content.append(this.slice.content), other.slice.openStart, this.slice.openEnd);\n return new ReplaceStep(other.from, this.to, slice$1, this.structure)\n } else {\n return null\n }\n };\n\n ReplaceStep.prototype.toJSON = function toJSON () {\n var json = {stepType: \"replace\", from: this.from, to: this.to};\n if (this.slice.size) { json.slice = this.slice.toJSON(); }\n if (this.structure) { json.structure = true; }\n return json\n };\n\n ReplaceStep.fromJSON = function fromJSON (schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n { throw new RangeError(\"Invalid input for ReplaceStep.fromJSON\") }\n return new ReplaceStep(json.from, json.to, Slice.fromJSON(schema, json.slice), !!json.structure)\n };\n\n return ReplaceStep;\n}(Step));\n\nStep.jsonID(\"replace\", ReplaceStep);\n\n// ::- Replace a part of the document with a slice of content, but\n// preserve a range of the replaced content by moving it into the\n// slice.\nvar ReplaceAroundStep = /*@__PURE__*/(function (Step) {\n function ReplaceAroundStep(from, to, gapFrom, gapTo, slice, insert, structure) {\n Step.call(this);\n this.from = from;\n this.to = to;\n this.gapFrom = gapFrom;\n this.gapTo = gapTo;\n this.slice = slice;\n this.insert = insert;\n this.structure = !!structure;\n }\n\n if ( Step ) ReplaceAroundStep.__proto__ = Step;\n ReplaceAroundStep.prototype = Object.create( Step && Step.prototype );\n ReplaceAroundStep.prototype.constructor = ReplaceAroundStep;\n\n ReplaceAroundStep.prototype.apply = function apply (doc) {\n if (this.structure && (contentBetween(doc, this.from, this.gapFrom) ||\n contentBetween(doc, this.gapTo, this.to)))\n { return StepResult.fail(\"Structure gap-replace would overwrite content\") }\n\n var gap = doc.slice(this.gapFrom, this.gapTo);\n if (gap.openStart || gap.openEnd)\n { return StepResult.fail(\"Gap is not a flat range\") }\n var inserted = this.slice.insertAt(this.insert, gap.content);\n if (!inserted) { return StepResult.fail(\"Content does not fit in gap\") }\n return StepResult.fromReplace(doc, this.from, this.to, inserted)\n };\n\n ReplaceAroundStep.prototype.getMap = function getMap () {\n return new StepMap([this.from, this.gapFrom - this.from, this.insert,\n this.gapTo, this.to - this.gapTo, this.slice.size - this.insert])\n };\n\n ReplaceAroundStep.prototype.invert = function invert (doc) {\n var gap = this.gapTo - this.gapFrom;\n return new ReplaceAroundStep(this.from, this.from + this.slice.size + gap,\n this.from + this.insert, this.from + this.insert + gap,\n doc.slice(this.from, this.to).removeBetween(this.gapFrom - this.from, this.gapTo - this.from),\n this.gapFrom - this.from, this.structure)\n };\n\n ReplaceAroundStep.prototype.map = function map (mapping) {\n var from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n var gapFrom = mapping.map(this.gapFrom, -1), gapTo = mapping.map(this.gapTo, 1);\n if ((from.deleted && to.deleted) || gapFrom < from.pos || gapTo > to.pos) { return null }\n return new ReplaceAroundStep(from.pos, to.pos, gapFrom, gapTo, this.slice, this.insert, this.structure)\n };\n\n ReplaceAroundStep.prototype.toJSON = function toJSON () {\n var json = {stepType: \"replaceAround\", from: this.from, to: this.to,\n gapFrom: this.gapFrom, gapTo: this.gapTo, insert: this.insert};\n if (this.slice.size) { json.slice = this.slice.toJSON(); }\n if (this.structure) { json.structure = true; }\n return json\n };\n\n ReplaceAroundStep.fromJSON = function fromJSON (schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\" ||\n typeof json.gapFrom != \"number\" || typeof json.gapTo != \"number\" || typeof json.insert != \"number\")\n { throw new RangeError(\"Invalid input for ReplaceAroundStep.fromJSON\") }\n return new ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo,\n Slice.fromJSON(schema, json.slice), json.insert, !!json.structure)\n };\n\n return ReplaceAroundStep;\n}(Step));\n\nStep.jsonID(\"replaceAround\", ReplaceAroundStep);\n\nfunction contentBetween(doc, from, to) {\n var $from = doc.resolve(from), dist = to - from, depth = $from.depth;\n while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {\n depth--;\n dist--;\n }\n if (dist > 0) {\n var next = $from.node(depth).maybeChild($from.indexAfter(depth));\n while (dist > 0) {\n if (!next || next.isLeaf) { return true }\n next = next.firstChild;\n dist--;\n }\n }\n return false\n}\n\nfunction canCut(node, start, end) {\n return (start == 0 || node.canReplace(start, node.childCount)) &&\n (end == node.childCount || node.canReplace(0, end))\n}\n\n// :: (NodeRange) → ?number\n// Try to find a target depth to which the content in the given range\n// can be lifted. Will not go across\n// [isolating](#model.NodeSpec.isolating) parent nodes.\nfunction liftTarget(range) {\n var parent = range.parent;\n var content = parent.content.cutByIndex(range.startIndex, range.endIndex);\n for (var depth = range.depth;; --depth) {\n var node = range.$from.node(depth);\n var index = range.$from.index(depth), endIndex = range.$to.indexAfter(depth);\n if (depth < range.depth && node.canReplace(index, endIndex, content))\n { return depth }\n if (depth == 0 || node.type.spec.isolating || !canCut(node, index, endIndex)) { break }\n }\n}\n\n// :: (NodeRange, number) → this\n// Split the content in the given range off from its parent, if there\n// is sibling content before or after it, and move it up the tree to\n// the depth specified by `target`. You'll probably want to use\n// [`liftTarget`](#transform.liftTarget) to compute `target`, to make\n// sure the lift is valid.\nTransform.prototype.lift = function(range, target) {\n var $from = range.$from;\n var $to = range.$to;\n var depth = range.depth;\n\n var gapStart = $from.before(depth + 1), gapEnd = $to.after(depth + 1);\n var start = gapStart, end = gapEnd;\n\n var before = Fragment.empty, openStart = 0;\n for (var d = depth, splitting = false; d > target; d--)\n { if (splitting || $from.index(d) > 0) {\n splitting = true;\n before = Fragment.from($from.node(d).copy(before));\n openStart++;\n } else {\n start--;\n } }\n var after = Fragment.empty, openEnd = 0;\n for (var d$1 = depth, splitting$1 = false; d$1 > target; d$1--)\n { if (splitting$1 || $to.after(d$1 + 1) < $to.end(d$1)) {\n splitting$1 = true;\n after = Fragment.from($to.node(d$1).copy(after));\n openEnd++;\n } else {\n end++;\n } }\n\n return this.step(new ReplaceAroundStep(start, end, gapStart, gapEnd,\n new Slice(before.append(after), openStart, openEnd),\n before.size - openStart, true))\n};\n\n// :: (NodeRange, NodeType, ?Object, ?NodeRange) → ?[{type: NodeType, attrs: ?Object}]\n// Try to find a valid way to wrap the content in the given range in a\n// node of the given type. May introduce extra nodes around and inside\n// the wrapper node, if necessary. Returns null if no valid wrapping\n// could be found. When `innerRange` is given, that range's content is\n// used as the content to fit into the wrapping, instead of the\n// content of `range`.\nfunction findWrapping(range, nodeType, attrs, innerRange) {\n if ( innerRange === void 0 ) innerRange = range;\n\n var around = findWrappingOutside(range, nodeType);\n var inner = around && findWrappingInside(innerRange, nodeType);\n if (!inner) { return null }\n return around.map(withAttrs).concat({type: nodeType, attrs: attrs}).concat(inner.map(withAttrs))\n}\n\nfunction withAttrs(type) { return {type: type, attrs: null} }\n\nfunction findWrappingOutside(range, type) {\n var parent = range.parent;\n var startIndex = range.startIndex;\n var endIndex = range.endIndex;\n var around = parent.contentMatchAt(startIndex).findWrapping(type);\n if (!around) { return null }\n var outer = around.length ? around[0] : type;\n return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null\n}\n\nfunction findWrappingInside(range, type) {\n var parent = range.parent;\n var startIndex = range.startIndex;\n var endIndex = range.endIndex;\n var inner = parent.child(startIndex);\n var inside = type.contentMatch.findWrapping(inner.type);\n if (!inside) { return null }\n var lastType = inside.length ? inside[inside.length - 1] : type;\n var innerMatch = lastType.contentMatch;\n for (var i = startIndex; innerMatch && i < endIndex; i++)\n { innerMatch = innerMatch.matchType(parent.child(i).type); }\n if (!innerMatch || !innerMatch.validEnd) { return null }\n return inside\n}\n\n// :: (NodeRange, [{type: NodeType, attrs: ?Object}]) → this\n// Wrap the given [range](#model.NodeRange) in the given set of wrappers.\n// The wrappers are assumed to be valid in this position, and should\n// probably be computed with [`findWrapping`](#transform.findWrapping).\nTransform.prototype.wrap = function(range, wrappers) {\n var content = Fragment.empty;\n for (var i = wrappers.length - 1; i >= 0; i--)\n { content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content)); }\n\n var start = range.start, end = range.end;\n return this.step(new ReplaceAroundStep(start, end, start, end, new Slice(content, 0, 0), wrappers.length, true))\n};\n\n// :: (number, ?number, NodeType, ?Object) → this\n// Set the type of all textblocks (partly) between `from` and `to` to\n// the given node type with the given attributes.\nTransform.prototype.setBlockType = function(from, to, type, attrs) {\n var this$1 = this;\n if ( to === void 0 ) to = from;\n\n if (!type.isTextblock) { throw new RangeError(\"Type given to setBlockType should be a textblock\") }\n var mapFrom = this.steps.length;\n this.doc.nodesBetween(from, to, function (node, pos) {\n if (node.isTextblock && !node.hasMarkup(type, attrs) && canChangeType(this$1.doc, this$1.mapping.slice(mapFrom).map(pos), type)) {\n // Ensure all markup that isn't allowed in the new node type is cleared\n this$1.clearIncompatible(this$1.mapping.slice(mapFrom).map(pos, 1), type);\n var mapping = this$1.mapping.slice(mapFrom);\n var startM = mapping.map(pos, 1), endM = mapping.map(pos + node.nodeSize, 1);\n this$1.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1,\n new Slice(Fragment.from(type.create(attrs, null, node.marks)), 0, 0), 1, true));\n return false\n }\n });\n return this\n};\n\nfunction canChangeType(doc, pos, type) {\n var $pos = doc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type)\n}\n\n// :: (number, ?NodeType, ?Object, ?[Mark]) → this\n// Change the type, attributes, and/or marks of the node at `pos`.\n// When `type` isn't given, the existing node type is preserved,\nTransform.prototype.setNodeMarkup = function(pos, type, attrs, marks) {\n var node = this.doc.nodeAt(pos);\n if (!node) { throw new RangeError(\"No node at given position\") }\n if (!type) { type = node.type; }\n var newNode = type.create(attrs, null, marks || node.marks);\n if (node.isLeaf)\n { return this.replaceWith(pos, pos + node.nodeSize, newNode) }\n\n if (!type.validContent(node.content))\n { throw new RangeError(\"Invalid content for node type \" + type.name) }\n\n return this.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1,\n new Slice(Fragment.from(newNode), 0, 0), 1, true))\n};\n\n// :: (Node, number, number, ?[?{type: NodeType, attrs: ?Object}]) → bool\n// Check whether splitting at the given position is allowed.\nfunction canSplit(doc, pos, depth, typesAfter) {\n if ( depth === void 0 ) depth = 1;\n\n var $pos = doc.resolve(pos), base = $pos.depth - depth;\n var innerType = (typesAfter && typesAfter[typesAfter.length - 1]) || $pos.parent;\n if (base < 0 || $pos.parent.type.spec.isolating ||\n !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) ||\n !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount)))\n { return false }\n for (var d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {\n var node = $pos.node(d), index$1 = $pos.index(d);\n if (node.type.spec.isolating) { return false }\n var rest = node.content.cutByIndex(index$1, node.childCount);\n var after = (typesAfter && typesAfter[i]) || node;\n if (after != node) { rest = rest.replaceChild(0, after.type.create(after.attrs)); }\n if (!node.canReplace(index$1 + 1, node.childCount) || !after.type.validContent(rest))\n { return false }\n }\n var index = $pos.indexAfter(base);\n var baseType = typesAfter && typesAfter[0];\n return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type)\n}\n\n// :: (number, ?number, ?[?{type: NodeType, attrs: ?Object}]) → this\n// Split the node at the given position, and optionally, if `depth` is\n// greater than one, any number of nodes above that. By default, the\n// parts split off will inherit the node type of the original node.\n// This can be changed by passing an array of types and attributes to\n// use after the split.\nTransform.prototype.split = function(pos, depth, typesAfter) {\n if ( depth === void 0 ) depth = 1;\n\n var $pos = this.doc.resolve(pos), before = Fragment.empty, after = Fragment.empty;\n for (var d = $pos.depth, e = $pos.depth - depth, i = depth - 1; d > e; d--, i--) {\n before = Fragment.from($pos.node(d).copy(before));\n var typeAfter = typesAfter && typesAfter[i];\n after = Fragment.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d).copy(after));\n }\n return this.step(new ReplaceStep(pos, pos, new Slice(before.append(after), depth, depth), true))\n};\n\n// :: (Node, number) → bool\n// Test whether the blocks before and after a given position can be\n// joined.\nfunction canJoin(doc, pos) {\n var $pos = doc.resolve(pos), index = $pos.index();\n return joinable($pos.nodeBefore, $pos.nodeAfter) &&\n $pos.parent.canReplace(index, index + 1)\n}\n\nfunction joinable(a, b) {\n return a && b && !a.isLeaf && a.canAppend(b)\n}\n\n// :: (Node, number, ?number) → ?number\n// Find an ancestor of the given position that can be joined to the\n// block before (or after if `dir` is positive). Returns the joinable\n// point, if any.\nfunction joinPoint(doc, pos, dir) {\n if ( dir === void 0 ) dir = -1;\n\n var $pos = doc.resolve(pos);\n for (var d = $pos.depth;; d--) {\n var before = (void 0), after = (void 0), index = $pos.index(d);\n if (d == $pos.depth) {\n before = $pos.nodeBefore;\n after = $pos.nodeAfter;\n } else if (dir > 0) {\n before = $pos.node(d + 1);\n index++;\n after = $pos.node(d).maybeChild(index);\n } else {\n before = $pos.node(d).maybeChild(index - 1);\n after = $pos.node(d + 1);\n }\n if (before && !before.isTextblock && joinable(before, after) &&\n $pos.node(d).canReplace(index, index + 1)) { return pos }\n if (d == 0) { break }\n pos = dir < 0 ? $pos.before(d) : $pos.after(d);\n }\n}\n\n// :: (number, ?number) → this\n// Join the blocks around the given position. If depth is 2, their\n// last and first siblings are also joined, and so on.\nTransform.prototype.join = function(pos, depth) {\n if ( depth === void 0 ) depth = 1;\n\n var step = new ReplaceStep(pos - depth, pos + depth, Slice.empty, true);\n return this.step(step)\n};\n\n// :: (Node, number, NodeType) → ?number\n// Try to find a point where a node of the given type can be inserted\n// near `pos`, by searching up the node hierarchy when `pos` itself\n// isn't a valid place but is at the start or end of a node. Return\n// null if no position was found.\nfunction insertPoint(doc, pos, nodeType) {\n var $pos = doc.resolve(pos);\n if ($pos.parent.canReplaceWith($pos.index(), $pos.index(), nodeType)) { return pos }\n\n if ($pos.parentOffset == 0)\n { for (var d = $pos.depth - 1; d >= 0; d--) {\n var index = $pos.index(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType)) { return $pos.before(d + 1) }\n if (index > 0) { return null }\n } }\n if ($pos.parentOffset == $pos.parent.content.size)\n { for (var d$1 = $pos.depth - 1; d$1 >= 0; d$1--) {\n var index$1 = $pos.indexAfter(d$1);\n if ($pos.node(d$1).canReplaceWith(index$1, index$1, nodeType)) { return $pos.after(d$1 + 1) }\n if (index$1 < $pos.node(d$1).childCount) { return null }\n } }\n}\n\n// :: (Node, number, Slice) → ?number\n// Finds a position at or around the given position where the given\n// slice can be inserted. Will look at parent nodes' nearest boundary\n// and try there, even if the original position wasn't directly at the\n// start or end of that node. Returns null when no position was found.\nfunction dropPoint(doc, pos, slice) {\n var $pos = doc.resolve(pos);\n if (!slice.content.size) { return pos }\n var content = slice.content;\n for (var i = 0; i < slice.openStart; i++) { content = content.firstChild.content; }\n for (var pass = 1; pass <= (slice.openStart == 0 && slice.size ? 2 : 1); pass++) {\n for (var d = $pos.depth; d >= 0; d--) {\n var bias = d == $pos.depth ? 0 : $pos.pos <= ($pos.start(d + 1) + $pos.end(d + 1)) / 2 ? -1 : 1;\n var insertPos = $pos.index(d) + (bias > 0 ? 1 : 0);\n if (pass == 1\n ? $pos.node(d).canReplace(insertPos, insertPos, content)\n : $pos.node(d).contentMatchAt(insertPos).findWrapping(content.firstChild.type))\n { return bias == 0 ? $pos.pos : bias < 0 ? $pos.before(d + 1) : $pos.after(d + 1) }\n }\n }\n return null\n}\n\nfunction mapFragment(fragment, f, parent) {\n var mapped = [];\n for (var i = 0; i < fragment.childCount; i++) {\n var child = fragment.child(i);\n if (child.content.size) { child = child.copy(mapFragment(child.content, f, child)); }\n if (child.isInline) { child = f(child, parent, i); }\n mapped.push(child);\n }\n return Fragment.fromArray(mapped)\n}\n\n// ::- Add a mark to all inline content between two positions.\nvar AddMarkStep = /*@__PURE__*/(function (Step) {\n function AddMarkStep(from, to, mark) {\n Step.call(this);\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n\n if ( Step ) AddMarkStep.__proto__ = Step;\n AddMarkStep.prototype = Object.create( Step && Step.prototype );\n AddMarkStep.prototype.constructor = AddMarkStep;\n\n AddMarkStep.prototype.apply = function apply (doc) {\n var this$1 = this;\n\n var oldSlice = doc.slice(this.from, this.to), $from = doc.resolve(this.from);\n var parent = $from.node($from.sharedDepth(this.to));\n var slice = new Slice(mapFragment(oldSlice.content, function (node, parent) {\n if (!parent.type.allowsMarkType(this$1.mark.type)) { return node }\n return node.mark(this$1.mark.addToSet(node.marks))\n }, parent), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice)\n };\n\n AddMarkStep.prototype.invert = function invert () {\n return new RemoveMarkStep(this.from, this.to, this.mark)\n };\n\n AddMarkStep.prototype.map = function map (mapping) {\n var from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos) { return null }\n return new AddMarkStep(from.pos, to.pos, this.mark)\n };\n\n AddMarkStep.prototype.merge = function merge (other) {\n if (other instanceof AddMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n { return new AddMarkStep(Math.min(this.from, other.from),\n Math.max(this.to, other.to), this.mark) }\n };\n\n AddMarkStep.prototype.toJSON = function toJSON () {\n return {stepType: \"addMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to}\n };\n\n AddMarkStep.fromJSON = function fromJSON (schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n { throw new RangeError(\"Invalid input for AddMarkStep.fromJSON\") }\n return new AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark))\n };\n\n return AddMarkStep;\n}(Step));\n\nStep.jsonID(\"addMark\", AddMarkStep);\n\n// ::- Remove a mark from all inline content between two positions.\nvar RemoveMarkStep = /*@__PURE__*/(function (Step) {\n function RemoveMarkStep(from, to, mark) {\n Step.call(this);\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n\n if ( Step ) RemoveMarkStep.__proto__ = Step;\n RemoveMarkStep.prototype = Object.create( Step && Step.prototype );\n RemoveMarkStep.prototype.constructor = RemoveMarkStep;\n\n RemoveMarkStep.prototype.apply = function apply (doc) {\n var this$1 = this;\n\n var oldSlice = doc.slice(this.from, this.to);\n var slice = new Slice(mapFragment(oldSlice.content, function (node) {\n return node.mark(this$1.mark.removeFromSet(node.marks))\n }), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice)\n };\n\n RemoveMarkStep.prototype.invert = function invert () {\n return new AddMarkStep(this.from, this.to, this.mark)\n };\n\n RemoveMarkStep.prototype.map = function map (mapping) {\n var from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos) { return null }\n return new RemoveMarkStep(from.pos, to.pos, this.mark)\n };\n\n RemoveMarkStep.prototype.merge = function merge (other) {\n if (other instanceof RemoveMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n { return new RemoveMarkStep(Math.min(this.from, other.from),\n Math.max(this.to, other.to), this.mark) }\n };\n\n RemoveMarkStep.prototype.toJSON = function toJSON () {\n return {stepType: \"removeMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to}\n };\n\n RemoveMarkStep.fromJSON = function fromJSON (schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n { throw new RangeError(\"Invalid input for RemoveMarkStep.fromJSON\") }\n return new RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark))\n };\n\n return RemoveMarkStep;\n}(Step));\n\nStep.jsonID(\"removeMark\", RemoveMarkStep);\n\n// :: (number, number, Mark) → this\n// Add the given mark to the inline content between `from` and `to`.\nTransform.prototype.addMark = function(from, to, mark) {\n var this$1 = this;\n\n var removed = [], added = [], removing = null, adding = null;\n this.doc.nodesBetween(from, to, function (node, pos, parent) {\n if (!node.isInline) { return }\n var marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n var start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n var newSet = mark.addToSet(marks);\n\n for (var i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to == start && removing.mark.eq(marks[i]))\n { removing.to = end; }\n else\n { removed.push(removing = new RemoveMarkStep(start, end, marks[i])); }\n }\n }\n\n if (adding && adding.to == start)\n { adding.to = end; }\n else\n { added.push(adding = new AddMarkStep(start, end, mark)); }\n }\n });\n\n removed.forEach(function (s) { return this$1.step(s); });\n added.forEach(function (s) { return this$1.step(s); });\n return this\n};\n\n// :: (number, number, ?union) → this\n// Remove marks from inline nodes between `from` and `to`. When `mark`\n// is a single mark, remove precisely that mark. When it is a mark type,\n// remove all marks of that type. When it is null, remove all marks of\n// any type.\nTransform.prototype.removeMark = function(from, to, mark) {\n var this$1 = this;\n if ( mark === void 0 ) mark = null;\n\n var matched = [], step = 0;\n this.doc.nodesBetween(from, to, function (node, pos) {\n if (!node.isInline) { return }\n step++;\n var toRemove = null;\n if (mark instanceof MarkType) {\n var found = mark.isInSet(node.marks);\n if (found) { toRemove = [found]; }\n } else if (mark) {\n if (mark.isInSet(node.marks)) { toRemove = [mark]; }\n } else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n var end = Math.min(pos + node.nodeSize, to);\n for (var i = 0; i < toRemove.length; i++) {\n var style = toRemove[i], found$1 = (void 0);\n for (var j = 0; j < matched.length; j++) {\n var m = matched[j];\n if (m.step == step - 1 && style.eq(matched[j].style)) { found$1 = m; }\n }\n if (found$1) {\n found$1.to = end;\n found$1.step = step;\n } else {\n matched.push({style: style, from: Math.max(pos, from), to: end, step: step});\n }\n }\n }\n });\n matched.forEach(function (m) { return this$1.step(new RemoveMarkStep(m.from, m.to, m.style)); });\n return this\n};\n\n// :: (number, NodeType, ?ContentMatch) → this\n// Removes all marks and nodes from the content of the node at `pos`\n// that don't match the given new parent node type. Accepts an\n// optional starting [content match](#model.ContentMatch) as third\n// argument.\nTransform.prototype.clearIncompatible = function(pos, parentType, match) {\n if ( match === void 0 ) match = parentType.contentMatch;\n\n var node = this.doc.nodeAt(pos);\n var delSteps = [], cur = pos + 1;\n for (var i = 0; i < node.childCount; i++) {\n var child = node.child(i), end = cur + child.nodeSize;\n var allowed = match.matchType(child.type, child.attrs);\n if (!allowed) {\n delSteps.push(new ReplaceStep(cur, end, Slice.empty));\n } else {\n match = allowed;\n for (var j = 0; j < child.marks.length; j++) { if (!parentType.allowsMarkType(child.marks[j].type))\n { this.step(new RemoveMarkStep(cur, end, child.marks[j])); } }\n }\n cur = end;\n }\n if (!match.validEnd) {\n var fill = match.fillBefore(Fragment.empty, true);\n this.replace(cur, cur, new Slice(fill, 0, 0));\n }\n for (var i$1 = delSteps.length - 1; i$1 >= 0; i$1--) { this.step(delSteps[i$1]); }\n return this\n};\n\n// :: (Node, number, ?number, ?Slice) → ?Step\n// ‘Fit’ a slice into a given position in the document, producing a\n// [step](#transform.Step) that inserts it. Will return null if\n// there's no meaningful way to insert the slice here, or inserting it\n// would be a no-op (an empty slice over an empty range).\nfunction replaceStep(doc, from, to, slice) {\n if ( to === void 0 ) to = from;\n if ( slice === void 0 ) slice = Slice.empty;\n\n if (from == to && !slice.size) { return null }\n\n var $from = doc.resolve(from), $to = doc.resolve(to);\n // Optimization -- avoid work if it's obvious that it's not needed.\n if (fitsTrivially($from, $to, slice)) { return new ReplaceStep(from, to, slice) }\n return new Fitter($from, $to, slice).fit()\n}\n\n// :: (number, ?number, ?Slice) → this\n// Replace the part of the document between `from` and `to` with the\n// given `slice`.\nTransform.prototype.replace = function(from, to, slice) {\n if ( to === void 0 ) to = from;\n if ( slice === void 0 ) slice = Slice.empty;\n\n var step = replaceStep(this.doc, from, to, slice);\n if (step) { this.step(step); }\n return this\n};\n\n// :: (number, number, union) → this\n// Replace the given range with the given content, which may be a\n// fragment, node, or array of nodes.\nTransform.prototype.replaceWith = function(from, to, content) {\n return this.replace(from, to, new Slice(Fragment.from(content), 0, 0))\n};\n\n// :: (number, number) → this\n// Delete the content between the given positions.\nTransform.prototype.delete = function(from, to) {\n return this.replace(from, to, Slice.empty)\n};\n\n// :: (number, union) → this\n// Insert the given content at the given position.\nTransform.prototype.insert = function(pos, content) {\n return this.replaceWith(pos, pos, content)\n};\n\nfunction fitsTrivially($from, $to, slice) {\n return !slice.openStart && !slice.openEnd && $from.start() == $to.start() &&\n $from.parent.canReplace($from.index(), $to.index(), slice.content)\n}\n\n// Algorithm for 'placing' the elements of a slice into a gap:\n//\n// We consider the content of each node that is open to the left to be\n// independently placeable. I.e. in , when the\n// paragraph on the left is open, \"foo\" can be placed (somewhere on\n// the left side of the replacement gap) independently from p(\"bar\").\n//\n// This class tracks the state of the placement progress in the\n// following properties:\n//\n// - `frontier` holds a stack of `{type, match}` objects that\n// represent the open side of the replacement. It starts at\n// `$from`, then moves forward as content is placed, and is finally\n// reconciled with `$to`.\n//\n// - `unplaced` is a slice that represents the content that hasn't\n// been placed yet.\n//\n// - `placed` is a fragment of placed content. Its open-start value\n// is implicit in `$from`, and its open-end value in `frontier`.\nvar Fitter = function Fitter($from, $to, slice) {\n this.$to = $to;\n this.$from = $from;\n this.unplaced = slice;\n\n this.frontier = [];\n for (var i = 0; i <= $from.depth; i++) {\n var node = $from.node(i);\n this.frontier.push({\n type: node.type,\n match: node.contentMatchAt($from.indexAfter(i))\n });\n }\n\n this.placed = Fragment.empty;\n for (var i$1 = $from.depth; i$1 > 0; i$1--)\n { this.placed = Fragment.from($from.node(i$1).copy(this.placed)); }\n};\n\nvar prototypeAccessors$1 = { depth: { configurable: true } };\n\nprototypeAccessors$1.depth.get = function () { return this.frontier.length - 1 };\n\nFitter.prototype.fit = function fit () {\n // As long as there's unplaced content, try to place some of it.\n // If that fails, either increase the open score of the unplaced\n // slice, or drop nodes from it, and then try again.\n while (this.unplaced.size) {\n var fit = this.findFittable();\n if (fit) { this.placeNodes(fit); }\n else { this.openMore() || this.dropNode(); }\n }\n // When there's inline content directly after the frontier _and_\n // directly after `this.$to`, we must generate a `ReplaceAround`\n // step that pulls that content into the node after the frontier.\n // That means the fitting must be done to the end of the textblock\n // node after `this.$to`, not `this.$to` itself.\n var moveInline = this.mustMoveInline(), placedSize = this.placed.size - this.depth - this.$from.depth;\n var $from = this.$from, $to = this.close(moveInline < 0 ? this.$to : $from.doc.resolve(moveInline));\n if (!$to) { return null }\n\n // If closing to `$to` succeeded, create a step\n var content = this.placed, openStart = $from.depth, openEnd = $to.depth;\n while (openStart && openEnd && content.childCount == 1) { // Normalize by dropping open parent nodes\n content = content.firstChild.content;\n openStart--; openEnd--;\n }\n var slice = new Slice(content, openStart, openEnd);\n if (moveInline > -1)\n { return new ReplaceAroundStep($from.pos, moveInline, this.$to.pos, this.$to.end(), slice, placedSize) }\n if (slice.size || $from.pos != this.$to.pos) // Don't generate no-op steps\n { return new ReplaceStep($from.pos, $to.pos, slice) }\n};\n\n// Find a position on the start spine of `this.unplaced` that has\n// content that can be moved somewhere on the frontier. Returns two\n// depths, one for the slice and one for the frontier.\nFitter.prototype.findFittable = function findFittable () {\n // Only try wrapping nodes (pass 2) after finding a place without\n // wrapping failed.\n for (var pass = 1; pass <= 2; pass++) {\n for (var sliceDepth = this.unplaced.openStart; sliceDepth >= 0; sliceDepth--) {\n var fragment = (void 0), parent = (void 0);\n if (sliceDepth) {\n parent = contentAt(this.unplaced.content, sliceDepth - 1).firstChild;\n fragment = parent.content;\n } else {\n fragment = this.unplaced.content;\n }\n var first = fragment.firstChild;\n for (var frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {\n var ref = this.frontier[frontierDepth];\n var type = ref.type;\n var match = ref.match;\n var wrap = (void 0), inject = (void 0);\n // In pass 1, if the next node matches, or there is no next\n // node but the parents look compatible, we've found a\n // place.\n if (pass == 1 && (first ? match.matchType(first.type) || (inject = match.fillBefore(Fragment.from(first), false))\n : type.compatibleContent(parent.type)))\n { return {sliceDepth: sliceDepth, frontierDepth: frontierDepth, parent: parent, inject: inject} }\n // In pass 2, look for a set of wrapping nodes that make\n // `first` fit here.\n else if (pass == 2 && first && (wrap = match.findWrapping(first.type)))\n { return {sliceDepth: sliceDepth, frontierDepth: frontierDepth, parent: parent, wrap: wrap} }\n // Don't continue looking further up if the parent node\n // would fit here.\n if (parent && match.matchType(parent.type)) { break }\n }\n }\n }\n};\n\nFitter.prototype.openMore = function openMore () {\n var ref = this.unplaced;\n var content = ref.content;\n var openStart = ref.openStart;\n var openEnd = ref.openEnd;\n var inner = contentAt(content, openStart);\n if (!inner.childCount || inner.firstChild.isLeaf) { return false }\n this.unplaced = new Slice(content, openStart + 1,\n Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));\n return true\n};\n\nFitter.prototype.dropNode = function dropNode () {\n var ref = this.unplaced;\n var content = ref.content;\n var openStart = ref.openStart;\n var openEnd = ref.openEnd;\n var inner = contentAt(content, openStart);\n if (inner.childCount <= 1 && openStart > 0) {\n var openAtEnd = content.size - openStart <= openStart + inner.size;\n this.unplaced = new Slice(dropFromFragment(content, openStart - 1, 1), openStart - 1,\n openAtEnd ? openStart - 1 : openEnd);\n } else {\n this.unplaced = new Slice(dropFromFragment(content, openStart, 1), openStart, openEnd);\n }\n};\n\n// : ({sliceDepth: number, frontierDepth: number, parent: ?Node, wrap: ?[NodeType], inject: ?Fragment})\n// Move content from the unplaced slice at `sliceDepth` to the\n// frontier node at `frontierDepth`. Close that frontier node when\n// applicable.\nFitter.prototype.placeNodes = function placeNodes (ref) {\n var sliceDepth = ref.sliceDepth;\n var frontierDepth = ref.frontierDepth;\n var parent = ref.parent;\n var inject = ref.inject;\n var wrap = ref.wrap;\n\n while (this.depth > frontierDepth) { this.closeFrontierNode(); }\n if (wrap) { for (var i = 0; i < wrap.length; i++) { this.openFrontierNode(wrap[i]); } }\n\n var slice = this.unplaced, fragment = parent ? parent.content : slice.content;\n var openStart = slice.openStart - sliceDepth;\n var taken = 0, add = [];\n var ref$1 = this.frontier[frontierDepth];\n var match = ref$1.match;\n var type = ref$1.type;\n if (inject) {\n for (var i$1 = 0; i$1 < inject.childCount; i$1++) { add.push(inject.child(i$1)); }\n match = match.matchFragment(inject);\n }\n // Computes the amount of (end) open nodes at the end of the\n // fragment. When 0, the parent is open, but no more. When\n // negative, nothing is open.\n var openEndCount = (fragment.size + sliceDepth) - (slice.content.size - slice.openEnd);\n // Scan over the fragment, fitting as many child nodes as\n // possible.\n while (taken < fragment.childCount) {\n var next = fragment.child(taken), matches = match.matchType(next.type);\n if (!matches) { break }\n taken++;\n if (taken > 1 || openStart == 0 || next.content.size) { // Drop empty open nodes\n match = matches;\n add.push(closeNodeStart(next.mark(type.allowedMarks(next.marks)), taken == 1 ? openStart : 0,\n taken == fragment.childCount ? openEndCount : -1));\n }\n }\n var toEnd = taken == fragment.childCount;\n if (!toEnd) { openEndCount = -1; }\n\n this.placed = addToFragment(this.placed, frontierDepth, Fragment.from(add));\n this.frontier[frontierDepth].match = match;\n\n // If the parent types match, and the entire node was moved, and\n // it's not open, close this frontier node right away.\n if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1)\n { this.closeFrontierNode(); }\n\n // Add new frontier nodes for any open nodes at the end.\n for (var i$2 = 0, cur = fragment; i$2 < openEndCount; i$2++) {\n var node = cur.lastChild;\n this.frontier.push({type: node.type, match: node.contentMatchAt(node.childCount)});\n cur = node.content;\n }\n\n // Update `this.unplaced`. Drop the entire node from which we\n // placed it we got to its end, otherwise just drop the placed\n // nodes.\n this.unplaced = !toEnd ? new Slice(dropFromFragment(slice.content, sliceDepth, taken), slice.openStart, slice.openEnd)\n : sliceDepth == 0 ? Slice.empty\n : new Slice(dropFromFragment(slice.content, sliceDepth - 1, 1),\n sliceDepth - 1, openEndCount < 0 ? slice.openEnd : sliceDepth - 1);\n};\n\nFitter.prototype.mustMoveInline = function mustMoveInline () {\n if (!this.$to.parent.isTextblock || this.$to.end() == this.$to.pos) { return -1 }\n var top = this.frontier[this.depth], level;\n if (!top.type.isTextblock || !contentAfterFits(this.$to, this.$to.depth, top.type, top.match, false) ||\n (this.$to.depth == this.depth && (level = this.findCloseLevel(this.$to)) && level.depth == this.depth)) { return -1 }\n\n var ref = this.$to;\n var depth = ref.depth;\n var after = this.$to.after(depth);\n while (depth > 1 && after == this.$to.end(--depth)) { ++after; }\n return after\n};\n\nFitter.prototype.findCloseLevel = function findCloseLevel ($to) {\n scan: for (var i = Math.min(this.depth, $to.depth); i >= 0; i--) {\n var ref = this.frontier[i];\n var match = ref.match;\n var type = ref.type;\n var dropInner = i < $to.depth && $to.end(i + 1) == $to.pos + ($to.depth - (i + 1));\n var fit = contentAfterFits($to, i, type, match, dropInner);\n if (!fit) { continue }\n for (var d = i - 1; d >= 0; d--) {\n var ref$1 = this.frontier[d];\n var match$1 = ref$1.match;\n var type$1 = ref$1.type;\n var matches = contentAfterFits($to, d, type$1, match$1, true);\n if (!matches || matches.childCount) { continue scan }\n }\n return {depth: i, fit: fit, move: dropInner ? $to.doc.resolve($to.after(i + 1)) : $to}\n }\n};\n\nFitter.prototype.close = function close ($to) {\n var close = this.findCloseLevel($to);\n if (!close) { return null }\n\n while (this.depth > close.depth) { this.closeFrontierNode(); }\n if (close.fit.childCount) { this.placed = addToFragment(this.placed, close.depth, close.fit); }\n $to = close.move;\n for (var d = close.depth + 1; d <= $to.depth; d++) {\n var node = $to.node(d), add = node.type.contentMatch.fillBefore(node.content, true, $to.index(d));\n this.openFrontierNode(node.type, node.attrs, add);\n }\n return $to\n};\n\nFitter.prototype.openFrontierNode = function openFrontierNode (type, attrs, content) {\n var top = this.frontier[this.depth];\n top.match = top.match.matchType(type);\n this.placed = addToFragment(this.placed, this.depth, Fragment.from(type.create(attrs, content)));\n this.frontier.push({type: type, match: type.contentMatch});\n};\n\nFitter.prototype.closeFrontierNode = function closeFrontierNode () {\n var open = this.frontier.pop();\n var add = open.match.fillBefore(Fragment.empty, true);\n if (add.childCount) { this.placed = addToFragment(this.placed, this.frontier.length, add); }\n};\n\nObject.defineProperties( Fitter.prototype, prototypeAccessors$1 );\n\nfunction dropFromFragment(fragment, depth, count) {\n if (depth == 0) { return fragment.cutByIndex(count) }\n return fragment.replaceChild(0, fragment.firstChild.copy(dropFromFragment(fragment.firstChild.content, depth - 1, count)))\n}\n\nfunction addToFragment(fragment, depth, content) {\n if (depth == 0) { return fragment.append(content) }\n return fragment.replaceChild(fragment.childCount - 1,\n fragment.lastChild.copy(addToFragment(fragment.lastChild.content, depth - 1, content)))\n}\n\nfunction contentAt(fragment, depth) {\n for (var i = 0; i < depth; i++) { fragment = fragment.firstChild.content; }\n return fragment\n}\n\nfunction closeNodeStart(node, openStart, openEnd) {\n if (openStart <= 0) { return node }\n var frag = node.content;\n if (openStart > 1)\n { frag = frag.replaceChild(0, closeNodeStart(frag.firstChild, openStart - 1, frag.childCount == 1 ? openEnd - 1 : 0)); }\n if (openStart > 0) {\n frag = node.type.contentMatch.fillBefore(frag).append(frag);\n if (openEnd <= 0) { frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(Fragment.empty, true)); }\n }\n return node.copy(frag)\n}\n\nfunction contentAfterFits($to, depth, type, match, open) {\n var node = $to.node(depth), index = open ? $to.indexAfter(depth) : $to.index(depth);\n if (index == node.childCount && !type.compatibleContent(node.type)) { return null }\n var fit = match.fillBefore(node.content, true, index);\n return fit && !invalidMarks(type, node.content, index) ? fit : null\n}\n\nfunction invalidMarks(type, fragment, start) {\n for (var i = start; i < fragment.childCount; i++)\n { if (!type.allowsMarks(fragment.child(i).marks)) { return true } }\n return false\n}\n\n// :: (number, number, Slice) → this\n// Replace a range of the document with a given slice, using `from`,\n// `to`, and the slice's [`openStart`](#model.Slice.openStart) property\n// as hints, rather than fixed start and end points. This method may\n// grow the replaced area or close open nodes in the slice in order to\n// get a fit that is more in line with WYSIWYG expectations, by\n// dropping fully covered parent nodes of the replaced region when\n// they are marked [non-defining](#model.NodeSpec.defining), or\n// including an open parent node from the slice that _is_ marked as\n// [defining](#model.NodeSpec.defining).\n//\n// This is the method, for example, to handle paste. The similar\n// [`replace`](#transform.Transform.replace) method is a more\n// primitive tool which will _not_ move the start and end of its given\n// range, and is useful in situations where you need more precise\n// control over what happens.\nTransform.prototype.replaceRange = function(from, to, slice) {\n if (!slice.size) { return this.deleteRange(from, to) }\n\n var $from = this.doc.resolve(from), $to = this.doc.resolve(to);\n if (fitsTrivially($from, $to, slice))\n { return this.step(new ReplaceStep(from, to, slice)) }\n\n var targetDepths = coveredDepths($from, this.doc.resolve(to));\n // Can't replace the whole document, so remove 0 if it's present\n if (targetDepths[targetDepths.length - 1] == 0) { targetDepths.pop(); }\n // Negative numbers represent not expansion over the whole node at\n // that depth, but replacing from $from.before(-D) to $to.pos.\n var preferredTarget = -($from.depth + 1);\n targetDepths.unshift(preferredTarget);\n // This loop picks a preferred target depth, if one of the covering\n // depths is not outside of a defining node, and adds negative\n // depths for any depth that has $from at its start and does not\n // cross a defining node.\n for (var d = $from.depth, pos = $from.pos - 1; d > 0; d--, pos--) {\n var spec = $from.node(d).type.spec;\n if (spec.defining || spec.isolating) { break }\n if (targetDepths.indexOf(d) > -1) { preferredTarget = d; }\n else if ($from.before(d) == pos) { targetDepths.splice(1, 0, -d); }\n }\n // Try to fit each possible depth of the slice into each possible\n // target depth, starting with the preferred depths.\n var preferredTargetIndex = targetDepths.indexOf(preferredTarget);\n\n var leftNodes = [], preferredDepth = slice.openStart;\n for (var content = slice.content, i = 0;; i++) {\n var node = content.firstChild;\n leftNodes.push(node);\n if (i == slice.openStart) { break }\n content = node.content;\n }\n // Back up if the node directly above openStart, or the node above\n // that separated only by a non-defining textblock node, is defining.\n if (preferredDepth > 0 && leftNodes[preferredDepth - 1].type.spec.defining &&\n $from.node(preferredTargetIndex).type != leftNodes[preferredDepth - 1].type)\n { preferredDepth -= 1; }\n else if (preferredDepth >= 2 && leftNodes[preferredDepth - 1].isTextblock && leftNodes[preferredDepth - 2].type.spec.defining &&\n $from.node(preferredTargetIndex).type != leftNodes[preferredDepth - 2].type)\n { preferredDepth -= 2; }\n\n for (var j = slice.openStart; j >= 0; j--) {\n var openDepth = (j + preferredDepth + 1) % (slice.openStart + 1);\n var insert = leftNodes[openDepth];\n if (!insert) { continue }\n for (var i$1 = 0; i$1 < targetDepths.length; i$1++) {\n // Loop over possible expansion levels, starting with the\n // preferred one\n var targetDepth = targetDepths[(i$1 + preferredTargetIndex) % targetDepths.length], expand = true;\n if (targetDepth < 0) { expand = false; targetDepth = -targetDepth; }\n var parent = $from.node(targetDepth - 1), index = $from.index(targetDepth - 1);\n if (parent.canReplaceWith(index, index, insert.type, insert.marks))\n { return this.replace($from.before(targetDepth), expand ? $to.after(targetDepth) : to,\n new Slice(closeFragment(slice.content, 0, slice.openStart, openDepth),\n openDepth, slice.openEnd)) }\n }\n }\n\n var startSteps = this.steps.length;\n for (var i$2 = targetDepths.length - 1; i$2 >= 0; i$2--) {\n this.replace(from, to, slice);\n if (this.steps.length > startSteps) { break }\n var depth = targetDepths[i$2];\n if (i$2 < 0) { continue }\n from = $from.before(depth); to = $to.after(depth);\n }\n return this\n};\n\nfunction closeFragment(fragment, depth, oldOpen, newOpen, parent) {\n if (depth < oldOpen) {\n var first = fragment.firstChild;\n fragment = fragment.replaceChild(0, first.copy(closeFragment(first.content, depth + 1, oldOpen, newOpen, first)));\n }\n if (depth > newOpen) {\n var match = parent.contentMatchAt(0);\n var start = match.fillBefore(fragment).append(fragment);\n fragment = start.append(match.matchFragment(start).fillBefore(Fragment.empty, true));\n }\n return fragment\n}\n\n// :: (number, number, Node) → this\n// Replace the given range with a node, but use `from` and `to` as\n// hints, rather than precise positions. When from and to are the same\n// and are at the start or end of a parent node in which the given\n// node doesn't fit, this method may _move_ them out towards a parent\n// that does allow the given node to be placed. When the given range\n// completely covers a parent node, this method may completely replace\n// that parent node.\nTransform.prototype.replaceRangeWith = function(from, to, node) {\n if (!node.isInline && from == to && this.doc.resolve(from).parent.content.size) {\n var point = insertPoint(this.doc, from, node.type);\n if (point != null) { from = to = point; }\n }\n return this.replaceRange(from, to, new Slice(Fragment.from(node), 0, 0))\n};\n\n// :: (number, number) → this\n// Delete the given range, expanding it to cover fully covered\n// parent nodes until a valid replace is found.\nTransform.prototype.deleteRange = function(from, to) {\n var $from = this.doc.resolve(from), $to = this.doc.resolve(to);\n var covered = coveredDepths($from, $to);\n for (var i = 0; i < covered.length; i++) {\n var depth = covered[i], last = i == covered.length - 1;\n if ((last && depth == 0) || $from.node(depth).type.contentMatch.validEnd)\n { return this.delete($from.start(depth), $to.end(depth)) }\n if (depth > 0 && (last || $from.node(depth - 1).canReplace($from.index(depth - 1), $to.indexAfter(depth - 1))))\n { return this.delete($from.before(depth), $to.after(depth)) }\n }\n for (var d = 1; d <= $from.depth && d <= $to.depth; d++) {\n if (from - $from.start(d) == $from.depth - d && to > $from.end(d) && $to.end(d) - to != $to.depth - d)\n { return this.delete($from.before(d), to) }\n }\n return this.delete(from, to)\n};\n\n// : (ResolvedPos, ResolvedPos) → [number]\n// Returns an array of all depths for which $from - $to spans the\n// whole content of the nodes at that depth.\nfunction coveredDepths($from, $to) {\n var result = [], minDepth = Math.min($from.depth, $to.depth);\n for (var d = minDepth; d >= 0; d--) {\n var start = $from.start(d);\n if (start < $from.pos - ($from.depth - d) ||\n $to.end(d) > $to.pos + ($to.depth - d) ||\n $from.node(d).type.spec.isolating ||\n $to.node(d).type.spec.isolating) { break }\n if (start == $to.start(d)) { result.push(d); }\n }\n return result\n}\n\nexport { AddMarkStep, MapResult, Mapping, RemoveMarkStep, ReplaceAroundStep, ReplaceStep, Step, StepMap, StepResult, Transform, TransformError, canJoin, canSplit, dropPoint, findWrapping, insertPoint, joinPoint, liftTarget, replaceStep };\n//# sourceMappingURL=index.es.js.map\n","/**\n * Slugger generates header id\n */\nmodule.exports = class Slugger {\n constructor() {\n this.seen = {};\n }\n\n /**\n * Convert string to unique id\n */\n slug(value) {\n let slug = value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n\n if (this.seen.hasOwnProperty(slug)) {\n const originalSlug = slug;\n do {\n this.seen[originalSlug]++;\n slug = originalSlug + '-' + this.seen[originalSlug];\n } while (this.seen.hasOwnProperty(slug));\n }\n this.seen[slug] = 0;\n\n return slug;\n };\n};\n","// ::- Persistent data structure representing an ordered mapping from\n// strings to values, with some convenient update methods.\nfunction OrderedMap(content) {\n this.content = content;\n}\n\nOrderedMap.prototype = {\n constructor: OrderedMap,\n\n find: function(key) {\n for (var i = 0; i < this.content.length; i += 2)\n if (this.content[i] === key) return i\n return -1\n },\n\n // :: (string) → ?any\n // Retrieve the value stored under `key`, or return undefined when\n // no such key exists.\n get: function(key) {\n var found = this.find(key);\n return found == -1 ? undefined : this.content[found + 1]\n },\n\n // :: (string, any, ?string) → OrderedMap\n // Create a new map by replacing the value of `key` with a new\n // value, or adding a binding to the end of the map. If `newKey` is\n // given, the key of the binding will be replaced with that key.\n update: function(key, value, newKey) {\n var self = newKey && newKey != key ? this.remove(newKey) : this;\n var found = self.find(key), content = self.content.slice();\n if (found == -1) {\n content.push(newKey || key, value);\n } else {\n content[found + 1] = value;\n if (newKey) content[found] = newKey;\n }\n return new OrderedMap(content)\n },\n\n // :: (string) → OrderedMap\n // Return a map with the given key removed, if it existed.\n remove: function(key) {\n var found = this.find(key);\n if (found == -1) return this\n var content = this.content.slice();\n content.splice(found, 2);\n return new OrderedMap(content)\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the start of the map.\n addToStart: function(key, value) {\n return new OrderedMap([key, value].concat(this.remove(key).content))\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the end of the map.\n addToEnd: function(key, value) {\n var content = this.remove(key).content.slice();\n content.push(key, value);\n return new OrderedMap(content)\n },\n\n // :: (string, string, any) → OrderedMap\n // Add a key after the given key. If `place` is not found, the new\n // key is added to the end.\n addBefore: function(place, key, value) {\n var without = this.remove(key), content = without.content.slice();\n var found = without.find(place);\n content.splice(found == -1 ? content.length : found, 0, key, value);\n return new OrderedMap(content)\n },\n\n // :: ((key: string, value: any))\n // Call the given function for each key/value pair in the map, in\n // order.\n forEach: function(f) {\n for (var i = 0; i < this.content.length; i += 2)\n f(this.content[i], this.content[i + 1]);\n },\n\n // :: (union) → OrderedMap\n // Create a new map by prepending the keys in this map that don't\n // appear in `map` before the keys in `map`.\n prepend: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(map.content.concat(this.subtract(map).content))\n },\n\n // :: (union) → OrderedMap\n // Create a new map by appending the keys in this map that don't\n // appear in `map` after the keys in `map`.\n append: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(this.subtract(map).content.concat(map.content))\n },\n\n // :: (union) → OrderedMap\n // Create a map containing all the keys in this map that don't\n // appear in `map`.\n subtract: function(map) {\n var result = this;\n map = OrderedMap.from(map);\n for (var i = 0; i < map.content.length; i += 2)\n result = result.remove(map.content[i]);\n return result\n },\n\n // :: number\n // The amount of keys in this map.\n get size() {\n return this.content.length >> 1\n }\n};\n\n// :: (?union) → OrderedMap\n// Return a map with the given content. If null, create an empty\n// map. If given an ordered map, return that map itself. If given an\n// object, create a map from the object's properties.\nOrderedMap.from = function(value) {\n if (value instanceof OrderedMap) return value\n var content = [];\n if (value) for (var prop in value) content.push(prop, value[prop]);\n return new OrderedMap(content)\n};\n\nvar orderedmap = OrderedMap;\n\nexport default orderedmap;\n","import OrderedMap from 'orderedmap';\n\nfunction findDiffStart(a, b, pos) {\n for (var i = 0;; i++) {\n if (i == a.childCount || i == b.childCount)\n { return a.childCount == b.childCount ? null : pos }\n\n var childA = a.child(i), childB = b.child(i);\n if (childA == childB) { pos += childA.nodeSize; continue }\n\n if (!childA.sameMarkup(childB)) { return pos }\n\n if (childA.isText && childA.text != childB.text) {\n for (var j = 0; childA.text[j] == childB.text[j]; j++)\n { pos++; }\n return pos\n }\n if (childA.content.size || childB.content.size) {\n var inner = findDiffStart(childA.content, childB.content, pos + 1);\n if (inner != null) { return inner }\n }\n pos += childA.nodeSize;\n }\n}\n\nfunction findDiffEnd(a, b, posA, posB) {\n for (var iA = a.childCount, iB = b.childCount;;) {\n if (iA == 0 || iB == 0)\n { return iA == iB ? null : {a: posA, b: posB} }\n\n var childA = a.child(--iA), childB = b.child(--iB), size = childA.nodeSize;\n if (childA == childB) {\n posA -= size; posB -= size;\n continue\n }\n\n if (!childA.sameMarkup(childB)) { return {a: posA, b: posB} }\n\n if (childA.isText && childA.text != childB.text) {\n var same = 0, minSize = Math.min(childA.text.length, childB.text.length);\n while (same < minSize && childA.text[childA.text.length - same - 1] == childB.text[childB.text.length - same - 1]) {\n same++; posA--; posB--;\n }\n return {a: posA, b: posB}\n }\n if (childA.content.size || childB.content.size) {\n var inner = findDiffEnd(childA.content, childB.content, posA - 1, posB - 1);\n if (inner) { return inner }\n }\n posA -= size; posB -= size;\n }\n}\n\n// ::- A fragment represents a node's collection of child nodes.\n//\n// Like nodes, fragments are persistent data structures, and you\n// should not mutate them or their content. Rather, you create new\n// instances whenever needed. The API tries to make this easy.\nvar Fragment = function Fragment(content, size) {\n this.content = content;\n // :: number\n // The size of the fragment, which is the total of the size of its\n // content nodes.\n this.size = size || 0;\n if (size == null) { for (var i = 0; i < content.length; i++)\n { this.size += content[i].nodeSize; } }\n};\n\nvar prototypeAccessors = { firstChild: { configurable: true },lastChild: { configurable: true },childCount: { configurable: true } };\n\n// :: (number, number, (node: Node, start: number, parent: Node, index: number) → ?bool, ?number)\n// Invoke a callback for all descendant nodes between the given two\n// positions (relative to start of this fragment). Doesn't descend\n// into a node when the callback returns `false`.\nFragment.prototype.nodesBetween = function nodesBetween (from, to, f, nodeStart, parent) {\n if ( nodeStart === void 0 ) nodeStart = 0;\n\n for (var i = 0, pos = 0; pos < to; i++) {\n var child = this.content[i], end = pos + child.nodeSize;\n if (end > from && f(child, nodeStart + pos, parent, i) !== false && child.content.size) {\n var start = pos + 1;\n child.nodesBetween(Math.max(0, from - start),\n Math.min(child.content.size, to - start),\n f, nodeStart + start);\n }\n pos = end;\n }\n};\n\n// :: ((node: Node, pos: number, parent: Node) → ?bool)\n// Call the given callback for every descendant node. The callback\n// may return `false` to prevent traversal of a given node's children.\nFragment.prototype.descendants = function descendants (f) {\n this.nodesBetween(0, this.size, f);\n};\n\n// : (number, number, ?string, ?string) → string\nFragment.prototype.textBetween = function textBetween (from, to, blockSeparator, leafText) {\n var text = \"\", separated = true;\n this.nodesBetween(from, to, function (node, pos) {\n if (node.isText) {\n text += node.text.slice(Math.max(from, pos) - pos, to - pos);\n separated = !blockSeparator;\n } else if (node.isLeaf && leafText) {\n text += leafText;\n separated = !blockSeparator;\n } else if (!separated && node.isBlock) {\n text += blockSeparator;\n separated = true;\n }\n }, 0);\n return text\n};\n\n// :: (Fragment) → Fragment\n// Create a new fragment containing the combined content of this\n// fragment and the other.\nFragment.prototype.append = function append (other) {\n if (!other.size) { return this }\n if (!this.size) { return other }\n var last = this.lastChild, first = other.firstChild, content = this.content.slice(), i = 0;\n if (last.isText && last.sameMarkup(first)) {\n content[content.length - 1] = last.withText(last.text + first.text);\n i = 1;\n }\n for (; i < other.content.length; i++) { content.push(other.content[i]); }\n return new Fragment(content, this.size + other.size)\n};\n\n// :: (number, ?number) → Fragment\n// Cut out the sub-fragment between the two given positions.\nFragment.prototype.cut = function cut (from, to) {\n if (to == null) { to = this.size; }\n if (from == 0 && to == this.size) { return this }\n var result = [], size = 0;\n if (to > from) { for (var i = 0, pos = 0; pos < to; i++) {\n var child = this.content[i], end = pos + child.nodeSize;\n if (end > from) {\n if (pos < from || end > to) {\n if (child.isText)\n { child = child.cut(Math.max(0, from - pos), Math.min(child.text.length, to - pos)); }\n else\n { child = child.cut(Math.max(0, from - pos - 1), Math.min(child.content.size, to - pos - 1)); }\n }\n result.push(child);\n size += child.nodeSize;\n }\n pos = end;\n } }\n return new Fragment(result, size)\n};\n\nFragment.prototype.cutByIndex = function cutByIndex (from, to) {\n if (from == to) { return Fragment.empty }\n if (from == 0 && to == this.content.length) { return this }\n return new Fragment(this.content.slice(from, to))\n};\n\n// :: (number, Node) → Fragment\n// Create a new fragment in which the node at the given index is\n// replaced by the given node.\nFragment.prototype.replaceChild = function replaceChild (index, node) {\n var current = this.content[index];\n if (current == node) { return this }\n var copy = this.content.slice();\n var size = this.size + node.nodeSize - current.nodeSize;\n copy[index] = node;\n return new Fragment(copy, size)\n};\n\n// : (Node) → Fragment\n// Create a new fragment by prepending the given node to this\n// fragment.\nFragment.prototype.addToStart = function addToStart (node) {\n return new Fragment([node].concat(this.content), this.size + node.nodeSize)\n};\n\n// : (Node) → Fragment\n// Create a new fragment by appending the given node to this\n// fragment.\nFragment.prototype.addToEnd = function addToEnd (node) {\n return new Fragment(this.content.concat(node), this.size + node.nodeSize)\n};\n\n// :: (Fragment) → bool\n// Compare this fragment to another one.\nFragment.prototype.eq = function eq (other) {\n if (this.content.length != other.content.length) { return false }\n for (var i = 0; i < this.content.length; i++)\n { if (!this.content[i].eq(other.content[i])) { return false } }\n return true\n};\n\n// :: ?Node\n// The first child of the fragment, or `null` if it is empty.\nprototypeAccessors.firstChild.get = function () { return this.content.length ? this.content[0] : null };\n\n// :: ?Node\n// The last child of the fragment, or `null` if it is empty.\nprototypeAccessors.lastChild.get = function () { return this.content.length ? this.content[this.content.length - 1] : null };\n\n// :: number\n// The number of child nodes in this fragment.\nprototypeAccessors.childCount.get = function () { return this.content.length };\n\n// :: (number) → Node\n// Get the child node at the given index. Raise an error when the\n// index is out of range.\nFragment.prototype.child = function child (index) {\n var found = this.content[index];\n if (!found) { throw new RangeError(\"Index \" + index + \" out of range for \" + this) }\n return found\n};\n\n// :: (number) → ?Node\n// Get the child node at the given index, if it exists.\nFragment.prototype.maybeChild = function maybeChild (index) {\n return this.content[index]\n};\n\n// :: ((node: Node, offset: number, index: number))\n// Call `f` for every child node, passing the node, its offset\n// into this parent node, and its index.\nFragment.prototype.forEach = function forEach (f) {\n for (var i = 0, p = 0; i < this.content.length; i++) {\n var child = this.content[i];\n f(child, p, i);\n p += child.nodeSize;\n }\n};\n\n// :: (Fragment) → ?number\n// Find the first position at which this fragment and another\n// fragment differ, or `null` if they are the same.\nFragment.prototype.findDiffStart = function findDiffStart$1 (other, pos) {\n if ( pos === void 0 ) pos = 0;\n\n return findDiffStart(this, other, pos)\n};\n\n// :: (Fragment) → ?{a: number, b: number}\n// Find the first position, searching from the end, at which this\n// fragment and the given fragment differ, or `null` if they are the\n// same. Since this position will not be the same in both nodes, an\n// object with two separate positions is returned.\nFragment.prototype.findDiffEnd = function findDiffEnd$1 (other, pos, otherPos) {\n if ( pos === void 0 ) pos = this.size;\n if ( otherPos === void 0 ) otherPos = other.size;\n\n return findDiffEnd(this, other, pos, otherPos)\n};\n\n// : (number, ?number) → {index: number, offset: number}\n// Find the index and inner offset corresponding to a given relative\n// position in this fragment. The result object will be reused\n// (overwritten) the next time the function is called. (Not public.)\nFragment.prototype.findIndex = function findIndex (pos, round) {\n if ( round === void 0 ) round = -1;\n\n if (pos == 0) { return retIndex(0, pos) }\n if (pos == this.size) { return retIndex(this.content.length, pos) }\n if (pos > this.size || pos < 0) { throw new RangeError((\"Position \" + pos + \" outside of fragment (\" + (this) + \")\")) }\n for (var i = 0, curPos = 0;; i++) {\n var cur = this.child(i), end = curPos + cur.nodeSize;\n if (end >= pos) {\n if (end == pos || round > 0) { return retIndex(i + 1, end) }\n return retIndex(i, curPos)\n }\n curPos = end;\n }\n};\n\n// :: () → string\n// Return a debugging string that describes this fragment.\nFragment.prototype.toString = function toString () { return \"<\" + this.toStringInner() + \">\" };\n\nFragment.prototype.toStringInner = function toStringInner () { return this.content.join(\", \") };\n\n// :: () → ?Object\n// Create a JSON-serializeable representation of this fragment.\nFragment.prototype.toJSON = function toJSON () {\n return this.content.length ? this.content.map(function (n) { return n.toJSON(); }) : null\n};\n\n// :: (Schema, ?Object) → Fragment\n// Deserialize a fragment from its JSON representation.\nFragment.fromJSON = function fromJSON (schema, value) {\n if (!value) { return Fragment.empty }\n if (!Array.isArray(value)) { throw new RangeError(\"Invalid input for Fragment.fromJSON\") }\n return new Fragment(value.map(schema.nodeFromJSON))\n};\n\n// :: ([Node]) → Fragment\n// Build a fragment from an array of nodes. Ensures that adjacent\n// text nodes with the same marks are joined together.\nFragment.fromArray = function fromArray (array) {\n if (!array.length) { return Fragment.empty }\n var joined, size = 0;\n for (var i = 0; i < array.length; i++) {\n var node = array[i];\n size += node.nodeSize;\n if (i && node.isText && array[i - 1].sameMarkup(node)) {\n if (!joined) { joined = array.slice(0, i); }\n joined[joined.length - 1] = node.withText(joined[joined.length - 1].text + node.text);\n } else if (joined) {\n joined.push(node);\n }\n }\n return new Fragment(joined || array, size)\n};\n\n// :: (?union) → Fragment\n// Create a fragment from something that can be interpreted as a set\n// of nodes. For `null`, it returns the empty fragment. For a\n// fragment, the fragment itself. For a node or array of nodes, a\n// fragment containing those nodes.\nFragment.from = function from (nodes) {\n if (!nodes) { return Fragment.empty }\n if (nodes instanceof Fragment) { return nodes }\n if (Array.isArray(nodes)) { return this.fromArray(nodes) }\n if (nodes.attrs) { return new Fragment([nodes], nodes.nodeSize) }\n throw new RangeError(\"Can not convert \" + nodes + \" to a Fragment\" +\n (nodes.nodesBetween ? \" (looks like multiple versions of prosemirror-model were loaded)\" : \"\"))\n};\n\nObject.defineProperties( Fragment.prototype, prototypeAccessors );\n\nvar found = {index: 0, offset: 0};\nfunction retIndex(index, offset) {\n found.index = index;\n found.offset = offset;\n return found\n}\n\n// :: Fragment\n// An empty fragment. Intended to be reused whenever a node doesn't\n// contain anything (rather than allocating a new empty fragment for\n// each leaf node).\nFragment.empty = new Fragment([], 0);\n\nfunction compareDeep(a, b) {\n if (a === b) { return true }\n if (!(a && typeof a == \"object\") ||\n !(b && typeof b == \"object\")) { return false }\n var array = Array.isArray(a);\n if (Array.isArray(b) != array) { return false }\n if (array) {\n if (a.length != b.length) { return false }\n for (var i = 0; i < a.length; i++) { if (!compareDeep(a[i], b[i])) { return false } }\n } else {\n for (var p in a) { if (!(p in b) || !compareDeep(a[p], b[p])) { return false } }\n for (var p$1 in b) { if (!(p$1 in a)) { return false } }\n }\n return true\n}\n\n// ::- A mark is a piece of information that can be attached to a node,\n// such as it being emphasized, in code font, or a link. It has a type\n// and optionally a set of attributes that provide further information\n// (such as the target of the link). Marks are created through a\n// `Schema`, which controls which types exist and which\n// attributes they have.\nvar Mark = function Mark(type, attrs) {\n // :: MarkType\n // The type of this mark.\n this.type = type;\n // :: Object\n // The attributes associated with this mark.\n this.attrs = attrs;\n};\n\n// :: ([Mark]) → [Mark]\n// Given a set of marks, create a new set which contains this one as\n// well, in the right position. If this mark is already in the set,\n// the set itself is returned. If any marks that are set to be\n// [exclusive](#model.MarkSpec.excludes) with this mark are present,\n// those are replaced by this one.\nMark.prototype.addToSet = function addToSet (set) {\n var copy, placed = false;\n for (var i = 0; i < set.length; i++) {\n var other = set[i];\n if (this.eq(other)) { return set }\n if (this.type.excludes(other.type)) {\n if (!copy) { copy = set.slice(0, i); }\n } else if (other.type.excludes(this.type)) {\n return set\n } else {\n if (!placed && other.type.rank > this.type.rank) {\n if (!copy) { copy = set.slice(0, i); }\n copy.push(this);\n placed = true;\n }\n if (copy) { copy.push(other); }\n }\n }\n if (!copy) { copy = set.slice(); }\n if (!placed) { copy.push(this); }\n return copy\n};\n\n// :: ([Mark]) → [Mark]\n// Remove this mark from the given set, returning a new set. If this\n// mark is not in the set, the set itself is returned.\nMark.prototype.removeFromSet = function removeFromSet (set) {\n for (var i = 0; i < set.length; i++)\n { if (this.eq(set[i]))\n { return set.slice(0, i).concat(set.slice(i + 1)) } }\n return set\n};\n\n// :: ([Mark]) → bool\n// Test whether this mark is in the given set of marks.\nMark.prototype.isInSet = function isInSet (set) {\n for (var i = 0; i < set.length; i++)\n { if (this.eq(set[i])) { return true } }\n return false\n};\n\n// :: (Mark) → bool\n// Test whether this mark has the same type and attributes as\n// another mark.\nMark.prototype.eq = function eq (other) {\n return this == other ||\n (this.type == other.type && compareDeep(this.attrs, other.attrs))\n};\n\n// :: () → Object\n// Convert this mark to a JSON-serializeable representation.\nMark.prototype.toJSON = function toJSON () {\n var obj = {type: this.type.name};\n for (var _ in this.attrs) {\n obj.attrs = this.attrs;\n break\n }\n return obj\n};\n\n// :: (Schema, Object) → Mark\nMark.fromJSON = function fromJSON (schema, json) {\n if (!json) { throw new RangeError(\"Invalid input for Mark.fromJSON\") }\n var type = schema.marks[json.type];\n if (!type) { throw new RangeError((\"There is no mark type \" + (json.type) + \" in this schema\")) }\n return type.create(json.attrs)\n};\n\n// :: ([Mark], [Mark]) → bool\n// Test whether two sets of marks are identical.\nMark.sameSet = function sameSet (a, b) {\n if (a == b) { return true }\n if (a.length != b.length) { return false }\n for (var i = 0; i < a.length; i++)\n { if (!a[i].eq(b[i])) { return false } }\n return true\n};\n\n// :: (?union) → [Mark]\n// Create a properly sorted mark set from null, a single mark, or an\n// unsorted array of marks.\nMark.setFrom = function setFrom (marks) {\n if (!marks || marks.length == 0) { return Mark.none }\n if (marks instanceof Mark) { return [marks] }\n var copy = marks.slice();\n copy.sort(function (a, b) { return a.type.rank - b.type.rank; });\n return copy\n};\n\n// :: [Mark] The empty set of marks.\nMark.none = [];\n\n// ReplaceError:: class extends Error\n// Error type raised by [`Node.replace`](#model.Node.replace) when\n// given an invalid replacement.\n\nfunction ReplaceError(message) {\n var err = Error.call(this, message);\n err.__proto__ = ReplaceError.prototype;\n return err\n}\n\nReplaceError.prototype = Object.create(Error.prototype);\nReplaceError.prototype.constructor = ReplaceError;\nReplaceError.prototype.name = \"ReplaceError\";\n\n// ::- A slice represents a piece cut out of a larger document. It\n// stores not only a fragment, but also the depth up to which nodes on\n// both side are ‘open’ (cut through).\nvar Slice = function Slice(content, openStart, openEnd) {\n // :: Fragment The slice's content.\n this.content = content;\n // :: number The open depth at the start.\n this.openStart = openStart;\n // :: number The open depth at the end.\n this.openEnd = openEnd;\n};\n\nvar prototypeAccessors$1 = { size: { configurable: true } };\n\n// :: number\n// The size this slice would add when inserted into a document.\nprototypeAccessors$1.size.get = function () {\n return this.content.size - this.openStart - this.openEnd\n};\n\nSlice.prototype.insertAt = function insertAt (pos, fragment) {\n var content = insertInto(this.content, pos + this.openStart, fragment, null);\n return content && new Slice(content, this.openStart, this.openEnd)\n};\n\nSlice.prototype.removeBetween = function removeBetween (from, to) {\n return new Slice(removeRange(this.content, from + this.openStart, to + this.openStart), this.openStart, this.openEnd)\n};\n\n// :: (Slice) → bool\n// Tests whether this slice is equal to another slice.\nSlice.prototype.eq = function eq (other) {\n return this.content.eq(other.content) && this.openStart == other.openStart && this.openEnd == other.openEnd\n};\n\nSlice.prototype.toString = function toString () {\n return this.content + \"(\" + this.openStart + \",\" + this.openEnd + \")\"\n};\n\n// :: () → ?Object\n// Convert a slice to a JSON-serializable representation.\nSlice.prototype.toJSON = function toJSON () {\n if (!this.content.size) { return null }\n var json = {content: this.content.toJSON()};\n if (this.openStart > 0) { json.openStart = this.openStart; }\n if (this.openEnd > 0) { json.openEnd = this.openEnd; }\n return json\n};\n\n// :: (Schema, ?Object) → Slice\n// Deserialize a slice from its JSON representation.\nSlice.fromJSON = function fromJSON (schema, json) {\n if (!json) { return Slice.empty }\n var openStart = json.openStart || 0, openEnd = json.openEnd || 0;\n if (typeof openStart != \"number\" || typeof openEnd != \"number\")\n { throw new RangeError(\"Invalid input for Slice.fromJSON\") }\n return new Slice(Fragment.fromJSON(schema, json.content), json.openStart || 0, json.openEnd || 0)\n};\n\n// :: (Fragment, ?bool) → Slice\n// Create a slice from a fragment by taking the maximum possible\n// open value on both side of the fragment.\nSlice.maxOpen = function maxOpen (fragment, openIsolating) {\n if ( openIsolating === void 0 ) openIsolating=true;\n\n var openStart = 0, openEnd = 0;\n for (var n = fragment.firstChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.firstChild) { openStart++; }\n for (var n$1 = fragment.lastChild; n$1 && !n$1.isLeaf && (openIsolating || !n$1.type.spec.isolating); n$1 = n$1.lastChild) { openEnd++; }\n return new Slice(fragment, openStart, openEnd)\n};\n\nObject.defineProperties( Slice.prototype, prototypeAccessors$1 );\n\nfunction removeRange(content, from, to) {\n var ref = content.findIndex(from);\n var index = ref.index;\n var offset = ref.offset;\n var child = content.maybeChild(index);\n var ref$1 = content.findIndex(to);\n var indexTo = ref$1.index;\n var offsetTo = ref$1.offset;\n if (offset == from || child.isText) {\n if (offsetTo != to && !content.child(indexTo).isText) { throw new RangeError(\"Removing non-flat range\") }\n return content.cut(0, from).append(content.cut(to))\n }\n if (index != indexTo) { throw new RangeError(\"Removing non-flat range\") }\n return content.replaceChild(index, child.copy(removeRange(child.content, from - offset - 1, to - offset - 1)))\n}\n\nfunction insertInto(content, dist, insert, parent) {\n var ref = content.findIndex(dist);\n var index = ref.index;\n var offset = ref.offset;\n var child = content.maybeChild(index);\n if (offset == dist || child.isText) {\n if (parent && !parent.canReplace(index, index, insert)) { return null }\n return content.cut(0, dist).append(insert).append(content.cut(dist))\n }\n var inner = insertInto(child.content, dist - offset - 1, insert);\n return inner && content.replaceChild(index, child.copy(inner))\n}\n\n// :: Slice\n// The empty slice.\nSlice.empty = new Slice(Fragment.empty, 0, 0);\n\nfunction replace($from, $to, slice) {\n if (slice.openStart > $from.depth)\n { throw new ReplaceError(\"Inserted content deeper than insertion position\") }\n if ($from.depth - slice.openStart != $to.depth - slice.openEnd)\n { throw new ReplaceError(\"Inconsistent open depths\") }\n return replaceOuter($from, $to, slice, 0)\n}\n\nfunction replaceOuter($from, $to, slice, depth) {\n var index = $from.index(depth), node = $from.node(depth);\n if (index == $to.index(depth) && depth < $from.depth - slice.openStart) {\n var inner = replaceOuter($from, $to, slice, depth + 1);\n return node.copy(node.content.replaceChild(index, inner))\n } else if (!slice.content.size) {\n return close(node, replaceTwoWay($from, $to, depth))\n } else if (!slice.openStart && !slice.openEnd && $from.depth == depth && $to.depth == depth) { // Simple, flat case\n var parent = $from.parent, content = parent.content;\n return close(parent, content.cut(0, $from.parentOffset).append(slice.content).append(content.cut($to.parentOffset)))\n } else {\n var ref = prepareSliceForReplace(slice, $from);\n var start = ref.start;\n var end = ref.end;\n return close(node, replaceThreeWay($from, start, end, $to, depth))\n }\n}\n\nfunction checkJoin(main, sub) {\n if (!sub.type.compatibleContent(main.type))\n { throw new ReplaceError(\"Cannot join \" + sub.type.name + \" onto \" + main.type.name) }\n}\n\nfunction joinable($before, $after, depth) {\n var node = $before.node(depth);\n checkJoin(node, $after.node(depth));\n return node\n}\n\nfunction addNode(child, target) {\n var last = target.length - 1;\n if (last >= 0 && child.isText && child.sameMarkup(target[last]))\n { target[last] = child.withText(target[last].text + child.text); }\n else\n { target.push(child); }\n}\n\nfunction addRange($start, $end, depth, target) {\n var node = ($end || $start).node(depth);\n var startIndex = 0, endIndex = $end ? $end.index(depth) : node.childCount;\n if ($start) {\n startIndex = $start.index(depth);\n if ($start.depth > depth) {\n startIndex++;\n } else if ($start.textOffset) {\n addNode($start.nodeAfter, target);\n startIndex++;\n }\n }\n for (var i = startIndex; i < endIndex; i++) { addNode(node.child(i), target); }\n if ($end && $end.depth == depth && $end.textOffset)\n { addNode($end.nodeBefore, target); }\n}\n\nfunction close(node, content) {\n if (!node.type.validContent(content))\n { throw new ReplaceError(\"Invalid content for node \" + node.type.name) }\n return node.copy(content)\n}\n\nfunction replaceThreeWay($from, $start, $end, $to, depth) {\n var openStart = $from.depth > depth && joinable($from, $start, depth + 1);\n var openEnd = $to.depth > depth && joinable($end, $to, depth + 1);\n\n var content = [];\n addRange(null, $from, depth, content);\n if (openStart && openEnd && $start.index(depth) == $end.index(depth)) {\n checkJoin(openStart, openEnd);\n addNode(close(openStart, replaceThreeWay($from, $start, $end, $to, depth + 1)), content);\n } else {\n if (openStart)\n { addNode(close(openStart, replaceTwoWay($from, $start, depth + 1)), content); }\n addRange($start, $end, depth, content);\n if (openEnd)\n { addNode(close(openEnd, replaceTwoWay($end, $to, depth + 1)), content); }\n }\n addRange($to, null, depth, content);\n return new Fragment(content)\n}\n\nfunction replaceTwoWay($from, $to, depth) {\n var content = [];\n addRange(null, $from, depth, content);\n if ($from.depth > depth) {\n var type = joinable($from, $to, depth + 1);\n addNode(close(type, replaceTwoWay($from, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content)\n}\n\nfunction prepareSliceForReplace(slice, $along) {\n var extra = $along.depth - slice.openStart, parent = $along.node(extra);\n var node = parent.copy(slice.content);\n for (var i = extra - 1; i >= 0; i--)\n { node = $along.node(i).copy(Fragment.from(node)); }\n return {start: node.resolveNoCache(slice.openStart + extra),\n end: node.resolveNoCache(node.content.size - slice.openEnd - extra)}\n}\n\n// ::- You can [_resolve_](#model.Node.resolve) a position to get more\n// information about it. Objects of this class represent such a\n// resolved position, providing various pieces of context information,\n// and some helper methods.\n//\n// Throughout this interface, methods that take an optional `depth`\n// parameter will interpret undefined as `this.depth` and negative\n// numbers as `this.depth + value`.\nvar ResolvedPos = function ResolvedPos(pos, path, parentOffset) {\n // :: number The position that was resolved.\n this.pos = pos;\n this.path = path;\n // :: number\n // The number of levels the parent node is from the root. If this\n // position points directly into the root node, it is 0. If it\n // points into a top-level paragraph, 1, and so on.\n this.depth = path.length / 3 - 1;\n // :: number The offset this position has into its parent node.\n this.parentOffset = parentOffset;\n};\n\nvar prototypeAccessors$2 = { parent: { configurable: true },doc: { configurable: true },textOffset: { configurable: true },nodeAfter: { configurable: true },nodeBefore: { configurable: true } };\n\nResolvedPos.prototype.resolveDepth = function resolveDepth (val) {\n if (val == null) { return this.depth }\n if (val < 0) { return this.depth + val }\n return val\n};\n\n// :: Node\n// The parent node that the position points into. Note that even if\n// a position points into a text node, that node is not considered\n// the parent—text nodes are ‘flat’ in this model, and have no content.\nprototypeAccessors$2.parent.get = function () { return this.node(this.depth) };\n\n// :: Node\n// The root node in which the position was resolved.\nprototypeAccessors$2.doc.get = function () { return this.node(0) };\n\n// :: (?number) → Node\n// The ancestor node at the given level. `p.node(p.depth)` is the\n// same as `p.parent`.\nResolvedPos.prototype.node = function node (depth) { return this.path[this.resolveDepth(depth) * 3] };\n\n// :: (?number) → number\n// The index into the ancestor at the given level. If this points at\n// the 3rd node in the 2nd paragraph on the top level, for example,\n// `p.index(0)` is 1 and `p.index(1)` is 2.\nResolvedPos.prototype.index = function index (depth) { return this.path[this.resolveDepth(depth) * 3 + 1] };\n\n// :: (?number) → number\n// The index pointing after this position into the ancestor at the\n// given level.\nResolvedPos.prototype.indexAfter = function indexAfter (depth) {\n depth = this.resolveDepth(depth);\n return this.index(depth) + (depth == this.depth && !this.textOffset ? 0 : 1)\n};\n\n// :: (?number) → number\n// The (absolute) position at the start of the node at the given\n// level.\nResolvedPos.prototype.start = function start (depth) {\n depth = this.resolveDepth(depth);\n return depth == 0 ? 0 : this.path[depth * 3 - 1] + 1\n};\n\n// :: (?number) → number\n// The (absolute) position at the end of the node at the given\n// level.\nResolvedPos.prototype.end = function end (depth) {\n depth = this.resolveDepth(depth);\n return this.start(depth) + this.node(depth).content.size\n};\n\n// :: (?number) → number\n// The (absolute) position directly before the wrapping node at the\n// given level, or, when `depth` is `this.depth + 1`, the original\n// position.\nResolvedPos.prototype.before = function before (depth) {\n depth = this.resolveDepth(depth);\n if (!depth) { throw new RangeError(\"There is no position before the top-level node\") }\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1]\n};\n\n// :: (?number) → number\n// The (absolute) position directly after the wrapping node at the\n// given level, or the original position when `depth` is `this.depth + 1`.\nResolvedPos.prototype.after = function after (depth) {\n depth = this.resolveDepth(depth);\n if (!depth) { throw new RangeError(\"There is no position after the top-level node\") }\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1] + this.path[depth * 3].nodeSize\n};\n\n// :: number\n// When this position points into a text node, this returns the\n// distance between the position and the start of the text node.\n// Will be zero for positions that point between nodes.\nprototypeAccessors$2.textOffset.get = function () { return this.pos - this.path[this.path.length - 1] };\n\n// :: ?Node\n// Get the node directly after the position, if any. If the position\n// points into a text node, only the part of that node after the\n// position is returned.\nprototypeAccessors$2.nodeAfter.get = function () {\n var parent = this.parent, index = this.index(this.depth);\n if (index == parent.childCount) { return null }\n var dOff = this.pos - this.path[this.path.length - 1], child = parent.child(index);\n return dOff ? parent.child(index).cut(dOff) : child\n};\n\n// :: ?Node\n// Get the node directly before the position, if any. If the\n// position points into a text node, only the part of that node\n// before the position is returned.\nprototypeAccessors$2.nodeBefore.get = function () {\n var index = this.index(this.depth);\n var dOff = this.pos - this.path[this.path.length - 1];\n if (dOff) { return this.parent.child(index).cut(0, dOff) }\n return index == 0 ? null : this.parent.child(index - 1)\n};\n\n// :: () → [Mark]\n// Get the marks at this position, factoring in the surrounding\n// marks' [`inclusive`](#model.MarkSpec.inclusive) property. If the\n// position is at the start of a non-empty node, the marks of the\n// node after it (if any) are returned.\nResolvedPos.prototype.marks = function marks () {\n var parent = this.parent, index = this.index();\n\n // In an empty parent, return the empty array\n if (parent.content.size == 0) { return Mark.none }\n\n // When inside a text node, just return the text node's marks\n if (this.textOffset) { return parent.child(index).marks }\n\n var main = parent.maybeChild(index - 1), other = parent.maybeChild(index);\n // If the `after` flag is true of there is no node before, make\n // the node after this position the main reference.\n if (!main) { var tmp = main; main = other; other = tmp; }\n\n // Use all marks in the main node, except those that have\n // `inclusive` set to false and are not present in the other node.\n var marks = main.marks;\n for (var i = 0; i < marks.length; i++)\n { if (marks[i].type.spec.inclusive === false && (!other || !marks[i].isInSet(other.marks)))\n { marks = marks[i--].removeFromSet(marks); } }\n\n return marks\n};\n\n// :: (ResolvedPos) → ?[Mark]\n// Get the marks after the current position, if any, except those\n// that are non-inclusive and not present at position `$end`. This\n// is mostly useful for getting the set of marks to preserve after a\n// deletion. Will return `null` if this position is at the end of\n// its parent node or its parent node isn't a textblock (in which\n// case no marks should be preserved).\nResolvedPos.prototype.marksAcross = function marksAcross ($end) {\n var after = this.parent.maybeChild(this.index());\n if (!after || !after.isInline) { return null }\n\n var marks = after.marks, next = $end.parent.maybeChild($end.index());\n for (var i = 0; i < marks.length; i++)\n { if (marks[i].type.spec.inclusive === false && (!next || !marks[i].isInSet(next.marks)))\n { marks = marks[i--].removeFromSet(marks); } }\n return marks\n};\n\n// :: (number) → number\n// The depth up to which this position and the given (non-resolved)\n// position share the same parent nodes.\nResolvedPos.prototype.sharedDepth = function sharedDepth (pos) {\n for (var depth = this.depth; depth > 0; depth--)\n { if (this.start(depth) <= pos && this.end(depth) >= pos) { return depth } }\n return 0\n};\n\n// :: (?ResolvedPos, ?(Node) → bool) → ?NodeRange\n// Returns a range based on the place where this position and the\n// given position diverge around block content. If both point into\n// the same textblock, for example, a range around that textblock\n// will be returned. If they point into different blocks, the range\n// around those blocks in their shared ancestor is returned. You can\n// pass in an optional predicate that will be called with a parent\n// node to see if a range into that parent is acceptable.\nResolvedPos.prototype.blockRange = function blockRange (other, pred) {\n if ( other === void 0 ) other = this;\n\n if (other.pos < this.pos) { return other.blockRange(this) }\n for (var d = this.depth - (this.parent.inlineContent || this.pos == other.pos ? 1 : 0); d >= 0; d--)\n { if (other.pos <= this.end(d) && (!pred || pred(this.node(d))))\n { return new NodeRange(this, other, d) } }\n};\n\n// :: (ResolvedPos) → bool\n// Query whether the given position shares the same parent node.\nResolvedPos.prototype.sameParent = function sameParent (other) {\n return this.pos - this.parentOffset == other.pos - other.parentOffset\n};\n\n// :: (ResolvedPos) → ResolvedPos\n// Return the greater of this and the given position.\nResolvedPos.prototype.max = function max (other) {\n return other.pos > this.pos ? other : this\n};\n\n// :: (ResolvedPos) → ResolvedPos\n// Return the smaller of this and the given position.\nResolvedPos.prototype.min = function min (other) {\n return other.pos < this.pos ? other : this\n};\n\nResolvedPos.prototype.toString = function toString () {\n var str = \"\";\n for (var i = 1; i <= this.depth; i++)\n { str += (str ? \"/\" : \"\") + this.node(i).type.name + \"_\" + this.index(i - 1); }\n return str + \":\" + this.parentOffset\n};\n\nResolvedPos.resolve = function resolve (doc, pos) {\n if (!(pos >= 0 && pos <= doc.content.size)) { throw new RangeError(\"Position \" + pos + \" out of range\") }\n var path = [];\n var start = 0, parentOffset = pos;\n for (var node = doc;;) {\n var ref = node.content.findIndex(parentOffset);\n var index = ref.index;\n var offset = ref.offset;\n var rem = parentOffset - offset;\n path.push(node, index, start + offset);\n if (!rem) { break }\n node = node.child(index);\n if (node.isText) { break }\n parentOffset = rem - 1;\n start += offset + 1;\n }\n return new ResolvedPos(pos, path, parentOffset)\n};\n\nResolvedPos.resolveCached = function resolveCached (doc, pos) {\n for (var i = 0; i < resolveCache.length; i++) {\n var cached = resolveCache[i];\n if (cached.pos == pos && cached.doc == doc) { return cached }\n }\n var result = resolveCache[resolveCachePos] = ResolvedPos.resolve(doc, pos);\n resolveCachePos = (resolveCachePos + 1) % resolveCacheSize;\n return result\n};\n\nObject.defineProperties( ResolvedPos.prototype, prototypeAccessors$2 );\n\nvar resolveCache = [], resolveCachePos = 0, resolveCacheSize = 12;\n\n// ::- Represents a flat range of content, i.e. one that starts and\n// ends in the same node.\nvar NodeRange = function NodeRange($from, $to, depth) {\n // :: ResolvedPos A resolved position along the start of the\n // content. May have a `depth` greater than this object's `depth`\n // property, since these are the positions that were used to\n // compute the range, not re-resolved positions directly at its\n // boundaries.\n this.$from = $from;\n // :: ResolvedPos A position along the end of the content. See\n // caveat for [`$from`](#model.NodeRange.$from).\n this.$to = $to;\n // :: number The depth of the node that this range points into.\n this.depth = depth;\n};\n\nvar prototypeAccessors$1$1 = { start: { configurable: true },end: { configurable: true },parent: { configurable: true },startIndex: { configurable: true },endIndex: { configurable: true } };\n\n// :: number The position at the start of the range.\nprototypeAccessors$1$1.start.get = function () { return this.$from.before(this.depth + 1) };\n// :: number The position at the end of the range.\nprototypeAccessors$1$1.end.get = function () { return this.$to.after(this.depth + 1) };\n\n// :: Node The parent node that the range points into.\nprototypeAccessors$1$1.parent.get = function () { return this.$from.node(this.depth) };\n// :: number The start index of the range in the parent node.\nprototypeAccessors$1$1.startIndex.get = function () { return this.$from.index(this.depth) };\n// :: number The end index of the range in the parent node.\nprototypeAccessors$1$1.endIndex.get = function () { return this.$to.indexAfter(this.depth) };\n\nObject.defineProperties( NodeRange.prototype, prototypeAccessors$1$1 );\n\nvar emptyAttrs = Object.create(null);\n\n// ::- This class represents a node in the tree that makes up a\n// ProseMirror document. So a document is an instance of `Node`, with\n// children that are also instances of `Node`.\n//\n// Nodes are persistent data structures. Instead of changing them, you\n// create new ones with the content you want. Old ones keep pointing\n// at the old document shape. This is made cheaper by sharing\n// structure between the old and new data as much as possible, which a\n// tree shape like this (without back pointers) makes easy.\n//\n// **Do not** directly mutate the properties of a `Node` object. See\n// [the guide](/docs/guide/#doc) for more information.\nvar Node = function Node(type, attrs, content, marks) {\n // :: NodeType\n // The type of node that this is.\n this.type = type;\n\n // :: Object\n // An object mapping attribute names to values. The kind of\n // attributes allowed and required are\n // [determined](#model.NodeSpec.attrs) by the node type.\n this.attrs = attrs;\n\n // :: Fragment\n // A container holding the node's children.\n this.content = content || Fragment.empty;\n\n // :: [Mark]\n // The marks (things like whether it is emphasized or part of a\n // link) applied to this node.\n this.marks = marks || Mark.none;\n};\n\nvar prototypeAccessors$3 = { nodeSize: { configurable: true },childCount: { configurable: true },textContent: { configurable: true },firstChild: { configurable: true },lastChild: { configurable: true },isBlock: { configurable: true },isTextblock: { configurable: true },inlineContent: { configurable: true },isInline: { configurable: true },isText: { configurable: true },isLeaf: { configurable: true },isAtom: { configurable: true } };\n\n// text:: ?string\n// For text nodes, this contains the node's text content.\n\n// :: number\n// The size of this node, as defined by the integer-based [indexing\n// scheme](/docs/guide/#doc.indexing). For text nodes, this is the\n// amount of characters. For other leaf nodes, it is one. For\n// non-leaf nodes, it is the size of the content plus two (the start\n// and end token).\nprototypeAccessors$3.nodeSize.get = function () { return this.isLeaf ? 1 : 2 + this.content.size };\n\n// :: number\n// The number of children that the node has.\nprototypeAccessors$3.childCount.get = function () { return this.content.childCount };\n\n// :: (number) → Node\n// Get the child node at the given index. Raises an error when the\n// index is out of range.\nNode.prototype.child = function child (index) { return this.content.child(index) };\n\n// :: (number) → ?Node\n// Get the child node at the given index, if it exists.\nNode.prototype.maybeChild = function maybeChild (index) { return this.content.maybeChild(index) };\n\n// :: ((node: Node, offset: number, index: number))\n// Call `f` for every child node, passing the node, its offset\n// into this parent node, and its index.\nNode.prototype.forEach = function forEach (f) { this.content.forEach(f); };\n\n// :: (number, number, (node: Node, pos: number, parent: Node, index: number) → ?bool, ?number)\n// Invoke a callback for all descendant nodes recursively between\n// the given two positions that are relative to start of this node's\n// content. The callback is invoked with the node, its\n// parent-relative position, its parent node, and its child index.\n// When the callback returns false for a given node, that node's\n// children will not be recursed over. The last parameter can be\n// used to specify a starting position to count from.\nNode.prototype.nodesBetween = function nodesBetween (from, to, f, startPos) {\n if ( startPos === void 0 ) startPos = 0;\n\n this.content.nodesBetween(from, to, f, startPos, this);\n};\n\n// :: ((node: Node, pos: number, parent: Node) → ?bool)\n// Call the given callback for every descendant node. Doesn't\n// descend into a node when the callback returns `false`.\nNode.prototype.descendants = function descendants (f) {\n this.nodesBetween(0, this.content.size, f);\n};\n\n// :: string\n// Concatenates all the text nodes found in this fragment and its\n// children.\nprototypeAccessors$3.textContent.get = function () { return this.textBetween(0, this.content.size, \"\") };\n\n// :: (number, number, ?string, ?string) → string\n// Get all text between positions `from` and `to`. When\n// `blockSeparator` is given, it will be inserted whenever a new\n// block node is started. When `leafText` is given, it'll be\n// inserted for every non-text leaf node encountered.\nNode.prototype.textBetween = function textBetween (from, to, blockSeparator, leafText) {\n return this.content.textBetween(from, to, blockSeparator, leafText)\n};\n\n// :: ?Node\n// Returns this node's first child, or `null` if there are no\n// children.\nprototypeAccessors$3.firstChild.get = function () { return this.content.firstChild };\n\n// :: ?Node\n// Returns this node's last child, or `null` if there are no\n// children.\nprototypeAccessors$3.lastChild.get = function () { return this.content.lastChild };\n\n// :: (Node) → bool\n// Test whether two nodes represent the same piece of document.\nNode.prototype.eq = function eq (other) {\n return this == other || (this.sameMarkup(other) && this.content.eq(other.content))\n};\n\n// :: (Node) → bool\n// Compare the markup (type, attributes, and marks) of this node to\n// those of another. Returns `true` if both have the same markup.\nNode.prototype.sameMarkup = function sameMarkup (other) {\n return this.hasMarkup(other.type, other.attrs, other.marks)\n};\n\n// :: (NodeType, ?Object, ?[Mark]) → bool\n// Check whether this node's markup correspond to the given type,\n// attributes, and marks.\nNode.prototype.hasMarkup = function hasMarkup (type, attrs, marks) {\n return this.type == type &&\n compareDeep(this.attrs, attrs || type.defaultAttrs || emptyAttrs) &&\n Mark.sameSet(this.marks, marks || Mark.none)\n};\n\n// :: (?Fragment) → Node\n// Create a new node with the same markup as this node, containing\n// the given content (or empty, if no content is given).\nNode.prototype.copy = function copy (content) {\n if ( content === void 0 ) content = null;\n\n if (content == this.content) { return this }\n return new this.constructor(this.type, this.attrs, content, this.marks)\n};\n\n// :: ([Mark]) → Node\n// Create a copy of this node, with the given set of marks instead\n// of the node's own marks.\nNode.prototype.mark = function mark (marks) {\n return marks == this.marks ? this : new this.constructor(this.type, this.attrs, this.content, marks)\n};\n\n// :: (number, ?number) → Node\n// Create a copy of this node with only the content between the\n// given positions. If `to` is not given, it defaults to the end of\n// the node.\nNode.prototype.cut = function cut (from, to) {\n if (from == 0 && to == this.content.size) { return this }\n return this.copy(this.content.cut(from, to))\n};\n\n// :: (number, ?number) → Slice\n// Cut out the part of the document between the given positions, and\n// return it as a `Slice` object.\nNode.prototype.slice = function slice (from, to, includeParents) {\n if ( to === void 0 ) to = this.content.size;\n if ( includeParents === void 0 ) includeParents = false;\n\n if (from == to) { return Slice.empty }\n\n var $from = this.resolve(from), $to = this.resolve(to);\n var depth = includeParents ? 0 : $from.sharedDepth(to);\n var start = $from.start(depth), node = $from.node(depth);\n var content = node.content.cut($from.pos - start, $to.pos - start);\n return new Slice(content, $from.depth - depth, $to.depth - depth)\n};\n\n// :: (number, number, Slice) → Node\n// Replace the part of the document between the given positions with\n// the given slice. The slice must 'fit', meaning its open sides\n// must be able to connect to the surrounding content, and its\n// content nodes must be valid children for the node they are placed\n// into. If any of this is violated, an error of type\n// [`ReplaceError`](#model.ReplaceError) is thrown.\nNode.prototype.replace = function replace$1 (from, to, slice) {\n return replace(this.resolve(from), this.resolve(to), slice)\n};\n\n// :: (number) → ?Node\n// Find the node directly after the given position.\nNode.prototype.nodeAt = function nodeAt (pos) {\n for (var node = this;;) {\n var ref = node.content.findIndex(pos);\n var index = ref.index;\n var offset = ref.offset;\n node = node.maybeChild(index);\n if (!node) { return null }\n if (offset == pos || node.isText) { return node }\n pos -= offset + 1;\n }\n};\n\n// :: (number) → {node: ?Node, index: number, offset: number}\n// Find the (direct) child node after the given offset, if any,\n// and return it along with its index and offset relative to this\n// node.\nNode.prototype.childAfter = function childAfter (pos) {\n var ref = this.content.findIndex(pos);\n var index = ref.index;\n var offset = ref.offset;\n return {node: this.content.maybeChild(index), index: index, offset: offset}\n};\n\n// :: (number) → {node: ?Node, index: number, offset: number}\n// Find the (direct) child node before the given offset, if any,\n// and return it along with its index and offset relative to this\n// node.\nNode.prototype.childBefore = function childBefore (pos) {\n if (pos == 0) { return {node: null, index: 0, offset: 0} }\n var ref = this.content.findIndex(pos);\n var index = ref.index;\n var offset = ref.offset;\n if (offset < pos) { return {node: this.content.child(index), index: index, offset: offset} }\n var node = this.content.child(index - 1);\n return {node: node, index: index - 1, offset: offset - node.nodeSize}\n};\n\n// :: (number) → ResolvedPos\n// Resolve the given position in the document, returning an\n// [object](#model.ResolvedPos) with information about its context.\nNode.prototype.resolve = function resolve (pos) { return ResolvedPos.resolveCached(this, pos) };\n\nNode.prototype.resolveNoCache = function resolveNoCache (pos) { return ResolvedPos.resolve(this, pos) };\n\n// :: (number, number, MarkType) → bool\n// Test whether a mark of the given type occurs in this document\n// between the two given positions.\nNode.prototype.rangeHasMark = function rangeHasMark (from, to, type) {\n var found = false;\n if (to > from) { this.nodesBetween(from, to, function (node) {\n if (type.isInSet(node.marks)) { found = true; }\n return !found\n }); }\n return found\n};\n\n// :: bool\n// True when this is a block (non-inline node)\nprototypeAccessors$3.isBlock.get = function () { return this.type.isBlock };\n\n// :: bool\n// True when this is a textblock node, a block node with inline\n// content.\nprototypeAccessors$3.isTextblock.get = function () { return this.type.isTextblock };\n\n// :: bool\n// True when this node allows inline content.\nprototypeAccessors$3.inlineContent.get = function () { return this.type.inlineContent };\n\n// :: bool\n// True when this is an inline node (a text node or a node that can\n// appear among text).\nprototypeAccessors$3.isInline.get = function () { return this.type.isInline };\n\n// :: bool\n// True when this is a text node.\nprototypeAccessors$3.isText.get = function () { return this.type.isText };\n\n// :: bool\n// True when this is a leaf node.\nprototypeAccessors$3.isLeaf.get = function () { return this.type.isLeaf };\n\n// :: bool\n// True when this is an atom, i.e. when it does not have directly\n// editable content. This is usually the same as `isLeaf`, but can\n// be configured with the [`atom` property](#model.NodeSpec.atom) on\n// a node's spec (typically used when the node is displayed as an\n// uneditable [node view](#view.NodeView)).\nprototypeAccessors$3.isAtom.get = function () { return this.type.isAtom };\n\n// :: () → string\n// Return a string representation of this node for debugging\n// purposes.\nNode.prototype.toString = function toString () {\n if (this.type.spec.toDebugString) { return this.type.spec.toDebugString(this) }\n var name = this.type.name;\n if (this.content.size)\n { name += \"(\" + this.content.toStringInner() + \")\"; }\n return wrapMarks(this.marks, name)\n};\n\n// :: (number) → ContentMatch\n// Get the content match in this node at the given index.\nNode.prototype.contentMatchAt = function contentMatchAt (index) {\n var match = this.type.contentMatch.matchFragment(this.content, 0, index);\n if (!match) { throw new Error(\"Called contentMatchAt on a node with invalid content\") }\n return match\n};\n\n// :: (number, number, ?Fragment, ?number, ?number) → bool\n// Test whether replacing the range between `from` and `to` (by\n// child index) with the given replacement fragment (which defaults\n// to the empty fragment) would leave the node's content valid. You\n// can optionally pass `start` and `end` indices into the\n// replacement fragment.\nNode.prototype.canReplace = function canReplace (from, to, replacement, start, end) {\n if ( replacement === void 0 ) replacement = Fragment.empty;\n if ( start === void 0 ) start = 0;\n if ( end === void 0 ) end = replacement.childCount;\n\n var one = this.contentMatchAt(from).matchFragment(replacement, start, end);\n var two = one && one.matchFragment(this.content, to);\n if (!two || !two.validEnd) { return false }\n for (var i = start; i < end; i++) { if (!this.type.allowsMarks(replacement.child(i).marks)) { return false } }\n return true\n};\n\n// :: (number, number, NodeType, ?[Mark]) → bool\n// Test whether replacing the range `from` to `to` (by index) with a\n// node of the given type would leave the node's content valid.\nNode.prototype.canReplaceWith = function canReplaceWith (from, to, type, marks) {\n if (marks && !this.type.allowsMarks(marks)) { return false }\n var start = this.contentMatchAt(from).matchType(type);\n var end = start && start.matchFragment(this.content, to);\n return end ? end.validEnd : false\n};\n\n// :: (Node) → bool\n// Test whether the given node's content could be appended to this\n// node. If that node is empty, this will only return true if there\n// is at least one node type that can appear in both nodes (to avoid\n// merging completely incompatible nodes).\nNode.prototype.canAppend = function canAppend (other) {\n if (other.content.size) { return this.canReplace(this.childCount, this.childCount, other.content) }\n else { return this.type.compatibleContent(other.type) }\n};\n\n// :: ()\n// Check whether this node and its descendants conform to the\n// schema, and raise error when they do not.\nNode.prototype.check = function check () {\n if (!this.type.validContent(this.content))\n { throw new RangeError((\"Invalid content for node \" + (this.type.name) + \": \" + (this.content.toString().slice(0, 50)))) }\n this.content.forEach(function (node) { return node.check(); });\n};\n\n// :: () → Object\n// Return a JSON-serializeable representation of this node.\nNode.prototype.toJSON = function toJSON () {\n var obj = {type: this.type.name};\n for (var _ in this.attrs) {\n obj.attrs = this.attrs;\n break\n }\n if (this.content.size)\n { obj.content = this.content.toJSON(); }\n if (this.marks.length)\n { obj.marks = this.marks.map(function (n) { return n.toJSON(); }); }\n return obj\n};\n\n// :: (Schema, Object) → Node\n// Deserialize a node from its JSON representation.\nNode.fromJSON = function fromJSON (schema, json) {\n if (!json) { throw new RangeError(\"Invalid input for Node.fromJSON\") }\n var marks = null;\n if (json.marks) {\n if (!Array.isArray(json.marks)) { throw new RangeError(\"Invalid mark data for Node.fromJSON\") }\n marks = json.marks.map(schema.markFromJSON);\n }\n if (json.type == \"text\") {\n if (typeof json.text != \"string\") { throw new RangeError(\"Invalid text node in JSON\") }\n return schema.text(json.text, marks)\n }\n var content = Fragment.fromJSON(schema, json.content);\n return schema.nodeType(json.type).create(json.attrs, content, marks)\n};\n\nObject.defineProperties( Node.prototype, prototypeAccessors$3 );\n\nvar TextNode = /*@__PURE__*/(function (Node) {\n function TextNode(type, attrs, content, marks) {\n Node.call(this, type, attrs, null, marks);\n\n if (!content) { throw new RangeError(\"Empty text nodes are not allowed\") }\n\n this.text = content;\n }\n\n if ( Node ) TextNode.__proto__ = Node;\n TextNode.prototype = Object.create( Node && Node.prototype );\n TextNode.prototype.constructor = TextNode;\n\n var prototypeAccessors$1 = { textContent: { configurable: true },nodeSize: { configurable: true } };\n\n TextNode.prototype.toString = function toString () {\n if (this.type.spec.toDebugString) { return this.type.spec.toDebugString(this) }\n return wrapMarks(this.marks, JSON.stringify(this.text))\n };\n\n prototypeAccessors$1.textContent.get = function () { return this.text };\n\n TextNode.prototype.textBetween = function textBetween (from, to) { return this.text.slice(from, to) };\n\n prototypeAccessors$1.nodeSize.get = function () { return this.text.length };\n\n TextNode.prototype.mark = function mark (marks) {\n return marks == this.marks ? this : new TextNode(this.type, this.attrs, this.text, marks)\n };\n\n TextNode.prototype.withText = function withText (text) {\n if (text == this.text) { return this }\n return new TextNode(this.type, this.attrs, text, this.marks)\n };\n\n TextNode.prototype.cut = function cut (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.text.length;\n\n if (from == 0 && to == this.text.length) { return this }\n return this.withText(this.text.slice(from, to))\n };\n\n TextNode.prototype.eq = function eq (other) {\n return this.sameMarkup(other) && this.text == other.text\n };\n\n TextNode.prototype.toJSON = function toJSON () {\n var base = Node.prototype.toJSON.call(this);\n base.text = this.text;\n return base\n };\n\n Object.defineProperties( TextNode.prototype, prototypeAccessors$1 );\n\n return TextNode;\n}(Node));\n\nfunction wrapMarks(marks, str) {\n for (var i = marks.length - 1; i >= 0; i--)\n { str = marks[i].type.name + \"(\" + str + \")\"; }\n return str\n}\n\n// ::- Instances of this class represent a match state of a node\n// type's [content expression](#model.NodeSpec.content), and can be\n// used to find out whether further content matches here, and whether\n// a given position is a valid end of the node.\nvar ContentMatch = function ContentMatch(validEnd) {\n // :: bool\n // True when this match state represents a valid end of the node.\n this.validEnd = validEnd;\n this.next = [];\n this.wrapCache = [];\n};\n\nvar prototypeAccessors$4 = { inlineContent: { configurable: true },defaultType: { configurable: true },edgeCount: { configurable: true } };\n\nContentMatch.parse = function parse (string, nodeTypes) {\n var stream = new TokenStream(string, nodeTypes);\n if (stream.next == null) { return ContentMatch.empty }\n var expr = parseExpr(stream);\n if (stream.next) { stream.err(\"Unexpected trailing text\"); }\n var match = dfa(nfa(expr));\n checkForDeadEnds(match, stream);\n return match\n};\n\n// :: (NodeType) → ?ContentMatch\n// Match a node type, returning a match after that node if\n// successful.\nContentMatch.prototype.matchType = function matchType (type) {\n for (var i = 0; i < this.next.length; i += 2)\n { if (this.next[i] == type) { return this.next[i + 1] } }\n return null\n};\n\n// :: (Fragment, ?number, ?number) → ?ContentMatch\n// Try to match a fragment. Returns the resulting match when\n// successful.\nContentMatch.prototype.matchFragment = function matchFragment (frag, start, end) {\n if ( start === void 0 ) start = 0;\n if ( end === void 0 ) end = frag.childCount;\n\n var cur = this;\n for (var i = start; cur && i < end; i++)\n { cur = cur.matchType(frag.child(i).type); }\n return cur\n};\n\nprototypeAccessors$4.inlineContent.get = function () {\n var first = this.next[0];\n return first ? first.isInline : false\n};\n\n// :: ?NodeType\n// Get the first matching node type at this match position that can\n// be generated.\nprototypeAccessors$4.defaultType.get = function () {\n for (var i = 0; i < this.next.length; i += 2) {\n var type = this.next[i];\n if (!(type.isText || type.hasRequiredAttrs())) { return type }\n }\n};\n\nContentMatch.prototype.compatible = function compatible (other) {\n for (var i = 0; i < this.next.length; i += 2)\n { for (var j = 0; j < other.next.length; j += 2)\n { if (this.next[i] == other.next[j]) { return true } } }\n return false\n};\n\n// :: (Fragment, bool, ?number) → ?Fragment\n// Try to match the given fragment, and if that fails, see if it can\n// be made to match by inserting nodes in front of it. When\n// successful, return a fragment of inserted nodes (which may be\n// empty if nothing had to be inserted). When `toEnd` is true, only\n// return a fragment if the resulting match goes to the end of the\n// content expression.\nContentMatch.prototype.fillBefore = function fillBefore (after, toEnd, startIndex) {\n if ( toEnd === void 0 ) toEnd = false;\n if ( startIndex === void 0 ) startIndex = 0;\n\n var seen = [this];\n function search(match, types) {\n var finished = match.matchFragment(after, startIndex);\n if (finished && (!toEnd || finished.validEnd))\n { return Fragment.from(types.map(function (tp) { return tp.createAndFill(); })) }\n\n for (var i = 0; i < match.next.length; i += 2) {\n var type = match.next[i], next = match.next[i + 1];\n if (!(type.isText || type.hasRequiredAttrs()) && seen.indexOf(next) == -1) {\n seen.push(next);\n var found = search(next, types.concat(type));\n if (found) { return found }\n }\n }\n }\n\n return search(this, [])\n};\n\n// :: (NodeType) → ?[NodeType]\n// Find a set of wrapping node types that would allow a node of the\n// given type to appear at this position. The result may be empty\n// (when it fits directly) and will be null when no such wrapping\n// exists.\nContentMatch.prototype.findWrapping = function findWrapping (target) {\n for (var i = 0; i < this.wrapCache.length; i += 2)\n { if (this.wrapCache[i] == target) { return this.wrapCache[i + 1] } }\n var computed = this.computeWrapping(target);\n this.wrapCache.push(target, computed);\n return computed\n};\n\nContentMatch.prototype.computeWrapping = function computeWrapping (target) {\n var seen = Object.create(null), active = [{match: this, type: null, via: null}];\n while (active.length) {\n var current = active.shift(), match = current.match;\n if (match.matchType(target)) {\n var result = [];\n for (var obj = current; obj.type; obj = obj.via)\n { result.push(obj.type); }\n return result.reverse()\n }\n for (var i = 0; i < match.next.length; i += 2) {\n var type = match.next[i];\n if (!type.isLeaf && !type.hasRequiredAttrs() && !(type.name in seen) && (!current.type || match.next[i + 1].validEnd)) {\n active.push({match: type.contentMatch, type: type, via: current});\n seen[type.name] = true;\n }\n }\n }\n};\n\n// :: number\n// The number of outgoing edges this node has in the finite\n// automaton that describes the content expression.\nprototypeAccessors$4.edgeCount.get = function () {\n return this.next.length >> 1\n};\n\n// :: (number) → {type: NodeType, next: ContentMatch}\n// Get the _n_​th outgoing edge from this node in the finite\n// automaton that describes the content expression.\nContentMatch.prototype.edge = function edge (n) {\n var i = n << 1;\n if (i >= this.next.length) { throw new RangeError((\"There's no \" + n + \"th edge in this content match\")) }\n return {type: this.next[i], next: this.next[i + 1]}\n};\n\nContentMatch.prototype.toString = function toString () {\n var seen = [];\n function scan(m) {\n seen.push(m);\n for (var i = 1; i < m.next.length; i += 2)\n { if (seen.indexOf(m.next[i]) == -1) { scan(m.next[i]); } }\n }\n scan(this);\n return seen.map(function (m, i) {\n var out = i + (m.validEnd ? \"*\" : \" \") + \" \";\n for (var i$1 = 0; i$1 < m.next.length; i$1 += 2)\n { out += (i$1 ? \", \" : \"\") + m.next[i$1].name + \"->\" + seen.indexOf(m.next[i$1 + 1]); }\n return out\n }).join(\"\\n\")\n};\n\nObject.defineProperties( ContentMatch.prototype, prototypeAccessors$4 );\n\nContentMatch.empty = new ContentMatch(true);\n\nvar TokenStream = function TokenStream(string, nodeTypes) {\n this.string = string;\n this.nodeTypes = nodeTypes;\n this.inline = null;\n this.pos = 0;\n this.tokens = string.split(/\\s*(?=\\b|\\W|$)/);\n if (this.tokens[this.tokens.length - 1] == \"\") { this.tokens.pop(); }\n if (this.tokens[0] == \"\") { this.tokens.unshift(); }\n};\n\nvar prototypeAccessors$1$2 = { next: { configurable: true } };\n\nprototypeAccessors$1$2.next.get = function () { return this.tokens[this.pos] };\n\nTokenStream.prototype.eat = function eat (tok) { return this.next == tok && (this.pos++ || true) };\n\nTokenStream.prototype.err = function err (str) { throw new SyntaxError(str + \" (in content expression '\" + this.string + \"')\") };\n\nObject.defineProperties( TokenStream.prototype, prototypeAccessors$1$2 );\n\nfunction parseExpr(stream) {\n var exprs = [];\n do { exprs.push(parseExprSeq(stream)); }\n while (stream.eat(\"|\"))\n return exprs.length == 1 ? exprs[0] : {type: \"choice\", exprs: exprs}\n}\n\nfunction parseExprSeq(stream) {\n var exprs = [];\n do { exprs.push(parseExprSubscript(stream)); }\n while (stream.next && stream.next != \")\" && stream.next != \"|\")\n return exprs.length == 1 ? exprs[0] : {type: \"seq\", exprs: exprs}\n}\n\nfunction parseExprSubscript(stream) {\n var expr = parseExprAtom(stream);\n for (;;) {\n if (stream.eat(\"+\"))\n { expr = {type: \"plus\", expr: expr}; }\n else if (stream.eat(\"*\"))\n { expr = {type: \"star\", expr: expr}; }\n else if (stream.eat(\"?\"))\n { expr = {type: \"opt\", expr: expr}; }\n else if (stream.eat(\"{\"))\n { expr = parseExprRange(stream, expr); }\n else { break }\n }\n return expr\n}\n\nfunction parseNum(stream) {\n if (/\\D/.test(stream.next)) { stream.err(\"Expected number, got '\" + stream.next + \"'\"); }\n var result = Number(stream.next);\n stream.pos++;\n return result\n}\n\nfunction parseExprRange(stream, expr) {\n var min = parseNum(stream), max = min;\n if (stream.eat(\",\")) {\n if (stream.next != \"}\") { max = parseNum(stream); }\n else { max = -1; }\n }\n if (!stream.eat(\"}\")) { stream.err(\"Unclosed braced range\"); }\n return {type: \"range\", min: min, max: max, expr: expr}\n}\n\nfunction resolveName(stream, name) {\n var types = stream.nodeTypes, type = types[name];\n if (type) { return [type] }\n var result = [];\n for (var typeName in types) {\n var type$1 = types[typeName];\n if (type$1.groups.indexOf(name) > -1) { result.push(type$1); }\n }\n if (result.length == 0) { stream.err(\"No node type or group '\" + name + \"' found\"); }\n return result\n}\n\nfunction parseExprAtom(stream) {\n if (stream.eat(\"(\")) {\n var expr = parseExpr(stream);\n if (!stream.eat(\")\")) { stream.err(\"Missing closing paren\"); }\n return expr\n } else if (!/\\W/.test(stream.next)) {\n var exprs = resolveName(stream, stream.next).map(function (type) {\n if (stream.inline == null) { stream.inline = type.isInline; }\n else if (stream.inline != type.isInline) { stream.err(\"Mixing inline and block content\"); }\n return {type: \"name\", value: type}\n });\n stream.pos++;\n return exprs.length == 1 ? exprs[0] : {type: \"choice\", exprs: exprs}\n } else {\n stream.err(\"Unexpected token '\" + stream.next + \"'\");\n }\n}\n\n// The code below helps compile a regular-expression-like language\n// into a deterministic finite automaton. For a good introduction to\n// these concepts, see https://swtch.com/~rsc/regexp/regexp1.html\n\n// : (Object) → [[{term: ?any, to: number}]]\n// Construct an NFA from an expression as returned by the parser. The\n// NFA is represented as an array of states, which are themselves\n// arrays of edges, which are `{term, to}` objects. The first state is\n// the entry state and the last node is the success state.\n//\n// Note that unlike typical NFAs, the edge ordering in this one is\n// significant, in that it is used to contruct filler content when\n// necessary.\nfunction nfa(expr) {\n var nfa = [[]];\n connect(compile(expr, 0), node());\n return nfa\n\n function node() { return nfa.push([]) - 1 }\n function edge(from, to, term) {\n var edge = {term: term, to: to};\n nfa[from].push(edge);\n return edge\n }\n function connect(edges, to) { edges.forEach(function (edge) { return edge.to = to; }); }\n\n function compile(expr, from) {\n if (expr.type == \"choice\") {\n return expr.exprs.reduce(function (out, expr) { return out.concat(compile(expr, from)); }, [])\n } else if (expr.type == \"seq\") {\n for (var i = 0;; i++) {\n var next = compile(expr.exprs[i], from);\n if (i == expr.exprs.length - 1) { return next }\n connect(next, from = node());\n }\n } else if (expr.type == \"star\") {\n var loop = node();\n edge(from, loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)]\n } else if (expr.type == \"plus\") {\n var loop$1 = node();\n connect(compile(expr.expr, from), loop$1);\n connect(compile(expr.expr, loop$1), loop$1);\n return [edge(loop$1)]\n } else if (expr.type == \"opt\") {\n return [edge(from)].concat(compile(expr.expr, from))\n } else if (expr.type == \"range\") {\n var cur = from;\n for (var i$1 = 0; i$1 < expr.min; i$1++) {\n var next$1 = node();\n connect(compile(expr.expr, cur), next$1);\n cur = next$1;\n }\n if (expr.max == -1) {\n connect(compile(expr.expr, cur), cur);\n } else {\n for (var i$2 = expr.min; i$2 < expr.max; i$2++) {\n var next$2 = node();\n edge(cur, next$2);\n connect(compile(expr.expr, cur), next$2);\n cur = next$2;\n }\n }\n return [edge(cur)]\n } else if (expr.type == \"name\") {\n return [edge(from, null, expr.value)]\n }\n }\n}\n\nfunction cmp(a, b) { return b - a }\n\n// Get the set of nodes reachable by null edges from `node`. Omit\n// nodes with only a single null-out-edge, since they may lead to\n// needless duplicated nodes.\nfunction nullFrom(nfa, node) {\n var result = [];\n scan(node);\n return result.sort(cmp)\n\n function scan(node) {\n var edges = nfa[node];\n if (edges.length == 1 && !edges[0].term) { return scan(edges[0].to) }\n result.push(node);\n for (var i = 0; i < edges.length; i++) {\n var ref = edges[i];\n var term = ref.term;\n var to = ref.to;\n if (!term && result.indexOf(to) == -1) { scan(to); }\n }\n }\n}\n\n// : ([[{term: ?any, to: number}]]) → ContentMatch\n// Compiles an NFA as produced by `nfa` into a DFA, modeled as a set\n// of state objects (`ContentMatch` instances) with transitions\n// between them.\nfunction dfa(nfa) {\n var labeled = Object.create(null);\n return explore(nullFrom(nfa, 0))\n\n function explore(states) {\n var out = [];\n states.forEach(function (node) {\n nfa[node].forEach(function (ref) {\n var term = ref.term;\n var to = ref.to;\n\n if (!term) { return }\n var known = out.indexOf(term), set = known > -1 && out[known + 1];\n nullFrom(nfa, to).forEach(function (node) {\n if (!set) { out.push(term, set = []); }\n if (set.indexOf(node) == -1) { set.push(node); }\n });\n });\n });\n var state = labeled[states.join(\",\")] = new ContentMatch(states.indexOf(nfa.length - 1) > -1);\n for (var i = 0; i < out.length; i += 2) {\n var states$1 = out[i + 1].sort(cmp);\n state.next.push(out[i], labeled[states$1.join(\",\")] || explore(states$1));\n }\n return state\n }\n}\n\nfunction checkForDeadEnds(match, stream) {\n for (var i = 0, work = [match]; i < work.length; i++) {\n var state = work[i], dead = !state.validEnd, nodes = [];\n for (var j = 0; j < state.next.length; j += 2) {\n var node = state.next[j], next = state.next[j + 1];\n nodes.push(node.name);\n if (dead && !(node.isText || node.hasRequiredAttrs())) { dead = false; }\n if (work.indexOf(next) == -1) { work.push(next); }\n }\n if (dead) { stream.err(\"Only non-generatable nodes (\" + nodes.join(\", \") + \") in a required position\"); }\n }\n}\n\n// For node types where all attrs have a default value (or which don't\n// have any attributes), build up a single reusable default attribute\n// object, and use it for all nodes that don't specify specific\n// attributes.\nfunction defaultAttrs(attrs) {\n var defaults = Object.create(null);\n for (var attrName in attrs) {\n var attr = attrs[attrName];\n if (!attr.hasDefault) { return null }\n defaults[attrName] = attr.default;\n }\n return defaults\n}\n\nfunction computeAttrs(attrs, value) {\n var built = Object.create(null);\n for (var name in attrs) {\n var given = value && value[name];\n if (given === undefined) {\n var attr = attrs[name];\n if (attr.hasDefault) { given = attr.default; }\n else { throw new RangeError(\"No value supplied for attribute \" + name) }\n }\n built[name] = given;\n }\n return built\n}\n\nfunction initAttrs(attrs) {\n var result = Object.create(null);\n if (attrs) { for (var name in attrs) { result[name] = new Attribute(attrs[name]); } }\n return result\n}\n\n// ::- Node types are objects allocated once per `Schema` and used to\n// [tag](#model.Node.type) `Node` instances. They contain information\n// about the node type, such as its name and what kind of node it\n// represents.\nvar NodeType = function NodeType(name, schema, spec) {\n // :: string\n // The name the node type has in this schema.\n this.name = name;\n\n // :: Schema\n // A link back to the `Schema` the node type belongs to.\n this.schema = schema;\n\n // :: NodeSpec\n // The spec that this type is based on\n this.spec = spec;\n\n this.groups = spec.group ? spec.group.split(\" \") : [];\n this.attrs = initAttrs(spec.attrs);\n\n this.defaultAttrs = defaultAttrs(this.attrs);\n\n // :: ContentMatch\n // The starting match of the node type's content expression.\n this.contentMatch = null;\n\n // : ?[MarkType]\n // The set of marks allowed in this node. `null` means all marks\n // are allowed.\n this.markSet = null;\n\n // :: bool\n // True if this node type has inline content.\n this.inlineContent = null;\n\n // :: bool\n // True if this is a block type\n this.isBlock = !(spec.inline || name == \"text\");\n\n // :: bool\n // True if this is the text node type.\n this.isText = name == \"text\";\n};\n\nvar prototypeAccessors$5 = { isInline: { configurable: true },isTextblock: { configurable: true },isLeaf: { configurable: true },isAtom: { configurable: true } };\n\n// :: bool\n// True if this is an inline type.\nprototypeAccessors$5.isInline.get = function () { return !this.isBlock };\n\n// :: bool\n// True if this is a textblock type, a block that contains inline\n// content.\nprototypeAccessors$5.isTextblock.get = function () { return this.isBlock && this.inlineContent };\n\n// :: bool\n// True for node types that allow no content.\nprototypeAccessors$5.isLeaf.get = function () { return this.contentMatch == ContentMatch.empty };\n\n// :: bool\n// True when this node is an atom, i.e. when it does not have\n// directly editable content.\nprototypeAccessors$5.isAtom.get = function () { return this.isLeaf || this.spec.atom };\n\n// :: () → bool\n// Tells you whether this node type has any required attributes.\nNodeType.prototype.hasRequiredAttrs = function hasRequiredAttrs () {\n for (var n in this.attrs) { if (this.attrs[n].isRequired) { return true } }\n return false\n};\n\nNodeType.prototype.compatibleContent = function compatibleContent (other) {\n return this == other || this.contentMatch.compatible(other.contentMatch)\n};\n\nNodeType.prototype.computeAttrs = function computeAttrs$1 (attrs) {\n if (!attrs && this.defaultAttrs) { return this.defaultAttrs }\n else { return computeAttrs(this.attrs, attrs) }\n};\n\n// :: (?Object, ?union, ?[Mark]) → Node\n// Create a `Node` of this type. The given attributes are\n// checked and defaulted (you can pass `null` to use the type's\n// defaults entirely, if no required attributes exist). `content`\n// may be a `Fragment`, a node, an array of nodes, or\n// `null`. Similarly `marks` may be `null` to default to the empty\n// set of marks.\nNodeType.prototype.create = function create (attrs, content, marks) {\n if (this.isText) { throw new Error(\"NodeType.create can't construct text nodes\") }\n return new Node(this, this.computeAttrs(attrs), Fragment.from(content), Mark.setFrom(marks))\n};\n\n// :: (?Object, ?union, ?[Mark]) → Node\n// Like [`create`](#model.NodeType.create), but check the given content\n// against the node type's content restrictions, and throw an error\n// if it doesn't match.\nNodeType.prototype.createChecked = function createChecked (attrs, content, marks) {\n content = Fragment.from(content);\n if (!this.validContent(content))\n { throw new RangeError(\"Invalid content for node \" + this.name) }\n return new Node(this, this.computeAttrs(attrs), content, Mark.setFrom(marks))\n};\n\n// :: (?Object, ?union, ?[Mark]) → ?Node\n// Like [`create`](#model.NodeType.create), but see if it is necessary to\n// add nodes to the start or end of the given fragment to make it\n// fit the node. If no fitting wrapping can be found, return null.\n// Note that, due to the fact that required nodes can always be\n// created, this will always succeed if you pass null or\n// `Fragment.empty` as content.\nNodeType.prototype.createAndFill = function createAndFill (attrs, content, marks) {\n attrs = this.computeAttrs(attrs);\n content = Fragment.from(content);\n if (content.size) {\n var before = this.contentMatch.fillBefore(content);\n if (!before) { return null }\n content = before.append(content);\n }\n var after = this.contentMatch.matchFragment(content).fillBefore(Fragment.empty, true);\n if (!after) { return null }\n return new Node(this, attrs, content.append(after), Mark.setFrom(marks))\n};\n\n// :: (Fragment) → bool\n// Returns true if the given fragment is valid content for this node\n// type with the given attributes.\nNodeType.prototype.validContent = function validContent (content) {\n var result = this.contentMatch.matchFragment(content);\n if (!result || !result.validEnd) { return false }\n for (var i = 0; i < content.childCount; i++)\n { if (!this.allowsMarks(content.child(i).marks)) { return false } }\n return true\n};\n\n// :: (MarkType) → bool\n// Check whether the given mark type is allowed in this node.\nNodeType.prototype.allowsMarkType = function allowsMarkType (markType) {\n return this.markSet == null || this.markSet.indexOf(markType) > -1\n};\n\n// :: ([Mark]) → bool\n// Test whether the given set of marks are allowed in this node.\nNodeType.prototype.allowsMarks = function allowsMarks (marks) {\n if (this.markSet == null) { return true }\n for (var i = 0; i < marks.length; i++) { if (!this.allowsMarkType(marks[i].type)) { return false } }\n return true\n};\n\n// :: ([Mark]) → [Mark]\n// Removes the marks that are not allowed in this node from the given set.\nNodeType.prototype.allowedMarks = function allowedMarks (marks) {\n if (this.markSet == null) { return marks }\n var copy;\n for (var i = 0; i < marks.length; i++) {\n if (!this.allowsMarkType(marks[i].type)) {\n if (!copy) { copy = marks.slice(0, i); }\n } else if (copy) {\n copy.push(marks[i]);\n }\n }\n return !copy ? marks : copy.length ? copy : Mark.empty\n};\n\nNodeType.compile = function compile (nodes, schema) {\n var result = Object.create(null);\n nodes.forEach(function (name, spec) { return result[name] = new NodeType(name, schema, spec); });\n\n var topType = schema.spec.topNode || \"doc\";\n if (!result[topType]) { throw new RangeError(\"Schema is missing its top node type ('\" + topType + \"')\") }\n if (!result.text) { throw new RangeError(\"Every schema needs a 'text' type\") }\n for (var _ in result.text.attrs) { throw new RangeError(\"The text node type should not have attributes\") }\n\n return result\n};\n\nObject.defineProperties( NodeType.prototype, prototypeAccessors$5 );\n\n// Attribute descriptors\n\nvar Attribute = function Attribute(options) {\n this.hasDefault = Object.prototype.hasOwnProperty.call(options, \"default\");\n this.default = options.default;\n};\n\nvar prototypeAccessors$1$3 = { isRequired: { configurable: true } };\n\nprototypeAccessors$1$3.isRequired.get = function () {\n return !this.hasDefault\n};\n\nObject.defineProperties( Attribute.prototype, prototypeAccessors$1$3 );\n\n// Marks\n\n// ::- Like nodes, marks (which are associated with nodes to signify\n// things like emphasis or being part of a link) are\n// [tagged](#model.Mark.type) with type objects, which are\n// instantiated once per `Schema`.\nvar MarkType = function MarkType(name, rank, schema, spec) {\n // :: string\n // The name of the mark type.\n this.name = name;\n\n // :: Schema\n // The schema that this mark type instance is part of.\n this.schema = schema;\n\n // :: MarkSpec\n // The spec on which the type is based.\n this.spec = spec;\n\n this.attrs = initAttrs(spec.attrs);\n\n this.rank = rank;\n this.excluded = null;\n var defaults = defaultAttrs(this.attrs);\n this.instance = defaults && new Mark(this, defaults);\n};\n\n// :: (?Object) → Mark\n// Create a mark of this type. `attrs` may be `null` or an object\n// containing only some of the mark's attributes. The others, if\n// they have defaults, will be added.\nMarkType.prototype.create = function create (attrs) {\n if (!attrs && this.instance) { return this.instance }\n return new Mark(this, computeAttrs(this.attrs, attrs))\n};\n\nMarkType.compile = function compile (marks, schema) {\n var result = Object.create(null), rank = 0;\n marks.forEach(function (name, spec) { return result[name] = new MarkType(name, rank++, schema, spec); });\n return result\n};\n\n// :: ([Mark]) → [Mark]\n// When there is a mark of this type in the given set, a new set\n// without it is returned. Otherwise, the input set is returned.\nMarkType.prototype.removeFromSet = function removeFromSet (set) {\n for (var i = 0; i < set.length; i++)\n { if (set[i].type == this)\n { return set.slice(0, i).concat(set.slice(i + 1)) } }\n return set\n};\n\n// :: ([Mark]) → ?Mark\n// Tests whether there is a mark of this type in the given set.\nMarkType.prototype.isInSet = function isInSet (set) {\n for (var i = 0; i < set.length; i++)\n { if (set[i].type == this) { return set[i] } }\n};\n\n// :: (MarkType) → bool\n// Queries whether a given mark type is\n// [excluded](#model.MarkSpec.excludes) by this one.\nMarkType.prototype.excludes = function excludes (other) {\n return this.excluded.indexOf(other) > -1\n};\n\n// SchemaSpec:: interface\n// An object describing a schema, as passed to the [`Schema`](#model.Schema)\n// constructor.\n//\n// nodes:: union, OrderedMap>\n// The node types in this schema. Maps names to\n// [`NodeSpec`](#model.NodeSpec) objects that describe the node type\n// associated with that name. Their order is significant—it\n// determines which [parse rules](#model.NodeSpec.parseDOM) take\n// precedence by default, and which nodes come first in a given\n// [group](#model.NodeSpec.group).\n//\n// marks:: ?union, OrderedMap>\n// The mark types that exist in this schema. The order in which they\n// are provided determines the order in which [mark\n// sets](#model.Mark.addToSet) are sorted and in which [parse\n// rules](#model.MarkSpec.parseDOM) are tried.\n//\n// topNode:: ?string\n// The name of the default top-level node for the schema. Defaults\n// to `\"doc\"`.\n\n// NodeSpec:: interface\n//\n// content:: ?string\n// The content expression for this node, as described in the [schema\n// guide](/docs/guide/#schema.content_expressions). When not given,\n// the node does not allow any content.\n//\n// marks:: ?string\n// The marks that are allowed inside of this node. May be a\n// space-separated string referring to mark names or groups, `\"_\"`\n// to explicitly allow all marks, or `\"\"` to disallow marks. When\n// not given, nodes with inline content default to allowing all\n// marks, other nodes default to not allowing marks.\n//\n// group:: ?string\n// The group or space-separated groups to which this node belongs,\n// which can be referred to in the content expressions for the\n// schema.\n//\n// inline:: ?bool\n// Should be set to true for inline nodes. (Implied for text nodes.)\n//\n// atom:: ?bool\n// Can be set to true to indicate that, though this isn't a [leaf\n// node](#model.NodeType.isLeaf), it doesn't have directly editable\n// content and should be treated as a single unit in the view.\n//\n// attrs:: ?Object\n// The attributes that nodes of this type get.\n//\n// selectable:: ?bool\n// Controls whether nodes of this type can be selected as a [node\n// selection](#state.NodeSelection). Defaults to true for non-text\n// nodes.\n//\n// draggable:: ?bool\n// Determines whether nodes of this type can be dragged without\n// being selected. Defaults to false.\n//\n// code:: ?bool\n// Can be used to indicate that this node contains code, which\n// causes some commands to behave differently.\n//\n// defining:: ?bool\n// Determines whether this node is considered an important parent\n// node during replace operations (such as paste). Non-defining (the\n// default) nodes get dropped when their entire content is replaced,\n// whereas defining nodes persist and wrap the inserted content.\n// Likewise, in _inserted_ content the defining parents of the\n// content are preserved when possible. Typically,\n// non-default-paragraph textblock types, and possibly list items,\n// are marked as defining.\n//\n// isolating:: ?bool\n// When enabled (default is false), the sides of nodes of this type\n// count as boundaries that regular editing operations, like\n// backspacing or lifting, won't cross. An example of a node that\n// should probably have this enabled is a table cell.\n//\n// toDOM:: ?(node: Node) → DOMOutputSpec\n// Defines the default way a node of this type should be serialized\n// to DOM/HTML (as used by\n// [`DOMSerializer.fromSchema`](#model.DOMSerializer^fromSchema)).\n// Should return a DOM node or an [array\n// structure](#model.DOMOutputSpec) that describes one, with an\n// optional number zero (“hole”) in it to indicate where the node's\n// content should be inserted.\n//\n// For text nodes, the default is to create a text DOM node. Though\n// it is possible to create a serializer where text is rendered\n// differently, this is not supported inside the editor, so you\n// shouldn't override that in your text node spec.\n//\n// parseDOM:: ?[ParseRule]\n// Associates DOM parser information with this node, which can be\n// used by [`DOMParser.fromSchema`](#model.DOMParser^fromSchema) to\n// automatically derive a parser. The `node` field in the rules is\n// implied (the name of this node will be filled in automatically).\n// If you supply your own parser, you do not need to also specify\n// parsing rules in your schema.\n//\n// toDebugString:: ?(node: Node) -> string\n// Defines the default way a node of this type should be serialized\n// to a string representation for debugging (e.g. in error messages).\n\n// MarkSpec:: interface\n//\n// attrs:: ?Object\n// The attributes that marks of this type get.\n//\n// inclusive:: ?bool\n// Whether this mark should be active when the cursor is positioned\n// at its end (or at its start when that is also the start of the\n// parent node). Defaults to true.\n//\n// excludes:: ?string\n// Determines which other marks this mark can coexist with. Should\n// be a space-separated strings naming other marks or groups of marks.\n// When a mark is [added](#model.Mark.addToSet) to a set, all marks\n// that it excludes are removed in the process. If the set contains\n// any mark that excludes the new mark but is not, itself, excluded\n// by the new mark, the mark can not be added an the set. You can\n// use the value `\"_\"` to indicate that the mark excludes all\n// marks in the schema.\n//\n// Defaults to only being exclusive with marks of the same type. You\n// can set it to an empty string (or any string not containing the\n// mark's own name) to allow multiple marks of a given type to\n// coexist (as long as they have different attributes).\n//\n// group:: ?string\n// The group or space-separated groups to which this mark belongs.\n//\n// spanning:: ?bool\n// Determines whether marks of this type can span multiple adjacent\n// nodes when serialized to DOM/HTML. Defaults to true.\n//\n// toDOM:: ?(mark: Mark, inline: bool) → DOMOutputSpec\n// Defines the default way marks of this type should be serialized\n// to DOM/HTML. When the resulting spec contains a hole, that is\n// where the marked content is placed. Otherwise, it is appended to\n// the top node.\n//\n// parseDOM:: ?[ParseRule]\n// Associates DOM parser information with this mark (see the\n// corresponding [node spec field](#model.NodeSpec.parseDOM)). The\n// `mark` field in the rules is implied.\n\n// AttributeSpec:: interface\n//\n// Used to [define](#model.NodeSpec.attrs) attributes on nodes or\n// marks.\n//\n// default:: ?any\n// The default value for this attribute, to use when no explicit\n// value is provided. Attributes that have no default must be\n// provided whenever a node or mark of a type that has them is\n// created.\n\n// ::- A document schema. Holds [node](#model.NodeType) and [mark\n// type](#model.MarkType) objects for the nodes and marks that may\n// occur in conforming documents, and provides functionality for\n// creating and deserializing such documents.\nvar Schema = function Schema(spec) {\n // :: SchemaSpec\n // The [spec](#model.SchemaSpec) on which the schema is based,\n // with the added guarantee that its `nodes` and `marks`\n // properties are\n // [`OrderedMap`](https://github.com/marijnh/orderedmap) instances\n // (not raw objects).\n this.spec = {};\n for (var prop in spec) { this.spec[prop] = spec[prop]; }\n this.spec.nodes = OrderedMap.from(spec.nodes);\n this.spec.marks = OrderedMap.from(spec.marks);\n\n // :: Object\n // An object mapping the schema's node names to node type objects.\n this.nodes = NodeType.compile(this.spec.nodes, this);\n\n // :: Object\n // A map from mark names to mark type objects.\n this.marks = MarkType.compile(this.spec.marks, this);\n\n var contentExprCache = Object.create(null);\n for (var prop$1 in this.nodes) {\n if (prop$1 in this.marks)\n { throw new RangeError(prop$1 + \" can not be both a node and a mark\") }\n var type = this.nodes[prop$1], contentExpr = type.spec.content || \"\", markExpr = type.spec.marks;\n type.contentMatch = contentExprCache[contentExpr] ||\n (contentExprCache[contentExpr] = ContentMatch.parse(contentExpr, this.nodes));\n type.inlineContent = type.contentMatch.inlineContent;\n type.markSet = markExpr == \"_\" ? null :\n markExpr ? gatherMarks(this, markExpr.split(\" \")) :\n markExpr == \"\" || !type.inlineContent ? [] : null;\n }\n for (var prop$2 in this.marks) {\n var type$1 = this.marks[prop$2], excl = type$1.spec.excludes;\n type$1.excluded = excl == null ? [type$1] : excl == \"\" ? [] : gatherMarks(this, excl.split(\" \"));\n }\n\n this.nodeFromJSON = this.nodeFromJSON.bind(this);\n this.markFromJSON = this.markFromJSON.bind(this);\n\n // :: NodeType\n // The type of the [default top node](#model.SchemaSpec.topNode)\n // for this schema.\n this.topNodeType = this.nodes[this.spec.topNode || \"doc\"];\n\n // :: Object\n // An object for storing whatever values modules may want to\n // compute and cache per schema. (If you want to store something\n // in it, try to use property names unlikely to clash.)\n this.cached = Object.create(null);\n this.cached.wrappings = Object.create(null);\n};\n\n// :: (union, ?Object, ?union, ?[Mark]) → Node\n// Create a node in this schema. The `type` may be a string or a\n// `NodeType` instance. Attributes will be extended\n// with defaults, `content` may be a `Fragment`,\n// `null`, a `Node`, or an array of nodes.\nSchema.prototype.node = function node (type, attrs, content, marks) {\n if (typeof type == \"string\")\n { type = this.nodeType(type); }\n else if (!(type instanceof NodeType))\n { throw new RangeError(\"Invalid node type: \" + type) }\n else if (type.schema != this)\n { throw new RangeError(\"Node type from different schema used (\" + type.name + \")\") }\n\n return type.createChecked(attrs, content, marks)\n};\n\n// :: (string, ?[Mark]) → Node\n// Create a text node in the schema. Empty text nodes are not\n// allowed.\nSchema.prototype.text = function text (text$1, marks) {\n var type = this.nodes.text;\n return new TextNode(type, type.defaultAttrs, text$1, Mark.setFrom(marks))\n};\n\n// :: (union, ?Object) → Mark\n// Create a mark with the given type and attributes.\nSchema.prototype.mark = function mark (type, attrs) {\n if (typeof type == \"string\") { type = this.marks[type]; }\n return type.create(attrs)\n};\n\n// :: (Object) → Node\n// Deserialize a node from its JSON representation. This method is\n// bound.\nSchema.prototype.nodeFromJSON = function nodeFromJSON (json) {\n return Node.fromJSON(this, json)\n};\n\n// :: (Object) → Mark\n// Deserialize a mark from its JSON representation. This method is\n// bound.\nSchema.prototype.markFromJSON = function markFromJSON (json) {\n return Mark.fromJSON(this, json)\n};\n\nSchema.prototype.nodeType = function nodeType (name) {\n var found = this.nodes[name];\n if (!found) { throw new RangeError(\"Unknown node type: \" + name) }\n return found\n};\n\nfunction gatherMarks(schema, marks) {\n var found = [];\n for (var i = 0; i < marks.length; i++) {\n var name = marks[i], mark = schema.marks[name], ok = mark;\n if (mark) {\n found.push(mark);\n } else {\n for (var prop in schema.marks) {\n var mark$1 = schema.marks[prop];\n if (name == \"_\" || (mark$1.spec.group && mark$1.spec.group.split(\" \").indexOf(name) > -1))\n { found.push(ok = mark$1); }\n }\n }\n if (!ok) { throw new SyntaxError(\"Unknown mark type: '\" + marks[i] + \"'\") }\n }\n return found\n}\n\n// ParseOptions:: interface\n// These are the options recognized by the\n// [`parse`](#model.DOMParser.parse) and\n// [`parseSlice`](#model.DOMParser.parseSlice) methods.\n//\n// preserveWhitespace:: ?union\n// By default, whitespace is collapsed as per HTML's rules. Pass\n// `true` to preserve whitespace, but normalize newlines to\n// spaces, and `\"full\"` to preserve whitespace entirely.\n//\n// findPositions:: ?[{node: dom.Node, offset: number}]\n// When given, the parser will, beside parsing the content,\n// record the document positions of the given DOM positions. It\n// will do so by writing to the objects, adding a `pos` property\n// that holds the document position. DOM positions that are not\n// in the parsed content will not be written to.\n//\n// from:: ?number\n// The child node index to start parsing from.\n//\n// to:: ?number\n// The child node index to stop parsing at.\n//\n// topNode:: ?Node\n// By default, the content is parsed into the schema's default\n// [top node type](#model.Schema.topNodeType). You can pass this\n// option to use the type and attributes from a different node\n// as the top container.\n//\n// topMatch:: ?ContentMatch\n// Provide the starting content match that content parsed into the\n// top node is matched against.\n//\n// context:: ?ResolvedPos\n// A set of additional nodes to count as\n// [context](#model.ParseRule.context) when parsing, above the\n// given [top node](#model.ParseOptions.topNode).\n\n// ParseRule:: interface\n// A value that describes how to parse a given DOM node or inline\n// style as a ProseMirror node or mark.\n//\n// tag:: ?string\n// A CSS selector describing the kind of DOM elements to match. A\n// single rule should have _either_ a `tag` or a `style` property.\n//\n// namespace:: ?string\n// The namespace to match. This should be used with `tag`.\n// Nodes are only matched when the namespace matches or this property\n// is null.\n//\n// style:: ?string\n// A CSS property name to match. When given, this rule matches\n// inline styles that list that property. May also have the form\n// `\"property=value\"`, in which case the rule only matches if the\n// propery's value exactly matches the given value. (For more\n// complicated filters, use [`getAttrs`](#model.ParseRule.getAttrs)\n// and return false to indicate that the match failed.)\n//\n// priority:: ?number\n// Can be used to change the order in which the parse rules in a\n// schema are tried. Those with higher priority come first. Rules\n// without a priority are counted as having priority 50. This\n// property is only meaningful in a schema—when directly\n// constructing a parser, the order of the rule array is used.\n//\n// context:: ?string\n// When given, restricts this rule to only match when the current\n// context—the parent nodes into which the content is being\n// parsed—matches this expression. Should contain one or more node\n// names or node group names followed by single or double slashes.\n// For example `\"paragraph/\"` means the rule only matches when the\n// parent node is a paragraph, `\"blockquote/paragraph/\"` restricts\n// it to be in a paragraph that is inside a blockquote, and\n// `\"section//\"` matches any position inside a section—a double\n// slash matches any sequence of ancestor nodes. To allow multiple\n// different contexts, they can be separated by a pipe (`|`)\n// character, as in `\"blockquote/|list_item/\"`.\n//\n// node:: ?string\n// The name of the node type to create when this rule matches. Only\n// valid for rules with a `tag` property, not for style rules. Each\n// rule should have one of a `node`, `mark`, or `ignore` property\n// (except when it appears in a [node](#model.NodeSpec.parseDOM) or\n// [mark spec](#model.MarkSpec.parseDOM), in which case the `node`\n// or `mark` property will be derived from its position).\n//\n// mark:: ?string\n// The name of the mark type to wrap the matched content in.\n//\n// ignore:: ?bool\n// When true, ignore content that matches this rule.\n//\n// skip:: ?bool\n// When true, ignore the node that matches this rule, but do parse\n// its content.\n//\n// attrs:: ?Object\n// Attributes for the node or mark created by this rule. When\n// `getAttrs` is provided, it takes precedence.\n//\n// getAttrs:: ?(union) → ?union\n// A function used to compute the attributes for the node or mark\n// created by this rule. Can also be used to describe further\n// conditions the DOM element or style must match. When it returns\n// `false`, the rule won't match. When it returns null or undefined,\n// that is interpreted as an empty/default set of attributes.\n//\n// Called with a DOM Element for `tag` rules, and with a string (the\n// style's value) for `style` rules.\n//\n// contentElement:: ?union\n// For `tag` rules that produce non-leaf nodes or marks, by default\n// the content of the DOM element is parsed as content of the mark\n// or node. If the child nodes are in a descendent node, this may be\n// a CSS selector string that the parser must use to find the actual\n// content element, or a function that returns the actual content\n// element to the parser.\n//\n// getContent:: ?(dom.Node, schema: Schema) → Fragment\n// Can be used to override the content of a matched node. When\n// present, instead of parsing the node's child nodes, the result of\n// this function is used.\n//\n// preserveWhitespace:: ?union\n// Controls whether whitespace should be preserved when parsing the\n// content inside the matched element. `false` means whitespace may\n// be collapsed, `true` means that whitespace should be preserved\n// but newlines normalized to spaces, and `\"full\"` means that\n// newlines should also be preserved.\n\n// ::- A DOM parser represents a strategy for parsing DOM content into\n// a ProseMirror document conforming to a given schema. Its behavior\n// is defined by an array of [rules](#model.ParseRule).\nvar DOMParser = function DOMParser(schema, rules) {\n var this$1 = this;\n\n // :: Schema\n // The schema into which the parser parses.\n this.schema = schema;\n // :: [ParseRule]\n // The set of [parse rules](#model.ParseRule) that the parser\n // uses, in order of precedence.\n this.rules = rules;\n this.tags = [];\n this.styles = [];\n\n rules.forEach(function (rule) {\n if (rule.tag) { this$1.tags.push(rule); }\n else if (rule.style) { this$1.styles.push(rule); }\n });\n};\n\n// :: (dom.Node, ?ParseOptions) → Node\n// Parse a document from the content of a DOM node.\nDOMParser.prototype.parse = function parse (dom, options) {\n if ( options === void 0 ) options = {};\n\n var context = new ParseContext(this, options, false);\n context.addAll(dom, null, options.from, options.to);\n return context.finish()\n};\n\n// :: (dom.Node, ?ParseOptions) → Slice\n// Parses the content of the given DOM node, like\n// [`parse`](#model.DOMParser.parse), and takes the same set of\n// options. But unlike that method, which produces a whole node,\n// this one returns a slice that is open at the sides, meaning that\n// the schema constraints aren't applied to the start of nodes to\n// the left of the input and the end of nodes at the end.\nDOMParser.prototype.parseSlice = function parseSlice (dom, options) {\n if ( options === void 0 ) options = {};\n\n var context = new ParseContext(this, options, true);\n context.addAll(dom, null, options.from, options.to);\n return Slice.maxOpen(context.finish())\n};\n\nDOMParser.prototype.matchTag = function matchTag (dom, context) {\n for (var i = 0; i < this.tags.length; i++) {\n var rule = this.tags[i];\n if (matches(dom, rule.tag) &&\n (rule.namespace === undefined || dom.namespaceURI == rule.namespace) &&\n (!rule.context || context.matchesContext(rule.context))) {\n if (rule.getAttrs) {\n var result = rule.getAttrs(dom);\n if (result === false) { continue }\n rule.attrs = result;\n }\n return rule\n }\n }\n};\n\nDOMParser.prototype.matchStyle = function matchStyle (prop, value, context) {\n for (var i = 0; i < this.styles.length; i++) {\n var rule = this.styles[i];\n if (rule.style.indexOf(prop) != 0 ||\n rule.context && !context.matchesContext(rule.context) ||\n // Test that the style string either precisely matches the prop,\n // or has an '=' sign after the prop, followed by the given\n // value.\n rule.style.length > prop.length &&\n (rule.style.charCodeAt(prop.length) != 61 || rule.style.slice(prop.length + 1) != value))\n { continue }\n if (rule.getAttrs) {\n var result = rule.getAttrs(value);\n if (result === false) { continue }\n rule.attrs = result;\n }\n return rule\n }\n};\n\n// : (Schema) → [ParseRule]\nDOMParser.schemaRules = function schemaRules (schema) {\n var result = [];\n function insert(rule) {\n var priority = rule.priority == null ? 50 : rule.priority, i = 0;\n for (; i < result.length; i++) {\n var next = result[i], nextPriority = next.priority == null ? 50 : next.priority;\n if (nextPriority < priority) { break }\n }\n result.splice(i, 0, rule);\n }\n\n var loop = function ( name ) {\n var rules = schema.marks[name].spec.parseDOM;\n if (rules) { rules.forEach(function (rule) {\n insert(rule = copy(rule));\n rule.mark = name;\n }); }\n };\n\n for (var name in schema.marks) loop( name );\n var loop$1 = function ( name ) {\n var rules$1 = schema.nodes[name$1].spec.parseDOM;\n if (rules$1) { rules$1.forEach(function (rule) {\n insert(rule = copy(rule));\n rule.node = name$1;\n }); }\n };\n\n for (var name$1 in schema.nodes) loop$1();\n return result\n};\n\n// :: (Schema) → DOMParser\n// Construct a DOM parser using the parsing rules listed in a\n// schema's [node specs](#model.NodeSpec.parseDOM), reordered by\n// [priority](#model.ParseRule.priority).\nDOMParser.fromSchema = function fromSchema (schema) {\n return schema.cached.domParser ||\n (schema.cached.domParser = new DOMParser(schema, DOMParser.schemaRules(schema)))\n};\n\n// : Object The block-level tags in HTML5\nvar blockTags = {\n address: true, article: true, aside: true, blockquote: true, canvas: true,\n dd: true, div: true, dl: true, fieldset: true, figcaption: true, figure: true,\n footer: true, form: true, h1: true, h2: true, h3: true, h4: true, h5: true,\n h6: true, header: true, hgroup: true, hr: true, li: true, noscript: true, ol: true,\n output: true, p: true, pre: true, section: true, table: true, tfoot: true, ul: true\n};\n\n// : Object The tags that we normally ignore.\nvar ignoreTags = {\n head: true, noscript: true, object: true, script: true, style: true, title: true\n};\n\n// : Object List tags.\nvar listTags = {ol: true, ul: true};\n\n// Using a bitfield for node context options\nvar OPT_PRESERVE_WS = 1, OPT_PRESERVE_WS_FULL = 2, OPT_OPEN_LEFT = 4;\n\nfunction wsOptionsFor(preserveWhitespace) {\n return (preserveWhitespace ? OPT_PRESERVE_WS : 0) | (preserveWhitespace === \"full\" ? OPT_PRESERVE_WS_FULL : 0)\n}\n\nvar NodeContext = function NodeContext(type, attrs, marks, pendingMarks, solid, match, options) {\n this.type = type;\n this.attrs = attrs;\n this.solid = solid;\n this.match = match || (options & OPT_OPEN_LEFT ? null : type.contentMatch);\n this.options = options;\n this.content = [];\n // Marks applied to this node itself\n this.marks = marks;\n // Marks applied to its children\n this.activeMarks = Mark.none;\n // Marks that can't apply here, but will be used in children if possible\n this.pendingMarks = pendingMarks;\n};\n\nNodeContext.prototype.findWrapping = function findWrapping (node) {\n if (!this.match) {\n if (!this.type) { return [] }\n var fill = this.type.contentMatch.fillBefore(Fragment.from(node));\n if (fill) {\n this.match = this.type.contentMatch.matchFragment(fill);\n } else {\n var start = this.type.contentMatch, wrap;\n if (wrap = start.findWrapping(node.type)) {\n this.match = start;\n return wrap\n } else {\n return null\n }\n }\n }\n return this.match.findWrapping(node.type)\n};\n\nNodeContext.prototype.finish = function finish (openEnd) {\n if (!(this.options & OPT_PRESERVE_WS)) { // Strip trailing whitespace\n var last = this.content[this.content.length - 1], m;\n if (last && last.isText && (m = /[ \\t\\r\\n\\u000c]+$/.exec(last.text))) {\n if (last.text.length == m[0].length) { this.content.pop(); }\n else { this.content[this.content.length - 1] = last.withText(last.text.slice(0, last.text.length - m[0].length)); }\n }\n }\n var content = Fragment.from(this.content);\n if (!openEnd && this.match)\n { content = content.append(this.match.fillBefore(Fragment.empty, true)); }\n return this.type ? this.type.create(this.attrs, content, this.marks) : content\n};\n\nNodeContext.prototype.applyPending = function applyPending (nextType) {\n for (var i = 0, pending = this.pendingMarks; i < pending.length; i++) {\n var mark = pending[i];\n if ((this.type ? this.type.allowsMarkType(mark.type) : markMayApply(mark.type, nextType)) &&\n !mark.isInSet(this.activeMarks)) {\n this.activeMarks = mark.addToSet(this.activeMarks);\n this.pendingMarks = mark.removeFromSet(this.pendingMarks);\n }\n }\n};\n\nvar ParseContext = function ParseContext(parser, options, open) {\n // : DOMParser The parser we are using.\n this.parser = parser;\n // : Object The options passed to this parse.\n this.options = options;\n this.isOpen = open;\n var topNode = options.topNode, topContext;\n var topOptions = wsOptionsFor(options.preserveWhitespace) | (open ? OPT_OPEN_LEFT : 0);\n if (topNode)\n { topContext = new NodeContext(topNode.type, topNode.attrs, Mark.none, Mark.none, true,\n options.topMatch || topNode.type.contentMatch, topOptions); }\n else if (open)\n { topContext = new NodeContext(null, null, Mark.none, Mark.none, true, null, topOptions); }\n else\n { topContext = new NodeContext(parser.schema.topNodeType, null, Mark.none, Mark.none, true, null, topOptions); }\n this.nodes = [topContext];\n // : [Mark] The current set of marks\n this.open = 0;\n this.find = options.findPositions;\n this.needsBlock = false;\n};\n\nvar prototypeAccessors$6 = { top: { configurable: true },currentPos: { configurable: true } };\n\nprototypeAccessors$6.top.get = function () {\n return this.nodes[this.open]\n};\n\n// : (dom.Node)\n// Add a DOM node to the content. Text is inserted as text node,\n// otherwise, the node is passed to `addElement` or, if it has a\n// `style` attribute, `addElementWithStyles`.\nParseContext.prototype.addDOM = function addDOM (dom) {\n if (dom.nodeType == 3) {\n this.addTextNode(dom);\n } else if (dom.nodeType == 1) {\n var style = dom.getAttribute(\"style\");\n var marks = style ? this.readStyles(parseStyles(style)) : null, top = this.top;\n if (marks != null) { for (var i = 0; i < marks.length; i++) { this.addPendingMark(marks[i]); } }\n this.addElement(dom);\n if (marks != null) { for (var i$1 = 0; i$1 < marks.length; i$1++) { this.removePendingMark(marks[i$1], top); } }\n }\n};\n\nParseContext.prototype.addTextNode = function addTextNode (dom) {\n var value = dom.nodeValue;\n var top = this.top;\n if ((top.type ? top.type.inlineContent : top.content.length && top.content[0].isInline) || /[^ \\t\\r\\n\\u000c]/.test(value)) {\n if (!(top.options & OPT_PRESERVE_WS)) {\n value = value.replace(/[ \\t\\r\\n\\u000c]+/g, \" \");\n // If this starts with whitespace, and there is no node before it, or\n // a hard break, or a text node that ends with whitespace, strip the\n // leading space.\n if (/^[ \\t\\r\\n\\u000c]/.test(value) && this.open == this.nodes.length - 1) {\n var nodeBefore = top.content[top.content.length - 1];\n var domNodeBefore = dom.previousSibling;\n if (!nodeBefore ||\n (domNodeBefore && domNodeBefore.nodeName == 'BR') ||\n (nodeBefore.isText && /[ \\t\\r\\n\\u000c]$/.test(nodeBefore.text)))\n { value = value.slice(1); }\n }\n } else if (!(top.options & OPT_PRESERVE_WS_FULL)) {\n value = value.replace(/\\r?\\n|\\r/g, \" \");\n }\n if (value) { this.insertNode(this.parser.schema.text(value)); }\n this.findInText(dom);\n } else {\n this.findInside(dom);\n }\n};\n\n// : (dom.Element)\n// Try to find a handler for the given tag and use that to parse. If\n// none is found, the element's content nodes are added directly.\nParseContext.prototype.addElement = function addElement (dom) {\n var name = dom.nodeName.toLowerCase();\n if (listTags.hasOwnProperty(name)) { normalizeList(dom); }\n var rule = (this.options.ruleFromNode && this.options.ruleFromNode(dom)) || this.parser.matchTag(dom, this);\n if (rule ? rule.ignore : ignoreTags.hasOwnProperty(name)) {\n this.findInside(dom);\n } else if (!rule || rule.skip) {\n if (rule && rule.skip.nodeType) { dom = rule.skip; }\n var sync, top = this.top, oldNeedsBlock = this.needsBlock;\n if (blockTags.hasOwnProperty(name)) {\n sync = true;\n if (!top.type) { this.needsBlock = true; }\n } else if (!dom.firstChild) {\n this.leafFallback(dom);\n return\n }\n this.addAll(dom);\n if (sync) { this.sync(top); }\n this.needsBlock = oldNeedsBlock;\n } else {\n this.addElementByRule(dom, rule);\n }\n};\n\n// Called for leaf DOM nodes that would otherwise be ignored\nParseContext.prototype.leafFallback = function leafFallback (dom) {\n if (dom.nodeName == \"BR\" && this.top.type && this.top.type.inlineContent)\n { this.addTextNode(dom.ownerDocument.createTextNode(\"\\n\")); }\n};\n\n// Run any style parser associated with the node's styles. Either\n// return an array of marks, or null to indicate some of the styles\n// had a rule with `ignore` set.\nParseContext.prototype.readStyles = function readStyles (styles) {\n var marks = Mark.none;\n for (var i = 0; i < styles.length; i += 2) {\n var rule = this.parser.matchStyle(styles[i], styles[i + 1], this);\n if (!rule) { continue }\n if (rule.ignore) { return null }\n marks = this.parser.schema.marks[rule.mark].create(rule.attrs).addToSet(marks);\n }\n return marks\n};\n\n// : (dom.Element, ParseRule) → bool\n// Look up a handler for the given node. If none are found, return\n// false. Otherwise, apply it, use its return value to drive the way\n// the node's content is wrapped, and return true.\nParseContext.prototype.addElementByRule = function addElementByRule (dom, rule) {\n var this$1 = this;\n\n var sync, nodeType, markType, mark;\n if (rule.node) {\n nodeType = this.parser.schema.nodes[rule.node];\n if (!nodeType.isLeaf) {\n sync = this.enter(nodeType, rule.attrs, rule.preserveWhitespace);\n } else if (!this.insertNode(nodeType.create(rule.attrs))) {\n this.leafFallback(dom);\n }\n } else {\n markType = this.parser.schema.marks[rule.mark];\n mark = markType.create(rule.attrs);\n this.addPendingMark(mark);\n }\n var startIn = this.top;\n\n if (nodeType && nodeType.isLeaf) {\n this.findInside(dom);\n } else if (rule.getContent) {\n this.findInside(dom);\n rule.getContent(dom, this.parser.schema).forEach(function (node) { return this$1.insertNode(node); });\n } else {\n var contentDOM = rule.contentElement;\n if (typeof contentDOM == \"string\") { contentDOM = dom.querySelector(contentDOM); }\n else if (typeof contentDOM == \"function\") { contentDOM = contentDOM(dom); }\n if (!contentDOM) { contentDOM = dom; }\n this.findAround(dom, contentDOM, true);\n this.addAll(contentDOM, sync);\n }\n if (sync) { this.sync(startIn); this.open--; }\n if (mark) { this.removePendingMark(mark, startIn); }\n};\n\n// : (dom.Node, ?NodeBuilder, ?number, ?number)\n// Add all child nodes between `startIndex` and `endIndex` (or the\n// whole node, if not given). If `sync` is passed, use it to\n// synchronize after every block element.\nParseContext.prototype.addAll = function addAll (parent, sync, startIndex, endIndex) {\n var index = startIndex || 0;\n for (var dom = startIndex ? parent.childNodes[startIndex] : parent.firstChild,\n end = endIndex == null ? null : parent.childNodes[endIndex];\n dom != end; dom = dom.nextSibling, ++index) {\n this.findAtPoint(parent, index);\n this.addDOM(dom);\n if (sync && blockTags.hasOwnProperty(dom.nodeName.toLowerCase()))\n { this.sync(sync); }\n }\n this.findAtPoint(parent, index);\n};\n\n// Try to find a way to fit the given node type into the current\n// context. May add intermediate wrappers and/or leave non-solid\n// nodes that we're in.\nParseContext.prototype.findPlace = function findPlace (node) {\n var route, sync;\n for (var depth = this.open; depth >= 0; depth--) {\n var cx = this.nodes[depth];\n var found = cx.findWrapping(node);\n if (found && (!route || route.length > found.length)) {\n route = found;\n sync = cx;\n if (!found.length) { break }\n }\n if (cx.solid) { break }\n }\n if (!route) { return false }\n this.sync(sync);\n for (var i = 0; i < route.length; i++)\n { this.enterInner(route[i], null, false); }\n return true\n};\n\n// : (Node) → ?Node\n// Try to insert the given node, adjusting the context when needed.\nParseContext.prototype.insertNode = function insertNode (node) {\n if (node.isInline && this.needsBlock && !this.top.type) {\n var block = this.textblockFromContext();\n if (block) { this.enterInner(block); }\n }\n if (this.findPlace(node)) {\n this.closeExtra();\n var top = this.top;\n top.applyPending(node.type);\n if (top.match) { top.match = top.match.matchType(node.type); }\n var marks = top.activeMarks;\n for (var i = 0; i < node.marks.length; i++)\n { if (!top.type || top.type.allowsMarkType(node.marks[i].type))\n { marks = node.marks[i].addToSet(marks); } }\n top.content.push(node.mark(marks));\n return true\n }\n return false\n};\n\n// : (NodeType, ?Object) → bool\n// Try to start a node of the given type, adjusting the context when\n// necessary.\nParseContext.prototype.enter = function enter (type, attrs, preserveWS) {\n var ok = this.findPlace(type.create(attrs));\n if (ok) { this.enterInner(type, attrs, true, preserveWS); }\n return ok\n};\n\n// Open a node of the given type\nParseContext.prototype.enterInner = function enterInner (type, attrs, solid, preserveWS) {\n this.closeExtra();\n var top = this.top;\n top.applyPending(type);\n top.match = top.match && top.match.matchType(type, attrs);\n var options = preserveWS == null ? top.options & ~OPT_OPEN_LEFT : wsOptionsFor(preserveWS);\n if ((top.options & OPT_OPEN_LEFT) && top.content.length == 0) { options |= OPT_OPEN_LEFT; }\n this.nodes.push(new NodeContext(type, attrs, top.activeMarks, top.pendingMarks, solid, null, options));\n this.open++;\n};\n\n// Make sure all nodes above this.open are finished and added to\n// their parents\nParseContext.prototype.closeExtra = function closeExtra (openEnd) {\n var i = this.nodes.length - 1;\n if (i > this.open) {\n for (; i > this.open; i--) { this.nodes[i - 1].content.push(this.nodes[i].finish(openEnd)); }\n this.nodes.length = this.open + 1;\n }\n};\n\nParseContext.prototype.finish = function finish () {\n this.open = 0;\n this.closeExtra(this.isOpen);\n return this.nodes[0].finish(this.isOpen || this.options.topOpen)\n};\n\nParseContext.prototype.sync = function sync (to) {\n for (var i = this.open; i >= 0; i--) { if (this.nodes[i] == to) {\n this.open = i;\n return\n } }\n};\n\nprototypeAccessors$6.currentPos.get = function () {\n this.closeExtra();\n var pos = 0;\n for (var i = this.open; i >= 0; i--) {\n var content = this.nodes[i].content;\n for (var j = content.length - 1; j >= 0; j--)\n { pos += content[j].nodeSize; }\n if (i) { pos++; }\n }\n return pos\n};\n\nParseContext.prototype.findAtPoint = function findAtPoint (parent, offset) {\n if (this.find) { for (var i = 0; i < this.find.length; i++) {\n if (this.find[i].node == parent && this.find[i].offset == offset)\n { this.find[i].pos = this.currentPos; }\n } }\n};\n\nParseContext.prototype.findInside = function findInside (parent) {\n if (this.find) { for (var i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node))\n { this.find[i].pos = this.currentPos; }\n } }\n};\n\nParseContext.prototype.findAround = function findAround (parent, content, before) {\n if (parent != content && this.find) { for (var i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node)) {\n var pos = content.compareDocumentPosition(this.find[i].node);\n if (pos & (before ? 2 : 4))\n { this.find[i].pos = this.currentPos; }\n }\n } }\n};\n\nParseContext.prototype.findInText = function findInText (textNode) {\n if (this.find) { for (var i = 0; i < this.find.length; i++) {\n if (this.find[i].node == textNode)\n { this.find[i].pos = this.currentPos - (textNode.nodeValue.length - this.find[i].offset); }\n } }\n};\n\n// : (string) → bool\n// Determines whether the given [context\n// string](#ParseRule.context) matches this context.\nParseContext.prototype.matchesContext = function matchesContext (context) {\n var this$1 = this;\n\n if (context.indexOf(\"|\") > -1)\n { return context.split(/\\s*\\|\\s*/).some(this.matchesContext, this) }\n\n var parts = context.split(\"/\");\n var option = this.options.context;\n var useRoot = !this.isOpen && (!option || option.parent.type == this.nodes[0].type);\n var minDepth = -(option ? option.depth + 1 : 0) + (useRoot ? 0 : 1);\n var match = function (i, depth) {\n for (; i >= 0; i--) {\n var part = parts[i];\n if (part == \"\") {\n if (i == parts.length - 1 || i == 0) { continue }\n for (; depth >= minDepth; depth--)\n { if (match(i - 1, depth)) { return true } }\n return false\n } else {\n var next = depth > 0 || (depth == 0 && useRoot) ? this$1.nodes[depth].type\n : option && depth >= minDepth ? option.node(depth - minDepth).type\n : null;\n if (!next || (next.name != part && next.groups.indexOf(part) == -1))\n { return false }\n depth--;\n }\n }\n return true\n };\n return match(parts.length - 1, this.open)\n};\n\nParseContext.prototype.textblockFromContext = function textblockFromContext () {\n var $context = this.options.context;\n if ($context) { for (var d = $context.depth; d >= 0; d--) {\n var deflt = $context.node(d).contentMatchAt($context.indexAfter(d)).defaultType;\n if (deflt && deflt.isTextblock && deflt.defaultAttrs) { return deflt }\n } }\n for (var name in this.parser.schema.nodes) {\n var type = this.parser.schema.nodes[name];\n if (type.isTextblock && type.defaultAttrs) { return type }\n }\n};\n\nParseContext.prototype.addPendingMark = function addPendingMark (mark) {\n this.top.pendingMarks = mark.addToSet(this.top.pendingMarks);\n};\n\nParseContext.prototype.removePendingMark = function removePendingMark (mark, upto) {\n for (var depth = this.open; depth >= 0; depth--) {\n var level = this.nodes[depth];\n var found = level.pendingMarks.lastIndexOf(mark);\n if (found > -1) { level.pendingMarks = mark.removeFromSet(level.pendingMarks); }\n else { level.activeMarks = mark.removeFromSet(level.activeMarks); }\n if (level == upto) { break }\n }\n};\n\nObject.defineProperties( ParseContext.prototype, prototypeAccessors$6 );\n\n// Kludge to work around directly nested list nodes produced by some\n// tools and allowed by browsers to mean that the nested list is\n// actually part of the list item above it.\nfunction normalizeList(dom) {\n for (var child = dom.firstChild, prevItem = null; child; child = child.nextSibling) {\n var name = child.nodeType == 1 ? child.nodeName.toLowerCase() : null;\n if (name && listTags.hasOwnProperty(name) && prevItem) {\n prevItem.appendChild(child);\n child = prevItem;\n } else if (name == \"li\") {\n prevItem = child;\n } else if (name) {\n prevItem = null;\n }\n }\n}\n\n// Apply a CSS selector.\nfunction matches(dom, selector) {\n return (dom.matches || dom.msMatchesSelector || dom.webkitMatchesSelector || dom.mozMatchesSelector).call(dom, selector)\n}\n\n// : (string) → [string]\n// Tokenize a style attribute into property/value pairs.\nfunction parseStyles(style) {\n var re = /\\s*([\\w-]+)\\s*:\\s*([^;]+)/g, m, result = [];\n while (m = re.exec(style)) { result.push(m[1], m[2].trim()); }\n return result\n}\n\nfunction copy(obj) {\n var copy = {};\n for (var prop in obj) { copy[prop] = obj[prop]; }\n return copy\n}\n\n// Used when finding a mark at the top level of a fragment parse.\n// Checks whether it would be reasonable to apply a given mark type to\n// a given node, by looking at the way the mark occurs in the schema.\nfunction markMayApply(markType, nodeType) {\n var nodes = nodeType.schema.nodes;\n var loop = function ( name ) {\n var parent = nodes[name];\n if (!parent.allowsMarkType(markType)) { return }\n var seen = [], scan = function (match) {\n seen.push(match);\n for (var i = 0; i < match.edgeCount; i++) {\n var ref = match.edge(i);\n var type = ref.type;\n var next = ref.next;\n if (type == nodeType) { return true }\n if (seen.indexOf(next) < 0 && scan(next)) { return true }\n }\n };\n if (scan(parent.contentMatch)) { return { v: true } }\n };\n\n for (var name in nodes) {\n var returned = loop( name );\n\n if ( returned ) return returned.v;\n }\n}\n\n// DOMOutputSpec:: interface\n// A description of a DOM structure. Can be either a string, which is\n// interpreted as a text node, a DOM node, which is interpreted as\n// itself, or an array.\n//\n// An array describes a DOM element. The first value in the array\n// should be a string—the name of the DOM element, optionally prefixed\n// by a namespace URL and a space. If the second element is plain\n// object, it is interpreted as a set of attributes for the element.\n// Any elements after that (including the 2nd if it's not an attribute\n// object) are interpreted as children of the DOM elements, and must\n// either be valid `DOMOutputSpec` values, or the number zero.\n//\n// The number zero (pronounced “hole”) is used to indicate the place\n// where a node's child nodes should be inserted. If it occurs in an\n// output spec, it should be the only child element in its parent\n// node.\n\n// ::- A DOM serializer knows how to convert ProseMirror nodes and\n// marks of various types to DOM nodes.\nvar DOMSerializer = function DOMSerializer(nodes, marks) {\n // :: Object<(node: Node) → DOMOutputSpec>\n // The node serialization functions.\n this.nodes = nodes || {};\n // :: Object\n // The mark serialization functions.\n this.marks = marks || {};\n};\n\n// :: (Fragment, ?Object) → dom.DocumentFragment\n// Serialize the content of this fragment to a DOM fragment. When\n// not in the browser, the `document` option, containing a DOM\n// document, should be passed so that the serializer can create\n// nodes.\nDOMSerializer.prototype.serializeFragment = function serializeFragment (fragment, options, target) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n if (!target) { target = doc(options).createDocumentFragment(); }\n\n var top = target, active = null;\n fragment.forEach(function (node) {\n if (active || node.marks.length) {\n if (!active) { active = []; }\n var keep = 0, rendered = 0;\n while (keep < active.length && rendered < node.marks.length) {\n var next = node.marks[rendered];\n if (!this$1.marks[next.type.name]) { rendered++; continue }\n if (!next.eq(active[keep]) || next.type.spec.spanning === false) { break }\n keep += 2; rendered++;\n }\n while (keep < active.length) {\n top = active.pop();\n active.pop();\n }\n while (rendered < node.marks.length) {\n var add = node.marks[rendered++];\n var markDOM = this$1.serializeMark(add, node.isInline, options);\n if (markDOM) {\n active.push(add, top);\n top.appendChild(markDOM.dom);\n top = markDOM.contentDOM || markDOM.dom;\n }\n }\n }\n top.appendChild(this$1.serializeNode(node, options));\n });\n\n return target\n};\n\n// :: (Node, ?Object) → dom.Node\n// Serialize this node to a DOM node. This can be useful when you\n// need to serialize a part of a document, as opposed to the whole\n// document. To serialize a whole document, use\n// [`serializeFragment`](#model.DOMSerializer.serializeFragment) on\n// its [content](#model.Node.content).\nDOMSerializer.prototype.serializeNode = function serializeNode (node, options) {\n if ( options === void 0 ) options = {};\n\n var ref =\n DOMSerializer.renderSpec(doc(options), this.nodes[node.type.name](node));\n var dom = ref.dom;\n var contentDOM = ref.contentDOM;\n if (contentDOM) {\n if (node.isLeaf)\n { throw new RangeError(\"Content hole not allowed in a leaf node spec\") }\n if (options.onContent)\n { options.onContent(node, contentDOM, options); }\n else\n { this.serializeFragment(node.content, options, contentDOM); }\n }\n return dom\n};\n\nDOMSerializer.prototype.serializeNodeAndMarks = function serializeNodeAndMarks (node, options) {\n if ( options === void 0 ) options = {};\n\n var dom = this.serializeNode(node, options);\n for (var i = node.marks.length - 1; i >= 0; i--) {\n var wrap = this.serializeMark(node.marks[i], node.isInline, options);\n if (wrap) {\n(wrap.contentDOM || wrap.dom).appendChild(dom);\n dom = wrap.dom;\n }\n }\n return dom\n};\n\nDOMSerializer.prototype.serializeMark = function serializeMark (mark, inline, options) {\n if ( options === void 0 ) options = {};\n\n var toDOM = this.marks[mark.type.name];\n return toDOM && DOMSerializer.renderSpec(doc(options), toDOM(mark, inline))\n};\n\n// :: (dom.Document, DOMOutputSpec) → {dom: dom.Node, contentDOM: ?dom.Node}\n// Render an [output spec](#model.DOMOutputSpec) to a DOM node. If\n// the spec has a hole (zero) in it, `contentDOM` will point at the\n// node with the hole.\nDOMSerializer.renderSpec = function renderSpec (doc, structure, xmlNS) {\n if ( xmlNS === void 0 ) xmlNS = null;\n\n if (typeof structure == \"string\")\n { return {dom: doc.createTextNode(structure)} }\n if (structure.nodeType != null)\n { return {dom: structure} }\n var tagName = structure[0], space = tagName.indexOf(\" \");\n if (space > 0) {\n xmlNS = tagName.slice(0, space);\n tagName = tagName.slice(space + 1);\n }\n var contentDOM = null, dom = xmlNS ? doc.createElementNS(xmlNS, tagName) : doc.createElement(tagName);\n var attrs = structure[1], start = 1;\n if (attrs && typeof attrs == \"object\" && attrs.nodeType == null && !Array.isArray(attrs)) {\n start = 2;\n for (var name in attrs) { if (attrs[name] != null) {\n var space$1 = name.indexOf(\" \");\n if (space$1 > 0) { dom.setAttributeNS(name.slice(0, space$1), name.slice(space$1 + 1), attrs[name]); }\n else { dom.setAttribute(name, attrs[name]); }\n } }\n }\n for (var i = start; i < structure.length; i++) {\n var child = structure[i];\n if (child === 0) {\n if (i < structure.length - 1 || i > start)\n { throw new RangeError(\"Content hole must be the only child of its parent node\") }\n return {dom: dom, contentDOM: dom}\n } else {\n var ref = DOMSerializer.renderSpec(doc, child, xmlNS);\n var inner = ref.dom;\n var innerContent = ref.contentDOM;\n dom.appendChild(inner);\n if (innerContent) {\n if (contentDOM) { throw new RangeError(\"Multiple content holes\") }\n contentDOM = innerContent;\n }\n }\n }\n return {dom: dom, contentDOM: contentDOM}\n};\n\n// :: (Schema) → DOMSerializer\n// Build a serializer using the [`toDOM`](#model.NodeSpec.toDOM)\n// properties in a schema's node and mark specs.\nDOMSerializer.fromSchema = function fromSchema (schema) {\n return schema.cached.domSerializer ||\n (schema.cached.domSerializer = new DOMSerializer(this.nodesFromSchema(schema), this.marksFromSchema(schema)))\n};\n\n// : (Schema) → Object<(node: Node) → DOMOutputSpec>\n// Gather the serializers in a schema's node specs into an object.\n// This can be useful as a base to build a custom serializer from.\nDOMSerializer.nodesFromSchema = function nodesFromSchema (schema) {\n var result = gatherToDOM(schema.nodes);\n if (!result.text) { result.text = function (node) { return node.text; }; }\n return result\n};\n\n// : (Schema) → Object<(mark: Mark) → DOMOutputSpec>\n// Gather the serializers in a schema's mark specs into an object.\nDOMSerializer.marksFromSchema = function marksFromSchema (schema) {\n return gatherToDOM(schema.marks)\n};\n\nfunction gatherToDOM(obj) {\n var result = {};\n for (var name in obj) {\n var toDOM = obj[name].spec.toDOM;\n if (toDOM) { result[name] = toDOM; }\n }\n return result\n}\n\nfunction doc(options) {\n // declare global: window\n return options.document || window.document\n}\n\nexport { ContentMatch, DOMParser, DOMSerializer, Fragment, Mark, MarkType, Node, NodeRange, NodeType, ReplaceError, ResolvedPos, Schema, Slice };\n//# sourceMappingURL=index.es.js.map\n","'use strict'\n\nvar high = require('highlight.js/lib/core')\nvar fault = require('fault')\n\nexports.highlight = highlight\nexports.highlightAuto = highlightAuto\nexports.registerLanguage = registerLanguage\nexports.listLanguages = listLanguages\nexports.registerAlias = registerAlias\n\nEmitter.prototype.addText = text\nEmitter.prototype.addKeyword = addKeyword\nEmitter.prototype.addSublanguage = addSublanguage\nEmitter.prototype.openNode = open\nEmitter.prototype.closeNode = close\nEmitter.prototype.closeAllNodes = noop\nEmitter.prototype.finalize = noop\nEmitter.prototype.toHTML = toHtmlNoop\n\nvar defaultPrefix = 'hljs-'\n\n// Highlighting `value` in the language `name`.\nfunction highlight(name, value, options) {\n var before = high.configure({})\n var settings = options || {}\n var prefix = settings.prefix\n var result\n\n if (typeof name !== 'string') {\n throw fault('Expected `string` for name, got `%s`', name)\n }\n\n if (!high.getLanguage(name)) {\n throw fault('Unknown language: `%s` is not registered', name)\n }\n\n if (typeof value !== 'string') {\n throw fault('Expected `string` for value, got `%s`', value)\n }\n\n if (prefix === null || prefix === undefined) {\n prefix = defaultPrefix\n }\n\n high.configure({__emitter: Emitter, classPrefix: prefix})\n\n result = high.highlight(name, value, true)\n\n high.configure(before)\n\n /* istanbul ignore if - Highlight.js seems to use this (currently) for broken\n * grammars, so let’s keep it in there just to be sure. */\n if (result.errorRaised) {\n throw result.errorRaised\n }\n\n return {\n relevance: result.relevance,\n language: result.language,\n value: result.emitter.rootNode.children\n }\n}\n\nfunction highlightAuto(value, options) {\n var settings = options || {}\n var subset = settings.subset || high.listLanguages()\n var prefix = settings.prefix\n var length = subset.length\n var index = -1\n var result\n var secondBest\n var current\n var name\n\n if (prefix === null || prefix === undefined) {\n prefix = defaultPrefix\n }\n\n if (typeof value !== 'string') {\n throw fault('Expected `string` for value, got `%s`', value)\n }\n\n secondBest = {relevance: 0, language: null, value: []}\n result = {relevance: 0, language: null, value: []}\n\n while (++index < length) {\n name = subset[index]\n\n if (!high.getLanguage(name)) {\n continue\n }\n\n current = highlight(name, value, options)\n current.language = name\n\n if (current.relevance > secondBest.relevance) {\n secondBest = current\n }\n\n if (current.relevance > result.relevance) {\n secondBest = result\n result = current\n }\n }\n\n if (secondBest.language) {\n result.secondBest = secondBest\n }\n\n return result\n}\n\n// Register a language.\nfunction registerLanguage(name, syntax) {\n high.registerLanguage(name, syntax)\n}\n\n// Get a list of all registered languages.\nfunction listLanguages() {\n return high.listLanguages()\n}\n\n// Register more aliases for an already registered language.\nfunction registerAlias(name, alias) {\n var map = name\n var key\n\n if (alias) {\n map = {}\n map[name] = alias\n }\n\n for (key in map) {\n high.registerAliases(map[key], {languageName: key})\n }\n}\n\nfunction Emitter(options) {\n this.options = options\n this.rootNode = {children: []}\n this.stack = [this.rootNode]\n}\n\nfunction addKeyword(value, name) {\n this.openNode(name)\n this.addText(value)\n this.closeNode()\n}\n\nfunction addSublanguage(other, name) {\n var stack = this.stack\n var current = stack[stack.length - 1]\n var results = other.rootNode.children\n var node = name\n ? {\n type: 'element',\n tagName: 'span',\n properties: {className: [name]},\n children: results\n }\n : results\n\n current.children = current.children.concat(node)\n}\n\nfunction text(value) {\n var stack = this.stack\n var current\n var tail\n\n if (value === '') return\n\n current = stack[stack.length - 1]\n tail = current.children[current.children.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += value\n } else {\n current.children.push({type: 'text', value: value})\n }\n}\n\nfunction open(name) {\n var stack = this.stack\n var className = this.options.classPrefix + name\n var current = stack[stack.length - 1]\n var child = {\n type: 'element',\n tagName: 'span',\n properties: {className: [className]},\n children: []\n }\n\n current.children.push(child)\n stack.push(child)\n}\n\nfunction close() {\n this.stack.pop()\n}\n\nfunction toHtmlNoop() {\n return ''\n}\n\nfunction noop() {}\n","const { defaults } = require('./defaults.js');\nconst {\n cleanUrl,\n escape\n} = require('./helpers.js');\n\n/**\n * Renderer\n */\nmodule.exports = class Renderer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    ';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n };\n\n blockquote(quote) {\n return '
    \\n' + quote + '
    \\n';\n };\n\n html(html) {\n return html;\n };\n\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return ''\n + text\n + '\\n';\n }\n // ignore IDs\n return '' + text + '\\n';\n };\n\n hr() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n };\n\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n };\n\n listitem(text) {\n return '
  • ' + text + '
  • \\n';\n };\n\n checkbox(checked) {\n return ' ';\n };\n\n paragraph(text) {\n return '

    ' + text + '

    \\n';\n };\n\n table(header, body) {\n if (body) body = '' + body + '';\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n };\n\n tablerow(content) {\n return '\\n' + content + '\\n';\n };\n\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? '<' + type + ' align=\"' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n };\n\n // span level renderer\n strong(text) {\n return '' + text + '';\n };\n\n em(text) {\n return '' + text + '';\n };\n\n codespan(text) {\n return '' + text + '';\n };\n\n br() {\n return this.options.xhtml ? '
    ' : '
    ';\n };\n\n del(text) {\n return '' + text + '';\n };\n\n link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n };\n\n image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n let out = '\"'' : '>';\n return out;\n };\n\n text(text) {\n return text;\n };\n};\n","const { defaults } = require('./defaults.js');\nconst { block } = require('./rules.js');\nconst {\n rtrim,\n splitCells,\n escape\n} = require('./helpers.js');\n\n/**\n * Block Lexer\n */\nmodule.exports = class Lexer {\n constructor(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults;\n this.rules = block.normal;\n\n if (this.options.pedantic) {\n this.rules = block.pedantic;\n } else if (this.options.gfm) {\n this.rules = block.gfm;\n }\n }\n\n /**\n * Expose Block Rules\n */\n static get rules() {\n return block;\n }\n\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new Lexer(options);\n return lexer.lex(src);\n };\n\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ');\n\n return this.token(src, true);\n };\n\n /**\n * Lexing\n */\n token(src, top) {\n src = src.replace(/^ +$/gm, '');\n let next,\n loose,\n cap,\n bull,\n b,\n item,\n listStart,\n listItems,\n t,\n space,\n i,\n tag,\n l,\n isordered,\n istask,\n ischecked;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n const lastToken = this.tokens[this.tokens.length - 1];\n src = src.substring(cap[0].length);\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && lastToken.type === 'paragraph') {\n lastToken.text += '\\n' + cap[0].trimRight();\n } else {\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(cap, '\\n')\n : cap\n });\n }\n continue;\n }\n\n // fences\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (cap = this.rules.nptable.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(item.cells[i], item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n isordered = bull.length > 1;\n\n listStart = {\n type: 'list_start',\n ordered: isordered,\n start: isordered ? +bull : '',\n loose: false\n };\n\n this.tokens.push(listStart);\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n listItems = [];\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) */, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull.length > 1 ? b.length === 1\n : (b.length > 1 || (this.options.smartLists && b !== bull))) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n listStart.loose = true;\n }\n\n // Check for task list items\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n\n t = {\n type: 'list_item_start',\n task: istask,\n checked: ischecked,\n loose: loose\n };\n\n listItems.push(t);\n this.tokens.push(t);\n\n // Recurse.\n this.token(item, false);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n if (listStart.loose) {\n l = listItems.length;\n i = 0;\n for (; i < l; i++) {\n listItems[i].loose = true;\n }\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0]\n });\n continue;\n }\n\n // def\n if (top && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n if (!this.tokens.links[tag]) {\n this.tokens.links[tag] = {\n href: cap[2],\n title: cap[3]\n };\n }\n continue;\n }\n\n // table (gfm)\n if (cap = this.rules.table.exec(src)) {\n item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n src = src.substring(cap[0].length);\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = splitCells(\n item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''),\n item.header.length);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n };\n};\n","import { Slice, Fragment, Mark, Node } from 'prosemirror-model';\nimport { ReplaceStep, ReplaceAroundStep, Transform } from 'prosemirror-transform';\n\nvar classesById = Object.create(null);\n\n// ::- Superclass for editor selections. Every selection type should\n// extend this. Should not be instantiated directly.\nvar Selection = function Selection($anchor, $head, ranges) {\n // :: [SelectionRange]\n // The ranges covered by the selection.\n this.ranges = ranges || [new SelectionRange($anchor.min($head), $anchor.max($head))];\n // :: ResolvedPos\n // The resolved anchor of the selection (the side that stays in\n // place when the selection is modified).\n this.$anchor = $anchor;\n // :: ResolvedPos\n // The resolved head of the selection (the side that moves when\n // the selection is modified).\n this.$head = $head;\n};\n\nvar prototypeAccessors = { anchor: { configurable: true },head: { configurable: true },from: { configurable: true },to: { configurable: true },$from: { configurable: true },$to: { configurable: true },empty: { configurable: true } };\n\n// :: number\n// The selection's anchor, as an unresolved position.\nprototypeAccessors.anchor.get = function () { return this.$anchor.pos };\n\n// :: number\n// The selection's head.\nprototypeAccessors.head.get = function () { return this.$head.pos };\n\n// :: number\n// The lower bound of the selection's main range.\nprototypeAccessors.from.get = function () { return this.$from.pos };\n\n// :: number\n// The upper bound of the selection's main range.\nprototypeAccessors.to.get = function () { return this.$to.pos };\n\n// :: ResolvedPos\n// The resolved lowerbound of the selection's main range.\nprototypeAccessors.$from.get = function () {\n return this.ranges[0].$from\n};\n\n// :: ResolvedPos\n// The resolved upper bound of the selection's main range.\nprototypeAccessors.$to.get = function () {\n return this.ranges[0].$to\n};\n\n// :: bool\n// Indicates whether the selection contains any content.\nprototypeAccessors.empty.get = function () {\n var ranges = this.ranges;\n for (var i = 0; i < ranges.length; i++)\n { if (ranges[i].$from.pos != ranges[i].$to.pos) { return false } }\n return true\n};\n\n// eq:: (Selection) → bool\n// Test whether the selection is the same as another selection.\n\n// map:: (doc: Node, mapping: Mappable) → Selection\n// Map this selection through a [mappable](#transform.Mappable) thing. `doc`\n// should be the new document to which we are mapping.\n\n// :: () → Slice\n// Get the content of this selection as a slice.\nSelection.prototype.content = function content () {\n return this.$from.node(0).slice(this.from, this.to, true)\n};\n\n// :: (Transaction, ?Slice)\n// Replace the selection with a slice or, if no slice is given,\n// delete the selection. Will append to the given transaction.\nSelection.prototype.replace = function replace (tr, content) {\n if ( content === void 0 ) content = Slice.empty;\n\n // Put the new selection at the position after the inserted\n // content. When that ended in an inline node, search backwards,\n // to get the position after that node. If not, search forward.\n var lastNode = content.content.lastChild, lastParent = null;\n for (var i = 0; i < content.openEnd; i++) {\n lastParent = lastNode;\n lastNode = lastNode.lastChild;\n }\n\n var mapFrom = tr.steps.length, ranges = this.ranges;\n for (var i$1 = 0; i$1 < ranges.length; i$1++) {\n var ref = ranges[i$1];\n var $from = ref.$from;\n var $to = ref.$to;\n var mapping = tr.mapping.slice(mapFrom);\n tr.replaceRange(mapping.map($from.pos), mapping.map($to.pos), i$1 ? Slice.empty : content);\n if (i$1 == 0)\n { selectionToInsertionEnd(tr, mapFrom, (lastNode ? lastNode.isInline : lastParent && lastParent.isTextblock) ? -1 : 1); }\n }\n};\n\n// :: (Transaction, Node)\n// Replace the selection with the given node, appending the changes\n// to the given transaction.\nSelection.prototype.replaceWith = function replaceWith (tr, node) {\n var mapFrom = tr.steps.length, ranges = this.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var ref = ranges[i];\n var $from = ref.$from;\n var $to = ref.$to;\n var mapping = tr.mapping.slice(mapFrom);\n var from = mapping.map($from.pos), to = mapping.map($to.pos);\n if (i) {\n tr.deleteRange(from, to);\n } else {\n tr.replaceRangeWith(from, to, node);\n selectionToInsertionEnd(tr, mapFrom, node.isInline ? -1 : 1);\n }\n }\n};\n\n// toJSON:: () → Object\n// Convert the selection to a JSON representation. When implementing\n// this for a custom selection class, make sure to give the object a\n// `type` property whose value matches the ID under which you\n// [registered](#state.Selection^jsonID) your class.\n\n// :: (ResolvedPos, number, ?bool) → ?Selection\n// Find a valid cursor or leaf node selection starting at the given\n// position and searching back if `dir` is negative, and forward if\n// positive. When `textOnly` is true, only consider cursor\n// selections. Will return null when no valid selection position is\n// found.\nSelection.findFrom = function findFrom ($pos, dir, textOnly) {\n var inner = $pos.parent.inlineContent ? new TextSelection($pos)\n : findSelectionIn($pos.node(0), $pos.parent, $pos.pos, $pos.index(), dir, textOnly);\n if (inner) { return inner }\n\n for (var depth = $pos.depth - 1; depth >= 0; depth--) {\n var found = dir < 0\n ? findSelectionIn($pos.node(0), $pos.node(depth), $pos.before(depth + 1), $pos.index(depth), dir, textOnly)\n : findSelectionIn($pos.node(0), $pos.node(depth), $pos.after(depth + 1), $pos.index(depth) + 1, dir, textOnly);\n if (found) { return found }\n }\n};\n\n// :: (ResolvedPos, ?number) → Selection\n// Find a valid cursor or leaf node selection near the given\n// position. Searches forward first by default, but if `bias` is\n// negative, it will search backwards first.\nSelection.near = function near ($pos, bias) {\n if ( bias === void 0 ) bias = 1;\n\n return this.findFrom($pos, bias) || this.findFrom($pos, -bias) || new AllSelection($pos.node(0))\n};\n\n// :: (Node) → Selection\n// Find the cursor or leaf node selection closest to the start of\n// the given document. Will return an\n// [`AllSelection`](#state.AllSelection) if no valid position\n// exists.\nSelection.atStart = function atStart (doc) {\n return findSelectionIn(doc, doc, 0, 0, 1) || new AllSelection(doc)\n};\n\n// :: (Node) → Selection\n// Find the cursor or leaf node selection closest to the end of the\n// given document.\nSelection.atEnd = function atEnd (doc) {\n return findSelectionIn(doc, doc, doc.content.size, doc.childCount, -1) || new AllSelection(doc)\n};\n\n// :: (Node, Object) → Selection\n// Deserialize the JSON representation of a selection. Must be\n// implemented for custom classes (as a static class method).\nSelection.fromJSON = function fromJSON (doc, json) {\n if (!json || !json.type) { throw new RangeError(\"Invalid input for Selection.fromJSON\") }\n var cls = classesById[json.type];\n if (!cls) { throw new RangeError((\"No selection type \" + (json.type) + \" defined\")) }\n return cls.fromJSON(doc, json)\n};\n\n// :: (string, constructor)\n// To be able to deserialize selections from JSON, custom selection\n// classes must register themselves with an ID string, so that they\n// can be disambiguated. Try to pick something that's unlikely to\n// clash with classes from other modules.\nSelection.jsonID = function jsonID (id, selectionClass) {\n if (id in classesById) { throw new RangeError(\"Duplicate use of selection JSON ID \" + id) }\n classesById[id] = selectionClass;\n selectionClass.prototype.jsonID = id;\n return selectionClass\n};\n\n// :: () → SelectionBookmark\n// Get a [bookmark](#state.SelectionBookmark) for this selection,\n// which is a value that can be mapped without having access to a\n// current document, and later resolved to a real selection for a\n// given document again. (This is used mostly by the history to\n// track and restore old selections.) The default implementation of\n// this method just converts the selection to a text selection and\n// returns the bookmark for that.\nSelection.prototype.getBookmark = function getBookmark () {\n return TextSelection.between(this.$anchor, this.$head).getBookmark()\n};\n\nObject.defineProperties( Selection.prototype, prototypeAccessors );\n\n// :: bool\n// Controls whether, when a selection of this type is active in the\n// browser, the selected range should be visible to the user. Defaults\n// to `true`.\nSelection.prototype.visible = true;\n\n// SelectionBookmark:: interface\n// A lightweight, document-independent representation of a selection.\n// You can define a custom bookmark type for a custom selection class\n// to make the history handle it well.\n//\n// map:: (mapping: Mapping) → SelectionBookmark\n// Map the bookmark through a set of changes.\n//\n// resolve:: (doc: Node) → Selection\n// Resolve the bookmark to a real selection again. This may need to\n// do some error checking and may fall back to a default (usually\n// [`TextSelection.between`](#state.TextSelection^between)) if\n// mapping made the bookmark invalid.\n\n// ::- Represents a selected range in a document.\nvar SelectionRange = function SelectionRange($from, $to) {\n // :: ResolvedPos\n // The lower bound of the range.\n this.$from = $from;\n // :: ResolvedPos\n // The upper bound of the range.\n this.$to = $to;\n};\n\n// ::- A text selection represents a classical editor selection, with\n// a head (the moving side) and anchor (immobile side), both of which\n// point into textblock nodes. It can be empty (a regular cursor\n// position).\nvar TextSelection = /*@__PURE__*/(function (Selection) {\n function TextSelection($anchor, $head) {\n if ( $head === void 0 ) $head = $anchor;\n\n Selection.call(this, $anchor, $head);\n }\n\n if ( Selection ) TextSelection.__proto__ = Selection;\n TextSelection.prototype = Object.create( Selection && Selection.prototype );\n TextSelection.prototype.constructor = TextSelection;\n\n var prototypeAccessors$1 = { $cursor: { configurable: true } };\n\n // :: ?ResolvedPos\n // Returns a resolved position if this is a cursor selection (an\n // empty text selection), and null otherwise.\n prototypeAccessors$1.$cursor.get = function () { return this.$anchor.pos == this.$head.pos ? this.$head : null };\n\n TextSelection.prototype.map = function map (doc, mapping) {\n var $head = doc.resolve(mapping.map(this.head));\n if (!$head.parent.inlineContent) { return Selection.near($head) }\n var $anchor = doc.resolve(mapping.map(this.anchor));\n return new TextSelection($anchor.parent.inlineContent ? $anchor : $head, $head)\n };\n\n TextSelection.prototype.replace = function replace (tr, content) {\n if ( content === void 0 ) content = Slice.empty;\n\n Selection.prototype.replace.call(this, tr, content);\n if (content == Slice.empty) {\n var marks = this.$from.marksAcross(this.$to);\n if (marks) { tr.ensureMarks(marks); }\n }\n };\n\n TextSelection.prototype.eq = function eq (other) {\n return other instanceof TextSelection && other.anchor == this.anchor && other.head == this.head\n };\n\n TextSelection.prototype.getBookmark = function getBookmark () {\n return new TextBookmark(this.anchor, this.head)\n };\n\n TextSelection.prototype.toJSON = function toJSON () {\n return {type: \"text\", anchor: this.anchor, head: this.head}\n };\n\n TextSelection.fromJSON = function fromJSON (doc, json) {\n if (typeof json.anchor != \"number\" || typeof json.head != \"number\")\n { throw new RangeError(\"Invalid input for TextSelection.fromJSON\") }\n return new TextSelection(doc.resolve(json.anchor), doc.resolve(json.head))\n };\n\n // :: (Node, number, ?number) → TextSelection\n // Create a text selection from non-resolved positions.\n TextSelection.create = function create (doc, anchor, head) {\n if ( head === void 0 ) head = anchor;\n\n var $anchor = doc.resolve(anchor);\n return new this($anchor, head == anchor ? $anchor : doc.resolve(head))\n };\n\n // :: (ResolvedPos, ResolvedPos, ?number) → Selection\n // Return a text selection that spans the given positions or, if\n // they aren't text positions, find a text selection near them.\n // `bias` determines whether the method searches forward (default)\n // or backwards (negative number) first. Will fall back to calling\n // [`Selection.near`](#state.Selection^near) when the document\n // doesn't contain a valid text position.\n TextSelection.between = function between ($anchor, $head, bias) {\n var dPos = $anchor.pos - $head.pos;\n if (!bias || dPos) { bias = dPos >= 0 ? 1 : -1; }\n if (!$head.parent.inlineContent) {\n var found = Selection.findFrom($head, bias, true) || Selection.findFrom($head, -bias, true);\n if (found) { $head = found.$head; }\n else { return Selection.near($head, bias) }\n }\n if (!$anchor.parent.inlineContent) {\n if (dPos == 0) {\n $anchor = $head;\n } else {\n $anchor = (Selection.findFrom($anchor, -bias, true) || Selection.findFrom($anchor, bias, true)).$anchor;\n if (($anchor.pos < $head.pos) != (dPos < 0)) { $anchor = $head; }\n }\n }\n return new TextSelection($anchor, $head)\n };\n\n Object.defineProperties( TextSelection.prototype, prototypeAccessors$1 );\n\n return TextSelection;\n}(Selection));\n\nSelection.jsonID(\"text\", TextSelection);\n\nvar TextBookmark = function TextBookmark(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n};\nTextBookmark.prototype.map = function map (mapping) {\n return new TextBookmark(mapping.map(this.anchor), mapping.map(this.head))\n};\nTextBookmark.prototype.resolve = function resolve (doc) {\n return TextSelection.between(doc.resolve(this.anchor), doc.resolve(this.head))\n};\n\n// ::- A node selection is a selection that points at a single node.\n// All nodes marked [selectable](#model.NodeSpec.selectable) can be\n// the target of a node selection. In such a selection, `from` and\n// `to` point directly before and after the selected node, `anchor`\n// equals `from`, and `head` equals `to`..\nvar NodeSelection = /*@__PURE__*/(function (Selection) {\n function NodeSelection($pos) {\n var node = $pos.nodeAfter;\n var $end = $pos.node(0).resolve($pos.pos + node.nodeSize);\n Selection.call(this, $pos, $end);\n // :: Node The selected node.\n this.node = node;\n }\n\n if ( Selection ) NodeSelection.__proto__ = Selection;\n NodeSelection.prototype = Object.create( Selection && Selection.prototype );\n NodeSelection.prototype.constructor = NodeSelection;\n\n NodeSelection.prototype.map = function map (doc, mapping) {\n var ref = mapping.mapResult(this.anchor);\n var deleted = ref.deleted;\n var pos = ref.pos;\n var $pos = doc.resolve(pos);\n if (deleted) { return Selection.near($pos) }\n return new NodeSelection($pos)\n };\n\n NodeSelection.prototype.content = function content () {\n return new Slice(Fragment.from(this.node), 0, 0)\n };\n\n NodeSelection.prototype.eq = function eq (other) {\n return other instanceof NodeSelection && other.anchor == this.anchor\n };\n\n NodeSelection.prototype.toJSON = function toJSON () {\n return {type: \"node\", anchor: this.anchor}\n };\n\n NodeSelection.prototype.getBookmark = function getBookmark () { return new NodeBookmark(this.anchor) };\n\n NodeSelection.fromJSON = function fromJSON (doc, json) {\n if (typeof json.anchor != \"number\")\n { throw new RangeError(\"Invalid input for NodeSelection.fromJSON\") }\n return new NodeSelection(doc.resolve(json.anchor))\n };\n\n // :: (Node, number) → NodeSelection\n // Create a node selection from non-resolved positions.\n NodeSelection.create = function create (doc, from) {\n return new this(doc.resolve(from))\n };\n\n // :: (Node) → bool\n // Determines whether the given node may be selected as a node\n // selection.\n NodeSelection.isSelectable = function isSelectable (node) {\n return !node.isText && node.type.spec.selectable !== false\n };\n\n return NodeSelection;\n}(Selection));\n\nNodeSelection.prototype.visible = false;\n\nSelection.jsonID(\"node\", NodeSelection);\n\nvar NodeBookmark = function NodeBookmark(anchor) {\n this.anchor = anchor;\n};\nNodeBookmark.prototype.map = function map (mapping) {\n var ref = mapping.mapResult(this.anchor);\n var deleted = ref.deleted;\n var pos = ref.pos;\n return deleted ? new TextBookmark(pos, pos) : new NodeBookmark(pos)\n};\nNodeBookmark.prototype.resolve = function resolve (doc) {\n var $pos = doc.resolve(this.anchor), node = $pos.nodeAfter;\n if (node && NodeSelection.isSelectable(node)) { return new NodeSelection($pos) }\n return Selection.near($pos)\n};\n\n// ::- A selection type that represents selecting the whole document\n// (which can not necessarily be expressed with a text selection, when\n// there are for example leaf block nodes at the start or end of the\n// document).\nvar AllSelection = /*@__PURE__*/(function (Selection) {\n function AllSelection(doc) {\n Selection.call(this, doc.resolve(0), doc.resolve(doc.content.size));\n }\n\n if ( Selection ) AllSelection.__proto__ = Selection;\n AllSelection.prototype = Object.create( Selection && Selection.prototype );\n AllSelection.prototype.constructor = AllSelection;\n\n AllSelection.prototype.replace = function replace (tr, content) {\n if ( content === void 0 ) content = Slice.empty;\n\n if (content == Slice.empty) {\n tr.delete(0, tr.doc.content.size);\n var sel = Selection.atStart(tr.doc);\n if (!sel.eq(tr.selection)) { tr.setSelection(sel); }\n } else {\n Selection.prototype.replace.call(this, tr, content);\n }\n };\n\n AllSelection.prototype.toJSON = function toJSON () { return {type: \"all\"} };\n\n AllSelection.fromJSON = function fromJSON (doc) { return new AllSelection(doc) };\n\n AllSelection.prototype.map = function map (doc) { return new AllSelection(doc) };\n\n AllSelection.prototype.eq = function eq (other) { return other instanceof AllSelection };\n\n AllSelection.prototype.getBookmark = function getBookmark () { return AllBookmark };\n\n return AllSelection;\n}(Selection));\n\nSelection.jsonID(\"all\", AllSelection);\n\nvar AllBookmark = {\n map: function map() { return this },\n resolve: function resolve(doc) { return new AllSelection(doc) }\n};\n\n// FIXME we'll need some awareness of text direction when scanning for selections\n\n// Try to find a selection inside the given node. `pos` points at the\n// position where the search starts. When `text` is true, only return\n// text selections.\nfunction findSelectionIn(doc, node, pos, index, dir, text) {\n if (node.inlineContent) { return TextSelection.create(doc, pos) }\n for (var i = index - (dir > 0 ? 0 : 1); dir > 0 ? i < node.childCount : i >= 0; i += dir) {\n var child = node.child(i);\n if (!child.isAtom) {\n var inner = findSelectionIn(doc, child, pos + dir, dir < 0 ? child.childCount : 0, dir, text);\n if (inner) { return inner }\n } else if (!text && NodeSelection.isSelectable(child)) {\n return NodeSelection.create(doc, pos - (dir < 0 ? child.nodeSize : 0))\n }\n pos += child.nodeSize * dir;\n }\n}\n\nfunction selectionToInsertionEnd(tr, startLen, bias) {\n var last = tr.steps.length - 1;\n if (last < startLen) { return }\n var step = tr.steps[last];\n if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep)) { return }\n var map = tr.mapping.maps[last], end;\n map.forEach(function (_from, _to, _newFrom, newTo) { if (end == null) { end = newTo; } });\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias));\n}\n\nvar UPDATED_SEL = 1, UPDATED_MARKS = 2, UPDATED_SCROLL = 4;\n\n// ::- An editor state transaction, which can be applied to a state to\n// create an updated state. Use\n// [`EditorState.tr`](#state.EditorState.tr) to create an instance.\n//\n// Transactions track changes to the document (they are a subclass of\n// [`Transform`](#transform.Transform)), but also other state changes,\n// like selection updates and adjustments of the set of [stored\n// marks](#state.EditorState.storedMarks). In addition, you can store\n// metadata properties in a transaction, which are extra pieces of\n// information that client code or plugins can use to describe what a\n// transacion represents, so that they can update their [own\n// state](#state.StateField) accordingly.\n//\n// The [editor view](#view.EditorView) uses a few metadata properties:\n// it will attach a property `\"pointer\"` with the value `true` to\n// selection transactions directly caused by mouse or touch input, and\n// a `\"uiEvent\"` property of that may be `\"paste\"`, `\"cut\"`, or `\"drop\"`.\nvar Transaction = /*@__PURE__*/(function (Transform) {\n function Transaction(state) {\n Transform.call(this, state.doc);\n // :: number\n // The timestamp associated with this transaction, in the same\n // format as `Date.now()`.\n this.time = Date.now();\n this.curSelection = state.selection;\n // The step count for which the current selection is valid.\n this.curSelectionFor = 0;\n // :: ?[Mark]\n // The stored marks set by this transaction, if any.\n this.storedMarks = state.storedMarks;\n // Bitfield to track which aspects of the state were updated by\n // this transaction.\n this.updated = 0;\n // Object used to store metadata properties for the transaction.\n this.meta = Object.create(null);\n }\n\n if ( Transform ) Transaction.__proto__ = Transform;\n Transaction.prototype = Object.create( Transform && Transform.prototype );\n Transaction.prototype.constructor = Transaction;\n\n var prototypeAccessors = { selection: { configurable: true },selectionSet: { configurable: true },storedMarksSet: { configurable: true },isGeneric: { configurable: true },scrolledIntoView: { configurable: true } };\n\n // :: Selection\n // The transaction's current selection. This defaults to the editor\n // selection [mapped](#state.Selection.map) through the steps in the\n // transaction, but can be overwritten with\n // [`setSelection`](#state.Transaction.setSelection).\n prototypeAccessors.selection.get = function () {\n if (this.curSelectionFor < this.steps.length) {\n this.curSelection = this.curSelection.map(this.doc, this.mapping.slice(this.curSelectionFor));\n this.curSelectionFor = this.steps.length;\n }\n return this.curSelection\n };\n\n // :: (Selection) → Transaction\n // Update the transaction's current selection. Will determine the\n // selection that the editor gets when the transaction is applied.\n Transaction.prototype.setSelection = function setSelection (selection) {\n if (selection.$from.doc != this.doc)\n { throw new RangeError(\"Selection passed to setSelection must point at the current document\") }\n this.curSelection = selection;\n this.curSelectionFor = this.steps.length;\n this.updated = (this.updated | UPDATED_SEL) & ~UPDATED_MARKS;\n this.storedMarks = null;\n return this\n };\n\n // :: bool\n // Whether the selection was explicitly updated by this transaction.\n prototypeAccessors.selectionSet.get = function () {\n return (this.updated & UPDATED_SEL) > 0\n };\n\n // :: (?[Mark]) → Transaction\n // Set the current stored marks.\n Transaction.prototype.setStoredMarks = function setStoredMarks (marks) {\n this.storedMarks = marks;\n this.updated |= UPDATED_MARKS;\n return this\n };\n\n // :: ([Mark]) → Transaction\n // Make sure the current stored marks or, if that is null, the marks\n // at the selection, match the given set of marks. Does nothing if\n // this is already the case.\n Transaction.prototype.ensureMarks = function ensureMarks (marks) {\n if (!Mark.sameSet(this.storedMarks || this.selection.$from.marks(), marks))\n { this.setStoredMarks(marks); }\n return this\n };\n\n // :: (Mark) → Transaction\n // Add a mark to the set of stored marks.\n Transaction.prototype.addStoredMark = function addStoredMark (mark) {\n return this.ensureMarks(mark.addToSet(this.storedMarks || this.selection.$head.marks()))\n };\n\n // :: (union) → Transaction\n // Remove a mark or mark type from the set of stored marks.\n Transaction.prototype.removeStoredMark = function removeStoredMark (mark) {\n return this.ensureMarks(mark.removeFromSet(this.storedMarks || this.selection.$head.marks()))\n };\n\n // :: bool\n // Whether the stored marks were explicitly set for this transaction.\n prototypeAccessors.storedMarksSet.get = function () {\n return (this.updated & UPDATED_MARKS) > 0\n };\n\n Transaction.prototype.addStep = function addStep (step, doc) {\n Transform.prototype.addStep.call(this, step, doc);\n this.updated = this.updated & ~UPDATED_MARKS;\n this.storedMarks = null;\n };\n\n // :: (number) → Transaction\n // Update the timestamp for the transaction.\n Transaction.prototype.setTime = function setTime (time) {\n this.time = time;\n return this\n };\n\n // :: (Slice) → Transaction\n // Replace the current selection with the given slice.\n Transaction.prototype.replaceSelection = function replaceSelection (slice) {\n this.selection.replace(this, slice);\n return this\n };\n\n // :: (Node, ?bool) → Transaction\n // Replace the selection with the given node. When `inheritMarks` is\n // true and the content is inline, it inherits the marks from the\n // place where it is inserted.\n Transaction.prototype.replaceSelectionWith = function replaceSelectionWith (node, inheritMarks) {\n var selection = this.selection;\n if (inheritMarks !== false)\n { node = node.mark(this.storedMarks || (selection.empty ? selection.$from.marks() : (selection.$from.marksAcross(selection.$to) || Mark.none))); }\n selection.replaceWith(this, node);\n return this\n };\n\n // :: () → Transaction\n // Delete the selection.\n Transaction.prototype.deleteSelection = function deleteSelection () {\n this.selection.replace(this);\n return this\n };\n\n // :: (string, from: ?number, to: ?number) → Transaction\n // Replace the given range, or the selection if no range is given,\n // with a text node containing the given string.\n Transaction.prototype.insertText = function insertText (text, from, to) {\n if ( to === void 0 ) to = from;\n\n var schema = this.doc.type.schema;\n if (from == null) {\n if (!text) { return this.deleteSelection() }\n return this.replaceSelectionWith(schema.text(text), true)\n } else {\n if (!text) { return this.deleteRange(from, to) }\n var marks = this.storedMarks;\n if (!marks) {\n var $from = this.doc.resolve(from);\n marks = to == from ? $from.marks() : $from.marksAcross(this.doc.resolve(to));\n }\n this.replaceRangeWith(from, to, schema.text(text, marks));\n if (!this.selection.empty) { this.setSelection(Selection.near(this.selection.$to)); }\n return this\n }\n };\n\n // :: (union, any) → Transaction\n // Store a metadata property in this transaction, keyed either by\n // name or by plugin.\n Transaction.prototype.setMeta = function setMeta (key, value) {\n this.meta[typeof key == \"string\" ? key : key.key] = value;\n return this\n };\n\n // :: (union) → any\n // Retrieve a metadata property for a given name or plugin.\n Transaction.prototype.getMeta = function getMeta (key) {\n return this.meta[typeof key == \"string\" ? key : key.key]\n };\n\n // :: bool\n // Returns true if this transaction doesn't contain any metadata,\n // and can thus safely be extended.\n prototypeAccessors.isGeneric.get = function () {\n for (var _ in this.meta) { return false }\n return true\n };\n\n // :: () → Transaction\n // Indicate that the editor should scroll the selection into view\n // when updated to the state produced by this transaction.\n Transaction.prototype.scrollIntoView = function scrollIntoView () {\n this.updated |= UPDATED_SCROLL;\n return this\n };\n\n prototypeAccessors.scrolledIntoView.get = function () {\n return (this.updated & UPDATED_SCROLL) > 0\n };\n\n Object.defineProperties( Transaction.prototype, prototypeAccessors );\n\n return Transaction;\n}(Transform));\n\nfunction bind(f, self) {\n return !self || !f ? f : f.bind(self)\n}\n\nvar FieldDesc = function FieldDesc(name, desc, self) {\n this.name = name;\n this.init = bind(desc.init, self);\n this.apply = bind(desc.apply, self);\n};\n\nvar baseFields = [\n new FieldDesc(\"doc\", {\n init: function init(config) { return config.doc || config.schema.topNodeType.createAndFill() },\n apply: function apply(tr) { return tr.doc }\n }),\n\n new FieldDesc(\"selection\", {\n init: function init(config, instance) { return config.selection || Selection.atStart(instance.doc) },\n apply: function apply(tr) { return tr.selection }\n }),\n\n new FieldDesc(\"storedMarks\", {\n init: function init(config) { return config.storedMarks || null },\n apply: function apply(tr, _marks, _old, state) { return state.selection.$cursor ? tr.storedMarks : null }\n }),\n\n new FieldDesc(\"scrollToSelection\", {\n init: function init() { return 0 },\n apply: function apply(tr, prev) { return tr.scrolledIntoView ? prev + 1 : prev }\n })\n];\n\n// Object wrapping the part of a state object that stays the same\n// across transactions. Stored in the state's `config` property.\nvar Configuration = function Configuration(schema, plugins) {\n var this$1 = this;\n\n this.schema = schema;\n this.fields = baseFields.concat();\n this.plugins = [];\n this.pluginsByKey = Object.create(null);\n if (plugins) { plugins.forEach(function (plugin) {\n if (this$1.pluginsByKey[plugin.key])\n { throw new RangeError(\"Adding different instances of a keyed plugin (\" + plugin.key + \")\") }\n this$1.plugins.push(plugin);\n this$1.pluginsByKey[plugin.key] = plugin;\n if (plugin.spec.state)\n { this$1.fields.push(new FieldDesc(plugin.key, plugin.spec.state, plugin)); }\n }); }\n};\n\n// ::- The state of a ProseMirror editor is represented by an object\n// of this type. A state is a persistent data structure—it isn't\n// updated, but rather a new state value is computed from an old one\n// using the [`apply`](#state.EditorState.apply) method.\n//\n// A state holds a number of built-in fields, and plugins can\n// [define](#state.PluginSpec.state) additional fields.\nvar EditorState = function EditorState(config) {\n this.config = config;\n};\n\nvar prototypeAccessors$1 = { schema: { configurable: true },plugins: { configurable: true },tr: { configurable: true } };\n\n// doc:: Node\n// The current document.\n\n// selection:: Selection\n// The selection.\n\n// storedMarks:: ?[Mark]\n// A set of marks to apply to the next input. Will be null when\n// no explicit marks have been set.\n\n// :: Schema\n// The schema of the state's document.\nprototypeAccessors$1.schema.get = function () {\n return this.config.schema\n};\n\n// :: [Plugin]\n// The plugins that are active in this state.\nprototypeAccessors$1.plugins.get = function () {\n return this.config.plugins\n};\n\n// :: (Transaction) → EditorState\n// Apply the given transaction to produce a new state.\nEditorState.prototype.apply = function apply (tr) {\n return this.applyTransaction(tr).state\n};\n\n// : (Transaction) → bool\nEditorState.prototype.filterTransaction = function filterTransaction (tr, ignore) {\n if ( ignore === void 0 ) ignore = -1;\n\n for (var i = 0; i < this.config.plugins.length; i++) { if (i != ignore) {\n var plugin = this.config.plugins[i];\n if (plugin.spec.filterTransaction && !plugin.spec.filterTransaction.call(plugin, tr, this))\n { return false }\n } }\n return true\n};\n\n// :: (Transaction) → {state: EditorState, transactions: [Transaction]}\n// Verbose variant of [`apply`](#state.EditorState.apply) that\n// returns the precise transactions that were applied (which might\n// be influenced by the [transaction\n// hooks](#state.PluginSpec.filterTransaction) of\n// plugins) along with the new state.\nEditorState.prototype.applyTransaction = function applyTransaction (rootTr) {\n if (!this.filterTransaction(rootTr)) { return {state: this, transactions: []} }\n\n var trs = [rootTr], newState = this.applyInner(rootTr), seen = null;\n // This loop repeatedly gives plugins a chance to respond to\n // transactions as new transactions are added, making sure to only\n // pass the transactions the plugin did not see before.\n for (;;) {\n var haveNew = false;\n for (var i = 0; i < this.config.plugins.length; i++) {\n var plugin = this.config.plugins[i];\n if (plugin.spec.appendTransaction) {\n var n = seen ? seen[i].n : 0, oldState = seen ? seen[i].state : this;\n var tr = n < trs.length &&\n plugin.spec.appendTransaction.call(plugin, n ? trs.slice(n) : trs, oldState, newState);\n if (tr && newState.filterTransaction(tr, i)) {\n tr.setMeta(\"appendedTransaction\", rootTr);\n if (!seen) {\n seen = [];\n for (var j = 0; j < this.config.plugins.length; j++)\n { seen.push(j < i ? {state: newState, n: trs.length} : {state: this, n: 0}); }\n }\n trs.push(tr);\n newState = newState.applyInner(tr);\n haveNew = true;\n }\n if (seen) { seen[i] = {state: newState, n: trs.length}; }\n }\n }\n if (!haveNew) { return {state: newState, transactions: trs} }\n }\n};\n\n// : (Transaction) → EditorState\nEditorState.prototype.applyInner = function applyInner (tr) {\n if (!tr.before.eq(this.doc)) { throw new RangeError(\"Applying a mismatched transaction\") }\n var newInstance = new EditorState(this.config), fields = this.config.fields;\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n newInstance[field.name] = field.apply(tr, this[field.name], this, newInstance);\n }\n for (var i$1 = 0; i$1 < applyListeners.length; i$1++) { applyListeners[i$1](this, tr, newInstance); }\n return newInstance\n};\n\n// :: Transaction\n// Start a [transaction](#state.Transaction) from this state.\nprototypeAccessors$1.tr.get = function () { return new Transaction(this) };\n\n// :: (Object) → EditorState\n// Create a new state.\n//\n// config::- Configuration options. Must contain `schema` or `doc` (or both).\n//\n// schema:: ?Schema\n// The schema to use.\n//\n// doc:: ?Node\n// The starting document.\n//\n// selection:: ?Selection\n// A valid selection in the document.\n//\n// storedMarks:: ?[Mark]\n// The initial set of [stored marks](#state.EditorState.storedMarks).\n//\n// plugins:: ?[Plugin]\n// The plugins that should be active in this state.\nEditorState.create = function create (config) {\n var $config = new Configuration(config.schema || config.doc.type.schema, config.plugins);\n var instance = new EditorState($config);\n for (var i = 0; i < $config.fields.length; i++)\n { instance[$config.fields[i].name] = $config.fields[i].init(config, instance); }\n return instance\n};\n\n// :: (Object) → EditorState\n// Create a new state based on this one, but with an adjusted set of\n// active plugins. State fields that exist in both sets of plugins\n// are kept unchanged. Those that no longer exist are dropped, and\n// those that are new are initialized using their\n// [`init`](#state.StateField.init) method, passing in the new\n// configuration object..\n//\n// config::- configuration options\n//\n// schema:: ?Schema\n// New schema to use.\n//\n// plugins:: ?[Plugin]\n// New set of active plugins.\nEditorState.prototype.reconfigure = function reconfigure (config) {\n var $config = new Configuration(config.schema || this.schema, config.plugins);\n var fields = $config.fields, instance = new EditorState($config);\n for (var i = 0; i < fields.length; i++) {\n var name = fields[i].name;\n instance[name] = this.hasOwnProperty(name) ? this[name] : fields[i].init(config, instance);\n }\n return instance\n};\n\n// :: (?union, string, number>) → Object\n// Serialize this state to JSON. If you want to serialize the state\n// of plugins, pass an object mapping property names to use in the\n// resulting JSON object to plugin objects. The argument may also be\n// a string or number, in which case it is ignored, to support the\n// way `JSON.stringify` calls `toString` methods.\nEditorState.prototype.toJSON = function toJSON (pluginFields) {\n var result = {doc: this.doc.toJSON(), selection: this.selection.toJSON()};\n if (this.storedMarks) { result.storedMarks = this.storedMarks.map(function (m) { return m.toJSON(); }); }\n if (pluginFields && typeof pluginFields == 'object') { for (var prop in pluginFields) {\n if (prop == \"doc\" || prop == \"selection\")\n { throw new RangeError(\"The JSON fields `doc` and `selection` are reserved\") }\n var plugin = pluginFields[prop], state = plugin.spec.state;\n if (state && state.toJSON) { result[prop] = state.toJSON.call(plugin, this[plugin.key]); }\n } }\n return result\n};\n\n// :: (Object, Object, ?Object) → EditorState\n// Deserialize a JSON representation of a state. `config` should\n// have at least a `schema` field, and should contain array of\n// plugins to initialize the state with. `pluginFields` can be used\n// to deserialize the state of plugins, by associating plugin\n// instances with the property names they use in the JSON object.\n//\n// config::- configuration options\n//\n// schema:: Schema\n// The schema to use.\n//\n// plugins:: ?[Plugin]\n// The set of active plugins.\nEditorState.fromJSON = function fromJSON (config, json, pluginFields) {\n if (!json) { throw new RangeError(\"Invalid input for EditorState.fromJSON\") }\n if (!config.schema) { throw new RangeError(\"Required config field 'schema' missing\") }\n var $config = new Configuration(config.schema, config.plugins);\n var instance = new EditorState($config);\n $config.fields.forEach(function (field) {\n if (field.name == \"doc\") {\n instance.doc = Node.fromJSON(config.schema, json.doc);\n } else if (field.name == \"selection\") {\n instance.selection = Selection.fromJSON(instance.doc, json.selection);\n } else if (field.name == \"storedMarks\") {\n if (json.storedMarks) { instance.storedMarks = json.storedMarks.map(config.schema.markFromJSON); }\n } else {\n if (pluginFields) { for (var prop in pluginFields) {\n var plugin = pluginFields[prop], state = plugin.spec.state;\n if (plugin.key == field.name && state && state.fromJSON &&\n Object.prototype.hasOwnProperty.call(json, prop)) {\n // This field belongs to a plugin mapped to a JSON field, read it from there.\n instance[field.name] = state.fromJSON.call(plugin, config, json[prop], instance);\n return\n }\n } }\n instance[field.name] = field.init(config, instance);\n }\n });\n return instance\n};\n\n// Kludge to allow the view to track mappings between different\n// instances of a state.\n//\n// FIXME this is no longer needed as of prosemirror-view 1.9.0,\n// though due to backwards-compat we should probably keep it around\n// for a while (if only as a no-op)\nEditorState.addApplyListener = function addApplyListener (f) {\n applyListeners.push(f);\n};\nEditorState.removeApplyListener = function removeApplyListener (f) {\n var found = applyListeners.indexOf(f);\n if (found > -1) { applyListeners.splice(found, 1); }\n};\n\nObject.defineProperties( EditorState.prototype, prototypeAccessors$1 );\n\nvar applyListeners = [];\n\n// PluginSpec:: interface\n//\n// This is the type passed to the [`Plugin`](#state.Plugin)\n// constructor. It provides a definition for a plugin.\n//\n// props:: ?EditorProps\n// The [view props](#view.EditorProps) added by this plugin. Props\n// that are functions will be bound to have the plugin instance as\n// their `this` binding.\n//\n// state:: ?StateField\n// Allows a plugin to define a [state field](#state.StateField), an\n// extra slot in the state object in which it can keep its own data.\n//\n// key:: ?PluginKey\n// Can be used to make this a keyed plugin. You can have only one\n// plugin with a given key in a given state, but it is possible to\n// access the plugin's configuration and state through the key,\n// without having access to the plugin instance object.\n//\n// view:: ?(EditorView) → Object\n// When the plugin needs to interact with the editor view, or\n// set something up in the DOM, use this field. The function\n// will be called when the plugin's state is associated with an\n// editor view.\n//\n// return::-\n// Should return an object with the following optional\n// properties:\n//\n// update:: ?(view: EditorView, prevState: EditorState)\n// Called whenever the view's state is updated.\n//\n// destroy:: ?()\n// Called when the view is destroyed or receives a state\n// with different plugins.\n//\n// filterTransaction:: ?(Transaction, EditorState) → bool\n// When present, this will be called before a transaction is\n// applied by the state, allowing the plugin to cancel it (by\n// returning false).\n//\n// appendTransaction:: ?(transactions: [Transaction], oldState: EditorState, newState: EditorState) → ?Transaction\n// Allows the plugin to append another transaction to be applied\n// after the given array of transactions. When another plugin\n// appends a transaction after this was called, it is called again\n// with the new state and new transactions—but only the new\n// transactions, i.e. it won't be passed transactions that it\n// already saw.\n\nfunction bindProps(obj, self, target) {\n for (var prop in obj) {\n var val = obj[prop];\n if (val instanceof Function) { val = val.bind(self); }\n else if (prop == \"handleDOMEvents\") { val = bindProps(val, self, {}); }\n target[prop] = val;\n }\n return target\n}\n\n// ::- Plugins bundle functionality that can be added to an editor.\n// They are part of the [editor state](#state.EditorState) and\n// may influence that state and the view that contains it.\nvar Plugin = function Plugin(spec) {\n // :: EditorProps\n // The [props](#view.EditorProps) exported by this plugin.\n this.props = {};\n if (spec.props) { bindProps(spec.props, this, this.props); }\n // :: Object\n // The plugin's [spec object](#state.PluginSpec).\n this.spec = spec;\n this.key = spec.key ? spec.key.key : createKey(\"plugin\");\n};\n\n// :: (EditorState) → any\n// Extract the plugin's state field from an editor state.\nPlugin.prototype.getState = function getState (state) { return state[this.key] };\n\n// StateField:: interface\n// A plugin spec may provide a state field (under its\n// [`state`](#state.PluginSpec.state) property) of this type, which\n// describes the state it wants to keep. Functions provided here are\n// always called with the plugin instance as their `this` binding.\n//\n// init:: (config: Object, instance: EditorState) → T\n// Initialize the value of the field. `config` will be the object\n// passed to [`EditorState.create`](#state.EditorState^create). Note\n// that `instance` is a half-initialized state instance, and will\n// not have values for plugin fields initialized after this one.\n//\n// apply:: (tr: Transaction, value: T, oldState: EditorState, newState: EditorState) → T\n// Apply the given transaction to this state field, producing a new\n// field value. Note that the `newState` argument is again a partially\n// constructed state does not yet contain the state from plugins\n// coming after this one.\n//\n// toJSON:: ?(value: T) → *\n// Convert this field to JSON. Optional, can be left off to disable\n// JSON serialization for the field.\n//\n// fromJSON:: ?(config: Object, value: *, state: EditorState) → T\n// Deserialize the JSON representation of this field. Note that the\n// `state` argument is again a half-initialized state.\n\nvar keys = Object.create(null);\n\nfunction createKey(name) {\n if (name in keys) { return name + \"$\" + ++keys[name] }\n keys[name] = 0;\n return name + \"$\"\n}\n\n// ::- A key is used to [tag](#state.PluginSpec.key)\n// plugins in a way that makes it possible to find them, given an\n// editor state. Assigning a key does mean only one plugin of that\n// type can be active in a state.\nvar PluginKey = function PluginKey(name) {\nif ( name === void 0 ) name = \"key\";\n this.key = createKey(name); };\n\n// :: (EditorState) → ?Plugin\n// Get the active plugin with this key, if any, from an editor\n// state.\nPluginKey.prototype.get = function get (state) { return state.config.pluginsByKey[this.key] };\n\n// :: (EditorState) → ?any\n// Get the plugin's state from an editor state.\nPluginKey.prototype.getState = function getState (state) { return state[this.key] };\n\nexport { AllSelection, EditorState, NodeSelection, Plugin, PluginKey, Selection, SelectionRange, TextSelection, Transaction };\n//# sourceMappingURL=index.es.js.map\n","import { TextSelection, NodeSelection, Selection } from 'prosemirror-state';\nimport { DOMSerializer, Fragment, Mark, DOMParser, Slice } from 'prosemirror-model';\nimport { dropPoint } from 'prosemirror-transform';\n\nvar result = {};\n\nif (typeof navigator != \"undefined\" && typeof document != \"undefined\") {\n var ie_edge = /Edge\\/(\\d+)/.exec(navigator.userAgent);\n var ie_upto10 = /MSIE \\d/.test(navigator.userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent);\n\n result.mac = /Mac/.test(navigator.platform);\n var ie = result.ie = !!(ie_upto10 || ie_11up || ie_edge);\n result.ie_version = ie_upto10 ? document.documentMode || 6 : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : null;\n result.gecko = !ie && /gecko\\/(\\d+)/i.test(navigator.userAgent);\n result.gecko_version = result.gecko && +(/Firefox\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1];\n var chrome = !ie && /Chrome\\/(\\d+)/.exec(navigator.userAgent);\n result.chrome = !!chrome;\n result.chrome_version = chrome && +chrome[1];\n result.ios = !ie && /AppleWebKit/.test(navigator.userAgent) && /Mobile\\/\\w+/.test(navigator.userAgent);\n result.android = /Android \\d/.test(navigator.userAgent);\n result.webkit = \"webkitFontSmoothing\" in document.documentElement.style;\n result.safari = /Apple Computer/.test(navigator.vendor);\n result.webkit_version = result.webkit && +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1];\n}\n\nvar domIndex = function(node) {\n for (var index = 0;; index++) {\n node = node.previousSibling;\n if (!node) { return index }\n }\n};\n\nvar parentNode = function(node) {\n var parent = node.parentNode;\n return parent && parent.nodeType == 11 ? parent.host : parent\n};\n\nvar textRange = function(node, from, to) {\n var range = document.createRange();\n range.setEnd(node, to == null ? node.nodeValue.length : to);\n range.setStart(node, from || 0);\n return range\n};\n\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nvar isEquivalentPosition = function(node, off, targetNode, targetOff) {\n return targetNode && (scanFor(node, off, targetNode, targetOff, -1) ||\n scanFor(node, off, targetNode, targetOff, 1))\n};\n\nvar atomElements = /^(img|br|input|textarea|hr)$/i;\n\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n for (;;) {\n if (node == targetNode && off == targetOff) { return true }\n if (off == (dir < 0 ? 0 : nodeSize(node))) {\n var parent = node.parentNode;\n if (parent.nodeType != 1 || hasBlockDesc(node) || atomElements.test(node.nodeName) || node.contentEditable == \"false\")\n { return false }\n off = domIndex(node) + (dir < 0 ? 0 : 1);\n node = parent;\n } else if (node.nodeType == 1) {\n node = node.childNodes[off + (dir < 0 ? -1 : 0)];\n if (node.contentEditable == \"false\") { return false }\n off = dir < 0 ? nodeSize(node) : 0;\n } else {\n return false\n }\n }\n}\n\nfunction nodeSize(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length\n}\n\nfunction isOnEdge(node, offset, parent) {\n for (var atStart = offset == 0, atEnd = offset == nodeSize(node); atStart || atEnd;) {\n if (node == parent) { return true }\n var index = domIndex(node);\n node = node.parentNode;\n if (!node) { return false }\n atStart = atStart && index == 0;\n atEnd = atEnd && index == nodeSize(node);\n }\n}\n\nfunction hasBlockDesc(dom) {\n var desc;\n for (var cur = dom; cur; cur = cur.parentNode) { if (desc = cur.pmViewDesc) { break } }\n return desc && desc.node && desc.node.isBlock && (desc.dom == dom || desc.contentDOM == dom)\n}\n\n// Work around Chrome issue https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n// (isCollapsed inappropriately returns true in shadow dom)\nvar selectionCollapsed = function(domSel) {\n var collapsed = domSel.isCollapsed;\n if (collapsed && result.chrome && domSel.rangeCount && !domSel.getRangeAt(0).collapsed)\n { collapsed = false; }\n return collapsed\n};\n\nfunction keyEvent(keyCode, key) {\n var event = document.createEvent(\"Event\");\n event.initEvent(\"keydown\", true, true);\n event.keyCode = keyCode;\n event.key = event.code = key;\n return event\n}\n\nfunction windowRect(doc) {\n return {left: 0, right: doc.documentElement.clientWidth,\n top: 0, bottom: doc.documentElement.clientHeight}\n}\n\nfunction getSide(value, side) {\n return typeof value == \"number\" ? value : value[side]\n}\n\nfunction clientRect(node) {\n var rect = node.getBoundingClientRect();\n // Make sure scrollbar width isn't included in the rectangle\n return {left: rect.left, right: rect.left + node.clientWidth,\n top: rect.top, bottom: rect.top + node.clientHeight}\n}\n\nfunction scrollRectIntoView(view, rect, startDOM) {\n var scrollThreshold = view.someProp(\"scrollThreshold\") || 0, scrollMargin = view.someProp(\"scrollMargin\") || 5;\n var doc = view.dom.ownerDocument;\n for (var parent = startDOM || view.dom;; parent = parentNode(parent)) {\n if (!parent) { break }\n if (parent.nodeType != 1) { continue }\n var atTop = parent == doc.body || parent.nodeType != 1;\n var bounding = atTop ? windowRect(doc) : clientRect(parent);\n var moveX = 0, moveY = 0;\n if (rect.top < bounding.top + getSide(scrollThreshold, \"top\"))\n { moveY = -(bounding.top - rect.top + getSide(scrollMargin, \"top\")); }\n else if (rect.bottom > bounding.bottom - getSide(scrollThreshold, \"bottom\"))\n { moveY = rect.bottom - bounding.bottom + getSide(scrollMargin, \"bottom\"); }\n if (rect.left < bounding.left + getSide(scrollThreshold, \"left\"))\n { moveX = -(bounding.left - rect.left + getSide(scrollMargin, \"left\")); }\n else if (rect.right > bounding.right - getSide(scrollThreshold, \"right\"))\n { moveX = rect.right - bounding.right + getSide(scrollMargin, \"right\"); }\n if (moveX || moveY) {\n if (atTop) {\n doc.defaultView.scrollBy(moveX, moveY);\n } else {\n var startX = parent.scrollLeft, startY = parent.scrollTop;\n if (moveY) { parent.scrollTop += moveY; }\n if (moveX) { parent.scrollLeft += moveX; }\n var dX = parent.scrollLeft - startX, dY = parent.scrollTop - startY;\n rect = {left: rect.left - dX, top: rect.top - dY, right: rect.right - dX, bottom: rect.bottom - dY};\n }\n }\n if (atTop) { break }\n }\n}\n\n// Store the scroll position of the editor's parent nodes, along with\n// the top position of an element near the top of the editor, which\n// will be used to make sure the visible viewport remains stable even\n// when the size of the content above changes.\nfunction storeScrollPos(view) {\n var rect = view.dom.getBoundingClientRect(), startY = Math.max(0, rect.top);\n var refDOM, refTop;\n for (var x = (rect.left + rect.right) / 2, y = startY + 1;\n y < Math.min(innerHeight, rect.bottom); y += 5) {\n var dom = view.root.elementFromPoint(x, y);\n if (dom == view.dom || !view.dom.contains(dom)) { continue }\n var localRect = dom.getBoundingClientRect();\n if (localRect.top >= startY - 20) {\n refDOM = dom;\n refTop = localRect.top;\n break\n }\n }\n return {refDOM: refDOM, refTop: refTop, stack: scrollStack(view.dom)}\n}\n\nfunction scrollStack(dom) {\n var stack = [], doc = dom.ownerDocument;\n for (; dom; dom = parentNode(dom)) {\n stack.push({dom: dom, top: dom.scrollTop, left: dom.scrollLeft});\n if (dom == doc) { break }\n }\n return stack\n}\n\n// Reset the scroll position of the editor's parent nodes to that what\n// it was before, when storeScrollPos was called.\nfunction resetScrollPos(ref) {\n var refDOM = ref.refDOM;\n var refTop = ref.refTop;\n var stack = ref.stack;\n\n var newRefTop = refDOM ? refDOM.getBoundingClientRect().top : 0;\n restoreScrollStack(stack, newRefTop == 0 ? 0 : newRefTop - refTop);\n}\n\nfunction restoreScrollStack(stack, dTop) {\n for (var i = 0; i < stack.length; i++) {\n var ref = stack[i];\n var dom = ref.dom;\n var top = ref.top;\n var left = ref.left;\n if (dom.scrollTop != top + dTop) { dom.scrollTop = top + dTop; }\n if (dom.scrollLeft != left) { dom.scrollLeft = left; }\n }\n}\n\nvar preventScrollSupported = null;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n if (dom.setActive) { return dom.setActive() } // in IE\n if (preventScrollSupported) { return dom.focus(preventScrollSupported) }\n\n var stored = scrollStack(dom);\n dom.focus(preventScrollSupported == null ? {\n get preventScroll() {\n preventScrollSupported = {preventScroll: true};\n return true\n }\n } : undefined);\n if (!preventScrollSupported) {\n preventScrollSupported = false;\n restoreScrollStack(stored, 0);\n }\n}\n\nfunction findOffsetInNode(node, coords) {\n var closest, dxClosest = 2e8, coordsClosest, offset = 0;\n var rowBot = coords.top, rowTop = coords.top;\n for (var child = node.firstChild, childIndex = 0; child; child = child.nextSibling, childIndex++) {\n var rects = (void 0);\n if (child.nodeType == 1) { rects = child.getClientRects(); }\n else if (child.nodeType == 3) { rects = textRange(child).getClientRects(); }\n else { continue }\n\n for (var i = 0; i < rects.length; i++) {\n var rect = rects[i];\n if (rect.top <= rowBot && rect.bottom >= rowTop) {\n rowBot = Math.max(rect.bottom, rowBot);\n rowTop = Math.min(rect.top, rowTop);\n var dx = rect.left > coords.left ? rect.left - coords.left\n : rect.right < coords.left ? coords.left - rect.right : 0;\n if (dx < dxClosest) {\n closest = child;\n dxClosest = dx;\n coordsClosest = dx && closest.nodeType == 3 ? {left: rect.right < coords.left ? rect.right : rect.left, top: coords.top} : coords;\n if (child.nodeType == 1 && dx)\n { offset = childIndex + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0); }\n continue\n }\n }\n if (!closest && (coords.left >= rect.right && coords.top >= rect.top ||\n coords.left >= rect.left && coords.top >= rect.bottom))\n { offset = childIndex + 1; }\n }\n }\n if (closest && closest.nodeType == 3) { return findOffsetInText(closest, coordsClosest) }\n if (!closest || (dxClosest && closest.nodeType == 1)) { return {node: node, offset: offset} }\n return findOffsetInNode(closest, coordsClosest)\n}\n\nfunction findOffsetInText(node, coords) {\n var len = node.nodeValue.length;\n var range = document.createRange();\n for (var i = 0; i < len; i++) {\n range.setEnd(node, i + 1);\n range.setStart(node, i);\n var rect = singleRect(range, 1);\n if (rect.top == rect.bottom) { continue }\n if (inRect(coords, rect))\n { return {node: node, offset: i + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0)} }\n }\n return {node: node, offset: 0}\n}\n\nfunction inRect(coords, rect) {\n return coords.left >= rect.left - 1 && coords.left <= rect.right + 1&&\n coords.top >= rect.top - 1 && coords.top <= rect.bottom + 1\n}\n\nfunction targetKludge(dom, coords) {\n var parent = dom.parentNode;\n if (parent && /^li$/i.test(parent.nodeName) && coords.left < dom.getBoundingClientRect().left)\n { return parent }\n return dom\n}\n\nfunction posFromElement(view, elt, coords) {\n var ref = findOffsetInNode(elt, coords);\n var node = ref.node;\n var offset = ref.offset;\n var bias = -1;\n if (node.nodeType == 1 && !node.firstChild) {\n var rect = node.getBoundingClientRect();\n bias = rect.left != rect.right && coords.left > (rect.left + rect.right) / 2 ? 1 : -1;\n }\n return view.docView.posFromDOM(node, offset, bias)\n}\n\nfunction posFromCaret(view, node, offset, coords) {\n // Browser (in caretPosition/RangeFromPoint) will agressively\n // normalize towards nearby inline nodes. Since we are interested in\n // positions between block nodes too, we first walk up the hierarchy\n // of nodes to see if there are block nodes that the coordinates\n // fall outside of. If so, we take the position before/after that\n // block. If not, we call `posFromDOM` on the raw node/offset.\n var outside = -1;\n for (var cur = node;;) {\n if (cur == view.dom) { break }\n var desc = view.docView.nearestDesc(cur, true);\n if (!desc) { return null }\n if (desc.node.isBlock && desc.parent) {\n var rect = desc.dom.getBoundingClientRect();\n if (rect.left > coords.left || rect.top > coords.top) { outside = desc.posBefore; }\n else if (rect.right < coords.left || rect.bottom < coords.top) { outside = desc.posAfter; }\n else { break }\n }\n cur = desc.dom.parentNode;\n }\n return outside > -1 ? outside : view.docView.posFromDOM(node, offset)\n}\n\nfunction elementFromPoint(element, coords, box) {\n var len = element.childNodes.length;\n if (len && box.top < box.bottom) {\n for (var startI = Math.max(0, Math.min(len - 1, Math.floor(len * (coords.top - box.top) / (box.bottom - box.top)) - 2)), i = startI;;) {\n var child = element.childNodes[i];\n if (child.nodeType == 1) {\n var rects = child.getClientRects();\n for (var j = 0; j < rects.length; j++) {\n var rect = rects[j];\n if (inRect(coords, rect)) { return elementFromPoint(child, coords, rect) }\n }\n }\n if ((i = (i + 1) % len) == startI) { break }\n }\n }\n return element\n}\n\n// Given an x,y position on the editor, get the position in the document.\nfunction posAtCoords(view, coords) {\n var assign, assign$1;\n\n var root = view.root, node, offset;\n if (root.caretPositionFromPoint) {\n try { // Firefox throws for this call in hard-to-predict circumstances (#994)\n var pos$1 = root.caretPositionFromPoint(coords.left, coords.top);\n if (pos$1) { ((assign = pos$1, node = assign.offsetNode, offset = assign.offset)); }\n } catch (_) {}\n }\n if (!node && root.caretRangeFromPoint) {\n var range = root.caretRangeFromPoint(coords.left, coords.top);\n if (range) { ((assign$1 = range, node = assign$1.startContainer, offset = assign$1.startOffset)); }\n }\n\n var elt = root.elementFromPoint(coords.left, coords.top + 1), pos;\n if (!elt || !view.dom.contains(elt.nodeType != 1 ? elt.parentNode : elt)) {\n var box = view.dom.getBoundingClientRect();\n if (!inRect(coords, box)) { return null }\n elt = elementFromPoint(view.dom, coords, box);\n if (!elt) { return null }\n }\n // Safari's caretRangeFromPoint returns nonsense when on a draggable element\n if (result.safari && elt.draggable) { node = offset = null; }\n elt = targetKludge(elt, coords);\n if (node) {\n if (result.gecko && node.nodeType == 1) {\n // Firefox will sometimes return offsets into nodes, which\n // have no actual children, from caretPositionFromPoint (#953)\n offset = Math.min(offset, node.childNodes.length);\n // It'll also move the returned position before image nodes,\n // even if those are behind it.\n if (offset < node.childNodes.length) {\n var next = node.childNodes[offset], box$1;\n if (next.nodeName == \"IMG\" && (box$1 = next.getBoundingClientRect()).right <= coords.left &&\n box$1.bottom > coords.top)\n { offset++; }\n }\n }\n // Suspiciously specific kludge to work around caret*FromPoint\n // never returning a position at the end of the document\n if (node == view.dom && offset == node.childNodes.length - 1 && node.lastChild.nodeType == 1 &&\n coords.top > node.lastChild.getBoundingClientRect().bottom)\n { pos = view.state.doc.content.size; }\n // Ignore positions directly after a BR, since caret*FromPoint\n // 'round up' positions that would be more accurately placed\n // before the BR node.\n else if (offset == 0 || node.nodeType != 1 || node.childNodes[offset - 1].nodeName != \"BR\")\n { pos = posFromCaret(view, node, offset, coords); }\n }\n if (pos == null) { pos = posFromElement(view, elt, coords); }\n\n var desc = view.docView.nearestDesc(elt, true);\n return {pos: pos, inside: desc ? desc.posAtStart - desc.border : -1}\n}\n\nfunction singleRect(object, bias) {\n var rects = object.getClientRects();\n return !rects.length ? object.getBoundingClientRect() : rects[bias < 0 ? 0 : rects.length - 1]\n}\n\n// : (EditorView, number) → {left: number, top: number, right: number, bottom: number}\n// Given a position in the document model, get a bounding box of the\n// character at that position, relative to the window.\nfunction coordsAtPos(view, pos) {\n var ref = view.docView.domFromPos(pos);\n var node = ref.node;\n var offset = ref.offset;\n\n // These browsers support querying empty text ranges\n if (node.nodeType == 3 && (result.webkit || result.gecko)) {\n var rect = singleRect(textRange(node, offset, offset), 0);\n // Firefox returns bad results (the position before the space)\n // when querying a position directly after line-broken\n // whitespace. Detect this situation and and kludge around it\n if (result.gecko && offset && /\\s/.test(node.nodeValue[offset - 1]) && offset < node.nodeValue.length) {\n var rectBefore = singleRect(textRange(node, offset - 1, offset - 1), -1);\n if (rectBefore.top == rect.top) {\n var rectAfter = singleRect(textRange(node, offset, offset + 1), -1);\n if (rectAfter.top != rect.top)\n { return flattenV(rectAfter, rectAfter.left < rectBefore.left) }\n }\n }\n return rect\n }\n\n if (node.nodeType == 1 && !view.state.doc.resolve(pos).parent.inlineContent) {\n // Return a horizontal line in block context\n var top = true, rect$1;\n if (offset < node.childNodes.length) {\n var after = node.childNodes[offset];\n if (after.nodeType == 1) { rect$1 = after.getBoundingClientRect(); }\n }\n if (!rect$1 && offset) {\n var before = node.childNodes[offset - 1];\n if (before.nodeType == 1) { rect$1 = before.getBoundingClientRect(); top = false; }\n }\n return flattenH(rect$1 || node.getBoundingClientRect(), top)\n }\n\n // Not Firefox/Chrome, or not in a text node, so we have to use\n // actual element/character rectangles to get a solution (this part\n // is not very bidi-safe)\n //\n // Try the left side first, fall back to the right one if that\n // doesn't work.\n for (var dir = -1; dir < 2; dir += 2) {\n if (dir < 0 && offset) {\n var prev = (void 0), target = node.nodeType == 3 ? textRange(node, offset - 1, offset)\n : (prev = node.childNodes[offset - 1]).nodeType == 3 ? textRange(prev)\n : prev.nodeType == 1 && prev.nodeName != \"BR\" ? prev : null; // BR nodes tend to only return the rectangle before them\n if (target) {\n var rect$2 = singleRect(target, 1);\n if (rect$2.top < rect$2.bottom) { return flattenV(rect$2, false) }\n }\n } else if (dir > 0 && offset < nodeSize(node)) {\n var next = (void 0), target$1 = node.nodeType == 3 ? textRange(node, offset, offset + 1)\n : (next = node.childNodes[offset]).nodeType == 3 ? textRange(next)\n : next.nodeType == 1 ? next : null;\n if (target$1) {\n var rect$3 = singleRect(target$1, -1);\n if (rect$3.top < rect$3.bottom) { return flattenV(rect$3, true) }\n }\n }\n }\n // All else failed, just try to get a rectangle for the target node\n return flattenV(singleRect(node.nodeType == 3 ? textRange(node) : node, 0), false)\n}\n\nfunction flattenV(rect, left) {\n if (rect.width == 0) { return rect }\n var x = left ? rect.left : rect.right;\n return {top: rect.top, bottom: rect.bottom, left: x, right: x}\n}\n\nfunction flattenH(rect, top) {\n if (rect.height == 0) { return rect }\n var y = top ? rect.top : rect.bottom;\n return {top: y, bottom: y, left: rect.left, right: rect.right}\n}\n\nfunction withFlushedState(view, state, f) {\n var viewState = view.state, active = view.root.activeElement;\n if (viewState != state) { view.updateState(state); }\n if (active != view.dom) { view.focus(); }\n try {\n return f()\n } finally {\n if (viewState != state) { view.updateState(viewState); }\n if (active != view.dom && active) { active.focus(); }\n }\n}\n\n// : (EditorView, number, number)\n// Whether vertical position motion in a given direction\n// from a position would leave a text block.\nfunction endOfTextblockVertical(view, state, dir) {\n var sel = state.selection;\n var $pos = dir == \"up\" ? sel.$anchor.min(sel.$head) : sel.$anchor.max(sel.$head);\n return withFlushedState(view, state, function () {\n var ref = view.docView.domFromPos($pos.pos);\n var dom = ref.node;\n for (;;) {\n var nearest = view.docView.nearestDesc(dom, true);\n if (!nearest) { break }\n if (nearest.node.isBlock) { dom = nearest.dom; break }\n dom = nearest.dom.parentNode;\n }\n var coords = coordsAtPos(view, $pos.pos);\n for (var child = dom.firstChild; child; child = child.nextSibling) {\n var boxes = (void 0);\n if (child.nodeType == 1) { boxes = child.getClientRects(); }\n else if (child.nodeType == 3) { boxes = textRange(child, 0, child.nodeValue.length).getClientRects(); }\n else { continue }\n for (var i = 0; i < boxes.length; i++) {\n var box = boxes[i];\n if (box.bottom > box.top && (dir == \"up\" ? box.bottom < coords.top + 1 : box.top > coords.bottom - 1))\n { return false }\n }\n }\n return true\n })\n}\n\nvar maybeRTL = /[\\u0590-\\u08ac]/;\n\nfunction endOfTextblockHorizontal(view, state, dir) {\n var ref = state.selection;\n var $head = ref.$head;\n if (!$head.parent.isTextblock) { return false }\n var offset = $head.parentOffset, atStart = !offset, atEnd = offset == $head.parent.content.size;\n var sel = getSelection();\n // If the textblock is all LTR, or the browser doesn't support\n // Selection.modify (Edge), fall back to a primitive approach\n if (!maybeRTL.test($head.parent.textContent) || !sel.modify)\n { return dir == \"left\" || dir == \"backward\" ? atStart : atEnd }\n\n return withFlushedState(view, state, function () {\n // This is a huge hack, but appears to be the best we can\n // currently do: use `Selection.modify` to move the selection by\n // one character, and see if that moves the cursor out of the\n // textblock (or doesn't move it at all, when at the start/end of\n // the document).\n var oldRange = sel.getRangeAt(0), oldNode = sel.focusNode, oldOff = sel.focusOffset;\n var oldBidiLevel = sel.caretBidiLevel; // Only for Firefox\n sel.modify(\"move\", dir, \"character\");\n var parentDOM = $head.depth ? view.docView.domAfterPos($head.before()) : view.dom;\n var result = !parentDOM.contains(sel.focusNode.nodeType == 1 ? sel.focusNode : sel.focusNode.parentNode) ||\n (oldNode == sel.focusNode && oldOff == sel.focusOffset);\n // Restore the previous selection\n sel.removeAllRanges();\n sel.addRange(oldRange);\n if (oldBidiLevel != null) { sel.caretBidiLevel = oldBidiLevel; }\n return result\n })\n}\n\nvar cachedState = null, cachedDir = null, cachedResult = false;\nfunction endOfTextblock(view, state, dir) {\n if (cachedState == state && cachedDir == dir) { return cachedResult }\n cachedState = state; cachedDir = dir;\n return cachedResult = dir == \"up\" || dir == \"down\"\n ? endOfTextblockVertical(view, state, dir)\n : endOfTextblockHorizontal(view, state, dir)\n}\n\n// NodeView:: interface\n//\n// By default, document nodes are rendered using the result of the\n// [`toDOM`](#model.NodeSpec.toDOM) method of their spec, and managed\n// entirely by the editor. For some use cases, such as embedded\n// node-specific editing interfaces, you want more control over\n// the behavior of a node's in-editor representation, and need to\n// [define](#view.EditorProps.nodeViews) a custom node view.\n//\n// Mark views only support `dom` and `contentDOM`, and don't support\n// any of the node view methods.\n//\n// Objects returned as node views must conform to this interface.\n//\n// dom:: ?dom.Node\n// The outer DOM node that represents the document node. When not\n// given, the default strategy is used to create a DOM node.\n//\n// contentDOM:: ?dom.Node\n// The DOM node that should hold the node's content. Only meaningful\n// if the node view also defines a `dom` property and if its node\n// type is not a leaf node type. When this is present, ProseMirror\n// will take care of rendering the node's children into it. When it\n// is not present, the node view itself is responsible for rendering\n// (or deciding not to render) its child nodes.\n//\n// update:: ?(node: Node, decorations: [Decoration]) → bool\n// When given, this will be called when the view is updating itself.\n// It will be given a node (possibly of a different type), and an\n// array of active decorations (which are automatically drawn, and\n// the node view may ignore if it isn't interested in them), and\n// should return true if it was able to update to that node, and\n// false otherwise. If the node view has a `contentDOM` property (or\n// no `dom` property), updating its child nodes will be handled by\n// ProseMirror.\n//\n// selectNode:: ?()\n// Can be used to override the way the node's selected status (as a\n// node selection) is displayed.\n//\n// deselectNode:: ?()\n// When defining a `selectNode` method, you should also provide a\n// `deselectNode` method to remove the effect again.\n//\n// setSelection:: ?(anchor: number, head: number, root: dom.Document)\n// This will be called to handle setting the selection inside the\n// node. The `anchor` and `head` positions are relative to the start\n// of the node. By default, a DOM selection will be created between\n// the DOM positions corresponding to those positions, but if you\n// override it you can do something else.\n//\n// stopEvent:: ?(event: dom.Event) → bool\n// Can be used to prevent the editor view from trying to handle some\n// or all DOM events that bubble up from the node view. Events for\n// which this returns true are not handled by the editor.\n//\n// ignoreMutation:: ?(dom.MutationRecord) → bool\n// Called when a DOM\n// [mutation](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver)\n// or a selection change happens within the view. When the change is\n// a selection change, the record will have a `type` property of\n// `\"selection\"` (which doesn't occur for native mutation records).\n// Return false if the editor should re-read the selection or\n// re-parse the range around the mutation, true if it can safely be\n// ignored.\n//\n// destroy:: ?()\n// Called when the node view is removed from the editor or the whole\n// editor is destroyed.\n\n// View descriptions are data structures that describe the DOM that is\n// used to represent the editor's content. They are used for:\n//\n// - Incremental redrawing when the document changes\n//\n// - Figuring out what part of the document a given DOM position\n// corresponds to\n//\n// - Wiring in custom implementations of the editing interface for a\n// given node\n//\n// They form a doubly-linked mutable tree, starting at `view.docView`.\n\nvar NOT_DIRTY = 0, CHILD_DIRTY = 1, CONTENT_DIRTY = 2, NODE_DIRTY = 3;\n\n// Superclass for the various kinds of descriptions. Defines their\n// basic structure and shared methods.\nvar ViewDesc = function ViewDesc(parent, children, dom, contentDOM) {\n this.parent = parent;\n this.children = children;\n this.dom = dom;\n // An expando property on the DOM node provides a link back to its\n // description.\n dom.pmViewDesc = this;\n // This is the node that holds the child views. It may be null for\n // descs that don't have children.\n this.contentDOM = contentDOM;\n this.dirty = NOT_DIRTY;\n};\n\nvar prototypeAccessors = { beforePosition: { configurable: true },size: { configurable: true },border: { configurable: true },posBefore: { configurable: true },posAtStart: { configurable: true },posAfter: { configurable: true },posAtEnd: { configurable: true },contentLost: { configurable: true } };\n\n// Used to check whether a given description corresponds to a\n// widget/mark/node.\nViewDesc.prototype.matchesWidget = function matchesWidget () { return false };\nViewDesc.prototype.matchesMark = function matchesMark () { return false };\nViewDesc.prototype.matchesNode = function matchesNode () { return false };\nViewDesc.prototype.matchesHack = function matchesHack () { return false };\n\nprototypeAccessors.beforePosition.get = function () { return false };\n\n// : () → ?ParseRule\n// When parsing in-editor content (in domchange.js), we allow\n// descriptions to determine the parse rules that should be used to\n// parse them.\nViewDesc.prototype.parseRule = function parseRule () { return null };\n\n// : (dom.Event) → bool\n// Used by the editor's event handler to ignore events that come\n// from certain descs.\nViewDesc.prototype.stopEvent = function stopEvent () { return false };\n\n// The size of the content represented by this desc.\nprototypeAccessors.size.get = function () {\n var size = 0;\n for (var i = 0; i < this.children.length; i++) { size += this.children[i].size; }\n return size\n};\n\n// For block nodes, this represents the space taken up by their\n// start/end tokens.\nprototypeAccessors.border.get = function () { return 0 };\n\nViewDesc.prototype.destroy = function destroy () {\n this.parent = null;\n if (this.dom.pmViewDesc == this) { this.dom.pmViewDesc = null; }\n for (var i = 0; i < this.children.length; i++)\n { this.children[i].destroy(); }\n};\n\nViewDesc.prototype.posBeforeChild = function posBeforeChild (child) {\n for (var i = 0, pos = this.posAtStart; i < this.children.length; i++) {\n var cur = this.children[i];\n if (cur == child) { return pos }\n pos += cur.size;\n }\n};\n\nprototypeAccessors.posBefore.get = function () {\n return this.parent.posBeforeChild(this)\n};\n\nprototypeAccessors.posAtStart.get = function () {\n return this.parent ? this.parent.posBeforeChild(this) + this.border : 0\n};\n\nprototypeAccessors.posAfter.get = function () {\n return this.posBefore + this.size\n};\n\nprototypeAccessors.posAtEnd.get = function () {\n return this.posAtStart + this.size - 2 * this.border\n};\n\n// : (dom.Node, number, ?number) → number\nViewDesc.prototype.localPosFromDOM = function localPosFromDOM (dom, offset, bias) {\n // If the DOM position is in the content, use the child desc after\n // it to figure out a position.\n if (this.contentDOM && this.contentDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode)) {\n if (bias < 0) {\n var domBefore, desc;\n if (dom == this.contentDOM) {\n domBefore = dom.childNodes[offset - 1];\n } else {\n while (dom.parentNode != this.contentDOM) { dom = dom.parentNode; }\n domBefore = dom.previousSibling;\n }\n while (domBefore && !((desc = domBefore.pmViewDesc) && desc.parent == this)) { domBefore = domBefore.previousSibling; }\n return domBefore ? this.posBeforeChild(desc) + desc.size : this.posAtStart\n } else {\n var domAfter, desc$1;\n if (dom == this.contentDOM) {\n domAfter = dom.childNodes[offset];\n } else {\n while (dom.parentNode != this.contentDOM) { dom = dom.parentNode; }\n domAfter = dom.nextSibling;\n }\n while (domAfter && !((desc$1 = domAfter.pmViewDesc) && desc$1.parent == this)) { domAfter = domAfter.nextSibling; }\n return domAfter ? this.posBeforeChild(desc$1) : this.posAtEnd\n }\n }\n // Otherwise, use various heuristics, falling back on the bias\n // parameter, to determine whether to return the position at the\n // start or at the end of this view desc.\n var atEnd;\n if (this.contentDOM && this.contentDOM != this.dom && this.dom.contains(this.contentDOM)) {\n atEnd = dom.compareDocumentPosition(this.contentDOM) & 2;\n } else if (this.dom.firstChild) {\n if (offset == 0) { for (var search = dom;; search = search.parentNode) {\n if (search == this.dom) { atEnd = false; break }\n if (search.parentNode.firstChild != search) { break }\n } }\n if (atEnd == null && offset == dom.childNodes.length) { for (var search$1 = dom;; search$1 = search$1.parentNode) {\n if (search$1 == this.dom) { atEnd = true; break }\n if (search$1.parentNode.lastChild != search$1) { break }\n } }\n }\n return (atEnd == null ? bias > 0 : atEnd) ? this.posAtEnd : this.posAtStart\n};\n\n// Scan up the dom finding the first desc that is a descendant of\n// this one.\nViewDesc.prototype.nearestDesc = function nearestDesc (dom, onlyNodes) {\n for (var first = true, cur = dom; cur; cur = cur.parentNode) {\n var desc = this.getDesc(cur);\n if (desc && (!onlyNodes || desc.node)) {\n // If dom is outside of this desc's nodeDOM, don't count it.\n if (first && desc.nodeDOM &&\n !(desc.nodeDOM.nodeType == 1 ? desc.nodeDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode) : desc.nodeDOM == dom))\n { first = false; }\n else\n { return desc }\n }\n }\n};\n\nViewDesc.prototype.getDesc = function getDesc (dom) {\n var desc = dom.pmViewDesc;\n for (var cur = desc; cur; cur = cur.parent) { if (cur == this) { return desc } }\n};\n\nViewDesc.prototype.posFromDOM = function posFromDOM (dom, offset, bias) {\n for (var scan = dom; scan; scan = scan.parentNode) {\n var desc = this.getDesc(scan);\n if (desc) { return desc.localPosFromDOM(dom, offset, bias) }\n }\n return -1\n};\n\n// : (number) → ?NodeViewDesc\n// Find the desc for the node after the given pos, if any. (When a\n// parent node overrode rendering, there might not be one.)\nViewDesc.prototype.descAt = function descAt (pos) {\n for (var i = 0, offset = 0; i < this.children.length; i++) {\n var child = this.children[i], end = offset + child.size;\n if (offset == pos && end != offset) {\n while (!child.border && child.children.length) { child = child.children[0]; }\n return child\n }\n if (pos < end) { return child.descAt(pos - offset - child.border) }\n offset = end;\n }\n};\n\n// : (number) → {node: dom.Node, offset: number}\nViewDesc.prototype.domFromPos = function domFromPos (pos) {\n if (!this.contentDOM) { return {node: this.dom, offset: 0} }\n for (var offset = 0, i = 0;; i++) {\n if (offset == pos) {\n while (i < this.children.length && (this.children[i].beforePosition || this.children[i].dom.parentNode != this.contentDOM)) { i++; }\n return {node: this.contentDOM,\n offset: i == this.children.length ? this.contentDOM.childNodes.length : domIndex(this.children[i].dom)}\n }\n if (i == this.children.length) { throw new Error(\"Invalid position \" + pos) }\n var child = this.children[i], end = offset + child.size;\n if (pos < end) { return child.domFromPos(pos - offset - child.border) }\n offset = end;\n }\n};\n\n// Used to find a DOM range in a single parent for a given changed\n// range.\nViewDesc.prototype.parseRange = function parseRange (from, to, base) {\n if ( base === void 0 ) base = 0;\n\n if (this.children.length == 0)\n { return {node: this.contentDOM, from: from, to: to, fromOffset: 0, toOffset: this.contentDOM.childNodes.length} }\n\n var fromOffset = -1, toOffset = -1;\n for (var offset = base, i = 0;; i++) {\n var child = this.children[i], end = offset + child.size;\n if (fromOffset == -1 && from <= end) {\n var childBase = offset + child.border;\n // FIXME maybe descend mark views to parse a narrower range?\n if (from >= childBase && to <= end - child.border && child.node &&\n child.contentDOM && this.contentDOM.contains(child.contentDOM))\n { return child.parseRange(from, to, childBase) }\n\n from = offset;\n for (var j = i; j > 0; j--) {\n var prev = this.children[j - 1];\n if (prev.size && prev.dom.parentNode == this.contentDOM && !prev.emptyChildAt(1)) {\n fromOffset = domIndex(prev.dom) + 1;\n break\n }\n from -= prev.size;\n }\n if (fromOffset == -1) { fromOffset = 0; }\n }\n if (fromOffset > -1 && (end > to || i == this.children.length - 1)) {\n to = end;\n for (var j$1 = i + 1; j$1 < this.children.length; j$1++) {\n var next = this.children[j$1];\n if (next.size && next.dom.parentNode == this.contentDOM && !next.emptyChildAt(-1)) {\n toOffset = domIndex(next.dom);\n break\n }\n to += next.size;\n }\n if (toOffset == -1) { toOffset = this.contentDOM.childNodes.length; }\n break\n }\n offset = end;\n }\n return {node: this.contentDOM, from: from, to: to, fromOffset: fromOffset, toOffset: toOffset}\n};\n\nViewDesc.prototype.emptyChildAt = function emptyChildAt (side) {\n if (this.border || !this.contentDOM || !this.children.length) { return false }\n var child = this.children[side < 0 ? 0 : this.children.length - 1];\n return child.size == 0 || child.emptyChildAt(side)\n};\n\n// : (number) → dom.Node\nViewDesc.prototype.domAfterPos = function domAfterPos (pos) {\n var ref = this.domFromPos(pos);\n var node = ref.node;\n var offset = ref.offset;\n if (node.nodeType != 1 || offset == node.childNodes.length)\n { throw new RangeError(\"No node after pos \" + pos) }\n return node.childNodes[offset]\n};\n\n// : (number, number, dom.Document)\n// View descs are responsible for setting any selection that falls\n// entirely inside of them, so that custom implementations can do\n// custom things with the selection. Note that this falls apart when\n// a selection starts in such a node and ends in another, in which\n// case we just use whatever domFromPos produces as a best effort.\nViewDesc.prototype.setSelection = function setSelection (anchor, head, root, force) {\n // If the selection falls entirely in a child, give it to that child\n var from = Math.min(anchor, head), to = Math.max(anchor, head);\n for (var i = 0, offset = 0; i < this.children.length; i++) {\n var child = this.children[i], end = offset + child.size;\n if (from > offset && to < end)\n { return child.setSelection(anchor - offset - child.border, head - offset - child.border, root, force) }\n offset = end;\n }\n\n var anchorDOM = this.domFromPos(anchor), headDOM = this.domFromPos(head);\n var domSel = root.getSelection();\n\n var brKludge = false;\n // On Firefox, using Selection.collapse to put the cursor after a\n // BR node for some reason doesn't always work (#1073). On Safari,\n // the cursor sometimes inexplicable visually lags behind its\n // reported position in such situations (#1092).\n if ((result.gecko || result.safari) && anchor == head) {\n var prev = anchorDOM.node.childNodes[anchorDOM.offset - 1];\n brKludge = prev && (prev.nodeName == \"BR\" || prev.contentEditable == \"false\");\n }\n\n if (!(force || brKludge && result.safari) &&\n isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset) &&\n isEquivalentPosition(headDOM.node, headDOM.offset, domSel.focusNode, domSel.focusOffset))\n { return }\n\n // Selection.extend can be used to create an 'inverted' selection\n // (one where the focus is before the anchor), but not all\n // browsers support it yet.\n var domSelExtended = false;\n if ((domSel.extend || anchor == head) && !brKludge) {\n domSel.collapse(anchorDOM.node, anchorDOM.offset);\n try {\n if (anchor != head) { domSel.extend(headDOM.node, headDOM.offset); }\n domSelExtended = true;\n } catch (err) {\n // In some cases with Chrome the selection is empty after calling\n // collapse, even when it should be valid. This appears to be a bug, but\n // it is difficult to isolate. If this happens fallback to the old path\n // without using extend.\n if (!(err instanceof DOMException)) { throw err }\n // declare global: DOMException\n }\n }\n if (!domSelExtended) {\n if (anchor > head) { var tmp = anchorDOM; anchorDOM = headDOM; headDOM = tmp; }\n var range = document.createRange();\n range.setEnd(headDOM.node, headDOM.offset);\n range.setStart(anchorDOM.node, anchorDOM.offset);\n domSel.removeAllRanges();\n domSel.addRange(range);\n }\n};\n\n// : (dom.MutationRecord) → bool\nViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return !this.contentDOM && mutation.type != \"selection\"\n};\n\nprototypeAccessors.contentLost.get = function () {\n return this.contentDOM && this.contentDOM != this.dom && !this.dom.contains(this.contentDOM)\n};\n\n// Remove a subtree of the element tree that has been touched\n// by a DOM change, so that the next update will redraw it.\nViewDesc.prototype.markDirty = function markDirty (from, to) {\n for (var offset = 0, i = 0; i < this.children.length; i++) {\n var child = this.children[i], end = offset + child.size;\n if (offset == end ? from <= end && to >= offset : from < end && to > offset) {\n var startInside = offset + child.border, endInside = end - child.border;\n if (from >= startInside && to <= endInside) {\n this.dirty = from == offset || to == end ? CONTENT_DIRTY : CHILD_DIRTY;\n if (from == startInside && to == endInside &&\n (child.contentLost || child.dom.parentNode != this.contentDOM)) { child.dirty = NODE_DIRTY; }\n else { child.markDirty(from - startInside, to - startInside); }\n return\n } else {\n child.dirty = NODE_DIRTY;\n }\n }\n offset = end;\n }\n this.dirty = CONTENT_DIRTY;\n};\n\nViewDesc.prototype.markParentsDirty = function markParentsDirty () {\n var level = 1;\n for (var node = this.parent; node; node = node.parent, level++) {\n var dirty = level == 1 ? CONTENT_DIRTY : CHILD_DIRTY;\n if (node.dirty < dirty) { node.dirty = dirty; }\n }\n};\n\nObject.defineProperties( ViewDesc.prototype, prototypeAccessors );\n\n// Reused array to avoid allocating fresh arrays for things that will\n// stay empty anyway.\nvar nothing = [];\n\n// A widget desc represents a widget decoration, which is a DOM node\n// drawn between the document nodes.\nvar WidgetViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function WidgetViewDesc(parent, widget, view, pos) {\n var self, dom = widget.type.toDOM;\n if (typeof dom == \"function\") { dom = dom(view, function () {\n if (!self) { return pos }\n if (self.parent) { return self.parent.posBeforeChild(self) }\n }); }\n if (!widget.type.spec.raw) {\n if (dom.nodeType != 1) {\n var wrap = document.createElement(\"span\");\n wrap.appendChild(dom);\n dom = wrap;\n }\n dom.contentEditable = false;\n dom.classList.add(\"ProseMirror-widget\");\n }\n ViewDesc.call(this, parent, nothing, dom, null);\n this.widget = widget;\n self = this;\n }\n\n if ( ViewDesc ) WidgetViewDesc.__proto__ = ViewDesc;\n WidgetViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n WidgetViewDesc.prototype.constructor = WidgetViewDesc;\n\n var prototypeAccessors$1 = { beforePosition: { configurable: true } };\n\n prototypeAccessors$1.beforePosition.get = function () {\n return this.widget.type.side < 0\n };\n\n WidgetViewDesc.prototype.matchesWidget = function matchesWidget (widget) {\n return this.dirty == NOT_DIRTY && widget.type.eq(this.widget.type)\n };\n\n WidgetViewDesc.prototype.parseRule = function parseRule () { return {ignore: true} };\n\n WidgetViewDesc.prototype.stopEvent = function stopEvent (event) {\n var stop = this.widget.spec.stopEvent;\n return stop ? stop(event) : false\n };\n\n WidgetViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return mutation.type != \"selection\" || this.widget.spec.ignoreSelection\n };\n\n Object.defineProperties( WidgetViewDesc.prototype, prototypeAccessors$1 );\n\n return WidgetViewDesc;\n}(ViewDesc));\n\nvar CompositionViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function CompositionViewDesc(parent, dom, textDOM, text) {\n ViewDesc.call(this, parent, nothing, dom, null);\n this.textDOM = textDOM;\n this.text = text;\n }\n\n if ( ViewDesc ) CompositionViewDesc.__proto__ = ViewDesc;\n CompositionViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n CompositionViewDesc.prototype.constructor = CompositionViewDesc;\n\n var prototypeAccessors$2 = { size: { configurable: true } };\n\n prototypeAccessors$2.size.get = function () { return this.text.length };\n\n CompositionViewDesc.prototype.localPosFromDOM = function localPosFromDOM (dom, offset) {\n if (dom != this.textDOM) { return this.posAtStart + (offset ? this.size : 0) }\n return this.posAtStart + offset\n };\n\n CompositionViewDesc.prototype.domFromPos = function domFromPos (pos) {\n return {node: this.textDOM, offset: pos}\n };\n\n CompositionViewDesc.prototype.ignoreMutation = function ignoreMutation (mut) {\n return mut.type === 'characterData' && mut.target.nodeValue == mut.oldValue\n };\n\n Object.defineProperties( CompositionViewDesc.prototype, prototypeAccessors$2 );\n\n return CompositionViewDesc;\n}(ViewDesc));\n\n// A mark desc represents a mark. May have multiple children,\n// depending on how the mark is split. Note that marks are drawn using\n// a fixed nesting order, for simplicity and predictability, so in\n// some cases they will be split more often than would appear\n// necessary.\nvar MarkViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function MarkViewDesc(parent, mark, dom, contentDOM) {\n ViewDesc.call(this, parent, [], dom, contentDOM);\n this.mark = mark;\n }\n\n if ( ViewDesc ) MarkViewDesc.__proto__ = ViewDesc;\n MarkViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n MarkViewDesc.prototype.constructor = MarkViewDesc;\n\n MarkViewDesc.create = function create (parent, mark, inline, view) {\n var custom = view.nodeViews[mark.type.name];\n var spec = custom && custom(mark, view, inline);\n if (!spec || !spec.dom)\n { spec = DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline)); }\n return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom)\n };\n\n MarkViewDesc.prototype.parseRule = function parseRule () { return {mark: this.mark.type.name, attrs: this.mark.attrs, contentElement: this.contentDOM} };\n\n MarkViewDesc.prototype.matchesMark = function matchesMark (mark) { return this.dirty != NODE_DIRTY && this.mark.eq(mark) };\n\n MarkViewDesc.prototype.markDirty = function markDirty (from, to) {\n ViewDesc.prototype.markDirty.call(this, from, to);\n // Move dirty info to nearest node view\n if (this.dirty != NOT_DIRTY) {\n var parent = this.parent;\n while (!parent.node) { parent = parent.parent; }\n if (parent.dirty < this.dirty) { parent.dirty = this.dirty; }\n this.dirty = NOT_DIRTY;\n }\n };\n\n MarkViewDesc.prototype.slice = function slice (from, to, view) {\n var copy = MarkViewDesc.create(this.parent, this.mark, true, view);\n var nodes = this.children, size = this.size;\n if (to < size) { nodes = replaceNodes(nodes, to, size, view); }\n if (from > 0) { nodes = replaceNodes(nodes, 0, from, view); }\n for (var i = 0; i < nodes.length; i++) { nodes[i].parent = copy; }\n copy.children = nodes;\n return copy\n };\n\n return MarkViewDesc;\n}(ViewDesc));\n\n// Node view descs are the main, most common type of view desc, and\n// correspond to an actual node in the document. Unlike mark descs,\n// they populate their child array themselves.\nvar NodeViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos) {\n ViewDesc.call(this, parent, node.isLeaf ? nothing : [], dom, contentDOM);\n this.nodeDOM = nodeDOM;\n this.node = node;\n this.outerDeco = outerDeco;\n this.innerDeco = innerDeco;\n if (contentDOM) { this.updateChildren(view, pos); }\n }\n\n if ( ViewDesc ) NodeViewDesc.__proto__ = ViewDesc;\n NodeViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n NodeViewDesc.prototype.constructor = NodeViewDesc;\n\n var prototypeAccessors$3 = { size: { configurable: true },border: { configurable: true } };\n\n // By default, a node is rendered using the `toDOM` method from the\n // node type spec. But client code can use the `nodeViews` spec to\n // supply a custom node view, which can influence various aspects of\n // the way the node works.\n //\n // (Using subclassing for this was intentionally decided against,\n // since it'd require exposing a whole slew of finnicky\n // implementation details to the user code that they probably will\n // never need.)\n NodeViewDesc.create = function create (parent, node, outerDeco, innerDeco, view, pos) {\n var assign;\n\n var custom = view.nodeViews[node.type.name], descObj;\n var spec = custom && custom(node, view, function () {\n // (This is a function that allows the custom view to find its\n // own position)\n if (!descObj) { return pos }\n if (descObj.parent) { return descObj.parent.posBeforeChild(descObj) }\n }, outerDeco);\n\n var dom = spec && spec.dom, contentDOM = spec && spec.contentDOM;\n if (node.isText) {\n if (!dom) { dom = document.createTextNode(node.text); }\n else if (dom.nodeType != 3) { throw new RangeError(\"Text must be rendered as a DOM text node\") }\n } else if (!dom) {\n((assign = DOMSerializer.renderSpec(document, node.type.spec.toDOM(node)), dom = assign.dom, contentDOM = assign.contentDOM));\n }\n if (!contentDOM && !node.isText && dom.nodeName != \"BR\") { // Chrome gets confused by
    \n if (!dom.hasAttribute(\"contenteditable\")) { dom.contentEditable = false; }\n if (node.type.spec.draggable) { dom.draggable = true; }\n }\n\n var nodeDOM = dom;\n dom = applyOuterDeco(dom, outerDeco, node);\n\n if (spec)\n { return descObj = new CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM,\n spec, view, pos + 1) }\n else if (node.isText)\n { return new TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) }\n else\n { return new NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos + 1) }\n };\n\n NodeViewDesc.prototype.parseRule = function parseRule () {\n var this$1 = this;\n\n // Experimental kludge to allow opt-in re-parsing of nodes\n if (this.node.type.spec.reparseInView) { return null }\n // FIXME the assumption that this can always return the current\n // attrs means that if the user somehow manages to change the\n // attrs in the dom, that won't be picked up. Not entirely sure\n // whether this is a problem\n var rule = {node: this.node.type.name, attrs: this.node.attrs};\n if (this.node.type.spec.code) { rule.preserveWhitespace = \"full\"; }\n if (this.contentDOM && !this.contentLost) { rule.contentElement = this.contentDOM; }\n else { rule.getContent = function () { return this$1.contentDOM ? Fragment.empty : this$1.node.content; }; }\n return rule\n };\n\n NodeViewDesc.prototype.matchesNode = function matchesNode (node, outerDeco, innerDeco) {\n return this.dirty == NOT_DIRTY && node.eq(this.node) &&\n sameOuterDeco(outerDeco, this.outerDeco) && innerDeco.eq(this.innerDeco)\n };\n\n prototypeAccessors$3.size.get = function () { return this.node.nodeSize };\n\n prototypeAccessors$3.border.get = function () { return this.node.isLeaf ? 0 : 1 };\n\n // Syncs `this.children` to match `this.node.content` and the local\n // decorations, possibly introducing nesting for marks. Then, in a\n // separate step, syncs the DOM inside `this.contentDOM` to\n // `this.children`.\n NodeViewDesc.prototype.updateChildren = function updateChildren (view, pos) {\n var this$1 = this;\n\n var inline = this.node.inlineContent, off = pos;\n var composition = inline && view.composing && this.localCompositionNode(view, pos);\n var updater = new ViewTreeUpdater(this, composition && composition.node);\n iterDeco(this.node, this.innerDeco, function (widget, i, insideNode) {\n if (widget.spec.marks)\n { updater.syncToMarks(widget.spec.marks, inline, view); }\n else if (widget.type.side >= 0 && !insideNode)\n { updater.syncToMarks(i == this$1.node.childCount ? Mark.none : this$1.node.child(i).marks, inline, view); }\n // If the next node is a desc matching this widget, reuse it,\n // otherwise insert the widget as a new view desc.\n updater.placeWidget(widget, view, off);\n }, function (child, outerDeco, innerDeco, i) {\n // Make sure the wrapping mark descs match the node's marks.\n updater.syncToMarks(child.marks, inline, view);\n // Either find an existing desc that exactly matches this node,\n // and drop the descs before it.\n updater.findNodeMatch(child, outerDeco, innerDeco, i) ||\n // Or try updating the next desc to reflect this node.\n updater.updateNextNode(child, outerDeco, innerDeco, view, i) ||\n // Or just add it as a new desc.\n updater.addNode(child, outerDeco, innerDeco, view, off);\n off += child.nodeSize;\n });\n // Drop all remaining descs after the current position.\n updater.syncToMarks(nothing, inline, view);\n if (this.node.isTextblock) { updater.addTextblockHacks(); }\n updater.destroyRest();\n\n // Sync the DOM if anything changed\n if (updater.changed || this.dirty == CONTENT_DIRTY) {\n // May have to protect focused DOM from being changed if a composition is active\n if (composition) { this.protectLocalComposition(view, composition); }\n renderDescs(this.contentDOM, this.children, view);\n if (result.ios) { iosHacks(this.dom); }\n }\n };\n\n NodeViewDesc.prototype.localCompositionNode = function localCompositionNode (view, pos) {\n // Only do something if both the selection and a focused text node\n // are inside of this node, and the node isn't already part of a\n // view that's a child of this view\n var ref = view.state.selection;\n var from = ref.from;\n var to = ref.to;\n if (!(view.state.selection instanceof TextSelection) || from < pos || to > pos + this.node.content.size) { return }\n var sel = view.root.getSelection();\n var textNode = nearbyTextNode(sel.focusNode, sel.focusOffset);\n if (!textNode || !this.dom.contains(textNode.parentNode)) { return }\n\n // Find the text in the focused node in the node, stop if it's not\n // there (may have been modified through other means, in which\n // case it should overwritten)\n var text = textNode.nodeValue;\n var textPos = findTextInFragment(this.node.content, text, from - pos, to - pos);\n\n return textPos < 0 ? null : {node: textNode, pos: textPos, text: text}\n };\n\n NodeViewDesc.prototype.protectLocalComposition = function protectLocalComposition (view, ref) {\n var node = ref.node;\n var pos = ref.pos;\n var text = ref.text;\n\n // The node is already part of a local view desc, leave it there\n if (this.getDesc(node)) { return }\n\n // Create a composition view for the orphaned nodes\n var topNode = node;\n for (;; topNode = topNode.parentNode) {\n if (topNode.parentNode == this.contentDOM) { break }\n while (topNode.previousSibling) { topNode.parentNode.removeChild(topNode.previousSibling); }\n while (topNode.nextSibling) { topNode.parentNode.removeChild(topNode.nextSibling); }\n if (topNode.pmViewDesc) { topNode.pmViewDesc = null; }\n }\n var desc = new CompositionViewDesc(this, topNode, node, text);\n view.compositionNodes.push(desc);\n\n // Patch up this.children to contain the composition view\n this.children = replaceNodes(this.children, pos, pos + text.length, view, desc);\n };\n\n // : (Node, [Decoration], DecorationSet, EditorView) → bool\n // If this desc be updated to match the given node decoration,\n // do so and return true.\n NodeViewDesc.prototype.update = function update (node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY ||\n !node.sameMarkup(this.node)) { return false }\n this.updateInner(node, outerDeco, innerDeco, view);\n return true\n };\n\n NodeViewDesc.prototype.updateInner = function updateInner (node, outerDeco, innerDeco, view) {\n this.updateOuterDeco(outerDeco);\n this.node = node;\n this.innerDeco = innerDeco;\n if (this.contentDOM) { this.updateChildren(view, this.posAtStart); }\n this.dirty = NOT_DIRTY;\n };\n\n NodeViewDesc.prototype.updateOuterDeco = function updateOuterDeco (outerDeco) {\n if (sameOuterDeco(outerDeco, this.outerDeco)) { return }\n var needsWrap = this.nodeDOM.nodeType != 1;\n var oldDOM = this.dom;\n this.dom = patchOuterDeco(this.dom, this.nodeDOM,\n computeOuterDeco(this.outerDeco, this.node, needsWrap),\n computeOuterDeco(outerDeco, this.node, needsWrap));\n if (this.dom != oldDOM) {\n oldDOM.pmViewDesc = null;\n this.dom.pmViewDesc = this;\n }\n this.outerDeco = outerDeco;\n };\n\n // Mark this node as being the selected node.\n NodeViewDesc.prototype.selectNode = function selectNode () {\n this.nodeDOM.classList.add(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable) { this.dom.draggable = true; }\n };\n\n // Remove selected node marking from this node.\n NodeViewDesc.prototype.deselectNode = function deselectNode () {\n this.nodeDOM.classList.remove(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable) { this.dom.removeAttribute(\"draggable\"); }\n };\n\n Object.defineProperties( NodeViewDesc.prototype, prototypeAccessors$3 );\n\n return NodeViewDesc;\n}(ViewDesc));\n\n// Create a view desc for the top-level document node, to be exported\n// and used by the view class.\nfunction docViewDesc(doc, outerDeco, innerDeco, dom, view) {\n applyOuterDeco(dom, outerDeco, doc);\n return new NodeViewDesc(null, doc, outerDeco, innerDeco, dom, dom, dom, view, 0)\n}\n\nvar TextViewDesc = /*@__PURE__*/(function (NodeViewDesc) {\n function TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) {\n NodeViewDesc.call(this, parent, node, outerDeco, innerDeco, dom, null, nodeDOM, view);\n }\n\n if ( NodeViewDesc ) TextViewDesc.__proto__ = NodeViewDesc;\n TextViewDesc.prototype = Object.create( NodeViewDesc && NodeViewDesc.prototype );\n TextViewDesc.prototype.constructor = TextViewDesc;\n\n TextViewDesc.prototype.parseRule = function parseRule () {\n var skip = this.nodeDOM.parentNode;\n while (skip && skip != this.dom && !skip.pmIsDeco) { skip = skip.parentNode; }\n return {skip: skip || true}\n };\n\n TextViewDesc.prototype.update = function update (node, outerDeco, _, view) {\n if (this.dirty == NODE_DIRTY || (this.dirty != NOT_DIRTY && !this.inParent()) ||\n !node.sameMarkup(this.node)) { return false }\n this.updateOuterDeco(outerDeco);\n if ((this.dirty != NOT_DIRTY || node.text != this.node.text) && node.text != this.nodeDOM.nodeValue) {\n this.nodeDOM.nodeValue = node.text;\n if (view.trackWrites == this.nodeDOM) { view.trackWrites = null; }\n }\n this.node = node;\n this.dirty = NOT_DIRTY;\n return true\n };\n\n TextViewDesc.prototype.inParent = function inParent () {\n var parentDOM = this.parent.contentDOM;\n for (var n = this.nodeDOM; n; n = n.parentNode) { if (n == parentDOM) { return true } }\n return false\n };\n\n TextViewDesc.prototype.domFromPos = function domFromPos (pos) {\n return {node: this.nodeDOM, offset: pos}\n };\n\n TextViewDesc.prototype.localPosFromDOM = function localPosFromDOM (dom, offset, bias) {\n if (dom == this.nodeDOM) { return this.posAtStart + Math.min(offset, this.node.text.length) }\n return NodeViewDesc.prototype.localPosFromDOM.call(this, dom, offset, bias)\n };\n\n TextViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return mutation.type != \"characterData\" && mutation.type != \"selection\"\n };\n\n TextViewDesc.prototype.slice = function slice (from, to, view) {\n var node = this.node.cut(from, to), dom = document.createTextNode(node.text);\n return new TextViewDesc(this.parent, node, this.outerDeco, this.innerDeco, dom, dom, view)\n };\n\n return TextViewDesc;\n}(NodeViewDesc));\n\n// A dummy desc used to tag trailing BR or span nodes created to work\n// around contentEditable terribleness.\nvar BRHackViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function BRHackViewDesc () {\n ViewDesc.apply(this, arguments);\n }\n\n if ( ViewDesc ) BRHackViewDesc.__proto__ = ViewDesc;\n BRHackViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n BRHackViewDesc.prototype.constructor = BRHackViewDesc;\n\n BRHackViewDesc.prototype.parseRule = function parseRule () { return {ignore: true} };\n BRHackViewDesc.prototype.matchesHack = function matchesHack () { return this.dirty == NOT_DIRTY };\n\n return BRHackViewDesc;\n}(ViewDesc));\n\n// A separate subclass is used for customized node views, so that the\n// extra checks only have to be made for nodes that are actually\n// customized.\nvar CustomNodeViewDesc = /*@__PURE__*/(function (NodeViewDesc) {\n function CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, spec, view, pos) {\n NodeViewDesc.call(this, parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos);\n this.spec = spec;\n }\n\n if ( NodeViewDesc ) CustomNodeViewDesc.__proto__ = NodeViewDesc;\n CustomNodeViewDesc.prototype = Object.create( NodeViewDesc && NodeViewDesc.prototype );\n CustomNodeViewDesc.prototype.constructor = CustomNodeViewDesc;\n\n // A custom `update` method gets to decide whether the update goes\n // through. If it does, and there's a `contentDOM` node, our logic\n // updates the children.\n CustomNodeViewDesc.prototype.update = function update (node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY) { return false }\n if (this.spec.update) {\n var result = this.spec.update(node, outerDeco);\n if (result) { this.updateInner(node, outerDeco, innerDeco, view); }\n return result\n } else if (!this.contentDOM && !node.isLeaf) {\n return false\n } else {\n return NodeViewDesc.prototype.update.call(this, node, outerDeco, innerDeco, view)\n }\n };\n\n CustomNodeViewDesc.prototype.selectNode = function selectNode () {\n this.spec.selectNode ? this.spec.selectNode() : NodeViewDesc.prototype.selectNode.call(this);\n };\n\n CustomNodeViewDesc.prototype.deselectNode = function deselectNode () {\n this.spec.deselectNode ? this.spec.deselectNode() : NodeViewDesc.prototype.deselectNode.call(this);\n };\n\n CustomNodeViewDesc.prototype.setSelection = function setSelection (anchor, head, root, force) {\n this.spec.setSelection ? this.spec.setSelection(anchor, head, root)\n : NodeViewDesc.prototype.setSelection.call(this, anchor, head, root, force);\n };\n\n CustomNodeViewDesc.prototype.destroy = function destroy () {\n if (this.spec.destroy) { this.spec.destroy(); }\n NodeViewDesc.prototype.destroy.call(this);\n };\n\n CustomNodeViewDesc.prototype.stopEvent = function stopEvent (event) {\n return this.spec.stopEvent ? this.spec.stopEvent(event) : false\n };\n\n CustomNodeViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : NodeViewDesc.prototype.ignoreMutation.call(this, mutation)\n };\n\n return CustomNodeViewDesc;\n}(NodeViewDesc));\n\n// : (dom.Node, [ViewDesc])\n// Sync the content of the given DOM node with the nodes associated\n// with the given array of view descs, recursing into mark descs\n// because this should sync the subtree for a whole node at a time.\nfunction renderDescs(parentDOM, descs, view) {\n var dom = parentDOM.firstChild, written = false;\n for (var i = 0; i < descs.length; i++) {\n var desc = descs[i], childDOM = desc.dom;\n if (childDOM.parentNode == parentDOM) {\n while (childDOM != dom) { dom = rm(dom); written = true; }\n dom = dom.nextSibling;\n } else {\n written = true;\n parentDOM.insertBefore(childDOM, dom);\n }\n if (desc instanceof MarkViewDesc) {\n var pos = dom ? dom.previousSibling : parentDOM.lastChild;\n renderDescs(desc.contentDOM, desc.children, view);\n dom = pos ? pos.nextSibling : parentDOM.firstChild;\n }\n }\n while (dom) { dom = rm(dom); written = true; }\n if (written && view.trackWrites == parentDOM) { view.trackWrites = null; }\n}\n\nfunction OuterDecoLevel(nodeName) {\n if (nodeName) { this.nodeName = nodeName; }\n}\nOuterDecoLevel.prototype = Object.create(null);\n\nvar noDeco = [new OuterDecoLevel];\n\nfunction computeOuterDeco(outerDeco, node, needsWrap) {\n if (outerDeco.length == 0) { return noDeco }\n\n var top = needsWrap ? noDeco[0] : new OuterDecoLevel, result = [top];\n\n for (var i = 0; i < outerDeco.length; i++) {\n var attrs = outerDeco[i].type.attrs, cur = top;\n if (!attrs) { continue }\n if (attrs.nodeName)\n { result.push(cur = new OuterDecoLevel(attrs.nodeName)); }\n\n for (var name in attrs) {\n var val = attrs[name];\n if (val == null) { continue }\n if (needsWrap && result.length == 1)\n { result.push(cur = top = new OuterDecoLevel(node.isInline ? \"span\" : \"div\")); }\n if (name == \"class\") { cur.class = (cur.class ? cur.class + \" \" : \"\") + val; }\n else if (name == \"style\") { cur.style = (cur.style ? cur.style + \";\" : \"\") + val; }\n else if (name != \"nodeName\") { cur[name] = val; }\n }\n }\n\n return result\n}\n\nfunction patchOuterDeco(outerDOM, nodeDOM, prevComputed, curComputed) {\n // Shortcut for trivial case\n if (prevComputed == noDeco && curComputed == noDeco) { return nodeDOM }\n\n var curDOM = nodeDOM;\n for (var i = 0; i < curComputed.length; i++) {\n var deco = curComputed[i], prev = prevComputed[i];\n if (i) {\n var parent = (void 0);\n if (prev && prev.nodeName == deco.nodeName && curDOM != outerDOM &&\n (parent = curDOM.parentNode) && parent.tagName.toLowerCase() == deco.nodeName) {\n curDOM = parent;\n } else {\n parent = document.createElement(deco.nodeName);\n parent.pmIsDeco = true;\n parent.appendChild(curDOM);\n prev = noDeco[0];\n curDOM = parent;\n }\n }\n patchAttributes(curDOM, prev || noDeco[0], deco);\n }\n return curDOM\n}\n\nfunction patchAttributes(dom, prev, cur) {\n for (var name in prev)\n { if (name != \"class\" && name != \"style\" && name != \"nodeName\" && !(name in cur))\n { dom.removeAttribute(name); } }\n for (var name$1 in cur)\n { if (name$1 != \"class\" && name$1 != \"style\" && name$1 != \"nodeName\" && cur[name$1] != prev[name$1])\n { dom.setAttribute(name$1, cur[name$1]); } }\n if (prev.class != cur.class) {\n var prevList = prev.class ? prev.class.split(\" \") : nothing;\n var curList = cur.class ? cur.class.split(\" \") : nothing;\n for (var i = 0; i < prevList.length; i++) { if (curList.indexOf(prevList[i]) == -1)\n { dom.classList.remove(prevList[i]); } }\n for (var i$1 = 0; i$1 < curList.length; i$1++) { if (prevList.indexOf(curList[i$1]) == -1)\n { dom.classList.add(curList[i$1]); } }\n }\n if (prev.style != cur.style) {\n if (prev.style) {\n var prop = /\\s*([\\w\\-\\xa1-\\uffff]+)\\s*:(?:\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|\\(.*?\\)|[^;])*/g, m;\n while (m = prop.exec(prev.style))\n { dom.style.removeProperty(m[1]); }\n }\n if (cur.style)\n { dom.style.cssText += cur.style; }\n }\n}\n\nfunction applyOuterDeco(dom, deco, node) {\n return patchOuterDeco(dom, dom, noDeco, computeOuterDeco(deco, node, dom.nodeType != 1))\n}\n\n// : ([Decoration], [Decoration]) → bool\nfunction sameOuterDeco(a, b) {\n if (a.length != b.length) { return false }\n for (var i = 0; i < a.length; i++) { if (!a[i].type.eq(b[i].type)) { return false } }\n return true\n}\n\n// Remove a DOM node and return its next sibling.\nfunction rm(dom) {\n var next = dom.nextSibling;\n dom.parentNode.removeChild(dom);\n return next\n}\n\n// Helper class for incrementally updating a tree of mark descs and\n// the widget and node descs inside of them.\nvar ViewTreeUpdater = function ViewTreeUpdater(top, lockedNode) {\n this.top = top;\n this.lock = lockedNode;\n // Index into `this.top`'s child array, represents the current\n // update position.\n this.index = 0;\n // When entering a mark, the current top and index are pushed\n // onto this.\n this.stack = [];\n // Tracks whether anything was changed\n this.changed = false;\n\n var pre = preMatch(top.node.content, top.children);\n this.preMatched = pre.nodes;\n this.preMatchOffset = pre.offset;\n};\n\nViewTreeUpdater.prototype.getPreMatch = function getPreMatch (index) {\n return index >= this.preMatchOffset ? this.preMatched[index - this.preMatchOffset] : null\n};\n\n// Destroy and remove the children between the given indices in\n// `this.top`.\nViewTreeUpdater.prototype.destroyBetween = function destroyBetween (start, end) {\n if (start == end) { return }\n for (var i = start; i < end; i++) { this.top.children[i].destroy(); }\n this.top.children.splice(start, end - start);\n this.changed = true;\n};\n\n// Destroy all remaining children in `this.top`.\nViewTreeUpdater.prototype.destroyRest = function destroyRest () {\n this.destroyBetween(this.index, this.top.children.length);\n};\n\n// : ([Mark], EditorView)\n// Sync the current stack of mark descs with the given array of\n// marks, reusing existing mark descs when possible.\nViewTreeUpdater.prototype.syncToMarks = function syncToMarks (marks, inline, view) {\n var keep = 0, depth = this.stack.length >> 1;\n var maxKeep = Math.min(depth, marks.length);\n while (keep < maxKeep &&\n (keep == depth - 1 ? this.top : this.stack[(keep + 1) << 1]).matchesMark(marks[keep]) && marks[keep].type.spec.spanning !== false)\n { keep++; }\n\n while (keep < depth) {\n this.destroyRest();\n this.top.dirty = NOT_DIRTY;\n this.index = this.stack.pop();\n this.top = this.stack.pop();\n depth--;\n }\n while (depth < marks.length) {\n this.stack.push(this.top, this.index + 1);\n var found = -1;\n for (var i = this.index; i < Math.min(this.index + 3, this.top.children.length); i++) {\n if (this.top.children[i].matchesMark(marks[depth])) { found = i; break }\n }\n if (found > -1) {\n if (found > this.index) {\n this.changed = true;\n this.destroyBetween(this.index, found);\n }\n this.top = this.top.children[this.index];\n } else {\n var markDesc = MarkViewDesc.create(this.top, marks[depth], inline, view);\n this.top.children.splice(this.index, 0, markDesc);\n this.top = markDesc;\n this.changed = true;\n }\n this.index = 0;\n depth++;\n }\n};\n\n// : (Node, [Decoration], DecorationSet) → bool\n// Try to find a node desc matching the given data. Skip over it and\n// return true when successful.\nViewTreeUpdater.prototype.findNodeMatch = function findNodeMatch (node, outerDeco, innerDeco, index) {\n var found = -1, preMatch = index < 0 ? undefined : this.getPreMatch(index), children = this.top.children;\n if (preMatch && preMatch.matchesNode(node, outerDeco, innerDeco)) {\n found = children.indexOf(preMatch);\n } else {\n for (var i = this.index, e = Math.min(children.length, i + 5); i < e; i++) {\n var child = children[i];\n if (child.matchesNode(node, outerDeco, innerDeco) && this.preMatched.indexOf(child) < 0) {\n found = i;\n break\n }\n }\n }\n if (found < 0) { return false }\n this.destroyBetween(this.index, found);\n this.index++;\n return true\n};\n\n// : (Node, [Decoration], DecorationSet, EditorView, Fragment, number) → bool\n// Try to update the next node, if any, to the given data. Checks\n// pre-matches to avoid overwriting nodes that could still be used.\nViewTreeUpdater.prototype.updateNextNode = function updateNextNode (node, outerDeco, innerDeco, view, index) {\n for (var i = this.index; i < this.top.children.length; i++) {\n var next = this.top.children[i];\n if (next instanceof NodeViewDesc) {\n var preMatch = this.preMatched.indexOf(next);\n if (preMatch > -1 && preMatch + this.preMatchOffset != index) { return false }\n var nextDOM = next.dom;\n\n // Can't update if nextDOM is or contains this.lock, except if\n // it's a text node whose content already matches the new text\n // and whose decorations match the new ones.\n var locked = this.lock && (nextDOM == this.lock || nextDOM.nodeType == 1 && nextDOM.contains(this.lock.parentNode)) &&\n !(node.isText && next.node && next.node.isText && next.nodeDOM.nodeValue == node.text &&\n next.dirty != NODE_DIRTY && sameOuterDeco(outerDeco, next.outerDeco));\n if (!locked && next.update(node, outerDeco, innerDeco, view)) {\n this.destroyBetween(this.index, i);\n if (next.dom != nextDOM) { this.changed = true; }\n this.index++;\n return true\n }\n break\n }\n }\n return false\n};\n\n// : (Node, [Decoration], DecorationSet, EditorView)\n// Insert the node as a newly created node desc.\nViewTreeUpdater.prototype.addNode = function addNode (node, outerDeco, innerDeco, view, pos) {\n this.top.children.splice(this.index++, 0, NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos));\n this.changed = true;\n};\n\nViewTreeUpdater.prototype.placeWidget = function placeWidget (widget, view, pos) {\n var next = this.index < this.top.children.length ? this.top.children[this.index] : null;\n if (next && next.matchesWidget(widget) && (widget == next.widget || !next.widget.type.toDOM.parentNode)) {\n this.index++;\n } else {\n var desc = new WidgetViewDesc(this.top, widget, view, pos);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n};\n\n// Make sure a textblock looks and behaves correctly in\n// contentEditable.\nViewTreeUpdater.prototype.addTextblockHacks = function addTextblockHacks () {\n var lastChild = this.top.children[this.index - 1];\n while (lastChild instanceof MarkViewDesc) { lastChild = lastChild.children[lastChild.children.length - 1]; }\n\n if (!lastChild || // Empty textblock\n !(lastChild instanceof TextViewDesc) ||\n /\\n$/.test(lastChild.node.text)) {\n if (this.index < this.top.children.length && this.top.children[this.index].matchesHack()) {\n this.index++;\n } else {\n var dom = document.createElement(\"br\");\n this.top.children.splice(this.index++, 0, new BRHackViewDesc(this.top, nothing, dom, null));\n this.changed = true;\n }\n }\n};\n\n// : (Fragment, [ViewDesc]) → [ViewDesc]\n// Iterate from the end of the fragment and array of descs to find\n// directly matching ones, in order to avoid overeagerly reusing\n// those for other nodes. Returns an array whose positions correspond\n// to node positions in the fragment, and whose elements are either\n// descs matched to the child at that index, or empty.\nfunction preMatch(frag, descs) {\n var result = [], end = frag.childCount;\n for (var i = descs.length - 1; end > 0 && i >= 0; i--) {\n var desc = descs[i], node = desc.node;\n if (!node) { continue }\n if (node != frag.child(end - 1)) { break }\n result.push(desc);\n --end;\n }\n return {nodes: result.reverse(), offset: end}\n}\n\nfunction compareSide(a, b) { return a.type.side - b.type.side }\n\n// : (ViewDesc, DecorationSet, (Decoration, number), (Node, [Decoration], DecorationSet, number))\n// This function abstracts iterating over the nodes and decorations in\n// a fragment. Calls `onNode` for each node, with its local and child\n// decorations. Splits text nodes when there is a decoration starting\n// or ending inside of them. Calls `onWidget` for each widget.\nfunction iterDeco(parent, deco, onWidget, onNode) {\n var locals = deco.locals(parent), offset = 0;\n // Simple, cheap variant for when there are no local decorations\n if (locals.length == 0) {\n for (var i = 0; i < parent.childCount; i++) {\n var child = parent.child(i);\n onNode(child, locals, deco.forChild(offset, child), i);\n offset += child.nodeSize;\n }\n return\n }\n\n var decoIndex = 0, active = [], restNode = null;\n for (var parentIndex = 0;;) {\n if (decoIndex < locals.length && locals[decoIndex].to == offset) {\n var widget = locals[decoIndex++], widgets = (void 0);\n while (decoIndex < locals.length && locals[decoIndex].to == offset)\n { (widgets || (widgets = [widget])).push(locals[decoIndex++]); }\n if (widgets) {\n widgets.sort(compareSide);\n for (var i$1 = 0; i$1 < widgets.length; i$1++) { onWidget(widgets[i$1], parentIndex, !!restNode); }\n } else {\n onWidget(widget, parentIndex, !!restNode);\n }\n }\n\n var child$1 = (void 0), index = (void 0);\n if (restNode) {\n index = -1;\n child$1 = restNode;\n restNode = null;\n } else if (parentIndex < parent.childCount) {\n index = parentIndex;\n child$1 = parent.child(parentIndex++);\n } else {\n break\n }\n\n for (var i$2 = 0; i$2 < active.length; i$2++) { if (active[i$2].to <= offset) { active.splice(i$2--, 1); } }\n while (decoIndex < locals.length && locals[decoIndex].from <= offset && locals[decoIndex].to > offset)\n { active.push(locals[decoIndex++]); }\n\n var end = offset + child$1.nodeSize;\n if (child$1.isText) {\n var cutAt = end;\n if (decoIndex < locals.length && locals[decoIndex].from < cutAt) { cutAt = locals[decoIndex].from; }\n for (var i$3 = 0; i$3 < active.length; i$3++) { if (active[i$3].to < cutAt) { cutAt = active[i$3].to; } }\n if (cutAt < end) {\n restNode = child$1.cut(cutAt - offset);\n child$1 = child$1.cut(0, cutAt - offset);\n end = cutAt;\n index = -1;\n }\n }\n\n var outerDeco = !active.length ? nothing\n : child$1.isInline && !child$1.isLeaf ? active.filter(function (d) { return !d.inline; })\n : active.slice();\n onNode(child$1, outerDeco, deco.forChild(offset, child$1), index);\n offset = end;\n }\n}\n\n// List markers in Mobile Safari will mysteriously disappear\n// sometimes. This works around that.\nfunction iosHacks(dom) {\n if (dom.nodeName == \"UL\" || dom.nodeName == \"OL\") {\n var oldCSS = dom.style.cssText;\n dom.style.cssText = oldCSS + \"; list-style: square !important\";\n window.getComputedStyle(dom).listStyle;\n dom.style.cssText = oldCSS;\n }\n}\n\nfunction nearbyTextNode(node, offset) {\n for (;;) {\n if (node.nodeType == 3) { return node }\n if (node.nodeType == 1 && offset > 0) {\n if (node.childNodes.length > offset && node.childNodes[offset].nodeType == 3)\n { return node.childNodes[offset] }\n node = node.childNodes[offset - 1];\n offset = nodeSize(node);\n } else if (node.nodeType == 1 && offset < node.childNodes.length) {\n node = node.childNodes[offset];\n offset = 0;\n } else {\n return null\n }\n }\n}\n\n// Find a piece of text in an inline fragment, overlapping from-to\nfunction findTextInFragment(frag, text, from, to) {\n for (var i = 0, pos = 0; i < frag.childCount && pos <= to;) {\n var child = frag.child(i++), childStart = pos;\n pos += child.nodeSize;\n if (!child.isText) { continue }\n var str = child.text;\n while (i < frag.childCount) {\n var next = frag.child(i++);\n pos += next.nodeSize;\n if (!next.isText) { break }\n str += next.text;\n }\n if (pos >= from) {\n var found = str.lastIndexOf(text, to - childStart);\n if (found >= 0 && found + text.length + childStart >= from)\n { return childStart + found }\n }\n }\n return -1\n}\n\n// Replace range from-to in an array of view descs with replacement\n// (may be null to just delete). This goes very much against the grain\n// of the rest of this code, which tends to create nodes with the\n// right shape in one go, rather than messing with them after\n// creation, but is necessary in the composition hack.\nfunction replaceNodes(nodes, from, to, view, replacement) {\n var result = [];\n for (var i = 0, off = 0; i < nodes.length; i++) {\n var child = nodes[i], start = off, end = off += child.size;\n if (start >= to || end <= from) {\n result.push(child);\n } else {\n if (start < from) { result.push(child.slice(0, from - start, view)); }\n if (replacement) {\n result.push(replacement);\n replacement = null;\n }\n if (end > to) { result.push(child.slice(to - start, child.size, view)); }\n }\n }\n return result\n}\n\nfunction selectionFromDOM(view, origin) {\n var domSel = view.root.getSelection(), doc = view.state.doc;\n if (!domSel.focusNode) { return null }\n var nearestDesc = view.docView.nearestDesc(domSel.focusNode), inWidget = nearestDesc && nearestDesc.size == 0;\n var head = view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset);\n if (head < 0) { return null }\n var $head = doc.resolve(head), $anchor, selection;\n if (selectionCollapsed(domSel)) {\n $anchor = $head;\n while (nearestDesc && !nearestDesc.node) { nearestDesc = nearestDesc.parent; }\n if (nearestDesc && nearestDesc.node.isAtom && NodeSelection.isSelectable(nearestDesc.node) && nearestDesc.parent\n && !(nearestDesc.node.isInline && isOnEdge(domSel.focusNode, domSel.focusOffset, nearestDesc.dom))) {\n var pos = nearestDesc.posBefore;\n selection = new NodeSelection(head == pos ? $head : doc.resolve(pos));\n }\n } else {\n var anchor = view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset);\n if (anchor < 0) { return null }\n $anchor = doc.resolve(anchor);\n }\n\n if (!selection) {\n var bias = origin == \"pointer\" || (view.state.selection.head < $head.pos && !inWidget) ? 1 : -1;\n selection = selectionBetween(view, $anchor, $head, bias);\n }\n return selection\n}\n\nfunction selectionToDOM(view, force) {\n var sel = view.state.selection;\n syncNodeSelection(view, sel);\n\n if (view.editable ? !view.hasFocus() :\n !(hasSelection(view) && document.activeElement && document.activeElement.contains(view.dom))) { return }\n\n view.domObserver.disconnectSelection();\n\n if (view.cursorWrapper) {\n selectCursorWrapper(view);\n } else {\n var anchor = sel.anchor;\n var head = sel.head;\n var resetEditableFrom, resetEditableTo;\n if (brokenSelectBetweenUneditable && !(sel instanceof TextSelection)) {\n if (!sel.$from.parent.inlineContent)\n { resetEditableFrom = temporarilyEditableNear(view, sel.from); }\n if (!sel.empty && !sel.$from.parent.inlineContent)\n { resetEditableTo = temporarilyEditableNear(view, sel.to); }\n }\n view.docView.setSelection(anchor, head, view.root, force);\n if (brokenSelectBetweenUneditable) {\n if (resetEditableFrom) { resetEditable(resetEditableFrom); }\n if (resetEditableTo) { resetEditable(resetEditableTo); }\n }\n if (sel.visible) {\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n } else {\n view.dom.classList.add(\"ProseMirror-hideselection\");\n if (\"onselectionchange\" in document) { removeClassOnSelectionChange(view); }\n }\n }\n\n view.domObserver.setCurSelection();\n view.domObserver.connectSelection();\n}\n\n// Kludge to work around Webkit not allowing a selection to start/end\n// between non-editable block nodes. We briefly make something\n// editable, set the selection, then set it uneditable again.\n\nvar brokenSelectBetweenUneditable = result.safari || result.chrome && result.chrome_version < 63;\n\nfunction temporarilyEditableNear(view, pos) {\n var ref = view.docView.domFromPos(pos);\n var node = ref.node;\n var offset = ref.offset;\n var after = offset < node.childNodes.length ? node.childNodes[offset] : null;\n var before = offset ? node.childNodes[offset - 1] : null;\n if (result.safari && after && after.contentEditable == \"false\") { return setEditable(after) }\n if ((!after || after.contentEditable == \"false\") && (!before || before.contentEditable == \"false\")) {\n if (after) { return setEditable(after) }\n else if (before) { return setEditable(before) }\n }\n}\n\nfunction setEditable(element) {\n element.contentEditable = \"true\";\n if (result.safari && element.draggable) { element.draggable = false; element.wasDraggable = true; }\n return element\n}\n\nfunction resetEditable(element) {\n element.contentEditable = \"false\";\n if (element.wasDraggable) { element.draggable = true; element.wasDraggable = null; }\n}\n\nfunction removeClassOnSelectionChange(view) {\n var doc = view.dom.ownerDocument;\n doc.removeEventListener(\"selectionchange\", view.hideSelectionGuard);\n var domSel = view.root.getSelection();\n var node = domSel.anchorNode, offset = domSel.anchorOffset;\n doc.addEventListener(\"selectionchange\", view.hideSelectionGuard = function () {\n if (domSel.anchorNode != node || domSel.anchorOffset != offset) {\n doc.removeEventListener(\"selectionchange\", view.hideSelectionGuard);\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }\n });\n}\n\nfunction selectCursorWrapper(view) {\n var domSel = view.root.getSelection(), range = document.createRange();\n var node = view.cursorWrapper.dom, img = node.nodeName == \"IMG\";\n if (img) { range.setEnd(node.parentNode, domIndex(node) + 1); }\n else { range.setEnd(node, 0); }\n range.collapse(false);\n domSel.removeAllRanges();\n domSel.addRange(range);\n // Kludge to kill 'control selection' in IE11 when selecting an\n // invisible cursor wrapper, since that would result in those weird\n // resize handles and a selection that considers the absolutely\n // positioned wrapper, rather than the root editable node, the\n // focused element.\n if (!img && !view.state.selection.visible && result.ie && result.ie_version <= 11) {\n node.disabled = true;\n node.disabled = false;\n }\n}\n\nfunction syncNodeSelection(view, sel) {\n if (sel instanceof NodeSelection) {\n var desc = view.docView.descAt(sel.from);\n if (desc != view.lastSelectedViewDesc) {\n clearNodeSelection(view);\n if (desc) { desc.selectNode(); }\n view.lastSelectedViewDesc = desc;\n }\n } else {\n clearNodeSelection(view);\n }\n}\n\n// Clear all DOM statefulness of the last node selection.\nfunction clearNodeSelection(view) {\n if (view.lastSelectedViewDesc) {\n if (view.lastSelectedViewDesc.parent)\n { view.lastSelectedViewDesc.deselectNode(); }\n view.lastSelectedViewDesc = null;\n }\n}\n\nfunction selectionBetween(view, $anchor, $head, bias) {\n return view.someProp(\"createSelectionBetween\", function (f) { return f(view, $anchor, $head); })\n || TextSelection.between($anchor, $head, bias)\n}\n\nfunction hasFocusAndSelection(view) {\n if (view.editable && view.root.activeElement != view.dom) { return false }\n return hasSelection(view)\n}\n\nfunction hasSelection(view) {\n var sel = view.root.getSelection();\n if (!sel.anchorNode) { return false }\n try {\n // Firefox will raise 'permission denied' errors when accessing\n // properties of `sel.anchorNode` when it's in a generated CSS\n // element.\n return view.dom.contains(sel.anchorNode.nodeType == 3 ? sel.anchorNode.parentNode : sel.anchorNode) &&\n (view.editable || view.dom.contains(sel.focusNode.nodeType == 3 ? sel.focusNode.parentNode : sel.focusNode))\n } catch(_) {\n return false\n }\n}\n\nfunction anchorInRightPlace(view) {\n var anchorDOM = view.docView.domFromPos(view.state.selection.anchor);\n var domSel = view.root.getSelection();\n return isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset)\n}\n\nfunction moveSelectionBlock(state, dir) {\n var ref = state.selection;\n var $anchor = ref.$anchor;\n var $head = ref.$head;\n var $side = dir > 0 ? $anchor.max($head) : $anchor.min($head);\n var $start = !$side.parent.inlineContent ? $side : $side.depth ? state.doc.resolve(dir > 0 ? $side.after() : $side.before()) : null;\n return $start && Selection.findFrom($start, dir)\n}\n\nfunction apply(view, sel) {\n view.dispatch(view.state.tr.setSelection(sel).scrollIntoView());\n return true\n}\n\nfunction selectHorizontally(view, dir, mods) {\n var sel = view.state.selection;\n if (sel instanceof TextSelection) {\n if (!sel.empty || mods.indexOf(\"s\") > -1) {\n return false\n } else if (view.endOfTextblock(dir > 0 ? \"right\" : \"left\")) {\n var next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection)) { return apply(view, next) }\n return false\n } else if (!(result.mac && mods.indexOf(\"m\") > -1)) {\n var $head = sel.$head, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter, desc;\n if (!node || node.isText) { return false }\n var nodePos = dir < 0 ? $head.pos - node.nodeSize : $head.pos;\n if (!(node.isAtom || (desc = view.docView.descAt(nodePos)) && !desc.contentDOM)) { return false }\n if (NodeSelection.isSelectable(node)) {\n return apply(view, new NodeSelection(dir < 0 ? view.state.doc.resolve($head.pos - node.nodeSize) : $head))\n } else if (result.webkit) {\n // Chrome and Safari will introduce extra pointless cursor\n // positions around inline uneditable nodes, so we have to\n // take over and move the cursor past them (#937)\n return apply(view, new TextSelection(view.state.doc.resolve(dir < 0 ? nodePos : nodePos + node.nodeSize)))\n } else {\n return false\n }\n }\n } else if (sel instanceof NodeSelection && sel.node.isInline) {\n return apply(view, new TextSelection(dir > 0 ? sel.$to : sel.$from))\n } else {\n var next$1 = moveSelectionBlock(view.state, dir);\n if (next$1) { return apply(view, next$1) }\n return false\n }\n}\n\nfunction nodeLen(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length\n}\n\nfunction isIgnorable(dom) {\n var desc = dom.pmViewDesc;\n return desc && desc.size == 0 && (dom.nextSibling || dom.nodeName != \"BR\")\n}\n\n// Make sure the cursor isn't directly after one or more ignored\n// nodes, which will confuse the browser's cursor motion logic.\nfunction skipIgnoredNodesLeft(view) {\n var sel = view.root.getSelection();\n var node = sel.focusNode, offset = sel.focusOffset;\n if (!node) { return }\n var moveNode, moveOffset, force = false;\n // Gecko will do odd things when the selection is directly in front\n // of a non-editable node, so in that case, move it into the next\n // node if possible. Issue prosemirror/prosemirror#832.\n if (result.gecko && node.nodeType == 1 && offset < nodeLen(node) && isIgnorable(node.childNodes[offset])) { force = true; }\n for (;;) {\n if (offset > 0) {\n if (node.nodeType != 1) {\n break\n } else {\n var before = node.childNodes[offset - 1];\n if (isIgnorable(before)) {\n moveNode = node;\n moveOffset = --offset;\n } else if (before.nodeType == 3) {\n node = before;\n offset = node.nodeValue.length;\n } else { break }\n }\n } else if (isBlockNode(node)) {\n break\n } else {\n var prev = node.previousSibling;\n while (prev && isIgnorable(prev)) {\n moveNode = node.parentNode;\n moveOffset = domIndex(prev);\n prev = prev.previousSibling;\n }\n if (!prev) {\n node = node.parentNode;\n if (node == view.dom) { break }\n offset = 0;\n } else {\n node = prev;\n offset = nodeLen(node);\n }\n }\n }\n if (force) { setSelFocus(view, sel, node, offset); }\n else if (moveNode) { setSelFocus(view, sel, moveNode, moveOffset); }\n}\n\n// Make sure the cursor isn't directly before one or more ignored\n// nodes.\nfunction skipIgnoredNodesRight(view) {\n var sel = view.root.getSelection();\n var node = sel.focusNode, offset = sel.focusOffset;\n if (!node) { return }\n var len = nodeLen(node);\n var moveNode, moveOffset;\n for (;;) {\n if (offset < len) {\n if (node.nodeType != 1) { break }\n var after = node.childNodes[offset];\n if (isIgnorable(after)) {\n moveNode = node;\n moveOffset = ++offset;\n }\n else { break }\n } else if (isBlockNode(node)) {\n break\n } else {\n var next = node.nextSibling;\n while (next && isIgnorable(next)) {\n moveNode = next.parentNode;\n moveOffset = domIndex(next) + 1;\n next = next.nextSibling;\n }\n if (!next) {\n node = node.parentNode;\n if (node == view.dom) { break }\n offset = len = 0;\n } else {\n node = next;\n offset = 0;\n len = nodeLen(node);\n }\n }\n }\n if (moveNode) { setSelFocus(view, sel, moveNode, moveOffset); }\n}\n\nfunction isBlockNode(dom) {\n var desc = dom.pmViewDesc;\n return desc && desc.node && desc.node.isBlock\n}\n\nfunction setSelFocus(view, sel, node, offset) {\n if (selectionCollapsed(sel)) {\n var range = document.createRange();\n range.setEnd(node, offset);\n range.setStart(node, offset);\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (sel.extend) {\n sel.extend(node, offset);\n }\n view.domObserver.setCurSelection();\n var state = view.state;\n // If no state update ends up happening, reset the selection.\n setTimeout(function () {\n if (view.state == state) { selectionToDOM(view); }\n }, 50);\n}\n\n// : (EditorState, number)\n// Check whether vertical selection motion would involve node\n// selections. If so, apply it (if not, the result is left to the\n// browser)\nfunction selectVertically(view, dir, mods) {\n var sel = view.state.selection;\n if (sel instanceof TextSelection && !sel.empty || mods.indexOf(\"s\") > -1) { return false }\n if (result.mac && mods.indexOf(\"m\") > -1) { return false }\n var $from = sel.$from;\n var $to = sel.$to;\n\n if (!$from.parent.inlineContent || view.endOfTextblock(dir < 0 ? \"up\" : \"down\")) {\n var next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n { return apply(view, next) }\n }\n if (!$from.parent.inlineContent) {\n var beyond = Selection.findFrom(dir < 0 ? $from : $to, dir);\n return beyond ? apply(view, beyond) : true\n }\n return false\n}\n\nfunction stopNativeHorizontalDelete(view, dir) {\n if (!(view.state.selection instanceof TextSelection)) { return true }\n var ref = view.state.selection;\n var $head = ref.$head;\n var $anchor = ref.$anchor;\n var empty = ref.empty;\n if (!$head.sameParent($anchor)) { return true }\n if (!empty) { return false }\n if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\")) { return true }\n var nextNode = !$head.textOffset && (dir < 0 ? $head.nodeBefore : $head.nodeAfter);\n if (nextNode && !nextNode.isText) {\n var tr = view.state.tr;\n if (dir < 0) { tr.delete($head.pos - nextNode.nodeSize, $head.pos); }\n else { tr.delete($head.pos, $head.pos + nextNode.nodeSize); }\n view.dispatch(tr);\n return true\n }\n return false\n}\n\nfunction switchEditable(view, node, state) {\n view.domObserver.stop();\n node.contentEditable = state;\n view.domObserver.start();\n}\n\n// Issue #867 / #1090 / https://bugs.chromium.org/p/chromium/issues/detail?id=903821\n// In which Safari (and at some point in the past, Chrome) does really\n// wrong things when the down arrow is pressed when the cursor is\n// directly at the start of a textblock and has an uneditable node\n// after it\nfunction safariDownArrowBug(view) {\n if (!result.safari || view.state.selection.$head.parentOffset > 0) { return }\n var ref = view.root.getSelection();\n var focusNode = ref.focusNode;\n var focusOffset = ref.focusOffset;\n if (focusNode && focusNode.nodeType == 1 && focusOffset == 0 &&\n focusNode.firstChild && focusNode.firstChild.contentEditable == \"false\") {\n var child = focusNode.firstChild;\n switchEditable(view, child, true);\n setTimeout(function () { return switchEditable(view, child, false); }, 20);\n }\n}\n\n// A backdrop key mapping used to make sure we always suppress keys\n// that have a dangerous default effect, even if the commands they are\n// bound to return false, and to make sure that cursor-motion keys\n// find a cursor (as opposed to a node selection) when pressed. For\n// cursor-motion keys, the code in the handlers also takes care of\n// block selections.\n\nfunction getMods(event) {\n var result = \"\";\n if (event.ctrlKey) { result += \"c\"; }\n if (event.metaKey) { result += \"m\"; }\n if (event.altKey) { result += \"a\"; }\n if (event.shiftKey) { result += \"s\"; }\n return result\n}\n\nfunction captureKeyDown(view, event) {\n var code = event.keyCode, mods = getMods(event);\n if (code == 8 || (result.mac && code == 72 && mods == \"c\")) { // Backspace, Ctrl-h on Mac\n return stopNativeHorizontalDelete(view, -1) || skipIgnoredNodesLeft(view)\n } else if (code == 46 || (result.mac && code == 68 && mods == \"c\")) { // Delete, Ctrl-d on Mac\n return stopNativeHorizontalDelete(view, 1) || skipIgnoredNodesRight(view)\n } else if (code == 13 || code == 27) { // Enter, Esc\n return true\n } else if (code == 37) { // Left arrow\n return selectHorizontally(view, -1, mods) || skipIgnoredNodesLeft(view)\n } else if (code == 39) { // Right arrow\n return selectHorizontally(view, 1, mods) || skipIgnoredNodesRight(view)\n } else if (code == 38) { // Up arrow\n return selectVertically(view, -1, mods) || skipIgnoredNodesLeft(view)\n } else if (code == 40) { // Down arrow\n return safariDownArrowBug(view) || selectVertically(view, 1, mods) || skipIgnoredNodesRight(view)\n } else if (mods == (result.mac ? \"m\" : \"c\") &&\n (code == 66 || code == 73 || code == 89 || code == 90)) { // Mod-[biyz]\n return true\n }\n return false\n}\n\n// Note that all referencing and parsing is done with the\n// start-of-operation selection and document, since that's the one\n// that the DOM represents. If any changes came in in the meantime,\n// the modification is mapped over those before it is applied, in\n// readDOMChange.\n\nfunction parseBetween(view, from_, to_) {\n var ref = view.docView.parseRange(from_, to_);\n var parent = ref.node;\n var fromOffset = ref.fromOffset;\n var toOffset = ref.toOffset;\n var from = ref.from;\n var to = ref.to;\n\n var domSel = view.root.getSelection(), find = null, anchor = domSel.anchorNode;\n if (anchor && view.dom.contains(anchor.nodeType == 1 ? anchor : anchor.parentNode)) {\n find = [{node: anchor, offset: domSel.anchorOffset}];\n if (!selectionCollapsed(domSel))\n { find.push({node: domSel.focusNode, offset: domSel.focusOffset}); }\n }\n // Work around issue in Chrome where backspacing sometimes replaces\n // the deleted content with a random BR node (issues #799, #831)\n if (result.chrome && view.lastKeyCode === 8) {\n for (var off = toOffset; off > fromOffset; off--) {\n var node = parent.childNodes[off - 1], desc = node.pmViewDesc;\n if (node.nodeType == \"BR\" && !desc) { toOffset = off; break }\n if (!desc || desc.size) { break }\n }\n }\n var startDoc = view.state.doc;\n var parser = view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n var $from = startDoc.resolve(from);\n\n var sel = null, doc = parser.parse(parent, {\n topNode: $from.parent,\n topMatch: $from.parent.contentMatchAt($from.index()),\n topOpen: true,\n from: fromOffset,\n to: toOffset,\n preserveWhitespace: $from.parent.type.spec.code ? \"full\" : true,\n editableContent: true,\n findPositions: find,\n ruleFromNode: ruleFromNode,\n context: $from\n });\n if (find && find[0].pos != null) {\n var anchor$1 = find[0].pos, head = find[1] && find[1].pos;\n if (head == null) { head = anchor$1; }\n sel = {anchor: anchor$1 + from, head: head + from};\n }\n return {doc: doc, sel: sel, from: from, to: to}\n}\n\nfunction ruleFromNode(dom) {\n var desc = dom.pmViewDesc;\n if (desc) {\n return desc.parseRule()\n } else if (dom.nodeName == \"BR\" && dom.parentNode) {\n // Safari replaces the list item or table cell with a BR\n // directly in the list node (?!) if you delete the last\n // character in a list item or table cell (#708, #862)\n if (result.safari && /^(ul|ol)$/i.test(dom.parentNode.nodeName)) {\n var skip = document.createElement(\"div\");\n skip.appendChild(document.createElement(\"li\"));\n return {skip: skip}\n } else if (dom.parentNode.lastChild == dom || result.safari && /^(tr|table)$/i.test(dom.parentNode.nodeName)) {\n return {ignore: true}\n }\n } else if (dom.nodeName == \"IMG\" && dom.getAttribute(\"mark-placeholder\")) {\n return {ignore: true}\n }\n}\n\nfunction readDOMChange(view, from, to, typeOver, addedNodes) {\n if (from < 0) {\n var origin = view.lastSelectionTime > Date.now() - 50 ? view.lastSelectionOrigin : null;\n var newSel = selectionFromDOM(view, origin);\n if (newSel && !view.state.selection.eq(newSel)) {\n var tr$1 = view.state.tr.setSelection(newSel);\n if (origin == \"pointer\") { tr$1.setMeta(\"pointer\", true); }\n else if (origin == \"key\") { tr$1.scrollIntoView(); }\n view.dispatch(tr$1);\n }\n return\n }\n\n var $before = view.state.doc.resolve(from);\n var shared = $before.sharedDepth(to);\n from = $before.before(shared + 1);\n to = view.state.doc.resolve(to).after(shared + 1);\n\n var sel = view.state.selection;\n var parse = parseBetween(view, from, to);\n\n var doc = view.state.doc, compare = doc.slice(parse.from, parse.to);\n var preferredPos, preferredSide;\n // Prefer anchoring to end when Backspace is pressed\n if (view.lastKeyCode === 8 && Date.now() - 100 < view.lastKeyCodeTime) {\n preferredPos = view.state.selection.to;\n preferredSide = \"end\";\n } else {\n preferredPos = view.state.selection.from;\n preferredSide = \"start\";\n }\n view.lastKeyCode = null;\n\n var change = findDiff(compare.content, parse.doc.content, parse.from, preferredPos, preferredSide);\n if (!change) {\n if (typeOver && sel instanceof TextSelection && !sel.empty && sel.$head.sameParent(sel.$anchor) &&\n !view.composing && !(parse.sel && parse.sel.anchor != parse.sel.head)) {\n change = {start: sel.from, endA: sel.to, endB: sel.to};\n } else {\n if (parse.sel) {\n var sel$1 = resolveSelection(view, view.state.doc, parse.sel);\n if (sel$1 && !sel$1.eq(view.state.selection)) { view.dispatch(view.state.tr.setSelection(sel$1)); }\n }\n return\n }\n }\n view.domChangeCount++;\n // Handle the case where overwriting a selection by typing matches\n // the start or end of the selected content, creating a change\n // that's smaller than what was actually overwritten.\n if (view.state.selection.from < view.state.selection.to &&\n change.start == change.endB &&\n view.state.selection instanceof TextSelection) {\n if (change.start > view.state.selection.from && change.start <= view.state.selection.from + 2) {\n change.start = view.state.selection.from;\n } else if (change.endA < view.state.selection.to && change.endA >= view.state.selection.to - 2) {\n change.endB += (view.state.selection.to - change.endA);\n change.endA = view.state.selection.to;\n }\n }\n\n // IE11 will insert a non-breaking space _ahead_ of the space after\n // the cursor space when adding a space before another space. When\n // that happened, adjust the change to cover the space instead.\n if (result.ie && result.ie_version <= 11 && change.endB == change.start + 1 &&\n change.endA == change.start && change.start > parse.from &&\n parse.doc.textBetween(change.start - parse.from - 1, change.start - parse.from + 1) == \" \\u00a0\") {\n change.start--;\n change.endA--;\n change.endB--;\n }\n\n var $from = parse.doc.resolveNoCache(change.start - parse.from);\n var $to = parse.doc.resolveNoCache(change.endB - parse.from);\n var inlineChange = $from.sameParent($to) && $from.parent.inlineContent;\n var nextSel;\n // If this looks like the effect of pressing Enter (or was recorded\n // as being an iOS enter press), just dispatch an Enter key instead.\n if (((result.ios && view.lastIOSEnter > Date.now() - 225 &&\n (!inlineChange || addedNodes.some(function (n) { return n.nodeName == \"DIV\" || n.nodeName == \"P\"; }))) ||\n (!inlineChange && $from.pos < parse.doc.content.size &&\n (nextSel = Selection.findFrom(parse.doc.resolve($from.pos + 1), 1, true)) &&\n nextSel.head == $to.pos)) &&\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); })) {\n view.lastIOSEnter = 0;\n return\n }\n // Same for backspace\n if (view.state.selection.anchor > change.start &&\n looksLikeJoin(doc, change.start, change.endA, $from, $to) &&\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(8, \"Backspace\")); })) {\n if (result.android && result.chrome) { view.domObserver.suppressSelectionUpdates(); } // #820\n return\n }\n\n // This tries to detect Android virtual keyboard\n // enter-and-pick-suggestion action. That sometimes (see issue\n // #1059) first fires a DOM mutation, before moving the selection to\n // the newly created block. And then, because ProseMirror cleans up\n // the DOM selection, it gives up moving the selection entirely,\n // leaving the cursor in the wrong place. When that happens, we drop\n // the new paragraph from the initial change, and fire a simulated\n // enter key afterwards.\n if (result.android && !inlineChange && $from.start() != $to.start() && $to.parentOffset == 0 && $from.depth == $to.depth &&\n parse.sel && parse.sel.anchor == parse.sel.head && parse.sel.head == change.endA) {\n change.endB -= 2;\n $to = parse.doc.resolveNoCache(change.endB - parse.from);\n setTimeout(function () {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n }, 20);\n }\n\n var chFrom = change.start, chTo = change.endA;\n\n var tr, storedMarks, markChange, $from1;\n if (inlineChange) {\n if ($from.pos == $to.pos) { // Deletion\n // IE11 sometimes weirdly moves the DOM selection around after\n // backspacing out the first element in a textblock\n if (result.ie && result.ie_version <= 11 && $from.parentOffset == 0) {\n view.domObserver.suppressSelectionUpdates();\n setTimeout(function () { return selectionToDOM(view); }, 20);\n }\n tr = view.state.tr.delete(chFrom, chTo);\n storedMarks = doc.resolve(change.start).marksAcross(doc.resolve(change.endA));\n } else if ( // Adding or removing a mark\n change.endA == change.endB && ($from1 = doc.resolve(change.start)) &&\n (markChange = isMarkChange($from.parent.content.cut($from.parentOffset, $to.parentOffset),\n $from1.parent.content.cut($from1.parentOffset, change.endA - $from1.start())))\n ) {\n tr = view.state.tr;\n if (markChange.type == \"add\") { tr.addMark(chFrom, chTo, markChange.mark); }\n else { tr.removeMark(chFrom, chTo, markChange.mark); }\n } else if ($from.parent.child($from.index()).isText && $from.index() == $to.index() - ($to.textOffset ? 0 : 1)) {\n // Both positions in the same text node -- simply insert text\n var text = $from.parent.textBetween($from.parentOffset, $to.parentOffset);\n if (view.someProp(\"handleTextInput\", function (f) { return f(view, chFrom, chTo, text); })) { return }\n tr = view.state.tr.insertText(text, chFrom, chTo);\n }\n }\n\n if (!tr)\n { tr = view.state.tr.replace(chFrom, chTo, parse.doc.slice(change.start - parse.from, change.endB - parse.from)); }\n if (parse.sel) {\n var sel$2 = resolveSelection(view, tr.doc, parse.sel);\n // Chrome Android will sometimes, during composition, report the\n // selection in the wrong place. If it looks like that is\n // happening, don't update the selection.\n // Edge just doesn't move the cursor forward when you start typing\n // in an empty block or between br nodes.\n if (sel$2 && !(result.chrome && result.android && view.composing && sel$2.empty &&\n (sel$2.head == chFrom || sel$2.head == tr.mapping.map(chTo) - 1) ||\n result.ie && sel$2.empty && sel$2.head == chFrom))\n { tr.setSelection(sel$2); }\n }\n if (storedMarks) { tr.ensureMarks(storedMarks); }\n view.dispatch(tr.scrollIntoView());\n}\n\nfunction resolveSelection(view, doc, parsedSel) {\n if (Math.max(parsedSel.anchor, parsedSel.head) > doc.content.size) { return null }\n return selectionBetween(view, doc.resolve(parsedSel.anchor), doc.resolve(parsedSel.head))\n}\n\n// : (Fragment, Fragment) → ?{mark: Mark, type: string}\n// Given two same-length, non-empty fragments of inline content,\n// determine whether the first could be created from the second by\n// removing or adding a single mark type.\nfunction isMarkChange(cur, prev) {\n var curMarks = cur.firstChild.marks, prevMarks = prev.firstChild.marks;\n var added = curMarks, removed = prevMarks, type, mark, update;\n for (var i = 0; i < prevMarks.length; i++) { added = prevMarks[i].removeFromSet(added); }\n for (var i$1 = 0; i$1 < curMarks.length; i$1++) { removed = curMarks[i$1].removeFromSet(removed); }\n if (added.length == 1 && removed.length == 0) {\n mark = added[0];\n type = \"add\";\n update = function (node) { return node.mark(mark.addToSet(node.marks)); };\n } else if (added.length == 0 && removed.length == 1) {\n mark = removed[0];\n type = \"remove\";\n update = function (node) { return node.mark(mark.removeFromSet(node.marks)); };\n } else {\n return null\n }\n var updated = [];\n for (var i$2 = 0; i$2 < prev.childCount; i$2++) { updated.push(update(prev.child(i$2))); }\n if (Fragment.from(updated).eq(cur)) { return {mark: mark, type: type} }\n}\n\nfunction looksLikeJoin(old, start, end, $newStart, $newEnd) {\n if (!$newStart.parent.isTextblock ||\n // The content must have shrunk\n end - start <= $newEnd.pos - $newStart.pos ||\n // newEnd must point directly at or after the end of the block that newStart points into\n skipClosingAndOpening($newStart, true, false) < $newEnd.pos)\n { return false }\n\n var $start = old.resolve(start);\n // Start must be at the end of a block\n if ($start.parentOffset < $start.parent.content.size || !$start.parent.isTextblock)\n { return false }\n var $next = old.resolve(skipClosingAndOpening($start, true, true));\n // The next textblock must start before end and end near it\n if (!$next.parent.isTextblock || $next.pos > end ||\n skipClosingAndOpening($next, true, false) < end)\n { return false }\n\n // The fragments after the join point must match\n return $newStart.parent.content.cut($newStart.parentOffset).eq($next.parent.content)\n}\n\nfunction skipClosingAndOpening($pos, fromEnd, mayOpen) {\n var depth = $pos.depth, end = fromEnd ? $pos.end() : $pos.pos;\n while (depth > 0 && (fromEnd || $pos.indexAfter(depth) == $pos.node(depth).childCount)) {\n depth--;\n end++;\n fromEnd = false;\n }\n if (mayOpen) {\n var next = $pos.node(depth).maybeChild($pos.indexAfter(depth));\n while (next && !next.isLeaf) {\n next = next.firstChild;\n end++;\n }\n }\n return end\n}\n\nfunction findDiff(a, b, pos, preferredPos, preferredSide) {\n var start = a.findDiffStart(b, pos);\n if (start == null) { return null }\n var ref = a.findDiffEnd(b, pos + a.size, pos + b.size);\n var endA = ref.a;\n var endB = ref.b;\n if (preferredSide == \"end\") {\n var adjust = Math.max(0, start - Math.min(endA, endB));\n preferredPos -= endA + adjust - start;\n }\n if (endA < start && a.size < b.size) {\n var move = preferredPos <= start && preferredPos >= endA ? start - preferredPos : 0;\n start -= move;\n endB = start + (endB - endA);\n endA = start;\n } else if (endB < start) {\n var move$1 = preferredPos <= start && preferredPos >= endB ? start - preferredPos : 0;\n start -= move$1;\n endA = start + (endA - endB);\n endB = start;\n }\n return {start: start, endA: endA, endB: endB}\n}\n\nfunction serializeForClipboard(view, slice) {\n var context = [];\n var content = slice.content;\n var openStart = slice.openStart;\n var openEnd = slice.openEnd;\n while (openStart > 1 && openEnd > 1 && content.childCount == 1 && content.firstChild.childCount == 1) {\n openStart--;\n openEnd--;\n var node = content.firstChild;\n context.push(node.type.name, node.type.hasRequiredAttrs() ? node.attrs : null);\n content = node.content;\n }\n\n var serializer = view.someProp(\"clipboardSerializer\") || DOMSerializer.fromSchema(view.state.schema);\n var doc = detachedDoc(), wrap = doc.createElement(\"div\");\n wrap.appendChild(serializer.serializeFragment(content, {document: doc}));\n\n var firstChild = wrap.firstChild, needsWrap;\n while (firstChild && firstChild.nodeType == 1 && (needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])) {\n for (var i = needsWrap.length - 1; i >= 0; i--) {\n var wrapper = doc.createElement(needsWrap[i]);\n while (wrap.firstChild) { wrapper.appendChild(wrap.firstChild); }\n wrap.appendChild(wrapper);\n }\n firstChild = wrap.firstChild;\n }\n\n if (firstChild && firstChild.nodeType == 1)\n { firstChild.setAttribute(\"data-pm-slice\", (openStart + \" \" + openEnd + \" \" + (JSON.stringify(context)))); }\n\n var text = view.someProp(\"clipboardTextSerializer\", function (f) { return f(slice); }) ||\n slice.content.textBetween(0, slice.content.size, \"\\n\\n\");\n\n return {dom: wrap, text: text}\n}\n\n// : (EditorView, string, string, ?bool, ResolvedPos) → ?Slice\n// Read a slice of content from the clipboard (or drop data).\nfunction parseFromClipboard(view, text, html, plainText, $context) {\n var dom, inCode = $context.parent.type.spec.code, slice;\n if (!html && !text) { return null }\n var asText = text && (plainText || inCode || !html);\n if (asText) {\n view.someProp(\"transformPastedText\", function (f) { text = f(text, inCode || plainText); });\n if (inCode) { return new Slice(Fragment.from(view.state.schema.text(text)), 0, 0) }\n var parsed = view.someProp(\"clipboardTextParser\", function (f) { return f(text, $context, plainText); });\n if (parsed) {\n slice = parsed;\n } else {\n dom = document.createElement(\"div\");\n text.trim().split(/(?:\\r\\n?|\\n)+/).forEach(function (block) {\n dom.appendChild(document.createElement(\"p\")).textContent = block;\n });\n }\n } else {\n view.someProp(\"transformPastedHTML\", function (f) { html = f(html); });\n dom = readHTML(html);\n }\n\n var contextNode = dom && dom.querySelector(\"[data-pm-slice]\");\n var sliceData = contextNode && /^(\\d+) (\\d+) (.*)/.exec(contextNode.getAttribute(\"data-pm-slice\"));\n if (!slice) {\n var parser = view.someProp(\"clipboardParser\") || view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n slice = parser.parseSlice(dom, {preserveWhitespace: !!(asText || sliceData), context: $context});\n }\n if (sliceData)\n { slice = addContext(closeSlice(slice, +sliceData[1], +sliceData[2]), sliceData[3]); }\n else // HTML wasn't created by ProseMirror. Make sure top-level siblings are coherent\n { slice = Slice.maxOpen(normalizeSiblings(slice.content, $context), false); }\n\n view.someProp(\"transformPasted\", function (f) { slice = f(slice); });\n return slice\n}\n\n// Takes a slice parsed with parseSlice, which means there hasn't been\n// any content-expression checking done on the top nodes, tries to\n// find a parent node in the current context that might fit the nodes,\n// and if successful, rebuilds the slice so that it fits into that parent.\n//\n// This addresses the problem that Transform.replace expects a\n// coherent slice, and will fail to place a set of siblings that don't\n// fit anywhere in the schema.\nfunction normalizeSiblings(fragment, $context) {\n if (fragment.childCount < 2) { return fragment }\n var loop = function ( d ) {\n var parent = $context.node(d);\n var match = parent.contentMatchAt($context.index(d));\n var lastWrap = (void 0), result = [];\n fragment.forEach(function (node) {\n if (!result) { return }\n var wrap = match.findWrapping(node.type), inLast;\n if (!wrap) { return result = null }\n if (inLast = result.length && lastWrap.length && addToSibling(wrap, lastWrap, node, result[result.length - 1], 0)) {\n result[result.length - 1] = inLast;\n } else {\n if (result.length) { result[result.length - 1] = closeRight(result[result.length - 1], lastWrap.length); }\n var wrapped = withWrappers(node, wrap);\n result.push(wrapped);\n match = match.matchType(wrapped.type, wrapped.attrs);\n lastWrap = wrap;\n }\n });\n if (result) { return { v: Fragment.from(result) } }\n };\n\n for (var d = $context.depth; d >= 0; d--) {\n var returned = loop( d );\n\n if ( returned ) return returned.v;\n }\n return fragment\n}\n\nfunction withWrappers(node, wrap, from) {\n if ( from === void 0 ) from = 0;\n\n for (var i = wrap.length - 1; i >= from; i--)\n { node = wrap[i].create(null, Fragment.from(node)); }\n return node\n}\n\n// Used to group adjacent nodes wrapped in similar parents by\n// normalizeSiblings into the same parent node\nfunction addToSibling(wrap, lastWrap, node, sibling, depth) {\n if (depth < wrap.length && depth < lastWrap.length && wrap[depth] == lastWrap[depth]) {\n var inner = addToSibling(wrap, lastWrap, node, sibling.lastChild, depth + 1);\n if (inner) { return sibling.copy(sibling.content.replaceChild(sibling.childCount - 1, inner)) }\n var match = sibling.contentMatchAt(sibling.childCount);\n if (match.matchType(depth == wrap.length - 1 ? node.type : wrap[depth + 1]))\n { return sibling.copy(sibling.content.append(Fragment.from(withWrappers(node, wrap, depth + 1)))) }\n }\n}\n\nfunction closeRight(node, depth) {\n if (depth == 0) { return node }\n var fragment = node.content.replaceChild(node.childCount - 1, closeRight(node.lastChild, depth - 1));\n var fill = node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true);\n return node.copy(fragment.append(fill))\n}\n\nfunction closeRange(fragment, side, from, to, depth, openEnd) {\n var node = side < 0 ? fragment.firstChild : fragment.lastChild, inner = node.content;\n if (depth < to - 1) { inner = closeRange(inner, side, from, to, depth + 1, openEnd); }\n if (depth >= from)\n { inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, fragment.childCount > 1 || openEnd <= depth).append(inner)\n : inner.append(node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true)); }\n return fragment.replaceChild(side < 0 ? 0 : fragment.childCount - 1, node.copy(inner))\n}\n\nfunction closeSlice(slice, openStart, openEnd) {\n if (openStart < slice.openStart)\n { slice = new Slice(closeRange(slice.content, -1, openStart, slice.openStart, 0, slice.openEnd), openStart, slice.openEnd); }\n if (openEnd < slice.openEnd)\n { slice = new Slice(closeRange(slice.content, 1, openEnd, slice.openEnd, 0, 0), slice.openStart, openEnd); }\n return slice\n}\n\n// Trick from jQuery -- some elements must be wrapped in other\n// elements for innerHTML to work. I.e. if you do `div.innerHTML =\n// \"..\"` the table cells are ignored.\nvar wrapMap = {\n thead: [\"table\"],\n tbody: [\"table\"],\n tfoot: [\"table\"],\n caption: [\"table\"],\n colgroup: [\"table\"],\n col: [\"table\", \"colgroup\"],\n tr: [\"table\", \"tbody\"],\n td: [\"table\", \"tbody\", \"tr\"],\n th: [\"table\", \"tbody\", \"tr\"]\n};\n\nvar _detachedDoc = null;\nfunction detachedDoc() {\n return _detachedDoc || (_detachedDoc = document.implementation.createHTMLDocument(\"title\"))\n}\n\nfunction readHTML(html) {\n var metas = /(\\s*]*>)*/.exec(html);\n if (metas) { html = html.slice(metas[0].length); }\n var elt = detachedDoc().createElement(\"div\");\n var firstTag = /(?:]*>)*<([a-z][^>\\s]+)/i.exec(html), wrap, depth = 0;\n if (wrap = firstTag && wrapMap[firstTag[1].toLowerCase()]) {\n html = wrap.map(function (n) { return \"<\" + n + \">\"; }).join(\"\") + html + wrap.map(function (n) { return \"\"; }).reverse().join(\"\");\n depth = wrap.length;\n }\n elt.innerHTML = html;\n for (var i = 0; i < depth; i++) { elt = elt.firstChild; }\n return elt\n}\n\nfunction addContext(slice, context) {\n if (!slice.size) { return slice }\n var schema = slice.content.firstChild.type.schema, array;\n try { array = JSON.parse(context); }\n catch(e) { return slice }\n var content = slice.content;\n var openStart = slice.openStart;\n var openEnd = slice.openEnd;\n for (var i = array.length - 2; i >= 0; i -= 2) {\n var type = schema.nodes[array[i]];\n if (!type || type.hasRequiredAttrs()) { break }\n content = Fragment.from(type.create(array[i + 1], content));\n openStart++; openEnd++;\n }\n return new Slice(content, openStart, openEnd)\n}\n\nvar observeOptions = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n attributes: true,\n attributeOldValue: true,\n subtree: true\n};\n// IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\nvar useCharData = result.ie && result.ie_version <= 11;\n\nvar SelectionState = function SelectionState() {\n this.anchorNode = this.anchorOffset = this.focusNode = this.focusOffset = null;\n};\n\nSelectionState.prototype.set = function set (sel) {\n this.anchorNode = sel.anchorNode; this.anchorOffset = sel.anchorOffset;\n this.focusNode = sel.focusNode; this.focusOffset = sel.focusOffset;\n};\n\nSelectionState.prototype.eq = function eq (sel) {\n return sel.anchorNode == this.anchorNode && sel.anchorOffset == this.anchorOffset &&\n sel.focusNode == this.focusNode && sel.focusOffset == this.focusOffset\n};\n\nvar DOMObserver = function DOMObserver(view, handleDOMChange) {\n var this$1 = this;\n\n this.view = view;\n this.handleDOMChange = handleDOMChange;\n this.queue = [];\n this.flushingSoon = -1;\n this.observer = window.MutationObserver &&\n new window.MutationObserver(function (mutations) {\n for (var i = 0; i < mutations.length; i++) { this$1.queue.push(mutations[i]); }\n // IE11 will sometimes (on backspacing out a single character\n // text node after a BR node) call the observer callback\n // before actually updating the DOM, which will cause\n // ProseMirror to miss the change (see #930)\n if (result.ie && result.ie_version <= 11 && mutations.some(\n function (m) { return m.type == \"childList\" && m.removedNodes.length ||\n m.type == \"characterData\" && m.oldValue.length > m.target.nodeValue.length; }))\n { this$1.flushSoon(); }\n else\n { this$1.flush(); }\n });\n this.currentSelection = new SelectionState;\n if (useCharData) {\n this.onCharData = function (e) {\n this$1.queue.push({target: e.target, type: \"characterData\", oldValue: e.prevValue});\n this$1.flushSoon();\n };\n }\n this.onSelectionChange = this.onSelectionChange.bind(this);\n this.suppressingSelectionUpdates = false;\n};\n\nDOMObserver.prototype.flushSoon = function flushSoon () {\n var this$1 = this;\n\n if (this.flushingSoon < 0)\n { this.flushingSoon = window.setTimeout(function () { this$1.flushingSoon = -1; this$1.flush(); }, 20); }\n};\n\nDOMObserver.prototype.forceFlush = function forceFlush () {\n if (this.flushingSoon > -1) {\n window.clearTimeout(this.flushingSoon);\n this.flushingSoon = -1;\n this.flush();\n }\n};\n\nDOMObserver.prototype.start = function start () {\n if (this.observer)\n { this.observer.observe(this.view.dom, observeOptions); }\n if (useCharData)\n { this.view.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData); }\n this.connectSelection();\n};\n\nDOMObserver.prototype.stop = function stop () {\n var this$1 = this;\n\n if (this.observer) {\n var take = this.observer.takeRecords();\n if (take.length) {\n for (var i = 0; i < take.length; i++) { this.queue.push(take[i]); }\n window.setTimeout(function () { return this$1.flush(); }, 20);\n }\n this.observer.disconnect();\n }\n if (useCharData) { this.view.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData); }\n this.disconnectSelection();\n};\n\nDOMObserver.prototype.connectSelection = function connectSelection () {\n this.view.dom.ownerDocument.addEventListener(\"selectionchange\", this.onSelectionChange);\n};\n\nDOMObserver.prototype.disconnectSelection = function disconnectSelection () {\n this.view.dom.ownerDocument.removeEventListener(\"selectionchange\", this.onSelectionChange);\n};\n\nDOMObserver.prototype.suppressSelectionUpdates = function suppressSelectionUpdates () {\n var this$1 = this;\n\n this.suppressingSelectionUpdates = true;\n setTimeout(function () { return this$1.suppressingSelectionUpdates = false; }, 50);\n};\n\nDOMObserver.prototype.onSelectionChange = function onSelectionChange () {\n if (!hasFocusAndSelection(this.view)) { return }\n if (this.suppressingSelectionUpdates) { return selectionToDOM(this.view) }\n // Deletions on IE11 fire their events in the wrong order, giving\n // us a selection change event before the DOM changes are\n // reported.\n if (result.ie && result.ie_version <= 11 && !this.view.state.selection.empty) {\n var sel = this.view.root.getSelection();\n // Selection.isCollapsed isn't reliable on IE\n if (sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset))\n { return this.flushSoon() }\n }\n this.flush();\n};\n\nDOMObserver.prototype.setCurSelection = function setCurSelection () {\n this.currentSelection.set(this.view.root.getSelection());\n};\n\nDOMObserver.prototype.ignoreSelectionChange = function ignoreSelectionChange (sel) {\n if (sel.rangeCount == 0) { return true }\n var container = sel.getRangeAt(0).commonAncestorContainer;\n var desc = this.view.docView.nearestDesc(container);\n if (desc && desc.ignoreMutation({type: \"selection\", target: container.nodeType == 3 ? container.parentNode : container})) {\n this.setCurSelection();\n return true\n }\n};\n\nDOMObserver.prototype.flush = function flush () {\n if (!this.view.docView || this.flushingSoon > -1) { return }\n var mutations = this.observer ? this.observer.takeRecords() : [];\n if (this.queue.length) {\n mutations = this.queue.concat(mutations);\n this.queue.length = 0;\n }\n\n var sel = this.view.root.getSelection();\n var newSel = !this.suppressingSelectionUpdates && !this.currentSelection.eq(sel) && hasSelection(this.view) && !this.ignoreSelectionChange(sel);\n\n var from = -1, to = -1, typeOver = false, added = [];\n if (this.view.editable) {\n for (var i = 0; i < mutations.length; i++) {\n var result$1 = this.registerMutation(mutations[i], added);\n if (result$1) {\n from = from < 0 ? result$1.from : Math.min(result$1.from, from);\n to = to < 0 ? result$1.to : Math.max(result$1.to, to);\n if (result$1.typeOver) { typeOver = true; }\n }\n }\n }\n\n if (result.gecko && added.length > 1) {\n var brs = added.filter(function (n) { return n.nodeName == \"BR\"; });\n if (brs.length == 2) {\n var a = brs[0];\n var b = brs[1];\n if (a.parentNode && a.parentNode.parentNode == b.parentNode) { b.remove(); }\n else { a.remove(); }\n }\n }\n\n if (from > -1 || newSel) {\n if (from > -1) {\n this.view.docView.markDirty(from, to);\n checkCSS(this.view);\n }\n this.handleDOMChange(from, to, typeOver, added);\n if (this.view.docView.dirty) { this.view.updateState(this.view.state); }\n else if (!this.currentSelection.eq(sel)) { selectionToDOM(this.view); }\n }\n};\n\nDOMObserver.prototype.registerMutation = function registerMutation (mut, added) {\n // Ignore mutations inside nodes that were already noted as inserted\n if (added.indexOf(mut.target) > -1) { return null }\n var desc = this.view.docView.nearestDesc(mut.target);\n if (mut.type == \"attributes\" &&\n (desc == this.view.docView || mut.attributeName == \"contenteditable\" ||\n // Firefox sometimes fires spurious events for null/empty styles\n (mut.attributeName == \"style\" && !mut.oldValue && !mut.target.getAttribute(\"style\"))))\n { return null }\n if (!desc || desc.ignoreMutation(mut)) { return null }\n\n if (mut.type == \"childList\") {\n var prev = mut.previousSibling, next = mut.nextSibling;\n if (result.ie && result.ie_version <= 11 && mut.addedNodes.length) {\n // IE11 gives us incorrect next/prev siblings for some\n // insertions, so if there are added nodes, recompute those\n for (var i = 0; i < mut.addedNodes.length; i++) {\n var ref = mut.addedNodes[i];\n var previousSibling = ref.previousSibling;\n var nextSibling = ref.nextSibling;\n if (!previousSibling || Array.prototype.indexOf.call(mut.addedNodes, previousSibling) < 0) { prev = previousSibling; }\n if (!nextSibling || Array.prototype.indexOf.call(mut.addedNodes, nextSibling) < 0) { next = nextSibling; }\n }\n }\n var fromOffset = prev && prev.parentNode == mut.target\n ? domIndex(prev) + 1 : 0;\n var from = desc.localPosFromDOM(mut.target, fromOffset, -1);\n var toOffset = next && next.parentNode == mut.target\n ? domIndex(next) : mut.target.childNodes.length;\n for (var i$1 = 0; i$1 < mut.addedNodes.length; i$1++) { added.push(mut.addedNodes[i$1]); }\n var to = desc.localPosFromDOM(mut.target, toOffset, 1);\n return {from: from, to: to}\n } else if (mut.type == \"attributes\") {\n return {from: desc.posAtStart - desc.border, to: desc.posAtEnd + desc.border}\n } else { // \"characterData\"\n return {\n from: desc.posAtStart,\n to: desc.posAtEnd,\n // An event was generated for a text change that didn't change\n // any text. Mark the dom change to fall back to assuming the\n // selection was typed over with an identical value if it can't\n // find another change.\n typeOver: mut.target.nodeValue == mut.oldValue\n }\n }\n};\n\nvar cssChecked = false;\n\nfunction checkCSS(view) {\n if (cssChecked) { return }\n cssChecked = true;\n if (getComputedStyle(view.dom).whiteSpace == \"normal\")\n { console[\"warn\"](\"ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.\"); }\n}\n\n// A collection of DOM events that occur within the editor, and callback functions\n// to invoke when the event fires.\nvar handlers = {}, editHandlers = {};\n\nfunction initInput(view) {\n view.shiftKey = false;\n view.mouseDown = null;\n view.lastKeyCode = null;\n view.lastKeyCodeTime = 0;\n view.lastClick = {time: 0, x: 0, y: 0, type: \"\"};\n view.lastSelectionOrigin = null;\n view.lastSelectionTime = 0;\n\n view.lastIOSEnter = 0;\n view.lastIOSEnterFallbackTimeout = null;\n\n view.composing = false;\n view.composingTimeout = null;\n view.compositionNodes = [];\n view.compositionEndedAt = -2e8;\n\n view.domObserver = new DOMObserver(view, function (from, to, typeOver, added) { return readDOMChange(view, from, to, typeOver, added); });\n view.domObserver.start();\n // Used by hacks like the beforeinput handler to check whether anything happened in the DOM\n view.domChangeCount = 0;\n\n view.eventHandlers = Object.create(null);\n var loop = function ( event ) {\n var handler = handlers[event];\n view.dom.addEventListener(event, view.eventHandlers[event] = function (event) {\n if (eventBelongsToView(view, event) && !runCustomHandler(view, event) &&\n (view.editable || !(event.type in editHandlers)))\n { handler(view, event); }\n });\n };\n\n for (var event in handlers) loop( event );\n // On Safari, for reasons beyond my understanding, adding an input\n // event handler makes an issue where the composition vanishes when\n // you press enter go away.\n if (result.safari) { view.dom.addEventListener(\"input\", function () { return null; }); }\n\n ensureListeners(view);\n}\n\nfunction setSelectionOrigin(view, origin) {\n view.lastSelectionOrigin = origin;\n view.lastSelectionTime = Date.now();\n}\n\nfunction destroyInput(view) {\n view.domObserver.stop();\n for (var type in view.eventHandlers)\n { view.dom.removeEventListener(type, view.eventHandlers[type]); }\n clearTimeout(view.composingTimeout);\n clearTimeout(view.lastIOSEnterFallbackTimeout);\n}\n\nfunction ensureListeners(view) {\n view.someProp(\"handleDOMEvents\", function (currentHandlers) {\n for (var type in currentHandlers) { if (!view.eventHandlers[type])\n { view.dom.addEventListener(type, view.eventHandlers[type] = function (event) { return runCustomHandler(view, event); }); } }\n });\n}\n\nfunction runCustomHandler(view, event) {\n return view.someProp(\"handleDOMEvents\", function (handlers) {\n var handler = handlers[event.type];\n return handler ? handler(view, event) || event.defaultPrevented : false\n })\n}\n\nfunction eventBelongsToView(view, event) {\n if (!event.bubbles) { return true }\n if (event.defaultPrevented) { return false }\n for (var node = event.target; node != view.dom; node = node.parentNode)\n { if (!node || node.nodeType == 11 ||\n (node.pmViewDesc && node.pmViewDesc.stopEvent(event)))\n { return false } }\n return true\n}\n\nfunction dispatchEvent(view, event) {\n if (!runCustomHandler(view, event) && handlers[event.type] &&\n (view.editable || !(event.type in editHandlers)))\n { handlers[event.type](view, event); }\n}\n\neditHandlers.keydown = function (view, event) {\n view.shiftKey = event.keyCode == 16 || event.shiftKey;\n if (inOrNearComposition(view, event)) { return }\n view.domObserver.forceFlush();\n view.lastKeyCode = event.keyCode;\n view.lastKeyCodeTime = Date.now();\n // On iOS, if we preventDefault enter key presses, the virtual\n // keyboard gets confused. So the hack here is to set a flag that\n // makes the DOM change code recognize that what just happens should\n // be replaced by whatever the Enter key handlers do.\n if (result.ios && event.keyCode == 13 && !event.ctrlKey && !event.altKey && !event.metaKey) {\n var now = Date.now();\n view.lastIOSEnter = now;\n view.lastIOSEnterFallbackTimeout = setTimeout(function () {\n if (view.lastIOSEnter == now) {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n view.lastIOSEnter = 0;\n }\n }, 200);\n } else if (view.someProp(\"handleKeyDown\", function (f) { return f(view, event); }) || captureKeyDown(view, event)) {\n event.preventDefault();\n } else {\n setSelectionOrigin(view, \"key\");\n }\n};\n\neditHandlers.keyup = function (view, e) {\n if (e.keyCode == 16) { view.shiftKey = false; }\n};\n\neditHandlers.keypress = function (view, event) {\n if (inOrNearComposition(view, event) || !event.charCode ||\n event.ctrlKey && !event.altKey || result.mac && event.metaKey) { return }\n\n if (view.someProp(\"handleKeyPress\", function (f) { return f(view, event); })) {\n event.preventDefault();\n return\n }\n\n var sel = view.state.selection;\n if (!(sel instanceof TextSelection) || !sel.$from.sameParent(sel.$to)) {\n var text = String.fromCharCode(event.charCode);\n if (!view.someProp(\"handleTextInput\", function (f) { return f(view, sel.$from.pos, sel.$to.pos, text); }))\n { view.dispatch(view.state.tr.insertText(text).scrollIntoView()); }\n event.preventDefault();\n }\n};\n\nfunction eventCoords(event) { return {left: event.clientX, top: event.clientY} }\n\nfunction isNear(event, click) {\n var dx = click.x - event.clientX, dy = click.y - event.clientY;\n return dx * dx + dy * dy < 100\n}\n\nfunction runHandlerOnContext(view, propName, pos, inside, event) {\n if (inside == -1) { return false }\n var $pos = view.state.doc.resolve(inside);\n var loop = function ( i ) {\n if (view.someProp(propName, function (f) { return i > $pos.depth ? f(view, pos, $pos.nodeAfter, $pos.before(i), event, true)\n : f(view, pos, $pos.node(i), $pos.before(i), event, false); }))\n { return { v: true } }\n };\n\n for (var i = $pos.depth + 1; i > 0; i--) {\n var returned = loop( i );\n\n if ( returned ) return returned.v;\n }\n return false\n}\n\nfunction updateSelection(view, selection, origin) {\n if (!view.focused) { view.focus(); }\n var tr = view.state.tr.setSelection(selection);\n if (origin == \"pointer\") { tr.setMeta(\"pointer\", true); }\n view.dispatch(tr);\n}\n\nfunction selectClickedLeaf(view, inside) {\n if (inside == -1) { return false }\n var $pos = view.state.doc.resolve(inside), node = $pos.nodeAfter;\n if (node && node.isAtom && NodeSelection.isSelectable(node)) {\n updateSelection(view, new NodeSelection($pos), \"pointer\");\n return true\n }\n return false\n}\n\nfunction selectClickedNode(view, inside) {\n if (inside == -1) { return false }\n var sel = view.state.selection, selectedNode, selectAt;\n if (sel instanceof NodeSelection) { selectedNode = sel.node; }\n\n var $pos = view.state.doc.resolve(inside);\n for (var i = $pos.depth + 1; i > 0; i--) {\n var node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n if (NodeSelection.isSelectable(node)) {\n if (selectedNode && sel.$from.depth > 0 &&\n i >= sel.$from.depth && $pos.before(sel.$from.depth + 1) == sel.$from.pos)\n { selectAt = $pos.before(sel.$from.depth); }\n else\n { selectAt = $pos.before(i); }\n break\n }\n }\n\n if (selectAt != null) {\n updateSelection(view, NodeSelection.create(view.state.doc, selectAt), \"pointer\");\n return true\n } else {\n return false\n }\n}\n\nfunction handleSingleClick(view, pos, inside, event, selectNode) {\n return runHandlerOnContext(view, \"handleClickOn\", pos, inside, event) ||\n view.someProp(\"handleClick\", function (f) { return f(view, pos, event); }) ||\n (selectNode ? selectClickedNode(view, inside) : selectClickedLeaf(view, inside))\n}\n\nfunction handleDoubleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleDoubleClickOn\", pos, inside, event) ||\n view.someProp(\"handleDoubleClick\", function (f) { return f(view, pos, event); })\n}\n\nfunction handleTripleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleTripleClickOn\", pos, inside, event) ||\n view.someProp(\"handleTripleClick\", function (f) { return f(view, pos, event); }) ||\n defaultTripleClick(view, inside)\n}\n\nfunction defaultTripleClick(view, inside) {\n var doc = view.state.doc;\n if (inside == -1) {\n if (doc.inlineContent) {\n updateSelection(view, TextSelection.create(doc, 0, doc.content.size), \"pointer\");\n return true\n }\n return false\n }\n\n var $pos = doc.resolve(inside);\n for (var i = $pos.depth + 1; i > 0; i--) {\n var node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n var nodePos = $pos.before(i);\n if (node.inlineContent)\n { updateSelection(view, TextSelection.create(doc, nodePos + 1, nodePos + 1 + node.content.size), \"pointer\"); }\n else if (NodeSelection.isSelectable(node))\n { updateSelection(view, NodeSelection.create(doc, nodePos), \"pointer\"); }\n else\n { continue }\n return true\n }\n}\n\nfunction forceDOMFlush(view) {\n return endComposition(view)\n}\n\nvar selectNodeModifier = result.mac ? \"metaKey\" : \"ctrlKey\";\n\nhandlers.mousedown = function (view, event) {\n view.shiftKey = event.shiftKey;\n var flushed = forceDOMFlush(view);\n var now = Date.now(), type = \"singleClick\";\n if (now - view.lastClick.time < 500 && isNear(event, view.lastClick) && !event[selectNodeModifier]) {\n if (view.lastClick.type == \"singleClick\") { type = \"doubleClick\"; }\n else if (view.lastClick.type == \"doubleClick\") { type = \"tripleClick\"; }\n }\n view.lastClick = {time: now, x: event.clientX, y: event.clientY, type: type};\n\n var pos = view.posAtCoords(eventCoords(event));\n if (!pos) { return }\n\n if (type == \"singleClick\")\n { view.mouseDown = new MouseDown(view, pos, event, flushed); }\n else if ((type == \"doubleClick\" ? handleDoubleClick : handleTripleClick)(view, pos.pos, pos.inside, event))\n { event.preventDefault(); }\n else\n { setSelectionOrigin(view, \"pointer\"); }\n};\n\nvar MouseDown = function MouseDown(view, pos, event, flushed) {\n var this$1 = this;\n\n this.view = view;\n this.startDoc = view.state.doc;\n this.pos = pos;\n this.event = event;\n this.flushed = flushed;\n this.selectNode = event[selectNodeModifier];\n this.allowDefault = event.shiftKey;\n\n var targetNode, targetPos;\n if (pos.inside > -1) {\n targetNode = view.state.doc.nodeAt(pos.inside);\n targetPos = pos.inside;\n } else {\n var $pos = view.state.doc.resolve(pos.pos);\n targetNode = $pos.parent;\n targetPos = $pos.depth ? $pos.before() : 0;\n }\n\n this.mightDrag = null;\n\n var target = flushed ? null : event.target;\n var targetDesc = target ? view.docView.nearestDesc(target, true) : null;\n this.target = targetDesc ? targetDesc.dom : null;\n\n if (targetNode.type.spec.draggable && targetNode.type.spec.selectable !== false ||\n view.state.selection instanceof NodeSelection && targetPos == view.state.selection.from)\n { this.mightDrag = {node: targetNode,\n pos: targetPos,\n addAttr: this.target && !this.target.draggable,\n setUneditable: this.target && result.gecko && !this.target.hasAttribute(\"contentEditable\")}; }\n\n if (this.target && this.mightDrag && (this.mightDrag.addAttr || this.mightDrag.setUneditable)) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr) { this.target.draggable = true; }\n if (this.mightDrag.setUneditable)\n { setTimeout(function () { return this$1.target.setAttribute(\"contentEditable\", \"false\"); }, 20); }\n this.view.domObserver.start();\n }\n\n view.root.addEventListener(\"mouseup\", this.up = this.up.bind(this));\n view.root.addEventListener(\"mousemove\", this.move = this.move.bind(this));\n setSelectionOrigin(view, \"pointer\");\n};\n\nMouseDown.prototype.done = function done () {\n this.view.root.removeEventListener(\"mouseup\", this.up);\n this.view.root.removeEventListener(\"mousemove\", this.move);\n if (this.mightDrag && this.target) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr) { this.target.removeAttribute(\"draggable\"); }\n if (this.mightDrag.setUneditable) { this.target.removeAttribute(\"contentEditable\"); }\n this.view.domObserver.start();\n }\n this.view.mouseDown = null;\n};\n\nMouseDown.prototype.up = function up (event) {\n this.done();\n\n if (!this.view.dom.contains(event.target.nodeType == 3 ? event.target.parentNode : event.target))\n { return }\n\n var pos = this.pos;\n if (this.view.state.doc != this.startDoc) { pos = this.view.posAtCoords(eventCoords(event)); }\n\n if (this.allowDefault || !pos) {\n setSelectionOrigin(this.view, \"pointer\");\n } else if (handleSingleClick(this.view, pos.pos, pos.inside, event, this.selectNode)) {\n event.preventDefault();\n } else if (this.flushed ||\n // Safari ignores clicks on draggable elements\n (result.safari && this.mightDrag && !this.mightDrag.node.isAtom) ||\n // Chrome will sometimes treat a node selection as a\n // cursor, but still report that the node is selected\n // when asked through getSelection. You'll then get a\n // situation where clicking at the point where that\n // (hidden) cursor is doesn't change the selection, and\n // thus doesn't get a reaction from ProseMirror. This\n // works around that.\n (result.chrome && !(this.view.state.selection instanceof TextSelection) &&\n (pos.pos == this.view.state.selection.from || pos.pos == this.view.state.selection.to))) {\n updateSelection(this.view, Selection.near(this.view.state.doc.resolve(pos.pos)), \"pointer\");\n event.preventDefault();\n } else {\n setSelectionOrigin(this.view, \"pointer\");\n }\n};\n\nMouseDown.prototype.move = function move (event) {\n if (!this.allowDefault && (Math.abs(this.event.x - event.clientX) > 4 ||\n Math.abs(this.event.y - event.clientY) > 4))\n { this.allowDefault = true; }\n setSelectionOrigin(this.view, \"pointer\");\n};\n\nhandlers.touchdown = function (view) {\n forceDOMFlush(view);\n setSelectionOrigin(view, \"pointer\");\n};\n\nhandlers.contextmenu = function (view) { return forceDOMFlush(view); };\n\nfunction inOrNearComposition(view, event) {\n if (view.composing) { return true }\n // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.\n // On Japanese input method editors (IMEs), the Enter key is used to confirm character\n // selection. On Safari, when Enter is pressed, compositionend and keydown events are\n // emitted. The keydown event triggers newline insertion, which we don't want.\n // This method returns true if the keydown event should be ignored.\n // We only ignore it once, as pressing Enter a second time *should* insert a newline.\n // Furthermore, the keydown event timestamp must be close to the compositionEndedAt timestamp.\n // This guards against the case where compositionend is triggered without the keyboard\n // (e.g. character confirmation may be done with the mouse), and keydown is triggered\n // afterwards- we wouldn't want to ignore the keydown event in this case.\n if (result.safari && Math.abs(event.timeStamp - view.compositionEndedAt) < 500) {\n view.compositionEndedAt = -2e8;\n return true\n }\n return false\n}\n\n// Drop active composition after 5 seconds of inactivity on Android\nvar timeoutComposition = result.android ? 5000 : -1;\n\neditHandlers.compositionstart = editHandlers.compositionupdate = function (view) {\n if (!view.composing) {\n view.domObserver.flush();\n var state = view.state;\n var $pos = state.selection.$from;\n if (state.selection.empty &&\n (state.storedMarks || (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(function (m) { return m.type.spec.inclusive === false; })))) {\n // Need to wrap the cursor in mark nodes different from the ones in the DOM context\n view.markCursor = view.state.storedMarks || $pos.marks();\n endComposition(view, true);\n view.markCursor = null;\n } else {\n endComposition(view);\n // In firefox, if the cursor is after but outside a marked node,\n // the inserted text won't inherit the marks. So this moves it\n // inside if necessary.\n if (result.gecko && state.selection.empty && $pos.parentOffset && !$pos.textOffset && $pos.nodeBefore.marks.length) {\n var sel = view.root.getSelection();\n for (var node = sel.focusNode, offset = sel.focusOffset; node && node.nodeType == 1 && offset != 0;) {\n var before = offset < 0 ? node.lastChild : node.childNodes[offset - 1];\n if (!before) { break }\n if (before.nodeType == 3) {\n sel.collapse(before, before.nodeValue.length);\n break\n } else {\n node = before;\n offset = -1;\n }\n }\n }\n }\n view.composing = true;\n }\n scheduleComposeEnd(view, timeoutComposition);\n};\n\neditHandlers.compositionend = function (view, event) {\n if (view.composing) {\n view.composing = false;\n view.compositionEndedAt = event.timeStamp;\n scheduleComposeEnd(view, 20);\n }\n};\n\nfunction scheduleComposeEnd(view, delay) {\n clearTimeout(view.composingTimeout);\n if (delay > -1) { view.composingTimeout = setTimeout(function () { return endComposition(view); }, delay); }\n}\n\nfunction clearComposition(view) {\n view.composing = false;\n while (view.compositionNodes.length > 0) { view.compositionNodes.pop().markParentsDirty(); }\n}\n\nfunction endComposition(view, forceUpdate) {\n view.domObserver.forceFlush();\n clearComposition(view);\n if (forceUpdate || view.docView.dirty) {\n var sel = selectionFromDOM(view);\n if (sel && !sel.eq(view.state.selection)) { view.dispatch(view.state.tr.setSelection(sel)); }\n else { view.updateState(view.state); }\n return true\n }\n return false\n}\n\nfunction captureCopy(view, dom) {\n // The extra wrapper is somehow necessary on IE/Edge to prevent the\n // content from being mangled when it is put onto the clipboard\n if (!view.dom.parentNode) { return }\n var wrap = view.dom.parentNode.appendChild(document.createElement(\"div\"));\n wrap.appendChild(dom);\n wrap.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n var sel = getSelection(), range = document.createRange();\n range.selectNodeContents(dom);\n // Done because IE will fire a selectionchange moving the selection\n // to its start when removeAllRanges is called and the editor still\n // has focus (which will mess up the editor's selection state).\n view.dom.blur();\n sel.removeAllRanges();\n sel.addRange(range);\n setTimeout(function () {\n if (wrap.parentNode) { wrap.parentNode.removeChild(wrap); }\n view.focus();\n }, 50);\n}\n\n// This is very crude, but unfortunately both these browsers _pretend_\n// that they have a clipboard API—all the objects and methods are\n// there, they just don't work, and they are hard to test.\nvar brokenClipboardAPI = (result.ie && result.ie_version < 15) ||\n (result.ios && result.webkit_version < 604);\n\nhandlers.copy = editHandlers.cut = function (view, e) {\n var sel = view.state.selection, cut = e.type == \"cut\";\n if (sel.empty) { return }\n\n // IE and Edge's clipboard interface is completely broken\n var data = brokenClipboardAPI ? null : e.clipboardData;\n var slice = sel.content();\n var ref = serializeForClipboard(view, slice);\n var dom = ref.dom;\n var text = ref.text;\n if (data) {\n e.preventDefault();\n data.clearData();\n data.setData(\"text/html\", dom.innerHTML);\n data.setData(\"text/plain\", text);\n } else {\n captureCopy(view, dom);\n }\n if (cut) { view.dispatch(view.state.tr.deleteSelection().scrollIntoView().setMeta(\"uiEvent\", \"cut\")); }\n};\n\nfunction sliceSingleNode(slice) {\n return slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1 ? slice.content.firstChild : null\n}\n\nfunction capturePaste(view, e) {\n if (!view.dom.parentNode) { return }\n var plainText = view.shiftKey || view.state.selection.$from.parent.type.spec.code;\n var target = view.dom.parentNode.appendChild(document.createElement(plainText ? \"textarea\" : \"div\"));\n if (!plainText) { target.contentEditable = \"true\"; }\n target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n target.focus();\n setTimeout(function () {\n view.focus();\n if (target.parentNode) { target.parentNode.removeChild(target); }\n if (plainText) { doPaste(view, target.value, null, e); }\n else { doPaste(view, target.textContent, target.innerHTML, e); }\n }, 50);\n}\n\nfunction doPaste(view, text, html, e) {\n var slice = parseFromClipboard(view, text, html, view.shiftKey, view.state.selection.$from);\n if (view.someProp(\"handlePaste\", function (f) { return f(view, e, slice || Slice.empty); }) || !slice) { return }\n\n var singleNode = sliceSingleNode(slice);\n var tr = singleNode ? view.state.tr.replaceSelectionWith(singleNode, view.shiftKey) : view.state.tr.replaceSelection(slice);\n view.dispatch(tr.scrollIntoView().setMeta(\"paste\", true).setMeta(\"uiEvent\", \"paste\"));\n}\n\neditHandlers.paste = function (view, e) {\n var data = brokenClipboardAPI ? null : e.clipboardData;\n var html = data && data.getData(\"text/html\"), text = data && data.getData(\"text/plain\");\n if (data && (html || text || data.files.length)) {\n doPaste(view, text, html, e);\n e.preventDefault();\n } else {\n capturePaste(view, e);\n }\n};\n\nvar Dragging = function Dragging(slice, move) {\n this.slice = slice;\n this.move = move;\n};\n\nvar dragCopyModifier = result.mac ? \"altKey\" : \"ctrlKey\";\n\nhandlers.dragstart = function (view, e) {\n var mouseDown = view.mouseDown;\n if (mouseDown) { mouseDown.done(); }\n if (!e.dataTransfer) { return }\n\n var sel = view.state.selection;\n var pos = sel.empty ? null : view.posAtCoords(eventCoords(e));\n if (pos && pos.pos >= sel.from && pos.pos <= (sel instanceof NodeSelection ? sel.to - 1: sel.to)) ; else if (mouseDown && mouseDown.mightDrag) {\n view.dispatch(view.state.tr.setSelection(NodeSelection.create(view.state.doc, mouseDown.mightDrag.pos)));\n } else if (e.target && e.target.nodeType == 1) {\n var desc = view.docView.nearestDesc(e.target, true);\n if (!desc || !desc.node.type.spec.draggable || desc == view.docView) { return }\n view.dispatch(view.state.tr.setSelection(NodeSelection.create(view.state.doc, desc.posBefore)));\n }\n var slice = view.state.selection.content();\n var ref = serializeForClipboard(view, slice);\n var dom = ref.dom;\n var text = ref.text;\n e.dataTransfer.clearData();\n e.dataTransfer.setData(brokenClipboardAPI ? \"Text\" : \"text/html\", dom.innerHTML);\n if (!brokenClipboardAPI) { e.dataTransfer.setData(\"text/plain\", text); }\n view.dragging = new Dragging(slice, !e[dragCopyModifier]);\n};\n\nhandlers.dragend = function (view) {\n window.setTimeout(function () { return view.dragging = null; }, 50);\n};\n\neditHandlers.dragover = editHandlers.dragenter = function (_, e) { return e.preventDefault(); };\n\neditHandlers.drop = function (view, e) {\n var dragging = view.dragging;\n view.dragging = null;\n\n if (!e.dataTransfer) { return }\n\n var eventPos = view.posAtCoords(eventCoords(e));\n if (!eventPos) { return }\n var $mouse = view.state.doc.resolve(eventPos.pos);\n if (!$mouse) { return }\n var slice = dragging && dragging.slice ||\n parseFromClipboard(view, e.dataTransfer.getData(brokenClipboardAPI ? \"Text\" : \"text/plain\"),\n brokenClipboardAPI ? null : e.dataTransfer.getData(\"text/html\"), false, $mouse);\n var move = dragging && !e[dragCopyModifier];\n if (view.someProp(\"handleDrop\", function (f) { return f(view, e, slice || Slice.empty, move); })) {\n e.preventDefault();\n return\n }\n if (!slice) { return }\n\n e.preventDefault();\n var insertPos = slice ? dropPoint(view.state.doc, $mouse.pos, slice) : $mouse.pos;\n if (insertPos == null) { insertPos = $mouse.pos; }\n\n var tr = view.state.tr;\n if (move) { tr.deleteSelection(); }\n\n var pos = tr.mapping.map(insertPos);\n var isNode = slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1;\n var beforeInsert = tr.doc;\n if (isNode)\n { tr.replaceRangeWith(pos, pos, slice.content.firstChild); }\n else\n { tr.replaceRange(pos, pos, slice); }\n if (tr.doc.eq(beforeInsert)) { return }\n\n var $pos = tr.doc.resolve(pos);\n if (isNode && NodeSelection.isSelectable(slice.content.firstChild) &&\n $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice.content.firstChild)) {\n tr.setSelection(new NodeSelection($pos));\n } else {\n var end = tr.mapping.map(insertPos);\n tr.mapping.maps[tr.mapping.maps.length - 1].forEach(function (_from, _to, _newFrom, newTo) { return end = newTo; });\n tr.setSelection(selectionBetween(view, $pos, tr.doc.resolve(end)));\n }\n view.focus();\n view.dispatch(tr.setMeta(\"uiEvent\", \"drop\"));\n};\n\nhandlers.focus = function (view) {\n if (!view.focused) {\n view.domObserver.stop();\n view.dom.classList.add(\"ProseMirror-focused\");\n view.domObserver.start();\n view.focused = true;\n setTimeout(function () {\n if (view.docView && view.hasFocus() && !view.domObserver.currentSelection.eq(view.root.getSelection()))\n { selectionToDOM(view); }\n }, 20);\n }\n};\n\nhandlers.blur = function (view) {\n if (view.focused) {\n view.domObserver.stop();\n view.dom.classList.remove(\"ProseMirror-focused\");\n view.domObserver.start();\n view.domObserver.currentSelection.set({});\n view.focused = false;\n }\n};\n\nhandlers.beforeinput = function (view, event) {\n // We should probably do more with beforeinput events, but support\n // is so spotty that I'm still waiting to see where they are going.\n\n // Very specific hack to deal with backspace sometimes failing on\n // Chrome Android when after an uneditable node.\n if (result.chrome && result.android && event.inputType == \"deleteContentBackward\") {\n var domChangeCount = view.domChangeCount;\n setTimeout(function () {\n if (view.domChangeCount != domChangeCount) { return } // Event already had some effect\n // This bug tends to close the virtual keyboard, so we refocus\n view.dom.blur();\n view.focus();\n if (view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(8, \"Backspace\")); })) { return }\n var ref = view.state.selection;\n var $cursor = ref.$cursor;\n // Crude approximation of backspace behavior when no command handled it\n if ($cursor && $cursor.pos > 0) { view.dispatch(view.state.tr.delete($cursor.pos - 1, $cursor.pos).scrollIntoView()); }\n }, 50);\n }\n};\n\n// Make sure all handlers get registered\nfor (var prop in editHandlers) { handlers[prop] = editHandlers[prop]; }\n\nfunction compareObjs(a, b) {\n if (a == b) { return true }\n for (var p in a) { if (a[p] !== b[p]) { return false } }\n for (var p$1 in b) { if (!(p$1 in a)) { return false } }\n return true\n}\n\nvar WidgetType = function WidgetType(toDOM, spec) {\n this.spec = spec || noSpec;\n this.side = this.spec.side || 0;\n this.toDOM = toDOM;\n};\n\nWidgetType.prototype.map = function map (mapping, span, offset, oldOffset) {\n var ref = mapping.mapResult(span.from + oldOffset, this.side < 0 ? -1 : 1);\n var pos = ref.pos;\n var deleted = ref.deleted;\n return deleted ? null : new Decoration(pos - offset, pos - offset, this)\n};\n\nWidgetType.prototype.valid = function valid () { return true };\n\nWidgetType.prototype.eq = function eq (other) {\n return this == other ||\n (other instanceof WidgetType &&\n (this.spec.key && this.spec.key == other.spec.key ||\n this.toDOM == other.toDOM && compareObjs(this.spec, other.spec)))\n};\n\nvar InlineType = function InlineType(attrs, spec) {\n this.spec = spec || noSpec;\n this.attrs = attrs;\n};\n\nInlineType.prototype.map = function map (mapping, span, offset, oldOffset) {\n var from = mapping.map(span.from + oldOffset, this.spec.inclusiveStart ? -1 : 1) - offset;\n var to = mapping.map(span.to + oldOffset, this.spec.inclusiveEnd ? 1 : -1) - offset;\n return from >= to ? null : new Decoration(from, to, this)\n};\n\nInlineType.prototype.valid = function valid (_, span) { return span.from < span.to };\n\nInlineType.prototype.eq = function eq (other) {\n return this == other ||\n (other instanceof InlineType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec))\n};\n\nInlineType.is = function is (span) { return span.type instanceof InlineType };\n\nvar NodeType = function NodeType(attrs, spec) {\n this.spec = spec || noSpec;\n this.attrs = attrs;\n};\n\nNodeType.prototype.map = function map (mapping, span, offset, oldOffset) {\n var from = mapping.mapResult(span.from + oldOffset, 1);\n if (from.deleted) { return null }\n var to = mapping.mapResult(span.to + oldOffset, -1);\n if (to.deleted || to.pos <= from.pos) { return null }\n return new Decoration(from.pos - offset, to.pos - offset, this)\n};\n\nNodeType.prototype.valid = function valid (node, span) {\n var ref = node.content.findIndex(span.from);\n var index = ref.index;\n var offset = ref.offset;\n return offset == span.from && offset + node.child(index).nodeSize == span.to\n};\n\nNodeType.prototype.eq = function eq (other) {\n return this == other ||\n (other instanceof NodeType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec))\n};\n\n// ::- Decoration objects can be provided to the view through the\n// [`decorations` prop](#view.EditorProps.decorations). They come in\n// several variants—see the static members of this class for details.\nvar Decoration = function Decoration(from, to, type) {\n // :: number\n // The start position of the decoration.\n this.from = from;\n // :: number\n // The end position. Will be the same as `from` for [widget\n // decorations](#view.Decoration^widget).\n this.to = to;\n this.type = type;\n};\n\nvar prototypeAccessors$1 = { spec: { configurable: true },inline: { configurable: true } };\n\nDecoration.prototype.copy = function copy (from, to) {\n return new Decoration(from, to, this.type)\n};\n\nDecoration.prototype.eq = function eq (other, offset) {\n if ( offset === void 0 ) offset = 0;\n\n return this.type.eq(other.type) && this.from + offset == other.from && this.to + offset == other.to\n};\n\nDecoration.prototype.map = function map (mapping, offset, oldOffset) {\n return this.type.map(mapping, this, offset, oldOffset)\n};\n\n// :: (number, union<(view: EditorView, getPos: () → number) → dom.Node, dom.Node>, ?Object) → Decoration\n// Creates a widget decoration, which is a DOM node that's shown in\n// the document at the given position. It is recommended that you\n// delay rendering the widget by passing a function that will be\n// called when the widget is actually drawn in a view, but you can\n// also directly pass a DOM node. `getPos` can be used to find the\n// widget's current document position.\n//\n// spec::- These options are supported:\n//\n// side:: ?number\n// Controls which side of the document position this widget is\n// associated with. When negative, it is drawn before a cursor\n// at its position, and content inserted at that position ends\n// up after the widget. When zero (the default) or positive, the\n// widget is drawn after the cursor and content inserted there\n// ends up before the widget.\n//\n// When there are multiple widgets at a given position, their\n// `side` values determine the order in which they appear. Those\n// with lower values appear first. The ordering of widgets with\n// the same `side` value is unspecified.\n//\n// When `marks` is null, `side` also determines the marks that\n// the widget is wrapped in—those of the node before when\n// negative, those of the node after when positive.\n//\n// marks:: ?[Mark]\n// The precise set of marks to draw around the widget.\n//\n// stopEvent:: ?(event: dom.Event) → bool\n// Can be used to control which DOM events, when they bubble out\n// of this widget, the editor view should ignore.\n//\n// ignoreSelection:: ?bool\n// When set (defaults to false), selection changes inside the\n// widget are ignored, and don't cause ProseMirror to try and\n// re-sync the selection with its selection state.\n//\n// key:: ?string\n// When comparing decorations of this type (in order to decide\n// whether it needs to be redrawn), ProseMirror will by default\n// compare the widget DOM node by identity. If you pass a key,\n// that key will be compared instead, which can be useful when\n// you generate decorations on the fly and don't want to store\n// and reuse DOM nodes. Make sure that any widgets with the same\n// key are interchangeable—if widgets differ in, for example,\n// the behavior of some event handler, they should get\n// different keys.\nDecoration.widget = function widget (pos, toDOM, spec) {\n return new Decoration(pos, pos, new WidgetType(toDOM, spec))\n};\n\n// :: (number, number, DecorationAttrs, ?Object) → Decoration\n// Creates an inline decoration, which adds the given attributes to\n// each inline node between `from` and `to`.\n//\n// spec::- These options are recognized:\n//\n// inclusiveStart:: ?bool\n// Determines how the left side of the decoration is\n// [mapped](#transform.Position_Mapping) when content is\n// inserted directly at that position. By default, the decoration\n// won't include the new content, but you can set this to `true`\n// to make it inclusive.\n//\n// inclusiveEnd:: ?bool\n// Determines how the right side of the decoration is mapped.\n// See\n// [`inclusiveStart`](#view.Decoration^inline^spec.inclusiveStart).\nDecoration.inline = function inline (from, to, attrs, spec) {\n return new Decoration(from, to, new InlineType(attrs, spec))\n};\n\n// :: (number, number, DecorationAttrs, ?Object) → Decoration\n// Creates a node decoration. `from` and `to` should point precisely\n// before and after a node in the document. That node, and only that\n// node, will receive the given attributes.\n//\n// spec::-\n//\n// Optional information to store with the decoration. It\n// is also used when comparing decorators for equality.\nDecoration.node = function node (from, to, attrs, spec) {\n return new Decoration(from, to, new NodeType(attrs, spec))\n};\n\n// :: Object\n// The spec provided when creating this decoration. Can be useful\n// if you've stored extra information in that object.\nprototypeAccessors$1.spec.get = function () { return this.type.spec };\n\nprototypeAccessors$1.inline.get = function () { return this.type instanceof InlineType };\n\nObject.defineProperties( Decoration.prototype, prototypeAccessors$1 );\n\n// DecorationAttrs:: interface\n// A set of attributes to add to a decorated node. Most properties\n// simply directly correspond to DOM attributes of the same name,\n// which will be set to the property's value. These are exceptions:\n//\n// class:: ?string\n// A CSS class name or a space-separated set of class names to be\n// _added_ to the classes that the node already had.\n//\n// style:: ?string\n// A string of CSS to be _added_ to the node's existing `style` property.\n//\n// nodeName:: ?string\n// When non-null, the target node is wrapped in a DOM element of\n// this type (and the other attributes are applied to this element).\n\nvar none = [], noSpec = {};\n\n// ::- A collection of [decorations](#view.Decoration), organized in\n// such a way that the drawing algorithm can efficiently use and\n// compare them. This is a persistent data structure—it is not\n// modified, updates create a new value.\nvar DecorationSet = function DecorationSet(local, children) {\n this.local = local && local.length ? local : none;\n this.children = children && children.length ? children : none;\n};\n\n// :: (Node, [Decoration]) → DecorationSet\n// Create a set of decorations, using the structure of the given\n// document.\nDecorationSet.create = function create (doc, decorations) {\n return decorations.length ? buildTree(decorations, doc, 0, noSpec) : empty\n};\n\n// :: (?number, ?number, ?(spec: Object) → bool) → [Decoration]\n// Find all decorations in this set which touch the given range\n// (including decorations that start or end directly at the\n// boundaries) and match the given predicate on their spec. When\n// `start` and `end` are omitted, all decorations in the set are\n// considered. When `predicate` isn't given, all decorations are\n// assumed to match.\nDecorationSet.prototype.find = function find (start, end, predicate) {\n var result = [];\n this.findInner(start == null ? 0 : start, end == null ? 1e9 : end, result, 0, predicate);\n return result\n};\n\nDecorationSet.prototype.findInner = function findInner (start, end, result, offset, predicate) {\n for (var i = 0; i < this.local.length; i++) {\n var span = this.local[i];\n if (span.from <= end && span.to >= start && (!predicate || predicate(span.spec)))\n { result.push(span.copy(span.from + offset, span.to + offset)); }\n }\n for (var i$1 = 0; i$1 < this.children.length; i$1 += 3) {\n if (this.children[i$1] < end && this.children[i$1 + 1] > start) {\n var childOff = this.children[i$1] + 1;\n this.children[i$1 + 2].findInner(start - childOff, end - childOff, result, offset + childOff, predicate);\n }\n }\n};\n\n// :: (Mapping, Node, ?Object) → DecorationSet\n// Map the set of decorations in response to a change in the\n// document.\n//\n// options::- An optional set of options.\n//\n// onRemove:: ?(decorationSpec: Object)\n// When given, this function will be called for each decoration\n// that gets dropped as a result of the mapping, passing the\n// spec of that decoration.\nDecorationSet.prototype.map = function map (mapping, doc, options) {\n if (this == empty || mapping.maps.length == 0) { return this }\n return this.mapInner(mapping, doc, 0, 0, options || noSpec)\n};\n\nDecorationSet.prototype.mapInner = function mapInner (mapping, node, offset, oldOffset, options) {\n var newLocal;\n for (var i = 0; i < this.local.length; i++) {\n var mapped = this.local[i].map(mapping, offset, oldOffset);\n if (mapped && mapped.type.valid(node, mapped)) { (newLocal || (newLocal = [])).push(mapped); }\n else if (options.onRemove) { options.onRemove(this.local[i].spec); }\n }\n\n if (this.children.length)\n { return mapChildren(this.children, newLocal, mapping, node, offset, oldOffset, options) }\n else\n { return newLocal ? new DecorationSet(newLocal.sort(byPos)) : empty }\n};\n\n// :: (Node, [Decoration]) → DecorationSet\n// Add the given array of decorations to the ones in the set,\n// producing a new set. Needs access to the current document to\n// create the appropriate tree structure.\nDecorationSet.prototype.add = function add (doc, decorations) {\n if (!decorations.length) { return this }\n if (this == empty) { return DecorationSet.create(doc, decorations) }\n return this.addInner(doc, decorations, 0)\n};\n\nDecorationSet.prototype.addInner = function addInner (doc, decorations, offset) {\n var this$1 = this;\n\n var children, childIndex = 0;\n doc.forEach(function (childNode, childOffset) {\n var baseOffset = childOffset + offset, found;\n if (!(found = takeSpansForNode(decorations, childNode, baseOffset))) { return }\n\n if (!children) { children = this$1.children.slice(); }\n while (childIndex < children.length && children[childIndex] < childOffset) { childIndex += 3; }\n if (children[childIndex] == childOffset)\n { children[childIndex + 2] = children[childIndex + 2].addInner(childNode, found, baseOffset + 1); }\n else\n { children.splice(childIndex, 0, childOffset, childOffset + childNode.nodeSize, buildTree(found, childNode, baseOffset + 1, noSpec)); }\n childIndex += 3;\n });\n\n var local = moveSpans(childIndex ? withoutNulls(decorations) : decorations, -offset);\n return new DecorationSet(local.length ? this.local.concat(local).sort(byPos) : this.local,\n children || this.children)\n};\n\n// :: ([Decoration]) → DecorationSet\n// Create a new set that contains the decorations in this set, minus\n// the ones in the given array.\nDecorationSet.prototype.remove = function remove (decorations) {\n if (decorations.length == 0 || this == empty) { return this }\n return this.removeInner(decorations, 0)\n};\n\nDecorationSet.prototype.removeInner = function removeInner (decorations, offset) {\n var children = this.children, local = this.local;\n for (var i = 0; i < children.length; i += 3) {\n var found = (void 0), from = children[i] + offset, to = children[i + 1] + offset;\n for (var j = 0, span = (void 0); j < decorations.length; j++) { if (span = decorations[j]) {\n if (span.from > from && span.to < to) {\n decorations[j] = null\n ;(found || (found = [])).push(span);\n }\n } }\n if (!found) { continue }\n if (children == this.children) { children = this.children.slice(); }\n var removed = children[i + 2].removeInner(found, from + 1);\n if (removed != empty) {\n children[i + 2] = removed;\n } else {\n children.splice(i, 3);\n i -= 3;\n }\n }\n if (local.length) { for (var i$1 = 0, span$1 = (void 0); i$1 < decorations.length; i$1++) { if (span$1 = decorations[i$1]) {\n for (var j$1 = 0; j$1 < local.length; j$1++) { if (local[j$1].eq(span$1, offset)) {\n if (local == this.local) { local = this.local.slice(); }\n local.splice(j$1--, 1);\n } }\n } } }\n if (children == this.children && local == this.local) { return this }\n return local.length || children.length ? new DecorationSet(local, children) : empty\n};\n\nDecorationSet.prototype.forChild = function forChild (offset, node) {\n if (this == empty) { return this }\n if (node.isLeaf) { return DecorationSet.empty }\n\n var child, local;\n for (var i = 0; i < this.children.length; i += 3) { if (this.children[i] >= offset) {\n if (this.children[i] == offset) { child = this.children[i + 2]; }\n break\n } }\n var start = offset + 1, end = start + node.content.size;\n for (var i$1 = 0; i$1 < this.local.length; i$1++) {\n var dec = this.local[i$1];\n if (dec.from < end && dec.to > start && (dec.type instanceof InlineType)) {\n var from = Math.max(start, dec.from) - start, to = Math.min(end, dec.to) - start;\n if (from < to) { (local || (local = [])).push(dec.copy(from, to)); }\n }\n }\n if (local) {\n var localSet = new DecorationSet(local.sort(byPos));\n return child ? new DecorationGroup([localSet, child]) : localSet\n }\n return child || empty\n};\n\nDecorationSet.prototype.eq = function eq (other) {\n if (this == other) { return true }\n if (!(other instanceof DecorationSet) ||\n this.local.length != other.local.length ||\n this.children.length != other.children.length) { return false }\n for (var i = 0; i < this.local.length; i++)\n { if (!this.local[i].eq(other.local[i])) { return false } }\n for (var i$1 = 0; i$1 < this.children.length; i$1 += 3)\n { if (this.children[i$1] != other.children[i$1] ||\n this.children[i$1 + 1] != other.children[i$1 + 1] ||\n !this.children[i$1 + 2].eq(other.children[i$1 + 2])) { return false } }\n return true\n};\n\nDecorationSet.prototype.locals = function locals (node) {\n return removeOverlap(this.localsInner(node))\n};\n\nDecorationSet.prototype.localsInner = function localsInner (node) {\n if (this == empty) { return none }\n if (node.inlineContent || !this.local.some(InlineType.is)) { return this.local }\n var result = [];\n for (var i = 0; i < this.local.length; i++) {\n if (!(this.local[i].type instanceof InlineType))\n { result.push(this.local[i]); }\n }\n return result\n};\n\nvar empty = new DecorationSet();\n\n// :: DecorationSet\n// The empty set of decorations.\nDecorationSet.empty = empty;\n\nDecorationSet.removeOverlap = removeOverlap;\n\n// :- An abstraction that allows the code dealing with decorations to\n// treat multiple DecorationSet objects as if it were a single object\n// with (a subset of) the same interface.\nvar DecorationGroup = function DecorationGroup(members) {\n this.members = members;\n};\n\nDecorationGroup.prototype.forChild = function forChild (offset, child) {\n if (child.isLeaf) { return DecorationSet.empty }\n var found = [];\n for (var i = 0; i < this.members.length; i++) {\n var result = this.members[i].forChild(offset, child);\n if (result == empty) { continue }\n if (result instanceof DecorationGroup) { found = found.concat(result.members); }\n else { found.push(result); }\n }\n return DecorationGroup.from(found)\n};\n\nDecorationGroup.prototype.eq = function eq (other) {\n if (!(other instanceof DecorationGroup) ||\n other.members.length != this.members.length) { return false }\n for (var i = 0; i < this.members.length; i++)\n { if (!this.members[i].eq(other.members[i])) { return false } }\n return true\n};\n\nDecorationGroup.prototype.locals = function locals (node) {\n var result, sorted = true;\n for (var i = 0; i < this.members.length; i++) {\n var locals = this.members[i].localsInner(node);\n if (!locals.length) { continue }\n if (!result) {\n result = locals;\n } else {\n if (sorted) {\n result = result.slice();\n sorted = false;\n }\n for (var j = 0; j < locals.length; j++) { result.push(locals[j]); }\n }\n }\n return result ? removeOverlap(sorted ? result : result.sort(byPos)) : none\n};\n\n// : ([DecorationSet]) → union\n// Create a group for the given array of decoration sets, or return\n// a single set when possible.\nDecorationGroup.from = function from (members) {\n switch (members.length) {\n case 0: return empty\n case 1: return members[0]\n default: return new DecorationGroup(members)\n }\n};\n\nfunction mapChildren(oldChildren, newLocal, mapping, node, offset, oldOffset, options) {\n var children = oldChildren.slice();\n\n // Mark the children that are directly touched by changes, and\n // move those that are after the changes.\n var shift = function (oldStart, oldEnd, newStart, newEnd) {\n for (var i = 0; i < children.length; i += 3) {\n var end = children[i + 1], dSize = (void 0);\n if (end == -1 || oldStart > end + oldOffset) { continue }\n if (oldEnd >= children[i] + oldOffset) {\n children[i + 1] = -1;\n } else if (newStart >= offset && (dSize = (newEnd - newStart) - (oldEnd - oldStart))) {\n children[i] += dSize;\n children[i + 1] += dSize;\n }\n }\n };\n for (var i = 0; i < mapping.maps.length; i++) { mapping.maps[i].forEach(shift); }\n\n // Find the child nodes that still correspond to a single node,\n // recursively call mapInner on them and update their positions.\n var mustRebuild = false;\n for (var i$1 = 0; i$1 < children.length; i$1 += 3) { if (children[i$1 + 1] == -1) { // Touched nodes\n var from = mapping.map(oldChildren[i$1] + oldOffset), fromLocal = from - offset;\n if (fromLocal < 0 || fromLocal >= node.content.size) {\n mustRebuild = true;\n continue\n }\n // Must read oldChildren because children was tagged with -1\n var to = mapping.map(oldChildren[i$1 + 1] + oldOffset, -1), toLocal = to - offset;\n var ref = node.content.findIndex(fromLocal);\n var index = ref.index;\n var childOffset = ref.offset;\n var childNode = node.maybeChild(index);\n if (childNode && childOffset == fromLocal && childOffset + childNode.nodeSize == toLocal) {\n var mapped = children[i$1 + 2].mapInner(mapping, childNode, from + 1, oldChildren[i$1] + oldOffset + 1, options);\n if (mapped != empty) {\n children[i$1] = fromLocal;\n children[i$1 + 1] = toLocal;\n children[i$1 + 2] = mapped;\n } else {\n children[i$1 + 1] = -2;\n mustRebuild = true;\n }\n } else {\n mustRebuild = true;\n }\n } }\n\n // Remaining children must be collected and rebuilt into the appropriate structure\n if (mustRebuild) {\n var decorations = mapAndGatherRemainingDecorations(children, oldChildren, newLocal || [], mapping,\n offset, oldOffset, options);\n var built = buildTree(decorations, node, 0, options);\n newLocal = built.local;\n for (var i$2 = 0; i$2 < children.length; i$2 += 3) { if (children[i$2 + 1] < 0) {\n children.splice(i$2, 3);\n i$2 -= 3;\n } }\n for (var i$3 = 0, j = 0; i$3 < built.children.length; i$3 += 3) {\n var from$1 = built.children[i$3];\n while (j < children.length && children[j] < from$1) { j += 3; }\n children.splice(j, 0, built.children[i$3], built.children[i$3 + 1], built.children[i$3 + 2]);\n }\n }\n\n return new DecorationSet(newLocal && newLocal.sort(byPos), children)\n}\n\nfunction moveSpans(spans, offset) {\n if (!offset || !spans.length) { return spans }\n var result = [];\n for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n result.push(new Decoration(span.from + offset, span.to + offset, span.type));\n }\n return result\n}\n\nfunction mapAndGatherRemainingDecorations(children, oldChildren, decorations, mapping, offset, oldOffset, options) {\n // Gather all decorations from the remaining marked children\n function gather(set, oldOffset) {\n for (var i = 0; i < set.local.length; i++) {\n var mapped = set.local[i].map(mapping, offset, oldOffset);\n if (mapped) { decorations.push(mapped); }\n else if (options.onRemove) { options.onRemove(set.local[i].spec); }\n }\n for (var i$1 = 0; i$1 < set.children.length; i$1 += 3)\n { gather(set.children[i$1 + 2], set.children[i$1] + oldOffset + 1); }\n }\n for (var i = 0; i < children.length; i += 3) { if (children[i + 1] == -1)\n { gather(children[i + 2], oldChildren[i] + oldOffset + 1); } }\n\n return decorations\n}\n\nfunction takeSpansForNode(spans, node, offset) {\n if (node.isLeaf) { return null }\n var end = offset + node.nodeSize, found = null;\n for (var i = 0, span = (void 0); i < spans.length; i++) {\n if ((span = spans[i]) && span.from > offset && span.to < end) {\n(found || (found = [])).push(span);\n spans[i] = null;\n }\n }\n return found\n}\n\nfunction withoutNulls(array) {\n var result = [];\n for (var i = 0; i < array.length; i++)\n { if (array[i] != null) { result.push(array[i]); } }\n return result\n}\n\n// : ([Decoration], Node, number) → DecorationSet\n// Build up a tree that corresponds to a set of decorations. `offset`\n// is a base offset that should be subtractet from the `from` and `to`\n// positions in the spans (so that we don't have to allocate new spans\n// for recursive calls).\nfunction buildTree(spans, node, offset, options) {\n var children = [], hasNulls = false;\n node.forEach(function (childNode, localStart) {\n var found = takeSpansForNode(spans, childNode, localStart + offset);\n if (found) {\n hasNulls = true;\n var subtree = buildTree(found, childNode, offset + localStart + 1, options);\n if (subtree != empty)\n { children.push(localStart, localStart + childNode.nodeSize, subtree); }\n }\n });\n var locals = moveSpans(hasNulls ? withoutNulls(spans) : spans, -offset).sort(byPos);\n for (var i = 0; i < locals.length; i++) { if (!locals[i].type.valid(node, locals[i])) {\n if (options.onRemove) { options.onRemove(locals[i].spec); }\n locals.splice(i--, 1);\n } }\n return locals.length || children.length ? new DecorationSet(locals, children) : empty\n}\n\n// : (Decoration, Decoration) → number\n// Used to sort decorations so that ones with a low start position\n// come first, and within a set with the same start position, those\n// with an smaller end position come first.\nfunction byPos(a, b) {\n return a.from - b.from || a.to - b.to\n}\n\n// : ([Decoration]) → [Decoration]\n// Scan a sorted array of decorations for partially overlapping spans,\n// and split those so that only fully overlapping spans are left (to\n// make subsequent rendering easier). Will return the input array if\n// no partially overlapping spans are found (the common case).\nfunction removeOverlap(spans) {\n var working = spans;\n for (var i = 0; i < working.length - 1; i++) {\n var span = working[i];\n if (span.from != span.to) { for (var j = i + 1; j < working.length; j++) {\n var next = working[j];\n if (next.from == span.from) {\n if (next.to != span.to) {\n if (working == spans) { working = spans.slice(); }\n // Followed by a partially overlapping larger span. Split that\n // span.\n working[j] = next.copy(next.from, span.to);\n insertAhead(working, j + 1, next.copy(span.to, next.to));\n }\n continue\n } else {\n if (next.from < span.to) {\n if (working == spans) { working = spans.slice(); }\n // The end of this one overlaps with a subsequent span. Split\n // this one.\n working[i] = span.copy(span.from, next.from);\n insertAhead(working, j, span.copy(next.from, span.to));\n }\n break\n }\n } }\n }\n return working\n}\n\nfunction insertAhead(array, i, deco) {\n while (i < array.length && byPos(deco, array[i]) > 0) { i++; }\n array.splice(i, 0, deco);\n}\n\n// : (EditorView) → union\n// Get the decorations associated with the current props of a view.\nfunction viewDecorations(view) {\n var found = [];\n view.someProp(\"decorations\", function (f) {\n var result = f(view.state);\n if (result && result != empty) { found.push(result); }\n });\n if (view.cursorWrapper)\n { found.push(DecorationSet.create(view.state.doc, [view.cursorWrapper.deco])); }\n return DecorationGroup.from(found)\n}\n\n// ::- An editor view manages the DOM structure that represents an\n// editable document. Its state and behavior are determined by its\n// [props](#view.DirectEditorProps).\nvar EditorView = function EditorView(place, props) {\n this._props = props;\n // :: EditorState\n // The view's current [state](#state.EditorState).\n this.state = props.state;\n\n this.dispatch = this.dispatch.bind(this);\n\n this._root = null;\n this.focused = false;\n // Kludge used to work around a Chrome bug\n this.trackWrites = null;\n\n // :: dom.Element\n // An editable DOM node containing the document. (You probably\n // should not directly interfere with its content.)\n this.dom = (place && place.mount) || document.createElement(\"div\");\n if (place) {\n if (place.appendChild) { place.appendChild(this.dom); }\n else if (place.apply) { place(this.dom); }\n else if (place.mount) { this.mounted = true; }\n }\n\n // :: bool\n // Indicates whether the editor is currently [editable](#view.EditorProps.editable).\n this.editable = getEditable(this);\n this.markCursor = null;\n this.cursorWrapper = null;\n updateCursorWrapper(this);\n this.nodeViews = buildNodeViews(this);\n this.docView = docViewDesc(this.state.doc, computeDocDeco(this), viewDecorations(this), this.dom, this);\n\n this.lastSelectedViewDesc = null;\n // :: ?{slice: Slice, move: bool}\n // When editor content is being dragged, this object contains\n // information about the dragged slice and whether it is being\n // copied or moved. At any other time, it is null.\n this.dragging = null;\n\n initInput(this);\n\n this.pluginViews = [];\n this.updatePluginViews();\n};\n\nvar prototypeAccessors$2 = { props: { configurable: true },root: { configurable: true } };\n\n// composing:: boolean\n// Holds `true` when a\n// [composition](https://developer.mozilla.org/en-US/docs/Mozilla/IME_handling_guide)\n// is active.\n\n// :: DirectEditorProps\n// The view's current [props](#view.EditorProps).\nprototypeAccessors$2.props.get = function () {\n if (this._props.state != this.state) {\n var prev = this._props;\n this._props = {};\n for (var name in prev) { this._props[name] = prev[name]; }\n this._props.state = this.state;\n }\n return this._props\n};\n\n// :: (DirectEditorProps)\n// Update the view's props. Will immediately cause an update to\n// the DOM.\nEditorView.prototype.update = function update (props) {\n if (props.handleDOMEvents != this._props.handleDOMEvents) { ensureListeners(this); }\n this._props = props;\n this.updateStateInner(props.state, true);\n};\n\n// :: (DirectEditorProps)\n// Update the view by updating existing props object with the object\n// given as argument. Equivalent to `view.update(Object.assign({},\n// view.props, props))`.\nEditorView.prototype.setProps = function setProps (props) {\n var updated = {};\n for (var name in this._props) { updated[name] = this._props[name]; }\n updated.state = this.state;\n for (var name$1 in props) { updated[name$1] = props[name$1]; }\n this.update(updated);\n};\n\n// :: (EditorState)\n// Update the editor's `state` prop, without touching any of the\n// other props.\nEditorView.prototype.updateState = function updateState (state) {\n this.updateStateInner(state, this.state.plugins != state.plugins);\n};\n\nEditorView.prototype.updateStateInner = function updateStateInner (state, reconfigured) {\n var this$1 = this;\n\n var prev = this.state, redraw = false, updateSel = false;\n // When stored marks are added, stop composition, so that they can\n // be displayed.\n if (state.storedMarks && this.composing) {\n clearComposition(this);\n updateSel = true;\n }\n this.state = state;\n if (reconfigured) {\n var nodeViews = buildNodeViews(this);\n if (changedNodeViews(nodeViews, this.nodeViews)) {\n this.nodeViews = nodeViews;\n redraw = true;\n }\n ensureListeners(this);\n }\n\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n var innerDeco = viewDecorations(this), outerDeco = computeDocDeco(this);\n\n var scroll = reconfigured ? \"reset\"\n : state.scrollToSelection > prev.scrollToSelection ? \"to selection\" : \"preserve\";\n var updateDoc = redraw || !this.docView.matchesNode(state.doc, outerDeco, innerDeco);\n if (updateDoc || !state.selection.eq(prev.selection)) { updateSel = true; }\n var oldScrollPos = scroll == \"preserve\" && updateSel && this.dom.style.overflowAnchor == null && storeScrollPos(this);\n\n if (updateSel) {\n this.domObserver.stop();\n // Work around an issue in Chrome, IE, and Edge where changing\n // the DOM around an active selection puts it into a broken\n // state where the thing the user sees differs from the\n // selection reported by the Selection object (#710, #973,\n // #1011, #1013, #1035).\n var forceSelUpdate = updateDoc && (result.ie || result.chrome) && !this.composing &&\n !prev.selection.empty && !state.selection.empty && selectionContextChanged(prev.selection, state.selection);\n if (updateDoc) {\n // If the node that the selection points into is written to,\n // Chrome sometimes starts misreporting the selection, so this\n // tracks that and forces a selection reset when our update\n // did write to the node.\n var chromeKludge = result.chrome ? (this.trackWrites = this.root.getSelection().focusNode) : null;\n if (redraw || !this.docView.update(state.doc, outerDeco, innerDeco, this)) {\n this.docView.updateOuterDeco([]);\n this.docView.destroy();\n this.docView = docViewDesc(state.doc, outerDeco, innerDeco, this.dom, this);\n }\n if (chromeKludge && !this.trackWrites) { forceSelUpdate = true; }\n }\n // Work around for an issue where an update arriving right between\n // a DOM selection change and the \"selectionchange\" event for it\n // can cause a spurious DOM selection update, disrupting mouse\n // drag selection.\n if (forceSelUpdate ||\n !(this.mouseDown && this.domObserver.currentSelection.eq(this.root.getSelection()) && anchorInRightPlace(this))) {\n selectionToDOM(this, forceSelUpdate);\n } else {\n syncNodeSelection(this, state.selection);\n this.domObserver.setCurSelection();\n }\n this.domObserver.start();\n }\n\n this.updatePluginViews(prev);\n\n if (scroll == \"reset\") {\n this.dom.scrollTop = 0;\n } else if (scroll == \"to selection\") {\n var startDOM = this.root.getSelection().focusNode;\n if (this.someProp(\"handleScrollToSelection\", function (f) { return f(this$1); }))\n ; // Handled\n else if (state.selection instanceof NodeSelection)\n { scrollRectIntoView(this, this.docView.domAfterPos(state.selection.from).getBoundingClientRect(), startDOM); }\n else\n { scrollRectIntoView(this, this.coordsAtPos(state.selection.head), startDOM); }\n } else if (oldScrollPos) {\n resetScrollPos(oldScrollPos);\n }\n};\n\nEditorView.prototype.destroyPluginViews = function destroyPluginViews () {\n var view;\n while (view = this.pluginViews.pop()) { if (view.destroy) { view.destroy(); } }\n};\n\nEditorView.prototype.updatePluginViews = function updatePluginViews (prevState) {\n if (!prevState || prevState.plugins != this.state.plugins) {\n this.destroyPluginViews();\n for (var i = 0; i < this.state.plugins.length; i++) {\n var plugin = this.state.plugins[i];\n if (plugin.spec.view) { this.pluginViews.push(plugin.spec.view(this)); }\n }\n } else {\n for (var i$1 = 0; i$1 < this.pluginViews.length; i$1++) {\n var pluginView = this.pluginViews[i$1];\n if (pluginView.update) { pluginView.update(this, prevState); }\n }\n }\n};\n\n// :: (string, ?(prop: *) → *) → *\n// Goes over the values of a prop, first those provided directly,\n// then those from plugins (in order), and calls `f` every time a\n// non-undefined value is found. When `f` returns a truthy value,\n// that is immediately returned. When `f` isn't provided, it is\n// treated as the identity function (the prop value is returned\n// directly).\nEditorView.prototype.someProp = function someProp (propName, f) {\n var prop = this._props && this._props[propName], value;\n if (prop != null && (value = f ? f(prop) : prop)) { return value }\n var plugins = this.state.plugins;\n if (plugins) { for (var i = 0; i < plugins.length; i++) {\n var prop$1 = plugins[i].props[propName];\n if (prop$1 != null && (value = f ? f(prop$1) : prop$1)) { return value }\n } }\n};\n\n// :: () → bool\n// Query whether the view has focus.\nEditorView.prototype.hasFocus = function hasFocus () {\n return this.root.activeElement == this.dom\n};\n\n// :: ()\n// Focus the editor.\nEditorView.prototype.focus = function focus () {\n this.domObserver.stop();\n if (this.editable) { focusPreventScroll(this.dom); }\n selectionToDOM(this);\n this.domObserver.start();\n};\n\n// :: union\n// Get the document root in which the editor exists. This will\n// usually be the top-level `document`, but might be a [shadow\n// DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Shadow_DOM)\n// root if the editor is inside one.\nprototypeAccessors$2.root.get = function () {\n var cached = this._root;\n if (cached == null) { for (var search = this.dom.parentNode; search; search = search.parentNode) {\n if (search.nodeType == 9 || (search.nodeType == 11 && search.host)) {\n if (!search.getSelection) { Object.getPrototypeOf(search).getSelection = function () { return document.getSelection(); }; }\n return this._root = search\n }\n } }\n return cached || document\n};\n\n// :: ({left: number, top: number}) → ?{pos: number, inside: number}\n// Given a pair of viewport coordinates, return the document\n// position that corresponds to them. May return null if the given\n// coordinates aren't inside of the editor. When an object is\n// returned, its `pos` property is the position nearest to the\n// coordinates, and its `inside` property holds the position of the\n// inner node that the position falls inside of, or -1 if it is at\n// the top level, not in any node.\nEditorView.prototype.posAtCoords = function posAtCoords$1 (coords) {\n return posAtCoords(this, coords)\n};\n\n// :: (number) → {left: number, right: number, top: number, bottom: number}\n// Returns the viewport rectangle at a given document position. `left`\n// and `right` will be the same number, as this returns a flat\n// cursor-ish rectangle.\nEditorView.prototype.coordsAtPos = function coordsAtPos$1 (pos) {\n return coordsAtPos(this, pos)\n};\n\n// :: (number) → {node: dom.Node, offset: number}\n// Find the DOM position that corresponds to the given document\n// position. Note that you should **not** mutate the editor's\n// internal DOM, only inspect it (and even that is usually not\n// necessary).\nEditorView.prototype.domAtPos = function domAtPos (pos) {\n return this.docView.domFromPos(pos)\n};\n\n// :: (number) → ?dom.Node\n// Find the DOM node that represents the document node after the\n// given position. May return `null` when the position doesn't point\n// in front of a node or if the node is inside an opaque node view.\n//\n// This is intended to be able to call things like\n// `getBoundingClientRect` on that DOM node. Do **not** mutate the\n// editor DOM directly, or add styling this way, since that will be\n// immediately overriden by the editor as it redraws the node.\nEditorView.prototype.nodeDOM = function nodeDOM (pos) {\n var desc = this.docView.descAt(pos);\n return desc ? desc.nodeDOM : null\n};\n\n// :: (dom.Node, number, ?number) → number\n// Find the document position that corresponds to a given DOM\n// position. (Whenever possible, it is preferable to inspect the\n// document structure directly, rather than poking around in the\n// DOM, but sometimes—for example when interpreting an event\n// target—you don't have a choice.)\n//\n// The `bias` parameter can be used to influence which side of a DOM\n// node to use when the position is inside a leaf node.\nEditorView.prototype.posAtDOM = function posAtDOM (node, offset, bias) {\n if ( bias === void 0 ) bias = -1;\n\n var pos = this.docView.posFromDOM(node, offset, bias);\n if (pos == null) { throw new RangeError(\"DOM position not inside the editor\") }\n return pos\n};\n\n// :: (union<\"up\", \"down\", \"left\", \"right\", \"forward\", \"backward\">, ?EditorState) → bool\n// Find out whether the selection is at the end of a textblock when\n// moving in a given direction. When, for example, given `\"left\"`,\n// it will return true if moving left from the current cursor\n// position would leave that position's parent textblock. Will apply\n// to the view's current state by default, but it is possible to\n// pass a different state.\nEditorView.prototype.endOfTextblock = function endOfTextblock$1 (dir, state) {\n return endOfTextblock(this, state || this.state, dir)\n};\n\n// :: ()\n// Removes the editor from the DOM and destroys all [node\n// views](#view.NodeView).\nEditorView.prototype.destroy = function destroy () {\n if (!this.docView) { return }\n destroyInput(this);\n this.destroyPluginViews();\n if (this.mounted) {\n this.docView.update(this.state.doc, [], viewDecorations(this), this);\n this.dom.textContent = \"\";\n } else if (this.dom.parentNode) {\n this.dom.parentNode.removeChild(this.dom);\n }\n this.docView.destroy();\n this.docView = null;\n};\n\n// Used for testing.\nEditorView.prototype.dispatchEvent = function dispatchEvent$1 (event) {\n return dispatchEvent(this, event)\n};\n\n// :: (Transaction)\n// Dispatch a transaction. Will call\n// [`dispatchTransaction`](#view.DirectEditorProps.dispatchTransaction)\n// when given, and otherwise defaults to applying the transaction to\n// the current state and calling\n// [`updateState`](#view.EditorView.updateState) with the result.\n// This method is bound to the view instance, so that it can be\n// easily passed around.\nEditorView.prototype.dispatch = function dispatch (tr) {\n var dispatchTransaction = this._props.dispatchTransaction;\n if (dispatchTransaction) { dispatchTransaction.call(this, tr); }\n else { this.updateState(this.state.apply(tr)); }\n};\n\nObject.defineProperties( EditorView.prototype, prototypeAccessors$2 );\n\nfunction computeDocDeco(view) {\n var attrs = Object.create(null);\n attrs.class = \"ProseMirror\";\n attrs.contenteditable = String(view.editable);\n\n view.someProp(\"attributes\", function (value) {\n if (typeof value == \"function\") { value = value(view.state); }\n if (value) { for (var attr in value) {\n if (attr == \"class\")\n { attrs.class += \" \" + value[attr]; }\n else if (!attrs[attr] && attr != \"contenteditable\" && attr != \"nodeName\")\n { attrs[attr] = String(value[attr]); }\n } }\n });\n\n return [Decoration.node(0, view.state.doc.content.size, attrs)]\n}\n\nfunction updateCursorWrapper(view) {\n if (view.markCursor) {\n var dom = document.createElement(\"img\");\n dom.setAttribute(\"mark-placeholder\", \"true\");\n view.cursorWrapper = {dom: dom, deco: Decoration.widget(view.state.selection.head, dom, {raw: true, marks: view.markCursor})};\n } else {\n view.cursorWrapper = null;\n }\n}\n\nfunction getEditable(view) {\n return !view.someProp(\"editable\", function (value) { return value(view.state) === false; })\n}\n\nfunction selectionContextChanged(sel1, sel2) {\n var depth = Math.min(sel1.$anchor.sharedDepth(sel1.head), sel2.$anchor.sharedDepth(sel2.head));\n return sel1.$anchor.start(depth) != sel2.$anchor.start(depth)\n}\n\nfunction buildNodeViews(view) {\n var result = {};\n view.someProp(\"nodeViews\", function (obj) {\n for (var prop in obj) { if (!Object.prototype.hasOwnProperty.call(result, prop))\n { result[prop] = obj[prop]; } }\n });\n return result\n}\n\nfunction changedNodeViews(a, b) {\n var nA = 0, nB = 0;\n for (var prop in a) {\n if (a[prop] != b[prop]) { return true }\n nA++;\n }\n for (var _ in b) { nB++; }\n return nA != nB\n}\n\n// EditorProps:: interface\n//\n// Props are configuration values that can be passed to an editor view\n// or included in a plugin. This interface lists the supported props.\n//\n// The various event-handling functions may all return `true` to\n// indicate that they handled the given event. The view will then take\n// care to call `preventDefault` on the event, except with\n// `handleDOMEvents`, where the handler itself is responsible for that.\n//\n// How a prop is resolved depends on the prop. Handler functions are\n// called one at a time, starting with the base props and then\n// searching through the plugins (in order of appearance) until one of\n// them returns true. For some props, the first plugin that yields a\n// value gets precedence.\n//\n// handleDOMEvents:: ?Object<(view: EditorView, event: dom.Event) → bool>\n// Can be an object mapping DOM event type names to functions that\n// handle them. Such functions will be called before any handling\n// ProseMirror does of events fired on the editable DOM element.\n// Contrary to the other event handling props, when returning true\n// from such a function, you are responsible for calling\n// `preventDefault` yourself (or not, if you want to allow the\n// default behavior).\n//\n// handleKeyDown:: ?(view: EditorView, event: dom.KeyboardEvent) → bool\n// Called when the editor receives a `keydown` event.\n//\n// handleKeyPress:: ?(view: EditorView, event: dom.KeyboardEvent) → bool\n// Handler for `keypress` events.\n//\n// handleTextInput:: ?(view: EditorView, from: number, to: number, text: string) → bool\n// Whenever the user directly input text, this handler is called\n// before the input is applied. If it returns `true`, the default\n// behavior of actually inserting the text is suppressed.\n//\n// handleClickOn:: ?(view: EditorView, pos: number, node: Node, nodePos: number, event: dom.MouseEvent, direct: bool) → bool\n// Called for each node around a click, from the inside out. The\n// `direct` flag will be true for the inner node.\n//\n// handleClick:: ?(view: EditorView, pos: number, event: dom.MouseEvent) → bool\n// Called when the editor is clicked, after `handleClickOn` handlers\n// have been called.\n//\n// handleDoubleClickOn:: ?(view: EditorView, pos: number, node: Node, nodePos: number, event: dom.MouseEvent, direct: bool) → bool\n// Called for each node around a double click.\n//\n// handleDoubleClick:: ?(view: EditorView, pos: number, event: dom.MouseEvent) → bool\n// Called when the editor is double-clicked, after `handleDoubleClickOn`.\n//\n// handleTripleClickOn:: ?(view: EditorView, pos: number, node: Node, nodePos: number, event: dom.MouseEvent, direct: bool) → bool\n// Called for each node around a triple click.\n//\n// handleTripleClick:: ?(view: EditorView, pos: number, event: dom.MouseEvent) → bool\n// Called when the editor is triple-clicked, after `handleTripleClickOn`.\n//\n// handlePaste:: ?(view: EditorView, event: dom.ClipboardEvent, slice: Slice) → bool\n// Can be used to override the behavior of pasting. `slice` is the\n// pasted content parsed by the editor, but you can directly access\n// the event to get at the raw content.\n//\n// handleDrop:: ?(view: EditorView, event: dom.Event, slice: Slice, moved: bool) → bool\n// Called when something is dropped on the editor. `moved` will be\n// true if this drop moves from the current selection (which should\n// thus be deleted).\n//\n// handleScrollToSelection:: ?(view: EditorView) → bool\n// Called when the view, after updating its state, tries to scroll\n// the selection into view. A handler function may return false to\n// indicate that it did not handle the scrolling and further\n// handlers or the default behavior should be tried.\n//\n// createSelectionBetween:: ?(view: EditorView, anchor: ResolvedPos, head: ResolvedPos) → ?Selection\n// Can be used to override the way a selection is created when\n// reading a DOM selection between the given anchor and head.\n//\n// domParser:: ?DOMParser\n// The [parser](#model.DOMParser) to use when reading editor changes\n// from the DOM. Defaults to calling\n// [`DOMParser.fromSchema`](#model.DOMParser^fromSchema) on the\n// editor's schema.\n//\n// transformPastedHTML:: ?(html: string) → string\n// Can be used to transform pasted HTML text, _before_ it is parsed,\n// for example to clean it up.\n//\n// clipboardParser:: ?DOMParser\n// The [parser](#model.DOMParser) to use when reading content from\n// the clipboard. When not given, the value of the\n// [`domParser`](#view.EditorProps.domParser) prop is used.\n//\n// transformPastedText:: ?(text: string, plain: bool) → string\n// Transform pasted plain text. The `plain` flag will be true when\n// the text is pasted as plain text.\n//\n// clipboardTextParser:: ?(text: string, $context: ResolvedPos, plain: bool) → Slice\n// A function to parse text from the clipboard into a document\n// slice. Called after\n// [`transformPastedText`](#view.EditorProps.transformPastedText).\n// The default behavior is to split the text into lines, wrap them\n// in `

    ` tags, and call\n// [`clipboardParser`](#view.EditorProps.clipboardParser) on it.\n// The `plain` flag will be true when the text is pasted as plain text.\n//\n// transformPasted:: ?(Slice) → Slice\n// Can be used to transform pasted content before it is applied to\n// the document.\n//\n// nodeViews:: ?Object<(node: Node, view: EditorView, getPos: () → number, decorations: [Decoration]) → NodeView>\n// Allows you to pass custom rendering and behavior logic for nodes\n// and marks. Should map node and mark names to constructor\n// functions that produce a [`NodeView`](#view.NodeView) object\n// implementing the node's display behavior. For nodes, the third\n// argument `getPos` is a function that can be called to get the\n// node's current position, which can be useful when creating\n// transactions to update it. For marks, the third argument is a\n// boolean that indicates whether the mark's content is inline.\n//\n// `decorations` is an array of node or inline decorations that are\n// active around the node. They are automatically drawn in the\n// normal way, and you will usually just want to ignore this, but\n// they can also be used as a way to provide context information to\n// the node view without adding it to the document itself.\n//\n// clipboardSerializer:: ?DOMSerializer\n// The DOM serializer to use when putting content onto the\n// clipboard. If not given, the result of\n// [`DOMSerializer.fromSchema`](#model.DOMSerializer^fromSchema)\n// will be used.\n//\n// clipboardTextSerializer:: ?(Slice) → string\n// A function that will be called to get the text for the current\n// selection when copying text to the clipboard. By default, the\n// editor will use [`textBetween`](#model.Node.textBetween) on the\n// selected range.\n//\n// decorations:: ?(state: EditorState) → ?DecorationSet\n// A set of [document decorations](#view.Decoration) to show in the\n// view.\n//\n// editable:: ?(state: EditorState) → bool\n// When this returns false, the content of the view is not directly\n// editable.\n//\n// attributes:: ?union, (EditorState) → ?Object>\n// Control the DOM attributes of the editable element. May be either\n// an object or a function going from an editor state to an object.\n// By default, the element will get a class `\"ProseMirror\"`, and\n// will have its `contentEditable` attribute determined by the\n// [`editable` prop](#view.EditorProps.editable). Additional classes\n// provided here will be added to the class. For other attributes,\n// the value provided first (as in\n// [`someProp`](#view.EditorView.someProp)) will be used.\n//\n// scrollThreshold:: ?union\n// Determines the distance (in pixels) between the cursor and the\n// end of the visible viewport at which point, when scrolling the\n// cursor into view, scrolling takes place. Defaults to 0.\n//\n// scrollMargin:: ?union\n// Determines the extra space (in pixels) that is left above or\n// below the cursor when it is scrolled into view. Defaults to 5.\n\n// DirectEditorProps:: interface extends EditorProps\n//\n// The props object given directly to the editor view supports two\n// fields that can't be used in plugins:\n//\n// state:: EditorState\n// The current state of the editor.\n//\n// dispatchTransaction:: ?(tr: Transaction)\n// The callback over which to send transactions (state updates)\n// produced by the view. If you specify this, you probably want to\n// make sure this ends up calling the view's\n// [`updateState`](#view.EditorView.updateState) method with a new\n// state that has the transaction\n// [applied](#state.EditorState.apply). The callback will be bound to have\n// the view instance as its `this` binding.\n\nexport { Decoration, DecorationSet, EditorView, endComposition as __endComposition, parseFromClipboard as __parseFromClipboard, serializeForClipboard as __serializeForClipboard };\n//# sourceMappingURL=index.es.js.map\n","import { PluginKey, TextSelection, Selection, SelectionRange, NodeSelection, Plugin } from 'prosemirror-state';\nimport { Fragment, Slice } from 'prosemirror-model';\nimport { keydownHandler } from 'prosemirror-keymap';\nimport { Decoration, DecorationSet } from 'prosemirror-view';\nimport { Transform } from 'prosemirror-transform';\n\n// Because working with row and column-spanning cells is not quite\n// trivial, this code builds up a descriptive structure for a given\n// table node. The structures are cached with the (persistent) table\n// nodes as key, so that they only have to be recomputed when the\n// content of the table changes.\n//\n// This does mean that they have to store table-relative, not\n// document-relative positions. So code that uses them will typically\n// compute the start position of the table and offset positions passed\n// to or gotten from this structure by that amount.\n\nvar readFromCache, addToCache;\n// Prefer using a weak map to cache table maps. Fall back on a\n// fixed-size cache if that's not supported.\nif (typeof WeakMap != \"undefined\") {\n var cache = new WeakMap;\n readFromCache = function (key) { return cache.get(key); };\n addToCache = function (key, value) {\n cache.set(key, value);\n return value\n };\n} else {\n var cache$1 = [], cacheSize = 10, cachePos = 0;\n readFromCache = function (key) {\n for (var i = 0; i < cache$1.length; i += 2)\n { if (cache$1[i] == key) { return cache$1[i + 1] } }\n };\n addToCache = function (key, value) {\n if (cachePos == cacheSize) { cachePos = 0; }\n cache$1[cachePos++] = key;\n return cache$1[cachePos++] = value\n };\n}\n\nvar Rect = function Rect(left, top, right, bottom) {\n this.left = left; this.top = top; this.right = right; this.bottom = bottom;\n};\n\n// ::- A table map describes the structore of a given table. To avoid\n// recomputing them all the time, they are cached per table node. To\n// be able to do that, positions saved in the map are relative to the\n// start of the table, rather than the start of the document.\nvar TableMap = function TableMap(width, height, map, problems) {\n // :: number The width of the table\n this.width = width;\n // :: number The table's height\n this.height = height;\n // :: [number] A width * height array with the start position of\n // the cell covering that part of the table in each slot\n this.map = map;\n // An optional array of problems (cell overlap or non-rectangular\n // shape) for the table, used by the table normalizer.\n this.problems = problems;\n};\n\n// :: (number) → Rect\n// Find the dimensions of the cell at the given position.\nTableMap.prototype.findCell = function findCell (pos) {\n for (var i = 0; i < this.map.length; i++) {\n var curPos = this.map[i];\n if (curPos != pos) { continue }\n var left = i % this.width, top = (i / this.width) | 0;\n var right = left + 1, bottom = top + 1;\n for (var j = 1; right < this.width && this.map[i + j] == curPos; j++) { right++; }\n for (var j$1 = 1; bottom < this.height && this.map[i + (this.width * j$1)] == curPos; j$1++) { bottom++; }\n return new Rect(left, top, right, bottom)\n }\n throw new RangeError(\"No cell with offset \" + pos + \" found\")\n};\n\n// :: (number) → number\n// Find the left side of the cell at the given position.\nTableMap.prototype.colCount = function colCount (pos) {\n for (var i = 0; i < this.map.length; i++)\n { if (this.map[i] == pos) { return i % this.width } }\n throw new RangeError(\"No cell with offset \" + pos + \" found\")\n};\n\n// :: (number, string, number) → ?number\n// Find the next cell in the given direction, starting from the cell\n// at `pos`, if any.\nTableMap.prototype.nextCell = function nextCell (pos, axis, dir) {\n var ref = this.findCell(pos);\n var left = ref.left;\n var right = ref.right;\n var top = ref.top;\n var bottom = ref.bottom;\n if (axis == \"horiz\") {\n if (dir < 0 ? left == 0 : right == this.width) { return null }\n return this.map[top * this.width + (dir < 0 ? left - 1 : right)]\n } else {\n if (dir < 0 ? top == 0 : bottom == this.height) { return null }\n return this.map[left + this.width * (dir < 0 ? top - 1 : bottom)]\n }\n};\n\n// :: (number, number) → Rect\n// Get the rectangle spanning the two given cells.\nTableMap.prototype.rectBetween = function rectBetween (a, b) {\n var ref = this.findCell(a);\n var leftA = ref.left;\n var rightA = ref.right;\n var topA = ref.top;\n var bottomA = ref.bottom;\n var ref$1 = this.findCell(b);\n var leftB = ref$1.left;\n var rightB = ref$1.right;\n var topB = ref$1.top;\n var bottomB = ref$1.bottom;\n return new Rect(Math.min(leftA, leftB), Math.min(topA, topB),\n Math.max(rightA, rightB), Math.max(bottomA, bottomB))\n};\n\n// :: (Rect) → [number]\n// Return the position of all cells that have the top left corner in\n// the given rectangle.\nTableMap.prototype.cellsInRect = function cellsInRect (rect) {\n var result = [], seen = {};\n for (var row = rect.top; row < rect.bottom; row++) {\n for (var col = rect.left; col < rect.right; col++) {\n var index = row * this.width + col, pos = this.map[index];\n if (seen[pos]) { continue }\n seen[pos] = true;\n if ((col != rect.left || !col || this.map[index - 1] != pos) &&\n (row != rect.top || !row || this.map[index - this.width] != pos))\n { result.push(pos); }\n }\n }\n return result\n};\n\n// :: (number, number, Node) → number\n// Return the position at which the cell at the given row and column\n// starts, or would start, if a cell started there.\nTableMap.prototype.positionAt = function positionAt (row, col, table) {\n for (var i = 0, rowStart = 0;; i++) {\n var rowEnd = rowStart + table.child(i).nodeSize;\n if (i == row) {\n var index = col + row * this.width, rowEndIndex = (row + 1) * this.width;\n // Skip past cells from previous rows (via rowspan)\n while (index < rowEndIndex && this.map[index] < rowStart) { index++; }\n return index == rowEndIndex ? rowEnd - 1 : this.map[index]\n }\n rowStart = rowEnd;\n }\n};\n\n// :: (Node) → TableMap\n// Find the table map for the given table node.\nTableMap.get = function get (table) {\n return readFromCache(table) || addToCache(table, computeMap(table))\n};\n\n// Compute a table map.\nfunction computeMap(table) {\n if (table.type.spec.tableRole != \"table\") { throw new RangeError(\"Not a table node: \" + table.type.name) }\n var width = findWidth(table), height = table.childCount;\n var map = [], mapPos = 0, problems = null, colWidths = [];\n for (var i = 0, e = width * height; i < e; i++) { map[i] = 0; }\n\n for (var row = 0, pos = 0; row < height; row++) {\n var rowNode = table.child(row);\n pos++;\n for (var i$1 = 0;; i$1++) {\n while (mapPos < map.length && map[mapPos] != 0) { mapPos++; }\n if (i$1 == rowNode.childCount) { break }\n var cellNode = rowNode.child(i$1);\n var ref = cellNode.attrs;\n var colspan = ref.colspan;\n var rowspan = ref.rowspan;\n var colwidth = ref.colwidth;\n for (var h = 0; h < rowspan; h++) {\n if (h + row >= height) {\n (problems || (problems = [])).push({type: \"overlong_rowspan\", pos: pos, n: rowspan - h});\n break\n }\n var start = mapPos + (h * width);\n for (var w = 0; w < colspan; w++) {\n if (map[start + w] == 0)\n { map[start + w] = pos; }\n else\n { (problems || (problems = [])).push({type: \"collision\", row: row, pos: pos, n: colspan - w}); }\n var colW = colwidth && colwidth[w];\n if (colW) {\n var widthIndex = ((start + w) % width) * 2, prev = colWidths[widthIndex];\n if (prev == null || (prev != colW && colWidths[widthIndex + 1] == 1)) {\n colWidths[widthIndex] = colW;\n colWidths[widthIndex + 1] = 1;\n } else if (prev == colW) {\n colWidths[widthIndex + 1]++;\n }\n }\n }\n }\n mapPos += colspan;\n pos += cellNode.nodeSize;\n }\n var expectedPos = (row + 1) * width, missing = 0;\n while (mapPos < expectedPos) { if (map[mapPos++] == 0) { missing++; } }\n if (missing) { (problems || (problems = [])).push({type: \"missing\", row: row, n: missing}); }\n pos++;\n }\n\n var tableMap = new TableMap(width, height, map, problems), badWidths = false;\n\n // For columns that have defined widths, but whose widths disagree\n // between rows, fix up the cells whose width doesn't match the\n // computed one.\n for (var i$2 = 0; !badWidths && i$2 < colWidths.length; i$2 += 2)\n { if (colWidths[i$2] != null && colWidths[i$2 + 1] < height) { badWidths = true; } }\n if (badWidths) { findBadColWidths(tableMap, colWidths, table); }\n\n return tableMap\n}\n\nfunction findWidth(table) {\n var width = -1, hasRowSpan = false;\n for (var row = 0; row < table.childCount; row++) {\n var rowNode = table.child(row), rowWidth = 0;\n if (hasRowSpan) { for (var j = 0; j < row; j++) {\n var prevRow = table.child(j);\n for (var i = 0; i < prevRow.childCount; i++) {\n var cell = prevRow.child(i);\n if (j + cell.attrs.rowspan > row) { rowWidth += cell.attrs.colspan; }\n }\n } }\n for (var i$1 = 0; i$1 < rowNode.childCount; i$1++) {\n var cell$1 = rowNode.child(i$1);\n rowWidth += cell$1.attrs.colspan;\n if (cell$1.attrs.rowspan > 1) { hasRowSpan = true; }\n }\n if (width == -1)\n { width = rowWidth; }\n else if (width != rowWidth)\n { width = Math.max(width, rowWidth); }\n }\n return width\n}\n\nfunction findBadColWidths(map, colWidths, table) {\n if (!map.problems) { map.problems = []; }\n for (var i = 0, seen = {}; i < map.map.length; i++) {\n var pos = map.map[i];\n if (seen[pos]) { continue }\n seen[pos] = true;\n var node = table.nodeAt(pos), updated = null;\n for (var j = 0; j < node.attrs.colspan; j++) {\n var col = (i + j) % map.width, colWidth = colWidths[col * 2];\n if (colWidth != null && (!node.attrs.colwidth || node.attrs.colwidth[j] != colWidth))\n { (updated || (updated = freshColWidth(node.attrs)))[j] = colWidth; }\n }\n if (updated) { map.problems.unshift({type: \"colwidth mismatch\", pos: pos, colwidth: updated}); }\n }\n}\n\nfunction freshColWidth(attrs) {\n if (attrs.colwidth) { return attrs.colwidth.slice() }\n var result = [];\n for (var i = 0; i < attrs.colspan; i++) { result.push(0); }\n return result\n}\n\n// Helper for creating a schema that supports tables.\n\nfunction getCellAttrs(dom, extraAttrs) {\n var widthAttr = dom.getAttribute(\"data-colwidth\");\n var widths = widthAttr && /^\\d+(,\\d+)*$/.test(widthAttr) ? widthAttr.split(\",\").map(function (s) { return Number(s); }) : null;\n var colspan = Number(dom.getAttribute(\"colspan\") || 1);\n var result = {\n colspan: colspan,\n rowspan: Number(dom.getAttribute(\"rowspan\") || 1),\n colwidth: widths && widths.length == colspan ? widths : null\n };\n for (var prop in extraAttrs) {\n var getter = extraAttrs[prop].getFromDOM;\n var value = getter && getter(dom);\n if (value != null) { result[prop] = value; }\n }\n return result\n}\n\nfunction setCellAttrs(node, extraAttrs) {\n var attrs = {};\n if (node.attrs.colspan != 1) { attrs.colspan = node.attrs.colspan; }\n if (node.attrs.rowspan != 1) { attrs.rowspan = node.attrs.rowspan; }\n if (node.attrs.colwidth)\n { attrs[\"data-colwidth\"] = node.attrs.colwidth.join(\",\"); }\n for (var prop in extraAttrs) {\n var setter = extraAttrs[prop].setDOMAttr;\n if (setter) { setter(node.attrs[prop], attrs); }\n }\n return attrs\n}\n\n// :: (Object) → Object\n//\n// This function creates a set of [node\n// specs](http://prosemirror.net/docs/ref/#model.SchemaSpec.nodes) for\n// `table`, `table_row`, and `table_cell` nodes types as used by this\n// module. The result can then be added to the set of nodes when\n// creating a a schema.\n//\n// options::- The following options are understood:\n//\n// tableGroup:: ?string\n// A group name (something like `\"block\"`) to add to the table\n// node type.\n//\n// cellContent:: string\n// The content expression for table cells.\n//\n// cellAttributes:: ?Object\n// Additional attributes to add to cells. Maps attribute names to\n// objects with the following properties:\n//\n// default:: any\n// The attribute's default value.\n//\n// getFromDOM:: ?(dom.Node) → any\n// A function to read the attribute's value from a DOM node.\n//\n// setDOMAttr:: ?(value: any, attrs: Object)\n// A function to add the attribute's value to an attribute\n// object that's used to render the cell's DOM.\nfunction tableNodes(options) {\n var extraAttrs = options.cellAttributes || {};\n var cellAttrs = {\n colspan: {default: 1},\n rowspan: {default: 1},\n colwidth: {default: null}\n };\n for (var prop in extraAttrs)\n { cellAttrs[prop] = {default: extraAttrs[prop].default}; }\n\n return {\n table: {\n content: \"table_row+\",\n tableRole: \"table\",\n isolating: true,\n group: options.tableGroup,\n parseDOM: [{tag: \"table\"}],\n toDOM: function toDOM() { return [\"table\", [\"tbody\", 0]] }\n },\n table_row: {\n content: \"(table_cell | table_header)*\",\n tableRole: \"row\",\n parseDOM: [{tag: \"tr\"}],\n toDOM: function toDOM() { return [\"tr\", 0] }\n },\n table_cell: {\n content: options.cellContent,\n attrs: cellAttrs,\n tableRole: \"cell\",\n isolating: true,\n parseDOM: [{tag: \"td\", getAttrs: function (dom) { return getCellAttrs(dom, extraAttrs); }}],\n toDOM: function toDOM(node) { return [\"td\", setCellAttrs(node, extraAttrs), 0] }\n },\n table_header: {\n content: options.cellContent,\n attrs: cellAttrs,\n tableRole: \"header_cell\",\n isolating: true,\n parseDOM: [{tag: \"th\", getAttrs: function (dom) { return getCellAttrs(dom, extraAttrs); }}],\n toDOM: function toDOM(node) { return [\"th\", setCellAttrs(node, extraAttrs), 0] }\n }\n }\n}\n\nfunction tableNodeTypes(schema) {\n var result = schema.cached.tableNodeTypes;\n if (!result) {\n result = schema.cached.tableNodeTypes = {};\n for (var name in schema.nodes) {\n var type = schema.nodes[name], role = type.spec.tableRole;\n if (role) { result[role] = type; }\n }\n }\n return result\n}\n\n// Various helper function for working with tables\n\nvar key = new PluginKey(\"selectingCells\");\n\nfunction cellAround($pos) {\n for (var d = $pos.depth - 1; d > 0; d--)\n { if ($pos.node(d).type.spec.tableRole == \"row\") { return $pos.node(0).resolve($pos.before(d + 1)) } }\n return null\n}\n\nfunction cellWrapping($pos) {\n for (var d = $pos.depth; d > 0; d--) { // Sometimes the cell can be in the same depth.\n var role = $pos.node(d).type.spec.tableRole;\n if (role === \"cell\" || role === 'header_cell') { return $pos.node(d) }\n }\n return null\n}\n\nfunction isInTable(state) {\n var $head = state.selection.$head;\n for (var d = $head.depth; d > 0; d--) { if ($head.node(d).type.spec.tableRole == \"row\") { return true } }\n return false\n}\n\nfunction selectionCell(state) {\n var sel = state.selection;\n if (sel.$anchorCell) {\n return sel.$anchorCell.pos > sel.$headCell.pos ? sel.$anchorCell : sel.$headCell;\n } else if (sel.node && sel.node.type.spec.tableRole == \"cell\") {\n return sel.$anchor\n }\n return cellAround(sel.$head) || cellNear(sel.$head)\n}\n\nfunction cellNear($pos) {\n for (var after = $pos.nodeAfter, pos = $pos.pos; after; after = after.firstChild, pos++) {\n var role = after.type.spec.tableRole;\n if (role == \"cell\" || role == \"header_cell\") { return $pos.doc.resolve(pos) }\n }\n for (var before = $pos.nodeBefore, pos$1 = $pos.pos; before; before = before.lastChild, pos$1--) {\n var role$1 = before.type.spec.tableRole;\n if (role$1 == \"cell\" || role$1 == \"header_cell\") { return $pos.doc.resolve(pos$1 - before.nodeSize) }\n }\n}\n\nfunction pointsAtCell($pos) {\n return $pos.parent.type.spec.tableRole == \"row\" && $pos.nodeAfter\n}\n\nfunction moveCellForward($pos) {\n return $pos.node(0).resolve($pos.pos + $pos.nodeAfter.nodeSize)\n}\n\nfunction inSameTable($a, $b) {\n return $a.depth == $b.depth && $a.pos >= $b.start(-1) && $a.pos <= $b.end(-1)\n}\n\nfunction findCell($pos) {\n return TableMap.get($pos.node(-1)).findCell($pos.pos - $pos.start(-1))\n}\n\nfunction colCount($pos) {\n return TableMap.get($pos.node(-1)).colCount($pos.pos - $pos.start(-1))\n}\n\nfunction nextCell($pos, axis, dir) {\n var start = $pos.start(-1), map = TableMap.get($pos.node(-1));\n var moved = map.nextCell($pos.pos - start, axis, dir);\n return moved == null ? null : $pos.node(0).resolve(start + moved)\n}\n\nfunction setAttr(attrs, name, value) {\n var result = {};\n for (var prop in attrs) { result[prop] = attrs[prop]; }\n result[name] = value;\n return result\n}\n\nfunction removeColSpan(attrs, pos, n) {\n if ( n === void 0 ) n=1;\n\n var result = setAttr(attrs, \"colspan\", attrs.colspan - n);\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n result.colwidth.splice(pos, n);\n if (!result.colwidth.some(function (w) { return w > 0; })) { result.colwidth = null; }\n }\n return result\n}\n\nfunction addColSpan(attrs, pos, n) {\n if ( n === void 0 ) n=1;\n\n var result = setAttr(attrs, \"colspan\", attrs.colspan + n);\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n for (var i = 0; i < n; i++) { result.colwidth.splice(pos, 0, 0); }\n }\n return result\n}\n\nfunction columnIsHeader(map, table, col) {\n var headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (var row = 0; row < map.height; row++)\n { if (table.nodeAt(map.map[col + row * map.width]).type != headerCell)\n { return false } }\n return true\n}\n\n// This file defines a ProseMirror selection subclass that models\n\n// ::- A [`Selection`](http://prosemirror.net/docs/ref/#state.Selection)\n// subclass that represents a cell selection spanning part of a table.\n// With the plugin enabled, these will be created when the user\n// selects across cells, and will be drawn by giving selected cells a\n// `selectedCell` CSS class.\nvar CellSelection = /*@__PURE__*/(function (Selection) {\n function CellSelection($anchorCell, $headCell) {\n if ( $headCell === void 0 ) $headCell = $anchorCell;\n\n var table = $anchorCell.node(-1), map = TableMap.get(table), start = $anchorCell.start(-1);\n var rect = map.rectBetween($anchorCell.pos - start, $headCell.pos - start);\n var doc = $anchorCell.node(0);\n var cells = map.cellsInRect(rect).filter(function (p) { return p != $headCell.pos - start; });\n // Make the head cell the first range, so that it counts as the\n // primary part of the selection\n cells.unshift($headCell.pos - start);\n var ranges = cells.map(function (pos) {\n var cell = table.nodeAt(pos), from = pos + start + 1;\n return new SelectionRange(doc.resolve(from), doc.resolve(from + cell.content.size))\n });\n Selection.call(this, ranges[0].$from, ranges[0].$to, ranges);\n // :: ResolvedPos\n // A resolved position pointing _in front of_ the anchor cell (the one\n // that doesn't move when extending the selection).\n this.$anchorCell = $anchorCell;\n // :: ResolvedPos\n // A resolved position pointing in front of the head cell (the one\n // moves when extending the selection).\n this.$headCell = $headCell;\n }\n\n if ( Selection ) CellSelection.__proto__ = Selection;\n CellSelection.prototype = Object.create( Selection && Selection.prototype );\n CellSelection.prototype.constructor = CellSelection;\n\n CellSelection.prototype.map = function map (doc, mapping) {\n var $anchorCell = doc.resolve(mapping.map(this.$anchorCell.pos));\n var $headCell = doc.resolve(mapping.map(this.$headCell.pos));\n if (pointsAtCell($anchorCell) && pointsAtCell($headCell) && inSameTable($anchorCell, $headCell)) {\n var tableChanged = this.$anchorCell.node(-1) != $anchorCell.node(-1);\n if (tableChanged && this.isRowSelection())\n { return CellSelection.rowSelection($anchorCell, $headCell) }\n else if (tableChanged && this.isColSelection())\n { return CellSelection.colSelection($anchorCell, $headCell) }\n else\n { return new CellSelection($anchorCell, $headCell) }\n }\n return TextSelection.between($anchorCell, $headCell)\n };\n\n // :: () → Slice\n // Returns a rectangular slice of table rows containing the selected\n // cells.\n CellSelection.prototype.content = function content () {\n var table = this.$anchorCell.node(-1), map = TableMap.get(table), start = this.$anchorCell.start(-1);\n var rect = map.rectBetween(this.$anchorCell.pos - start, this.$headCell.pos - start);\n var seen = {}, rows = [];\n for (var row = rect.top; row < rect.bottom; row++) {\n var rowContent = [];\n for (var index = row * map.width + rect.left, col = rect.left; col < rect.right; col++, index++) {\n var pos = map.map[index];\n if (!seen[pos]) {\n seen[pos] = true;\n var cellRect = map.findCell(pos), cell = table.nodeAt(pos);\n var extraLeft = rect.left - cellRect.left, extraRight = cellRect.right - rect.right;\n if (extraLeft > 0 || extraRight > 0) {\n var attrs = cell.attrs;\n if (extraLeft > 0) { attrs = removeColSpan(attrs, 0, extraLeft); }\n if (extraRight > 0) { attrs = removeColSpan(attrs, attrs.colspan - extraRight, extraRight); }\n if (cellRect.left < rect.left) { cell = cell.type.createAndFill(attrs); }\n else { cell = cell.type.create(attrs, cell.content); }\n }\n if (cellRect.top < rect.top || cellRect.bottom > rect.bottom) {\n var attrs$1 = setAttr(cell.attrs, \"rowspan\", Math.min(cellRect.bottom, rect.bottom) - Math.max(cellRect.top, rect.top));\n if (cellRect.top < rect.top) { cell = cell.type.createAndFill(attrs$1); }\n else { cell = cell.type.create(attrs$1, cell.content); }\n }\n rowContent.push(cell);\n }\n }\n rows.push(table.child(row).copy(Fragment.from(rowContent)));\n }\n\n var fragment = this.isColSelection() && this.isRowSelection() ? table : rows;\n return new Slice(Fragment.from(fragment), 1, 1)\n };\n\n CellSelection.prototype.replace = function replace (tr, content) {\n if ( content === void 0 ) content = Slice.empty;\n\n var mapFrom = tr.steps.length, ranges = this.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var ref = ranges[i];\n var $from = ref.$from;\n var $to = ref.$to;\n var mapping = tr.mapping.slice(mapFrom);\n tr.replace(mapping.map($from.pos), mapping.map($to.pos), i ? Slice.empty : content);\n }\n var sel = Selection.findFrom(tr.doc.resolve(tr.mapping.slice(mapFrom).map(this.to)), -1);\n if (sel) { tr.setSelection(sel); }\n };\n\n CellSelection.prototype.replaceWith = function replaceWith (tr, node) {\n this.replace(tr, new Slice(Fragment.from(node), 0, 0));\n };\n\n CellSelection.prototype.forEachCell = function forEachCell (f) {\n var table = this.$anchorCell.node(-1), map = TableMap.get(table), start = this.$anchorCell.start(-1);\n var cells = map.cellsInRect(map.rectBetween(this.$anchorCell.pos - start, this.$headCell.pos - start));\n for (var i = 0; i < cells.length; i++)\n { f(table.nodeAt(cells[i]), start + cells[i]); }\n };\n\n // :: () → bool\n // True if this selection goes all the way from the top to the\n // bottom of the table.\n CellSelection.prototype.isColSelection = function isColSelection () {\n var anchorTop = this.$anchorCell.index(-1), headTop = this.$headCell.index(-1);\n if (Math.min(anchorTop, headTop) > 0) { return false }\n var anchorBot = anchorTop + this.$anchorCell.nodeAfter.attrs.rowspan,\n headBot = headTop + this.$headCell.nodeAfter.attrs.rowspan;\n return Math.max(anchorBot, headBot) == this.$headCell.node(-1).childCount\n };\n\n // :: (ResolvedPos, ?ResolvedPos) → CellSelection\n // Returns the smallest column selection that covers the given anchor\n // and head cell.\n CellSelection.colSelection = function colSelection ($anchorCell, $headCell) {\n if ( $headCell === void 0 ) $headCell = $anchorCell;\n\n var map = TableMap.get($anchorCell.node(-1)), start = $anchorCell.start(-1);\n var anchorRect = map.findCell($anchorCell.pos - start), headRect = map.findCell($headCell.pos - start);\n var doc = $anchorCell.node(0);\n if (anchorRect.top <= headRect.top) {\n if (anchorRect.top > 0)\n { $anchorCell = doc.resolve(start + map.map[anchorRect.left]); }\n if (headRect.bottom < map.height)\n { $headCell = doc.resolve(start + map.map[map.width * (map.height - 1) + headRect.right - 1]); }\n } else {\n if (headRect.top > 0)\n { $headCell = doc.resolve(start + map.map[headRect.left]); }\n if (anchorRect.bottom < map.height)\n { $anchorCell = doc.resolve(start + map.map[map.width * (map.height - 1) + anchorRect.right - 1]); }\n }\n return new CellSelection($anchorCell, $headCell)\n };\n\n // :: () → bool\n // True if this selection goes all the way from the left to the\n // right of the table.\n CellSelection.prototype.isRowSelection = function isRowSelection () {\n var map = TableMap.get(this.$anchorCell.node(-1)), start = this.$anchorCell.start(-1);\n var anchorLeft = map.colCount(this.$anchorCell.pos - start),\n headLeft = map.colCount(this.$headCell.pos - start);\n if (Math.min(anchorLeft, headLeft) > 0) { return false }\n var anchorRight = anchorLeft + this.$anchorCell.nodeAfter.attrs.colspan,\n headRight = headLeft + this.$headCell.nodeAfter.attrs.colspan;\n return Math.max(anchorRight, headRight) == map.width\n };\n\n CellSelection.prototype.eq = function eq (other) {\n return other instanceof CellSelection && other.$anchorCell.pos == this.$anchorCell.pos &&\n other.$headCell.pos == this.$headCell.pos\n };\n\n // :: (ResolvedPos, ?ResolvedPos) → CellSelection\n // Returns the smallest row selection that covers the given anchor\n // and head cell.\n CellSelection.rowSelection = function rowSelection ($anchorCell, $headCell) {\n if ( $headCell === void 0 ) $headCell = $anchorCell;\n\n var map = TableMap.get($anchorCell.node(-1)), start = $anchorCell.start(-1);\n var anchorRect = map.findCell($anchorCell.pos - start), headRect = map.findCell($headCell.pos - start);\n var doc = $anchorCell.node(0);\n if (anchorRect.left <= headRect.left) {\n if (anchorRect.left > 0)\n { $anchorCell = doc.resolve(start + map.map[anchorRect.top * map.width]); }\n if (headRect.right < map.width)\n { $headCell = doc.resolve(start + map.map[map.width * (headRect.top + 1) - 1]); }\n } else {\n if (headRect.left > 0)\n { $headCell = doc.resolve(start + map.map[headRect.top * map.width]); }\n if (anchorRect.right < map.width)\n { $anchorCell = doc.resolve(start + map.map[map.width * (anchorRect.top + 1) - 1]); }\n }\n return new CellSelection($anchorCell, $headCell)\n };\n\n CellSelection.prototype.toJSON = function toJSON () {\n return {type: \"cell\", anchor: this.$anchorCell.pos, head: this.$headCell.pos}\n };\n\n CellSelection.fromJSON = function fromJSON (doc, json) {\n return new CellSelection(doc.resolve(json.anchor), doc.resolve(json.head))\n };\n\n // :: (Node, number, ?number) → CellSelection\n CellSelection.create = function create (doc, anchorCell, headCell) {\n if ( headCell === void 0 ) headCell = anchorCell;\n\n return new CellSelection(doc.resolve(anchorCell), doc.resolve(headCell))\n };\n\n CellSelection.prototype.getBookmark = function getBookmark () { return new CellBookmark(this.$anchorCell.pos, this.$headCell.pos) };\n\n return CellSelection;\n}(Selection));\n\nCellSelection.prototype.visible = false;\n\nSelection.jsonID(\"cell\", CellSelection);\n\nvar CellBookmark = function CellBookmark(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n};\nCellBookmark.prototype.map = function map (mapping) {\n return new CellBookmark(mapping.map(this.anchor), mapping.map(this.head))\n};\nCellBookmark.prototype.resolve = function resolve (doc) {\n var $anchorCell = doc.resolve(this.anchor), $headCell = doc.resolve(this.head);\n if ($anchorCell.parent.type.spec.tableRole == \"row\" &&\n $headCell.parent.type.spec.tableRole == \"row\" &&\n $anchorCell.index() < $anchorCell.parent.childCount &&\n $headCell.index() < $headCell.parent.childCount &&\n inSameTable($anchorCell, $headCell))\n { return new CellSelection($anchorCell, $headCell) }\n else\n { return Selection.near($headCell, 1) }\n};\n\nfunction drawCellSelection(state) {\n if (!(state.selection instanceof CellSelection)) { return null }\n var cells = [];\n state.selection.forEachCell(function (node, pos) {\n cells.push(Decoration.node(pos, pos + node.nodeSize, {class: \"selectedCell\"}));\n });\n return DecorationSet.create(state.doc, cells)\n}\n\nfunction isCellBoundarySelection(ref) {\n var $from = ref.$from;\n var $to = ref.$to;\n\n if ($from.pos == $to.pos || $from.pos < $from.pos - 6) { return false } // Cheap elimination\n var afterFrom = $from.pos, beforeTo = $to.pos, depth = $from.depth;\n for (; depth >= 0; depth--, afterFrom++)\n { if ($from.after(depth + 1) < $from.end(depth)) { break } }\n for (var d = $to.depth; d >= 0; d--, beforeTo--)\n { if ($to.before(d + 1) > $to.start(d)) { break } }\n return afterFrom == beforeTo && /row|table/.test($from.node(depth).type.spec.tableRole)\n}\n\nfunction isTextSelectionAcrossCells(ref) {\n var $from = ref.$from;\n var $to = ref.$to;\n\n var fromCellBoundaryNode;\n var toCellBoundaryNode;\n\n for (var i = $from.depth; i > 0; i--) {\n var node = $from.node(i);\n if (node.type.spec.tableRole === 'cell' || node.type.spec.tableRole === 'header_cell') {\n fromCellBoundaryNode = node;\n break;\n }\n }\n\n for (var i$1 = $to.depth; i$1 > 0; i$1--) {\n var node$1 = $to.node(i$1);\n if (node$1.type.spec.tableRole === 'cell' || node$1.type.spec.tableRole === 'header_cell') {\n toCellBoundaryNode = node$1;\n break;\n }\n }\n\n return fromCellBoundaryNode !== toCellBoundaryNode && $to.parentOffset === 0\n}\n\nfunction normalizeSelection(state, tr, allowTableNodeSelection) {\n var sel = (tr || state).selection, doc = (tr || state).doc, normalize, role;\n if (sel instanceof NodeSelection && (role = sel.node.type.spec.tableRole)) {\n if (role == \"cell\" || role == \"header_cell\") {\n normalize = CellSelection.create(doc, sel.from);\n } else if (role == \"row\") {\n var $cell = doc.resolve(sel.from + 1);\n normalize = CellSelection.rowSelection($cell, $cell);\n } else if (!allowTableNodeSelection) {\n var map = TableMap.get(sel.node), start = sel.from + 1;\n var lastCell = start + map.map[map.width * map.height - 1];\n normalize = CellSelection.create(doc, start + 1, lastCell);\n }\n } else if (sel instanceof TextSelection && isCellBoundarySelection(sel)) {\n normalize = TextSelection.create(doc, sel.from);\n } else if (sel instanceof TextSelection && isTextSelectionAcrossCells(sel)) {\n normalize = TextSelection.create(doc, sel.$from.start(), sel.$from.end());\n }\n if (normalize)\n { (tr || (tr = state.tr)).setSelection(normalize); }\n return tr\n}\n\n// Utilities used for copy/paste handling.\n\n// Utilities to help with copying and pasting table cells\n\n// : (Slice) → ?{width: number, height: number, rows: [Fragment]}\n// Get a rectangular area of cells from a slice, or null if the outer\n// nodes of the slice aren't table cells or rows.\nfunction pastedCells(slice) {\n if (!slice.size) { return null }\n var content = slice.content;\n var openStart = slice.openStart;\n var openEnd = slice.openEnd;\n while (content.childCount == 1 && (openStart > 0 && openEnd > 0 || content.firstChild.type.spec.tableRole == \"table\")) {\n openStart--;\n openEnd--;\n content = content.firstChild.content;\n }\n var first = content.firstChild, role = first.type.spec.tableRole;\n var schema = first.type.schema, rows = [];\n if (role == \"row\") {\n for (var i = 0; i < content.childCount; i++) {\n var cells = content.child(i).content;\n var left = i ? 0 : Math.max(0, openStart - 1);\n var right = i < content.childCount - 1 ? 0 : Math.max(0, openEnd - 1);\n if (left || right) { cells = fitSlice(tableNodeTypes(schema).row, new Slice(cells, left, right)).content; }\n rows.push(cells);\n }\n } else if (role == \"cell\" || role == \"header_cell\") {\n rows.push(openStart || openEnd ? fitSlice(tableNodeTypes(schema).row, new Slice(content, openStart, openEnd)).content : content);\n } else {\n return null\n }\n return ensureRectangular(schema, rows)\n}\n\n// : (Schema, [Fragment]) → {width: number, height: number, rows: [Fragment]}\n// Compute the width and height of a set of cells, and make sure each\n// row has the same number of cells.\nfunction ensureRectangular(schema, rows) {\n var widths = [];\n for (var i = 0; i < rows.length; i++) {\n var row = rows[i];\n for (var j = row.childCount - 1; j >= 0; j--) {\n var ref = row.child(j).attrs;\n var rowspan = ref.rowspan;\n var colspan = ref.colspan;\n for (var r = i; r < i + rowspan; r++)\n { widths[r] = (widths[r] || 0) + colspan; }\n }\n }\n var width = 0;\n for (var r$1 = 0; r$1 < widths.length; r$1++) { width = Math.max(width, widths[r$1]); }\n for (var r$2 = 0; r$2 < widths.length; r$2++) {\n if (r$2 >= rows.length) { rows.push(Fragment.empty); }\n if (widths[r$2] < width) {\n var empty = tableNodeTypes(schema).cell.createAndFill(), cells = [];\n for (var i$1 = widths[r$2]; i$1 < width; i$1++) { cells.push(empty); }\n rows[r$2] = rows[r$2].append(Fragment.from(cells));\n }\n }\n return {height: rows.length, width: width, rows: rows}\n}\n\nfunction fitSlice(nodeType, slice) {\n var node = nodeType.createAndFill();\n var tr = new Transform(node).replace(0, node.content.size, slice);\n return tr.doc\n}\n\n// : ({width: number, height: number, rows: [Fragment]}, number, number) → {width: number, height: number, rows: [Fragment]}\n// Clip or extend (repeat) the given set of cells to cover the given\n// width and height. Will clip rowspan/colspan cells at the edges when\n// they stick out.\nfunction clipCells(ref, newWidth, newHeight) {\n var width = ref.width;\n var height = ref.height;\n var rows = ref.rows;\n\n if (width != newWidth) {\n var added = [], newRows = [];\n for (var row = 0; row < rows.length; row++) {\n var frag = rows[row], cells = [];\n for (var col = added[row] || 0, i = 0; col < newWidth; i++) {\n var cell = frag.child(i % frag.childCount);\n if (col + cell.attrs.colspan > newWidth)\n { cell = cell.type.create(removeColSpan(cell.attrs, cell.attrs.colspan, col + cell.attrs.colspan - newWidth), cell.content); }\n cells.push(cell);\n col += cell.attrs.colspan;\n for (var j = 1; j < cell.attrs.rowspan; j++)\n { added[row + j] = (added[row + j] || 0) + cell.attrs.colspan; }\n }\n newRows.push(Fragment.from(cells));\n }\n rows = newRows;\n width = newWidth;\n }\n\n if (height != newHeight) {\n var newRows$1 = [];\n for (var row$1 = 0, i$1 = 0; row$1 < newHeight; row$1++, i$1++) {\n var cells$1 = [], source = rows[i$1 % height];\n for (var j$1 = 0; j$1 < source.childCount; j$1++) {\n var cell$1 = source.child(j$1);\n if (row$1 + cell$1.attrs.rowspan > newHeight)\n { cell$1 = cell$1.type.create(setAttr(cell$1.attrs, \"rowspan\", Math.max(1, newHeight - cell$1.attrs.rowspan)), cell$1.content); }\n cells$1.push(cell$1);\n }\n newRows$1.push(Fragment.from(cells$1));\n }\n rows = newRows$1;\n height = newHeight;\n }\n\n return {width: width, height: height, rows: rows}\n}\n\n// Make sure a table has at least the given width and height. Return\n// true if something was changed.\nfunction growTable(tr, map, table, start, width, height, mapFrom) {\n var schema = tr.doc.type.schema, types = tableNodeTypes(schema), empty, emptyHead;\n if (width > map.width) {\n for (var row = 0, rowEnd = 0; row < map.height; row++) {\n var rowNode = table.child(row);\n rowEnd += rowNode.nodeSize;\n var cells = [], add = (void 0);\n if (rowNode.lastChild == null || rowNode.lastChild.type == types.cell)\n { add = empty || (empty = types.cell.createAndFill()); }\n else\n { add = emptyHead || (emptyHead = types.header_cell.createAndFill()); }\n for (var i = map.width; i < width; i++) { cells.push(add); }\n tr.insert(tr.mapping.slice(mapFrom).map(rowEnd - 1 + start), cells);\n }\n }\n if (height > map.height) {\n var cells$1 = [];\n for (var i$1 = 0, start$1 = (map.height - 1) * map.width; i$1 < Math.max(map.width, width); i$1++) {\n var header = i$1 >= map.width ? false :\n table.nodeAt(map.map[start$1 + i$1]).type == types.header_cell;\n cells$1.push(header\n ? (emptyHead || (emptyHead = types.header_cell.createAndFill()))\n : (empty || (empty = types.cell.createAndFill())));\n }\n\n var emptyRow = types.row.create(null, Fragment.from(cells$1)), rows = [];\n for (var i$2 = map.height; i$2 < height; i$2++) { rows.push(emptyRow); }\n tr.insert(tr.mapping.slice(mapFrom).map(start + table.nodeSize - 2), rows);\n }\n return !!(empty || emptyHead)\n}\n\n// Make sure the given line (left, top) to (right, top) doesn't cross\n// any rowspan cells by splitting cells that cross it. Return true if\n// something changed.\nfunction isolateHorizontal(tr, map, table, start, left, right, top, mapFrom) {\n if (top == 0 || top == map.height) { return false }\n var found = false;\n for (var col = left; col < right; col++) {\n var index = top * map.width + col, pos = map.map[index];\n if (map.map[index - map.width] == pos) {\n found = true;\n var cell = table.nodeAt(pos);\n var ref = map.findCell(pos);\n var cellTop = ref.top;\n var cellLeft = ref.left;\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + start), null, setAttr(cell.attrs, \"rowspan\", top - cellTop));\n tr.insert(tr.mapping.slice(mapFrom).map(map.positionAt(top, cellLeft, table)),\n cell.type.createAndFill(setAttr(cell.attrs, \"rowspan\", (cellTop + cell.attrs.rowspan) - top)));\n col += cell.attrs.colspan - 1;\n }\n }\n return found\n}\n\n// Make sure the given line (left, top) to (left, bottom) doesn't\n// cross any colspan cells by splitting cells that cross it. Return\n// true if something changed.\nfunction isolateVertical(tr, map, table, start, top, bottom, left, mapFrom) {\n if (left == 0 || left == map.width) { return false }\n var found = false;\n for (var row = top; row < bottom; row++) {\n var index = row * map.width + left, pos = map.map[index];\n if (map.map[index - 1] == pos) {\n found = true;\n var cell = table.nodeAt(pos), cellLeft = map.colCount(pos);\n var updatePos = tr.mapping.slice(mapFrom).map(pos + start);\n tr.setNodeMarkup(updatePos, null, removeColSpan(cell.attrs, left - cellLeft, cell.attrs.colspan - (left - cellLeft)));\n tr.insert(updatePos + cell.nodeSize, cell.type.createAndFill(removeColSpan(cell.attrs, 0, left - cellLeft)));\n row += cell.attrs.rowspan - 1;\n }\n }\n return found\n}\n\n// Insert the given set of cells (as returned by `pastedCells`) into a\n// table, at the position pointed at by rect.\nfunction insertCells(state, dispatch, tableStart, rect, cells) {\n var table = tableStart ? state.doc.nodeAt(tableStart - 1) : state.doc, map = TableMap.get(table);\n var top = rect.top;\n var left = rect.left;\n var right = left + cells.width, bottom = top + cells.height;\n var tr = state.tr, mapFrom = 0;\n function recomp() {\n table = tableStart ? tr.doc.nodeAt(tableStart - 1) : tr.doc;\n map = TableMap.get(table);\n mapFrom = tr.mapping.maps.length;\n }\n // Prepare the table to be large enough and not have any cells\n // crossing the boundaries of the rectangle that we want to\n // insert into. If anything about it changes, recompute the table\n // map so that subsequent operations can see the current shape.\n if (growTable(tr, map, table, tableStart, right, bottom, mapFrom)) { recomp(); }\n if (isolateHorizontal(tr, map, table, tableStart, left, right, top, mapFrom)) { recomp(); }\n if (isolateHorizontal(tr, map, table, tableStart, left, right, bottom, mapFrom)) { recomp(); }\n if (isolateVertical(tr, map, table, tableStart, top, bottom, left, mapFrom)) { recomp(); }\n if (isolateVertical(tr, map, table, tableStart, top, bottom, right, mapFrom)) { recomp(); }\n\n for (var row = top; row < bottom; row++) {\n var from = map.positionAt(row, left, table), to = map.positionAt(row, right, table);\n tr.replace(tr.mapping.slice(mapFrom).map(from + tableStart), tr.mapping.slice(mapFrom).map(to + tableStart),\n new Slice(cells.rows[row - top], 0, 0));\n }\n recomp();\n tr.setSelection(new CellSelection(tr.doc.resolve(tableStart + map.positionAt(top, left, table)),\n tr.doc.resolve(tableStart + map.positionAt(bottom - 1, right - 1, table))));\n dispatch(tr);\n}\n\n// This file defines a number of helpers for wiring up user input to\n\nvar handleKeyDown = keydownHandler({\n \"ArrowLeft\": arrow(\"horiz\", -1),\n \"ArrowRight\": arrow(\"horiz\", 1),\n \"ArrowUp\": arrow(\"vert\", -1),\n \"ArrowDown\": arrow(\"vert\", 1),\n\n \"Shift-ArrowLeft\": shiftArrow(\"horiz\", -1),\n \"Shift-ArrowRight\": shiftArrow(\"horiz\", 1),\n \"Shift-ArrowUp\": shiftArrow(\"vert\", -1),\n \"Shift-ArrowDown\": shiftArrow(\"vert\", 1),\n\n \"Backspace\": deleteCellSelection,\n \"Mod-Backspace\": deleteCellSelection,\n \"Delete\": deleteCellSelection,\n \"Mod-Delete\": deleteCellSelection\n});\n\nfunction maybeSetSelection(state, dispatch, selection) {\n if (selection.eq(state.selection)) { return false }\n if (dispatch) { dispatch(state.tr.setSelection(selection).scrollIntoView()); }\n return true\n}\n\nfunction arrow(axis, dir) {\n return function (state, dispatch, view) {\n var sel = state.selection;\n if (sel instanceof CellSelection) {\n return maybeSetSelection(state, dispatch, Selection.near(sel.$headCell, dir))\n }\n if (axis != \"horiz\" && !sel.empty) { return false }\n var end = atEndOfCell(view, axis, dir);\n if (end == null) { return false }\n if (axis == \"horiz\") {\n return maybeSetSelection(state, dispatch, Selection.near(state.doc.resolve(sel.head + dir), dir))\n } else {\n var $cell = state.doc.resolve(end), $next = nextCell($cell, axis, dir), newSel;\n if ($next) { newSel = Selection.near($next, 1); }\n else if (dir < 0) { newSel = Selection.near(state.doc.resolve($cell.before(-1)), -1); }\n else { newSel = Selection.near(state.doc.resolve($cell.after(-1)), 1); }\n return maybeSetSelection(state, dispatch, newSel)\n }\n }\n}\n\nfunction shiftArrow(axis, dir) {\n return function (state, dispatch, view) {\n var sel = state.selection;\n if (!(sel instanceof CellSelection)) {\n var end = atEndOfCell(view, axis, dir);\n if (end == null) { return false }\n sel = new CellSelection(state.doc.resolve(end));\n }\n var $head = nextCell(sel.$headCell, axis, dir);\n if (!$head) { return false }\n return maybeSetSelection(state, dispatch, new CellSelection(sel.$anchorCell, $head))\n }\n}\n\nfunction deleteCellSelection(state, dispatch) {\n var sel = state.selection;\n if (!(sel instanceof CellSelection)) { return false }\n if (dispatch) {\n var tr = state.tr, baseContent = tableNodeTypes(state.schema).cell.createAndFill().content;\n sel.forEachCell(function (cell, pos) {\n if (!cell.content.eq(baseContent))\n { tr.replace(tr.mapping.map(pos + 1), tr.mapping.map(pos + cell.nodeSize - 1),\n new Slice(baseContent, 0, 0)); }\n });\n if (tr.docChanged) { dispatch(tr); }\n }\n return true\n}\n\nfunction handleTripleClick(view, pos) {\n var doc = view.state.doc, $cell = cellAround(doc.resolve(pos));\n if (!$cell) { return false }\n view.dispatch(view.state.tr.setSelection(new CellSelection($cell)));\n return true\n}\n\nfunction handlePaste(view, _, slice) {\n if (!isInTable(view.state)) { return false }\n var cells = pastedCells(slice), sel = view.state.selection;\n if (sel instanceof CellSelection) {\n if (!cells) { cells = {width: 1, height: 1, rows: [Fragment.from(fitSlice(tableNodeTypes(view.state.schema).cell, slice))]}; }\n var table = sel.$anchorCell.node(-1), start = sel.$anchorCell.start(-1);\n var rect = TableMap.get(table).rectBetween(sel.$anchorCell.pos - start, sel.$headCell.pos - start);\n cells = clipCells(cells, rect.right - rect.left, rect.bottom - rect.top);\n insertCells(view.state, view.dispatch, start, rect, cells);\n return true\n } else if (cells) {\n var $cell = selectionCell(view.state), start$1 = $cell.start(-1);\n insertCells(view.state, view.dispatch, start$1, TableMap.get($cell.node(-1)).findCell($cell.pos - start$1), cells);\n return true\n } else {\n return false\n }\n}\n\nfunction handleMouseDown(view, startEvent) {\n if (startEvent.ctrlKey || startEvent.metaKey) { return }\n\n var startDOMCell = domInCell(view, startEvent.target), $anchor;\n if (startEvent.shiftKey && (view.state.selection instanceof CellSelection)) {\n // Adding to an existing cell selection\n setCellSelection(view.state.selection.$anchorCell, startEvent);\n startEvent.preventDefault();\n } else if (startEvent.shiftKey && startDOMCell &&\n ($anchor = cellAround(view.state.selection.$anchor)) != null &&\n cellUnderMouse(view, startEvent).pos != $anchor.pos) {\n // Adding to a selection that starts in another cell (causing a\n // cell selection to be created).\n setCellSelection($anchor, startEvent);\n startEvent.preventDefault();\n } else if (!startDOMCell) {\n // Not in a cell, let the default behavior happen.\n return\n }\n\n // Create and dispatch a cell selection between the given anchor and\n // the position under the mouse.\n function setCellSelection($anchor, event) {\n var $head = cellUnderMouse(view, event);\n var starting = key.getState(view.state) == null;\n if (!$head || !inSameTable($anchor, $head)) {\n if (starting) { $head = $anchor; }\n else { return }\n }\n var selection = new CellSelection($anchor, $head);\n if (starting || !view.state.selection.eq(selection)) {\n var tr = view.state.tr.setSelection(selection);\n if (starting) { tr.setMeta(key, $anchor.pos); }\n view.dispatch(tr);\n }\n }\n\n // Stop listening to mouse motion events.\n function stop() {\n view.root.removeEventListener(\"mouseup\", stop);\n view.root.removeEventListener(\"dragstart\", stop);\n view.root.removeEventListener(\"mousemove\", move);\n if (key.getState(view.state) != null) { view.dispatch(view.state.tr.setMeta(key, -1)); }\n }\n\n function move(event) {\n var anchor = key.getState(view.state), $anchor;\n if (anchor != null) {\n // Continuing an existing cross-cell selection\n $anchor = view.state.doc.resolve(anchor);\n } else if (domInCell(view, event.target) != startDOMCell) {\n // Moving out of the initial cell -- start a new cell selection\n $anchor = cellUnderMouse(view, startEvent);\n if (!$anchor) { return stop() }\n }\n if ($anchor) { setCellSelection($anchor, event); }\n }\n view.root.addEventListener(\"mouseup\", stop);\n view.root.addEventListener(\"dragstart\", stop);\n view.root.addEventListener(\"mousemove\", move);\n}\n\n// Check whether the cursor is at the end of a cell (so that further\n// motion would move out of the cell)\nfunction atEndOfCell(view, axis, dir) {\n if (!(view.state.selection instanceof TextSelection)) { return null }\n var ref = view.state.selection;\n var $head = ref.$head;\n for (var d = $head.depth - 1; d >= 0; d--) {\n var parent = $head.node(d), index = dir < 0 ? $head.index(d) : $head.indexAfter(d);\n if (index != (dir < 0 ? 0 : parent.childCount)) { return null }\n if (parent.type.spec.tableRole == \"cell\" || parent.type.spec.tableRole == \"header_cell\") {\n var cellPos = $head.before(d);\n var dirStr = axis == \"vert\" ? (dir > 0 ? \"down\" : \"up\") : (dir > 0 ? \"right\" : \"left\");\n return view.endOfTextblock(dirStr) ? cellPos : null\n }\n }\n return null\n}\n\nfunction domInCell(view, dom) {\n for (; dom && dom != view.dom; dom = dom.parentNode)\n { if (dom.nodeName == \"TD\" || dom.nodeName == \"TH\") { return dom } }\n}\n\nfunction cellUnderMouse(view, event) {\n var mousePos = view.posAtCoords({left: event.clientX, top: event.clientY});\n if (!mousePos) { return null }\n return mousePos ? cellAround(view.state.doc.resolve(mousePos.pos)) : null\n}\n\n// This file defines helpers for normalizing tables, making sure no\n\nvar fixTablesKey = new PluginKey(\"fix-tables\");\n\n// Helper for iterating through the nodes in a document that changed\n// compared to the given previous document. Useful for avoiding\n// duplicate work on each transaction.\nfunction changedDescendants(old, cur, offset, f) {\n var oldSize = old.childCount, curSize = cur.childCount;\n outer: for (var i = 0, j = 0; i < curSize; i++) {\n var child = cur.child(i);\n for (var scan = j, e = Math.min(oldSize, i + 3); scan < e; scan++) {\n if (old.child(scan) == child) {\n j = scan + 1;\n offset += child.nodeSize;\n continue outer\n }\n }\n f(child, offset);\n if (j < oldSize && old.child(j).sameMarkup(child))\n { changedDescendants(old.child(j), child, offset + 1, f); }\n else\n { child.nodesBetween(0, child.content.size, f, offset + 1); }\n offset += child.nodeSize;\n }\n}\n\n// :: (EditorState, ?EditorState) → ?Transaction\n// Inspect all tables in the given state's document and return a\n// transaction that fixes them, if necessary. If `oldState` was\n// provided, that is assumed to hold a previous, known-good state,\n// which will be used to avoid re-scanning unchanged parts of the\n// document.\nfunction fixTables(state, oldState) {\n var tr, check = function (node, pos) {\n if (node.type.spec.tableRole == \"table\") { tr = fixTable(state, node, pos, tr); }\n };\n if (!oldState) { state.doc.descendants(check); }\n else if (oldState.doc != state.doc) { changedDescendants(oldState.doc, state.doc, 0, check); }\n return tr\n}\n\n// : (EditorState, Node, number, ?Transaction) → ?Transaction\n// Fix the given table, if necessary. Will append to the transaction\n// it was given, if non-null, or create a new one if necessary.\nfunction fixTable(state, table, tablePos, tr) {\n var map = TableMap.get(table);\n if (!map.problems) { return tr }\n if (!tr) { tr = state.tr; }\n\n // Track which rows we must add cells to, so that we can adjust that\n // when fixing collisions.\n var mustAdd = [];\n for (var i = 0; i < map.height; i++) { mustAdd.push(0); }\n for (var i$1 = 0; i$1 < map.problems.length; i$1++) {\n var prob = map.problems[i$1];\n if (prob.type == \"collision\") {\n var cell = table.nodeAt(prob.pos);\n for (var j = 0; j < cell.attrs.rowspan; j++) { mustAdd[prob.row + j] += prob.n; }\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, removeColSpan(cell.attrs, cell.attrs.colspan - prob.n, prob.n));\n } else if (prob.type == \"missing\") {\n mustAdd[prob.row] += prob.n;\n } else if (prob.type == \"overlong_rowspan\") {\n var cell$1 = table.nodeAt(prob.pos);\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, setAttr(cell$1.attrs, \"rowspan\", cell$1.attrs.rowspan - prob.n));\n } else if (prob.type == \"colwidth mismatch\") {\n var cell$2 = table.nodeAt(prob.pos);\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, setAttr(cell$2.attrs, \"colwidth\", prob.colwidth));\n }\n }\n var first, last;\n for (var i$2 = 0; i$2 < mustAdd.length; i$2++) { if (mustAdd[i$2]) {\n if (first == null) { first = i$2; }\n last = i$2;\n } }\n // Add the necessary cells, using a heuristic for whether to add the\n // cells at the start or end of the rows (if it looks like a 'bite'\n // was taken out of the table, add cells at the start of the row\n // after the bite. Otherwise add them at the end).\n for (var i$3 = 0, pos = tablePos + 1; i$3 < map.height; i$3++) {\n var row = table.child(i$3);\n var end = pos + row.nodeSize;\n var add = mustAdd[i$3];\n if (add > 0) {\n var tableNodeType = 'cell';\n if (row.firstChild) {\n tableNodeType = row.firstChild.type.spec.tableRole;\n }\n var nodes = [];\n for (var j$1 = 0; j$1 < add; j$1++)\n { nodes.push(tableNodeTypes(state.schema)[tableNodeType].createAndFill()); }\n var side = (i$3 == 0 || first == i$3 - 1) && last == i$3 ? pos + 1 : end - 1;\n tr.insert(tr.mapping.map(side), nodes);\n }\n pos = end;\n }\n return tr.setMeta(fixTablesKey, { fixTables: true })\n}\n\n// This file defines a number of table-related commands.\n\n// Helper to get the selected rectangle in a table, if any. Adds table\n// map, table node, and table start offset to the object for\n// convenience.\nfunction selectedRect(state) {\n var sel = state.selection, $pos = selectionCell(state);\n var table = $pos.node(-1), tableStart = $pos.start(-1), map = TableMap.get(table);\n var rect;\n if (sel instanceof CellSelection)\n { rect = map.rectBetween(sel.$anchorCell.pos - tableStart, sel.$headCell.pos - tableStart); }\n else\n { rect = map.findCell($pos.pos - tableStart); }\n rect.tableStart = tableStart;\n rect.map = map;\n rect.table = table;\n return rect\n}\n\n// Add a column at the given position in a table.\nfunction addColumn(tr, ref, col) {\n var map = ref.map;\n var tableStart = ref.tableStart;\n var table = ref.table;\n\n var refColumn = col > 0 ? -1 : 0;\n if (columnIsHeader(map, table, col + refColumn))\n { refColumn = col == 0 || col == map.width ? null : 0; }\n\n for (var row = 0; row < map.height; row++) {\n var index = row * map.width + col;\n // If this position falls inside a col-spanning cell\n if (col > 0 && col < map.width && map.map[index - 1] == map.map[index]) {\n var pos = map.map[index], cell = table.nodeAt(pos);\n tr.setNodeMarkup(tr.mapping.map(tableStart + pos), null,\n addColSpan(cell.attrs, col - map.colCount(pos)));\n // Skip ahead if rowspan > 1\n row += cell.attrs.rowspan - 1;\n } else {\n var type = refColumn == null ? tableNodeTypes(table.type.schema).cell\n : table.nodeAt(map.map[index + refColumn]).type;\n var pos$1 = map.positionAt(row, col, table);\n tr.insert(tr.mapping.map(tableStart + pos$1), type.createAndFill());\n }\n }\n return tr\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Command to add a column before the column with the selection.\nfunction addColumnBefore(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var rect = selectedRect(state);\n dispatch(addColumn(state.tr, rect, rect.left));\n }\n return true\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Command to add a column after the column with the selection.\nfunction addColumnAfter(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var rect = selectedRect(state);\n dispatch(addColumn(state.tr, rect, rect.right));\n }\n return true\n}\n\nfunction removeColumn(tr, ref, col) {\n var map = ref.map;\n var table = ref.table;\n var tableStart = ref.tableStart;\n\n var mapStart = tr.mapping.maps.length;\n for (var row = 0; row < map.height;) {\n var index = row * map.width + col, pos = map.map[index], cell = table.nodeAt(pos);\n // If this is part of a col-spanning cell\n if ((col > 0 && map.map[index - 1] == pos) || (col < map.width - 1 && map.map[index + 1] == pos)) {\n tr.setNodeMarkup(tr.mapping.slice(mapStart).map(tableStart + pos), null,\n removeColSpan(cell.attrs, col - map.colCount(pos)));\n } else {\n var start = tr.mapping.slice(mapStart).map(tableStart + pos);\n tr.delete(start, start + cell.nodeSize);\n }\n row += cell.attrs.rowspan;\n }\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Command function that removes the selected columns from a table.\nfunction deleteColumn(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var rect = selectedRect(state), tr = state.tr;\n if (rect.left == 0 && rect.right == rect.map.width) { return false }\n for (var i = rect.right - 1;; i--) {\n removeColumn(tr, rect, i);\n if (i == rect.left) { break }\n rect.table = rect.tableStart ? tr.doc.nodeAt(rect.tableStart - 1) : tr.doc;\n rect.map = TableMap.get(rect.table);\n }\n dispatch(tr);\n }\n return true\n}\n\nfunction rowIsHeader(map, table, row) {\n var headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (var col = 0; col < map.width; col++)\n { if (table.nodeAt(map.map[col + row * map.width]).type != headerCell)\n { return false } }\n return true\n}\n\nfunction addRow(tr, ref, row) {\n var map = ref.map;\n var tableStart = ref.tableStart;\n var table = ref.table;\n\n var rowPos = tableStart;\n for (var i = 0; i < row; i++) { rowPos += table.child(i).nodeSize; }\n var cells = [], refRow = row > 0 ? -1 : 0;\n if (rowIsHeader(map, table, row + refRow))\n { refRow = row == 0 || row == map.height ? null : 0; }\n for (var col = 0, index = map.width * row; col < map.width; col++, index++) {\n // Covered by a rowspan cell\n if (row > 0 && row < map.height && map.map[index] == map.map[index - map.width]) {\n var pos = map.map[index], attrs = table.nodeAt(pos).attrs;\n tr.setNodeMarkup(tableStart + pos, null, setAttr(attrs, \"rowspan\", attrs.rowspan + 1));\n col += attrs.colspan - 1;\n } else {\n var type = refRow == null ? tableNodeTypes(table.type.schema).cell\n : table.nodeAt(map.map[index + refRow * map.width]).type;\n cells.push(type.createAndFill());\n }\n }\n tr.insert(rowPos, tableNodeTypes(table.type.schema).row.create(null, cells));\n return tr\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Add a table row before the selection.\nfunction addRowBefore(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var rect = selectedRect(state);\n dispatch(addRow(state.tr, rect, rect.top));\n }\n return true\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Add a table row after the selection.\nfunction addRowAfter(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var rect = selectedRect(state);\n dispatch(addRow(state.tr, rect, rect.bottom));\n }\n return true\n}\n\nfunction removeRow(tr, ref, row) {\n var map = ref.map;\n var table = ref.table;\n var tableStart = ref.tableStart;\n\n var rowPos = 0;\n for (var i = 0; i < row; i++) { rowPos += table.child(i).nodeSize; }\n var nextRow = rowPos + table.child(row).nodeSize;\n\n var mapFrom = tr.mapping.maps.length;\n tr.delete(rowPos + tableStart, nextRow + tableStart);\n\n for (var col = 0, index = row * map.width; col < map.width; col++, index++) {\n var pos = map.map[index];\n if (row > 0 && pos == map.map[index - map.width]) {\n // If this cell starts in the row above, simply reduce its rowspan\n var attrs = table.nodeAt(pos).attrs;\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + tableStart), null, setAttr(attrs, \"rowspan\", attrs.rowspan - 1));\n col += attrs.colspan - 1;\n } else if (row < map.width && pos == map.map[index + map.width]) {\n // Else, if it continues in the row below, it has to be moved down\n var cell = table.nodeAt(pos);\n var copy = cell.type.create(setAttr(cell.attrs, \"rowspan\", cell.attrs.rowspan - 1), cell.content);\n var newPos = map.positionAt(row + 1, col, table);\n tr.insert(tr.mapping.slice(mapFrom).map(tableStart + newPos), copy);\n col += cell.attrs.colspan - 1;\n }\n }\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Remove the selected rows from a table.\nfunction deleteRow(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var rect = selectedRect(state), tr = state.tr;\n if (rect.top == 0 && rect.bottom == rect.map.height) { return false }\n for (var i = rect.bottom - 1;; i--) {\n removeRow(tr, rect, i);\n if (i == rect.top) { break }\n rect.table = rect.tableStart ? tr.doc.nodeAt(rect.tableStart - 1) : tr.doc;\n rect.map = TableMap.get(rect.table);\n }\n dispatch(tr);\n }\n return true\n}\n\nfunction isEmpty(cell) {\n var c = cell.content;\n return c.childCount == 1 && c.firstChild.isTextblock && c.firstChild.childCount == 0\n}\n\nfunction cellsOverlapRectangle(ref, rect) {\n var width = ref.width;\n var height = ref.height;\n var map = ref.map;\n\n var indexTop = rect.top * width + rect.left, indexLeft = indexTop;\n var indexBottom = (rect.bottom - 1) * width + rect.left, indexRight = indexTop + (rect.right - rect.left - 1);\n for (var i = rect.top; i < rect.bottom; i++) {\n if (rect.left > 0 && map[indexLeft] == map[indexLeft - 1] ||\n rect.right < width && map[indexRight] == map[indexRight + 1]) { return true }\n indexLeft += width; indexRight += width;\n }\n for (var i$1 = rect.left; i$1 < rect.right; i$1++) {\n if (rect.top > 0 && map[indexTop] == map[indexTop - width] ||\n rect.bottom < height && map[indexBottom] == map[indexBottom + width]) { return true }\n indexTop++; indexBottom++;\n }\n return false\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Merge the selected cells into a single cell. Only available when\n// the selected cells' outline forms a rectangle.\nfunction mergeCells(state, dispatch) {\n var sel = state.selection;\n if (!(sel instanceof CellSelection) || sel.$anchorCell.pos == sel.$headCell.pos) { return false }\n var rect = selectedRect(state);\n var map = rect.map;\n if (cellsOverlapRectangle(map, rect)) { return false }\n if (dispatch) {\n var tr = state.tr, seen = {}, content = Fragment.empty, mergedPos, mergedCell;\n for (var row = rect.top; row < rect.bottom; row++) {\n for (var col = rect.left; col < rect.right; col++) {\n var cellPos = map.map[row * map.width + col], cell = rect.table.nodeAt(cellPos);\n if (seen[cellPos]) { continue }\n seen[cellPos] = true;\n if (mergedPos == null) {\n mergedPos = cellPos;\n mergedCell = cell;\n } else {\n if (!isEmpty(cell)) { content = content.append(cell.content); }\n var mapped = tr.mapping.map(cellPos + rect.tableStart);\n tr.delete(mapped, mapped + cell.nodeSize);\n }\n }\n }\n tr.setNodeMarkup(mergedPos + rect.tableStart, null,\n setAttr(addColSpan(mergedCell.attrs, mergedCell.attrs.colspan, (rect.right - rect.left) - mergedCell.attrs.colspan),\n \"rowspan\", rect.bottom - rect.top));\n if (content.size) {\n var end = mergedPos + 1 + mergedCell.content.size;\n var start = isEmpty(mergedCell) ? mergedPos + 1 : end;\n tr.replaceWith(start + rect.tableStart, end + rect.tableStart, content);\n }\n tr.setSelection(new CellSelection(tr.doc.resolve(mergedPos + rect.tableStart)));\n dispatch(tr);\n }\n return true\n}\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Split a selected cell, whose rowpan or colspan is greater than one,\n// into smaller cells. Use the first cell type for the new cells.\nfunction splitCell(state, dispatch) {\n var nodeTypes = tableNodeTypes(state.schema);\n return splitCellWithType(function (ref) {\n var node = ref.node;\n\n return nodeTypes[node.type.spec.tableRole]\n })(state, dispatch)\n}\n\n// :: (getCellType: ({ row: number, col: number, node: Node}) → NodeType) → (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Split a selected cell, whose rowpan or colspan is greater than one,\n// into smaller cells with the cell type (th, td) returned by getType function.\nfunction splitCellWithType(getCellType) {\n return function (state, dispatch) {\n var sel = state.selection;\n var cellNode, cellPos;\n if (!(sel instanceof CellSelection)) {\n cellNode = cellWrapping(sel.$from);\n if (!cellNode) { return false }\n cellPos = cellAround(sel.$from).pos;\n } else {\n if (sel.$anchorCell.pos != sel.$headCell.pos) { return false }\n cellNode = sel.$anchorCell.nodeAfter;\n cellPos = sel.$anchorCell.pos;\n }\n if (cellNode.attrs.colspan == 1 && cellNode.attrs.rowspan == 1) {return false}\n if (dispatch) {\n var baseAttrs = cellNode.attrs, attrs = [], colwidth = baseAttrs.colwidth;\n if (baseAttrs.rowspan > 1) { baseAttrs = setAttr(baseAttrs, \"rowspan\", 1); }\n if (baseAttrs.colspan > 1) { baseAttrs = setAttr(baseAttrs, \"colspan\", 1); }\n var rect = selectedRect(state), tr = state.tr;\n for (var i = 0; i < rect.right - rect.left; i++)\n { attrs.push(colwidth ? setAttr(baseAttrs, \"colwidth\", colwidth && colwidth[i] ? [colwidth[i]] : null) : baseAttrs); }\n var lastCell;\n for (var row = rect.top; row < rect.bottom; row++) {\n var pos = rect.map.positionAt(row, rect.left, rect.table);\n if (row == rect.top) { pos += cellNode.nodeSize; }\n for (var col = rect.left, i$1 = 0; col < rect.right; col++, i$1++) {\n if (col == rect.left && row == rect.top) { continue }\n tr.insert(lastCell = tr.mapping.map(pos + rect.tableStart, 1), getCellType({ node: cellNode, row: row, col: col}).createAndFill(attrs[i$1]));\n }\n }\n tr.setNodeMarkup(cellPos, getCellType({ node: cellNode, row: rect.top, col: rect.left}), attrs[0]);\n if (sel instanceof CellSelection)\n { tr.setSelection(new CellSelection(tr.doc.resolve(sel.$anchorCell.pos),\n lastCell && tr.doc.resolve(lastCell))); }\n dispatch(tr);\n }\n return true\n }\n}\n\n// :: (string, any) → (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Returns a command that sets the given attribute to the given value,\n// and is only available when the currently selected cell doesn't\n// already have that attribute set to that value.\nfunction setCellAttr(name, value) {\n return function(state, dispatch) {\n if (!isInTable(state)) { return false }\n var $cell = selectionCell(state);\n if ($cell.nodeAfter.attrs[name] === value) { return false }\n if (dispatch) {\n var tr = state.tr;\n if (state.selection instanceof CellSelection)\n { state.selection.forEachCell(function (node, pos) {\n if (node.attrs[name] !== value)\n { tr.setNodeMarkup(pos, null, setAttr(node.attrs, name, value)); }\n }); }\n else\n { tr.setNodeMarkup($cell.pos, null, setAttr($cell.nodeAfter.attrs, name, value)); }\n dispatch(tr);\n }\n return true\n }\n}\n\nfunction deprecated_toggleHeader(type) {\n return function(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var types = tableNodeTypes(state.schema);\n var rect = selectedRect(state), tr = state.tr;\n var cells = rect.map.cellsInRect(type == \"column\" ? new Rect(rect.left, 0, rect.right, rect.map.height) :\n type == \"row\" ? new Rect(0, rect.top, rect.map.width, rect.bottom) : rect);\n var nodes = cells.map(function (pos) { return rect.table.nodeAt(pos); });\n for (var i = 0; i < cells.length; i++) // Remove headers, if any\n { if (nodes[i].type == types.header_cell)\n { tr.setNodeMarkup(rect.tableStart + cells[i], types.cell, nodes[i].attrs); } }\n if (tr.steps.length == 0) { for (var i$1 = 0; i$1 < cells.length; i$1++) // No headers removed, add instead\n { tr.setNodeMarkup(rect.tableStart + cells[i$1], types.header_cell, nodes[i$1].attrs); } }\n dispatch(tr);\n }\n return true\n }\n}\n\nfunction isHeaderEnabledByType(type, rect, types) {\n // Get cell positions for first row or first column\n var cellPositions = rect.map.cellsInRect({\n left: 0,\n top: 0,\n right: type == \"row\" ? rect.map.width : 1,\n bottom: type == \"column\" ? rect.map.height : 1,\n });\n\n for (var i = 0; i < cellPositions.length; i++) {\n var cell = rect.table.nodeAt(cellPositions[i]);\n if (cell && cell.type !== types.header_cell) {\n return false\n }\n }\n\n return true\n}\n\n// :: (string, ?{ useDeprecatedLogic: bool }) → (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Toggles between row/column header and normal cells (Only applies to first row/column).\n// For deprecated behavior pass `useDeprecatedLogic` in options with true.\nfunction toggleHeader(type, options) {\n options = options || { useDeprecatedLogic: false };\n\n if (options.useDeprecatedLogic)\n { return deprecated_toggleHeader(type) }\n\n return function(state, dispatch) {\n if (!isInTable(state)) { return false }\n if (dispatch) {\n var types = tableNodeTypes(state.schema);\n var rect = selectedRect(state), tr = state.tr;\n\n var isHeaderRowEnabled = isHeaderEnabledByType(\"row\", rect, types);\n var isHeaderColumnEnabled = isHeaderEnabledByType(\"column\", rect, types);\n\n var isHeaderEnabled = type === \"column\" ? isHeaderRowEnabled :\n type === \"row\" ? isHeaderColumnEnabled : false;\n\n var selectionStartsAt = isHeaderEnabled ? 1 : 0;\n\n var cellsRect = type == \"column\" ? new Rect(0, selectionStartsAt, 1, rect.map.height) :\n type == \"row\" ? new Rect(selectionStartsAt, 0, rect.map.width, 1) : rect;\n\n var newType = type == \"column\" ? isHeaderColumnEnabled ? types.cell : types.header_cell :\n type == \"row\" ? isHeaderRowEnabled ? types.cell : types.header_cell : types.cell;\n\n rect.map.cellsInRect(cellsRect).forEach(function (relativeCellPos) {\n var cellPos = relativeCellPos + rect.tableStart;\n var cell = tr.doc.nodeAt(cellPos);\n\n if (cell) {\n tr.setNodeMarkup(cellPos, newType, cell.attrs);\n }\n });\n\n dispatch(tr);\n }\n return true\n }\n}\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Toggles whether the selected row contains header cells.\nvar toggleHeaderRow = toggleHeader(\"row\", { useDeprecatedLogic: true });\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Toggles whether the selected column contains header cells.\nvar toggleHeaderColumn = toggleHeader(\"column\", { useDeprecatedLogic: true });\n\n// :: (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Toggles whether the selected cells are header cells.\nvar toggleHeaderCell = toggleHeader(\"cell\", { useDeprecatedLogic: true });\n\nfunction findNextCell($cell, dir) {\n if (dir < 0) {\n var before = $cell.nodeBefore;\n if (before) { return $cell.pos - before.nodeSize }\n for (var row = $cell.index(-1) - 1, rowEnd = $cell.before(); row >= 0; row--) {\n var rowNode = $cell.node(-1).child(row);\n if (rowNode.childCount) { return rowEnd - 1 - rowNode.lastChild.nodeSize }\n rowEnd -= rowNode.nodeSize;\n }\n } else {\n if ($cell.index() < $cell.parent.childCount - 1) { return $cell.pos + $cell.nodeAfter.nodeSize }\n var table = $cell.node(-1);\n for (var row$1 = $cell.indexAfter(-1), rowStart = $cell.after(); row$1 < table.childCount; row$1++) {\n var rowNode$1 = table.child(row$1);\n if (rowNode$1.childCount) { return rowStart + 1 }\n rowStart += rowNode$1.nodeSize;\n }\n }\n}\n\n// :: (number) → (EditorState, dispatch: ?(tr: Transaction)) → bool\n// Returns a command for selecting the next (direction=1) or previous\n// (direction=-1) cell in a table.\nfunction goToNextCell(direction) {\n return function(state, dispatch) {\n if (!isInTable(state)) { return false }\n var cell = findNextCell(selectionCell(state), direction);\n if (cell == null) { return }\n if (dispatch) {\n var $cell = state.doc.resolve(cell);\n dispatch(state.tr.setSelection(TextSelection.between($cell, moveCellForward($cell))).scrollIntoView());\n }\n return true\n }\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Deletes the table around the selection, if any.\nfunction deleteTable(state, dispatch) {\n var $pos = state.selection.$anchor;\n for (var d = $pos.depth; d > 0; d--) {\n var node = $pos.node(d);\n if (node.type.spec.tableRole == \"table\") {\n if (dispatch) { dispatch(state.tr.delete($pos.before(d), $pos.after(d)).scrollIntoView()); }\n return true\n }\n }\n return false\n}\n\nvar TableView = function TableView(node, cellMinWidth) {\n this.node = node;\n this.cellMinWidth = cellMinWidth;\n this.dom = document.createElement(\"div\");\n this.dom.className = \"tableWrapper\";\n this.table = this.dom.appendChild(document.createElement(\"table\"));\n this.colgroup = this.table.appendChild(document.createElement(\"colgroup\"));\n updateColumns(node, this.colgroup, this.table, cellMinWidth);\n this.contentDOM = this.table.appendChild(document.createElement(\"tbody\"));\n};\n\nTableView.prototype.update = function update (node) {\n if (node.type != this.node.type) { return false }\n this.node = node;\n updateColumns(node, this.colgroup, this.table, this.cellMinWidth);\n return true\n};\n\nTableView.prototype.ignoreMutation = function ignoreMutation (record) {\n return record.type == \"attributes\" && (record.target == this.table || this.colgroup.contains(record.target))\n};\n\nfunction updateColumns(node, colgroup, table, cellMinWidth, overrideCol, overrideValue) {\n var totalWidth = 0, fixedWidth = true;\n var nextDOM = colgroup.firstChild, row = node.firstChild;\n for (var i = 0, col = 0; i < row.childCount; i++) {\n var ref = row.child(i).attrs;\n var colspan = ref.colspan;\n var colwidth = ref.colwidth;\n for (var j = 0; j < colspan; j++, col++) {\n var hasWidth = overrideCol == col ? overrideValue : colwidth && colwidth[j];\n var cssWidth = hasWidth ? hasWidth + \"px\" : \"\";\n totalWidth += hasWidth || cellMinWidth;\n if (!hasWidth) { fixedWidth = false; }\n if (!nextDOM) {\n colgroup.appendChild(document.createElement(\"col\")).style.width = cssWidth;\n } else {\n if (nextDOM.style.width != cssWidth) { nextDOM.style.width = cssWidth; }\n nextDOM = nextDOM.nextSibling;\n }\n }\n }\n\n while (nextDOM) {\n var after = nextDOM.nextSibling;\n nextDOM.parentNode.removeChild(nextDOM);\n nextDOM = after;\n }\n\n if (fixedWidth) {\n table.style.width = totalWidth + \"px\";\n table.style.minWidth = \"\";\n } else {\n table.style.width = \"\";\n table.style.minWidth = totalWidth + \"px\";\n }\n}\n\nvar key$1 = new PluginKey(\"tableColumnResizing\");\n\nfunction columnResizing(ref) {\n if ( ref === void 0 ) ref = {};\n var handleWidth = ref.handleWidth; if ( handleWidth === void 0 ) handleWidth = 5;\n var cellMinWidth = ref.cellMinWidth; if ( cellMinWidth === void 0 ) cellMinWidth = 25;\n var View = ref.View; if ( View === void 0 ) View = TableView;\n var lastColumnResizable = ref.lastColumnResizable; if ( lastColumnResizable === void 0 ) lastColumnResizable = true;\n\n var plugin = new Plugin({\n key: key$1,\n state: {\n init: function init(_, state) {\n this.spec.props.nodeViews[tableNodeTypes(state.schema).table.name] =\n function (node, view) { return new View(node, cellMinWidth, view); };\n return new ResizeState(-1, false)\n },\n apply: function apply(tr, prev) {\n return prev.apply(tr)\n }\n },\n props: {\n attributes: function attributes(state) {\n var pluginState = key$1.getState(state);\n return pluginState.activeHandle > -1 ? {class: \"resize-cursor\"} : null\n },\n\n handleDOMEvents: {\n mousemove: function mousemove(view, event) { handleMouseMove(view, event, handleWidth, cellMinWidth, lastColumnResizable); },\n mouseleave: function mouseleave(view) { handleMouseLeave(view); },\n mousedown: function mousedown(view, event) { handleMouseDown$1(view, event, cellMinWidth); }\n },\n\n decorations: function decorations(state) {\n var pluginState = key$1.getState(state);\n if (pluginState.activeHandle > -1) { return handleDecorations(state, pluginState.activeHandle) }\n },\n\n nodeViews: {}\n }\n });\n return plugin\n}\n\nvar ResizeState = function ResizeState(activeHandle, dragging) {\n this.activeHandle = activeHandle;\n this.dragging = dragging;\n};\n\nResizeState.prototype.apply = function apply (tr) {\n var state = this, action = tr.getMeta(key$1);\n if (action && action.setHandle != null)\n { return new ResizeState(action.setHandle, null) }\n if (action && action.setDragging !== undefined)\n { return new ResizeState(state.activeHandle, action.setDragging) }\n if (state.activeHandle > -1 && tr.docChanged) {\n var handle = tr.mapping.map(state.activeHandle, -1);\n if (!pointsAtCell(tr.doc.resolve(handle))) { handle = null; }\n state = new ResizeState(handle, state.dragging);\n }\n return state\n};\n\nfunction handleMouseMove(view, event, handleWidth, cellMinWidth, lastColumnResizable) {\n var pluginState = key$1.getState(view.state);\n\n if (!pluginState.dragging) {\n var target = domCellAround(event.target), cell = -1;\n if (target) {\n var ref = target.getBoundingClientRect();\n var left = ref.left;\n var right = ref.right;\n if (event.clientX - left <= handleWidth)\n { cell = edgeCell(view, event, \"left\"); }\n else if (right - event.clientX <= handleWidth)\n { cell = edgeCell(view, event, \"right\"); }\n }\n\n if (cell != pluginState.activeHandle) {\n if (!lastColumnResizable && cell !== -1) {\n var $cell = view.state.doc.resolve(cell);\n var table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);\n var col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n\n if (col == map.width - 1) {\n return\n }\n }\n\n updateHandle(view, cell);\n }\n }\n}\n\nfunction handleMouseLeave(view) {\n var pluginState = key$1.getState(view.state);\n if (pluginState.activeHandle > -1 && !pluginState.dragging) { updateHandle(view, -1); }\n}\n\nfunction handleMouseDown$1(view, event, cellMinWidth) {\n var pluginState = key$1.getState(view.state);\n if (pluginState.activeHandle == -1 || pluginState.dragging) { return false }\n\n var cell = view.state.doc.nodeAt(pluginState.activeHandle);\n var width = currentColWidth(view, pluginState.activeHandle, cell.attrs);\n view.dispatch(view.state.tr.setMeta(key$1, {setDragging: {startX: event.clientX, startWidth: width}}));\n\n function finish(event) {\n window.removeEventListener(\"mouseup\", finish);\n window.removeEventListener(\"mousemove\", move);\n var pluginState = key$1.getState(view.state);\n if (pluginState.dragging) {\n updateColumnWidth(view, pluginState.activeHandle, draggedWidth(pluginState.dragging, event, cellMinWidth));\n view.dispatch(view.state.tr.setMeta(key$1, {setDragging: null}));\n }\n }\n function move(event) {\n if (!event.which) { return finish(event) }\n var pluginState = key$1.getState(view.state);\n var dragged = draggedWidth(pluginState.dragging, event, cellMinWidth);\n displayColumnWidth(view, pluginState.activeHandle, dragged, cellMinWidth);\n }\n\n window.addEventListener(\"mouseup\", finish);\n window.addEventListener(\"mousemove\", move);\n event.preventDefault();\n return true\n}\n\nfunction currentColWidth(view, cellPos, ref) {\n var colspan = ref.colspan;\n var colwidth = ref.colwidth;\n\n var width = colwidth && colwidth[colwidth.length - 1];\n if (width) { return width }\n var dom = view.domAtPos(cellPos);\n var node = dom.node.childNodes[dom.offset];\n var domWidth = node.offsetWidth, parts = colspan;\n if (colwidth) { for (var i = 0; i < colspan; i++) { if (colwidth[i]) {\n domWidth -= colwidth[i];\n parts--;\n } } }\n return domWidth / parts\n}\n\nfunction domCellAround(target) {\n while (target && target.nodeName != \"TD\" && target.nodeName != \"TH\")\n { target = target.classList.contains(\"ProseMirror\") ? null : target.parentNode; }\n return target\n}\n\nfunction edgeCell(view, event, side) {\n var found = view.posAtCoords({left: event.clientX, top: event.clientY});\n if (!found) { return -1 }\n var pos = found.pos;\n var $cell = cellAround(view.state.doc.resolve(pos));\n if (!$cell) { return -1 }\n if (side == \"right\") { return $cell.pos }\n var map = TableMap.get($cell.node(-1)), start = $cell.start(-1);\n var index = map.map.indexOf($cell.pos - start);\n return index % map.width == 0 ? -1 : start + map.map[index - 1]\n}\n\nfunction draggedWidth(dragging, event, cellMinWidth) {\n var offset = event.clientX - dragging.startX;\n return Math.max(cellMinWidth, dragging.startWidth + offset)\n}\n\nfunction updateHandle(view, value) {\n view.dispatch(view.state.tr.setMeta(key$1, {setHandle: value}));\n}\n\nfunction updateColumnWidth(view, cell, width) {\n var $cell = view.state.doc.resolve(cell);\n var table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);\n var col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n var tr = view.state.tr;\n for (var row = 0; row < map.height; row++) {\n var mapIndex = row * map.width + col;\n // Rowspanning cell that has already been handled\n if (row && map.map[mapIndex] == map.map[mapIndex - map.width]) { continue }\n var pos = map.map[mapIndex];\n var ref = table.nodeAt(pos);\n var attrs = ref.attrs;\n var index = attrs.colspan == 1 ? 0 : col - map.colCount(pos);\n if (attrs.colwidth && attrs.colwidth[index] == width) { continue }\n var colwidth = attrs.colwidth ? attrs.colwidth.slice() : zeroes(attrs.colspan);\n colwidth[index] = width;\n tr.setNodeMarkup(start + pos, null, setAttr(attrs, \"colwidth\", colwidth));\n }\n if (tr.docChanged) { view.dispatch(tr); }\n}\n\nfunction displayColumnWidth(view, cell, width, cellMinWidth) {\n var $cell = view.state.doc.resolve(cell);\n var table = $cell.node(-1), start = $cell.start(-1);\n var col = TableMap.get(table).colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n var dom = view.domAtPos($cell.start(-1)).node;\n while (dom.nodeName != \"TABLE\") { dom = dom.parentNode; }\n updateColumns(table, dom.firstChild, dom, cellMinWidth, col, width);\n}\n\nfunction zeroes(n) {\n var result = [];\n for (var i = 0; i < n; i++) { result.push(0); }\n return result\n}\n\nfunction handleDecorations(state, cell) {\n var decorations = [];\n var $cell = state.doc.resolve(cell);\n var table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);\n var col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan;\n for (var row = 0; row < map.height; row++) {\n var index = col + row * map.width - 1;\n // For positions that are have either a different cell or the end\n // of the table to their right, and either the top of the table or\n // a different cell above them, add a decoration\n if ((col == map.width || map.map[index] != map.map[index + 1]) &&\n (row == 0 || map.map[index - 1] != map.map[index - 1 - map.width])) {\n var cellPos = map.map[index];\n var pos = start + cellPos + table.nodeAt(cellPos).nodeSize - 1;\n var dom = document.createElement(\"div\");\n dom.className = \"column-resize-handle\";\n decorations.push(Decoration.widget(pos, dom));\n }\n }\n return DecorationSet.create(state.doc, decorations)\n}\n\n// This file defines a plugin that handles the drawing of cell\n\n// :: () → Plugin\n//\n// Creates a [plugin](http://prosemirror.net/docs/ref/#state.Plugin)\n// that, when added to an editor, enables cell-selection, handles\n// cell-based copy/paste, and makes sure tables stay well-formed (each\n// row has the same width, and cells don't overlap).\n//\n// You should probably put this plugin near the end of your array of\n// plugins, since it handles mouse and arrow key events in tables\n// rather broadly, and other plugins, like the gap cursor or the\n// column-width dragging plugin, might want to get a turn first to\n// perform more specific behavior.\nfunction tableEditing(ref) {\n if ( ref === void 0 ) ref = {};\n var allowTableNodeSelection = ref.allowTableNodeSelection; if ( allowTableNodeSelection === void 0 ) allowTableNodeSelection = false;\n\n return new Plugin({\n key: key,\n\n // This piece of state is used to remember when a mouse-drag\n // cell-selection is happening, so that it can continue even as\n // transactions (which might move its anchor cell) come in.\n state: {\n init: function init() { return null },\n apply: function apply(tr, cur) {\n var set = tr.getMeta(key);\n if (set != null) { return set == -1 ? null : set }\n if (cur == null || !tr.docChanged) { return cur }\n var ref = tr.mapping.mapResult(cur);\n var deleted = ref.deleted;\n var pos = ref.pos;\n return deleted ? null : pos\n }\n },\n\n props: {\n decorations: drawCellSelection,\n\n handleDOMEvents: {\n mousedown: handleMouseDown\n },\n\n createSelectionBetween: function createSelectionBetween(view) {\n if (key.getState(view.state) != null) { return view.state.selection }\n },\n\n handleTripleClick: handleTripleClick,\n\n handleKeyDown: handleKeyDown,\n\n handlePaste: handlePaste\n },\n\n appendTransaction: function appendTransaction(_, oldState, state) {\n return normalizeSelection(state, fixTables(state, oldState), allowTableNodeSelection)\n }\n })\n}\n\nexport { CellSelection, TableMap, TableView, clipCells as __clipCells, insertCells as __insertCells, pastedCells as __pastedCells, addColSpan, addColumn, addColumnAfter, addColumnBefore, addRow, addRowAfter, addRowBefore, cellAround, colCount, columnIsHeader, columnResizing, key$1 as columnResizingPluginKey, deleteColumn, deleteRow, deleteTable, findCell, fixTables, fixTablesKey, goToNextCell, handlePaste, inSameTable, isInTable, mergeCells, moveCellForward, nextCell, pointsAtCell, removeColSpan, removeColumn, removeRow, rowIsHeader, selectedRect, selectionCell, setAttr, setCellAttr, splitCell, splitCellWithType, tableEditing, key as tableEditingKey, tableNodeTypes, tableNodes, toggleHeader, toggleHeaderCell, toggleHeaderColumn, toggleHeaderRow, updateColumns as updateColumnsOnResize };\n//# sourceMappingURL=index.es.js.map\n","//\n// format - printf-like string formatting for JavaScript\n// github.com/samsonjs/format\n// @_sjs\n//\n// Copyright 2010 - 2013 Sami Samhuri \n//\n// MIT License\n// http://sjs.mit-license.org\n//\n\n;(function() {\n\n //// Export the API\n var namespace;\n\n // CommonJS / Node module\n if (typeof module !== 'undefined') {\n namespace = module.exports = format;\n }\n\n // Browsers and other environments\n else {\n // Get the global object. Works in ES3, ES5, and ES5 strict mode.\n namespace = (function(){ return this || (1,eval)('this') }());\n }\n\n namespace.format = format;\n namespace.vsprintf = vsprintf;\n\n if (typeof console !== 'undefined' && typeof console.log === 'function') {\n namespace.printf = printf;\n }\n\n function printf(/* ... */) {\n console.log(format.apply(null, arguments));\n }\n\n function vsprintf(fmt, replacements) {\n return format.apply(null, [fmt].concat(replacements));\n }\n\n function format(fmt) {\n var argIndex = 1 // skip initial format argument\n , args = [].slice.call(arguments)\n , i = 0\n , n = fmt.length\n , result = ''\n , c\n , escaped = false\n , arg\n , tmp\n , leadingZero = false\n , precision\n , nextArg = function() { return args[argIndex++]; }\n , slurpNumber = function() {\n var digits = '';\n while (/\\d/.test(fmt[i])) {\n digits += fmt[i++];\n c = fmt[i];\n }\n return digits.length > 0 ? parseInt(digits) : null;\n }\n ;\n for (; i < n; ++i) {\n c = fmt[i];\n if (escaped) {\n escaped = false;\n if (c == '.') {\n leadingZero = false;\n c = fmt[++i];\n }\n else if (c == '0' && fmt[i + 1] == '.') {\n leadingZero = true;\n i += 2;\n c = fmt[i];\n }\n else {\n leadingZero = true;\n }\n precision = slurpNumber();\n switch (c) {\n case 'b': // number in binary\n result += parseInt(nextArg(), 10).toString(2);\n break;\n case 'c': // character\n arg = nextArg();\n if (typeof arg === 'string' || arg instanceof String)\n result += arg;\n else\n result += String.fromCharCode(parseInt(arg, 10));\n break;\n case 'd': // number in decimal\n result += parseInt(nextArg(), 10);\n break;\n case 'f': // floating point number\n tmp = String(parseFloat(nextArg()).toFixed(precision || 6));\n result += leadingZero ? tmp : tmp.replace(/^0/, '');\n break;\n case 'j': // JSON\n result += JSON.stringify(nextArg());\n break;\n case 'o': // number in octal\n result += '0' + parseInt(nextArg(), 10).toString(8);\n break;\n case 's': // string\n result += nextArg();\n break;\n case 'x': // lowercase hexadecimal\n result += '0x' + parseInt(nextArg(), 10).toString(16);\n break;\n case 'X': // uppercase hexadecimal\n result += '0x' + parseInt(nextArg(), 10).toString(16).toUpperCase();\n break;\n default:\n result += c;\n break;\n }\n } else if (c === '%') {\n escaped = true;\n } else {\n result += c;\n }\n }\n return result;\n }\n\n}());\n","const {\n noopTest,\n edit,\n merge\n} = require('./helpers.js');\n\n/**\n * Block-Level Grammar\n */\nconst block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?:\\n+|$)|$)/,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6}) +([^\\n]*?)(?: +#+)? *(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?\\\\?>\\\\n*' // (3)\n + '|\\\\n*' // (4)\n + '|\\\\n*' // (5)\n + '|)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (6)\n + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n nptable: noopTest,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}\\.)/;\nblock.item = /^( *)(bull) ?[^\\n]*(?:\\n(?!\\1bull ?)[^\\n]*)*/;\nblock.item = edit(block.item, 'gm')\n .replace(/bull/g, block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = //;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n nptable: '^ *([^|\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' *([-:]+ *\\\\|[-| :]*)' // Align\n + '(?:\\\\n((?:(?!\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)', // Cells\n table: '^ *\\\\|(.+)\\\\n' // Header\n + ' *\\\\|?( *[-:]+[-| :]*)' // Align\n + '(?:\\\\n *((?:(?!\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n});\n\nblock.gfm.nptable = edit(block.gfm.nptable)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = merge({}, block.normal, {\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *(?:#+ *)?(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n});\n\n/**\n * Inline-Level Grammar\n */\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n strong: /^__([^\\s_])__(?!_)|^\\*\\*([^\\s*])\\*\\*(?!\\*)|^__([^\\s][\\s\\S]*?[^\\s])__(?!_)|^\\*\\*([^\\s][\\s\\S]*?[^\\s])\\*\\*(?!\\*)/,\n em: /^_([^\\s_])_(?!_)|^\\*([^\\s*<\\[])\\*(?!\\*)|^_([^\\s<][\\s\\S]*?[^\\s_])_(?!_|[^\\spunctuation])|^_([^\\s_<][\\s\\S]*?[^\\s])_(?!_|[^\\spunctuation])|^\\*([^\\s<\"][\\s\\S]*?[^\\s\\*])\\*(?!\\*|[^\\spunctuation])|^\\*([^\\s*\"<\\[][\\s\\S]*?[^\\s])\\*(?!\\*)/,\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\?@\\\\[^_{|}~';\ninline.em = edit(inline.em).replace(/punctuation/g, inline._punctuation).getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', block._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[[^\\[\\]]*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\[<>]?|[^\\s<>\\\\])*>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^~+(?=\\S)([\\s\\S]*?\\S)~+/,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\\",\n 191: \"?\",\n 192: \"~\",\n 219: \"{\",\n 220: \"|\",\n 221: \"}\",\n 222: \"\\\"\",\n 229: \"Q\"\n}\n\nvar chrome = typeof navigator != \"undefined\" && /Chrome\\/(\\d+)/.exec(navigator.userAgent)\nvar safari = typeof navigator != \"undefined\" && /Apple Computer/.test(navigator.vendor)\nvar gecko = typeof navigator != \"undefined\" && /Gecko\\/\\d+/.test(navigator.userAgent)\nvar mac = typeof navigator != \"undefined\" && /Mac/.test(navigator.platform)\nvar ie = typeof navigator != \"undefined\" && /MSIE \\d|Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent)\nvar brokenModifierNames = chrome && (mac || +chrome[1] < 57) || gecko && mac\n\n// Fill in the digit keys\nfor (var i = 0; i < 10; i++) base[48 + i] = base[96 + i] = String(i)\n\n// The function keys\nfor (var i = 1; i <= 24; i++) base[i + 111] = \"F\" + i\n\n// And the alphabetic keys\nfor (var i = 65; i <= 90; i++) {\n base[i] = String.fromCharCode(i + 32)\n shift[i] = String.fromCharCode(i)\n}\n\n// For each code that doesn't have a shift-equivalent, copy the base name\nfor (var code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code]\n\nexport function keyName(event) {\n // Don't trust event.key in Chrome when there are modifiers until\n // they fix https://bugs.chromium.org/p/chromium/issues/detail?id=633838\n var ignoreKey = brokenModifierNames && (event.ctrlKey || event.altKey || event.metaKey) ||\n (safari || ie) && event.shiftKey && event.key && event.key.length == 1\n var name = (!ignoreKey && event.key) ||\n (event.shiftKey ? shift : base)[event.keyCode] ||\n event.key || \"Unidentified\"\n // Edge sometimes produces wrong names (Issue #3)\n if (name == \"Esc\") name = \"Escape\"\n if (name == \"Del\") name = \"Delete\"\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/\n if (name == \"Left\") name = \"ArrowLeft\"\n if (name == \"Up\") name = \"ArrowUp\"\n if (name == \"Right\") name = \"ArrowRight\"\n if (name == \"Down\") name = \"ArrowDown\"\n return name\n}\n","import { keyName, base } from 'w3c-keyname';\nimport { Plugin } from 'prosemirror-state';\n\n// declare global: navigator\n\nvar mac = typeof navigator != \"undefined\" ? /Mac/.test(navigator.platform) : false;\n\nfunction normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/), result = parts[parts.length - 1];\n if (result == \"Space\") { result = \" \"; }\n var alt, ctrl, shift, meta;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { meta = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else if (/^mod$/i.test(mod)) { if (mac) { meta = true; } else { ctrl = true; } }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { result = \"Alt-\" + result; }\n if (ctrl) { result = \"Ctrl-\" + result; }\n if (meta) { result = \"Meta-\" + result; }\n if (shift) { result = \"Shift-\" + result; }\n return result\n}\n\nfunction normalize(map) {\n var copy = Object.create(null);\n for (var prop in map) { copy[normalizeKeyName(prop)] = map[prop]; }\n return copy\n}\n\nfunction modifiers(name, event, shift) {\n if (event.altKey) { name = \"Alt-\" + name; }\n if (event.ctrlKey) { name = \"Ctrl-\" + name; }\n if (event.metaKey) { name = \"Meta-\" + name; }\n if (shift !== false && event.shiftKey) { name = \"Shift-\" + name; }\n return name\n}\n\n// :: (Object) → Plugin\n// Create a keymap plugin for the given set of bindings.\n//\n// Bindings should map key names to [command](#commands)-style\n// functions, which will be called with `(EditorState, dispatch,\n// EditorView)` arguments, and should return true when they've handled\n// the key. Note that the view argument isn't part of the command\n// protocol, but can be used as an escape hatch if a binding needs to\n// directly interact with the UI.\n//\n// Key names may be strings like `\"Shift-Ctrl-Enter\"`—a key\n// identifier prefixed with zero or more modifiers. Key identifiers\n// are based on the strings that can appear in\n// [`KeyEvent.key`](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key).\n// Use lowercase letters to refer to letter keys (or uppercase letters\n// if you want shift to be held). You may use `\"Space\"` as an alias\n// for the `\" \"` name.\n//\n// Modifiers can be given in any order. `Shift-` (or `s-`), `Alt-` (or\n// `a-`), `Ctrl-` (or `c-` or `Control-`) and `Cmd-` (or `m-` or\n// `Meta-`) are recognized. For characters that are created by holding\n// shift, the `Shift-` prefix is implied, and should not be added\n// explicitly.\n//\n// You can use `Mod-` as a shorthand for `Cmd-` on Mac and `Ctrl-` on\n// other platforms.\n//\n// You can add multiple keymap plugins to an editor. The order in\n// which they appear determines their precedence (the ones early in\n// the array get to dispatch first).\nfunction keymap(bindings) {\n return new Plugin({props: {handleKeyDown: keydownHandler(bindings)}})\n}\n\n// :: (Object) → (view: EditorView, event: dom.Event) → bool\n// Given a set of bindings (using the same format as\n// [`keymap`](#keymap.keymap), return a [keydown\n// handler](#view.EditorProps.handleKeyDown) that handles them.\nfunction keydownHandler(bindings) {\n var map = normalize(bindings);\n return function(view, event) {\n var name = keyName(event), isChar = name.length == 1 && name != \" \", baseName;\n var direct = map[modifiers(name, event, !isChar)];\n if (direct && direct(view.state, view.dispatch, view)) { return true }\n if (isChar && (event.shiftKey || event.altKey || event.metaKey || name.charCodeAt(0) > 127) &&\n (baseName = base[event.keyCode]) && baseName != name) {\n // Try falling back to the keyCode when there's a modifier\n // active or the character produced isn't ASCII, and our table\n // produces a different name from the the keyCode. See #668,\n // #1060\n var fromCode = map[modifiers(baseName, event, true)];\n if (fromCode && fromCode(view.state, view.dispatch, view)) { return true }\n } else if (isChar && event.shiftKey) {\n // Otherwise, if shift is active, also try the binding with the\n // Shift- prefix enabled. See #997\n var withShift = map[modifiers(name, event, true)];\n if (withShift && withShift(view.state, view.dispatch, view)) { return true }\n }\n return false\n }\n}\n\nexport { keydownHandler, keymap };\n//# sourceMappingURL=index.es.js.map\n","const Renderer = require('./Renderer.js');\nconst { defaults } = require('./defaults.js');\nconst { inline } = require('./rules.js');\nconst {\n findClosingBracket,\n escape\n} = require('./helpers.js');\n\n/**\n * Inline Lexer & Compiler\n */\nmodule.exports = class InlineLexer {\n constructor(links, options) {\n this.options = options || defaults;\n this.links = links;\n this.rules = inline.normal;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.pedantic) {\n this.rules = inline.pedantic;\n } else if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n }\n }\n\n /**\n * Expose Inline Rules\n */\n static get rules() {\n return inline;\n }\n\n /**\n * Static Lexing/Compiling Method\n */\n static output(src, links, options) {\n const inline = new InlineLexer(links, options);\n return inline.output(src);\n }\n\n /**\n * Lexing/Compiling\n */\n output(src) {\n let out = '',\n link,\n text,\n href,\n title,\n cap,\n prevCapZero;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += escape(cap[1]);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n if (!this.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = true;\n } else if (this.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.inRawBlock = false;\n }\n\n src = src.substring(cap[0].length);\n out += this.renderer.html(this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]);\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n src = src.substring(cap[0].length);\n this.inLink = true;\n href = cap[2];\n if (this.options.pedantic) {\n link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n } else {\n title = '';\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim().replace(/^<([\\s\\S]*)>$/, '$1');\n out += this.outputLink(cap, {\n href: InlineLexer.escapes(href),\n title: InlineLexer.escapes(title)\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2].trim(), true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = escape(this.mangle(cap[1]));\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n src = src.substring(cap[0].length);\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n if (this.inRawBlock) {\n out += this.renderer.text(this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0]);\n } else {\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n }\n continue;\n }\n\n if (src) {\n throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n }\n\n static escapes(text) {\n return text ? text.replace(InlineLexer.rules._escapes, '$1') : text;\n }\n\n /**\n * Compile Link\n */\n outputLink(cap, link) {\n const href = link.href,\n title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n }\n\n /**\n * Smartypants Transformations\n */\n smartypants(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n }\n\n /**\n * Mangle Links\n */\n mangle(text) {\n if (!this.options.mangle) return text;\n const l = text.length;\n let out = '',\n i = 0,\n ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar prosemirrorState = require('prosemirror-state');\nvar prosemirrorModel = require('prosemirror-model');\nvar prosemirrorTables = require('prosemirror-tables');\n\n// :: (nodeType: union) → (tr: Transaction) → Transaction\n// Returns a new transaction that removes a node of a given `nodeType`. It will return an original transaction if parent node hasn't been found.\n//\n// ```javascript\n// dispatch(\n// removeParentNodeOfType(schema.nodes.table)(tr)\n// );\n// ```\nvar removeParentNodeOfType = function removeParentNodeOfType(nodeType) {\n return function (tr) {\n var parent = findParentNodeOfType(nodeType)(tr.selection);\n if (parent) {\n return removeNodeAtPos(parent.pos)(tr);\n }\n return tr;\n };\n};\n\n// :: (nodeType: union, content: union) → (tr: Transaction) → Transaction\n// Returns a new transaction that replaces parent node of a given `nodeType` with the given `content`. It will return an original transaction if either parent node hasn't been found or replacing is not possible.\n//\n// ```javascript\n// const node = schema.nodes.paragraph.createChecked({}, schema.text('new'));\n//\n// dispatch(\n// replaceParentNodeOfType(schema.nodes.table, node)(tr)\n// );\n// ```\nvar replaceParentNodeOfType = function replaceParentNodeOfType(nodeType, content) {\n return function (tr) {\n if (!Array.isArray(nodeType)) {\n nodeType = [nodeType];\n }\n for (var i = 0, count = nodeType.length; i < count; i++) {\n var parent = findParentNodeOfType(nodeType[i])(tr.selection);\n if (parent) {\n var newTr = replaceNodeAtPos(parent.pos, content)(tr);\n if (newTr !== tr) {\n return newTr;\n }\n }\n }\n return tr;\n };\n};\n\n// :: (tr: Transaction) → Transaction\n// Returns a new transaction that removes selected node. It will return an original transaction if current selection is not a `NodeSelection`.\n//\n// ```javascript\n// dispatch(\n// removeSelectedNode(tr)\n// );\n// ```\nvar removeSelectedNode = function removeSelectedNode(tr) {\n if (isNodeSelection(tr.selection)) {\n var from = tr.selection.$from.pos;\n var to = tr.selection.$to.pos;\n return cloneTr(tr.delete(from, to));\n }\n return tr;\n};\n\n// :: (content: union) → (tr: Transaction) → Transaction\n// Returns a new transaction that replaces selected node with a given `node`, keeping NodeSelection on the new `node`.\n// It will return the original transaction if either current selection is not a NodeSelection or replacing is not possible.\n//\n// ```javascript\n// const node = schema.nodes.paragraph.createChecked({}, schema.text('new'));\n// dispatch(\n// replaceSelectedNode(node)(tr)\n// );\n// ```\nvar replaceSelectedNode = function replaceSelectedNode(content) {\n return function (tr) {\n if (isNodeSelection(tr.selection)) {\n var _tr$selection = tr.selection,\n $from = _tr$selection.$from,\n $to = _tr$selection.$to;\n\n if (content instanceof prosemirrorModel.Fragment && $from.parent.canReplace($from.index(), $from.indexAfter(), content) || $from.parent.canReplaceWith($from.index(), $from.indexAfter(), content.type)) {\n return cloneTr(tr.replaceWith($from.pos, $to.pos, content)\n // restore node selection\n .setSelection(new prosemirrorState.NodeSelection(tr.doc.resolve($from.pos))));\n }\n }\n return tr;\n };\n};\n\n// :: (position: number, dir: ?number) → (tr: Transaction) → Transaction\n// Returns a new transaction that tries to find a valid cursor selection starting at the given `position`\n// and searching back if `dir` is negative, and forward if positive.\n// If a valid cursor position hasn't been found, it will return the original transaction.\n//\n// ```javascript\n// dispatch(\n// setTextSelection(5)(tr)\n// );\n// ```\nvar setTextSelection = function setTextSelection(position) {\n var dir = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return function (tr) {\n var nextSelection = prosemirrorState.Selection.findFrom(tr.doc.resolve(position), dir, true);\n if (nextSelection) {\n return tr.setSelection(nextSelection);\n }\n return tr;\n };\n};\n\nvar isSelectableNode = function isSelectableNode(node) {\n return node.type && node.type.spec.selectable;\n};\nvar shouldSelectNode = function shouldSelectNode(node) {\n return isSelectableNode(node) && node.type.isLeaf;\n};\n\nvar setSelection = function setSelection(node, pos, tr) {\n if (shouldSelectNode(node)) {\n return tr.setSelection(new prosemirrorState.NodeSelection(tr.doc.resolve(pos)));\n }\n return setTextSelection(pos)(tr);\n};\n\n// :: (content: union, position: ?number, tryToReplace?: boolean) → (tr: Transaction) → Transaction\n// Returns a new transaction that inserts a given `content` at the current cursor position, or at a given `position`, if it is allowed by schema. If schema restricts such nesting, it will try to find an appropriate place for a given node in the document, looping through parent nodes up until the root document node.\n// If `tryToReplace` is true and current selection is a NodeSelection, it will replace selected node with inserted content if its allowed by schema.\n// If cursor is inside of an empty paragraph, it will try to replace that paragraph with the given content. If insertion is successful and inserted node has content, it will set cursor inside of that content.\n// It will return an original transaction if the place for insertion hasn't been found.\n//\n// ```javascript\n// const node = schema.nodes.extension.createChecked({});\n// dispatch(\n// safeInsert(node)(tr)\n// );\n// ```\nvar safeInsert = function safeInsert(content, position, tryToReplace) {\n return function (tr) {\n var hasPosition = typeof position === 'number';\n var $from = tr.selection.$from;\n\n var $insertPos = hasPosition ? tr.doc.resolve(position) : isNodeSelection(tr.selection) ? tr.doc.resolve($from.pos + 1) : $from;\n var parent = $insertPos.parent;\n\n // try to replace selected node\n\n if (isNodeSelection(tr.selection) && tryToReplace) {\n var oldTr = tr;\n tr = replaceSelectedNode(content)(tr);\n if (oldTr !== tr) {\n return tr;\n }\n }\n\n // try to replace an empty paragraph\n if (isEmptyParagraph(parent)) {\n var _oldTr = tr;\n tr = replaceParentNodeOfType(parent.type, content)(tr);\n if (_oldTr !== tr) {\n var pos = isSelectableNode(content) ? // for selectable node, selection position would be the position of the replaced parent\n $insertPos.before($insertPos.depth) : $insertPos.pos;\n return setSelection(content, pos, tr);\n }\n }\n\n // given node is allowed at the current cursor position\n if (canInsert($insertPos, content)) {\n tr.insert($insertPos.pos, content);\n var _pos = hasPosition ? $insertPos.pos : isSelectableNode(content) ? // for atom nodes selection position after insertion is the previous pos\n tr.selection.$anchor.pos - 1 : tr.selection.$anchor.pos;\n return cloneTr(setSelection(content, _pos, tr));\n }\n\n // looking for a place in the doc where the node is allowed\n for (var i = $insertPos.depth; i > 0; i--) {\n var _pos2 = $insertPos.after(i);\n var $pos = tr.doc.resolve(_pos2);\n if (canInsert($pos, content)) {\n tr.insert(_pos2, content);\n return cloneTr(setSelection(content, _pos2, tr));\n }\n }\n return tr;\n };\n};\n\n// :: (nodeType: union, type: ?union, attrs: ?union, marks?: [Mark]) → (tr: Transaction) → Transaction\n// Returns a transaction that changes the type, attributes, and/or marks of the parent node of a given `nodeType`.\n//\n// ```javascript\n// const node = schema.nodes.extension.createChecked({});\n// dispatch(\n// setParentNodeMarkup(schema.nodes.panel, null, { panelType })(tr);\n// );\n// ```\nvar setParentNodeMarkup = function setParentNodeMarkup(nodeType, type, attrs, marks) {\n return function (tr) {\n var parent = findParentNodeOfType(nodeType)(tr.selection);\n if (parent) {\n return cloneTr(tr.setNodeMarkup(parent.pos, type, Object.assign({}, parent.node.attrs, attrs), marks));\n }\n return tr;\n };\n};\n\n// :: (nodeType: union) → (tr: Transaction) → Transaction\n// Returns a new transaction that sets a `NodeSelection` on a parent node of a `given nodeType`.\n//\n// ```javascript\n// dispatch(\n// selectParentNodeOfType([tableCell, tableHeader])(state.tr)\n// );\n// ```\nvar selectParentNodeOfType = function selectParentNodeOfType(nodeType) {\n return function (tr) {\n if (!isNodeSelection(tr.selection)) {\n var parent = findParentNodeOfType(nodeType)(tr.selection);\n if (parent) {\n return cloneTr(tr.setSelection(prosemirrorState.NodeSelection.create(tr.doc, parent.pos)));\n }\n }\n return tr;\n };\n};\n\n// :: (tr: Transaction) → Transaction\n// Returns a new transaction that deletes previous node.\n//\n// ```javascript\n// dispatch(\n// removeNodeBefore(state.tr)\n// );\n// ```\nvar removeNodeBefore = function removeNodeBefore(tr) {\n var position = findPositionOfNodeBefore(tr.selection);\n if (typeof position === 'number') {\n return removeNodeAtPos(position)(tr);\n }\n return tr;\n};\n\n// :: (selection: Selection) → boolean\n// Checks if current selection is a `NodeSelection`.\n//\n// ```javascript\n// if (isNodeSelection(tr.selection)) {\n// // ...\n// }\n// ```\nvar isNodeSelection = function isNodeSelection(selection) {\n return selection instanceof prosemirrorState.NodeSelection;\n};\n\n// (nodeType: union) → boolean\n// Checks if the type a given `node` equals to a given `nodeType`.\nvar equalNodeType = function equalNodeType(nodeType, node) {\n return Array.isArray(nodeType) && nodeType.indexOf(node.type) > -1 || node.type === nodeType;\n};\n\n// (tr: Transaction) → Transaction\n// Creates a new transaction object from a given transaction\nvar cloneTr = function cloneTr(tr) {\n return Object.assign(Object.create(tr), tr).setTime(Date.now());\n};\n\n// (position: number, content: union) → (tr: Transaction) → Transaction\n// Returns a `replace` transaction that replaces a node at a given position with the given `content`.\n// It will return the original transaction if replacing is not possible.\n// `position` should point at the position immediately before the node.\nvar replaceNodeAtPos = function replaceNodeAtPos(position, content) {\n return function (tr) {\n var node = tr.doc.nodeAt(position);\n var $pos = tr.doc.resolve(position);\n if (canReplace($pos, content)) {\n tr = tr.replaceWith(position, position + node.nodeSize, content);\n var start = tr.selection.$from.pos - 1;\n // put cursor inside of the inserted node\n tr = setTextSelection(Math.max(start, 0), -1)(tr);\n // move cursor to the start of the node\n tr = setTextSelection(tr.selection.$from.start())(tr);\n return cloneTr(tr);\n }\n return tr;\n };\n};\n\n// ($pos: ResolvedPos, doc: ProseMirrorNode, content: union, ) → boolean\n// Checks if replacing a node at a given `$pos` inside of the `doc` node with the given `content` is possible.\nvar canReplace = function canReplace($pos, content) {\n var node = $pos.node($pos.depth);\n return node && node.type.validContent(content instanceof prosemirrorModel.Fragment ? content : prosemirrorModel.Fragment.from(content));\n};\n\n// (position: number) → (tr: Transaction) → Transaction\n// Returns a `delete` transaction that removes a node at a given position with the given `node`.\n// `position` should point at the position immediately before the node.\nvar removeNodeAtPos = function removeNodeAtPos(position) {\n return function (tr) {\n var node = tr.doc.nodeAt(position);\n return cloneTr(tr.delete(position, position + node.nodeSize));\n };\n};\n\n// (schema: Schema) → {[key: string]: NodeType}\n// Returns a map where keys are tableRoles and values are NodeTypes.\nvar tableNodeTypes = function tableNodeTypes(schema) {\n if (schema.cached.tableNodeTypes) {\n return schema.cached.tableNodeTypes;\n }\n var roles = {};\n Object.keys(schema.nodes).forEach(function (type) {\n var nodeType = schema.nodes[type];\n if (nodeType.spec.tableRole) {\n roles[nodeType.spec.tableRole] = nodeType;\n }\n });\n schema.cached.tableNodeTypes = roles;\n return roles;\n};\n\n// :: ($pos: ResolvedPos, content: union) → boolean\n// Checks if a given `content` can be inserted at the given `$pos`\n//\n// ```javascript\n// const { selection: { $from } } = state;\n// const node = state.schema.nodes.atom.createChecked();\n// if (canInsert($from, node)) {\n// // ...\n// }\n// ```\nvar canInsert = function canInsert($pos, content) {\n var index = $pos.index();\n\n if (content instanceof prosemirrorModel.Fragment) {\n return $pos.parent.canReplace(index, index, content);\n } else if (content instanceof prosemirrorModel.Node) {\n return $pos.parent.canReplaceWith(index, index, content.type);\n }\n return false;\n};\n\n// (node: ProseMirrorNode) → boolean\n// Checks if a given `node` is an empty paragraph\nvar isEmptyParagraph = function isEmptyParagraph(node) {\n return !node || node.type.name === 'paragraph' && node.nodeSize === 2;\n};\n\n// ($pos: ResolvedPos) → ?{pos: number, start: number, node: ProseMirrorNode}\n// Iterates over parent nodes, returning a table node closest to a given `$pos`.\n//\n// ```javascript\n// const table = findTableClosestToPos(state.doc.resolve(10));\n// ```\nvar findTableClosestToPos = function findTableClosestToPos($pos) {\n var predicate = function predicate(node) {\n return node.type.spec.tableRole && /table/i.test(node.type.spec.tableRole);\n };\n return findParentNodeClosestToPos($pos, predicate);\n};\n\nvar createCell = function createCell(cellType) {\n var cellContent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (cellContent) {\n return cellType.createChecked(null, cellContent);\n }\n\n return cellType.createAndFill();\n};\n\n// (rect: {left: number, right: number, top: number, bottom: number}) → (selection: Selection) → boolean\n// Checks if a given CellSelection rect is selected\nvar isRectSelected = function isRectSelected(rect) {\n return function (selection) {\n var map = prosemirrorTables.TableMap.get(selection.$anchorCell.node(-1));\n var start = selection.$anchorCell.start(-1);\n var cells = map.cellsInRect(rect);\n var selectedCells = map.cellsInRect(map.rectBetween(selection.$anchorCell.pos - start, selection.$headCell.pos - start));\n\n for (var i = 0, count = cells.length; i < count; i++) {\n if (selectedCells.indexOf(cells[i]) === -1) {\n return false;\n }\n }\n\n return true;\n };\n};\n\n// This function transposes an array of array flipping the columns for rows,\n// transposition is a familiar algebra concept;\n// you can get more details here:\n// https://en.wikipedia.org/wiki/Transpose\n//\n// ```javascript\n//\n// const arr = [\n// ['a1', 'a2', 'a3'],\n// ['b1', 'b2', 'b3'],\n// ['c1', 'c2', 'c3'],\n// ['d1', 'd2', 'd3'],\n// ];\n//\n// const result = transpose(arr);\n//\n// result === [\n// ['a1', 'b1', 'c1', 'd1'],\n// ['a2', 'b2', 'c2', 'd2'],\n// ['a3', 'b3', 'c3', 'd3'],\n// ]\n// ```\nvar transpose = function transpose(array) {\n return array[0].map(function (_, i) {\n return array.map(function (column) {\n return column[i];\n });\n });\n};\n\n// :: (tableNode: Node) -> Array\n// This function will transform the table node\n// into a matrix of rows and columns respecting merged cells,\n// for example this table will be convert to the below:\n//\n// ```\n// ____________________________\n// | | | |\n// | A1 | B1 | C1 |\n// |______|______|______ ______|\n// | | | |\n// | A2 | B2 | |\n// |______|______ ______| |\n// | | | | D1 |\n// | A3 | B3 | C2 | |\n// |______|______|______|______|\n// ```\n//\n//\n// ```javascript\n// array = [\n// [A1, B1, C1, null],\n// [A2, B2, null, D1],\n// [A3. B3, C2, null],\n// ]\n// ```\nvar convertTableNodeToArrayOfRows = function convertTableNodeToArrayOfRows(tableNode) {\n var map = prosemirrorTables.TableMap.get(tableNode);\n var rows = [];\n for (var rowIndex = 0; rowIndex < map.height; rowIndex++) {\n var rowCells = [];\n var seen = {};\n\n for (var colIndex = 0; colIndex < map.width; colIndex++) {\n var cellPos = map.map[rowIndex * map.width + colIndex];\n var cell = tableNode.nodeAt(cellPos);\n var rect = map.findCell(cellPos);\n if (seen[cellPos] || rect.top !== rowIndex) {\n rowCells.push(null);\n continue;\n }\n seen[cellPos] = true;\n\n rowCells.push(cell);\n }\n\n rows.push(rowCells);\n }\n\n return rows;\n};\n\n// :: (tableNode: Node, tableArray: Array) -> Node\n// This function will transform a matrix of nodes\n// into table node respecting merged cells and rows configurations,\n// for example this array will be convert to the table below:\n//\n// ```javascript\n// array = [\n// [A1, B1, C1, null],\n// [A2, B2, null, D1],\n// [A3. B3, C2, null],\n// ]\n// ```\n//\n// ```\n// ____________________________\n// | | | |\n// | A1 | B1 | C1 |\n// |______|______|______ ______|\n// | | | |\n// | A2 | B2 | |\n// |______|______ ______| |\n// | | | | D1 |\n// | A3 | B3 | C2 | |\n// |______|______|______|______|\n// ```\n//\nvar convertArrayOfRowsToTableNode = function convertArrayOfRowsToTableNode(tableNode, arrayOfNodes) {\n var rowsPM = [];\n var map = prosemirrorTables.TableMap.get(tableNode);\n for (var rowIndex = 0; rowIndex < map.height; rowIndex++) {\n var row = tableNode.child(rowIndex);\n var rowCells = [];\n\n for (var colIndex = 0; colIndex < map.width; colIndex++) {\n if (!arrayOfNodes[rowIndex][colIndex]) {\n continue;\n }\n var cellPos = map.map[rowIndex * map.width + colIndex];\n\n var cell = arrayOfNodes[rowIndex][colIndex];\n var oldCell = tableNode.nodeAt(cellPos);\n var newCell = oldCell.type.createChecked(Object.assign({}, cell.attrs), cell.content, cell.marks);\n rowCells.push(newCell);\n }\n\n rowsPM.push(row.type.createChecked(row.attrs, rowCells, row.marks));\n }\n\n var newTable = tableNode.type.createChecked(tableNode.attrs, rowsPM, tableNode.marks);\n\n return newTable;\n};\n\nvar moveTableColumn = function moveTableColumn(table, indexesOrigin, indexesTarget, direction) {\n var rows = transpose(convertTableNodeToArrayOfRows(table.node));\n\n rows = moveRowInArrayOfRows(rows, indexesOrigin, indexesTarget, direction);\n rows = transpose(rows);\n\n return convertArrayOfRowsToTableNode(table.node, rows);\n};\n\nvar moveTableRow = function moveTableRow(table, indexesOrigin, indexesTarget, direction) {\n var rows = convertTableNodeToArrayOfRows(table.node);\n\n rows = moveRowInArrayOfRows(rows, indexesOrigin, indexesTarget, direction);\n\n return convertArrayOfRowsToTableNode(table.node, rows);\n};\n\nvar moveRowInArrayOfRows = function moveRowInArrayOfRows(rows, indexesOrigin, indexesTarget, directionOverride) {\n var direction = indexesOrigin[0] > indexesTarget[0] ? -1 : 1;\n\n var rowsExtracted = rows.splice(indexesOrigin[0], indexesOrigin.length);\n var positionOffset = rowsExtracted.length % 2 === 0 ? 1 : 0;\n var target = void 0;\n\n if (directionOverride === -1 && direction === 1) {\n target = indexesTarget[0] - 1;\n } else if (directionOverride === 1 && direction === -1) {\n target = indexesTarget[indexesTarget.length - 1] - positionOffset + 1;\n } else {\n target = direction === -1 ? indexesTarget[0] : indexesTarget[indexesTarget.length - 1] - positionOffset;\n }\n\n rows.splice.apply(rows, [target, 0].concat(rowsExtracted));\n return rows;\n};\n\nvar checkInvalidMovements = function checkInvalidMovements(originIndex, targetIndex, targets, type) {\n var direction = originIndex > targetIndex ? -1 : 1;\n var errorMessage = 'Target position is invalid, you can\\'t move the ' + type + ' ' + originIndex + ' to ' + targetIndex + ', the target can\\'t be split. You could use tryToFit option.';\n\n if (direction === 1) {\n if (targets.slice(0, targets.length - 1).indexOf(targetIndex) !== -1) {\n throw new Error(errorMessage);\n }\n } else {\n if (targets.slice(1).indexOf(targetIndex) !== -1) {\n throw new Error(errorMessage);\n }\n }\n\n return true;\n};\n\n// :: (predicate: (node: ProseMirrorNode) → boolean) → (selection: Selection) → ?{pos: number, start: number, depth: number, node: ProseMirrorNode}\n// Iterates over parent nodes, returning the closest node and its start position `predicate` returns truthy for. `start` points to the start position of the node, `pos` points directly before the node.\n//\n// ```javascript\n// const predicate = node => node.type === schema.nodes.blockquote;\n// const parent = findParentNode(predicate)(selection);\n// ```\nvar findParentNode = function findParentNode(predicate) {\n return function (_ref) {\n var $from = _ref.$from;\n return findParentNodeClosestToPos($from, predicate);\n };\n};\n\n// :: ($pos: ResolvedPos, predicate: (node: ProseMirrorNode) → boolean) → ?{pos: number, start: number, depth: number, node: ProseMirrorNode}\n// Iterates over parent nodes starting from the given `$pos`, returning the closest node and its start position `predicate` returns truthy for. `start` points to the start position of the node, `pos` points directly before the node.\n//\n// ```javascript\n// const predicate = node => node.type === schema.nodes.blockquote;\n// const parent = findParentNodeClosestToPos(state.doc.resolve(5), predicate);\n// ```\nvar findParentNodeClosestToPos = function findParentNodeClosestToPos($pos, predicate) {\n for (var i = $pos.depth; i > 0; i--) {\n var node = $pos.node(i);\n if (predicate(node)) {\n return {\n pos: i > 0 ? $pos.before(i) : 0,\n start: $pos.start(i),\n depth: i,\n node: node\n };\n }\n }\n};\n\n// :: (predicate: (node: ProseMirrorNode) → boolean, domAtPos: (pos: number) → {node: dom.Node, offset: number}) → (selection: Selection) → ?dom.Node\n// Iterates over parent nodes, returning DOM reference of the closest node `predicate` returns truthy for.\n//\n// ```javascript\n// const domAtPos = view.domAtPos.bind(view);\n// const predicate = node => node.type === schema.nodes.table;\n// const parent = findParentDomRef(predicate, domAtPos)(selection); // \n// ```\nvar findParentDomRef = function findParentDomRef(predicate, domAtPos) {\n return function (selection) {\n var parent = findParentNode(predicate)(selection);\n if (parent) {\n return findDomRefAtPos(parent.pos, domAtPos);\n }\n };\n};\n\n// :: (predicate: (node: ProseMirrorNode) → boolean) → (selection: Selection) → boolean\n// Checks if there's a parent node `predicate` returns truthy for.\n//\n// ```javascript\n// if (hasParentNode(node => node.type === schema.nodes.table)(selection)) {\n// // ....\n// }\n// ```\nvar hasParentNode = function hasParentNode(predicate) {\n return function (selection) {\n return !!findParentNode(predicate)(selection);\n };\n};\n\n// :: (nodeType: union) → (selection: Selection) → ?{pos: number, start: number, depth: number, node: ProseMirrorNode}\n// Iterates over parent nodes, returning closest node of a given `nodeType`. `start` points to the start position of the node, `pos` points directly before the node.\n//\n// ```javascript\n// const parent = findParentNodeOfType(schema.nodes.paragraph)(selection);\n// ```\nvar findParentNodeOfType = function findParentNodeOfType(nodeType) {\n return function (selection) {\n return findParentNode(function (node) {\n return equalNodeType(nodeType, node);\n })(selection);\n };\n};\n\n// :: ($pos: ResolvedPos, nodeType: union) → ?{pos: number, start: number, depth: number, node: ProseMirrorNode}\n// Iterates over parent nodes starting from the given `$pos`, returning closest node of a given `nodeType`. `start` points to the start position of the node, `pos` points directly before the node.\n//\n// ```javascript\n// const parent = findParentNodeOfTypeClosestToPos(state.doc.resolve(10), schema.nodes.paragraph);\n// ```\nvar findParentNodeOfTypeClosestToPos = function findParentNodeOfTypeClosestToPos($pos, nodeType) {\n return findParentNodeClosestToPos($pos, function (node) {\n return equalNodeType(nodeType, node);\n });\n};\n\n// :: (nodeType: union) → (selection: Selection) → boolean\n// Checks if there's a parent node of a given `nodeType`.\n//\n// ```javascript\n// if (hasParentNodeOfType(schema.nodes.table)(selection)) {\n// // ....\n// }\n// ```\nvar hasParentNodeOfType = function hasParentNodeOfType(nodeType) {\n return function (selection) {\n return hasParentNode(function (node) {\n return equalNodeType(nodeType, node);\n })(selection);\n };\n};\n\n// :: (nodeType: union, domAtPos: (pos: number) → {node: dom.Node, offset: number}) → (selection: Selection) → ?dom.Node\n// Iterates over parent nodes, returning DOM reference of the closest node of a given `nodeType`.\n//\n// ```javascript\n// const domAtPos = view.domAtPos.bind(view);\n// const parent = findParentDomRefOfType(schema.nodes.codeBlock, domAtPos)(selection); //
    \n// ```\nvar findParentDomRefOfType = function findParentDomRefOfType(nodeType, domAtPos) {\n  return function (selection) {\n    return findParentDomRef(function (node) {\n      return equalNodeType(nodeType, node);\n    }, domAtPos)(selection);\n  };\n};\n\n// :: (nodeType: union) → (selection: Selection) → ?{pos: number, start: number, depth: number, node: ProseMirrorNode}\n// Returns a node of a given `nodeType` if it is selected. `start` points to the start position of the node, `pos` points directly before the node.\n//\n// ```javascript\n// const { extension, inlineExtension, bodiedExtension } = schema.nodes;\n// const selectedNode = findSelectedNodeOfType([\n//   extension,\n//   inlineExtension,\n//   bodiedExtension,\n// ])(selection);\n// ```\nvar findSelectedNodeOfType = function findSelectedNodeOfType(nodeType) {\n  return function (selection) {\n    if (isNodeSelection(selection)) {\n      var node = selection.node,\n          $from = selection.$from;\n\n      if (equalNodeType(nodeType, node)) {\n        return { node: node, pos: $from.pos, depth: $from.depth };\n      }\n    }\n  };\n};\n\n// :: (selection: Selection) → ?number\n// Returns position of the previous node.\n//\n// ```javascript\n// const pos = findPositionOfNodeBefore(tr.selection);\n// ```\nvar findPositionOfNodeBefore = function findPositionOfNodeBefore(selection) {\n  var nodeBefore = selection.$from.nodeBefore;\n\n  var maybeSelection = prosemirrorState.Selection.findFrom(selection.$from, -1);\n  if (maybeSelection && nodeBefore) {\n    // leaf node\n    var parent = findParentNodeOfType(nodeBefore.type)(maybeSelection);\n    if (parent) {\n      return parent.pos;\n    }\n    return maybeSelection.$from.pos;\n  }\n};\n\n// :: (position: number, domAtPos: (pos: number) → {node: dom.Node, offset: number}) → dom.Node\n// Returns DOM reference of a node at a given `position`. If the node type is of type `TEXT_NODE` it will return the reference of the parent node.\n//\n// ```javascript\n// const domAtPos = view.domAtPos.bind(view);\n// const ref = findDomRefAtPos($from.pos, domAtPos);\n// ```\nvar findDomRefAtPos = function findDomRefAtPos(position, domAtPos) {\n  var dom = domAtPos(position);\n  var node = dom.node.childNodes[dom.offset];\n\n  if (dom.node.nodeType === Node.TEXT_NODE) {\n    return dom.node.parentNode;\n  }\n\n  if (!node || node.nodeType === Node.TEXT_NODE) {\n    return dom.node;\n  }\n\n  return node;\n};\n\n// :: (node: ProseMirrorNode, descend: ?boolean) → [{ node: ProseMirrorNode, pos: number }]\n// Flattens descendants of a given `node`. It doesn't descend into a node when descend argument is `false` (defaults to `true`).\n//\n// ```javascript\n// const children = flatten(node);\n// ```\nvar flatten = function flatten(node) {\n  var descend = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n  if (!node) {\n    throw new Error('Invalid \"node\" parameter');\n  }\n  var result = [];\n  node.descendants(function (child, pos) {\n    result.push({ node: child, pos: pos });\n    if (!descend) {\n      return false;\n    }\n  });\n  return result;\n};\n\n// :: (node: ProseMirrorNode, predicate: (node: ProseMirrorNode) → boolean, descend: ?boolean) → [{ node: ProseMirrorNode, pos: number }]\n// Iterates over descendants of a given `node`, returning child nodes predicate returns truthy for. It doesn't descend into a node when descend argument is `false` (defaults to `true`).\n//\n// ```javascript\n// const textNodes = findChildren(node, child => child.isText, false);\n// ```\nvar findChildren = function findChildren(node, predicate, descend) {\n  if (!node) {\n    throw new Error('Invalid \"node\" parameter');\n  } else if (!predicate) {\n    throw new Error('Invalid \"predicate\" parameter');\n  }\n  return flatten(node, descend).filter(function (child) {\n    return predicate(child.node);\n  });\n};\n\n// :: (node: ProseMirrorNode, descend: ?boolean) → [{ node: ProseMirrorNode, pos: number }]\n// Returns text nodes of a given `node`. It doesn't descend into a node when descend argument is `false` (defaults to `true`).\n//\n// ```javascript\n// const textNodes = findTextNodes(node);\n// ```\nvar findTextNodes = function findTextNodes(node, descend) {\n  return findChildren(node, function (child) {\n    return child.isText;\n  }, descend);\n};\n\n// :: (node: ProseMirrorNode, descend: ?boolean) → [{ node: ProseMirrorNode, pos: number }]\n// Returns inline nodes of a given `node`. It doesn't descend into a node when descend argument is `false` (defaults to `true`).\n//\n// ```javascript\n// const inlineNodes = findInlineNodes(node);\n// ```\nvar findInlineNodes = function findInlineNodes(node, descend) {\n  return findChildren(node, function (child) {\n    return child.isInline;\n  }, descend);\n};\n\n// :: (node: ProseMirrorNode, descend: ?boolean) → [{ node: ProseMirrorNode, pos: number }]\n// Returns block descendants of a given `node`. It doesn't descend into a node when descend argument is `false` (defaults to `true`).\n//\n// ```javascript\n// const blockNodes = findBlockNodes(node);\n// ```\nvar findBlockNodes = function findBlockNodes(node, descend) {\n  return findChildren(node, function (child) {\n    return child.isBlock;\n  }, descend);\n};\n\n// :: (node: ProseMirrorNode, predicate: (attrs: ?Object) → boolean, descend: ?boolean) → [{ node: ProseMirrorNode, pos: number }]\n// Iterates over descendants of a given `node`, returning child nodes predicate returns truthy for. It doesn't descend into a node when descend argument is `false` (defaults to `true`).\n//\n// ```javascript\n// const mergedCells = findChildrenByAttr(table, attrs => attrs.colspan === 2);\n// ```\nvar findChildrenByAttr = function findChildrenByAttr(node, predicate, descend) {\n  return findChildren(node, function (child) {\n    return !!predicate(child.attrs);\n  }, descend);\n};\n\n// :: (node: ProseMirrorNode, nodeType: NodeType, descend: ?boolean) → [{ node: ProseMirrorNode, pos: number }]\n// Iterates over descendants of a given `node`, returning child nodes of a given nodeType. It doesn't descend into a node when descend argument is `false` (defaults to `true`).\n//\n// ```javascript\n// const cells = findChildrenByType(table, schema.nodes.tableCell);\n// ```\nvar findChildrenByType = function findChildrenByType(node, nodeType, descend) {\n  return findChildren(node, function (child) {\n    return child.type === nodeType;\n  }, descend);\n};\n\n// :: (node: ProseMirrorNode, markType: markType, descend: ?boolean) → [{ node: ProseMirrorNode, pos: number }]\n// Iterates over descendants of a given `node`, returning child nodes that have a mark of a given markType. It doesn't descend into a `node` when descend argument is `false` (defaults to `true`).\n//\n// ```javascript\n// const nodes = findChildrenByMark(state.doc, schema.marks.strong);\n// ```\nvar findChildrenByMark = function findChildrenByMark(node, markType, descend) {\n  return findChildren(node, function (child) {\n    return markType.isInSet(child.marks);\n  }, descend);\n};\n\n// :: (node: ProseMirrorNode, nodeType: NodeType) → boolean\n// Returns `true` if a given node contains nodes of a given `nodeType`\n//\n// ```javascript\n// if (contains(panel, schema.nodes.listItem)) {\n//   // ...\n// }\n// ```\nvar contains = function contains(node, nodeType) {\n  return !!findChildrenByType(node, nodeType).length;\n};\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// :: (selection: Selection) → ?{pos: number, start: number, node: ProseMirrorNode}\n// Iterates over parent nodes, returning the closest table node.\n//\n// ```javascript\n// const table = findTable(selection);\n// ```\nvar findTable = function findTable(selection) {\n  return findParentNode(function (node) {\n    return node.type.spec.tableRole && node.type.spec.tableRole === 'table';\n  })(selection);\n};\n\n// :: (selection: Selection) → boolean\n// Checks if current selection is a `CellSelection`.\n//\n// ```javascript\n// if (isCellSelection(selection)) {\n//   // ...\n// }\n// ```\nvar isCellSelection = function isCellSelection(selection) {\n  return selection instanceof prosemirrorTables.CellSelection;\n};\n\n// :: (selection: Selection) → ?{left: number, right: number, top: number, bottom: number}\n// Get the selection rectangle. Returns `undefined` if selection is not a CellSelection.\n//\n// ```javascript\n// const rect = getSelectionRect(selection);\n// ```\nvar getSelectionRect = function getSelectionRect(selection) {\n  if (!isCellSelection(selection)) {\n    return;\n  }\n  var start = selection.$anchorCell.start(-1);\n  var map = prosemirrorTables.TableMap.get(selection.$anchorCell.node(-1));\n  return map.rectBetween(selection.$anchorCell.pos - start, selection.$headCell.pos - start);\n};\n\n// :: (columnIndex: number) → (selection: Selection) → boolean\n// Checks if entire column at index `columnIndex` is selected.\n//\n// ```javascript\n// const className = isColumnSelected(i)(selection) ? 'selected' : '';\n// ```\nvar isColumnSelected = function isColumnSelected(columnIndex) {\n  return function (selection) {\n    if (isCellSelection(selection)) {\n      var map = prosemirrorTables.TableMap.get(selection.$anchorCell.node(-1));\n      return isRectSelected({\n        left: columnIndex,\n        right: columnIndex + 1,\n        top: 0,\n        bottom: map.height\n      })(selection);\n    }\n\n    return false;\n  };\n};\n\n// :: (rowIndex: number) → (selection: Selection) → boolean\n// Checks if entire row at index `rowIndex` is selected.\n//\n// ```javascript\n// const className = isRowSelected(i)(selection) ? 'selected' : '';\n// ```\nvar isRowSelected = function isRowSelected(rowIndex) {\n  return function (selection) {\n    if (isCellSelection(selection)) {\n      var map = prosemirrorTables.TableMap.get(selection.$anchorCell.node(-1));\n      return isRectSelected({\n        left: 0,\n        right: map.width,\n        top: rowIndex,\n        bottom: rowIndex + 1\n      })(selection);\n    }\n\n    return false;\n  };\n};\n\n// :: (selection: Selection) → boolean\n// Checks if entire table is selected\n//\n// ```javascript\n// const className = isTableSelected(selection) ? 'selected' : '';\n// ```\nvar isTableSelected = function isTableSelected(selection) {\n  if (isCellSelection(selection)) {\n    var map = prosemirrorTables.TableMap.get(selection.$anchorCell.node(-1));\n    return isRectSelected({\n      left: 0,\n      right: map.width,\n      top: 0,\n      bottom: map.height\n    })(selection);\n  }\n\n  return false;\n};\n\n// :: (columnIndex: union) → (selection: Selection) → ?[{pos: number, start: number, node: ProseMirrorNode}]\n// Returns an array of cells in a column(s), where `columnIndex` could be a column index or an array of column indexes.\n//\n// ```javascript\n// const cells = getCellsInColumn(i)(selection); // [{node, pos}, {node, pos}]\n// ```\nvar getCellsInColumn = function getCellsInColumn(columnIndex) {\n  return function (selection) {\n    var table = findTable(selection);\n    if (table) {\n      var map = prosemirrorTables.TableMap.get(table.node);\n      var indexes = Array.isArray(columnIndex) ? columnIndex : Array.from([columnIndex]);\n      return indexes.reduce(function (acc, index) {\n        if (index >= 0 && index <= map.width - 1) {\n          var cells = map.cellsInRect({\n            left: index,\n            right: index + 1,\n            top: 0,\n            bottom: map.height\n          });\n          return acc.concat(cells.map(function (nodePos) {\n            var node = table.node.nodeAt(nodePos);\n            var pos = nodePos + table.start;\n            return { pos: pos, start: pos + 1, node: node };\n          }));\n        }\n      }, []);\n    }\n  };\n};\n\n// :: (rowIndex: union) → (selection: Selection) → ?[{pos: number, start: number, node: ProseMirrorNode}]\n// Returns an array of cells in a row(s), where `rowIndex` could be a row index or an array of row indexes.\n//\n// ```javascript\n// const cells = getCellsInRow(i)(selection); // [{node, pos}, {node, pos}]\n// ```\nvar getCellsInRow = function getCellsInRow(rowIndex) {\n  return function (selection) {\n    var table = findTable(selection);\n    if (table) {\n      var map = prosemirrorTables.TableMap.get(table.node);\n      var indexes = Array.isArray(rowIndex) ? rowIndex : Array.from([rowIndex]);\n      return indexes.reduce(function (acc, index) {\n        if (index >= 0 && index <= map.height - 1) {\n          var cells = map.cellsInRect({\n            left: 0,\n            right: map.width,\n            top: index,\n            bottom: index + 1\n          });\n          return acc.concat(cells.map(function (nodePos) {\n            var node = table.node.nodeAt(nodePos);\n            var pos = nodePos + table.start;\n            return { pos: pos, start: pos + 1, node: node };\n          }));\n        }\n      }, []);\n    }\n  };\n};\n\n// :: (selection: Selection) → ?[{pos: number, start: number, node: ProseMirrorNode}]\n// Returns an array of all cells in a table.\n//\n// ```javascript\n// const cells = getCellsInTable(selection); // [{node, pos}, {node, pos}]\n// ```\nvar getCellsInTable = function getCellsInTable(selection) {\n  var table = findTable(selection);\n  if (table) {\n    var map = prosemirrorTables.TableMap.get(table.node);\n    var cells = map.cellsInRect({\n      left: 0,\n      right: map.width,\n      top: 0,\n      bottom: map.height\n    });\n    return cells.map(function (nodePos) {\n      var node = table.node.nodeAt(nodePos);\n      var pos = nodePos + table.start;\n      return { pos: pos, start: pos + 1, node: node };\n    });\n  }\n};\n\nvar select = function select(type) {\n  return function (index, expand) {\n    return function (tr) {\n      var table = findTable(tr.selection);\n      var isRowSelection = type === 'row';\n      if (table) {\n        var map = prosemirrorTables.TableMap.get(table.node);\n\n        // Check if the index is valid\n        if (index >= 0 && index < (isRowSelection ? map.height : map.width)) {\n          var left = isRowSelection ? 0 : index;\n          var top = isRowSelection ? index : 0;\n          var right = isRowSelection ? map.width : index + 1;\n          var bottom = isRowSelection ? index + 1 : map.height;\n\n          if (expand) {\n            var cell = findCellClosestToPos(tr.selection.$from);\n            if (!cell) {\n              return tr;\n            }\n\n            var selRect = map.findCell(cell.pos - table.start);\n            if (isRowSelection) {\n              top = Math.min(top, selRect.top);\n              bottom = Math.max(bottom, selRect.bottom);\n            } else {\n              left = Math.min(left, selRect.left);\n              right = Math.max(right, selRect.right);\n            }\n          }\n\n          var cellsInFirstRow = map.cellsInRect({\n            left: left,\n            top: top,\n            right: isRowSelection ? right : left + 1,\n            bottom: isRowSelection ? top + 1 : bottom\n          });\n\n          var cellsInLastRow = bottom - top === 1 ? cellsInFirstRow : map.cellsInRect({\n            left: isRowSelection ? left : right - 1,\n            top: isRowSelection ? bottom - 1 : top,\n            right: right,\n            bottom: bottom\n          });\n\n          var head = table.start + cellsInFirstRow[0];\n          var anchor = table.start + cellsInLastRow[cellsInLastRow.length - 1];\n          var $head = tr.doc.resolve(head);\n          var $anchor = tr.doc.resolve(anchor);\n\n          return cloneTr(tr.setSelection(new prosemirrorTables.CellSelection($anchor, $head)));\n        }\n      }\n      return tr;\n    };\n  };\n};\n\n// :: (columnIndex: number, expand: ?boolean) → (tr: Transaction) → Transaction\n// Returns a new transaction that creates a `CellSelection` on a column at index `columnIndex`.\n// Use the optional `expand` param to extend from current selection.\n//\n// ```javascript\n// dispatch(\n//   selectColumn(i)(state.tr)\n// );\n// ```\nvar selectColumn = select('column');\n\n// :: (rowIndex: number, expand: ?boolean) → (tr: Transaction) → Transaction\n// Returns a new transaction that creates a `CellSelection` on a column at index `rowIndex`.\n// Use the optional `expand` param to extend from current selection.\n//\n// ```javascript\n// dispatch(\n//   selectRow(i)(state.tr)\n// );\n// ```\nvar selectRow = select('row');\n\n// :: (selection: Selection) → (tr: Transaction) → Transaction\n// Returns a new transaction that creates a `CellSelection` on the entire table.\n//\n// ```javascript\n// dispatch(\n//   selectTable(i)(state.tr)\n// );\n// ```\nvar selectTable = function selectTable(tr) {\n  var table = findTable(tr.selection);\n  if (table) {\n    var _TableMap$get = prosemirrorTables.TableMap.get(table.node),\n        map = _TableMap$get.map;\n\n    if (map && map.length) {\n      var head = table.start + map[0];\n      var anchor = table.start + map[map.length - 1];\n      var $head = tr.doc.resolve(head);\n      var $anchor = tr.doc.resolve(anchor);\n\n      return cloneTr(tr.setSelection(new prosemirrorTables.CellSelection($anchor, $head)));\n    }\n  }\n  return tr;\n};\n\n// :: (cell: {pos: number, node: ProseMirrorNode}, schema: Schema) → (tr: Transaction) → Transaction\n// Returns a new transaction that clears the content of a given `cell`.\n//\n// ```javascript\n// const $pos = state.doc.resolve(13);\n// dispatch(\n//   emptyCell(findCellClosestToPos($pos), state.schema)(state.tr)\n// );\n// ```\nvar emptyCell = function emptyCell(cell, schema) {\n  return function (tr) {\n    if (cell) {\n      var _tableNodeTypes$cell$ = tableNodeTypes(schema).cell.createAndFill(),\n          content = _tableNodeTypes$cell$.content;\n\n      if (!cell.node.content.eq(content)) {\n        tr.replaceWith(cell.pos + 1, cell.pos + cell.node.nodeSize, content);\n        return cloneTr(tr);\n      }\n    }\n    return tr;\n  };\n};\n\n// :: (columnIndex: number) → (tr: Transaction) → Transaction\n// Returns a new transaction that adds a new column at index `columnIndex`.\n//\n// ```javascript\n// dispatch(\n//   addColumnAt(i)(state.tr)\n// );\n// ```\nvar addColumnAt = function addColumnAt(columnIndex) {\n  return function (tr) {\n    var table = findTable(tr.selection);\n    if (table) {\n      var map = prosemirrorTables.TableMap.get(table.node);\n      if (columnIndex >= 0 && columnIndex <= map.width) {\n        return cloneTr(prosemirrorTables.addColumn(tr, {\n          map: map,\n          tableStart: table.start,\n          table: table.node\n        }, columnIndex));\n      }\n    }\n    return tr;\n  };\n};\n\n// :: (originRowIndex: number, targetRowIndex: targetColumnIndex, options?: MovementOptions) → (tr: Transaction) → Transaction\n// Returns a new transaction that moves the origin row to the target index;\n//\n// by default \"tryToFit\" is false, that means if you try to move a row to a place\n// where we will need to split a row with merged cells it'll throw an exception, for example:\n//\n// ```\n//      ____________________________\n//     |      |      |             |\n//  0  |  A1  |  B1  |     C1      |\n//     |______|______|______ ______|\n//     |      |             |      |\n//  1  |  A2  |     B2      |      |\n//     |______|______ ______|      |\n//     |      |      |      |  D1  |\n//  2  |  A3  |  B3  |  C2  |      |\n//     |______|______|______|______|\n// ```\n//\n// if you try to move the row 0 to the row index 1 with tryToFit false,\n// it'll throw an exception since you can't split the row 1;\n// but if \"tryToFit\" is true, it'll move the row using the current direction.\n//\n// We defined current direction using the target and origin values\n// if the origin is greater than the target, that means the course is `bottom-to-top`,\n// so the `tryToFit` logic will use this direction to determine\n// if we should move the column to the right or the left.\n//\n// for example, if you call the function using `moveRow(0, 1, { tryToFit: true })`\n// the result will be:\n// ```\n//      ____________________________\n//     |      |             |      |\n//  0  |  A2  |     B2      |      |\n//     |______|______ ______|      |\n//     |      |      |      |  D1  |\n//  1  |  A3  |  B3  |  C2  |      |\n//     |______|______|______|______|\n//     |      |      |             |\n//  2  |  A1  |  B1  |     C1      |\n//     |______|______|______ ______|\n// ```\n//\n// since we could put the row zero on index one,\n// we pushed to the best place to fit the row index 0,\n// in this case, row index 2.\n//\n//\n// -------- HOW TO OVERRIDE DIRECTION --------\n//\n// If you set \"tryToFit\" to \"true\", it will try to figure out the best direction\n// place to fit using the origin and target index, for example:\n//\n//\n// ```\n//      ____________________________\n//     |      |      |             |\n//  0  |  A1  |  B1  |     C1      |\n//     |______|______|______ ______|\n//     |      |             |      |\n//  1  |  A2  |     B2      |      |\n//     |______|______ ______|      |\n//     |      |      |      |  D1  |\n//  2  |  A3  |  B3  |  C2  |      |\n//     |______|______|______|______|\n//     |      |             |      |\n//  3  |  A4  |     B4      |      |\n//     |______|______ ______|      |\n//     |      |      |      |  D2  |\n//  4  |  A5  |  B5  |  C3  |      |\n//     |______|______|______|______|\n// ```\n//\n//\n// If you try to move the row 0 to row index 4 with \"tryToFit\" enabled, by default,\n// the code will put it on after the merged rows,\n// but you can override it using the \"direction\" option.\n//\n// -1: Always put the origin before the target\n// ```\n//      ____________________________\n//     |      |             |      |\n//  0  |  A2  |     B2      |      |\n//     |______|______ ______|      |\n//     |      |      |      |  D1  |\n//  1  |  A3  |  B3  |  C2  |      |\n//     |______|______|______|______|\n//     |      |      |             |\n//  2  |  A1  |  B1  |     C1      |\n//     |______|______|______ ______|\n//     |      |             |      |\n//  3  |  A4  |     B4      |      |\n//     |______|______ ______|      |\n//     |      |      |      |  D2  |\n//  4  |  A5  |  B5  |  C3  |      |\n//     |______|______|______|______|\n// ```\n//\n//  0: Automatically decide the best place to fit\n// ```\n//      ____________________________\n//     |      |             |      |\n//  0  |  A2  |     B2      |      |\n//     |______|______ ______|      |\n//     |      |      |      |  D1  |\n//  1  |  A3  |  B3  |  C2  |      |\n//     |______|______|______|______|\n//     |      |             |      |\n//  2  |  A4  |     B4      |      |\n//     |______|______ ______|      |\n//     |      |      |      |  D2  |\n//  3  |  A5  |  B5  |  C3  |      |\n//     |______|______|______|______|\n//     |      |      |             |\n//  4  |  A1  |  B1  |     C1      |\n//     |______|______|______ ______|\n// ```\n//\n//  1: Always put the origin after the target\n// ```\n//      ____________________________\n//     |      |             |      |\n//  0  |  A2  |     B2      |      |\n//     |______|______ ______|      |\n//     |      |      |      |  D1  |\n//  1  |  A3  |  B3  |  C2  |      |\n//     |______|______|______|______|\n//     |      |             |      |\n//  2  |  A4  |     B4      |      |\n//     |______|______ ______|      |\n//     |      |      |      |  D2  |\n//  3  |  A5  |  B5  |  C3  |      |\n//     |______|______|______|______|\n//     |      |      |             |\n//  4  |  A1  |  B1  |     C1      |\n//     |______|______|______ ______|\n// ```\n//\n// ```javascript\n// dispatch(\n//   moveRow(x, y, options)(state.tr)\n// );\n// ```\nvar moveRow = function moveRow(originRowIndex, targetRowIndex, opts) {\n  return function (tr) {\n    var defaultOptions = { tryToFit: false, direction: 0 };\n    var options = Object.assign(defaultOptions, opts);\n    var table = findTable(tr.selection);\n    if (!table) {\n      return tr;\n    }\n\n    var _getSelectionRangeInR = getSelectionRangeInRow(originRowIndex)(tr),\n        indexesOriginRow = _getSelectionRangeInR.indexes;\n\n    var _getSelectionRangeInR2 = getSelectionRangeInRow(targetRowIndex)(tr),\n        indexesTargetRow = _getSelectionRangeInR2.indexes;\n\n    if (indexesOriginRow.indexOf(targetRowIndex) > -1) {\n      return tr;\n    }\n\n    if (!options.tryToFit && indexesTargetRow.length > 1) {\n      checkInvalidMovements(originRowIndex, targetRowIndex, indexesTargetRow, 'row');\n    }\n\n    var newTable = moveTableRow(table, indexesOriginRow, indexesTargetRow, options.direction);\n\n    return cloneTr(tr).replaceWith(table.pos, table.pos + table.node.nodeSize, newTable);\n  };\n};\n\n// :: (originColumnIndex: number, targetColumnIndex: targetColumnIndex, options?: MovementOptions) → (tr: Transaction) → Transaction\n// Returns a new transaction that moves the origin column to the target index;\n//\n// by default \"tryToFit\" is false, that means if you try to move a column to a place\n// where we will need to split a column with merged cells it'll throw an exception, for example:\n//\n// ```\n//    0      1         2\n//  ____________________________\n// |      |      |             |\n// |  A1  |  B1  |     C1      |\n// |______|______|______ ______|\n// |      |             |      |\n// |  A2  |     B2      |      |\n// |______|______ ______|      |\n// |      |      |      |  D1  |\n// |  A3  |  B3  |  C2  |      |\n// |______|______|______|______|\n// ```\n//\n//\n// if you try to move the column 0 to the column index 1 with tryToFit false,\n// it'll throw an exception since you can't split the column 1;\n// but if \"tryToFit\" is true, it'll move the column using the current direction.\n//\n// We defined current direction using the target and origin values\n// if the origin is greater than the target, that means the course is `right-to-left`,\n// so the `tryToFit` logic will use this direction to determine\n// if we should move the column to the right or the left.\n//\n// for example, if you call the function using `moveColumn(0, 1, { tryToFit: true })`\n// the result will be:\n//\n// ```\n//    0       1             2\n// _____________________ _______\n// |      |             |      |\n// |  B1  |     C1      |  A1  |\n// |______|______ ______|______|\n// |             |      |      |\n// |     B2      |      |  A2  |\n// |______ ______|      |______|\n// |      |      |  D1  |      |\n// |  B3  |  C2  |      |  A3  |\n// |______|______|______|______|\n// ```\n//\n// since we could put the column zero on index one,\n// we pushed to the best place to fit the column 0, in this case, column index 2.\n//\n// -------- HOW TO OVERRIDE DIRECTION --------\n//\n// If you set \"tryToFit\" to \"true\", it will try to figure out the best direction\n// place to fit using the origin and target index, for example:\n//\n//\n// ```\n//     0      1       2     3      4      5       6\n//   _________________________________________________\n//  |      |      |             |      |             |\n//  |  A1  |  B1  |     C1      |  E1  |     F1      |\n//  |______|______|______ ______|______|______ ______|\n//  |      |             |      |             |      |\n//  |  A2  |     B2      |      |     E2      |      |\n//  |______|______ ______|      |______ ______|      |\n//  |      |      |      |  D1  |      |      |  G2  |\n//  |  A3  |  B3  |  C3  |      |  E3  |  F3  |      |\n//  |______|______|______|______|______|______|______|\n// ```\n//\n//\n// If you try to move the column 0 to column index 5 with \"tryToFit\" enabled, by default,\n// the code will put it on after the merged columns,\n// but you can override it using the \"direction\" option.\n//\n// -1: Always put the origin before the target\n//\n// ```\n//     0      1       2     3      4      5       6\n//   _________________________________________________\n//  |      |             |      |      |             |\n//  |  B1  |     C1      |  A1  |  E1  |     F1      |\n//  |______|______ ______|______|______|______ ______|\n//  |             |      |      |             |      |\n//  |     B2      |      |  A2  |     E2      |      |\n//  |______ ______|      |______|______ ______|      |\n//  |      |      |  D1  |      |      |      |  G2  |\n//  |  B3  |  C3  |      |  A3  |  E3  |  F3  |      |\n//  |______|______|______|______|______|______|______|\n// ```\n//\n//  0: Automatically decide the best place to fit\n//\n// ```\n//     0      1       2     3      4      5       6\n//   _________________________________________________\n//  |      |             |      |             |      |\n//  |  B1  |     C1      |  E1  |     F1      |  A1  |\n//  |______|______ ______|______|______ ______|______|\n//  |             |      |             |      |      |\n//  |     B2      |      |     E2      |      |  A2  |\n//  |______ ______|      |______ ______|      |______|\n//  |      |      |  D1  |      |      |  G2  |      |\n//  |  B3  |  C3  |      |  E3  |  F3  |      |  A3  |\n//  |______|______|______|______|______|______|______|\n// ```\n//\n//  1: Always put the origin after the target\n//\n// ```\n//     0      1       2     3      4      5       6\n//   _________________________________________________\n//  |      |             |      |             |      |\n//  |  B1  |     C1      |  E1  |     F1      |  A1  |\n//  |______|______ ______|______|______ ______|______|\n//  |             |      |             |      |      |\n//  |     B2      |      |     E2      |      |  A2  |\n//  |______ ______|      |______ ______|      |______|\n//  |      |      |  D1  |      |      |  G2  |      |\n//  |  B3  |  C3  |      |  E3  |  F3  |      |  A3  |\n//  |______|______|______|______|______|______|______|\n// ```\n//\n// ```javascript\n// dispatch(\n//   moveColumn(x, y, options)(state.tr)\n// );\n// ```\nvar moveColumn = function moveColumn(originColumnIndex, targetColumnIndex, opts) {\n  return function (tr) {\n    var defaultOptions = { tryToFit: false, direction: 0 };\n    var options = Object.assign(defaultOptions, opts);\n    var table = findTable(tr.selection);\n    if (!table) {\n      return tr;\n    }\n\n    var _getSelectionRangeInC = getSelectionRangeInColumn(originColumnIndex)(tr),\n        indexesOriginColumn = _getSelectionRangeInC.indexes;\n\n    var _getSelectionRangeInC2 = getSelectionRangeInColumn(targetColumnIndex)(tr),\n        indexesTargetColumn = _getSelectionRangeInC2.indexes;\n\n    if (indexesOriginColumn.indexOf(targetColumnIndex) > -1) {\n      return tr;\n    }\n\n    if (!options.tryToFit && indexesTargetColumn.length > 1) {\n      checkInvalidMovements(originColumnIndex, targetColumnIndex, indexesTargetColumn, 'column');\n    }\n\n    var newTable = moveTableColumn(table, indexesOriginColumn, indexesTargetColumn, options.direction);\n\n    return cloneTr(tr).replaceWith(table.pos, table.pos + table.node.nodeSize, newTable);\n  };\n};\n\n// :: (rowIndex: number, clonePreviousRow?: boolean) → (tr: Transaction) → Transaction\n// Returns a new transaction that adds a new row at index `rowIndex`. Optionally clone the previous row.\n//\n// ```javascript\n// dispatch(\n//   addRowAt(i)(state.tr)\n// );\n// ```\n//\n// ```javascript\n// dispatch(\n//   addRowAt(i, true)(state.tr)\n// );\n// ```\nvar addRowAt = function addRowAt(rowIndex, clonePreviousRow) {\n  return function (tr) {\n    var table = findTable(tr.selection);\n    if (table) {\n      var map = prosemirrorTables.TableMap.get(table.node);\n      var cloneRowIndex = rowIndex - 1;\n\n      if (clonePreviousRow && cloneRowIndex >= 0) {\n        return cloneTr(cloneRowAt(cloneRowIndex)(tr));\n      }\n\n      if (rowIndex >= 0 && rowIndex <= map.height) {\n        return cloneTr(prosemirrorTables.addRow(tr, {\n          map: map,\n          tableStart: table.start,\n          table: table.node\n        }, rowIndex));\n      }\n    }\n    return tr;\n  };\n};\n\n// :: (cloneRowIndex: number) → (tr: Transaction) → Transaction\n// Returns a new transaction that adds a new row after `cloneRowIndex`, cloning the row attributes at `cloneRowIndex`.\n//\n// ```javascript\n// dispatch(\n//   cloneRowAt(i)(state.tr)\n// );\n// ```\nvar cloneRowAt = function cloneRowAt(rowIndex) {\n  return function (tr) {\n    var table = findTable(tr.selection);\n    if (table) {\n      var map = prosemirrorTables.TableMap.get(table.node);\n\n      if (rowIndex >= 0 && rowIndex <= map.height) {\n        var tableNode = table.node;\n        var tableNodes = tableNodeTypes(tableNode.type.schema);\n\n        var rowPos = table.start;\n        for (var i = 0; i < rowIndex + 1; i++) {\n          rowPos += tableNode.child(i).nodeSize;\n        }\n\n        var cloneRow = tableNode.child(rowIndex);\n        // Re-create the same nodes with same attrs, dropping the node content.\n        var cells = [];\n        var rowWidth = 0;\n        cloneRow.forEach(function (cell) {\n          // If we're copying a row with rowspan somewhere, we dont want to copy that cell\n          // We'll increment its span below.\n          if (cell.attrs.rowspan === 1) {\n            rowWidth += cell.attrs.colspan;\n            cells.push(tableNodes[cell.type.spec.tableRole].createAndFill(cell.attrs, cell.marks));\n          }\n        });\n\n        // If a higher row spans past our clone row, bump the higher row to cover this new row too.\n        if (rowWidth < map.width) {\n          var rowSpanCells = [];\n\n          var _loop = function _loop(_i) {\n            var foundCells = filterCellsInRow(_i, function (cell, tr) {\n              var rowspan = cell.node.attrs.rowspan;\n              var spanRange = _i + rowspan;\n              return rowspan > 1 && spanRange > rowIndex;\n            })(tr);\n            rowSpanCells.push.apply(rowSpanCells, _toConsumableArray(foundCells));\n          };\n\n          for (var _i = rowIndex; _i >= 0; _i--) {\n            _loop(_i);\n          }\n\n          if (rowSpanCells.length) {\n            rowSpanCells.forEach(function (cell) {\n              tr = setCellAttrs(cell, {\n                rowspan: cell.node.attrs.rowspan + 1\n              })(tr);\n            });\n          }\n        }\n\n        return safeInsert(tableNodes.row.create(cloneRow.attrs, cells), rowPos)(tr);\n      }\n    }\n    return tr;\n  };\n};\n\n// :: (columnIndex: number) → (tr: Transaction) → Transaction\n// Returns a new transaction that removes a column at index `columnIndex`. If there is only one column left, it will remove the entire table.\n//\n// ```javascript\n// dispatch(\n//   removeColumnAt(i)(state.tr)\n// );\n// ```\nvar removeColumnAt = function removeColumnAt(columnIndex) {\n  return function (tr) {\n    var table = findTable(tr.selection);\n    if (table) {\n      var map = prosemirrorTables.TableMap.get(table.node);\n      if (columnIndex === 0 && map.width === 1) {\n        return removeTable(tr);\n      } else if (columnIndex >= 0 && columnIndex <= map.width) {\n        prosemirrorTables.removeColumn(tr, {\n          map: map,\n          tableStart: table.start,\n          table: table.node\n        }, columnIndex);\n        return cloneTr(tr);\n      }\n    }\n    return tr;\n  };\n};\n\n// :: (rowIndex: number) → (tr: Transaction) → Transaction\n// Returns a new transaction that removes a row at index `rowIndex`. If there is only one row left, it will remove the entire table.\n//\n// ```javascript\n// dispatch(\n//   removeRowAt(i)(state.tr)\n// );\n// ```\nvar removeRowAt = function removeRowAt(rowIndex) {\n  return function (tr) {\n    var table = findTable(tr.selection);\n    if (table) {\n      var map = prosemirrorTables.TableMap.get(table.node);\n      if (rowIndex === 0 && map.height === 1) {\n        return removeTable(tr);\n      } else if (rowIndex >= 0 && rowIndex <= map.height) {\n        prosemirrorTables.removeRow(tr, {\n          map: map,\n          tableStart: table.start,\n          table: table.node\n        }, rowIndex);\n        return cloneTr(tr);\n      }\n    }\n    return tr;\n  };\n};\n\n// :: (tr: Transaction) → Transaction\n// Returns a new transaction that removes a table node if the cursor is inside of it.\n//\n// ```javascript\n// dispatch(\n//   removeTable(state.tr)\n// );\n// ```\nvar removeTable = function removeTable(tr) {\n  var $from = tr.selection.$from;\n\n  for (var depth = $from.depth; depth > 0; depth--) {\n    var node = $from.node(depth);\n    if (node.type.spec.tableRole === 'table') {\n      return cloneTr(tr.delete($from.before(depth), $from.after(depth)));\n    }\n  }\n  return tr;\n};\n\n// :: (tr: Transaction) → Transaction\n// Returns a new transaction that removes selected columns.\n//\n// ```javascript\n// dispatch(\n//   removeSelectedColumns(state.tr)\n// );\n// ```\nvar removeSelectedColumns = function removeSelectedColumns(tr) {\n  var selection = tr.selection;\n\n  if (isTableSelected(selection)) {\n    return removeTable(tr);\n  }\n  if (isCellSelection(selection)) {\n    var table = findTable(selection);\n    if (table) {\n      var map = prosemirrorTables.TableMap.get(table.node);\n      var rect = map.rectBetween(selection.$anchorCell.pos - table.start, selection.$headCell.pos - table.start);\n\n      if (rect.left == 0 && rect.right == map.width) {\n        return false;\n      }\n\n      var pmTableRect = Object.assign({}, rect, {\n        map: map,\n        table: table.node,\n        tableStart: table.start\n      });\n\n      for (var i = pmTableRect.right - 1;; i--) {\n        prosemirrorTables.removeColumn(tr, pmTableRect, i);\n        if (i === pmTableRect.left) {\n          break;\n        }\n        pmTableRect.table = pmTableRect.tableStart ? tr.doc.nodeAt(pmTableRect.tableStart - 1) : tr.doc;\n        pmTableRect.map = prosemirrorTables.TableMap.get(pmTableRect.table);\n      }\n      return cloneTr(tr);\n    }\n  }\n  return tr;\n};\n\n// :: (tr: Transaction) → Transaction\n// Returns a new transaction that removes selected rows.\n//\n// ```javascript\n// dispatch(\n//   removeSelectedRows(state.tr)\n// );\n// ```\nvar removeSelectedRows = function removeSelectedRows(tr) {\n  var selection = tr.selection;\n\n  if (isTableSelected(selection)) {\n    return removeTable(tr);\n  }\n  if (isCellSelection(selection)) {\n    var table = findTable(selection);\n    if (table) {\n      var map = prosemirrorTables.TableMap.get(table.node);\n      var rect = map.rectBetween(selection.$anchorCell.pos - table.start, selection.$headCell.pos - table.start);\n\n      if (rect.top == 0 && rect.bottom == map.height) {\n        return false;\n      }\n\n      var pmTableRect = Object.assign({}, rect, {\n        map: map,\n        table: table.node,\n        tableStart: table.start\n      });\n\n      for (var i = pmTableRect.bottom - 1;; i--) {\n        prosemirrorTables.removeRow(tr, pmTableRect, i);\n        if (i === pmTableRect.top) {\n          break;\n        }\n        pmTableRect.table = pmTableRect.tableStart ? tr.doc.nodeAt(pmTableRect.tableStart - 1) : tr.doc;\n        pmTableRect.map = prosemirrorTables.TableMap.get(pmTableRect.table);\n      }\n\n      return cloneTr(tr);\n    }\n  }\n  return tr;\n};\n\n// :: ($pos: ResolvedPos) → (tr: Transaction) → Transaction\n// Returns a new transaction that removes a column closest to a given `$pos`.\n//\n// ```javascript\n// dispatch(\n//   removeColumnClosestToPos(state.doc.resolve(3))(state.tr)\n// );\n// ```\nvar removeColumnClosestToPos = function removeColumnClosestToPos($pos) {\n  return function (tr) {\n    var rect = findCellRectClosestToPos($pos);\n    if (rect) {\n      return removeColumnAt(rect.left)(setTextSelection($pos.pos)(tr));\n    }\n    return tr;\n  };\n};\n\n// :: ($pos: ResolvedPos) → (tr: Transaction) → Transaction\n// Returns a new transaction that removes a row closest to a given `$pos`.\n//\n// ```javascript\n// dispatch(\n//   removeRowClosestToPos(state.doc.resolve(3))(state.tr)\n// );\n// ```\nvar removeRowClosestToPos = function removeRowClosestToPos($pos) {\n  return function (tr) {\n    var rect = findCellRectClosestToPos($pos);\n    if (rect) {\n      return removeRowAt(rect.top)(setTextSelection($pos.pos)(tr));\n    }\n    return tr;\n  };\n};\n\n// :: (columnIndex: number, cellTransform: (cell: {pos: number, start: number, node: ProseMirrorNode}, tr: Transaction) → Transaction, setCursorToLastCell: ?boolean) → (tr: Transaction) → Transaction\n// Returns a new transaction that maps a given `cellTransform` function to each cell in a column at a given `columnIndex`.\n// It will set the selection into the last cell of the column if `setCursorToLastCell` param is set to `true`.\n//\n// ```javascript\n// dispatch(\n//   forEachCellInColumn(0, (cell, tr) => emptyCell(cell, state.schema)(tr))(state.tr)\n// );\n// ```\nvar forEachCellInColumn = function forEachCellInColumn(columnIndex, cellTransform, setCursorToLastCell) {\n  return function (tr) {\n    var cells = getCellsInColumn(columnIndex)(tr.selection);\n    if (cells) {\n      for (var i = cells.length - 1; i >= 0; i--) {\n        tr = cellTransform(cells[i], tr);\n      }\n      if (setCursorToLastCell) {\n        var $pos = tr.doc.resolve(tr.mapping.map(cells[cells.length - 1].pos));\n        tr.setSelection(prosemirrorState.Selection.near($pos));\n      }\n      return cloneTr(tr);\n    }\n    return tr;\n  };\n};\n\n// :: (rowIndex: number, cellTransform: (cell: {pos: number, start: number, node: ProseMirrorNode}, tr: Transaction) → Transaction, setCursorToLastCell: ?boolean) → (tr: Transaction) → Transaction\n// Returns a new transaction that maps a given `cellTransform` function to each cell in a row at a given `rowIndex`.\n// It will set the selection into the last cell of the row if `setCursorToLastCell` param is set to `true`.\n//\n// ```javascript\n// dispatch(\n//   forEachCellInRow(0, (cell, tr) => setCellAttrs(cell, { background: 'red' })(tr))(state.tr)\n// );\n// ```\nvar forEachCellInRow = function forEachCellInRow(rowIndex, cellTransform, setCursorToLastCell) {\n  return function (tr) {\n    var cells = getCellsInRow(rowIndex)(tr.selection);\n    if (cells) {\n      for (var i = cells.length - 1; i >= 0; i--) {\n        tr = cellTransform(cells[i], tr);\n      }\n      if (setCursorToLastCell) {\n        var $pos = tr.doc.resolve(tr.mapping.map(cells[cells.length - 1].pos));\n        tr.setSelection(prosemirrorState.Selection.near($pos));\n      }\n    }\n    return tr;\n  };\n};\n\n// :: (cell: {pos: number, start: number, node: ProseMirrorNode}, attrs: Object) → (tr: Transaction) → Transaction\n// Returns a new transaction that sets given `attrs` to a given `cell`.\n//\n// ```javascript\n// dispatch(\n//   setCellAttrs(findCellClosestToPos($pos), { background: 'blue' })(tr);\n// );\n// ```\nvar setCellAttrs = function setCellAttrs(cell, attrs) {\n  return function (tr) {\n    if (cell) {\n      tr.setNodeMarkup(cell.pos, null, Object.assign({}, cell.node.attrs, attrs));\n      return cloneTr(tr);\n    }\n    return tr;\n  };\n};\n\n// :: (schema: Schema, rowsCount: ?number, colsCount: ?number, withHeaderRow: ?boolean, cellContent: ?Node) → Node\n// Returns a table node of a given size.\n// `withHeaderRow` defines whether the first row of the table will be a header row.\n// `cellContent` defines the content of each cell.\n//\n// ```javascript\n// const table = createTable(state.schema); // 3x3 table node\n// dispatch(\n//   tr.replaceSelectionWith(table).scrollIntoView()\n// );\n// ```\nvar createTable = function createTable(schema) {\n  var rowsCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3;\n  var colsCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3;\n  var withHeaderRow = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n  var cellContent = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n\n  var _tableNodeTypes = tableNodeTypes(schema),\n      tableCell = _tableNodeTypes.cell,\n      tableHeader = _tableNodeTypes.header_cell,\n      tableRow = _tableNodeTypes.row,\n      table = _tableNodeTypes.table;\n\n  var cells = [];\n  var headerCells = [];\n  for (var i = 0; i < colsCount; i++) {\n    cells.push(createCell(tableCell, cellContent));\n\n    if (withHeaderRow) {\n      headerCells.push(createCell(tableHeader, cellContent));\n    }\n  }\n\n  var rows = [];\n  for (var _i2 = 0; _i2 < rowsCount; _i2++) {\n    rows.push(tableRow.createChecked(null, withHeaderRow && _i2 === 0 ? headerCells : cells));\n  }\n\n  return table.createChecked(null, rows);\n};\n\n// :: ($pos: ResolvedPos) → ?{pos: number, start: number, node: ProseMirrorNode}\n// Iterates over parent nodes, returning a table cell or a table header node closest to a given `$pos`.\n//\n// ```javascript\n// const cell = findCellClosestToPos(state.selection.$from);\n// ```\nvar findCellClosestToPos = function findCellClosestToPos($pos) {\n  var predicate = function predicate(node) {\n    return node.type.spec.tableRole && /cell/i.test(node.type.spec.tableRole);\n  };\n  return findParentNodeClosestToPos($pos, predicate);\n};\n\n// :: ($pos: ResolvedPos) → ?{left: number, top: number, right: number, bottom: number}\n// Returns the rectangle spanning a cell closest to a given `$pos`.\n//\n// ```javascript\n// dispatch(\n//   findCellRectClosestToPos(state.selection.$from)\n// );\n// ```\nvar findCellRectClosestToPos = function findCellRectClosestToPos($pos) {\n  var cell = findCellClosestToPos($pos);\n  if (cell) {\n    var table = findTableClosestToPos($pos);\n    var map = prosemirrorTables.TableMap.get(table.node);\n    var cellPos = cell.pos - table.start;\n    return map.rectBetween(cellPos, cellPos);\n  }\n};\n\nvar filterCellsInRow = function filterCellsInRow(rowIndex, predicate) {\n  return function (tr) {\n    var foundCells = [];\n    var cells = getCellsInRow(rowIndex)(tr.selection);\n    if (cells) {\n      for (var j = cells.length - 1; j >= 0; j--) {\n        if (predicate(cells[j], tr)) {\n          foundCells.push(cells[j]);\n        }\n      }\n    }\n\n    return foundCells;\n  };\n};\n\n// :: (columnIndex: number) → (tr: Transaction) → {$anchor: ResolvedPos, $head: ResolvedPos, indexes: [number]}\n// Returns a range of rectangular selection spanning all merged cells around a column at index `columnIndex`.\n//\n// ```javascript\n// const range = getSelectionRangeInColumn(3)(state.tr);\n// ```\nvar getSelectionRangeInColumn = function getSelectionRangeInColumn(columnIndex) {\n  return function (tr) {\n    var startIndex = columnIndex;\n    var endIndex = columnIndex;\n\n    // looking for selection start column (startIndex)\n\n    var _loop2 = function _loop2(i) {\n      var cells = getCellsInColumn(i)(tr.selection);\n      if (cells) {\n        cells.forEach(function (cell) {\n          var maybeEndIndex = cell.node.attrs.colspan + i - 1;\n          if (maybeEndIndex >= startIndex) {\n            startIndex = i;\n          }\n          if (maybeEndIndex > endIndex) {\n            endIndex = maybeEndIndex;\n          }\n        });\n      }\n    };\n\n    for (var i = columnIndex; i >= 0; i--) {\n      _loop2(i);\n    }\n    // looking for selection end column (endIndex)\n\n    var _loop3 = function _loop3(i) {\n      var cells = getCellsInColumn(i)(tr.selection);\n      if (cells) {\n        cells.forEach(function (cell) {\n          var maybeEndIndex = cell.node.attrs.colspan + i - 1;\n          if (cell.node.attrs.colspan > 1 && maybeEndIndex > endIndex) {\n            endIndex = maybeEndIndex;\n          }\n        });\n      }\n    };\n\n    for (var i = columnIndex; i <= endIndex; i++) {\n      _loop3(i);\n    }\n\n    // filter out columns without cells (where all rows have colspan > 1 in the same column)\n    var indexes = [];\n    for (var i = startIndex; i <= endIndex; i++) {\n      var maybeCells = getCellsInColumn(i)(tr.selection);\n      if (maybeCells && maybeCells.length) {\n        indexes.push(i);\n      }\n    }\n    startIndex = indexes[0];\n    endIndex = indexes[indexes.length - 1];\n\n    var firstSelectedColumnCells = getCellsInColumn(startIndex)(tr.selection);\n    var firstRowCells = getCellsInRow(0)(tr.selection);\n    var $anchor = tr.doc.resolve(firstSelectedColumnCells[firstSelectedColumnCells.length - 1].pos);\n\n    var headCell = void 0;\n    for (var _i3 = endIndex; _i3 >= startIndex; _i3--) {\n      var columnCells = getCellsInColumn(_i3)(tr.selection);\n      if (columnCells && columnCells.length) {\n        for (var j = firstRowCells.length - 1; j >= 0; j--) {\n          if (firstRowCells[j].pos === columnCells[0].pos) {\n            headCell = columnCells[0];\n            break;\n          }\n        }\n        if (headCell) {\n          break;\n        }\n      }\n    }\n\n    var $head = tr.doc.resolve(headCell.pos);\n    return { $anchor: $anchor, $head: $head, indexes: indexes };\n  };\n};\n\n// :: (rowIndex: number) → (tr: Transaction) → {$anchor: ResolvedPos, $head: ResolvedPos, indexes: [number]}\n// Returns a range of rectangular selection spanning all merged cells around a row at index `rowIndex`.\n//\n// ```javascript\n// const range = getSelectionRangeInRow(3)(state.tr);\n// ```\nvar getSelectionRangeInRow = function getSelectionRangeInRow(rowIndex) {\n  return function (tr) {\n    var startIndex = rowIndex;\n    var endIndex = rowIndex;\n    // looking for selection start row (startIndex)\n\n    var _loop4 = function _loop4(i) {\n      var cells = getCellsInRow(i)(tr.selection);\n      cells.forEach(function (cell) {\n        var maybeEndIndex = cell.node.attrs.rowspan + i - 1;\n        if (maybeEndIndex >= startIndex) {\n          startIndex = i;\n        }\n        if (maybeEndIndex > endIndex) {\n          endIndex = maybeEndIndex;\n        }\n      });\n    };\n\n    for (var i = rowIndex; i >= 0; i--) {\n      _loop4(i);\n    }\n    // looking for selection end row (endIndex)\n\n    var _loop5 = function _loop5(i) {\n      var cells = getCellsInRow(i)(tr.selection);\n      cells.forEach(function (cell) {\n        var maybeEndIndex = cell.node.attrs.rowspan + i - 1;\n        if (cell.node.attrs.rowspan > 1 && maybeEndIndex > endIndex) {\n          endIndex = maybeEndIndex;\n        }\n      });\n    };\n\n    for (var i = rowIndex; i <= endIndex; i++) {\n      _loop5(i);\n    }\n\n    // filter out rows without cells (where all columns have rowspan > 1 in the same row)\n    var indexes = [];\n    for (var i = startIndex; i <= endIndex; i++) {\n      var maybeCells = getCellsInRow(i)(tr.selection);\n      if (maybeCells && maybeCells.length) {\n        indexes.push(i);\n      }\n    }\n    startIndex = indexes[0];\n    endIndex = indexes[indexes.length - 1];\n\n    var firstSelectedRowCells = getCellsInRow(startIndex)(tr.selection);\n    var firstColumnCells = getCellsInColumn(0)(tr.selection);\n    var $anchor = tr.doc.resolve(firstSelectedRowCells[firstSelectedRowCells.length - 1].pos);\n\n    var headCell = void 0;\n    for (var _i4 = endIndex; _i4 >= startIndex; _i4--) {\n      var rowCells = getCellsInRow(_i4)(tr.selection);\n      if (rowCells && rowCells.length) {\n        for (var j = firstColumnCells.length - 1; j >= 0; j--) {\n          if (firstColumnCells[j].pos === rowCells[0].pos) {\n            headCell = rowCells[0];\n            break;\n          }\n        }\n        if (headCell) {\n          break;\n        }\n      }\n    }\n\n    var $head = tr.doc.resolve(headCell.pos);\n    return { $anchor: $anchor, $head: $head, indexes: indexes };\n  };\n};\n\nexports.isNodeSelection = isNodeSelection;\nexports.canInsert = canInsert;\nexports.convertTableNodeToArrayOfRows = convertTableNodeToArrayOfRows;\nexports.convertArrayOfRowsToTableNode = convertArrayOfRowsToTableNode;\nexports.findParentNode = findParentNode;\nexports.findParentNodeClosestToPos = findParentNodeClosestToPos;\nexports.findParentDomRef = findParentDomRef;\nexports.hasParentNode = hasParentNode;\nexports.findParentNodeOfType = findParentNodeOfType;\nexports.findParentNodeOfTypeClosestToPos = findParentNodeOfTypeClosestToPos;\nexports.hasParentNodeOfType = hasParentNodeOfType;\nexports.findParentDomRefOfType = findParentDomRefOfType;\nexports.findSelectedNodeOfType = findSelectedNodeOfType;\nexports.findPositionOfNodeBefore = findPositionOfNodeBefore;\nexports.findDomRefAtPos = findDomRefAtPos;\nexports.flatten = flatten;\nexports.findChildren = findChildren;\nexports.findTextNodes = findTextNodes;\nexports.findInlineNodes = findInlineNodes;\nexports.findBlockNodes = findBlockNodes;\nexports.findChildrenByAttr = findChildrenByAttr;\nexports.findChildrenByType = findChildrenByType;\nexports.findChildrenByMark = findChildrenByMark;\nexports.contains = contains;\nexports.findTable = findTable;\nexports.isCellSelection = isCellSelection;\nexports.getSelectionRect = getSelectionRect;\nexports.isColumnSelected = isColumnSelected;\nexports.isRowSelected = isRowSelected;\nexports.isTableSelected = isTableSelected;\nexports.getCellsInColumn = getCellsInColumn;\nexports.getCellsInRow = getCellsInRow;\nexports.getCellsInTable = getCellsInTable;\nexports.selectColumn = selectColumn;\nexports.selectRow = selectRow;\nexports.selectTable = selectTable;\nexports.emptyCell = emptyCell;\nexports.addColumnAt = addColumnAt;\nexports.moveRow = moveRow;\nexports.moveColumn = moveColumn;\nexports.addRowAt = addRowAt;\nexports.cloneRowAt = cloneRowAt;\nexports.removeColumnAt = removeColumnAt;\nexports.removeRowAt = removeRowAt;\nexports.removeTable = removeTable;\nexports.removeSelectedColumns = removeSelectedColumns;\nexports.removeSelectedRows = removeSelectedRows;\nexports.removeColumnClosestToPos = removeColumnClosestToPos;\nexports.removeRowClosestToPos = removeRowClosestToPos;\nexports.forEachCellInColumn = forEachCellInColumn;\nexports.forEachCellInRow = forEachCellInRow;\nexports.setCellAttrs = setCellAttrs;\nexports.createTable = createTable;\nexports.findCellClosestToPos = findCellClosestToPos;\nexports.findCellRectClosestToPos = findCellRectClosestToPos;\nexports.getSelectionRangeInColumn = getSelectionRangeInColumn;\nexports.getSelectionRangeInRow = getSelectionRangeInRow;\nexports.removeParentNodeOfType = removeParentNodeOfType;\nexports.replaceParentNodeOfType = replaceParentNodeOfType;\nexports.removeSelectedNode = removeSelectedNode;\nexports.replaceSelectedNode = replaceSelectedNode;\nexports.setTextSelection = setTextSelection;\nexports.safeInsert = safeInsert;\nexports.setParentNodeMarkup = setParentNodeMarkup;\nexports.selectParentNodeOfType = selectParentNodeOfType;\nexports.removeNodeBefore = removeNodeBefore;\n//# sourceMappingURL=index.js.map\n","\n    /*!\n    * tiptap-utils v1.10.0\n    * (c) 2020 Scrumpy UG (limited liability)\n    * @license MIT\n    */\n  \nimport { findSelectedNodeOfType, findParentNode } from 'prosemirror-utils';\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction getMarkAttrs(state, type) {\n  var _state$selection = state.selection,\n      from = _state$selection.from,\n      to = _state$selection.to;\n  var marks = [];\n  state.doc.nodesBetween(from, to, function (node) {\n    marks = [].concat(_toConsumableArray(marks), _toConsumableArray(node.marks));\n  });\n  var mark = marks.find(function (markItem) {\n    return markItem.type.name === type.name;\n  });\n\n  if (mark) {\n    return mark.attrs;\n  }\n\n  return {};\n}\n\nfunction getNodeAttrs(state, type) {\n  var _state$selection = state.selection,\n      from = _state$selection.from,\n      to = _state$selection.to;\n  var nodes = [];\n  state.doc.nodesBetween(from, to, function (node) {\n    nodes = [].concat(_toConsumableArray(nodes), [node]);\n  });\n  var node = nodes.reverse().find(function (nodeItem) {\n    return nodeItem.type.name === type.name;\n  });\n\n  if (node) {\n    return node.attrs;\n  }\n\n  return {};\n}\n\nfunction getMarkRange() {\n  var $pos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n  var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n  if (!$pos || !type) {\n    return false;\n  }\n\n  var start = $pos.parent.childAfter($pos.parentOffset);\n\n  if (!start.node) {\n    return false;\n  }\n\n  var link = start.node.marks.find(function (mark) {\n    return mark.type === type;\n  });\n\n  if (!link) {\n    return false;\n  }\n\n  var startIndex = $pos.index();\n  var startPos = $pos.start() + start.offset;\n  var endIndex = startIndex + 1;\n  var endPos = startPos + start.node.nodeSize;\n\n  while (startIndex > 0 && link.isInSet($pos.parent.child(startIndex - 1).marks)) {\n    startIndex -= 1;\n    startPos -= $pos.parent.child(startIndex).nodeSize;\n  }\n\n  while (endIndex < $pos.parent.childCount && link.isInSet($pos.parent.child(endIndex).marks)) {\n    endPos += $pos.parent.child(endIndex).nodeSize;\n    endIndex += 1;\n  }\n\n  return {\n    from: startPos,\n    to: endPos\n  };\n}\n\nfunction markIsActive(state, type) {\n  var _state$selection = state.selection,\n      from = _state$selection.from,\n      $from = _state$selection.$from,\n      to = _state$selection.to,\n      empty = _state$selection.empty;\n\n  if (empty) {\n    return !!type.isInSet(state.storedMarks || $from.marks());\n  }\n\n  return !!state.doc.rangeHasMark(from, to, type);\n}\n\nfunction nodeEqualsType(_ref) {\n  var types = _ref.types,\n      node = _ref.node;\n  return Array.isArray(types) && types.includes(node.type) || node.type === types;\n}\n\nfunction nodeIsActive(state, type) {\n  var attrs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  var predicate = function predicate(node) {\n    return node.type === type;\n  };\n\n  var node = findSelectedNodeOfType(type)(state.selection) || findParentNode(predicate)(state.selection);\n\n  if (!Object.keys(attrs).length || !node) {\n    return !!node;\n  }\n\n  return node.node.hasMarkup(type, _objectSpread2(_objectSpread2({}, node.node.attrs), attrs));\n}\n\nexport { getMarkAttrs, getMarkRange, getNodeAttrs, markIsActive, nodeEqualsType, nodeIsActive };\n","import { findWrapping, ReplaceAroundStep, canSplit, liftTarget } from 'prosemirror-transform';\nimport { NodeRange, Fragment, Slice } from 'prosemirror-model';\n\nvar olDOM = [\"ol\", 0], ulDOM = [\"ul\", 0], liDOM = [\"li\", 0];\n\n// :: NodeSpec\n// An ordered list [node spec](#model.NodeSpec). Has a single\n// attribute, `order`, which determines the number at which the list\n// starts counting, and defaults to 1. Represented as an `
      `\n// element.\nvar orderedList = {\n attrs: {order: {default: 1}},\n parseDOM: [{tag: \"ol\", getAttrs: function getAttrs(dom) {\n return {order: dom.hasAttribute(\"start\") ? +dom.getAttribute(\"start\") : 1}\n }}],\n toDOM: function toDOM(node) {\n return node.attrs.order == 1 ? olDOM : [\"ol\", {start: node.attrs.order}, 0]\n }\n};\n\n// :: NodeSpec\n// A bullet list node spec, represented in the DOM as `
        `.\nvar bulletList = {\n parseDOM: [{tag: \"ul\"}],\n toDOM: function toDOM() { return ulDOM }\n};\n\n// :: NodeSpec\n// A list item (`
      • `) spec.\nvar listItem = {\n parseDOM: [{tag: \"li\"}],\n toDOM: function toDOM() { return liDOM },\n defining: true\n};\n\nfunction add(obj, props) {\n var copy = {};\n for (var prop in obj) { copy[prop] = obj[prop]; }\n for (var prop$1 in props) { copy[prop$1] = props[prop$1]; }\n return copy\n}\n\n// :: (OrderedMap, string, ?string) → OrderedMap\n// Convenience function for adding list-related node types to a map\n// specifying the nodes for a schema. Adds\n// [`orderedList`](#schema-list.orderedList) as `\"ordered_list\"`,\n// [`bulletList`](#schema-list.bulletList) as `\"bullet_list\"`, and\n// [`listItem`](#schema-list.listItem) as `\"list_item\"`.\n//\n// `itemContent` determines the content expression for the list items.\n// If you want the commands defined in this module to apply to your\n// list structure, it should have a shape like `\"paragraph block*\"` or\n// `\"paragraph (ordered_list | bullet_list)*\"`. `listGroup` can be\n// given to assign a group name to the list node types, for example\n// `\"block\"`.\nfunction addListNodes(nodes, itemContent, listGroup) {\n return nodes.append({\n ordered_list: add(orderedList, {content: \"list_item+\", group: listGroup}),\n bullet_list: add(bulletList, {content: \"list_item+\", group: listGroup}),\n list_item: add(listItem, {content: itemContent})\n })\n}\n\n// :: (NodeType, ?Object) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Returns a command function that wraps the selection in a list with\n// the given type an attributes. If `dispatch` is null, only return a\n// value to indicate whether this is possible, but don't actually\n// perform the change.\nfunction wrapInList(listType, attrs) {\n return function(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var range = $from.blockRange($to), doJoin = false, outerRange = range;\n if (!range) { return false }\n // This is at the top of an existing list item\n if (range.depth >= 2 && $from.node(range.depth - 1).type.compatibleContent(listType) && range.startIndex == 0) {\n // Don't do anything if this is the top of the list\n if ($from.index(range.depth - 1) == 0) { return false }\n var $insert = state.doc.resolve(range.start - 2);\n outerRange = new NodeRange($insert, $insert, range.depth);\n if (range.endIndex < range.parent.childCount)\n { range = new NodeRange($from, state.doc.resolve($to.end(range.depth)), range.depth); }\n doJoin = true;\n }\n var wrap = findWrapping(outerRange, listType, attrs, range);\n if (!wrap) { return false }\n if (dispatch) { dispatch(doWrapInList(state.tr, range, wrap, doJoin, listType).scrollIntoView()); }\n return true\n }\n}\n\nfunction doWrapInList(tr, range, wrappers, joinBefore, listType) {\n var content = Fragment.empty;\n for (var i = wrappers.length - 1; i >= 0; i--)\n { content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content)); }\n\n tr.step(new ReplaceAroundStep(range.start - (joinBefore ? 2 : 0), range.end, range.start, range.end,\n new Slice(content, 0, 0), wrappers.length, true));\n\n var found = 0;\n for (var i$1 = 0; i$1 < wrappers.length; i$1++) { if (wrappers[i$1].type == listType) { found = i$1 + 1; } }\n var splitDepth = wrappers.length - found;\n\n var splitPos = range.start + wrappers.length - (joinBefore ? 2 : 0), parent = range.parent;\n for (var i$2 = range.startIndex, e = range.endIndex, first = true; i$2 < e; i$2++, first = false) {\n if (!first && canSplit(tr.doc, splitPos, splitDepth)) {\n tr.split(splitPos, splitDepth);\n splitPos += 2 * splitDepth;\n }\n splitPos += parent.child(i$2).nodeSize;\n }\n return tr\n}\n\n// :: (NodeType) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Build a command that splits a non-empty textblock at the top level\n// of a list item by also splitting that list item.\nfunction splitListItem(itemType) {\n return function(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var node = ref.node;\n if ((node && node.isBlock) || $from.depth < 2 || !$from.sameParent($to)) { return false }\n var grandParent = $from.node(-1);\n if (grandParent.type != itemType) { return false }\n if ($from.parent.content.size == 0 && $from.node(-1).childCount == $from.indexAfter(-1)) {\n // In an empty block. If this is a nested list, the wrapping\n // list item should be split. Otherwise, bail out and let next\n // command handle lifting.\n if ($from.depth == 2 || $from.node(-3).type != itemType ||\n $from.index(-2) != $from.node(-2).childCount - 1) { return false }\n if (dispatch) {\n var wrap = Fragment.empty, keepItem = $from.index(-1) > 0;\n // Build a fragment containing empty versions of the structure\n // from the outer list item to the parent node of the cursor\n for (var d = $from.depth - (keepItem ? 1 : 2); d >= $from.depth - 3; d--)\n { wrap = Fragment.from($from.node(d).copy(wrap)); }\n // Add a second list item with an empty default start node\n wrap = wrap.append(Fragment.from(itemType.createAndFill()));\n var tr$1 = state.tr.replace($from.before(keepItem ? null : -1), $from.after(-3), new Slice(wrap, keepItem ? 3 : 2, 2));\n tr$1.setSelection(state.selection.constructor.near(tr$1.doc.resolve($from.pos + (keepItem ? 3 : 2))));\n dispatch(tr$1.scrollIntoView());\n }\n return true\n }\n var nextType = $to.pos == $from.end() ? grandParent.contentMatchAt(0).defaultType : null;\n var tr = state.tr.delete($from.pos, $to.pos);\n var types = nextType && [null, {type: nextType}];\n if (!canSplit(tr.doc, $from.pos, 2, types)) { return false }\n if (dispatch) { dispatch(tr.split($from.pos, 2, types).scrollIntoView()); }\n return true\n }\n}\n\n// :: (NodeType) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Create a command to lift the list item around the selection up into\n// a wrapping list.\nfunction liftListItem(itemType) {\n return function(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var range = $from.blockRange($to, function (node) { return node.childCount && node.firstChild.type == itemType; });\n if (!range) { return false }\n if (!dispatch) { return true }\n if ($from.node(range.depth - 1).type == itemType) // Inside a parent list\n { return liftToOuterList(state, dispatch, itemType, range) }\n else // Outer list node\n { return liftOutOfList(state, dispatch, range) }\n }\n}\n\nfunction liftToOuterList(state, dispatch, itemType, range) {\n var tr = state.tr, end = range.end, endOfList = range.$to.end(range.depth);\n if (end < endOfList) {\n // There are siblings after the lifted items, which must become\n // children of the last item\n tr.step(new ReplaceAroundStep(end - 1, endOfList, end, endOfList,\n new Slice(Fragment.from(itemType.create(null, range.parent.copy())), 1, 0), 1, true));\n range = new NodeRange(tr.doc.resolve(range.$from.pos), tr.doc.resolve(endOfList), range.depth);\n }\n dispatch(tr.lift(range, liftTarget(range)).scrollIntoView());\n return true\n}\n\nfunction liftOutOfList(state, dispatch, range) {\n var tr = state.tr, list = range.parent;\n // Merge the list items into a single big item\n for (var pos = range.end, i = range.endIndex - 1, e = range.startIndex; i > e; i--) {\n pos -= list.child(i).nodeSize;\n tr.delete(pos - 1, pos + 1);\n }\n var $start = tr.doc.resolve(range.start), item = $start.nodeAfter;\n var atStart = range.startIndex == 0, atEnd = range.endIndex == list.childCount;\n var parent = $start.node(-1), indexBefore = $start.index(-1);\n if (!parent.canReplace(indexBefore + (atStart ? 0 : 1), indexBefore + 1,\n item.content.append(atEnd ? Fragment.empty : Fragment.from(list))))\n { return false }\n var start = $start.pos, end = start + item.nodeSize;\n // Strip off the surrounding list. At the sides where we're not at\n // the end of the list, the existing list is closed. At sides where\n // this is the end, it is overwritten to its end.\n tr.step(new ReplaceAroundStep(start - (atStart ? 1 : 0), end + (atEnd ? 1 : 0), start + 1, end - 1,\n new Slice((atStart ? Fragment.empty : Fragment.from(list.copy(Fragment.empty)))\n .append(atEnd ? Fragment.empty : Fragment.from(list.copy(Fragment.empty))),\n atStart ? 0 : 1, atEnd ? 0 : 1), atStart ? 0 : 1));\n dispatch(tr.scrollIntoView());\n return true\n}\n\n// :: (NodeType) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Create a command to sink the list item around the selection down\n// into an inner list.\nfunction sinkListItem(itemType) {\n return function(state, dispatch) {\n var ref = state.selection;\n var $from = ref.$from;\n var $to = ref.$to;\n var range = $from.blockRange($to, function (node) { return node.childCount && node.firstChild.type == itemType; });\n if (!range) { return false }\n var startIndex = range.startIndex;\n if (startIndex == 0) { return false }\n var parent = range.parent, nodeBefore = parent.child(startIndex - 1);\n if (nodeBefore.type != itemType) { return false }\n\n if (dispatch) {\n var nestedBefore = nodeBefore.lastChild && nodeBefore.lastChild.type == parent.type;\n var inner = Fragment.from(nestedBefore ? itemType.create() : null);\n var slice = new Slice(Fragment.from(itemType.create(null, Fragment.from(parent.type.create(null, inner)))),\n nestedBefore ? 3 : 1, 0);\n var before = range.start, after = range.end;\n dispatch(state.tr.step(new ReplaceAroundStep(before - (nestedBefore ? 3 : 1), after,\n before, after, slice, 1, true))\n .scrollIntoView());\n }\n return true\n }\n}\n\nexport { addListNodes, bulletList, liftListItem, listItem, orderedList, sinkListItem, splitListItem, wrapInList };\n//# sourceMappingURL=index.es.js.map\n","\n /*!\n * tiptap-commands v1.14.5\n * (c) 2020 überdosis GbR (limited liability)\n * @license MIT\n */\n \nimport { setBlockType, lift, wrapIn } from 'prosemirror-commands';\nexport { autoJoin, baseKeymap, chainCommands, createParagraphNear, deleteSelection, exitCode, joinBackward, joinDown, joinForward, joinUp, lift, liftEmptyBlock, macBaseKeymap, newlineInCode, pcBaseKeymap, selectAll, selectNodeBackward, selectNodeForward, selectParentNode, setBlockType, splitBlock, splitBlockKeepMarks, toggleMark, wrapIn } from 'prosemirror-commands';\nimport { liftListItem, wrapInList } from 'prosemirror-schema-list';\nexport { addListNodes, liftListItem, sinkListItem, splitListItem, wrapInList } from 'prosemirror-schema-list';\nimport { InputRule } from 'prosemirror-inputrules';\nexport { textblockTypeInputRule, wrappingInputRule } from 'prosemirror-inputrules';\nimport { Plugin } from 'prosemirror-state';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { getMarkRange, nodeIsActive } from 'tiptap-utils';\nimport { findParentNode } from 'prosemirror-utils';\n\nfunction insertText (text = '') {\n return (state, dispatch) => {\n const {\n $from\n } = state.selection;\n const {\n pos\n } = $from.pos;\n dispatch(state.tr.insertText(text, pos));\n return true;\n };\n}\n\nfunction getMarksBetween(start, end, state) {\n let marks = [];\n state.doc.nodesBetween(start, end, (node, pos) => {\n marks = [...marks, ...node.marks.map(mark => ({\n start: pos,\n end: pos + node.nodeSize,\n mark\n }))];\n });\n return marks;\n}\n\nfunction markInputRule (regexp, markType, getAttrs) {\n return new InputRule(regexp, (state, match, start, end) => {\n const attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs;\n const {\n tr\n } = state;\n const m = match.length - 1;\n let markEnd = end;\n let markStart = start;\n\n if (match[m]) {\n const matchStart = start + match[0].indexOf(match[m - 1]);\n const matchEnd = matchStart + match[m - 1].length - 1;\n const textStart = matchStart + match[m - 1].lastIndexOf(match[m]);\n const textEnd = textStart + match[m].length;\n const excludedMarks = getMarksBetween(start, end, state).filter(item => {\n const {\n excluded\n } = item.mark.type;\n return excluded.find(type => type.name === markType.name);\n }).filter(item => item.end > matchStart);\n\n if (excludedMarks.length) {\n return false;\n }\n\n if (textEnd < matchEnd) {\n tr.delete(textEnd, matchEnd);\n }\n\n if (textStart > matchStart) {\n tr.delete(matchStart, textStart);\n }\n\n markStart = matchStart;\n markEnd = markStart + match[m].length;\n }\n\n tr.addMark(markStart, markEnd, markType.create(attrs));\n tr.removeStoredMark(markType);\n return tr;\n });\n}\n\nfunction nodeInputRule (regexp, type, getAttrs) {\n return new InputRule(regexp, (state, match, start, end) => {\n const attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs;\n const {\n tr\n } = state;\n\n if (match[0]) {\n tr.replaceWith(start - 1, end, type.create(attrs));\n }\n\n return tr;\n });\n}\n\nfunction pasteRule (regexp, type, getAttrs) {\n const handler = fragment => {\n const nodes = [];\n fragment.forEach(child => {\n if (child.isText) {\n const {\n text\n } = child;\n let pos = 0;\n let match;\n\n do {\n match = regexp.exec(text);\n\n if (match) {\n const start = match.index;\n const end = start + match[0].length;\n const attrs = getAttrs instanceof Function ? getAttrs(match[0]) : getAttrs;\n\n if (start > 0) {\n nodes.push(child.cut(pos, start));\n }\n\n nodes.push(child.cut(start, end).mark(type.create(attrs).addToSet(child.marks)));\n pos = end;\n }\n } while (match);\n\n if (pos < text.length) {\n nodes.push(child.cut(pos));\n }\n } else {\n nodes.push(child.copy(handler(child.content)));\n }\n });\n return Fragment.fromArray(nodes);\n };\n\n return new Plugin({\n props: {\n transformPasted: slice => new Slice(handler(slice.content), slice.openStart, slice.openEnd)\n }\n });\n}\n\nfunction markPasteRule (regexp, type, getAttrs) {\n const handler = (fragment, parent) => {\n const nodes = [];\n fragment.forEach(child => {\n if (child.isText) {\n const {\n text,\n marks\n } = child;\n let pos = 0;\n let match;\n const isLink = !!marks.filter(x => x.type.name === 'link')[0]; // eslint-disable-next-line\n\n while (!isLink && (match = regexp.exec(text)) !== null) {\n if (parent && parent.type.allowsMarkType(type) && match[1]) {\n const start = match.index;\n const end = start + match[0].length;\n const textStart = start + match[0].indexOf(match[1]);\n const textEnd = textStart + match[1].length;\n const attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs; // adding text before markdown to nodes\n\n if (start > 0) {\n nodes.push(child.cut(pos, start));\n } // adding the markdown part to nodes\n\n\n nodes.push(child.cut(textStart, textEnd).mark(type.create(attrs).addToSet(child.marks)));\n pos = end;\n }\n } // adding rest of text to nodes\n\n\n if (pos < text.length) {\n nodes.push(child.cut(pos));\n }\n } else {\n nodes.push(child.copy(handler(child.content, child)));\n }\n });\n return Fragment.fromArray(nodes);\n };\n\n return new Plugin({\n props: {\n transformPasted: slice => new Slice(handler(slice.content), slice.openStart, slice.openEnd)\n }\n });\n}\n\nfunction removeMark (type) {\n return (state, dispatch) => {\n const {\n tr,\n selection\n } = state;\n let {\n from,\n to\n } = selection;\n const {\n $from,\n empty\n } = selection;\n\n if (empty) {\n const range = getMarkRange($from, type);\n from = range.from;\n to = range.to;\n }\n\n tr.removeMark(from, to, type);\n return dispatch(tr);\n };\n}\n\nfunction replaceText (range = null, type, attrs = {}) {\n return (state, dispatch) => {\n const {\n $from,\n $to\n } = state.selection;\n const index = $from.index();\n const from = range ? range.from : $from.pos;\n const to = range ? range.to : $to.pos;\n\n if (!$from.parent.canReplaceWith(index, index, type)) {\n return false;\n }\n\n if (dispatch) {\n dispatch(state.tr.replaceWith(from, to, type.create(attrs)));\n }\n\n return true;\n };\n}\n\nfunction setInlineBlockType (type, attrs = {}) {\n return (state, dispatch) => {\n const {\n $from\n } = state.selection;\n const index = $from.index();\n\n if (!$from.parent.canReplaceWith(index, index, type)) {\n return false;\n }\n\n if (dispatch) {\n dispatch(state.tr.replaceSelectionWith(type.create(attrs)));\n }\n\n return true;\n };\n}\n\n// see https://github.com/ProseMirror/prosemirror-transform/blob/main/src/structure.js\n// Since this piece of code was \"borrowed\" from prosemirror, ESLint rules are ignored.\n\n/* eslint-disable max-len, no-plusplus, no-undef, eqeqeq */\n\nfunction canSplit(doc, pos, depth = 1, typesAfter) {\n const $pos = doc.resolve(pos);\n const base = $pos.depth - depth;\n const innerType = typesAfter && typesAfter[typesAfter.length - 1] || $pos.parent;\n if (base < 0 || $pos.parent.type.spec.isolating || !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) || !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount))) return false;\n\n for (let d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {\n const node = $pos.node(d);\n const index = $pos.index(d);\n if (node.type.spec.isolating) return false;\n let rest = node.content.cutByIndex(index, node.childCount);\n const after = typesAfter && typesAfter[i] || node;\n if (after != node) rest = rest.replaceChild(0, after.type.create(after.attrs));\n /* Change starts from here */\n // if (!node.canReplace(index + 1, node.childCount) || !after.type.validContent(rest))\n // return false\n\n if (!node.canReplace(index + 1, node.childCount)) return false;\n /* Change ends here */\n }\n\n const index = $pos.indexAfter(base);\n const baseType = typesAfter && typesAfter[0];\n return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type);\n} // this is a copy of splitListItem\n// see https://github.com/ProseMirror/prosemirror-schema-list/blob/main/src/schema-list.js\n\n\nfunction splitToDefaultListItem(itemType) {\n return function (state, dispatch) {\n const {\n $from,\n $to,\n node\n } = state.selection;\n if (node && node.isBlock || $from.depth < 2 || !$from.sameParent($to)) return false;\n const grandParent = $from.node(-1);\n if (grandParent.type != itemType) return false;\n\n if ($from.parent.content.size == 0) {\n // In an empty block. If this is a nested list, the wrapping\n // list item should be split. Otherwise, bail out and let next\n // command handle lifting.\n if ($from.depth == 2 || $from.node(-3).type != itemType || $from.index(-2) != $from.node(-2).childCount - 1) return false;\n\n if (dispatch) {\n let wrap = Fragment.empty;\n const keepItem = $from.index(-1) > 0; // Build a fragment containing empty versions of the structure\n // from the outer list item to the parent node of the cursor\n\n for (let d = $from.depth - (keepItem ? 1 : 2); d >= $from.depth - 3; d--) wrap = Fragment.from($from.node(d).copy(wrap)); // Add a second list item with an empty default start node\n\n\n wrap = wrap.append(Fragment.from(itemType.createAndFill()));\n const tr = state.tr.replace($from.before(keepItem ? null : -1), $from.after(-3), new Slice(wrap, keepItem ? 3 : 2, 2));\n tr.setSelection(state.selection.constructor.near(tr.doc.resolve($from.pos + (keepItem ? 3 : 2))));\n dispatch(tr.scrollIntoView());\n }\n\n return true;\n }\n\n const nextType = $to.pos == $from.end() ? grandParent.contentMatchAt($from.indexAfter(-1)).defaultType : null;\n const tr = state.tr.delete($from.pos, $to.pos);\n /* Change starts from here */\n // let types = nextType && [null, {type: nextType}]\n\n let types = nextType && [{\n type: itemType\n }, {\n type: nextType\n }];\n if (!types) types = [{\n type: itemType\n }, null];\n /* Change ends here */\n\n if (!canSplit(tr.doc, $from.pos, 2, types)) return false;\n if (dispatch) dispatch(tr.split($from.pos, 2, types).scrollIntoView());\n return true;\n };\n}\n/* eslint-enable max-len, no-plusplus, no-undef, eqeqeq */\n\nfunction toggleBlockType (type, toggletype, attrs = {}) {\n return (state, dispatch, view) => {\n const isActive = nodeIsActive(state, type, attrs);\n\n if (isActive) {\n return setBlockType(toggletype)(state, dispatch, view);\n }\n\n return setBlockType(type, attrs)(state, dispatch, view);\n };\n}\n\nfunction isList(node, schema) {\n return node.type === schema.nodes.bullet_list || node.type === schema.nodes.ordered_list || node.type === schema.nodes.todo_list;\n}\n\nfunction toggleList(listType, itemType) {\n return (state, dispatch, view) => {\n const {\n schema,\n selection\n } = state;\n const {\n $from,\n $to\n } = selection;\n const range = $from.blockRange($to);\n\n if (!range) {\n return false;\n }\n\n const parentList = findParentNode(node => isList(node, schema))(selection);\n\n if (range.depth >= 1 && parentList && range.depth - parentList.depth <= 1) {\n if (parentList.node.type === listType) {\n return liftListItem(itemType)(state, dispatch, view);\n }\n\n if (isList(parentList.node, schema) && listType.validContent(parentList.node.content)) {\n const {\n tr\n } = state;\n tr.setNodeMarkup(parentList.pos, listType);\n\n if (dispatch) {\n dispatch(tr);\n }\n\n return false;\n }\n }\n\n return wrapInList(listType)(state, dispatch, view);\n };\n}\n\nfunction toggleWrap (type, attrs = {}) {\n return (state, dispatch, view) => {\n const isActive = nodeIsActive(state, type, attrs);\n\n if (isActive) {\n return lift(state, dispatch);\n }\n\n return wrapIn(type, attrs)(state, dispatch, view);\n };\n}\n\nfunction updateMark (type, attrs) {\n return (state, dispatch) => {\n const {\n tr,\n selection,\n doc\n } = state;\n let {\n from,\n to\n } = selection;\n const {\n $from,\n empty\n } = selection;\n\n if (empty) {\n const range = getMarkRange($from, type);\n from = range.from;\n to = range.to;\n }\n\n const hasMark = doc.rangeHasMark(from, to, type);\n\n if (hasMark) {\n tr.removeMark(from, to, type);\n }\n\n tr.addMark(from, to, type.create(attrs));\n return dispatch(tr);\n };\n}\n\nexport { insertText, markInputRule, markPasteRule, nodeInputRule, pasteRule, removeMark, replaceText, setInlineBlockType, splitToDefaultListItem, toggleBlockType, toggleList, toggleWrap, updateMark };\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = /[&<>\"']/g;\nconst escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nconst escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nconst noopTest = { exec: function noopTest() {} };\n\nfunction merge(obj) {\n let i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n// /c*$/ is vulnerable to REDOS.\n// invert: Remove suffix of non-c chars instead. Default falsey.\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, l - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\nmodule.exports = {\n escape,\n unescape,\n edit,\n cleanUrl,\n resolveUrl,\n noopTest,\n merge,\n splitCells,\n rtrim,\n findClosingBracket,\n checkSanitizeDeprecation\n};\n","function getDefaults() {\n return {\n baseUrl: null,\n breaks: false,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n xhtml: false\n };\n}\n\nfunction changeDefaults(newDefaults) {\n module.exports.defaults = newDefaults;\n}\n\nmodule.exports = {\n defaults: getDefaults(),\n getDefaults,\n changeDefaults\n};\n","import { TextSelection, Selection, NodeSelection } from 'prosemirror-state';\nimport { DOMSerializer, Fragment, Mark, DOMParser, Slice } from 'prosemirror-model';\nimport { dropPoint } from 'prosemirror-transform';\n\nvar result = {};\n\nif (typeof navigator != \"undefined\" && typeof document != \"undefined\") {\n var ie_edge = /Edge\\/(\\d+)/.exec(navigator.userAgent);\n var ie_upto10 = /MSIE \\d/.test(navigator.userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent);\n\n result.mac = /Mac/.test(navigator.platform);\n var ie = result.ie = !!(ie_upto10 || ie_11up || ie_edge);\n result.ie_version = ie_upto10 ? document.documentMode || 6 : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : null;\n result.gecko = !ie && /gecko\\/(\\d+)/i.test(navigator.userAgent);\n result.gecko_version = result.gecko && +(/Firefox\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1];\n var chrome = !ie && /Chrome\\/(\\d+)/.exec(navigator.userAgent);\n result.chrome = !!chrome;\n result.chrome_version = chrome && +chrome[1];\n result.ios = !ie && /AppleWebKit/.test(navigator.userAgent) && /Mobile\\/\\w+/.test(navigator.userAgent);\n result.android = /Android \\d/.test(navigator.userAgent);\n result.webkit = \"webkitFontSmoothing\" in document.documentElement.style;\n result.safari = /Apple Computer/.test(navigator.vendor);\n result.webkit_version = result.webkit && +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1];\n}\n\nvar domIndex = function(node) {\n for (var index = 0;; index++) {\n node = node.previousSibling;\n if (!node) { return index }\n }\n};\n\nvar parentNode = function(node) {\n var parent = node.parentNode;\n return parent && parent.nodeType == 11 ? parent.host : parent\n};\n\nvar textRange = function(node, from, to) {\n var range = document.createRange();\n range.setEnd(node, to == null ? node.nodeValue.length : to);\n range.setStart(node, from || 0);\n return range\n};\n\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nvar isEquivalentPosition = function(node, off, targetNode, targetOff) {\n return targetNode && (scanFor(node, off, targetNode, targetOff, -1) ||\n scanFor(node, off, targetNode, targetOff, 1))\n};\n\nvar atomElements = /^(img|br|input|textarea|hr)$/i;\n\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n for (;;) {\n if (node == targetNode && off == targetOff) { return true }\n if (off == (dir < 0 ? 0 : nodeSize(node))) {\n var parent = node.parentNode;\n if (parent.nodeType != 1 || hasBlockDesc(node) || atomElements.test(node.nodeName) || node.contentEditable == \"false\")\n { return false }\n off = domIndex(node) + (dir < 0 ? 0 : 1);\n node = parent;\n } else if (node.nodeType == 1) {\n node = node.childNodes[off + (dir < 0 ? -1 : 0)];\n if (node.contentEditable == \"false\") { return false }\n off = dir < 0 ? nodeSize(node) : 0;\n } else {\n return false\n }\n }\n}\n\nfunction nodeSize(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length\n}\n\nfunction isOnEdge(node, offset, parent) {\n for (var atStart = offset == 0, atEnd = offset == nodeSize(node); atStart || atEnd;) {\n if (node == parent) { return true }\n var index = domIndex(node);\n node = node.parentNode;\n if (!node) { return false }\n atStart = atStart && index == 0;\n atEnd = atEnd && index == nodeSize(node);\n }\n}\n\nfunction hasBlockDesc(dom) {\n var desc;\n for (var cur = dom; cur; cur = cur.parentNode) { if (desc = cur.pmViewDesc) { break } }\n return desc && desc.node && desc.node.isBlock && (desc.dom == dom || desc.contentDOM == dom)\n}\n\n// Work around Chrome issue https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n// (isCollapsed inappropriately returns true in shadow dom)\nvar selectionCollapsed = function(domSel) {\n var collapsed = domSel.isCollapsed;\n if (collapsed && result.chrome && domSel.rangeCount && !domSel.getRangeAt(0).collapsed)\n { collapsed = false; }\n return collapsed\n};\n\nfunction keyEvent(keyCode, key) {\n var event = document.createEvent(\"Event\");\n event.initEvent(\"keydown\", true, true);\n event.keyCode = keyCode;\n event.key = event.code = key;\n return event\n}\n\nfunction windowRect(doc) {\n return {left: 0, right: doc.documentElement.clientWidth,\n top: 0, bottom: doc.documentElement.clientHeight}\n}\n\nfunction getSide(value, side) {\n return typeof value == \"number\" ? value : value[side]\n}\n\nfunction clientRect(node) {\n var rect = node.getBoundingClientRect();\n // Make sure scrollbar width isn't included in the rectangle\n return {left: rect.left, right: rect.left + node.clientWidth,\n top: rect.top, bottom: rect.top + node.clientHeight}\n}\n\nfunction scrollRectIntoView(view, rect, startDOM) {\n var scrollThreshold = view.someProp(\"scrollThreshold\") || 0, scrollMargin = view.someProp(\"scrollMargin\") || 5;\n var doc = view.dom.ownerDocument;\n for (var parent = startDOM || view.dom;; parent = parentNode(parent)) {\n if (!parent) { break }\n if (parent.nodeType != 1) { continue }\n var atTop = parent == doc.body || parent.nodeType != 1;\n var bounding = atTop ? windowRect(doc) : clientRect(parent);\n var moveX = 0, moveY = 0;\n if (rect.top < bounding.top + getSide(scrollThreshold, \"top\"))\n { moveY = -(bounding.top - rect.top + getSide(scrollMargin, \"top\")); }\n else if (rect.bottom > bounding.bottom - getSide(scrollThreshold, \"bottom\"))\n { moveY = rect.bottom - bounding.bottom + getSide(scrollMargin, \"bottom\"); }\n if (rect.left < bounding.left + getSide(scrollThreshold, \"left\"))\n { moveX = -(bounding.left - rect.left + getSide(scrollMargin, \"left\")); }\n else if (rect.right > bounding.right - getSide(scrollThreshold, \"right\"))\n { moveX = rect.right - bounding.right + getSide(scrollMargin, \"right\"); }\n if (moveX || moveY) {\n if (atTop) {\n doc.defaultView.scrollBy(moveX, moveY);\n } else {\n var startX = parent.scrollLeft, startY = parent.scrollTop;\n if (moveY) { parent.scrollTop += moveY; }\n if (moveX) { parent.scrollLeft += moveX; }\n var dX = parent.scrollLeft - startX, dY = parent.scrollTop - startY;\n rect = {left: rect.left - dX, top: rect.top - dY, right: rect.right - dX, bottom: rect.bottom - dY};\n }\n }\n if (atTop) { break }\n }\n}\n\n// Store the scroll position of the editor's parent nodes, along with\n// the top position of an element near the top of the editor, which\n// will be used to make sure the visible viewport remains stable even\n// when the size of the content above changes.\nfunction storeScrollPos(view) {\n var rect = view.dom.getBoundingClientRect(), startY = Math.max(0, rect.top);\n var refDOM, refTop;\n for (var x = (rect.left + rect.right) / 2, y = startY + 1;\n y < Math.min(innerHeight, rect.bottom); y += 5) {\n var dom = view.root.elementFromPoint(x, y);\n if (dom == view.dom || !view.dom.contains(dom)) { continue }\n var localRect = dom.getBoundingClientRect();\n if (localRect.top >= startY - 20) {\n refDOM = dom;\n refTop = localRect.top;\n break\n }\n }\n return {refDOM: refDOM, refTop: refTop, stack: scrollStack(view.dom)}\n}\n\nfunction scrollStack(dom) {\n var stack = [], doc = dom.ownerDocument;\n for (; dom; dom = parentNode(dom)) {\n stack.push({dom: dom, top: dom.scrollTop, left: dom.scrollLeft});\n if (dom == doc) { break }\n }\n return stack\n}\n\n// Reset the scroll position of the editor's parent nodes to that what\n// it was before, when storeScrollPos was called.\nfunction resetScrollPos(ref) {\n var refDOM = ref.refDOM;\n var refTop = ref.refTop;\n var stack = ref.stack;\n\n var newRefTop = refDOM ? refDOM.getBoundingClientRect().top : 0;\n restoreScrollStack(stack, newRefTop == 0 ? 0 : newRefTop - refTop);\n}\n\nfunction restoreScrollStack(stack, dTop) {\n for (var i = 0; i < stack.length; i++) {\n var ref = stack[i];\n var dom = ref.dom;\n var top = ref.top;\n var left = ref.left;\n if (dom.scrollTop != top + dTop) { dom.scrollTop = top + dTop; }\n if (dom.scrollLeft != left) { dom.scrollLeft = left; }\n }\n}\n\nvar preventScrollSupported = null;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n if (dom.setActive) { return dom.setActive() } // in IE\n if (preventScrollSupported) { return dom.focus(preventScrollSupported) }\n\n var stored = scrollStack(dom);\n dom.focus(preventScrollSupported == null ? {\n get preventScroll() {\n preventScrollSupported = {preventScroll: true};\n return true\n }\n } : undefined);\n if (!preventScrollSupported) {\n preventScrollSupported = false;\n restoreScrollStack(stored, 0);\n }\n}\n\nfunction findOffsetInNode(node, coords) {\n var closest, dxClosest = 2e8, coordsClosest, offset = 0;\n var rowBot = coords.top, rowTop = coords.top;\n for (var child = node.firstChild, childIndex = 0; child; child = child.nextSibling, childIndex++) {\n var rects = (void 0);\n if (child.nodeType == 1) { rects = child.getClientRects(); }\n else if (child.nodeType == 3) { rects = textRange(child).getClientRects(); }\n else { continue }\n\n for (var i = 0; i < rects.length; i++) {\n var rect = rects[i];\n if (rect.top <= rowBot && rect.bottom >= rowTop) {\n rowBot = Math.max(rect.bottom, rowBot);\n rowTop = Math.min(rect.top, rowTop);\n var dx = rect.left > coords.left ? rect.left - coords.left\n : rect.right < coords.left ? coords.left - rect.right : 0;\n if (dx < dxClosest) {\n closest = child;\n dxClosest = dx;\n coordsClosest = dx && closest.nodeType == 3 ? {left: rect.right < coords.left ? rect.right : rect.left, top: coords.top} : coords;\n if (child.nodeType == 1 && dx)\n { offset = childIndex + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0); }\n continue\n }\n }\n if (!closest && (coords.left >= rect.right && coords.top >= rect.top ||\n coords.left >= rect.left && coords.top >= rect.bottom))\n { offset = childIndex + 1; }\n }\n }\n if (closest && closest.nodeType == 3) { return findOffsetInText(closest, coordsClosest) }\n if (!closest || (dxClosest && closest.nodeType == 1)) { return {node: node, offset: offset} }\n return findOffsetInNode(closest, coordsClosest)\n}\n\nfunction findOffsetInText(node, coords) {\n var len = node.nodeValue.length;\n var range = document.createRange();\n for (var i = 0; i < len; i++) {\n range.setEnd(node, i + 1);\n range.setStart(node, i);\n var rect = singleRect(range, 1);\n if (rect.top == rect.bottom) { continue }\n if (inRect(coords, rect))\n { return {node: node, offset: i + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0)} }\n }\n return {node: node, offset: 0}\n}\n\nfunction inRect(coords, rect) {\n return coords.left >= rect.left - 1 && coords.left <= rect.right + 1&&\n coords.top >= rect.top - 1 && coords.top <= rect.bottom + 1\n}\n\nfunction targetKludge(dom, coords) {\n var parent = dom.parentNode;\n if (parent && /^li$/i.test(parent.nodeName) && coords.left < dom.getBoundingClientRect().left)\n { return parent }\n return dom\n}\n\nfunction posFromElement(view, elt, coords) {\n var ref = findOffsetInNode(elt, coords);\n var node = ref.node;\n var offset = ref.offset;\n var bias = -1;\n if (node.nodeType == 1 && !node.firstChild) {\n var rect = node.getBoundingClientRect();\n bias = rect.left != rect.right && coords.left > (rect.left + rect.right) / 2 ? 1 : -1;\n }\n return view.docView.posFromDOM(node, offset, bias)\n}\n\nfunction posFromCaret(view, node, offset, coords) {\n // Browser (in caretPosition/RangeFromPoint) will agressively\n // normalize towards nearby inline nodes. Since we are interested in\n // positions between block nodes too, we first walk up the hierarchy\n // of nodes to see if there are block nodes that the coordinates\n // fall outside of. If so, we take the position before/after that\n // block. If not, we call `posFromDOM` on the raw node/offset.\n var outside = -1;\n for (var cur = node;;) {\n if (cur == view.dom) { break }\n var desc = view.docView.nearestDesc(cur, true);\n if (!desc) { return null }\n if (desc.node.isBlock && desc.parent) {\n var rect = desc.dom.getBoundingClientRect();\n if (rect.left > coords.left || rect.top > coords.top) { outside = desc.posBefore; }\n else if (rect.right < coords.left || rect.bottom < coords.top) { outside = desc.posAfter; }\n else { break }\n }\n cur = desc.dom.parentNode;\n }\n return outside > -1 ? outside : view.docView.posFromDOM(node, offset)\n}\n\nfunction elementFromPoint(element, coords, box) {\n var len = element.childNodes.length;\n if (len && box.top < box.bottom) {\n for (var startI = Math.max(0, Math.min(len - 1, Math.floor(len * (coords.top - box.top) / (box.bottom - box.top)) - 2)), i = startI;;) {\n var child = element.childNodes[i];\n if (child.nodeType == 1) {\n var rects = child.getClientRects();\n for (var j = 0; j < rects.length; j++) {\n var rect = rects[j];\n if (inRect(coords, rect)) { return elementFromPoint(child, coords, rect) }\n }\n }\n if ((i = (i + 1) % len) == startI) { break }\n }\n }\n return element\n}\n\n// Given an x,y position on the editor, get the position in the document.\nfunction posAtCoords(view, coords) {\n var assign, assign$1;\n\n var root = view.root, node, offset;\n if (root.caretPositionFromPoint) {\n try { // Firefox throws for this call in hard-to-predict circumstances (#994)\n var pos$1 = root.caretPositionFromPoint(coords.left, coords.top);\n if (pos$1) { ((assign = pos$1, node = assign.offsetNode, offset = assign.offset)); }\n } catch (_) {}\n }\n if (!node && root.caretRangeFromPoint) {\n var range = root.caretRangeFromPoint(coords.left, coords.top);\n if (range) { ((assign$1 = range, node = assign$1.startContainer, offset = assign$1.startOffset)); }\n }\n\n var elt = root.elementFromPoint(coords.left, coords.top + 1), pos;\n if (!elt || !view.dom.contains(elt.nodeType != 1 ? elt.parentNode : elt)) {\n var box = view.dom.getBoundingClientRect();\n if (!inRect(coords, box)) { return null }\n elt = elementFromPoint(view.dom, coords, box);\n if (!elt) { return null }\n }\n // Safari's caretRangeFromPoint returns nonsense when on a draggable element\n if (result.safari && elt.draggable) { node = offset = null; }\n elt = targetKludge(elt, coords);\n if (node) {\n if (result.gecko && node.nodeType == 1) {\n // Firefox will sometimes return offsets into nodes, which\n // have no actual children, from caretPositionFromPoint (#953)\n offset = Math.min(offset, node.childNodes.length);\n // It'll also move the returned position before image nodes,\n // even if those are behind it.\n if (offset < node.childNodes.length) {\n var next = node.childNodes[offset], box$1;\n if (next.nodeName == \"IMG\" && (box$1 = next.getBoundingClientRect()).right <= coords.left &&\n box$1.bottom > coords.top)\n { offset++; }\n }\n }\n // Suspiciously specific kludge to work around caret*FromPoint\n // never returning a position at the end of the document\n if (node == view.dom && offset == node.childNodes.length - 1 && node.lastChild.nodeType == 1 &&\n coords.top > node.lastChild.getBoundingClientRect().bottom)\n { pos = view.state.doc.content.size; }\n // Ignore positions directly after a BR, since caret*FromPoint\n // 'round up' positions that would be more accurately placed\n // before the BR node.\n else if (offset == 0 || node.nodeType != 1 || node.childNodes[offset - 1].nodeName != \"BR\")\n { pos = posFromCaret(view, node, offset, coords); }\n }\n if (pos == null) { pos = posFromElement(view, elt, coords); }\n\n var desc = view.docView.nearestDesc(elt, true);\n return {pos: pos, inside: desc ? desc.posAtStart - desc.border : -1}\n}\n\nfunction singleRect(object, bias) {\n var rects = object.getClientRects();\n return !rects.length ? object.getBoundingClientRect() : rects[bias < 0 ? 0 : rects.length - 1]\n}\n\n// : (EditorView, number) → {left: number, top: number, right: number, bottom: number}\n// Given a position in the document model, get a bounding box of the\n// character at that position, relative to the window.\nfunction coordsAtPos(view, pos) {\n var ref = view.docView.domFromPos(pos);\n var node = ref.node;\n var offset = ref.offset;\n\n // These browsers support querying empty text ranges\n if (node.nodeType == 3 && (result.webkit || result.gecko)) {\n var rect = singleRect(textRange(node, offset, offset), 0);\n // Firefox returns bad results (the position before the space)\n // when querying a position directly after line-broken\n // whitespace. Detect this situation and and kludge around it\n if (result.gecko && offset && /\\s/.test(node.nodeValue[offset - 1]) && offset < node.nodeValue.length) {\n var rectBefore = singleRect(textRange(node, offset - 1, offset - 1), -1);\n if (rectBefore.top == rect.top) {\n var rectAfter = singleRect(textRange(node, offset, offset + 1), -1);\n if (rectAfter.top != rect.top)\n { return flattenV(rectAfter, rectAfter.left < rectBefore.left) }\n }\n }\n return rect\n }\n\n if (node.nodeType == 1 && !view.state.doc.resolve(pos).parent.inlineContent) {\n // Return a horizontal line in block context\n var top = true, rect$1;\n if (offset < node.childNodes.length) {\n var after = node.childNodes[offset];\n if (after.nodeType == 1) { rect$1 = after.getBoundingClientRect(); }\n }\n if (!rect$1 && offset) {\n var before = node.childNodes[offset - 1];\n if (before.nodeType == 1) { rect$1 = before.getBoundingClientRect(); top = false; }\n }\n return flattenH(rect$1 || node.getBoundingClientRect(), top)\n }\n\n // Not Firefox/Chrome, or not in a text node, so we have to use\n // actual element/character rectangles to get a solution (this part\n // is not very bidi-safe)\n //\n // Try the left side first, fall back to the right one if that\n // doesn't work.\n for (var dir = -1; dir < 2; dir += 2) {\n if (dir < 0 && offset) {\n var prev = (void 0), target = node.nodeType == 3 ? textRange(node, offset - 1, offset)\n : (prev = node.childNodes[offset - 1]).nodeType == 3 ? textRange(prev)\n : prev.nodeType == 1 && prev.nodeName != \"BR\" ? prev : null; // BR nodes tend to only return the rectangle before them\n if (target) {\n var rect$2 = singleRect(target, 1);\n if (rect$2.top < rect$2.bottom) { return flattenV(rect$2, false) }\n }\n } else if (dir > 0 && offset < nodeSize(node)) {\n var next = (void 0), target$1 = node.nodeType == 3 ? textRange(node, offset, offset + 1)\n : (next = node.childNodes[offset]).nodeType == 3 ? textRange(next)\n : next.nodeType == 1 ? next : null;\n if (target$1) {\n var rect$3 = singleRect(target$1, -1);\n if (rect$3.top < rect$3.bottom) { return flattenV(rect$3, true) }\n }\n }\n }\n // All else failed, just try to get a rectangle for the target node\n return flattenV(singleRect(node.nodeType == 3 ? textRange(node) : node, 0), false)\n}\n\nfunction flattenV(rect, left) {\n if (rect.width == 0) { return rect }\n var x = left ? rect.left : rect.right;\n return {top: rect.top, bottom: rect.bottom, left: x, right: x}\n}\n\nfunction flattenH(rect, top) {\n if (rect.height == 0) { return rect }\n var y = top ? rect.top : rect.bottom;\n return {top: y, bottom: y, left: rect.left, right: rect.right}\n}\n\nfunction withFlushedState(view, state, f) {\n var viewState = view.state, active = view.root.activeElement;\n if (viewState != state) { view.updateState(state); }\n if (active != view.dom) { view.focus(); }\n try {\n return f()\n } finally {\n if (viewState != state) { view.updateState(viewState); }\n if (active != view.dom && active) { active.focus(); }\n }\n}\n\n// : (EditorView, number, number)\n// Whether vertical position motion in a given direction\n// from a position would leave a text block.\nfunction endOfTextblockVertical(view, state, dir) {\n var sel = state.selection;\n var $pos = dir == \"up\" ? sel.$anchor.min(sel.$head) : sel.$anchor.max(sel.$head);\n return withFlushedState(view, state, function () {\n var ref = view.docView.domFromPos($pos.pos);\n var dom = ref.node;\n for (;;) {\n var nearest = view.docView.nearestDesc(dom, true);\n if (!nearest) { break }\n if (nearest.node.isBlock) { dom = nearest.dom; break }\n dom = nearest.dom.parentNode;\n }\n var coords = coordsAtPos(view, $pos.pos);\n for (var child = dom.firstChild; child; child = child.nextSibling) {\n var boxes = (void 0);\n if (child.nodeType == 1) { boxes = child.getClientRects(); }\n else if (child.nodeType == 3) { boxes = textRange(child, 0, child.nodeValue.length).getClientRects(); }\n else { continue }\n for (var i = 0; i < boxes.length; i++) {\n var box = boxes[i];\n if (box.bottom > box.top && (dir == \"up\" ? box.bottom < coords.top + 1 : box.top > coords.bottom - 1))\n { return false }\n }\n }\n return true\n })\n}\n\nvar maybeRTL = /[\\u0590-\\u08ac]/;\n\nfunction endOfTextblockHorizontal(view, state, dir) {\n var ref = state.selection;\n var $head = ref.$head;\n if (!$head.parent.isTextblock) { return false }\n var offset = $head.parentOffset, atStart = !offset, atEnd = offset == $head.parent.content.size;\n var sel = getSelection();\n // If the textblock is all LTR, or the browser doesn't support\n // Selection.modify (Edge), fall back to a primitive approach\n if (!maybeRTL.test($head.parent.textContent) || !sel.modify)\n { return dir == \"left\" || dir == \"backward\" ? atStart : atEnd }\n\n return withFlushedState(view, state, function () {\n // This is a huge hack, but appears to be the best we can\n // currently do: use `Selection.modify` to move the selection by\n // one character, and see if that moves the cursor out of the\n // textblock (or doesn't move it at all, when at the start/end of\n // the document).\n var oldRange = sel.getRangeAt(0), oldNode = sel.focusNode, oldOff = sel.focusOffset;\n var oldBidiLevel = sel.caretBidiLevel; // Only for Firefox\n sel.modify(\"move\", dir, \"character\");\n var parentDOM = $head.depth ? view.docView.domAfterPos($head.before()) : view.dom;\n var result = !parentDOM.contains(sel.focusNode.nodeType == 1 ? sel.focusNode : sel.focusNode.parentNode) ||\n (oldNode == sel.focusNode && oldOff == sel.focusOffset);\n // Restore the previous selection\n sel.removeAllRanges();\n sel.addRange(oldRange);\n if (oldBidiLevel != null) { sel.caretBidiLevel = oldBidiLevel; }\n return result\n })\n}\n\nvar cachedState = null, cachedDir = null, cachedResult = false;\nfunction endOfTextblock(view, state, dir) {\n if (cachedState == state && cachedDir == dir) { return cachedResult }\n cachedState = state; cachedDir = dir;\n return cachedResult = dir == \"up\" || dir == \"down\"\n ? endOfTextblockVertical(view, state, dir)\n : endOfTextblockHorizontal(view, state, dir)\n}\n\n// NodeView:: interface\n//\n// By default, document nodes are rendered using the result of the\n// [`toDOM`](#model.NodeSpec.toDOM) method of their spec, and managed\n// entirely by the editor. For some use cases, such as embedded\n// node-specific editing interfaces, you want more control over\n// the behavior of a node's in-editor representation, and need to\n// [define](#view.EditorProps.nodeViews) a custom node view.\n//\n// Mark views only support `dom` and `contentDOM`, and don't support\n// any of the node view methods.\n//\n// Objects returned as node views must conform to this interface.\n//\n// dom:: ?dom.Node\n// The outer DOM node that represents the document node. When not\n// given, the default strategy is used to create a DOM node.\n//\n// contentDOM:: ?dom.Node\n// The DOM node that should hold the node's content. Only meaningful\n// if the node view also defines a `dom` property and if its node\n// type is not a leaf node type. When this is present, ProseMirror\n// will take care of rendering the node's children into it. When it\n// is not present, the node view itself is responsible for rendering\n// (or deciding not to render) its child nodes.\n//\n// update:: ?(node: Node, decorations: [Decoration]) → bool\n// When given, this will be called when the view is updating itself.\n// It will be given a node (possibly of a different type), and an\n// array of active decorations (which are automatically drawn, and\n// the node view may ignore if it isn't interested in them), and\n// should return true if it was able to update to that node, and\n// false otherwise. If the node view has a `contentDOM` property (or\n// no `dom` property), updating its child nodes will be handled by\n// ProseMirror.\n//\n// selectNode:: ?()\n// Can be used to override the way the node's selected status (as a\n// node selection) is displayed.\n//\n// deselectNode:: ?()\n// When defining a `selectNode` method, you should also provide a\n// `deselectNode` method to remove the effect again.\n//\n// setSelection:: ?(anchor: number, head: number, root: dom.Document)\n// This will be called to handle setting the selection inside the\n// node. The `anchor` and `head` positions are relative to the start\n// of the node. By default, a DOM selection will be created between\n// the DOM positions corresponding to those positions, but if you\n// override it you can do something else.\n//\n// stopEvent:: ?(event: dom.Event) → bool\n// Can be used to prevent the editor view from trying to handle some\n// or all DOM events that bubble up from the node view. Events for\n// which this returns true are not handled by the editor.\n//\n// ignoreMutation:: ?(dom.MutationRecord) → bool\n// Called when a DOM\n// [mutation](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver)\n// or a selection change happens within the view. When the change is\n// a selection change, the record will have a `type` property of\n// `\"selection\"` (which doesn't occur for native mutation records).\n// Return false if the editor should re-read the selection or\n// re-parse the range around the mutation, true if it can safely be\n// ignored.\n//\n// destroy:: ?()\n// Called when the node view is removed from the editor or the whole\n// editor is destroyed.\n\n// View descriptions are data structures that describe the DOM that is\n// used to represent the editor's content. They are used for:\n//\n// - Incremental redrawing when the document changes\n//\n// - Figuring out what part of the document a given DOM position\n// corresponds to\n//\n// - Wiring in custom implementations of the editing interface for a\n// given node\n//\n// They form a doubly-linked mutable tree, starting at `view.docView`.\n\nvar NOT_DIRTY = 0, CHILD_DIRTY = 1, CONTENT_DIRTY = 2, NODE_DIRTY = 3;\n\n// Superclass for the various kinds of descriptions. Defines their\n// basic structure and shared methods.\nvar ViewDesc = function ViewDesc(parent, children, dom, contentDOM) {\n this.parent = parent;\n this.children = children;\n this.dom = dom;\n // An expando property on the DOM node provides a link back to its\n // description.\n dom.pmViewDesc = this;\n // This is the node that holds the child views. It may be null for\n // descs that don't have children.\n this.contentDOM = contentDOM;\n this.dirty = NOT_DIRTY;\n};\n\nvar prototypeAccessors = { beforePosition: { configurable: true },size: { configurable: true },border: { configurable: true },posBefore: { configurable: true },posAtStart: { configurable: true },posAfter: { configurable: true },posAtEnd: { configurable: true },contentLost: { configurable: true } };\n\n// Used to check whether a given description corresponds to a\n// widget/mark/node.\nViewDesc.prototype.matchesWidget = function matchesWidget () { return false };\nViewDesc.prototype.matchesMark = function matchesMark () { return false };\nViewDesc.prototype.matchesNode = function matchesNode () { return false };\nViewDesc.prototype.matchesHack = function matchesHack () { return false };\n\nprototypeAccessors.beforePosition.get = function () { return false };\n\n// : () → ?ParseRule\n// When parsing in-editor content (in domchange.js), we allow\n// descriptions to determine the parse rules that should be used to\n// parse them.\nViewDesc.prototype.parseRule = function parseRule () { return null };\n\n// : (dom.Event) → bool\n// Used by the editor's event handler to ignore events that come\n// from certain descs.\nViewDesc.prototype.stopEvent = function stopEvent () { return false };\n\n// The size of the content represented by this desc.\nprototypeAccessors.size.get = function () {\n var size = 0;\n for (var i = 0; i < this.children.length; i++) { size += this.children[i].size; }\n return size\n};\n\n// For block nodes, this represents the space taken up by their\n// start/end tokens.\nprototypeAccessors.border.get = function () { return 0 };\n\nViewDesc.prototype.destroy = function destroy () {\n this.parent = null;\n if (this.dom.pmViewDesc == this) { this.dom.pmViewDesc = null; }\n for (var i = 0; i < this.children.length; i++)\n { this.children[i].destroy(); }\n};\n\nViewDesc.prototype.posBeforeChild = function posBeforeChild (child) {\n for (var i = 0, pos = this.posAtStart; i < this.children.length; i++) {\n var cur = this.children[i];\n if (cur == child) { return pos }\n pos += cur.size;\n }\n};\n\nprototypeAccessors.posBefore.get = function () {\n return this.parent.posBeforeChild(this)\n};\n\nprototypeAccessors.posAtStart.get = function () {\n return this.parent ? this.parent.posBeforeChild(this) + this.border : 0\n};\n\nprototypeAccessors.posAfter.get = function () {\n return this.posBefore + this.size\n};\n\nprototypeAccessors.posAtEnd.get = function () {\n return this.posAtStart + this.size - 2 * this.border\n};\n\n// : (dom.Node, number, ?number) → number\nViewDesc.prototype.localPosFromDOM = function localPosFromDOM (dom, offset, bias) {\n // If the DOM position is in the content, use the child desc after\n // it to figure out a position.\n if (this.contentDOM && this.contentDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode)) {\n if (bias < 0) {\n var domBefore, desc;\n if (dom == this.contentDOM) {\n domBefore = dom.childNodes[offset - 1];\n } else {\n while (dom.parentNode != this.contentDOM) { dom = dom.parentNode; }\n domBefore = dom.previousSibling;\n }\n while (domBefore && !((desc = domBefore.pmViewDesc) && desc.parent == this)) { domBefore = domBefore.previousSibling; }\n return domBefore ? this.posBeforeChild(desc) + desc.size : this.posAtStart\n } else {\n var domAfter, desc$1;\n if (dom == this.contentDOM) {\n domAfter = dom.childNodes[offset];\n } else {\n while (dom.parentNode != this.contentDOM) { dom = dom.parentNode; }\n domAfter = dom.nextSibling;\n }\n while (domAfter && !((desc$1 = domAfter.pmViewDesc) && desc$1.parent == this)) { domAfter = domAfter.nextSibling; }\n return domAfter ? this.posBeforeChild(desc$1) : this.posAtEnd\n }\n }\n // Otherwise, use various heuristics, falling back on the bias\n // parameter, to determine whether to return the position at the\n // start or at the end of this view desc.\n var atEnd;\n if (this.contentDOM && this.contentDOM != this.dom && this.dom.contains(this.contentDOM)) {\n atEnd = dom.compareDocumentPosition(this.contentDOM) & 2;\n } else if (this.dom.firstChild) {\n if (offset == 0) { for (var search = dom;; search = search.parentNode) {\n if (search == this.dom) { atEnd = false; break }\n if (search.parentNode.firstChild != search) { break }\n } }\n if (atEnd == null && offset == dom.childNodes.length) { for (var search$1 = dom;; search$1 = search$1.parentNode) {\n if (search$1 == this.dom) { atEnd = true; break }\n if (search$1.parentNode.lastChild != search$1) { break }\n } }\n }\n return (atEnd == null ? bias > 0 : atEnd) ? this.posAtEnd : this.posAtStart\n};\n\n// Scan up the dom finding the first desc that is a descendant of\n// this one.\nViewDesc.prototype.nearestDesc = function nearestDesc (dom, onlyNodes) {\n for (var first = true, cur = dom; cur; cur = cur.parentNode) {\n var desc = this.getDesc(cur);\n if (desc && (!onlyNodes || desc.node)) {\n // If dom is outside of this desc's nodeDOM, don't count it.\n if (first && desc.nodeDOM &&\n !(desc.nodeDOM.nodeType == 1 ? desc.nodeDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode) : desc.nodeDOM == dom))\n { first = false; }\n else\n { return desc }\n }\n }\n};\n\nViewDesc.prototype.getDesc = function getDesc (dom) {\n var desc = dom.pmViewDesc;\n for (var cur = desc; cur; cur = cur.parent) { if (cur == this) { return desc } }\n};\n\nViewDesc.prototype.posFromDOM = function posFromDOM (dom, offset, bias) {\n for (var scan = dom; scan; scan = scan.parentNode) {\n var desc = this.getDesc(scan);\n if (desc) { return desc.localPosFromDOM(dom, offset, bias) }\n }\n return -1\n};\n\n// : (number) → ?NodeViewDesc\n// Find the desc for the node after the given pos, if any. (When a\n// parent node overrode rendering, there might not be one.)\nViewDesc.prototype.descAt = function descAt (pos) {\n for (var i = 0, offset = 0; i < this.children.length; i++) {\n var child = this.children[i], end = offset + child.size;\n if (offset == pos && end != offset) {\n while (!child.border && child.children.length) { child = child.children[0]; }\n return child\n }\n if (pos < end) { return child.descAt(pos - offset - child.border) }\n offset = end;\n }\n};\n\n// : (number) → {node: dom.Node, offset: number}\nViewDesc.prototype.domFromPos = function domFromPos (pos) {\n if (!this.contentDOM) { return {node: this.dom, offset: 0} }\n for (var offset = 0, i = 0;; i++) {\n if (offset == pos) {\n while (i < this.children.length && (this.children[i].beforePosition || this.children[i].dom.parentNode != this.contentDOM)) { i++; }\n return {node: this.contentDOM,\n offset: i == this.children.length ? this.contentDOM.childNodes.length : domIndex(this.children[i].dom)}\n }\n if (i == this.children.length) { throw new Error(\"Invalid position \" + pos) }\n var child = this.children[i], end = offset + child.size;\n if (pos < end) { return child.domFromPos(pos - offset - child.border) }\n offset = end;\n }\n};\n\n// Used to find a DOM range in a single parent for a given changed\n// range.\nViewDesc.prototype.parseRange = function parseRange (from, to, base) {\n if ( base === void 0 ) base = 0;\n\n if (this.children.length == 0)\n { return {node: this.contentDOM, from: from, to: to, fromOffset: 0, toOffset: this.contentDOM.childNodes.length} }\n\n var fromOffset = -1, toOffset = -1;\n for (var offset = base, i = 0;; i++) {\n var child = this.children[i], end = offset + child.size;\n if (fromOffset == -1 && from <= end) {\n var childBase = offset + child.border;\n // FIXME maybe descend mark views to parse a narrower range?\n if (from >= childBase && to <= end - child.border && child.node &&\n child.contentDOM && this.contentDOM.contains(child.contentDOM))\n { return child.parseRange(from, to, childBase) }\n\n from = offset;\n for (var j = i; j > 0; j--) {\n var prev = this.children[j - 1];\n if (prev.size && prev.dom.parentNode == this.contentDOM && !prev.emptyChildAt(1)) {\n fromOffset = domIndex(prev.dom) + 1;\n break\n }\n from -= prev.size;\n }\n if (fromOffset == -1) { fromOffset = 0; }\n }\n if (fromOffset > -1 && (end > to || i == this.children.length - 1)) {\n to = end;\n for (var j$1 = i + 1; j$1 < this.children.length; j$1++) {\n var next = this.children[j$1];\n if (next.size && next.dom.parentNode == this.contentDOM && !next.emptyChildAt(-1)) {\n toOffset = domIndex(next.dom);\n break\n }\n to += next.size;\n }\n if (toOffset == -1) { toOffset = this.contentDOM.childNodes.length; }\n break\n }\n offset = end;\n }\n return {node: this.contentDOM, from: from, to: to, fromOffset: fromOffset, toOffset: toOffset}\n};\n\nViewDesc.prototype.emptyChildAt = function emptyChildAt (side) {\n if (this.border || !this.contentDOM || !this.children.length) { return false }\n var child = this.children[side < 0 ? 0 : this.children.length - 1];\n return child.size == 0 || child.emptyChildAt(side)\n};\n\n// : (number) → dom.Node\nViewDesc.prototype.domAfterPos = function domAfterPos (pos) {\n var ref = this.domFromPos(pos);\n var node = ref.node;\n var offset = ref.offset;\n if (node.nodeType != 1 || offset == node.childNodes.length)\n { throw new RangeError(\"No node after pos \" + pos) }\n return node.childNodes[offset]\n};\n\n// : (number, number, dom.Document)\n// View descs are responsible for setting any selection that falls\n// entirely inside of them, so that custom implementations can do\n// custom things with the selection. Note that this falls apart when\n// a selection starts in such a node and ends in another, in which\n// case we just use whatever domFromPos produces as a best effort.\nViewDesc.prototype.setSelection = function setSelection (anchor, head, root, force) {\n // If the selection falls entirely in a child, give it to that child\n var from = Math.min(anchor, head), to = Math.max(anchor, head);\n for (var i = 0, offset = 0; i < this.children.length; i++) {\n var child = this.children[i], end = offset + child.size;\n if (from > offset && to < end)\n { return child.setSelection(anchor - offset - child.border, head - offset - child.border, root, force) }\n offset = end;\n }\n\n var anchorDOM = this.domFromPos(anchor), headDOM = this.domFromPos(head);\n var domSel = root.getSelection();\n\n if (!force &&\n isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset) &&\n isEquivalentPosition(headDOM.node, headDOM.offset, domSel.focusNode, domSel.focusOffset))\n { return }\n\n // On Firefox, using Selection.collapse to put the cursor after a\n // BR node for some reason doesn't always work (#1073)\n var geckoKludge = false;\n if (result.gecko && anchor == head) {\n var prev = anchorDOM.node.childNodes[anchorDOM.offset - 1];\n if (prev && prev.nodeName == \"BR\") { geckoKludge = true; }\n }\n // Selection.extend can be used to create an 'inverted' selection\n // (one where the focus is before the anchor), but not all\n // browsers support it yet.\n var domSelExtended = false;\n if ((domSel.extend || anchor == head) && !geckoKludge) {\n domSel.collapse(anchorDOM.node, anchorDOM.offset);\n try {\n if (anchor != head) { domSel.extend(headDOM.node, headDOM.offset); }\n domSelExtended = true;\n } catch (err) {\n // In some cases with Chrome the selection is empty after calling\n // collapse, even when it should be valid. This appears to be a bug, but\n // it is difficult to isolate. If this happens fallback to the old path\n // without using extend.\n if (!(err instanceof DOMException)) { throw err }\n }\n }\n if (!domSelExtended) {\n if (anchor > head) { var tmp = anchorDOM; anchorDOM = headDOM; headDOM = tmp; }\n var range = document.createRange();\n range.setEnd(headDOM.node, headDOM.offset);\n range.setStart(anchorDOM.node, anchorDOM.offset);\n domSel.removeAllRanges();\n domSel.addRange(range);\n }\n};\n\n// : (dom.MutationRecord) → bool\nViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return !this.contentDOM && mutation.type != \"selection\"\n};\n\nprototypeAccessors.contentLost.get = function () {\n return this.contentDOM && this.contentDOM != this.dom && !this.dom.contains(this.contentDOM)\n};\n\n// Remove a subtree of the element tree that has been touched\n// by a DOM change, so that the next update will redraw it.\nViewDesc.prototype.markDirty = function markDirty (from, to) {\n for (var offset = 0, i = 0; i < this.children.length; i++) {\n var child = this.children[i], end = offset + child.size;\n if (offset == end ? from <= end && to >= offset : from < end && to > offset) {\n var startInside = offset + child.border, endInside = end - child.border;\n if (from >= startInside && to <= endInside) {\n this.dirty = from == offset || to == end ? CONTENT_DIRTY : CHILD_DIRTY;\n if (from == startInside && to == endInside &&\n (child.contentLost || child.dom.parentNode != this.contentDOM)) { child.dirty = NODE_DIRTY; }\n else { child.markDirty(from - startInside, to - startInside); }\n return\n } else {\n child.dirty = NODE_DIRTY;\n }\n }\n offset = end;\n }\n this.dirty = CONTENT_DIRTY;\n};\n\nViewDesc.prototype.markParentsDirty = function markParentsDirty () {\n var level = 1;\n for (var node = this.parent; node; node = node.parent, level++) {\n var dirty = level == 1 ? CONTENT_DIRTY : CHILD_DIRTY;\n if (node.dirty < dirty) { node.dirty = dirty; }\n }\n};\n\nObject.defineProperties( ViewDesc.prototype, prototypeAccessors );\n\n// Reused array to avoid allocating fresh arrays for things that will\n// stay empty anyway.\nvar nothing = [];\n\n// A widget desc represents a widget decoration, which is a DOM node\n// drawn between the document nodes.\nvar WidgetViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function WidgetViewDesc(parent, widget, view, pos) {\n var self, dom = widget.type.toDOM;\n if (typeof dom == \"function\") { dom = dom(view, function () {\n if (!self) { return pos }\n if (self.parent) { return self.parent.posBeforeChild(self) }\n }); }\n if (!widget.type.spec.raw) {\n if (dom.nodeType != 1) {\n var wrap = document.createElement(\"span\");\n wrap.appendChild(dom);\n dom = wrap;\n }\n dom.contentEditable = false;\n dom.classList.add(\"ProseMirror-widget\");\n }\n ViewDesc.call(this, parent, nothing, dom, null);\n this.widget = widget;\n self = this;\n }\n\n if ( ViewDesc ) WidgetViewDesc.__proto__ = ViewDesc;\n WidgetViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n WidgetViewDesc.prototype.constructor = WidgetViewDesc;\n\n var prototypeAccessors$1 = { beforePosition: { configurable: true } };\n\n prototypeAccessors$1.beforePosition.get = function () {\n return this.widget.type.side < 0\n };\n\n WidgetViewDesc.prototype.matchesWidget = function matchesWidget (widget) {\n return this.dirty == NOT_DIRTY && widget.type.eq(this.widget.type)\n };\n\n WidgetViewDesc.prototype.parseRule = function parseRule () { return {ignore: true} };\n\n WidgetViewDesc.prototype.stopEvent = function stopEvent (event) {\n var stop = this.widget.spec.stopEvent;\n return stop ? stop(event) : false\n };\n\n WidgetViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return mutation.type != \"selection\" || this.widget.spec.ignoreSelection\n };\n\n Object.defineProperties( WidgetViewDesc.prototype, prototypeAccessors$1 );\n\n return WidgetViewDesc;\n}(ViewDesc));\n\nvar CompositionViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function CompositionViewDesc(parent, dom, textDOM, text) {\n ViewDesc.call(this, parent, nothing, dom, null);\n this.textDOM = textDOM;\n this.text = text;\n }\n\n if ( ViewDesc ) CompositionViewDesc.__proto__ = ViewDesc;\n CompositionViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n CompositionViewDesc.prototype.constructor = CompositionViewDesc;\n\n var prototypeAccessors$2 = { size: { configurable: true } };\n\n prototypeAccessors$2.size.get = function () { return this.text.length };\n\n CompositionViewDesc.prototype.localPosFromDOM = function localPosFromDOM (dom, offset) {\n if (dom != this.textDOM) { return this.posAtStart + (offset ? this.size : 0) }\n return this.posAtStart + offset\n };\n\n CompositionViewDesc.prototype.domFromPos = function domFromPos (pos) {\n return {node: this.textDOM, offset: pos}\n };\n\n CompositionViewDesc.prototype.ignoreMutation = function ignoreMutation (mut) {\n return mut.type === 'characterData' && mut.target.nodeValue == mut.oldValue\n };\n\n Object.defineProperties( CompositionViewDesc.prototype, prototypeAccessors$2 );\n\n return CompositionViewDesc;\n}(ViewDesc));\n\n// A mark desc represents a mark. May have multiple children,\n// depending on how the mark is split. Note that marks are drawn using\n// a fixed nesting order, for simplicity and predictability, so in\n// some cases they will be split more often than would appear\n// necessary.\nvar MarkViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function MarkViewDesc(parent, mark, dom, contentDOM) {\n ViewDesc.call(this, parent, [], dom, contentDOM);\n this.mark = mark;\n }\n\n if ( ViewDesc ) MarkViewDesc.__proto__ = ViewDesc;\n MarkViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n MarkViewDesc.prototype.constructor = MarkViewDesc;\n\n MarkViewDesc.create = function create (parent, mark, inline, view) {\n var custom = view.nodeViews[mark.type.name];\n var spec = custom && custom(mark, view, inline);\n if (!spec || !spec.dom)\n { spec = DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline)); }\n return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom)\n };\n\n MarkViewDesc.prototype.parseRule = function parseRule () { return {mark: this.mark.type.name, attrs: this.mark.attrs, contentElement: this.contentDOM} };\n\n MarkViewDesc.prototype.matchesMark = function matchesMark (mark) { return this.dirty != NODE_DIRTY && this.mark.eq(mark) };\n\n MarkViewDesc.prototype.markDirty = function markDirty (from, to) {\n ViewDesc.prototype.markDirty.call(this, from, to);\n // Move dirty info to nearest node view\n if (this.dirty != NOT_DIRTY) {\n var parent = this.parent;\n while (!parent.node) { parent = parent.parent; }\n if (parent.dirty < this.dirty) { parent.dirty = this.dirty; }\n this.dirty = NOT_DIRTY;\n }\n };\n\n MarkViewDesc.prototype.slice = function slice (from, to, view) {\n var copy = MarkViewDesc.create(this.parent, this.mark, true, view);\n var nodes = this.children, size = this.size;\n if (to < size) { nodes = replaceNodes(nodes, to, size, view); }\n if (from > 0) { nodes = replaceNodes(nodes, 0, from, view); }\n for (var i = 0; i < nodes.length; i++) { nodes[i].parent = copy; }\n copy.children = nodes;\n return copy\n };\n\n return MarkViewDesc;\n}(ViewDesc));\n\n// Node view descs are the main, most common type of view desc, and\n// correspond to an actual node in the document. Unlike mark descs,\n// they populate their child array themselves.\nvar NodeViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos) {\n ViewDesc.call(this, parent, node.isLeaf ? nothing : [], dom, contentDOM);\n this.nodeDOM = nodeDOM;\n this.node = node;\n this.outerDeco = outerDeco;\n this.innerDeco = innerDeco;\n if (contentDOM) { this.updateChildren(view, pos); }\n }\n\n if ( ViewDesc ) NodeViewDesc.__proto__ = ViewDesc;\n NodeViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n NodeViewDesc.prototype.constructor = NodeViewDesc;\n\n var prototypeAccessors$3 = { size: { configurable: true },border: { configurable: true } };\n\n // By default, a node is rendered using the `toDOM` method from the\n // node type spec. But client code can use the `nodeViews` spec to\n // supply a custom node view, which can influence various aspects of\n // the way the node works.\n //\n // (Using subclassing for this was intentionally decided against,\n // since it'd require exposing a whole slew of finnicky\n // implementation details to the user code that they probably will\n // never need.)\n NodeViewDesc.create = function create (parent, node, outerDeco, innerDeco, view, pos) {\n var assign;\n\n var custom = view.nodeViews[node.type.name], descObj;\n var spec = custom && custom(node, view, function () {\n // (This is a function that allows the custom view to find its\n // own position)\n if (!descObj) { return pos }\n if (descObj.parent) { return descObj.parent.posBeforeChild(descObj) }\n }, outerDeco);\n\n var dom = spec && spec.dom, contentDOM = spec && spec.contentDOM;\n if (node.isText) {\n if (!dom) { dom = document.createTextNode(node.text); }\n else if (dom.nodeType != 3) { throw new RangeError(\"Text must be rendered as a DOM text node\") }\n } else if (!dom) {\n((assign = DOMSerializer.renderSpec(document, node.type.spec.toDOM(node)), dom = assign.dom, contentDOM = assign.contentDOM));\n }\n if (!contentDOM && !node.isText && dom.nodeName != \"BR\") { // Chrome gets confused by
        \n if (!dom.hasAttribute(\"contenteditable\")) { dom.contentEditable = false; }\n if (node.type.spec.draggable) { dom.draggable = true; }\n }\n\n var nodeDOM = dom;\n dom = applyOuterDeco(dom, outerDeco, node);\n\n if (spec)\n { return descObj = new CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM,\n spec, view, pos + 1) }\n else if (node.isText)\n { return new TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) }\n else\n { return new NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos + 1) }\n };\n\n NodeViewDesc.prototype.parseRule = function parseRule () {\n var this$1 = this;\n\n // Experimental kludge to allow opt-in re-parsing of nodes\n if (this.node.type.spec.reparseInView) { return null }\n // FIXME the assumption that this can always return the current\n // attrs means that if the user somehow manages to change the\n // attrs in the dom, that won't be picked up. Not entirely sure\n // whether this is a problem\n var rule = {node: this.node.type.name, attrs: this.node.attrs};\n if (this.node.type.spec.code) { rule.preserveWhitespace = \"full\"; }\n if (this.contentDOM && !this.contentLost) { rule.contentElement = this.contentDOM; }\n else { rule.getContent = function () { return this$1.contentDOM ? Fragment.empty : this$1.node.content; }; }\n return rule\n };\n\n NodeViewDesc.prototype.matchesNode = function matchesNode (node, outerDeco, innerDeco) {\n return this.dirty == NOT_DIRTY && node.eq(this.node) &&\n sameOuterDeco(outerDeco, this.outerDeco) && innerDeco.eq(this.innerDeco)\n };\n\n prototypeAccessors$3.size.get = function () { return this.node.nodeSize };\n\n prototypeAccessors$3.border.get = function () { return this.node.isLeaf ? 0 : 1 };\n\n // Syncs `this.children` to match `this.node.content` and the local\n // decorations, possibly introducing nesting for marks. Then, in a\n // separate step, syncs the DOM inside `this.contentDOM` to\n // `this.children`.\n NodeViewDesc.prototype.updateChildren = function updateChildren (view, pos) {\n var this$1 = this;\n\n var inline = this.node.inlineContent, off = pos;\n var composition = inline && view.composing && this.localCompositionNode(view, pos);\n var updater = new ViewTreeUpdater(this, composition && composition.node);\n iterDeco(this.node, this.innerDeco, function (widget, i, insideNode) {\n if (widget.spec.marks)\n { updater.syncToMarks(widget.spec.marks, inline, view); }\n else if (widget.type.side >= 0 && !insideNode)\n { updater.syncToMarks(i == this$1.node.childCount ? Mark.none : this$1.node.child(i).marks, inline, view); }\n // If the next node is a desc matching this widget, reuse it,\n // otherwise insert the widget as a new view desc.\n updater.placeWidget(widget, view, off);\n }, function (child, outerDeco, innerDeco, i) {\n // Make sure the wrapping mark descs match the node's marks.\n updater.syncToMarks(child.marks, inline, view);\n // Either find an existing desc that exactly matches this node,\n // and drop the descs before it.\n updater.findNodeMatch(child, outerDeco, innerDeco, i) ||\n // Or try updating the next desc to reflect this node.\n updater.updateNextNode(child, outerDeco, innerDeco, view, i) ||\n // Or just add it as a new desc.\n updater.addNode(child, outerDeco, innerDeco, view, off);\n off += child.nodeSize;\n });\n // Drop all remaining descs after the current position.\n updater.syncToMarks(nothing, inline, view);\n if (this.node.isTextblock) { updater.addTextblockHacks(); }\n updater.destroyRest();\n\n // Sync the DOM if anything changed\n if (updater.changed || this.dirty == CONTENT_DIRTY) {\n // May have to protect focused DOM from being changed if a composition is active\n if (composition) { this.protectLocalComposition(view, composition); }\n renderDescs(this.contentDOM, this.children, view);\n if (result.ios) { iosHacks(this.dom); }\n }\n };\n\n NodeViewDesc.prototype.localCompositionNode = function localCompositionNode (view, pos) {\n // Only do something if both the selection and a focused text node\n // are inside of this node, and the node isn't already part of a\n // view that's a child of this view\n var ref = view.state.selection;\n var from = ref.from;\n var to = ref.to;\n if (!(view.state.selection instanceof TextSelection) || from < pos || to > pos + this.node.content.size) { return }\n var sel = view.root.getSelection();\n var textNode = nearbyTextNode(sel.focusNode, sel.focusOffset);\n if (!textNode || !this.dom.contains(textNode.parentNode)) { return }\n\n // Find the text in the focused node in the node, stop if it's not\n // there (may have been modified through other means, in which\n // case it should overwritten)\n var text = textNode.nodeValue;\n var textPos = findTextInFragment(this.node.content, text, from - pos, to - pos);\n\n return textPos < 0 ? null : {node: textNode, pos: textPos, text: text}\n };\n\n NodeViewDesc.prototype.protectLocalComposition = function protectLocalComposition (view, ref) {\n var node = ref.node;\n var pos = ref.pos;\n var text = ref.text;\n\n // The node is already part of a local view desc, leave it there\n if (this.getDesc(node)) { return }\n\n // Create a composition view for the orphaned nodes\n var topNode = node;\n for (;; topNode = topNode.parentNode) {\n if (topNode.parentNode == this.contentDOM) { break }\n while (topNode.previousSibling) { topNode.parentNode.removeChild(topNode.previousSibling); }\n while (topNode.nextSibling) { topNode.parentNode.removeChild(topNode.nextSibling); }\n if (topNode.pmViewDesc) { topNode.pmViewDesc = null; }\n }\n var desc = new CompositionViewDesc(this, topNode, node, text);\n view.compositionNodes.push(desc);\n\n // Patch up this.children to contain the composition view\n this.children = replaceNodes(this.children, pos, pos + text.length, view, desc);\n };\n\n // : (Node, [Decoration], DecorationSet, EditorView) → bool\n // If this desc be updated to match the given node decoration,\n // do so and return true.\n NodeViewDesc.prototype.update = function update (node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY ||\n !node.sameMarkup(this.node)) { return false }\n this.updateInner(node, outerDeco, innerDeco, view);\n return true\n };\n\n NodeViewDesc.prototype.updateInner = function updateInner (node, outerDeco, innerDeco, view) {\n this.updateOuterDeco(outerDeco);\n this.node = node;\n this.innerDeco = innerDeco;\n if (this.contentDOM) { this.updateChildren(view, this.posAtStart); }\n this.dirty = NOT_DIRTY;\n };\n\n NodeViewDesc.prototype.updateOuterDeco = function updateOuterDeco (outerDeco) {\n if (sameOuterDeco(outerDeco, this.outerDeco)) { return }\n var needsWrap = this.nodeDOM.nodeType != 1;\n var oldDOM = this.dom;\n this.dom = patchOuterDeco(this.dom, this.nodeDOM,\n computeOuterDeco(this.outerDeco, this.node, needsWrap),\n computeOuterDeco(outerDeco, this.node, needsWrap));\n if (this.dom != oldDOM) {\n oldDOM.pmViewDesc = null;\n this.dom.pmViewDesc = this;\n }\n this.outerDeco = outerDeco;\n };\n\n // Mark this node as being the selected node.\n NodeViewDesc.prototype.selectNode = function selectNode () {\n this.nodeDOM.classList.add(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable) { this.dom.draggable = true; }\n };\n\n // Remove selected node marking from this node.\n NodeViewDesc.prototype.deselectNode = function deselectNode () {\n this.nodeDOM.classList.remove(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable) { this.dom.removeAttribute(\"draggable\"); }\n };\n\n Object.defineProperties( NodeViewDesc.prototype, prototypeAccessors$3 );\n\n return NodeViewDesc;\n}(ViewDesc));\n\n// Create a view desc for the top-level document node, to be exported\n// and used by the view class.\nfunction docViewDesc(doc, outerDeco, innerDeco, dom, view) {\n applyOuterDeco(dom, outerDeco, doc);\n return new NodeViewDesc(null, doc, outerDeco, innerDeco, dom, dom, dom, view, 0)\n}\n\nvar TextViewDesc = /*@__PURE__*/(function (NodeViewDesc) {\n function TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) {\n NodeViewDesc.call(this, parent, node, outerDeco, innerDeco, dom, null, nodeDOM, view);\n }\n\n if ( NodeViewDesc ) TextViewDesc.__proto__ = NodeViewDesc;\n TextViewDesc.prototype = Object.create( NodeViewDesc && NodeViewDesc.prototype );\n TextViewDesc.prototype.constructor = TextViewDesc;\n\n TextViewDesc.prototype.parseRule = function parseRule () {\n var skip = this.nodeDOM.parentNode;\n while (skip && skip != this.dom && !skip.pmIsDeco) { skip = skip.parentNode; }\n return {skip: skip || true}\n };\n\n TextViewDesc.prototype.update = function update (node, outerDeco, _, view) {\n if (this.dirty == NODE_DIRTY || (this.dirty != NOT_DIRTY && !this.inParent()) ||\n !node.sameMarkup(this.node)) { return false }\n this.updateOuterDeco(outerDeco);\n if ((this.dirty != NOT_DIRTY || node.text != this.node.text) && node.text != this.nodeDOM.nodeValue) {\n this.nodeDOM.nodeValue = node.text;\n if (view.trackWrites == this.nodeDOM) { view.trackWrites = null; }\n }\n this.node = node;\n this.dirty = NOT_DIRTY;\n return true\n };\n\n TextViewDesc.prototype.inParent = function inParent () {\n var parentDOM = this.parent.contentDOM;\n for (var n = this.nodeDOM; n; n = n.parentNode) { if (n == parentDOM) { return true } }\n return false\n };\n\n TextViewDesc.prototype.domFromPos = function domFromPos (pos) {\n return {node: this.nodeDOM, offset: pos}\n };\n\n TextViewDesc.prototype.localPosFromDOM = function localPosFromDOM (dom, offset, bias) {\n if (dom == this.nodeDOM) { return this.posAtStart + Math.min(offset, this.node.text.length) }\n return NodeViewDesc.prototype.localPosFromDOM.call(this, dom, offset, bias)\n };\n\n TextViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return mutation.type != \"characterData\" && mutation.type != \"selection\"\n };\n\n TextViewDesc.prototype.slice = function slice (from, to, view) {\n var node = this.node.cut(from, to), dom = document.createTextNode(node.text);\n return new TextViewDesc(this.parent, node, this.outerDeco, this.innerDeco, dom, dom, view)\n };\n\n return TextViewDesc;\n}(NodeViewDesc));\n\n// A dummy desc used to tag trailing BR or span nodes created to work\n// around contentEditable terribleness.\nvar BRHackViewDesc = /*@__PURE__*/(function (ViewDesc) {\n function BRHackViewDesc () {\n ViewDesc.apply(this, arguments);\n }\n\n if ( ViewDesc ) BRHackViewDesc.__proto__ = ViewDesc;\n BRHackViewDesc.prototype = Object.create( ViewDesc && ViewDesc.prototype );\n BRHackViewDesc.prototype.constructor = BRHackViewDesc;\n\n BRHackViewDesc.prototype.parseRule = function parseRule () { return {ignore: true} };\n BRHackViewDesc.prototype.matchesHack = function matchesHack () { return this.dirty == NOT_DIRTY };\n\n return BRHackViewDesc;\n}(ViewDesc));\n\n// A separate subclass is used for customized node views, so that the\n// extra checks only have to be made for nodes that are actually\n// customized.\nvar CustomNodeViewDesc = /*@__PURE__*/(function (NodeViewDesc) {\n function CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, spec, view, pos) {\n NodeViewDesc.call(this, parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos);\n this.spec = spec;\n }\n\n if ( NodeViewDesc ) CustomNodeViewDesc.__proto__ = NodeViewDesc;\n CustomNodeViewDesc.prototype = Object.create( NodeViewDesc && NodeViewDesc.prototype );\n CustomNodeViewDesc.prototype.constructor = CustomNodeViewDesc;\n\n // A custom `update` method gets to decide whether the update goes\n // through. If it does, and there's a `contentDOM` node, our logic\n // updates the children.\n CustomNodeViewDesc.prototype.update = function update (node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY) { return false }\n if (this.spec.update) {\n var result = this.spec.update(node, outerDeco);\n if (result) { this.updateInner(node, outerDeco, innerDeco, view); }\n return result\n } else if (!this.contentDOM && !node.isLeaf) {\n return false\n } else {\n return NodeViewDesc.prototype.update.call(this, node, outerDeco, innerDeco, view)\n }\n };\n\n CustomNodeViewDesc.prototype.selectNode = function selectNode () {\n this.spec.selectNode ? this.spec.selectNode() : NodeViewDesc.prototype.selectNode.call(this);\n };\n\n CustomNodeViewDesc.prototype.deselectNode = function deselectNode () {\n this.spec.deselectNode ? this.spec.deselectNode() : NodeViewDesc.prototype.deselectNode.call(this);\n };\n\n CustomNodeViewDesc.prototype.setSelection = function setSelection (anchor, head, root, force) {\n this.spec.setSelection ? this.spec.setSelection(anchor, head, root)\n : NodeViewDesc.prototype.setSelection.call(this, anchor, head, root, force);\n };\n\n CustomNodeViewDesc.prototype.destroy = function destroy () {\n if (this.spec.destroy) { this.spec.destroy(); }\n NodeViewDesc.prototype.destroy.call(this);\n };\n\n CustomNodeViewDesc.prototype.stopEvent = function stopEvent (event) {\n return this.spec.stopEvent ? this.spec.stopEvent(event) : false\n };\n\n CustomNodeViewDesc.prototype.ignoreMutation = function ignoreMutation (mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : NodeViewDesc.prototype.ignoreMutation.call(this, mutation)\n };\n\n return CustomNodeViewDesc;\n}(NodeViewDesc));\n\n// : (dom.Node, [ViewDesc])\n// Sync the content of the given DOM node with the nodes associated\n// with the given array of view descs, recursing into mark descs\n// because this should sync the subtree for a whole node at a time.\nfunction renderDescs(parentDOM, descs, view) {\n var dom = parentDOM.firstChild, written = false;\n for (var i = 0; i < descs.length; i++) {\n var desc = descs[i], childDOM = desc.dom;\n if (childDOM.parentNode == parentDOM) {\n while (childDOM != dom) { dom = rm(dom); written = true; }\n dom = dom.nextSibling;\n } else {\n written = true;\n parentDOM.insertBefore(childDOM, dom);\n }\n if (desc instanceof MarkViewDesc) {\n var pos = dom ? dom.previousSibling : parentDOM.lastChild;\n renderDescs(desc.contentDOM, desc.children, view);\n dom = pos ? pos.nextSibling : parentDOM.firstChild;\n }\n }\n while (dom) { dom = rm(dom); written = true; }\n if (written && view.trackWrites == parentDOM) { view.trackWrites = null; }\n}\n\nfunction OuterDecoLevel(nodeName) {\n if (nodeName) { this.nodeName = nodeName; }\n}\nOuterDecoLevel.prototype = Object.create(null);\n\nvar noDeco = [new OuterDecoLevel];\n\nfunction computeOuterDeco(outerDeco, node, needsWrap) {\n if (outerDeco.length == 0) { return noDeco }\n\n var top = needsWrap ? noDeco[0] : new OuterDecoLevel, result = [top];\n\n for (var i = 0; i < outerDeco.length; i++) {\n var attrs = outerDeco[i].type.attrs, cur = top;\n if (!attrs) { continue }\n if (attrs.nodeName)\n { result.push(cur = new OuterDecoLevel(attrs.nodeName)); }\n\n for (var name in attrs) {\n var val = attrs[name];\n if (val == null) { continue }\n if (needsWrap && result.length == 1)\n { result.push(cur = top = new OuterDecoLevel(node.isInline ? \"span\" : \"div\")); }\n if (name == \"class\") { cur.class = (cur.class ? cur.class + \" \" : \"\") + val; }\n else if (name == \"style\") { cur.style = (cur.style ? cur.style + \";\" : \"\") + val; }\n else if (name != \"nodeName\") { cur[name] = val; }\n }\n }\n\n return result\n}\n\nfunction patchOuterDeco(outerDOM, nodeDOM, prevComputed, curComputed) {\n // Shortcut for trivial case\n if (prevComputed == noDeco && curComputed == noDeco) { return nodeDOM }\n\n var curDOM = nodeDOM;\n for (var i = 0; i < curComputed.length; i++) {\n var deco = curComputed[i], prev = prevComputed[i];\n if (i) {\n var parent = (void 0);\n if (prev && prev.nodeName == deco.nodeName && curDOM != outerDOM &&\n (parent = curDOM.parentNode) && parent.tagName.toLowerCase() == deco.nodeName) {\n curDOM = parent;\n } else {\n parent = document.createElement(deco.nodeName);\n parent.pmIsDeco = true;\n parent.appendChild(curDOM);\n prev = noDeco[0];\n curDOM = parent;\n }\n }\n patchAttributes(curDOM, prev || noDeco[0], deco);\n }\n return curDOM\n}\n\nfunction patchAttributes(dom, prev, cur) {\n for (var name in prev)\n { if (name != \"class\" && name != \"style\" && name != \"nodeName\" && !(name in cur))\n { dom.removeAttribute(name); } }\n for (var name$1 in cur)\n { if (name$1 != \"class\" && name$1 != \"style\" && name$1 != \"nodeName\" && cur[name$1] != prev[name$1])\n { dom.setAttribute(name$1, cur[name$1]); } }\n if (prev.class != cur.class) {\n var prevList = prev.class ? prev.class.split(\" \") : nothing;\n var curList = cur.class ? cur.class.split(\" \") : nothing;\n for (var i = 0; i < prevList.length; i++) { if (curList.indexOf(prevList[i]) == -1)\n { dom.classList.remove(prevList[i]); } }\n for (var i$1 = 0; i$1 < curList.length; i$1++) { if (prevList.indexOf(curList[i$1]) == -1)\n { dom.classList.add(curList[i$1]); } }\n }\n if (prev.style != cur.style) {\n if (prev.style) {\n var prop = /\\s*([\\w\\-\\xa1-\\uffff]+)\\s*:(?:\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|\\(.*?\\)|[^;])*/g, m;\n while (m = prop.exec(prev.style))\n { dom.style.removeProperty(m[1]); }\n }\n if (cur.style)\n { dom.style.cssText += cur.style; }\n }\n}\n\nfunction applyOuterDeco(dom, deco, node) {\n return patchOuterDeco(dom, dom, noDeco, computeOuterDeco(deco, node, dom.nodeType != 1))\n}\n\n// : ([Decoration], [Decoration]) → bool\nfunction sameOuterDeco(a, b) {\n if (a.length != b.length) { return false }\n for (var i = 0; i < a.length; i++) { if (!a[i].type.eq(b[i].type)) { return false } }\n return true\n}\n\n// Remove a DOM node and return its next sibling.\nfunction rm(dom) {\n var next = dom.nextSibling;\n dom.parentNode.removeChild(dom);\n return next\n}\n\n// Helper class for incrementally updating a tree of mark descs and\n// the widget and node descs inside of them.\nvar ViewTreeUpdater = function ViewTreeUpdater(top, lockedNode) {\n this.top = top;\n this.lock = lockedNode;\n // Index into `this.top`'s child array, represents the current\n // update position.\n this.index = 0;\n // When entering a mark, the current top and index are pushed\n // onto this.\n this.stack = [];\n // Tracks whether anything was changed\n this.changed = false;\n\n var pre = preMatch(top.node.content, top.children);\n this.preMatched = pre.nodes;\n this.preMatchOffset = pre.offset;\n};\n\nViewTreeUpdater.prototype.getPreMatch = function getPreMatch (index) {\n return index >= this.preMatchOffset ? this.preMatched[index - this.preMatchOffset] : null\n};\n\n// Destroy and remove the children between the given indices in\n// `this.top`.\nViewTreeUpdater.prototype.destroyBetween = function destroyBetween (start, end) {\n if (start == end) { return }\n for (var i = start; i < end; i++) { this.top.children[i].destroy(); }\n this.top.children.splice(start, end - start);\n this.changed = true;\n};\n\n// Destroy all remaining children in `this.top`.\nViewTreeUpdater.prototype.destroyRest = function destroyRest () {\n this.destroyBetween(this.index, this.top.children.length);\n};\n\n// : ([Mark], EditorView)\n// Sync the current stack of mark descs with the given array of\n// marks, reusing existing mark descs when possible.\nViewTreeUpdater.prototype.syncToMarks = function syncToMarks (marks, inline, view) {\n var keep = 0, depth = this.stack.length >> 1;\n var maxKeep = Math.min(depth, marks.length);\n while (keep < maxKeep &&\n (keep == depth - 1 ? this.top : this.stack[(keep + 1) << 1]).matchesMark(marks[keep]) && marks[keep].type.spec.spanning !== false)\n { keep++; }\n\n while (keep < depth) {\n this.destroyRest();\n this.top.dirty = NOT_DIRTY;\n this.index = this.stack.pop();\n this.top = this.stack.pop();\n depth--;\n }\n while (depth < marks.length) {\n this.stack.push(this.top, this.index + 1);\n var found = -1;\n for (var i = this.index; i < Math.min(this.index + 3, this.top.children.length); i++) {\n if (this.top.children[i].matchesMark(marks[depth])) { found = i; break }\n }\n if (found > -1) {\n if (found > this.index) {\n this.changed = true;\n this.destroyBetween(this.index, found);\n }\n this.top = this.top.children[this.index];\n } else {\n var markDesc = MarkViewDesc.create(this.top, marks[depth], inline, view);\n this.top.children.splice(this.index, 0, markDesc);\n this.top = markDesc;\n this.changed = true;\n }\n this.index = 0;\n depth++;\n }\n};\n\n// : (Node, [Decoration], DecorationSet) → bool\n// Try to find a node desc matching the given data. Skip over it and\n// return true when successful.\nViewTreeUpdater.prototype.findNodeMatch = function findNodeMatch (node, outerDeco, innerDeco, index) {\n var found = -1, preMatch = index < 0 ? undefined : this.getPreMatch(index), children = this.top.children;\n if (preMatch && preMatch.matchesNode(node, outerDeco, innerDeco)) {\n found = children.indexOf(preMatch);\n } else {\n for (var i = this.index, e = Math.min(children.length, i + 5); i < e; i++) {\n var child = children[i];\n if (child.matchesNode(node, outerDeco, innerDeco) && this.preMatched.indexOf(child) < 0) {\n found = i;\n break\n }\n }\n }\n if (found < 0) { return false }\n this.destroyBetween(this.index, found);\n this.index++;\n return true\n};\n\n// : (Node, [Decoration], DecorationSet, EditorView, Fragment, number) → bool\n// Try to update the next node, if any, to the given data. Checks\n// pre-matches to avoid overwriting nodes that could still be used.\nViewTreeUpdater.prototype.updateNextNode = function updateNextNode (node, outerDeco, innerDeco, view, index) {\n for (var i = this.index; i < this.top.children.length; i++) {\n var next = this.top.children[i];\n if (next instanceof NodeViewDesc) {\n var preMatch = this.preMatched.indexOf(next);\n if (preMatch > -1 && preMatch + this.preMatchOffset != index) { return false }\n var nextDOM = next.dom;\n\n // Can't update if nextDOM is or contains this.lock, except if\n // it's a text node whose content already matches the new text\n // and whose decorations match the new ones.\n var locked = this.lock && (nextDOM == this.lock || nextDOM.nodeType == 1 && nextDOM.contains(this.lock.parentNode)) &&\n !(node.isText && next.node && next.node.isText && next.nodeDOM.nodeValue == node.text &&\n next.dirty != NODE_DIRTY && sameOuterDeco(outerDeco, next.outerDeco));\n if (!locked && next.update(node, outerDeco, innerDeco, view)) {\n this.destroyBetween(this.index, i);\n if (next.dom != nextDOM) { this.changed = true; }\n this.index++;\n return true\n }\n break\n }\n }\n return false\n};\n\n// : (Node, [Decoration], DecorationSet, EditorView)\n// Insert the node as a newly created node desc.\nViewTreeUpdater.prototype.addNode = function addNode (node, outerDeco, innerDeco, view, pos) {\n this.top.children.splice(this.index++, 0, NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos));\n this.changed = true;\n};\n\nViewTreeUpdater.prototype.placeWidget = function placeWidget (widget, view, pos) {\n var next = this.index < this.top.children.length ? this.top.children[this.index] : null;\n if (next && next.matchesWidget(widget) && (widget == next.widget || !next.widget.type.toDOM.parentNode)) {\n this.index++;\n } else {\n var desc = new WidgetViewDesc(this.top, widget, view, pos);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n};\n\n// Make sure a textblock looks and behaves correctly in\n// contentEditable.\nViewTreeUpdater.prototype.addTextblockHacks = function addTextblockHacks () {\n var lastChild = this.top.children[this.index - 1];\n while (lastChild instanceof MarkViewDesc) { lastChild = lastChild.children[lastChild.children.length - 1]; }\n\n if (!lastChild || // Empty textblock\n !(lastChild instanceof TextViewDesc) ||\n /\\n$/.test(lastChild.node.text)) {\n if (this.index < this.top.children.length && this.top.children[this.index].matchesHack()) {\n this.index++;\n } else {\n var dom = document.createElement(\"br\");\n this.top.children.splice(this.index++, 0, new BRHackViewDesc(this.top, nothing, dom, null));\n this.changed = true;\n }\n }\n};\n\n// : (Fragment, [ViewDesc]) → [ViewDesc]\n// Iterate from the end of the fragment and array of descs to find\n// directly matching ones, in order to avoid overeagerly reusing\n// those for other nodes. Returns an array whose positions correspond\n// to node positions in the fragment, and whose elements are either\n// descs matched to the child at that index, or empty.\nfunction preMatch(frag, descs) {\n var result = [], end = frag.childCount;\n for (var i = descs.length - 1; end > 0 && i >= 0; i--) {\n var desc = descs[i], node = desc.node;\n if (!node) { continue }\n if (node != frag.child(end - 1)) { break }\n result.push(desc);\n --end;\n }\n return {nodes: result.reverse(), offset: end}\n}\n\nfunction compareSide(a, b) { return a.type.side - b.type.side }\n\n// : (ViewDesc, DecorationSet, (Decoration, number), (Node, [Decoration], DecorationSet, number))\n// This function abstracts iterating over the nodes and decorations in\n// a fragment. Calls `onNode` for each node, with its local and child\n// decorations. Splits text nodes when there is a decoration starting\n// or ending inside of them. Calls `onWidget` for each widget.\nfunction iterDeco(parent, deco, onWidget, onNode) {\n var locals = deco.locals(parent), offset = 0;\n // Simple, cheap variant for when there are no local decorations\n if (locals.length == 0) {\n for (var i = 0; i < parent.childCount; i++) {\n var child = parent.child(i);\n onNode(child, locals, deco.forChild(offset, child), i);\n offset += child.nodeSize;\n }\n return\n }\n\n var decoIndex = 0, active = [], restNode = null;\n for (var parentIndex = 0;;) {\n if (decoIndex < locals.length && locals[decoIndex].to == offset) {\n var widget = locals[decoIndex++], widgets = (void 0);\n while (decoIndex < locals.length && locals[decoIndex].to == offset)\n { (widgets || (widgets = [widget])).push(locals[decoIndex++]); }\n if (widgets) {\n widgets.sort(compareSide);\n for (var i$1 = 0; i$1 < widgets.length; i$1++) { onWidget(widgets[i$1], parentIndex, !!restNode); }\n } else {\n onWidget(widget, parentIndex, !!restNode);\n }\n }\n\n var child$1 = (void 0), index = (void 0);\n if (restNode) {\n index = -1;\n child$1 = restNode;\n restNode = null;\n } else if (parentIndex < parent.childCount) {\n index = parentIndex;\n child$1 = parent.child(parentIndex++);\n } else {\n break\n }\n\n for (var i$2 = 0; i$2 < active.length; i$2++) { if (active[i$2].to <= offset) { active.splice(i$2--, 1); } }\n while (decoIndex < locals.length && locals[decoIndex].from <= offset && locals[decoIndex].to > offset)\n { active.push(locals[decoIndex++]); }\n\n var end = offset + child$1.nodeSize;\n if (child$1.isText) {\n var cutAt = end;\n if (decoIndex < locals.length && locals[decoIndex].from < cutAt) { cutAt = locals[decoIndex].from; }\n for (var i$3 = 0; i$3 < active.length; i$3++) { if (active[i$3].to < cutAt) { cutAt = active[i$3].to; } }\n if (cutAt < end) {\n restNode = child$1.cut(cutAt - offset);\n child$1 = child$1.cut(0, cutAt - offset);\n end = cutAt;\n index = -1;\n }\n }\n\n var outerDeco = !active.length ? nothing\n : child$1.isInline && !child$1.isLeaf ? active.filter(function (d) { return !d.inline; })\n : active.slice();\n onNode(child$1, outerDeco, deco.forChild(offset, child$1), index);\n offset = end;\n }\n}\n\n// List markers in Mobile Safari will mysteriously disappear\n// sometimes. This works around that.\nfunction iosHacks(dom) {\n if (dom.nodeName == \"UL\" || dom.nodeName == \"OL\") {\n var oldCSS = dom.style.cssText;\n dom.style.cssText = oldCSS + \"; list-style: square !important\";\n window.getComputedStyle(dom).listStyle;\n dom.style.cssText = oldCSS;\n }\n}\n\nfunction nearbyTextNode(node, offset) {\n for (;;) {\n if (node.nodeType == 3) { return node }\n if (node.nodeType == 1 && offset > 0) {\n if (node.childNodes.length > offset && node.childNodes[offset].nodeType == 3)\n { return node.childNodes[offset] }\n node = node.childNodes[offset - 1];\n offset = nodeSize(node);\n } else if (node.nodeType == 1 && offset < node.childNodes.length) {\n node = node.childNodes[offset];\n offset = 0;\n } else {\n return null\n }\n }\n}\n\n// Find a piece of text in an inline fragment, overlapping from-to\nfunction findTextInFragment(frag, text, from, to) {\n for (var i = 0, pos = 0; i < frag.childCount && pos <= to;) {\n var child = frag.child(i++), childStart = pos;\n pos += child.nodeSize;\n if (!child.isText) { continue }\n var str = child.text;\n while (i < frag.childCount) {\n var next = frag.child(i++);\n pos += next.nodeSize;\n if (!next.isText) { break }\n str += next.text;\n }\n if (pos >= from) {\n var found = str.lastIndexOf(text, to - childStart);\n if (found >= 0 && found + text.length + childStart >= from)\n { return childStart + found }\n }\n }\n return -1\n}\n\n// Replace range from-to in an array of view descs with replacement\n// (may be null to just delete). This goes very much against the grain\n// of the rest of this code, which tends to create nodes with the\n// right shape in one go, rather than messing with them after\n// creation, but is necessary in the composition hack.\nfunction replaceNodes(nodes, from, to, view, replacement) {\n var result = [];\n for (var i = 0, off = 0; i < nodes.length; i++) {\n var child = nodes[i], start = off, end = off += child.size;\n if (start >= to || end <= from) {\n result.push(child);\n } else {\n if (start < from) { result.push(child.slice(0, from - start, view)); }\n if (replacement) {\n result.push(replacement);\n replacement = null;\n }\n if (end > to) { result.push(child.slice(to - start, child.size, view)); }\n }\n }\n return result\n}\n\nfunction moveSelectionBlock(state, dir) {\n var ref = state.selection;\n var $anchor = ref.$anchor;\n var $head = ref.$head;\n var $side = dir > 0 ? $anchor.max($head) : $anchor.min($head);\n var $start = !$side.parent.inlineContent ? $side : $side.depth ? state.doc.resolve(dir > 0 ? $side.after() : $side.before()) : null;\n return $start && Selection.findFrom($start, dir)\n}\n\nfunction apply(view, sel) {\n view.dispatch(view.state.tr.setSelection(sel).scrollIntoView());\n return true\n}\n\nfunction selectHorizontally(view, dir, mods) {\n var sel = view.state.selection;\n if (sel instanceof TextSelection) {\n if (!sel.empty || mods.indexOf(\"s\") > -1) {\n return false\n } else if (view.endOfTextblock(dir > 0 ? \"right\" : \"left\")) {\n var next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection)) { return apply(view, next) }\n return false\n } else if (!(result.mac && mods.indexOf(\"m\") > -1)) {\n var $head = sel.$head, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter, desc;\n if (!node || node.isText) { return false }\n var nodePos = dir < 0 ? $head.pos - node.nodeSize : $head.pos;\n if (!(node.isAtom || (desc = view.docView.descAt(nodePos)) && !desc.contentDOM)) { return false }\n if (NodeSelection.isSelectable(node)) {\n return apply(view, new NodeSelection(dir < 0 ? view.state.doc.resolve($head.pos - node.nodeSize) : $head))\n } else if (result.webkit) {\n // Chrome and Safari will introduce extra pointless cursor\n // positions around inline uneditable nodes, so we have to\n // take over and move the cursor past them (#937)\n return apply(view, new TextSelection(view.state.doc.resolve(dir < 0 ? nodePos : nodePos + node.nodeSize)))\n } else {\n return false\n }\n }\n } else if (sel instanceof NodeSelection && sel.node.isInline) {\n return apply(view, new TextSelection(dir > 0 ? sel.$to : sel.$from))\n } else {\n var next$1 = moveSelectionBlock(view.state, dir);\n if (next$1) { return apply(view, next$1) }\n return false\n }\n}\n\nfunction nodeLen(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length\n}\n\nfunction isIgnorable(dom) {\n var desc = dom.pmViewDesc;\n return desc && desc.size == 0 && (dom.nextSibling || dom.nodeName != \"BR\")\n}\n\n// Make sure the cursor isn't directly after one or more ignored\n// nodes, which will confuse the browser's cursor motion logic.\nfunction skipIgnoredNodesLeft(view) {\n var sel = view.root.getSelection();\n var node = sel.focusNode, offset = sel.focusOffset;\n if (!node) { return }\n var moveNode, moveOffset, force = false;\n // Gecko will do odd things when the selection is directly in front\n // of a non-editable node, so in that case, move it into the next\n // node if possible. Issue prosemirror/prosemirror#832.\n if (result.gecko && node.nodeType == 1 && offset < nodeLen(node) && isIgnorable(node.childNodes[offset])) { force = true; }\n for (;;) {\n if (offset > 0) {\n if (node.nodeType != 1) {\n break\n } else {\n var before = node.childNodes[offset - 1];\n if (isIgnorable(before)) {\n moveNode = node;\n moveOffset = --offset;\n } else if (before.nodeType == 3) {\n node = before;\n offset = node.nodeValue.length;\n } else { break }\n }\n } else if (isBlockNode(node)) {\n break\n } else {\n var prev = node.previousSibling;\n while (prev && isIgnorable(prev)) {\n moveNode = node.parentNode;\n moveOffset = domIndex(prev);\n prev = prev.previousSibling;\n }\n if (!prev) {\n node = node.parentNode;\n if (node == view.dom) { break }\n offset = 0;\n } else {\n node = prev;\n offset = nodeLen(node);\n }\n }\n }\n if (force) { setSelFocus(view, sel, node, offset); }\n else if (moveNode) { setSelFocus(view, sel, moveNode, moveOffset); }\n}\n\n// Make sure the cursor isn't directly before one or more ignored\n// nodes.\nfunction skipIgnoredNodesRight(view) {\n var sel = view.root.getSelection();\n var node = sel.focusNode, offset = sel.focusOffset;\n if (!node) { return }\n var len = nodeLen(node);\n var moveNode, moveOffset;\n for (;;) {\n if (offset < len) {\n if (node.nodeType != 1) { break }\n var after = node.childNodes[offset];\n if (isIgnorable(after)) {\n moveNode = node;\n moveOffset = ++offset;\n }\n else { break }\n } else if (isBlockNode(node)) {\n break\n } else {\n var next = node.nextSibling;\n while (next && isIgnorable(next)) {\n moveNode = next.parentNode;\n moveOffset = domIndex(next) + 1;\n next = next.nextSibling;\n }\n if (!next) {\n node = node.parentNode;\n if (node == view.dom) { break }\n offset = len = 0;\n } else {\n node = next;\n offset = 0;\n len = nodeLen(node);\n }\n }\n }\n if (moveNode) { setSelFocus(view, sel, moveNode, moveOffset); }\n}\n\nfunction isBlockNode(dom) {\n var desc = dom.pmViewDesc;\n return desc && desc.node && desc.node.isBlock\n}\n\nfunction setSelFocus(view, sel, node, offset) {\n if (selectionCollapsed(sel)) {\n var range = document.createRange();\n range.setEnd(node, offset);\n range.setStart(node, offset);\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (sel.extend) {\n sel.extend(node, offset);\n }\n view.domObserver.setCurSelection();\n}\n\n// : (EditorState, number)\n// Check whether vertical selection motion would involve node\n// selections. If so, apply it (if not, the result is left to the\n// browser)\nfunction selectVertically(view, dir, mods) {\n var sel = view.state.selection;\n if (sel instanceof TextSelection && !sel.empty || mods.indexOf(\"s\") > -1) { return false }\n if (result.mac && mods.indexOf(\"m\") > -1) { return false }\n var $from = sel.$from;\n var $to = sel.$to;\n\n if (!$from.parent.inlineContent || view.endOfTextblock(dir < 0 ? \"up\" : \"down\")) {\n var next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n { return apply(view, next) }\n }\n if (!$from.parent.inlineContent) {\n var beyond = Selection.findFrom(dir < 0 ? $from : $to, dir);\n return beyond ? apply(view, beyond) : true\n }\n return false\n}\n\nfunction stopNativeHorizontalDelete(view, dir) {\n if (!(view.state.selection instanceof TextSelection)) { return true }\n var ref = view.state.selection;\n var $head = ref.$head;\n var $anchor = ref.$anchor;\n var empty = ref.empty;\n if (!$head.sameParent($anchor)) { return true }\n if (!empty) { return false }\n if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\")) { return true }\n var nextNode = !$head.textOffset && (dir < 0 ? $head.nodeBefore : $head.nodeAfter);\n if (nextNode && !nextNode.isText) {\n var tr = view.state.tr;\n if (dir < 0) { tr.delete($head.pos - nextNode.nodeSize, $head.pos); }\n else { tr.delete($head.pos, $head.pos + nextNode.nodeSize); }\n view.dispatch(tr);\n return true\n }\n return false\n}\n\nfunction switchEditable(view, node, state) {\n view.domObserver.stop();\n node.contentEditable = state;\n view.domObserver.start();\n}\n\n// Issue #867 / https://bugs.chromium.org/p/chromium/issues/detail?id=903821\n// In which Chrome does really wrong things when the down arrow is\n// pressed when the cursor is directly at the start of a textblock and\n// has an uneditable node after it\nfunction chromeDownArrowBug(view) {\n if (!result.chrome || view.state.selection.$head.parentOffset > 0) { return }\n var ref = view.root.getSelection();\n var focusNode = ref.focusNode;\n var focusOffset = ref.focusOffset;\n if (focusNode && focusNode.nodeType == 1 && focusOffset == 0 &&\n focusNode.firstChild && focusNode.firstChild.contentEditable == \"false\") {\n var child = focusNode.firstChild;\n switchEditable(view, child, true);\n setTimeout(function () { return switchEditable(view, child, false); }, 20);\n }\n}\n\n// A backdrop key mapping used to make sure we always suppress keys\n// that have a dangerous default effect, even if the commands they are\n// bound to return false, and to make sure that cursor-motion keys\n// find a cursor (as opposed to a node selection) when pressed. For\n// cursor-motion keys, the code in the handlers also takes care of\n// block selections.\n\nfunction getMods(event) {\n var result = \"\";\n if (event.ctrlKey) { result += \"c\"; }\n if (event.metaKey) { result += \"m\"; }\n if (event.altKey) { result += \"a\"; }\n if (event.shiftKey) { result += \"s\"; }\n return result\n}\n\nfunction captureKeyDown(view, event) {\n var code = event.keyCode, mods = getMods(event);\n if (code == 8 || (result.mac && code == 72 && mods == \"c\")) { // Backspace, Ctrl-h on Mac\n return stopNativeHorizontalDelete(view, -1) || skipIgnoredNodesLeft(view)\n } else if (code == 46 || (result.mac && code == 68 && mods == \"c\")) { // Delete, Ctrl-d on Mac\n return stopNativeHorizontalDelete(view, 1) || skipIgnoredNodesRight(view)\n } else if (code == 13 || code == 27) { // Enter, Esc\n return true\n } else if (code == 37) { // Left arrow\n return selectHorizontally(view, -1, mods) || skipIgnoredNodesLeft(view)\n } else if (code == 39) { // Right arrow\n return selectHorizontally(view, 1, mods) || skipIgnoredNodesRight(view)\n } else if (code == 38) { // Up arrow\n return selectVertically(view, -1, mods) || skipIgnoredNodesLeft(view)\n } else if (code == 40) { // Down arrow\n return chromeDownArrowBug(view) || selectVertically(view, 1, mods) || skipIgnoredNodesRight(view)\n } else if (mods == (result.mac ? \"m\" : \"c\") &&\n (code == 66 || code == 73 || code == 89 || code == 90)) { // Mod-[biyz]\n return true\n }\n return false\n}\n\nfunction selectionFromDOM(view, origin) {\n var domSel = view.root.getSelection(), doc = view.state.doc;\n if (!domSel.focusNode) { return null }\n var nearestDesc = view.docView.nearestDesc(domSel.focusNode), inWidget = nearestDesc && nearestDesc.size == 0;\n var head = view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset);\n if (head < 0) { return null }\n var $head = doc.resolve(head), $anchor, selection;\n if (selectionCollapsed(domSel)) {\n $anchor = $head;\n while (nearestDesc && !nearestDesc.node) { nearestDesc = nearestDesc.parent; }\n if (nearestDesc && nearestDesc.node.isAtom && NodeSelection.isSelectable(nearestDesc.node) && nearestDesc.parent\n && !(nearestDesc.node.isInline && isOnEdge(domSel.focusNode, domSel.focusOffset, nearestDesc.dom))) {\n var pos = nearestDesc.posBefore;\n selection = new NodeSelection(head == pos ? $head : doc.resolve(pos));\n }\n } else {\n var anchor = view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset);\n if (anchor < 0) { return null }\n $anchor = doc.resolve(anchor);\n }\n\n if (!selection) {\n var bias = origin == \"pointer\" || (view.state.selection.head < $head.pos && !inWidget) ? 1 : -1;\n selection = selectionBetween(view, $anchor, $head, bias);\n }\n return selection\n}\n\nfunction selectionToDOM(view, force) {\n var sel = view.state.selection;\n syncNodeSelection(view, sel);\n\n if (view.editable ? !view.hasFocus() :\n !(hasSelection(view) && document.activeElement && document.activeElement.contains(view.dom))) { return }\n\n view.domObserver.disconnectSelection();\n\n if (view.cursorWrapper) {\n selectCursorWrapper(view);\n } else {\n var anchor = sel.anchor;\n var head = sel.head;\n var resetEditableFrom, resetEditableTo;\n if (brokenSelectBetweenUneditable && !(sel instanceof TextSelection)) {\n if (!sel.$from.parent.inlineContent)\n { resetEditableFrom = temporarilyEditableNear(view, sel.from); }\n if (!sel.empty && !sel.$from.parent.inlineContent)\n { resetEditableTo = temporarilyEditableNear(view, sel.to); }\n }\n view.docView.setSelection(anchor, head, view.root, force);\n if (brokenSelectBetweenUneditable) {\n if (resetEditableFrom) { resetEditable(resetEditableFrom); }\n if (resetEditableTo) { resetEditable(resetEditableTo); }\n }\n if (sel.visible) {\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n } else {\n view.dom.classList.add(\"ProseMirror-hideselection\");\n if (\"onselectionchange\" in document) { removeClassOnSelectionChange(view); }\n }\n }\n\n view.domObserver.setCurSelection();\n view.domObserver.connectSelection();\n}\n\n// Kludge to work around Webkit not allowing a selection to start/end\n// between non-editable block nodes. We briefly make something\n// editable, set the selection, then set it uneditable again.\n\nvar brokenSelectBetweenUneditable = result.safari || result.chrome && result.chrome_version < 63;\n\nfunction temporarilyEditableNear(view, pos) {\n var ref = view.docView.domFromPos(pos);\n var node = ref.node;\n var offset = ref.offset;\n var after = offset < node.childNodes.length ? node.childNodes[offset] : null;\n var before = offset ? node.childNodes[offset - 1] : null;\n if (result.safari && after && after.contentEditable == \"false\") { return setEditable(after) }\n if ((!after || after.contentEditable == \"false\") && (!before || before.contentEditable == \"false\")) {\n if (after) { return setEditable(after) }\n else if (before) { return setEditable(before) }\n }\n}\n\nfunction setEditable(element) {\n element.contentEditable = \"true\";\n if (result.safari && element.draggable) { element.draggable = false; element.wasDraggable = true; }\n return element\n}\n\nfunction resetEditable(element) {\n element.contentEditable = \"false\";\n if (element.wasDraggable) { element.draggable = true; element.wasDraggable = null; }\n}\n\nfunction removeClassOnSelectionChange(view) {\n var doc = view.dom.ownerDocument;\n doc.removeEventListener(\"selectionchange\", view.hideSelectionGuard);\n var domSel = view.root.getSelection();\n var node = domSel.anchorNode, offset = domSel.anchorOffset;\n doc.addEventListener(\"selectionchange\", view.hideSelectionGuard = function () {\n if (domSel.anchorNode != node || domSel.anchorOffset != offset) {\n doc.removeEventListener(\"selectionchange\", view.hideSelectionGuard);\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }\n });\n}\n\nfunction selectCursorWrapper(view) {\n var domSel = view.root.getSelection(), range = document.createRange();\n var node = view.cursorWrapper.dom, img = node.nodeName == \"IMG\";\n if (img) { range.setEnd(node.parentNode, domIndex(node) + 1); }\n else { range.setEnd(node, 0); }\n range.collapse(false);\n domSel.removeAllRanges();\n domSel.addRange(range);\n // Kludge to kill 'control selection' in IE11 when selecting an\n // invisible cursor wrapper, since that would result in those weird\n // resize handles and a selection that considers the absolutely\n // positioned wrapper, rather than the root editable node, the\n // focused element.\n if (!img && !view.state.selection.visible && result.ie && result.ie_version <= 11) {\n node.disabled = true;\n node.disabled = false;\n }\n}\n\nfunction syncNodeSelection(view, sel) {\n if (sel instanceof NodeSelection) {\n var desc = view.docView.descAt(sel.from);\n if (desc != view.lastSelectedViewDesc) {\n clearNodeSelection(view);\n if (desc) { desc.selectNode(); }\n view.lastSelectedViewDesc = desc;\n }\n } else {\n clearNodeSelection(view);\n }\n}\n\n// Clear all DOM statefulness of the last node selection.\nfunction clearNodeSelection(view) {\n if (view.lastSelectedViewDesc) {\n if (view.lastSelectedViewDesc.parent)\n { view.lastSelectedViewDesc.deselectNode(); }\n view.lastSelectedViewDesc = null;\n }\n}\n\nfunction selectionBetween(view, $anchor, $head, bias) {\n return view.someProp(\"createSelectionBetween\", function (f) { return f(view, $anchor, $head); })\n || TextSelection.between($anchor, $head, bias)\n}\n\nfunction hasFocusAndSelection(view) {\n if (view.editable && view.root.activeElement != view.dom) { return false }\n return hasSelection(view)\n}\n\nfunction hasSelection(view) {\n var sel = view.root.getSelection();\n if (!sel.anchorNode) { return false }\n try {\n // Firefox will raise 'permission denied' errors when accessing\n // properties of `sel.anchorNode` when it's in a generated CSS\n // element.\n return view.dom.contains(sel.anchorNode.nodeType == 3 ? sel.anchorNode.parentNode : sel.anchorNode) &&\n (view.editable || view.dom.contains(sel.focusNode.nodeType == 3 ? sel.focusNode.parentNode : sel.focusNode))\n } catch(_) {\n return false\n }\n}\n\nfunction anchorInRightPlace(view) {\n var anchorDOM = view.docView.domFromPos(view.state.selection.anchor);\n var domSel = view.root.getSelection();\n return isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset)\n}\n\n// Note that all referencing and parsing is done with the\n// start-of-operation selection and document, since that's the one\n// that the DOM represents. If any changes came in in the meantime,\n// the modification is mapped over those before it is applied, in\n// readDOMChange.\n\nfunction parseBetween(view, from_, to_) {\n var ref = view.docView.parseRange(from_, to_);\n var parent = ref.node;\n var fromOffset = ref.fromOffset;\n var toOffset = ref.toOffset;\n var from = ref.from;\n var to = ref.to;\n\n var domSel = view.root.getSelection(), find = null, anchor = domSel.anchorNode;\n if (anchor && view.dom.contains(anchor.nodeType == 1 ? anchor : anchor.parentNode)) {\n find = [{node: anchor, offset: domSel.anchorOffset}];\n if (!selectionCollapsed(domSel))\n { find.push({node: domSel.focusNode, offset: domSel.focusOffset}); }\n }\n // Work around issue in Chrome where backspacing sometimes replaces\n // the deleted content with a random BR node (issues #799, #831)\n if (result.chrome && view.lastKeyCode === 8) {\n for (var off = toOffset; off > fromOffset; off--) {\n var node = parent.childNodes[off - 1], desc = node.pmViewDesc;\n if (node.nodeType == \"BR\" && !desc) { toOffset = off; break }\n if (!desc || desc.size) { break }\n }\n }\n var startDoc = view.state.doc;\n var parser = view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n var $from = startDoc.resolve(from);\n\n var sel = null, doc = parser.parse(parent, {\n topNode: $from.parent,\n topMatch: $from.parent.contentMatchAt($from.index()),\n topOpen: true,\n from: fromOffset,\n to: toOffset,\n preserveWhitespace: $from.parent.type.spec.code ? \"full\" : true,\n editableContent: true,\n findPositions: find,\n ruleFromNode: ruleFromNode,\n context: $from\n });\n if (find && find[0].pos != null) {\n var anchor$1 = find[0].pos, head = find[1] && find[1].pos;\n if (head == null) { head = anchor$1; }\n sel = {anchor: anchor$1 + from, head: head + from};\n }\n return {doc: doc, sel: sel, from: from, to: to}\n}\n\nfunction ruleFromNode(dom) {\n var desc = dom.pmViewDesc;\n if (desc) {\n return desc.parseRule()\n } else if (dom.nodeName == \"BR\" && dom.parentNode) {\n // Safari replaces the list item or table cell with a BR\n // directly in the list node (?!) if you delete the last\n // character in a list item or table cell (#708, #862)\n if (result.safari && /^(ul|ol)$/i.test(dom.parentNode.nodeName)) {\n var skip = document.createElement(\"div\");\n skip.appendChild(document.createElement(\"li\"));\n return {skip: skip}\n } else if (dom.parentNode.lastChild == dom || result.safari && /^(tr|table)$/i.test(dom.parentNode.nodeName)) {\n return {ignore: true}\n }\n } else if (dom.nodeName == \"IMG\" && dom.getAttribute(\"mark-placeholder\")) {\n return {ignore: true}\n }\n}\n\nfunction readDOMChange(view, from, to, typeOver, addedNodes) {\n if (from < 0) {\n var origin = view.lastSelectionTime > Date.now() - 50 ? view.lastSelectionOrigin : null;\n var newSel = selectionFromDOM(view, origin);\n if (newSel && !view.state.selection.eq(newSel)) {\n var tr$1 = view.state.tr.setSelection(newSel);\n if (origin == \"pointer\") { tr$1.setMeta(\"pointer\", true); }\n else if (origin == \"key\") { tr$1.scrollIntoView(); }\n view.dispatch(tr$1);\n }\n return\n }\n\n var $before = view.state.doc.resolve(from);\n var shared = $before.sharedDepth(to);\n from = $before.before(shared + 1);\n to = view.state.doc.resolve(to).after(shared + 1);\n\n var sel = view.state.selection;\n var parse = parseBetween(view, from, to);\n\n var doc = view.state.doc, compare = doc.slice(parse.from, parse.to);\n var preferredPos, preferredSide;\n // Prefer anchoring to end when Backspace is pressed\n if (view.lastKeyCode === 8 && Date.now() - 100 < view.lastKeyCodeTime) {\n preferredPos = view.state.selection.to;\n preferredSide = \"end\";\n } else {\n preferredPos = view.state.selection.from;\n preferredSide = \"start\";\n }\n view.lastKeyCode = null;\n\n var change = findDiff(compare.content, parse.doc.content, parse.from, preferredPos, preferredSide);\n if (!change) {\n if (typeOver && sel instanceof TextSelection && !sel.empty && sel.$head.sameParent(sel.$anchor) &&\n !view.composing && !(parse.sel && parse.sel.anchor != parse.sel.head)) {\n change = {start: sel.from, endA: sel.to, endB: sel.to};\n } else {\n if (parse.sel) {\n var sel$1 = resolveSelection(view, view.state.doc, parse.sel);\n if (sel$1 && !sel$1.eq(view.state.selection)) { view.dispatch(view.state.tr.setSelection(sel$1)); }\n }\n return\n }\n }\n view.domChangeCount++;\n // Handle the case where overwriting a selection by typing matches\n // the start or end of the selected content, creating a change\n // that's smaller than what was actually overwritten.\n if (view.state.selection.from < view.state.selection.to &&\n change.start == change.endB &&\n view.state.selection instanceof TextSelection) {\n if (change.start > view.state.selection.from && change.start <= view.state.selection.from + 2) {\n change.start = view.state.selection.from;\n } else if (change.endA < view.state.selection.to && change.endA >= view.state.selection.to - 2) {\n change.endB += (view.state.selection.to - change.endA);\n change.endA = view.state.selection.to;\n }\n }\n\n // IE11 will insert a non-breaking space _ahead_ of the space after\n // the cursor space when adding a space before another space. When\n // that happened, adjust the change to cover the space instead.\n if (result.ie && result.ie_version <= 11 && change.endB == change.start + 1 &&\n change.endA == change.start && change.start > parse.from &&\n parse.doc.textBetween(change.start - parse.from - 1, change.start - parse.from + 1) == \" \\u00a0\") {\n change.start--;\n change.endA--;\n change.endB--;\n }\n\n var $from = parse.doc.resolveNoCache(change.start - parse.from);\n var $to = parse.doc.resolveNoCache(change.endB - parse.from);\n var inlineChange = $from.sameParent($to) && $from.parent.inlineContent;\n var nextSel;\n // If this looks like the effect of pressing Enter (or was recorded\n // as being an iOS enter press), just dispatch an Enter key instead.\n if (((result.ios && view.lastIOSEnter > Date.now() - 225 &&\n (!inlineChange || addedNodes.some(function (n) { return n.nodeName == \"DIV\" || n.nodeName == \"P\"; }))) ||\n (!inlineChange && $from.pos < parse.doc.content.size &&\n (nextSel = Selection.findFrom(parse.doc.resolve($from.pos + 1), 1, true)) &&\n nextSel.head == $to.pos)) &&\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); })) {\n view.lastIOSEnter = 0;\n return\n }\n // Same for backspace\n if (view.state.selection.anchor > change.start &&\n looksLikeJoin(doc, change.start, change.endA, $from, $to) &&\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(8, \"Backspace\")); })) {\n if (result.android && result.chrome) { view.domObserver.suppressSelectionUpdates(); } // #820\n return\n }\n\n // This tries to detect Android virtual keyboard\n // enter-and-pick-suggestion action. That sometimes (see issue\n // #1059) first fires a DOM mutation, before moving the selection to\n // the newly created block. And then, because ProseMirror cleans up\n // the DOM selection, it gives up moving the selection entirely,\n // leaving the cursor in the wrong place. When that happens, we drop\n // the new paragraph from the initial change, and fire a simulated\n // enter key afterwards.\n if (result.android && !inlineChange && $from.start() != $to.start() && $to.parentOffset == 0 && $from.depth == $to.depth &&\n parse.sel && parse.sel.anchor == parse.sel.head && parse.sel.head == change.endA) {\n change.endB -= 2;\n $to = parse.doc.resolveNoCache(change.endB - parse.from);\n setTimeout(function () {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n }, 20);\n }\n\n var chFrom = change.start, chTo = change.endA;\n\n var tr, storedMarks, markChange, $from1;\n if (inlineChange) {\n if ($from.pos == $to.pos) { // Deletion\n // IE11 sometimes weirdly moves the DOM selection around after\n // backspacing out the first element in a textblock\n if (result.ie && result.ie_version <= 11 && $from.parentOffset == 0) {\n view.domObserver.suppressSelectionUpdates();\n setTimeout(function () { return selectionToDOM(view); }, 20);\n }\n tr = view.state.tr.delete(chFrom, chTo);\n storedMarks = doc.resolve(change.start).marksAcross(doc.resolve(change.endA));\n } else if ( // Adding or removing a mark\n change.endA == change.endB && ($from1 = doc.resolve(change.start)) &&\n (markChange = isMarkChange($from.parent.content.cut($from.parentOffset, $to.parentOffset),\n $from1.parent.content.cut($from1.parentOffset, change.endA - $from1.start())))\n ) {\n tr = view.state.tr;\n if (markChange.type == \"add\") { tr.addMark(chFrom, chTo, markChange.mark); }\n else { tr.removeMark(chFrom, chTo, markChange.mark); }\n } else if ($from.parent.child($from.index()).isText && $from.index() == $to.index() - ($to.textOffset ? 0 : 1)) {\n // Both positions in the same text node -- simply insert text\n var text = $from.parent.textBetween($from.parentOffset, $to.parentOffset);\n if (view.someProp(\"handleTextInput\", function (f) { return f(view, chFrom, chTo, text); })) { return }\n tr = view.state.tr.insertText(text, chFrom, chTo);\n }\n }\n\n if (!tr)\n { tr = view.state.tr.replace(chFrom, chTo, parse.doc.slice(change.start - parse.from, change.endB - parse.from)); }\n if (parse.sel) {\n var sel$2 = resolveSelection(view, tr.doc, parse.sel);\n // Chrome Android will sometimes, during composition, report the\n // selection in the wrong place. If it looks like that is\n // happening, don't update the selection.\n // Edge just doesn't move the cursor forward when you start typing\n // in an empty block or between br nodes.\n if (sel$2 && !(result.chrome && result.android && view.composing && sel$2.empty &&\n (sel$2.head == chFrom || sel$2.head == tr.mapping.map(chTo) - 1) ||\n result.ie && sel$2.empty && sel$2.head == chFrom))\n { tr.setSelection(sel$2); }\n }\n if (storedMarks) { tr.ensureMarks(storedMarks); }\n view.dispatch(tr.scrollIntoView());\n}\n\nfunction resolveSelection(view, doc, parsedSel) {\n if (Math.max(parsedSel.anchor, parsedSel.head) > doc.content.size) { return null }\n return selectionBetween(view, doc.resolve(parsedSel.anchor), doc.resolve(parsedSel.head))\n}\n\n// : (Fragment, Fragment) → ?{mark: Mark, type: string}\n// Given two same-length, non-empty fragments of inline content,\n// determine whether the first could be created from the second by\n// removing or adding a single mark type.\nfunction isMarkChange(cur, prev) {\n var curMarks = cur.firstChild.marks, prevMarks = prev.firstChild.marks;\n var added = curMarks, removed = prevMarks, type, mark, update;\n for (var i = 0; i < prevMarks.length; i++) { added = prevMarks[i].removeFromSet(added); }\n for (var i$1 = 0; i$1 < curMarks.length; i$1++) { removed = curMarks[i$1].removeFromSet(removed); }\n if (added.length == 1 && removed.length == 0) {\n mark = added[0];\n type = \"add\";\n update = function (node) { return node.mark(mark.addToSet(node.marks)); };\n } else if (added.length == 0 && removed.length == 1) {\n mark = removed[0];\n type = \"remove\";\n update = function (node) { return node.mark(mark.removeFromSet(node.marks)); };\n } else {\n return null\n }\n var updated = [];\n for (var i$2 = 0; i$2 < prev.childCount; i$2++) { updated.push(update(prev.child(i$2))); }\n if (Fragment.from(updated).eq(cur)) { return {mark: mark, type: type} }\n}\n\nfunction looksLikeJoin(old, start, end, $newStart, $newEnd) {\n if (!$newStart.parent.isTextblock ||\n // The content must have shrunk\n end - start <= $newEnd.pos - $newStart.pos ||\n // newEnd must point directly at or after the end of the block that newStart points into\n skipClosingAndOpening($newStart, true, false) < $newEnd.pos)\n { return false }\n\n var $start = old.resolve(start);\n // Start must be at the end of a block\n if ($start.parentOffset < $start.parent.content.size || !$start.parent.isTextblock)\n { return false }\n var $next = old.resolve(skipClosingAndOpening($start, true, true));\n // The next textblock must start before end and end near it\n if (!$next.parent.isTextblock || $next.pos > end ||\n skipClosingAndOpening($next, true, false) < end)\n { return false }\n\n // The fragments after the join point must match\n return $newStart.parent.content.cut($newStart.parentOffset).eq($next.parent.content)\n}\n\nfunction skipClosingAndOpening($pos, fromEnd, mayOpen) {\n var depth = $pos.depth, end = fromEnd ? $pos.end() : $pos.pos;\n while (depth > 0 && (fromEnd || $pos.indexAfter(depth) == $pos.node(depth).childCount)) {\n depth--;\n end++;\n fromEnd = false;\n }\n if (mayOpen) {\n var next = $pos.node(depth).maybeChild($pos.indexAfter(depth));\n while (next && !next.isLeaf) {\n next = next.firstChild;\n end++;\n }\n }\n return end\n}\n\nfunction findDiff(a, b, pos, preferredPos, preferredSide) {\n var start = a.findDiffStart(b, pos);\n if (start == null) { return null }\n var ref = a.findDiffEnd(b, pos + a.size, pos + b.size);\n var endA = ref.a;\n var endB = ref.b;\n if (preferredSide == \"end\") {\n var adjust = Math.max(0, start - Math.min(endA, endB));\n preferredPos -= endA + adjust - start;\n }\n if (endA < start && a.size < b.size) {\n var move = preferredPos <= start && preferredPos >= endA ? start - preferredPos : 0;\n start -= move;\n endB = start + (endB - endA);\n endA = start;\n } else if (endB < start) {\n var move$1 = preferredPos <= start && preferredPos >= endB ? start - preferredPos : 0;\n start -= move$1;\n endA = start + (endA - endB);\n endB = start;\n }\n return {start: start, endA: endA, endB: endB}\n}\n\nfunction serializeForClipboard(view, slice) {\n var context = [];\n var content = slice.content;\n var openStart = slice.openStart;\n var openEnd = slice.openEnd;\n while (openStart > 1 && openEnd > 1 && content.childCount == 1 && content.firstChild.childCount == 1) {\n openStart--;\n openEnd--;\n var node = content.firstChild;\n context.push(node.type.name, node.type.hasRequiredAttrs() ? node.attrs : null);\n content = node.content;\n }\n\n var serializer = view.someProp(\"clipboardSerializer\") || DOMSerializer.fromSchema(view.state.schema);\n var doc = detachedDoc(), wrap = doc.createElement(\"div\");\n wrap.appendChild(serializer.serializeFragment(content, {document: doc}));\n\n var firstChild = wrap.firstChild, needsWrap;\n while (firstChild && firstChild.nodeType == 1 && (needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])) {\n for (var i = needsWrap.length - 1; i >= 0; i--) {\n var wrapper = doc.createElement(needsWrap[i]);\n while (wrap.firstChild) { wrapper.appendChild(wrap.firstChild); }\n wrap.appendChild(wrapper);\n }\n firstChild = wrap.firstChild;\n }\n\n if (firstChild && firstChild.nodeType == 1)\n { firstChild.setAttribute(\"data-pm-slice\", (openStart + \" \" + openEnd + \" \" + (JSON.stringify(context)))); }\n\n var text = view.someProp(\"clipboardTextSerializer\", function (f) { return f(slice); }) ||\n slice.content.textBetween(0, slice.content.size, \"\\n\\n\");\n\n return {dom: wrap, text: text}\n}\n\n// : (EditorView, string, string, ?bool, ResolvedPos) → ?Slice\n// Read a slice of content from the clipboard (or drop data).\nfunction parseFromClipboard(view, text, html, plainText, $context) {\n var dom, inCode = $context.parent.type.spec.code, slice;\n if (!html && !text) { return null }\n var asText = text && (plainText || inCode || !html);\n if (asText) {\n view.someProp(\"transformPastedText\", function (f) { text = f(text, inCode || plainText); });\n if (inCode) { return new Slice(Fragment.from(view.state.schema.text(text)), 0, 0) }\n var parsed = view.someProp(\"clipboardTextParser\", function (f) { return f(text, $context, plainText); });\n if (parsed) {\n slice = parsed;\n } else {\n dom = document.createElement(\"div\");\n text.trim().split(/(?:\\r\\n?|\\n)+/).forEach(function (block) {\n dom.appendChild(document.createElement(\"p\")).textContent = block;\n });\n }\n } else {\n view.someProp(\"transformPastedHTML\", function (f) { html = f(html); });\n dom = readHTML(html);\n }\n\n var contextNode = dom && dom.querySelector(\"[data-pm-slice]\");\n var sliceData = contextNode && /^(\\d+) (\\d+) (.*)/.exec(contextNode.getAttribute(\"data-pm-slice\"));\n if (!slice) {\n var parser = view.someProp(\"clipboardParser\") || view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n slice = parser.parseSlice(dom, {preserveWhitespace: !!(asText || sliceData), context: $context});\n }\n if (sliceData)\n { slice = addContext(closeSlice(slice, +sliceData[1], +sliceData[2]), sliceData[3]); }\n else // HTML wasn't created by ProseMirror. Make sure top-level siblings are coherent\n { slice = Slice.maxOpen(normalizeSiblings(slice.content, $context), false); }\n\n view.someProp(\"transformPasted\", function (f) { slice = f(slice); });\n return slice\n}\n\n// Takes a slice parsed with parseSlice, which means there hasn't been\n// any content-expression checking done on the top nodes, tries to\n// find a parent node in the current context that might fit the nodes,\n// and if successful, rebuilds the slice so that it fits into that parent.\n//\n// This addresses the problem that Transform.replace expects a\n// coherent slice, and will fail to place a set of siblings that don't\n// fit anywhere in the schema.\nfunction normalizeSiblings(fragment, $context) {\n if (fragment.childCount < 2) { return fragment }\n var loop = function ( d ) {\n var parent = $context.node(d);\n var match = parent.contentMatchAt($context.index(d));\n var lastWrap = (void 0), result = [];\n fragment.forEach(function (node) {\n if (!result) { return }\n var wrap = match.findWrapping(node.type), inLast;\n if (!wrap) { return result = null }\n if (inLast = result.length && lastWrap.length && addToSibling(wrap, lastWrap, node, result[result.length - 1], 0)) {\n result[result.length - 1] = inLast;\n } else {\n if (result.length) { result[result.length - 1] = closeRight(result[result.length - 1], lastWrap.length); }\n var wrapped = withWrappers(node, wrap);\n result.push(wrapped);\n match = match.matchType(wrapped.type, wrapped.attrs);\n lastWrap = wrap;\n }\n });\n if (result) { return { v: Fragment.from(result) } }\n };\n\n for (var d = $context.depth; d >= 0; d--) {\n var returned = loop( d );\n\n if ( returned ) return returned.v;\n }\n return fragment\n}\n\nfunction withWrappers(node, wrap, from) {\n if ( from === void 0 ) from = 0;\n\n for (var i = wrap.length - 1; i >= from; i--)\n { node = wrap[i].create(null, Fragment.from(node)); }\n return node\n}\n\n// Used to group adjacent nodes wrapped in similar parents by\n// normalizeSiblings into the same parent node\nfunction addToSibling(wrap, lastWrap, node, sibling, depth) {\n if (depth < wrap.length && depth < lastWrap.length && wrap[depth] == lastWrap[depth]) {\n var inner = addToSibling(wrap, lastWrap, node, sibling.lastChild, depth + 1);\n if (inner) { return sibling.copy(sibling.content.replaceChild(sibling.childCount - 1, inner)) }\n var match = sibling.contentMatchAt(sibling.childCount);\n if (match.matchType(depth == wrap.length - 1 ? node.type : wrap[depth + 1]))\n { return sibling.copy(sibling.content.append(Fragment.from(withWrappers(node, wrap, depth + 1)))) }\n }\n}\n\nfunction closeRight(node, depth) {\n if (depth == 0) { return node }\n var fragment = node.content.replaceChild(node.childCount - 1, closeRight(node.lastChild, depth - 1));\n var fill = node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true);\n return node.copy(fragment.append(fill))\n}\n\nfunction closeRange(fragment, side, from, to, depth, openEnd) {\n var node = side < 0 ? fragment.firstChild : fragment.lastChild, inner = node.content;\n if (depth < to - 1) { inner = closeRange(inner, side, from, to, depth + 1, openEnd); }\n if (depth >= from)\n { inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, fragment.childCount > 1 || openEnd <= depth).append(inner)\n : inner.append(node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true)); }\n return fragment.replaceChild(side < 0 ? 0 : fragment.childCount - 1, node.copy(inner))\n}\n\nfunction closeSlice(slice, openStart, openEnd) {\n if (openStart < slice.openStart)\n { slice = new Slice(closeRange(slice.content, -1, openStart, slice.openStart, 0, slice.openEnd), openStart, slice.openEnd); }\n if (openEnd < slice.openEnd)\n { slice = new Slice(closeRange(slice.content, 1, openEnd, slice.openEnd, 0, 0), slice.openStart, openEnd); }\n return slice\n}\n\n// Trick from jQuery -- some elements must be wrapped in other\n// elements for innerHTML to work. I.e. if you do `div.innerHTML =\n// \"
    \"` the table cells are ignored.\nvar wrapMap = {\n thead: [\"table\"],\n tbody: [\"table\"],\n tfoot: [\"table\"],\n caption: [\"table\"],\n colgroup: [\"table\"],\n col: [\"table\", \"colgroup\"],\n tr: [\"table\", \"tbody\"],\n td: [\"table\", \"tbody\", \"tr\"],\n th: [\"table\", \"tbody\", \"tr\"]\n};\n\nvar _detachedDoc = null;\nfunction detachedDoc() {\n return _detachedDoc || (_detachedDoc = document.implementation.createHTMLDocument(\"title\"))\n}\n\nfunction readHTML(html) {\n var metas = /(\\s*]*>)*/.exec(html);\n if (metas) { html = html.slice(metas[0].length); }\n var elt = detachedDoc().createElement(\"div\");\n var firstTag = /(?:]*>)*<([a-z][^>\\s]+)/i.exec(html), wrap, depth = 0;\n if (wrap = firstTag && wrapMap[firstTag[1].toLowerCase()]) {\n html = wrap.map(function (n) { return \"<\" + n + \">\"; }).join(\"\") + html + wrap.map(function (n) { return \"\"; }).reverse().join(\"\");\n depth = wrap.length;\n }\n elt.innerHTML = html;\n for (var i = 0; i < depth; i++) { elt = elt.firstChild; }\n return elt\n}\n\nfunction addContext(slice, context) {\n if (!slice.size) { return slice }\n var schema = slice.content.firstChild.type.schema, array;\n try { array = JSON.parse(context); }\n catch(e) { return slice }\n var content = slice.content;\n var openStart = slice.openStart;\n var openEnd = slice.openEnd;\n for (var i = array.length - 2; i >= 0; i -= 2) {\n var type = schema.nodes[array[i]];\n if (!type || type.hasRequiredAttrs()) { break }\n content = Fragment.from(type.create(array[i + 1], content));\n openStart++; openEnd++;\n }\n return new Slice(content, openStart, openEnd)\n}\n\nvar observeOptions = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n attributes: true,\n attributeOldValue: true,\n subtree: true\n};\n// IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\nvar useCharData = result.ie && result.ie_version <= 11;\n\nvar SelectionState = function SelectionState() {\n this.anchorNode = this.anchorOffset = this.focusNode = this.focusOffset = null;\n};\n\nSelectionState.prototype.set = function set (sel) {\n this.anchorNode = sel.anchorNode; this.anchorOffset = sel.anchorOffset;\n this.focusNode = sel.focusNode; this.focusOffset = sel.focusOffset;\n};\n\nSelectionState.prototype.eq = function eq (sel) {\n return sel.anchorNode == this.anchorNode && sel.anchorOffset == this.anchorOffset &&\n sel.focusNode == this.focusNode && sel.focusOffset == this.focusOffset\n};\n\nvar DOMObserver = function DOMObserver(view, handleDOMChange) {\n var this$1 = this;\n\n this.view = view;\n this.handleDOMChange = handleDOMChange;\n this.queue = [];\n this.flushingSoon = -1;\n this.observer = window.MutationObserver &&\n new window.MutationObserver(function (mutations) {\n for (var i = 0; i < mutations.length; i++) { this$1.queue.push(mutations[i]); }\n // IE11 will sometimes (on backspacing out a single character\n // text node after a BR node) call the observer callback\n // before actually updating the DOM, which will cause\n // ProseMirror to miss the change (see #930)\n if (result.ie && result.ie_version <= 11 && mutations.some(\n function (m) { return m.type == \"childList\" && m.removedNodes.length ||\n m.type == \"characterData\" && m.oldValue.length > m.target.nodeValue.length; }))\n { this$1.flushSoon(); }\n else\n { this$1.flush(); }\n });\n this.currentSelection = new SelectionState;\n if (useCharData) {\n this.onCharData = function (e) {\n this$1.queue.push({target: e.target, type: \"characterData\", oldValue: e.prevValue});\n this$1.flushSoon();\n };\n }\n this.onSelectionChange = this.onSelectionChange.bind(this);\n this.suppressingSelectionUpdates = false;\n};\n\nDOMObserver.prototype.flushSoon = function flushSoon () {\n var this$1 = this;\n\n if (this.flushingSoon < 0)\n { this.flushingSoon = window.setTimeout(function () { this$1.flushingSoon = -1; this$1.flush(); }, 20); }\n};\n\nDOMObserver.prototype.forceFlush = function forceFlush () {\n if (this.flushingSoon > -1) {\n window.clearTimeout(this.flushingSoon);\n this.flushingSoon = -1;\n this.flush();\n }\n};\n\nDOMObserver.prototype.start = function start () {\n if (this.observer)\n { this.observer.observe(this.view.dom, observeOptions); }\n if (useCharData)\n { this.view.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData); }\n this.connectSelection();\n};\n\nDOMObserver.prototype.stop = function stop () {\n var this$1 = this;\n\n if (this.observer) {\n var take = this.observer.takeRecords();\n if (take.length) {\n for (var i = 0; i < take.length; i++) { this.queue.push(take[i]); }\n window.setTimeout(function () { return this$1.flush(); }, 20);\n }\n this.observer.disconnect();\n }\n if (useCharData) { this.view.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData); }\n this.disconnectSelection();\n};\n\nDOMObserver.prototype.connectSelection = function connectSelection () {\n this.view.dom.ownerDocument.addEventListener(\"selectionchange\", this.onSelectionChange);\n};\n\nDOMObserver.prototype.disconnectSelection = function disconnectSelection () {\n this.view.dom.ownerDocument.removeEventListener(\"selectionchange\", this.onSelectionChange);\n};\n\nDOMObserver.prototype.suppressSelectionUpdates = function suppressSelectionUpdates () {\n var this$1 = this;\n\n this.suppressingSelectionUpdates = true;\n setTimeout(function () { return this$1.suppressingSelectionUpdates = false; }, 50);\n};\n\nDOMObserver.prototype.onSelectionChange = function onSelectionChange () {\n if (!hasFocusAndSelection(this.view)) { return }\n if (this.suppressingSelectionUpdates) { return selectionToDOM(this.view) }\n // Deletions on IE11 fire their events in the wrong order, giving\n // us a selection change event before the DOM changes are\n // reported.\n if (result.ie && result.ie_version <= 11 && !this.view.state.selection.empty) {\n var sel = this.view.root.getSelection();\n // Selection.isCollapsed isn't reliable on IE\n if (sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset))\n { return this.flushSoon() }\n }\n this.flush();\n};\n\nDOMObserver.prototype.setCurSelection = function setCurSelection () {\n this.currentSelection.set(this.view.root.getSelection());\n};\n\nDOMObserver.prototype.ignoreSelectionChange = function ignoreSelectionChange (sel) {\n if (sel.rangeCount == 0) { return true }\n var container = sel.getRangeAt(0).commonAncestorContainer;\n var desc = this.view.docView.nearestDesc(container);\n if (desc && desc.ignoreMutation({type: \"selection\", target: container.nodeType == 3 ? container.parentNode : container})) {\n this.setCurSelection();\n return true\n }\n};\n\nDOMObserver.prototype.flush = function flush () {\n if (!this.view.docView || this.flushingSoon > -1) { return }\n var mutations = this.observer ? this.observer.takeRecords() : [];\n if (this.queue.length) {\n mutations = this.queue.concat(mutations);\n this.queue.length = 0;\n }\n\n var sel = this.view.root.getSelection();\n var newSel = !this.suppressingSelectionUpdates && !this.currentSelection.eq(sel) && hasSelection(this.view) && !this.ignoreSelectionChange(sel);\n\n var from = -1, to = -1, typeOver = false, added = [];\n if (this.view.editable) {\n for (var i = 0; i < mutations.length; i++) {\n var result$1 = this.registerMutation(mutations[i], added);\n if (result$1) {\n from = from < 0 ? result$1.from : Math.min(result$1.from, from);\n to = to < 0 ? result$1.to : Math.max(result$1.to, to);\n if (result$1.typeOver) { typeOver = true; }\n }\n }\n }\n\n if (result.gecko && added.length > 1) {\n var brs = added.filter(function (n) { return n.nodeName == \"BR\"; });\n if (brs.length == 2) {\n var a = brs[0];\n var b = brs[1];\n if (a.parentNode && a.parentNode.parentNode == b.parentNode) { b.remove(); }\n else { a.remove(); }\n }\n }\n\n if (from > -1 || newSel) {\n if (from > -1) {\n this.view.docView.markDirty(from, to);\n checkCSS(this.view);\n }\n this.handleDOMChange(from, to, typeOver, added);\n if (this.view.docView.dirty) { this.view.updateState(this.view.state); }\n else if (!this.currentSelection.eq(sel)) { selectionToDOM(this.view); }\n }\n};\n\nDOMObserver.prototype.registerMutation = function registerMutation (mut, added) {\n // Ignore mutations inside nodes that were already noted as inserted\n if (added.indexOf(mut.target) > -1) { return null }\n var desc = this.view.docView.nearestDesc(mut.target);\n if (mut.type == \"attributes\" &&\n (desc == this.view.docView || mut.attributeName == \"contenteditable\" ||\n // Firefox sometimes fires spurious events for null/empty styles\n (mut.attributeName == \"style\" && !mut.oldValue && !mut.target.getAttribute(\"style\"))))\n { return null }\n if (!desc || desc.ignoreMutation(mut)) { return null }\n\n if (mut.type == \"childList\") {\n var prev = mut.previousSibling, next = mut.nextSibling;\n if (result.ie && result.ie_version <= 11 && mut.addedNodes.length) {\n // IE11 gives us incorrect next/prev siblings for some\n // insertions, so if there are added nodes, recompute those\n for (var i = 0; i < mut.addedNodes.length; i++) {\n var ref = mut.addedNodes[i];\n var previousSibling = ref.previousSibling;\n var nextSibling = ref.nextSibling;\n if (!previousSibling || Array.prototype.indexOf.call(mut.addedNodes, previousSibling) < 0) { prev = previousSibling; }\n if (!nextSibling || Array.prototype.indexOf.call(mut.addedNodes, nextSibling) < 0) { next = nextSibling; }\n }\n }\n var fromOffset = prev && prev.parentNode == mut.target\n ? domIndex(prev) + 1 : 0;\n var from = desc.localPosFromDOM(mut.target, fromOffset, -1);\n var toOffset = next && next.parentNode == mut.target\n ? domIndex(next) : mut.target.childNodes.length;\n for (var i$1 = 0; i$1 < mut.addedNodes.length; i$1++) { added.push(mut.addedNodes[i$1]); }\n var to = desc.localPosFromDOM(mut.target, toOffset, 1);\n return {from: from, to: to}\n } else if (mut.type == \"attributes\") {\n return {from: desc.posAtStart - desc.border, to: desc.posAtEnd + desc.border}\n } else { // \"characterData\"\n return {\n from: desc.posAtStart,\n to: desc.posAtEnd,\n // An event was generated for a text change that didn't change\n // any text. Mark the dom change to fall back to assuming the\n // selection was typed over with an identical value if it can't\n // find another change.\n typeOver: mut.target.nodeValue == mut.oldValue\n }\n }\n};\n\nvar cssChecked = false;\n\nfunction checkCSS(view) {\n if (cssChecked) { return }\n cssChecked = true;\n if (getComputedStyle(view.dom).whiteSpace == \"normal\")\n { console[\"warn\"](\"ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.\"); }\n}\n\n// A collection of DOM events that occur within the editor, and callback functions\n// to invoke when the event fires.\nvar handlers = {}, editHandlers = {};\n\nfunction initInput(view) {\n view.shiftKey = false;\n view.mouseDown = null;\n view.lastKeyCode = null;\n view.lastKeyCodeTime = 0;\n view.lastClick = {time: 0, x: 0, y: 0, type: \"\"};\n view.lastSelectionOrigin = null;\n view.lastSelectionTime = 0;\n\n view.lastIOSEnter = 0;\n view.lastIOSEnterFallbackTimeout = null;\n\n view.composing = false;\n view.composingTimeout = null;\n view.compositionNodes = [];\n view.compositionEndedAt = -2e8;\n\n view.domObserver = new DOMObserver(view, function (from, to, typeOver, added) { return readDOMChange(view, from, to, typeOver, added); });\n view.domObserver.start();\n // Used by hacks like the beforeinput handler to check whether anything happened in the DOM\n view.domChangeCount = 0;\n\n view.eventHandlers = Object.create(null);\n var loop = function ( event ) {\n var handler = handlers[event];\n view.dom.addEventListener(event, view.eventHandlers[event] = function (event) {\n if (eventBelongsToView(view, event) && !runCustomHandler(view, event) &&\n (view.editable || !(event.type in editHandlers)))\n { handler(view, event); }\n });\n };\n\n for (var event in handlers) loop( event );\n // On Safari, for reasons beyond my understanding, adding an input\n // event handler makes an issue where the composition vanishes when\n // you press enter go away.\n if (result.safari) { view.dom.addEventListener(\"input\", function () { return null; }); }\n\n ensureListeners(view);\n}\n\nfunction setSelectionOrigin(view, origin) {\n view.lastSelectionOrigin = origin;\n view.lastSelectionTime = Date.now();\n}\n\nfunction destroyInput(view) {\n view.domObserver.stop();\n for (var type in view.eventHandlers)\n { view.dom.removeEventListener(type, view.eventHandlers[type]); }\n clearTimeout(view.composingTimeout);\n clearTimeout(view.lastIOSEnterFallbackTimeout);\n}\n\nfunction ensureListeners(view) {\n view.someProp(\"handleDOMEvents\", function (currentHandlers) {\n for (var type in currentHandlers) { if (!view.eventHandlers[type])\n { view.dom.addEventListener(type, view.eventHandlers[type] = function (event) { return runCustomHandler(view, event); }); } }\n });\n}\n\nfunction runCustomHandler(view, event) {\n return view.someProp(\"handleDOMEvents\", function (handlers) {\n var handler = handlers[event.type];\n return handler ? handler(view, event) || event.defaultPrevented : false\n })\n}\n\nfunction eventBelongsToView(view, event) {\n if (!event.bubbles) { return true }\n if (event.defaultPrevented) { return false }\n for (var node = event.target; node != view.dom; node = node.parentNode)\n { if (!node || node.nodeType == 11 ||\n (node.pmViewDesc && node.pmViewDesc.stopEvent(event)))\n { return false } }\n return true\n}\n\nfunction dispatchEvent(view, event) {\n if (!runCustomHandler(view, event) && handlers[event.type] &&\n (view.editable || !(event.type in editHandlers)))\n { handlers[event.type](view, event); }\n}\n\neditHandlers.keydown = function (view, event) {\n view.shiftKey = event.keyCode == 16 || event.shiftKey;\n if (inOrNearComposition(view, event)) { return }\n view.domObserver.forceFlush();\n view.lastKeyCode = event.keyCode;\n view.lastKeyCodeTime = Date.now();\n // On iOS, if we preventDefault enter key presses, the virtual\n // keyboard gets confused. So the hack here is to set a flag that\n // makes the DOM change code recognize that what just happens should\n // be replaced by whatever the Enter key handlers do.\n if (result.ios && event.keyCode == 13 && !event.ctrlKey && !event.altKey && !event.metaKey) {\n var now = Date.now();\n view.lastIOSEnter = now;\n view.lastIOSEnterFallbackTimeout = setTimeout(function () {\n if (view.lastIOSEnter == now) {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n view.lastIOSEnter = 0;\n }\n }, 200);\n } else if (view.someProp(\"handleKeyDown\", function (f) { return f(view, event); }) || captureKeyDown(view, event)) {\n event.preventDefault();\n } else {\n setSelectionOrigin(view, \"key\");\n }\n};\n\neditHandlers.keyup = function (view, e) {\n if (e.keyCode == 16) { view.shiftKey = false; }\n};\n\neditHandlers.keypress = function (view, event) {\n if (inOrNearComposition(view, event) || !event.charCode ||\n event.ctrlKey && !event.altKey || result.mac && event.metaKey) { return }\n\n if (view.someProp(\"handleKeyPress\", function (f) { return f(view, event); })) {\n event.preventDefault();\n return\n }\n\n var sel = view.state.selection;\n if (!(sel instanceof TextSelection) || !sel.$from.sameParent(sel.$to)) {\n var text = String.fromCharCode(event.charCode);\n if (!view.someProp(\"handleTextInput\", function (f) { return f(view, sel.$from.pos, sel.$to.pos, text); }))\n { view.dispatch(view.state.tr.insertText(text).scrollIntoView()); }\n event.preventDefault();\n }\n};\n\nfunction eventCoords(event) { return {left: event.clientX, top: event.clientY} }\n\nfunction isNear(event, click) {\n var dx = click.x - event.clientX, dy = click.y - event.clientY;\n return dx * dx + dy * dy < 100\n}\n\nfunction runHandlerOnContext(view, propName, pos, inside, event) {\n if (inside == -1) { return false }\n var $pos = view.state.doc.resolve(inside);\n var loop = function ( i ) {\n if (view.someProp(propName, function (f) { return i > $pos.depth ? f(view, pos, $pos.nodeAfter, $pos.before(i), event, true)\n : f(view, pos, $pos.node(i), $pos.before(i), event, false); }))\n { return { v: true } }\n };\n\n for (var i = $pos.depth + 1; i > 0; i--) {\n var returned = loop( i );\n\n if ( returned ) return returned.v;\n }\n return false\n}\n\nfunction updateSelection(view, selection, origin) {\n if (!view.focused) { view.focus(); }\n var tr = view.state.tr.setSelection(selection);\n if (origin == \"pointer\") { tr.setMeta(\"pointer\", true); }\n view.dispatch(tr);\n}\n\nfunction selectClickedLeaf(view, inside) {\n if (inside == -1) { return false }\n var $pos = view.state.doc.resolve(inside), node = $pos.nodeAfter;\n if (node && node.isAtom && NodeSelection.isSelectable(node)) {\n updateSelection(view, new NodeSelection($pos), \"pointer\");\n return true\n }\n return false\n}\n\nfunction selectClickedNode(view, inside) {\n if (inside == -1) { return false }\n var sel = view.state.selection, selectedNode, selectAt;\n if (sel instanceof NodeSelection) { selectedNode = sel.node; }\n\n var $pos = view.state.doc.resolve(inside);\n for (var i = $pos.depth + 1; i > 0; i--) {\n var node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n if (NodeSelection.isSelectable(node)) {\n if (selectedNode && sel.$from.depth > 0 &&\n i >= sel.$from.depth && $pos.before(sel.$from.depth + 1) == sel.$from.pos)\n { selectAt = $pos.before(sel.$from.depth); }\n else\n { selectAt = $pos.before(i); }\n break\n }\n }\n\n if (selectAt != null) {\n updateSelection(view, NodeSelection.create(view.state.doc, selectAt), \"pointer\");\n return true\n } else {\n return false\n }\n}\n\nfunction handleSingleClick(view, pos, inside, event, selectNode) {\n return runHandlerOnContext(view, \"handleClickOn\", pos, inside, event) ||\n view.someProp(\"handleClick\", function (f) { return f(view, pos, event); }) ||\n (selectNode ? selectClickedNode(view, inside) : selectClickedLeaf(view, inside))\n}\n\nfunction handleDoubleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleDoubleClickOn\", pos, inside, event) ||\n view.someProp(\"handleDoubleClick\", function (f) { return f(view, pos, event); })\n}\n\nfunction handleTripleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleTripleClickOn\", pos, inside, event) ||\n view.someProp(\"handleTripleClick\", function (f) { return f(view, pos, event); }) ||\n defaultTripleClick(view, inside)\n}\n\nfunction defaultTripleClick(view, inside) {\n var doc = view.state.doc;\n if (inside == -1) {\n if (doc.inlineContent) {\n updateSelection(view, TextSelection.create(doc, 0, doc.content.size), \"pointer\");\n return true\n }\n return false\n }\n\n var $pos = doc.resolve(inside);\n for (var i = $pos.depth + 1; i > 0; i--) {\n var node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n var nodePos = $pos.before(i);\n if (node.inlineContent)\n { updateSelection(view, TextSelection.create(doc, nodePos + 1, nodePos + 1 + node.content.size), \"pointer\"); }\n else if (NodeSelection.isSelectable(node))\n { updateSelection(view, NodeSelection.create(doc, nodePos), \"pointer\"); }\n else\n { continue }\n return true\n }\n}\n\nfunction forceDOMFlush(view) {\n return endComposition(view)\n}\n\nvar selectNodeModifier = result.mac ? \"metaKey\" : \"ctrlKey\";\n\nhandlers.mousedown = function (view, event) {\n view.shiftKey = event.shiftKey;\n var flushed = forceDOMFlush(view);\n var now = Date.now(), type = \"singleClick\";\n if (now - view.lastClick.time < 500 && isNear(event, view.lastClick) && !event[selectNodeModifier]) {\n if (view.lastClick.type == \"singleClick\") { type = \"doubleClick\"; }\n else if (view.lastClick.type == \"doubleClick\") { type = \"tripleClick\"; }\n }\n view.lastClick = {time: now, x: event.clientX, y: event.clientY, type: type};\n\n var pos = view.posAtCoords(eventCoords(event));\n if (!pos) { return }\n\n if (type == \"singleClick\")\n { view.mouseDown = new MouseDown(view, pos, event, flushed); }\n else if ((type == \"doubleClick\" ? handleDoubleClick : handleTripleClick)(view, pos.pos, pos.inside, event))\n { event.preventDefault(); }\n else\n { setSelectionOrigin(view, \"pointer\"); }\n};\n\nvar MouseDown = function MouseDown(view, pos, event, flushed) {\n var this$1 = this;\n\n this.view = view;\n this.startDoc = view.state.doc;\n this.pos = pos;\n this.event = event;\n this.flushed = flushed;\n this.selectNode = event[selectNodeModifier];\n this.allowDefault = event.shiftKey;\n\n var targetNode, targetPos;\n if (pos.inside > -1) {\n targetNode = view.state.doc.nodeAt(pos.inside);\n targetPos = pos.inside;\n } else {\n var $pos = view.state.doc.resolve(pos.pos);\n targetNode = $pos.parent;\n targetPos = $pos.depth ? $pos.before() : 0;\n }\n\n this.mightDrag = null;\n\n var target = flushed ? null : event.target;\n var targetDesc = target ? view.docView.nearestDesc(target, true) : null;\n this.target = targetDesc ? targetDesc.dom : null;\n\n if (targetNode.type.spec.draggable && targetNode.type.spec.selectable !== false ||\n view.state.selection instanceof NodeSelection && targetPos == view.state.selection.from)\n { this.mightDrag = {node: targetNode,\n pos: targetPos,\n addAttr: this.target && !this.target.draggable,\n setUneditable: this.target && result.gecko && !this.target.hasAttribute(\"contentEditable\")}; }\n\n if (this.target && this.mightDrag && (this.mightDrag.addAttr || this.mightDrag.setUneditable)) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr) { this.target.draggable = true; }\n if (this.mightDrag.setUneditable)\n { setTimeout(function () { return this$1.target.setAttribute(\"contentEditable\", \"false\"); }, 20); }\n this.view.domObserver.start();\n }\n\n view.root.addEventListener(\"mouseup\", this.up = this.up.bind(this));\n view.root.addEventListener(\"mousemove\", this.move = this.move.bind(this));\n setSelectionOrigin(view, \"pointer\");\n};\n\nMouseDown.prototype.done = function done () {\n this.view.root.removeEventListener(\"mouseup\", this.up);\n this.view.root.removeEventListener(\"mousemove\", this.move);\n if (this.mightDrag && this.target) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr) { this.target.removeAttribute(\"draggable\"); }\n if (this.mightDrag.setUneditable) { this.target.removeAttribute(\"contentEditable\"); }\n this.view.domObserver.start();\n }\n this.view.mouseDown = null;\n};\n\nMouseDown.prototype.up = function up (event) {\n this.done();\n\n if (!this.view.dom.contains(event.target.nodeType == 3 ? event.target.parentNode : event.target))\n { return }\n\n var pos = this.pos;\n if (this.view.state.doc != this.startDoc) { pos = this.view.posAtCoords(eventCoords(event)); }\n\n if (this.allowDefault || !pos) {\n setSelectionOrigin(this.view, \"pointer\");\n } else if (handleSingleClick(this.view, pos.pos, pos.inside, event, this.selectNode)) {\n event.preventDefault();\n } else if (this.flushed ||\n // Safari ignores clicks on draggable elements\n (result.safari && this.mightDrag && !this.mightDrag.node.isAtom) ||\n // Chrome will sometimes treat a node selection as a\n // cursor, but still report that the node is selected\n // when asked through getSelection. You'll then get a\n // situation where clicking at the point where that\n // (hidden) cursor is doesn't change the selection, and\n // thus doesn't get a reaction from ProseMirror. This\n // works around that.\n (result.chrome && !(this.view.state.selection instanceof TextSelection) &&\n (pos.pos == this.view.state.selection.from || pos.pos == this.view.state.selection.to))) {\n updateSelection(this.view, Selection.near(this.view.state.doc.resolve(pos.pos)), \"pointer\");\n event.preventDefault();\n } else {\n setSelectionOrigin(this.view, \"pointer\");\n }\n};\n\nMouseDown.prototype.move = function move (event) {\n if (!this.allowDefault && (Math.abs(this.event.x - event.clientX) > 4 ||\n Math.abs(this.event.y - event.clientY) > 4))\n { this.allowDefault = true; }\n setSelectionOrigin(this.view, \"pointer\");\n};\n\nhandlers.touchdown = function (view) {\n forceDOMFlush(view);\n setSelectionOrigin(view, \"pointer\");\n};\n\nhandlers.contextmenu = function (view) { return forceDOMFlush(view); };\n\nfunction inOrNearComposition(view, event) {\n if (view.composing) { return true }\n // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.\n // On Japanese input method editors (IMEs), the Enter key is used to confirm character\n // selection. On Safari, when Enter is pressed, compositionend and keydown events are\n // emitted. The keydown event triggers newline insertion, which we don't want.\n // This method returns true if the keydown event should be ignored.\n // We only ignore it once, as pressing Enter a second time *should* insert a newline.\n // Furthermore, the keydown event timestamp must be close to the compositionEndedAt timestamp.\n // This guards against the case where compositionend is triggered without the keyboard\n // (e.g. character confirmation may be done with the mouse), and keydown is triggered\n // afterwards- we wouldn't want to ignore the keydown event in this case.\n if (result.safari && Math.abs(event.timeStamp - view.compositionEndedAt) < 500) {\n view.compositionEndedAt = -2e8;\n return true\n }\n return false\n}\n\n// Drop active composition after 5 seconds of inactivity on Android\nvar timeoutComposition = result.android ? 5000 : -1;\n\neditHandlers.compositionstart = editHandlers.compositionupdate = function (view) {\n if (!view.composing) {\n view.domObserver.flush();\n var state = view.state;\n var $pos = state.selection.$from;\n if (state.selection.empty &&\n (state.storedMarks || (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(function (m) { return m.type.spec.inclusive === false; })))) {\n // Need to wrap the cursor in mark nodes different from the ones in the DOM context\n view.markCursor = view.state.storedMarks || $pos.marks();\n endComposition(view, true);\n view.markCursor = null;\n } else {\n endComposition(view);\n // In firefox, if the cursor is after but outside a marked node,\n // the inserted text won't inherit the marks. So this moves it\n // inside if necessary.\n if (result.gecko && state.selection.empty && $pos.parentOffset && !$pos.textOffset && $pos.nodeBefore.marks.length) {\n var sel = view.root.getSelection();\n for (var node = sel.focusNode, offset = sel.focusOffset; node && node.nodeType == 1 && offset != 0;) {\n var before = offset < 0 ? node.lastChild : node.childNodes[offset - 1];\n if (!before) { break }\n if (before.nodeType == 3) {\n sel.collapse(before, before.nodeValue.length);\n break\n } else {\n node = before;\n offset = -1;\n }\n }\n }\n }\n view.composing = true;\n }\n scheduleComposeEnd(view, timeoutComposition);\n};\n\neditHandlers.compositionend = function (view, event) {\n if (view.composing) {\n view.composing = false;\n view.compositionEndedAt = event.timeStamp;\n scheduleComposeEnd(view, 20);\n }\n};\n\nfunction scheduleComposeEnd(view, delay) {\n clearTimeout(view.composingTimeout);\n if (delay > -1) { view.composingTimeout = setTimeout(function () { return endComposition(view); }, delay); }\n}\n\nfunction clearComposition(view) {\n view.composing = false;\n while (view.compositionNodes.length > 0) { view.compositionNodes.pop().markParentsDirty(); }\n}\n\nfunction endComposition(view, forceUpdate) {\n view.domObserver.forceFlush();\n clearComposition(view);\n if (forceUpdate || view.docView.dirty) {\n var sel = selectionFromDOM(view);\n if (sel && !sel.eq(view.state.selection)) { view.dispatch(view.state.tr.setSelection(sel)); }\n else { view.updateState(view.state); }\n return true\n }\n return false\n}\n\nfunction captureCopy(view, dom) {\n // The extra wrapper is somehow necessary on IE/Edge to prevent the\n // content from being mangled when it is put onto the clipboard\n if (!view.dom.parentNode) { return }\n var wrap = view.dom.parentNode.appendChild(document.createElement(\"div\"));\n wrap.appendChild(dom);\n wrap.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n var sel = getSelection(), range = document.createRange();\n range.selectNodeContents(dom);\n // Done because IE will fire a selectionchange moving the selection\n // to its start when removeAllRanges is called and the editor still\n // has focus (which will mess up the editor's selection state).\n view.dom.blur();\n sel.removeAllRanges();\n sel.addRange(range);\n setTimeout(function () {\n if (wrap.parentNode) { wrap.parentNode.removeChild(wrap); }\n view.focus();\n }, 50);\n}\n\n// This is very crude, but unfortunately both these browsers _pretend_\n// that they have a clipboard API—all the objects and methods are\n// there, they just don't work, and they are hard to test.\nvar brokenClipboardAPI = (result.ie && result.ie_version < 15) ||\n (result.ios && result.webkit_version < 604);\n\nhandlers.copy = editHandlers.cut = function (view, e) {\n var sel = view.state.selection, cut = e.type == \"cut\";\n if (sel.empty) { return }\n\n // IE and Edge's clipboard interface is completely broken\n var data = brokenClipboardAPI ? null : e.clipboardData;\n var slice = sel.content();\n var ref = serializeForClipboard(view, slice);\n var dom = ref.dom;\n var text = ref.text;\n if (data) {\n e.preventDefault();\n data.clearData();\n data.setData(\"text/html\", dom.innerHTML);\n data.setData(\"text/plain\", text);\n } else {\n captureCopy(view, dom);\n }\n if (cut) { view.dispatch(view.state.tr.deleteSelection().scrollIntoView().setMeta(\"uiEvent\", \"cut\")); }\n};\n\nfunction sliceSingleNode(slice) {\n return slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1 ? slice.content.firstChild : null\n}\n\nfunction capturePaste(view, e) {\n if (!view.dom.parentNode) { return }\n var plainText = view.shiftKey || view.state.selection.$from.parent.type.spec.code;\n var target = view.dom.parentNode.appendChild(document.createElement(plainText ? \"textarea\" : \"div\"));\n if (!plainText) { target.contentEditable = \"true\"; }\n target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n target.focus();\n setTimeout(function () {\n view.focus();\n if (target.parentNode) { target.parentNode.removeChild(target); }\n if (plainText) { doPaste(view, target.value, null, e); }\n else { doPaste(view, target.textContent, target.innerHTML, e); }\n }, 50);\n}\n\nfunction doPaste(view, text, html, e) {\n var slice = parseFromClipboard(view, text, html, view.shiftKey, view.state.selection.$from);\n if (view.someProp(\"handlePaste\", function (f) { return f(view, e, slice || Slice.empty); }) || !slice) { return }\n\n var singleNode = sliceSingleNode(slice);\n var tr = singleNode ? view.state.tr.replaceSelectionWith(singleNode, view.shiftKey) : view.state.tr.replaceSelection(slice);\n view.dispatch(tr.scrollIntoView().setMeta(\"paste\", true).setMeta(\"uiEvent\", \"paste\"));\n}\n\neditHandlers.paste = function (view, e) {\n var data = brokenClipboardAPI ? null : e.clipboardData;\n var html = data && data.getData(\"text/html\"), text = data && data.getData(\"text/plain\");\n if (data && (html || text || data.files.length)) {\n doPaste(view, text, html, e);\n e.preventDefault();\n } else {\n capturePaste(view, e);\n }\n};\n\nvar Dragging = function Dragging(slice, move) {\n this.slice = slice;\n this.move = move;\n};\n\nvar dragCopyModifier = result.mac ? \"altKey\" : \"ctrlKey\";\n\nhandlers.dragstart = function (view, e) {\n var mouseDown = view.mouseDown;\n if (mouseDown) { mouseDown.done(); }\n if (!e.dataTransfer) { return }\n\n var sel = view.state.selection;\n var pos = sel.empty ? null : view.posAtCoords(eventCoords(e));\n if (pos && pos.pos >= sel.from && pos.pos <= (sel instanceof NodeSelection ? sel.to - 1: sel.to)) ; else if (mouseDown && mouseDown.mightDrag) {\n view.dispatch(view.state.tr.setSelection(NodeSelection.create(view.state.doc, mouseDown.mightDrag.pos)));\n } else if (e.target && e.target.nodeType == 1) {\n var desc = view.docView.nearestDesc(e.target, true);\n if (!desc || !desc.node.type.spec.draggable || desc == view.docView) { return }\n view.dispatch(view.state.tr.setSelection(NodeSelection.create(view.state.doc, desc.posBefore)));\n }\n var slice = view.state.selection.content();\n var ref = serializeForClipboard(view, slice);\n var dom = ref.dom;\n var text = ref.text;\n e.dataTransfer.clearData();\n e.dataTransfer.setData(brokenClipboardAPI ? \"Text\" : \"text/html\", dom.innerHTML);\n if (!brokenClipboardAPI) { e.dataTransfer.setData(\"text/plain\", text); }\n view.dragging = new Dragging(slice, !e[dragCopyModifier]);\n};\n\nhandlers.dragend = function (view) {\n window.setTimeout(function () { return view.dragging = null; }, 50);\n};\n\neditHandlers.dragover = editHandlers.dragenter = function (_, e) { return e.preventDefault(); };\n\neditHandlers.drop = function (view, e) {\n var dragging = view.dragging;\n view.dragging = null;\n\n if (!e.dataTransfer) { return }\n\n var eventPos = view.posAtCoords(eventCoords(e));\n if (!eventPos) { return }\n var $mouse = view.state.doc.resolve(eventPos.pos);\n if (!$mouse) { return }\n var slice = dragging && dragging.slice ||\n parseFromClipboard(view, e.dataTransfer.getData(brokenClipboardAPI ? \"Text\" : \"text/plain\"),\n brokenClipboardAPI ? null : e.dataTransfer.getData(\"text/html\"), false, $mouse);\n if (view.someProp(\"handleDrop\", function (f) { return f(view, e, slice || Slice.empty, dragging && dragging.move); })) {\n e.preventDefault();\n return\n }\n if (!slice) { return }\n\n e.preventDefault();\n var insertPos = slice ? dropPoint(view.state.doc, $mouse.pos, slice) : $mouse.pos;\n if (insertPos == null) { insertPos = $mouse.pos; }\n\n var tr = view.state.tr;\n if (dragging && dragging.move) { tr.deleteSelection(); }\n\n var pos = tr.mapping.map(insertPos);\n var isNode = slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1;\n var beforeInsert = tr.doc;\n if (isNode)\n { tr.replaceRangeWith(pos, pos, slice.content.firstChild); }\n else\n { tr.replaceRange(pos, pos, slice); }\n if (tr.doc.eq(beforeInsert)) { return }\n\n var $pos = tr.doc.resolve(pos);\n if (isNode && NodeSelection.isSelectable(slice.content.firstChild) &&\n $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice.content.firstChild))\n { tr.setSelection(new NodeSelection($pos)); }\n else\n { tr.setSelection(selectionBetween(view, $pos, tr.doc.resolve(tr.mapping.map(insertPos)))); }\n view.focus();\n view.dispatch(tr.setMeta(\"uiEvent\", \"drop\"));\n};\n\nhandlers.focus = function (view) {\n if (!view.focused) {\n view.domObserver.stop();\n view.dom.classList.add(\"ProseMirror-focused\");\n view.domObserver.start();\n view.focused = true;\n setTimeout(function () {\n if (view.docView && view.hasFocus() && !view.domObserver.currentSelection.eq(view.root.getSelection()))\n { selectionToDOM(view); }\n }, 20);\n }\n};\n\nhandlers.blur = function (view) {\n if (view.focused) {\n view.domObserver.stop();\n view.dom.classList.remove(\"ProseMirror-focused\");\n view.domObserver.start();\n view.domObserver.currentSelection.set({});\n view.focused = false;\n }\n};\n\nhandlers.beforeinput = function (view, event) {\n // We should probably do more with beforeinput events, but support\n // is so spotty that I'm still waiting to see where they are going.\n\n // Very specific hack to deal with backspace sometimes failing on\n // Chrome Android when after an uneditable node.\n if (result.chrome && result.android && event.inputType == \"deleteContentBackward\") {\n var domChangeCount = view.domChangeCount;\n setTimeout(function () {\n if (view.domChangeCount != domChangeCount) { return } // Event already had some effect\n // This bug tends to close the virtual keyboard, so we refocus\n view.dom.blur();\n view.focus();\n if (view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(8, \"Backspace\")); })) { return }\n var ref = view.state.selection;\n var $cursor = ref.$cursor;\n // Crude approximation of backspace behavior when no command handled it\n if ($cursor && $cursor.pos > 0) { view.dispatch(view.state.tr.delete($cursor.pos - 1, $cursor.pos).scrollIntoView()); }\n }, 50);\n }\n};\n\n// Make sure all handlers get registered\nfor (var prop in editHandlers) { handlers[prop] = editHandlers[prop]; }\n\nfunction compareObjs(a, b) {\n if (a == b) { return true }\n for (var p in a) { if (a[p] !== b[p]) { return false } }\n for (var p$1 in b) { if (!(p$1 in a)) { return false } }\n return true\n}\n\nvar WidgetType = function WidgetType(toDOM, spec) {\n this.spec = spec || noSpec;\n this.side = this.spec.side || 0;\n this.toDOM = toDOM;\n};\n\nWidgetType.prototype.map = function map (mapping, span, offset, oldOffset) {\n var ref = mapping.mapResult(span.from + oldOffset, this.side < 0 ? -1 : 1);\n var pos = ref.pos;\n var deleted = ref.deleted;\n return deleted ? null : new Decoration(pos - offset, pos - offset, this)\n};\n\nWidgetType.prototype.valid = function valid () { return true };\n\nWidgetType.prototype.eq = function eq (other) {\n return this == other ||\n (other instanceof WidgetType &&\n (this.spec.key && this.spec.key == other.spec.key ||\n this.toDOM == other.toDOM && compareObjs(this.spec, other.spec)))\n};\n\nvar InlineType = function InlineType(attrs, spec) {\n this.spec = spec || noSpec;\n this.attrs = attrs;\n};\n\nInlineType.prototype.map = function map (mapping, span, offset, oldOffset) {\n var from = mapping.map(span.from + oldOffset, this.spec.inclusiveStart ? -1 : 1) - offset;\n var to = mapping.map(span.to + oldOffset, this.spec.inclusiveEnd ? 1 : -1) - offset;\n return from >= to ? null : new Decoration(from, to, this)\n};\n\nInlineType.prototype.valid = function valid (_, span) { return span.from < span.to };\n\nInlineType.prototype.eq = function eq (other) {\n return this == other ||\n (other instanceof InlineType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec))\n};\n\nInlineType.is = function is (span) { return span.type instanceof InlineType };\n\nvar NodeType = function NodeType(attrs, spec) {\n this.spec = spec || noSpec;\n this.attrs = attrs;\n};\n\nNodeType.prototype.map = function map (mapping, span, offset, oldOffset) {\n var from = mapping.mapResult(span.from + oldOffset, 1);\n if (from.deleted) { return null }\n var to = mapping.mapResult(span.to + oldOffset, -1);\n if (to.deleted || to.pos <= from.pos) { return null }\n return new Decoration(from.pos - offset, to.pos - offset, this)\n};\n\nNodeType.prototype.valid = function valid (node, span) {\n var ref = node.content.findIndex(span.from);\n var index = ref.index;\n var offset = ref.offset;\n return offset == span.from && offset + node.child(index).nodeSize == span.to\n};\n\nNodeType.prototype.eq = function eq (other) {\n return this == other ||\n (other instanceof NodeType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec))\n};\n\n// ::- Decoration objects can be provided to the view through the\n// [`decorations` prop](#view.EditorProps.decorations). They come in\n// several variants—see the static members of this class for details.\nvar Decoration = function Decoration(from, to, type) {\n // :: number\n // The start position of the decoration.\n this.from = from;\n // :: number\n // The end position. Will be the same as `from` for [widget\n // decorations](#view.Decoration^widget).\n this.to = to;\n this.type = type;\n};\n\nvar prototypeAccessors$1 = { spec: { configurable: true },inline: { configurable: true } };\n\nDecoration.prototype.copy = function copy (from, to) {\n return new Decoration(from, to, this.type)\n};\n\nDecoration.prototype.eq = function eq (other, offset) {\n if ( offset === void 0 ) offset = 0;\n\n return this.type.eq(other.type) && this.from + offset == other.from && this.to + offset == other.to\n};\n\nDecoration.prototype.map = function map (mapping, offset, oldOffset) {\n return this.type.map(mapping, this, offset, oldOffset)\n};\n\n// :: (number, union<(view: EditorView, getPos: () → number) → dom.Node, dom.Node>, ?Object) → Decoration\n// Creates a widget decoration, which is a DOM node that's shown in\n// the document at the given position. It is recommended that you\n// delay rendering the widget by passing a function that will be\n// called when the widget is actually drawn in a view, but you can\n// also directly pass a DOM node. `getPos` can be used to find the\n// widget's current document position.\n//\n// spec::- These options are supported:\n//\n// side:: ?number\n// Controls which side of the document position this widget is\n// associated with. When negative, it is drawn before a cursor\n// at its position, and content inserted at that position ends\n// up after the widget. When zero (the default) or positive, the\n// widget is drawn after the cursor and content inserted there\n// ends up before the widget.\n//\n// When there are multiple widgets at a given position, their\n// `side` values determine the order in which they appear. Those\n// with lower values appear first. The ordering of widgets with\n// the same `side` value is unspecified.\n//\n// When `marks` is null, `side` also determines the marks that\n// the widget is wrapped in—those of the node before when\n// negative, those of the node after when positive.\n//\n// marks:: ?[Mark]\n// The precise set of marks to draw around the widget.\n//\n// stopEvent:: ?(event: dom.Event) → bool\n// Can be used to control which DOM events, when they bubble out\n// of this widget, the editor view should ignore.\n//\n// ignoreSelection:: ?bool\n// When set (defaults to false), selection changes inside the\n// widget are ignored, and don't cause ProseMirror to try and\n// re-sync the selection with its selection state.\n//\n// key:: ?string\n// When comparing decorations of this type (in order to decide\n// whether it needs to be redrawn), ProseMirror will by default\n// compare the widget DOM node by identity. If you pass a key,\n// that key will be compared instead, which can be useful when\n// you generate decorations on the fly and don't want to store\n// and reuse DOM nodes. Make sure that any widgets with the same\n// key are interchangeable—if widgets differ in, for example,\n// the behavior of some event handler, they should get\n// different keys.\nDecoration.widget = function widget (pos, toDOM, spec) {\n return new Decoration(pos, pos, new WidgetType(toDOM, spec))\n};\n\n// :: (number, number, DecorationAttrs, ?Object) → Decoration\n// Creates an inline decoration, which adds the given attributes to\n// each inline node between `from` and `to`.\n//\n// spec::- These options are recognized:\n//\n// inclusiveStart:: ?bool\n// Determines how the left side of the decoration is\n// [mapped](#transform.Position_Mapping) when content is\n// inserted directly at that position. By default, the decoration\n// won't include the new content, but you can set this to `true`\n// to make it inclusive.\n//\n// inclusiveEnd:: ?bool\n// Determines how the right side of the decoration is mapped.\n// See\n// [`inclusiveStart`](#view.Decoration^inline^spec.inclusiveStart).\nDecoration.inline = function inline (from, to, attrs, spec) {\n return new Decoration(from, to, new InlineType(attrs, spec))\n};\n\n// :: (number, number, DecorationAttrs, ?Object) → Decoration\n// Creates a node decoration. `from` and `to` should point precisely\n// before and after a node in the document. That node, and only that\n// node, will receive the given attributes.\n//\n// spec::-\n//\n// Optional information to store with the decoration. It\n// is also used when comparing decorators for equality.\nDecoration.node = function node (from, to, attrs, spec) {\n return new Decoration(from, to, new NodeType(attrs, spec))\n};\n\n// :: Object\n// The spec provided when creating this decoration. Can be useful\n// if you've stored extra information in that object.\nprototypeAccessors$1.spec.get = function () { return this.type.spec };\n\nprototypeAccessors$1.inline.get = function () { return this.type instanceof InlineType };\n\nObject.defineProperties( Decoration.prototype, prototypeAccessors$1 );\n\n// DecorationAttrs:: interface\n// A set of attributes to add to a decorated node. Most properties\n// simply directly correspond to DOM attributes of the same name,\n// which will be set to the property's value. These are exceptions:\n//\n// class:: ?string\n// A CSS class name or a space-separated set of class names to be\n// _added_ to the classes that the node already had.\n//\n// style:: ?string\n// A string of CSS to be _added_ to the node's existing `style` property.\n//\n// nodeName:: ?string\n// When non-null, the target node is wrapped in a DOM element of\n// this type (and the other attributes are applied to this element).\n\nvar none = [], noSpec = {};\n\n// ::- A collection of [decorations](#view.Decoration), organized in\n// such a way that the drawing algorithm can efficiently use and\n// compare them. This is a persistent data structure—it is not\n// modified, updates create a new value.\nvar DecorationSet = function DecorationSet(local, children) {\n this.local = local && local.length ? local : none;\n this.children = children && children.length ? children : none;\n};\n\n// :: (Node, [Decoration]) → DecorationSet\n// Create a set of decorations, using the structure of the given\n// document.\nDecorationSet.create = function create (doc, decorations) {\n return decorations.length ? buildTree(decorations, doc, 0, noSpec) : empty\n};\n\n// :: (?number, ?number, ?(spec: Object) → bool) → [Decoration]\n// Find all decorations in this set which touch the given range\n// (including decorations that start or end directly at the\n// boundaries) and match the given predicate on their spec. When\n// `start` and `end` are omitted, all decorations in the set are\n// considered. When `predicate` isn't given, all decorations are\n// assumed to match.\nDecorationSet.prototype.find = function find (start, end, predicate) {\n var result = [];\n this.findInner(start == null ? 0 : start, end == null ? 1e9 : end, result, 0, predicate);\n return result\n};\n\nDecorationSet.prototype.findInner = function findInner (start, end, result, offset, predicate) {\n for (var i = 0; i < this.local.length; i++) {\n var span = this.local[i];\n if (span.from <= end && span.to >= start && (!predicate || predicate(span.spec)))\n { result.push(span.copy(span.from + offset, span.to + offset)); }\n }\n for (var i$1 = 0; i$1 < this.children.length; i$1 += 3) {\n if (this.children[i$1] < end && this.children[i$1 + 1] > start) {\n var childOff = this.children[i$1] + 1;\n this.children[i$1 + 2].findInner(start - childOff, end - childOff, result, offset + childOff, predicate);\n }\n }\n};\n\n// :: (Mapping, Node, ?Object) → DecorationSet\n// Map the set of decorations in response to a change in the\n// document.\n//\n// options::- An optional set of options.\n//\n// onRemove:: ?(decorationSpec: Object)\n// When given, this function will be called for each decoration\n// that gets dropped as a result of the mapping, passing the\n// spec of that decoration.\nDecorationSet.prototype.map = function map (mapping, doc, options) {\n if (this == empty || mapping.maps.length == 0) { return this }\n return this.mapInner(mapping, doc, 0, 0, options || noSpec)\n};\n\nDecorationSet.prototype.mapInner = function mapInner (mapping, node, offset, oldOffset, options) {\n var newLocal;\n for (var i = 0; i < this.local.length; i++) {\n var mapped = this.local[i].map(mapping, offset, oldOffset);\n if (mapped && mapped.type.valid(node, mapped)) { (newLocal || (newLocal = [])).push(mapped); }\n else if (options.onRemove) { options.onRemove(this.local[i].spec); }\n }\n\n if (this.children.length)\n { return mapChildren(this.children, newLocal, mapping, node, offset, oldOffset, options) }\n else\n { return newLocal ? new DecorationSet(newLocal.sort(byPos)) : empty }\n};\n\n// :: (Node, [Decoration]) → DecorationSet\n// Add the given array of decorations to the ones in the set,\n// producing a new set. Needs access to the current document to\n// create the appropriate tree structure.\nDecorationSet.prototype.add = function add (doc, decorations) {\n if (!decorations.length) { return this }\n if (this == empty) { return DecorationSet.create(doc, decorations) }\n return this.addInner(doc, decorations, 0)\n};\n\nDecorationSet.prototype.addInner = function addInner (doc, decorations, offset) {\n var this$1 = this;\n\n var children, childIndex = 0;\n doc.forEach(function (childNode, childOffset) {\n var baseOffset = childOffset + offset, found;\n if (!(found = takeSpansForNode(decorations, childNode, baseOffset))) { return }\n\n if (!children) { children = this$1.children.slice(); }\n while (childIndex < children.length && children[childIndex] < childOffset) { childIndex += 3; }\n if (children[childIndex] == childOffset)\n { children[childIndex + 2] = children[childIndex + 2].addInner(childNode, found, baseOffset + 1); }\n else\n { children.splice(childIndex, 0, childOffset, childOffset + childNode.nodeSize, buildTree(found, childNode, baseOffset + 1, noSpec)); }\n childIndex += 3;\n });\n\n var local = moveSpans(childIndex ? withoutNulls(decorations) : decorations, -offset);\n return new DecorationSet(local.length ? this.local.concat(local).sort(byPos) : this.local,\n children || this.children)\n};\n\n// :: ([Decoration]) → DecorationSet\n// Create a new set that contains the decorations in this set, minus\n// the ones in the given array.\nDecorationSet.prototype.remove = function remove (decorations) {\n if (decorations.length == 0 || this == empty) { return this }\n return this.removeInner(decorations, 0)\n};\n\nDecorationSet.prototype.removeInner = function removeInner (decorations, offset) {\n var children = this.children, local = this.local;\n for (var i = 0; i < children.length; i += 3) {\n var found = (void 0), from = children[i] + offset, to = children[i + 1] + offset;\n for (var j = 0, span = (void 0); j < decorations.length; j++) { if (span = decorations[j]) {\n if (span.from > from && span.to < to) {\n decorations[j] = null\n ;(found || (found = [])).push(span);\n }\n } }\n if (!found) { continue }\n if (children == this.children) { children = this.children.slice(); }\n var removed = children[i + 2].removeInner(found, from + 1);\n if (removed != empty) {\n children[i + 2] = removed;\n } else {\n children.splice(i, 3);\n i -= 3;\n }\n }\n if (local.length) { for (var i$1 = 0, span$1 = (void 0); i$1 < decorations.length; i$1++) { if (span$1 = decorations[i$1]) {\n for (var j$1 = 0; j$1 < local.length; j$1++) { if (local[j$1].eq(span$1, offset)) {\n if (local == this.local) { local = this.local.slice(); }\n local.splice(j$1--, 1);\n } }\n } } }\n if (children == this.children && local == this.local) { return this }\n return local.length || children.length ? new DecorationSet(local, children) : empty\n};\n\nDecorationSet.prototype.forChild = function forChild (offset, node) {\n if (this == empty) { return this }\n if (node.isLeaf) { return DecorationSet.empty }\n\n var child, local;\n for (var i = 0; i < this.children.length; i += 3) { if (this.children[i] >= offset) {\n if (this.children[i] == offset) { child = this.children[i + 2]; }\n break\n } }\n var start = offset + 1, end = start + node.content.size;\n for (var i$1 = 0; i$1 < this.local.length; i$1++) {\n var dec = this.local[i$1];\n if (dec.from < end && dec.to > start && (dec.type instanceof InlineType)) {\n var from = Math.max(start, dec.from) - start, to = Math.min(end, dec.to) - start;\n if (from < to) { (local || (local = [])).push(dec.copy(from, to)); }\n }\n }\n if (local) {\n var localSet = new DecorationSet(local.sort(byPos));\n return child ? new DecorationGroup([localSet, child]) : localSet\n }\n return child || empty\n};\n\nDecorationSet.prototype.eq = function eq (other) {\n if (this == other) { return true }\n if (!(other instanceof DecorationSet) ||\n this.local.length != other.local.length ||\n this.children.length != other.children.length) { return false }\n for (var i = 0; i < this.local.length; i++)\n { if (!this.local[i].eq(other.local[i])) { return false } }\n for (var i$1 = 0; i$1 < this.children.length; i$1 += 3)\n { if (this.children[i$1] != other.children[i$1] ||\n this.children[i$1 + 1] != other.children[i$1 + 1] ||\n !this.children[i$1 + 2].eq(other.children[i$1 + 2])) { return false } }\n return true\n};\n\nDecorationSet.prototype.locals = function locals (node) {\n return removeOverlap(this.localsInner(node))\n};\n\nDecorationSet.prototype.localsInner = function localsInner (node) {\n if (this == empty) { return none }\n if (node.inlineContent || !this.local.some(InlineType.is)) { return this.local }\n var result = [];\n for (var i = 0; i < this.local.length; i++) {\n if (!(this.local[i].type instanceof InlineType))\n { result.push(this.local[i]); }\n }\n return result\n};\n\nvar empty = new DecorationSet();\n\n// :: DecorationSet\n// The empty set of decorations.\nDecorationSet.empty = empty;\n\nDecorationSet.removeOverlap = removeOverlap;\n\n// :- An abstraction that allows the code dealing with decorations to\n// treat multiple DecorationSet objects as if it were a single object\n// with (a subset of) the same interface.\nvar DecorationGroup = function DecorationGroup(members) {\n this.members = members;\n};\n\nDecorationGroup.prototype.forChild = function forChild (offset, child) {\n if (child.isLeaf) { return DecorationSet.empty }\n var found = [];\n for (var i = 0; i < this.members.length; i++) {\n var result = this.members[i].forChild(offset, child);\n if (result == empty) { continue }\n if (result instanceof DecorationGroup) { found = found.concat(result.members); }\n else { found.push(result); }\n }\n return DecorationGroup.from(found)\n};\n\nDecorationGroup.prototype.eq = function eq (other) {\n if (!(other instanceof DecorationGroup) ||\n other.members.length != this.members.length) { return false }\n for (var i = 0; i < this.members.length; i++)\n { if (!this.members[i].eq(other.members[i])) { return false } }\n return true\n};\n\nDecorationGroup.prototype.locals = function locals (node) {\n var result, sorted = true;\n for (var i = 0; i < this.members.length; i++) {\n var locals = this.members[i].localsInner(node);\n if (!locals.length) { continue }\n if (!result) {\n result = locals;\n } else {\n if (sorted) {\n result = result.slice();\n sorted = false;\n }\n for (var j = 0; j < locals.length; j++) { result.push(locals[j]); }\n }\n }\n return result ? removeOverlap(sorted ? result : result.sort(byPos)) : none\n};\n\n// : ([DecorationSet]) → union\n// Create a group for the given array of decoration sets, or return\n// a single set when possible.\nDecorationGroup.from = function from (members) {\n switch (members.length) {\n case 0: return empty\n case 1: return members[0]\n default: return new DecorationGroup(members)\n }\n};\n\nfunction mapChildren(oldChildren, newLocal, mapping, node, offset, oldOffset, options) {\n var children = oldChildren.slice();\n\n // Mark the children that are directly touched by changes, and\n // move those that are after the changes.\n var shift = function (oldStart, oldEnd, newStart, newEnd) {\n for (var i = 0; i < children.length; i += 3) {\n var end = children[i + 1], dSize = (void 0);\n if (end == -1 || oldStart > end + oldOffset) { continue }\n if (oldEnd >= children[i] + oldOffset) {\n children[i + 1] = -1;\n } else if (newStart >= offset && (dSize = (newEnd - newStart) - (oldEnd - oldStart))) {\n children[i] += dSize;\n children[i + 1] += dSize;\n }\n }\n };\n for (var i = 0; i < mapping.maps.length; i++) { mapping.maps[i].forEach(shift); }\n\n // Find the child nodes that still correspond to a single node,\n // recursively call mapInner on them and update their positions.\n var mustRebuild = false;\n for (var i$1 = 0; i$1 < children.length; i$1 += 3) { if (children[i$1 + 1] == -1) { // Touched nodes\n var from = mapping.map(children[i$1] + oldOffset), fromLocal = from - offset;\n if (fromLocal < 0 || fromLocal >= node.content.size) {\n mustRebuild = true;\n continue\n }\n // Must read oldChildren because children was tagged with -1\n var to = mapping.map(oldChildren[i$1 + 1] + oldOffset, -1), toLocal = to - offset;\n var ref = node.content.findIndex(fromLocal);\n var index = ref.index;\n var childOffset = ref.offset;\n var childNode = node.maybeChild(index);\n if (childNode && childOffset == fromLocal && childOffset + childNode.nodeSize == toLocal) {\n var mapped = children[i$1 + 2].mapInner(mapping, childNode, from + 1, children[i$1] + oldOffset + 1, options);\n if (mapped != empty) {\n children[i$1] = fromLocal;\n children[i$1 + 1] = toLocal;\n children[i$1 + 2] = mapped;\n } else {\n children[i$1 + 1] = -2;\n mustRebuild = true;\n }\n } else {\n mustRebuild = true;\n }\n } }\n\n // Remaining children must be collected and rebuilt into the appropriate structure\n if (mustRebuild) {\n var decorations = mapAndGatherRemainingDecorations(children, oldChildren, newLocal || [], mapping,\n offset, oldOffset, options);\n var built = buildTree(decorations, node, 0, options);\n newLocal = built.local;\n for (var i$2 = 0; i$2 < children.length; i$2 += 3) { if (children[i$2 + 1] < 0) {\n children.splice(i$2, 3);\n i$2 -= 3;\n } }\n for (var i$3 = 0, j = 0; i$3 < built.children.length; i$3 += 3) {\n var from$1 = built.children[i$3];\n while (j < children.length && children[j] < from$1) { j += 3; }\n children.splice(j, 0, built.children[i$3], built.children[i$3 + 1], built.children[i$3 + 2]);\n }\n }\n\n return new DecorationSet(newLocal && newLocal.sort(byPos), children)\n}\n\nfunction moveSpans(spans, offset) {\n if (!offset || !spans.length) { return spans }\n var result = [];\n for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n result.push(new Decoration(span.from + offset, span.to + offset, span.type));\n }\n return result\n}\n\nfunction mapAndGatherRemainingDecorations(children, oldChildren, decorations, mapping, offset, oldOffset, options) {\n // Gather all decorations from the remaining marked children\n function gather(set, oldOffset) {\n for (var i = 0; i < set.local.length; i++) {\n var mapped = set.local[i].map(mapping, offset, oldOffset);\n if (mapped) { decorations.push(mapped); }\n else if (options.onRemove) { options.onRemove(set.local[i].spec); }\n }\n for (var i$1 = 0; i$1 < set.children.length; i$1 += 3)\n { gather(set.children[i$1 + 2], set.children[i$1] + oldOffset + 1); }\n }\n for (var i = 0; i < children.length; i += 3) { if (children[i + 1] == -1)\n { gather(children[i + 2], oldChildren[i] + oldOffset + 1); } }\n\n return decorations\n}\n\nfunction takeSpansForNode(spans, node, offset) {\n if (node.isLeaf) { return null }\n var end = offset + node.nodeSize, found = null;\n for (var i = 0, span = (void 0); i < spans.length; i++) {\n if ((span = spans[i]) && span.from > offset && span.to < end) {\n(found || (found = [])).push(span);\n spans[i] = null;\n }\n }\n return found\n}\n\nfunction withoutNulls(array) {\n var result = [];\n for (var i = 0; i < array.length; i++)\n { if (array[i] != null) { result.push(array[i]); } }\n return result\n}\n\n// : ([Decoration], Node, number) → DecorationSet\n// Build up a tree that corresponds to a set of decorations. `offset`\n// is a base offset that should be subtractet from the `from` and `to`\n// positions in the spans (so that we don't have to allocate new spans\n// for recursive calls).\nfunction buildTree(spans, node, offset, options) {\n var children = [], hasNulls = false;\n node.forEach(function (childNode, localStart) {\n var found = takeSpansForNode(spans, childNode, localStart + offset);\n if (found) {\n hasNulls = true;\n var subtree = buildTree(found, childNode, offset + localStart + 1, options);\n if (subtree != empty)\n { children.push(localStart, localStart + childNode.nodeSize, subtree); }\n }\n });\n var locals = moveSpans(hasNulls ? withoutNulls(spans) : spans, -offset).sort(byPos);\n for (var i = 0; i < locals.length; i++) { if (!locals[i].type.valid(node, locals[i])) {\n if (options.onRemove) { options.onRemove(locals[i].spec); }\n locals.splice(i--, 1);\n } }\n return locals.length || children.length ? new DecorationSet(locals, children) : empty\n}\n\n// : (Decoration, Decoration) → number\n// Used to sort decorations so that ones with a low start position\n// come first, and within a set with the same start position, those\n// with an smaller end position come first.\nfunction byPos(a, b) {\n return a.from - b.from || a.to - b.to\n}\n\n// : ([Decoration]) → [Decoration]\n// Scan a sorted array of decorations for partially overlapping spans,\n// and split those so that only fully overlapping spans are left (to\n// make subsequent rendering easier). Will return the input array if\n// no partially overlapping spans are found (the common case).\nfunction removeOverlap(spans) {\n var working = spans;\n for (var i = 0; i < working.length - 1; i++) {\n var span = working[i];\n if (span.from != span.to) { for (var j = i + 1; j < working.length; j++) {\n var next = working[j];\n if (next.from == span.from) {\n if (next.to != span.to) {\n if (working == spans) { working = spans.slice(); }\n // Followed by a partially overlapping larger span. Split that\n // span.\n working[j] = next.copy(next.from, span.to);\n insertAhead(working, j + 1, next.copy(span.to, next.to));\n }\n continue\n } else {\n if (next.from < span.to) {\n if (working == spans) { working = spans.slice(); }\n // The end of this one overlaps with a subsequent span. Split\n // this one.\n working[i] = span.copy(span.from, next.from);\n insertAhead(working, j, span.copy(next.from, span.to));\n }\n break\n }\n } }\n }\n return working\n}\n\nfunction insertAhead(array, i, deco) {\n while (i < array.length && byPos(deco, array[i]) > 0) { i++; }\n array.splice(i, 0, deco);\n}\n\n// : (EditorView) → union\n// Get the decorations associated with the current props of a view.\nfunction viewDecorations(view) {\n var found = [];\n view.someProp(\"decorations\", function (f) {\n var result = f(view.state);\n if (result && result != empty) { found.push(result); }\n });\n if (view.cursorWrapper)\n { found.push(DecorationSet.create(view.state.doc, [view.cursorWrapper.deco])); }\n return DecorationGroup.from(found)\n}\n\n// ::- An editor view manages the DOM structure that represents an\n// editable document. Its state and behavior are determined by its\n// [props](#view.DirectEditorProps).\nvar EditorView = function EditorView(place, props) {\n this._props = props;\n // :: EditorState\n // The view's current [state](#state.EditorState).\n this.state = props.state;\n\n this.dispatch = this.dispatch.bind(this);\n\n this._root = null;\n this.focused = false;\n // Kludge used to work around a Chrome bug\n this.trackWrites = null;\n\n // :: dom.Element\n // An editable DOM node containing the document. (You probably\n // should not directly interfere with its content.)\n this.dom = (place && place.mount) || document.createElement(\"div\");\n if (place) {\n if (place.appendChild) { place.appendChild(this.dom); }\n else if (place.apply) { place(this.dom); }\n else if (place.mount) { this.mounted = true; }\n }\n\n // :: bool\n // Indicates whether the editor is currently [editable](#view.EditorProps.editable).\n this.editable = getEditable(this);\n this.markCursor = null;\n this.cursorWrapper = null;\n updateCursorWrapper(this);\n this.nodeViews = buildNodeViews(this);\n this.docView = docViewDesc(this.state.doc, computeDocDeco(this), viewDecorations(this), this.dom, this);\n\n this.lastSelectedViewDesc = null;\n // :: ?{slice: Slice, move: bool}\n // When editor content is being dragged, this object contains\n // information about the dragged slice and whether it is being\n // copied or moved. At any other time, it is null.\n this.dragging = null;\n\n initInput(this);\n\n this.pluginViews = [];\n this.updatePluginViews();\n};\n\nvar prototypeAccessors$2 = { props: { configurable: true },root: { configurable: true } };\n\n// composing:: boolean\n// Holds `true` when a\n// [composition](https://developer.mozilla.org/en-US/docs/Mozilla/IME_handling_guide)\n// is active.\n\n// :: DirectEditorProps\n// The view's current [props](#view.EditorProps).\nprototypeAccessors$2.props.get = function () {\n if (this._props.state != this.state) {\n var prev = this._props;\n this._props = {};\n for (var name in prev) { this._props[name] = prev[name]; }\n this._props.state = this.state;\n }\n return this._props\n};\n\n// :: (DirectEditorProps)\n// Update the view's props. Will immediately cause an update to\n// the DOM.\nEditorView.prototype.update = function update (props) {\n if (props.handleDOMEvents != this._props.handleDOMEvents) { ensureListeners(this); }\n this._props = props;\n this.updateStateInner(props.state, true);\n};\n\n// :: (DirectEditorProps)\n// Update the view by updating existing props object with the object\n// given as argument. Equivalent to `view.update(Object.assign({},\n// view.props, props))`.\nEditorView.prototype.setProps = function setProps (props) {\n var updated = {};\n for (var name in this._props) { updated[name] = this._props[name]; }\n updated.state = this.state;\n for (var name$1 in props) { updated[name$1] = props[name$1]; }\n this.update(updated);\n};\n\n// :: (EditorState)\n// Update the editor's `state` prop, without touching any of the\n// other props.\nEditorView.prototype.updateState = function updateState (state) {\n this.updateStateInner(state, this.state.plugins != state.plugins);\n};\n\nEditorView.prototype.updateStateInner = function updateStateInner (state, reconfigured) {\n var this$1 = this;\n\n var prev = this.state, redraw = false, updateSel = false;\n // When stored marks are added, stop composition, so that they can\n // be displayed.\n if (state.storedMarks && this.composing) {\n clearComposition(this);\n updateSel = true;\n }\n this.state = state;\n if (reconfigured) {\n var nodeViews = buildNodeViews(this);\n if (changedNodeViews(nodeViews, this.nodeViews)) {\n this.nodeViews = nodeViews;\n redraw = true;\n }\n ensureListeners(this);\n }\n\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n var innerDeco = viewDecorations(this), outerDeco = computeDocDeco(this);\n\n var scroll = reconfigured ? \"reset\"\n : state.scrollToSelection > prev.scrollToSelection ? \"to selection\" : \"preserve\";\n var updateDoc = redraw || !this.docView.matchesNode(state.doc, outerDeco, innerDeco);\n if (updateDoc || !state.selection.eq(prev.selection)) { updateSel = true; }\n var oldScrollPos = scroll == \"preserve\" && updateSel && this.dom.style.overflowAnchor == null && storeScrollPos(this);\n\n if (updateSel) {\n this.domObserver.stop();\n // Work around an issue in Chrome, IE, and Edge where changing\n // the DOM around an active selection puts it into a broken\n // state where the thing the user sees differs from the\n // selection reported by the Selection object (#710, #973,\n // #1011, #1013, #1035).\n var forceSelUpdate = updateDoc && (result.ie || result.chrome) && !this.composing &&\n !prev.selection.empty && !state.selection.empty && selectionContextChanged(prev.selection, state.selection);\n if (updateDoc) {\n // If the node that the selection points into is written to,\n // Chrome sometimes starts misreporting the selection, so this\n // tracks that and forces a selection reset when our update\n // did write to the node.\n var chromeKludge = result.chrome ? (this.trackWrites = this.root.getSelection().focusNode) : null;\n if (redraw || !this.docView.update(state.doc, outerDeco, innerDeco, this)) {\n this.docView.updateOuterDeco([]);\n this.docView.destroy();\n this.docView = docViewDesc(state.doc, outerDeco, innerDeco, this.dom, this);\n }\n if (chromeKludge && !this.trackWrites) { forceSelUpdate = true; }\n }\n // Work around for an issue where an update arriving right between\n // a DOM selection change and the \"selectionchange\" event for it\n // can cause a spurious DOM selection update, disrupting mouse\n // drag selection.\n if (forceSelUpdate ||\n !(this.mouseDown && this.domObserver.currentSelection.eq(this.root.getSelection()) && anchorInRightPlace(this))) {\n selectionToDOM(this, forceSelUpdate);\n } else {\n syncNodeSelection(this, state.selection);\n this.domObserver.setCurSelection();\n }\n this.domObserver.start();\n }\n\n this.updatePluginViews(prev);\n\n if (scroll == \"reset\") {\n this.dom.scrollTop = 0;\n } else if (scroll == \"to selection\") {\n var startDOM = this.root.getSelection().focusNode;\n if (this.someProp(\"handleScrollToSelection\", function (f) { return f(this$1); }))\n ; // Handled\n else if (state.selection instanceof NodeSelection)\n { scrollRectIntoView(this, this.docView.domAfterPos(state.selection.from).getBoundingClientRect(), startDOM); }\n else\n { scrollRectIntoView(this, this.coordsAtPos(state.selection.head), startDOM); }\n } else if (oldScrollPos) {\n resetScrollPos(oldScrollPos);\n }\n};\n\nEditorView.prototype.destroyPluginViews = function destroyPluginViews () {\n var view;\n while (view = this.pluginViews.pop()) { if (view.destroy) { view.destroy(); } }\n};\n\nEditorView.prototype.updatePluginViews = function updatePluginViews (prevState) {\n if (!prevState || prevState.plugins != this.state.plugins) {\n this.destroyPluginViews();\n for (var i = 0; i < this.state.plugins.length; i++) {\n var plugin = this.state.plugins[i];\n if (plugin.spec.view) { this.pluginViews.push(plugin.spec.view(this)); }\n }\n } else {\n for (var i$1 = 0; i$1 < this.pluginViews.length; i$1++) {\n var pluginView = this.pluginViews[i$1];\n if (pluginView.update) { pluginView.update(this, prevState); }\n }\n }\n};\n\n// :: (string, ?(prop: *) → *) → *\n// Goes over the values of a prop, first those provided directly,\n// then those from plugins (in order), and calls `f` every time a\n// non-undefined value is found. When `f` returns a truthy value,\n// that is immediately returned. When `f` isn't provided, it is\n// treated as the identity function (the prop value is returned\n// directly).\nEditorView.prototype.someProp = function someProp (propName, f) {\n var prop = this._props && this._props[propName], value;\n if (prop != null && (value = f ? f(prop) : prop)) { return value }\n var plugins = this.state.plugins;\n if (plugins) { for (var i = 0; i < plugins.length; i++) {\n var prop$1 = plugins[i].props[propName];\n if (prop$1 != null && (value = f ? f(prop$1) : prop$1)) { return value }\n } }\n};\n\n// :: () → bool\n// Query whether the view has focus.\nEditorView.prototype.hasFocus = function hasFocus () {\n return this.root.activeElement == this.dom\n};\n\n// :: ()\n// Focus the editor.\nEditorView.prototype.focus = function focus () {\n this.domObserver.stop();\n if (this.editable) { focusPreventScroll(this.dom); }\n selectionToDOM(this);\n this.domObserver.start();\n};\n\n// :: union\n// Get the document root in which the editor exists. This will\n// usually be the top-level `document`, but might be a [shadow\n// DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Shadow_DOM)\n// root if the editor is inside one.\nprototypeAccessors$2.root.get = function () {\n var cached = this._root;\n if (cached == null) { for (var search = this.dom.parentNode; search; search = search.parentNode) {\n if (search.nodeType == 9 || (search.nodeType == 11 && search.host)) {\n if (!search.getSelection) { Object.getPrototypeOf(search).getSelection = function () { return document.getSelection(); }; }\n return this._root = search\n }\n } }\n return cached || document\n};\n\n// :: ({left: number, top: number}) → ?{pos: number, inside: number}\n// Given a pair of viewport coordinates, return the document\n// position that corresponds to them. May return null if the given\n// coordinates aren't inside of the editor. When an object is\n// returned, its `pos` property is the position nearest to the\n// coordinates, and its `inside` property holds the position of the\n// inner node that the position falls inside of, or -1 if it is at\n// the top level, not in any node.\nEditorView.prototype.posAtCoords = function posAtCoords$1 (coords) {\n return posAtCoords(this, coords)\n};\n\n// :: (number) → {left: number, right: number, top: number, bottom: number}\n// Returns the viewport rectangle at a given document position. `left`\n// and `right` will be the same number, as this returns a flat\n// cursor-ish rectangle.\nEditorView.prototype.coordsAtPos = function coordsAtPos$1 (pos) {\n return coordsAtPos(this, pos)\n};\n\n// :: (number) → {node: dom.Node, offset: number}\n// Find the DOM position that corresponds to the given document\n// position. Note that you should **not** mutate the editor's\n// internal DOM, only inspect it (and even that is usually not\n// necessary).\nEditorView.prototype.domAtPos = function domAtPos (pos) {\n return this.docView.domFromPos(pos)\n};\n\n// :: (number) → ?dom.Node\n// Find the DOM node that represents the document node after the\n// given position. May return `null` when the position doesn't point\n// in front of a node or if the node is inside an opaque node view.\n//\n// This is intended to be able to call things like\n// `getBoundingClientRect` on that DOM node. Do **not** mutate the\n// editor DOM directly, or add styling this way, since that will be\n// immediately overriden by the editor as it redraws the node.\nEditorView.prototype.nodeDOM = function nodeDOM (pos) {\n var desc = this.docView.descAt(pos);\n return desc ? desc.nodeDOM : null\n};\n\n// :: (dom.Node, number, ?number) → number\n// Find the document position that corresponds to a given DOM\n// position. (Whenever possible, it is preferable to inspect the\n// document structure directly, rather than poking around in the\n// DOM, but sometimes—for example when interpreting an event\n// target—you don't have a choice.)\n//\n// The `bias` parameter can be used to influence which side of a DOM\n// node to use when the position is inside a leaf node.\nEditorView.prototype.posAtDOM = function posAtDOM (node, offset, bias) {\n if ( bias === void 0 ) bias = -1;\n\n var pos = this.docView.posFromDOM(node, offset, bias);\n if (pos == null) { throw new RangeError(\"DOM position not inside the editor\") }\n return pos\n};\n\n// :: (union<\"up\", \"down\", \"left\", \"right\", \"forward\", \"backward\">, ?EditorState) → bool\n// Find out whether the selection is at the end of a textblock when\n// moving in a given direction. When, for example, given `\"left\"`,\n// it will return true if moving left from the current cursor\n// position would leave that position's parent textblock. Will apply\n// to the view's current state by default, but it is possible to\n// pass a different state.\nEditorView.prototype.endOfTextblock = function endOfTextblock$1 (dir, state) {\n return endOfTextblock(this, state || this.state, dir)\n};\n\n// :: ()\n// Removes the editor from the DOM and destroys all [node\n// views](#view.NodeView).\nEditorView.prototype.destroy = function destroy () {\n if (!this.docView) { return }\n destroyInput(this);\n this.destroyPluginViews();\n if (this.mounted) {\n this.docView.update(this.state.doc, [], viewDecorations(this), this);\n this.dom.textContent = \"\";\n } else if (this.dom.parentNode) {\n this.dom.parentNode.removeChild(this.dom);\n }\n this.docView.destroy();\n this.docView = null;\n};\n\n// Used for testing.\nEditorView.prototype.dispatchEvent = function dispatchEvent$1 (event) {\n return dispatchEvent(this, event)\n};\n\n// :: (Transaction)\n// Dispatch a transaction. Will call\n// [`dispatchTransaction`](#view.DirectEditorProps.dispatchTransaction)\n// when given, and otherwise defaults to applying the transaction to\n// the current state and calling\n// [`updateState`](#view.EditorView.updateState) with the result.\n// This method is bound to the view instance, so that it can be\n// easily passed around.\nEditorView.prototype.dispatch = function dispatch (tr) {\n var dispatchTransaction = this._props.dispatchTransaction;\n if (dispatchTransaction) { dispatchTransaction.call(this, tr); }\n else { this.updateState(this.state.apply(tr)); }\n};\n\nObject.defineProperties( EditorView.prototype, prototypeAccessors$2 );\n\nfunction computeDocDeco(view) {\n var attrs = Object.create(null);\n attrs.class = \"ProseMirror\";\n attrs.contenteditable = String(view.editable);\n\n view.someProp(\"attributes\", function (value) {\n if (typeof value == \"function\") { value = value(view.state); }\n if (value) { for (var attr in value) {\n if (attr == \"class\")\n { attrs.class += \" \" + value[attr]; }\n else if (!attrs[attr] && attr != \"contenteditable\" && attr != \"nodeName\")\n { attrs[attr] = String(value[attr]); }\n } }\n });\n\n return [Decoration.node(0, view.state.doc.content.size, attrs)]\n}\n\nfunction updateCursorWrapper(view) {\n if (view.markCursor) {\n var dom = document.createElement(\"img\");\n dom.setAttribute(\"mark-placeholder\", \"true\");\n view.cursorWrapper = {dom: dom, deco: Decoration.widget(view.state.selection.head, dom, {raw: true, marks: view.markCursor})};\n } else {\n view.cursorWrapper = null;\n }\n}\n\nfunction getEditable(view) {\n return !view.someProp(\"editable\", function (value) { return value(view.state) === false; })\n}\n\nfunction selectionContextChanged(sel1, sel2) {\n var depth = Math.min(sel1.$anchor.sharedDepth(sel1.head), sel2.$anchor.sharedDepth(sel2.head));\n return sel1.$anchor.start(depth) != sel2.$anchor.start(depth)\n}\n\nfunction buildNodeViews(view) {\n var result = {};\n view.someProp(\"nodeViews\", function (obj) {\n for (var prop in obj) { if (!Object.prototype.hasOwnProperty.call(result, prop))\n { result[prop] = obj[prop]; } }\n });\n return result\n}\n\nfunction changedNodeViews(a, b) {\n var nA = 0, nB = 0;\n for (var prop in a) {\n if (a[prop] != b[prop]) { return true }\n nA++;\n }\n for (var _ in b) { nB++; }\n return nA != nB\n}\n\n// EditorProps:: interface\n//\n// Props are configuration values that can be passed to an editor view\n// or included in a plugin. This interface lists the supported props.\n//\n// The various event-handling functions may all return `true` to\n// indicate that they handled the given event. The view will then take\n// care to call `preventDefault` on the event, except with\n// `handleDOMEvents`, where the handler itself is responsible for that.\n//\n// How a prop is resolved depends on the prop. Handler functions are\n// called one at a time, starting with the base props and then\n// searching through the plugins (in order of appearance) until one of\n// them returns true. For some props, the first plugin that yields a\n// value gets precedence.\n//\n// handleDOMEvents:: ?Object<(view: EditorView, event: dom.Event) → bool>\n// Can be an object mapping DOM event type names to functions that\n// handle them. Such functions will be called before any handling\n// ProseMirror does of events fired on the editable DOM element.\n// Contrary to the other event handling props, when returning true\n// from such a function, you are responsible for calling\n// `preventDefault` yourself (or not, if you want to allow the\n// default behavior).\n//\n// handleKeyDown:: ?(view: EditorView, event: dom.KeyboardEvent) → bool\n// Called when the editor receives a `keydown` event.\n//\n// handleKeyPress:: ?(view: EditorView, event: dom.KeyboardEvent) → bool\n// Handler for `keypress` events.\n//\n// handleTextInput:: ?(view: EditorView, from: number, to: number, text: string) → bool\n// Whenever the user directly input text, this handler is called\n// before the input is applied. If it returns `true`, the default\n// behavior of actually inserting the text is suppressed.\n//\n// handleClickOn:: ?(view: EditorView, pos: number, node: Node, nodePos: number, event: dom.MouseEvent, direct: bool) → bool\n// Called for each node around a click, from the inside out. The\n// `direct` flag will be true for the inner node.\n//\n// handleClick:: ?(view: EditorView, pos: number, event: dom.MouseEvent) → bool\n// Called when the editor is clicked, after `handleClickOn` handlers\n// have been called.\n//\n// handleDoubleClickOn:: ?(view: EditorView, pos: number, node: Node, nodePos: number, event: dom.MouseEvent, direct: bool) → bool\n// Called for each node around a double click.\n//\n// handleDoubleClick:: ?(view: EditorView, pos: number, event: dom.MouseEvent) → bool\n// Called when the editor is double-clicked, after `handleDoubleClickOn`.\n//\n// handleTripleClickOn:: ?(view: EditorView, pos: number, node: Node, nodePos: number, event: dom.MouseEvent, direct: bool) → bool\n// Called for each node around a triple click.\n//\n// handleTripleClick:: ?(view: EditorView, pos: number, event: dom.MouseEvent) → bool\n// Called when the editor is triple-clicked, after `handleTripleClickOn`.\n//\n// handlePaste:: ?(view: EditorView, event: dom.ClipboardEvent, slice: Slice) → bool\n// Can be used to override the behavior of pasting. `slice` is the\n// pasted content parsed by the editor, but you can directly access\n// the event to get at the raw content.\n//\n// handleDrop:: ?(view: EditorView, event: dom.Event, slice: Slice, moved: bool) → bool\n// Called when something is dropped on the editor. `moved` will be\n// true if this drop moves from the current selection (which should\n// thus be deleted).\n//\n// handleScrollToSelection:: ?(view: EditorView) → bool\n// Called when the view, after updating its state, tries to scroll\n// the selection into view. A handler function may return false to\n// indicate that it did not handle the scrolling and further\n// handlers or the default behavior should be tried.\n//\n// createSelectionBetween:: ?(view: EditorView, anchor: ResolvedPos, head: ResolvedPos) → ?Selection\n// Can be used to override the way a selection is created when\n// reading a DOM selection between the given anchor and head.\n//\n// domParser:: ?DOMParser\n// The [parser](#model.DOMParser) to use when reading editor changes\n// from the DOM. Defaults to calling\n// [`DOMParser.fromSchema`](#model.DOMParser^fromSchema) on the\n// editor's schema.\n//\n// transformPastedHTML:: ?(html: string) → string\n// Can be used to transform pasted HTML text, _before_ it is parsed,\n// for example to clean it up.\n//\n// clipboardParser:: ?DOMParser\n// The [parser](#model.DOMParser) to use when reading content from\n// the clipboard. When not given, the value of the\n// [`domParser`](#view.EditorProps.domParser) prop is used.\n//\n// transformPastedText:: ?(text: string, plain: bool) → string\n// Transform pasted plain text. The `plain` flag will be true when\n// the text is pasted as plain text.\n//\n// clipboardTextParser:: ?(text: string, $context: ResolvedPos, plain: bool) → Slice\n// A function to parse text from the clipboard into a document\n// slice. Called after\n// [`transformPastedText`](#view.EditorProps.transformPastedText).\n// The default behavior is to split the text into lines, wrap them\n// in `

    ` tags, and call\n// [`clipboardParser`](#view.EditorProps.clipboardParser) on it.\n// The `plain` flag will be true when the text is pasted as plain text.\n//\n// transformPasted:: ?(Slice) → Slice\n// Can be used to transform pasted content before it is applied to\n// the document.\n//\n// nodeViews:: ?Object<(node: Node, view: EditorView, getPos: () → number, decorations: [Decoration]) → NodeView>\n// Allows you to pass custom rendering and behavior logic for nodes\n// and marks. Should map node and mark names to constructor\n// functions that produce a [`NodeView`](#view.NodeView) object\n// implementing the node's display behavior. For nodes, the third\n// argument `getPos` is a function that can be called to get the\n// node's current position, which can be useful when creating\n// transactions to update it. For marks, the third argument is a\n// boolean that indicates whether the mark's content is inline.\n//\n// `decorations` is an array of node or inline decorations that are\n// active around the node. They are automatically drawn in the\n// normal way, and you will usually just want to ignore this, but\n// they can also be used as a way to provide context information to\n// the node view without adding it to the document itself.\n//\n// clipboardSerializer:: ?DOMSerializer\n// The DOM serializer to use when putting content onto the\n// clipboard. If not given, the result of\n// [`DOMSerializer.fromSchema`](#model.DOMSerializer^fromSchema)\n// will be used.\n//\n// clipboardTextSerializer:: ?(Slice) → string\n// A function that will be called to get the text for the current\n// selection when copying text to the clipboard. By default, the\n// editor will use [`textBetween`](#model.Node.textBetween) on the\n// selected range.\n//\n// decorations:: ?(state: EditorState) → ?DecorationSet\n// A set of [document decorations](#view.Decoration) to show in the\n// view.\n//\n// editable:: ?(state: EditorState) → bool\n// When this returns false, the content of the view is not directly\n// editable.\n//\n// attributes:: ?union, (EditorState) → ?Object>\n// Control the DOM attributes of the editable element. May be either\n// an object or a function going from an editor state to an object.\n// By default, the element will get a class `\"ProseMirror\"`, and\n// will have its `contentEditable` attribute determined by the\n// [`editable` prop](#view.EditorProps.editable). Additional classes\n// provided here will be added to the class. For other attributes,\n// the value provided first (as in\n// [`someProp`](#view.EditorView.someProp)) will be used.\n//\n// scrollThreshold:: ?union\n// Determines the distance (in pixels) between the cursor and the\n// end of the visible viewport at which point, when scrolling the\n// cursor into view, scrolling takes place. Defaults to 0.\n//\n// scrollMargin:: ?union\n// Determines the extra space (in pixels) that is left above or\n// below the cursor when it is scrolled into view. Defaults to 5.\n\n// DirectEditorProps:: interface extends EditorProps\n//\n// The props object given directly to the editor view supports two\n// fields that can't be used in plugins:\n//\n// state:: EditorState\n// The current state of the editor.\n//\n// dispatchTransaction:: ?(tr: Transaction)\n// The callback over which to send transactions (state updates)\n// produced by the view. If you specify this, you probably want to\n// make sure this ends up calling the view's\n// [`updateState`](#view.EditorView.updateState) method with a new\n// state that has the transaction\n// [applied](#state.EditorState.apply). The callback will be bound to have\n// the view instance as its `this` binding.\n\nexport { Decoration, DecorationSet, EditorView, endComposition as __endComposition, parseFromClipboard as __parseFromClipboard, serializeForClipboard as __serializeForClipboard };\n//# sourceMappingURL=index.es.js.map\n","import { Plugin } from 'prosemirror-state';\nimport { dropPoint } from 'prosemirror-transform';\n\n// :: (options: ?Object) → Plugin\n// Create a plugin that, when added to a ProseMirror instance,\n// causes a decoration to show up at the drop position when something\n// is dragged over the editor.\n//\n// options::- These options are supported:\n//\n// color:: ?string\n// The color of the cursor. Defaults to `black`.\n//\n// width:: ?number\n// The precise width of the cursor in pixels. Defaults to 1.\n//\n// class:: ?string\n// A CSS class name to add to the cursor element.\nfunction dropCursor(options) {\n if ( options === void 0 ) options = {};\n\n return new Plugin({\n view: function view(editorView) { return new DropCursorView(editorView, options) }\n })\n}\n\nvar DropCursorView = function DropCursorView(editorView, options) {\n var this$1 = this;\n\n this.editorView = editorView;\n this.width = options.width || 1;\n this.color = options.color || \"black\";\n this.class = options.class;\n this.cursorPos = null;\n this.element = null;\n this.timeout = null;\n\n this.handlers = [\"dragover\", \"dragend\", \"drop\", \"dragleave\"].map(function (name) {\n var handler = function (e) { return this$1[name](e); };\n editorView.dom.addEventListener(name, handler);\n return {name: name, handler: handler}\n });\n};\n\nDropCursorView.prototype.destroy = function destroy () {\n var this$1 = this;\n\n this.handlers.forEach(function (ref) {\n var name = ref.name;\n var handler = ref.handler;\n\n return this$1.editorView.dom.removeEventListener(name, handler);\n });\n};\n\nDropCursorView.prototype.update = function update (editorView, prevState) {\n if (this.cursorPos != null && prevState.doc != editorView.state.doc) { this.updateOverlay(); }\n};\n\nDropCursorView.prototype.setCursor = function setCursor (pos) {\n if (pos == this.cursorPos) { return }\n this.cursorPos = pos;\n if (pos == null) {\n this.element.parentNode.removeChild(this.element);\n this.element = null;\n } else {\n this.updateOverlay();\n }\n};\n\nDropCursorView.prototype.updateOverlay = function updateOverlay () {\n var $pos = this.editorView.state.doc.resolve(this.cursorPos), rect;\n if (!$pos.parent.inlineContent) {\n var before = $pos.nodeBefore, after = $pos.nodeAfter;\n if (before || after) {\n var nodeRect = this.editorView.nodeDOM(this.cursorPos - (before ?before.nodeSize : 0)).getBoundingClientRect();\n var top = before ? nodeRect.bottom : nodeRect.top;\n if (before && after)\n { top = (top + this.editorView.nodeDOM(this.cursorPos).getBoundingClientRect().top) / 2; }\n rect = {left: nodeRect.left, right: nodeRect.right, top: top - this.width / 2, bottom: top + this.width / 2};\n }\n }\n if (!rect) {\n var coords = this.editorView.coordsAtPos(this.cursorPos);\n rect = {left: coords.left - this.width / 2, right: coords.left + this.width / 2, top: coords.top, bottom: coords.bottom};\n }\n\n var parent = this.editorView.dom.offsetParent;\n if (!this.element) {\n this.element = parent.appendChild(document.createElement(\"div\"));\n if (this.class) { this.element.className = this.class; }\n this.element.style.cssText = \"position: absolute; z-index: 50; pointer-events: none; background-color: \" + this.color;\n }\n var parentRect = !parent || parent == document.body && getComputedStyle(parent).position == \"static\"\n ? {left: -pageXOffset, top: -pageYOffset} : parent.getBoundingClientRect();\n this.element.style.left = (rect.left - parentRect.left) + \"px\";\n this.element.style.top = (rect.top - parentRect.top) + \"px\";\n this.element.style.width = (rect.right - rect.left) + \"px\";\n this.element.style.height = (rect.bottom - rect.top) + \"px\";\n};\n\nDropCursorView.prototype.scheduleRemoval = function scheduleRemoval (timeout) {\n var this$1 = this;\n\n clearTimeout(this.timeout);\n this.timeout = setTimeout(function () { return this$1.setCursor(null); }, timeout);\n};\n\nDropCursorView.prototype.dragover = function dragover (event) {\n if (!this.editorView.editable) { return }\n var pos = this.editorView.posAtCoords({left: event.clientX, top: event.clientY});\n if (pos) {\n var target = pos.pos;\n if (this.editorView.dragging && this.editorView.dragging.slice) {\n target = dropPoint(this.editorView.state.doc, target, this.editorView.dragging.slice);\n if (target == null) { target = pos.pos; }\n }\n this.setCursor(target);\n this.scheduleRemoval(5000);\n }\n};\n\nDropCursorView.prototype.dragend = function dragend () {\n this.scheduleRemoval(20);\n};\n\nDropCursorView.prototype.drop = function drop () {\n this.scheduleRemoval(20);\n};\n\nDropCursorView.prototype.dragleave = function dragleave (event) {\n if (event.target == this.editorView.dom || !this.editorView.dom.contains(event.relatedTarget))\n { this.setCursor(null); }\n};\n\nexport { dropCursor };\n//# sourceMappingURL=index.es.js.map\n","import { keydownHandler } from 'prosemirror-keymap';\nimport { NodeSelection, Selection, Plugin, TextSelection } from 'prosemirror-state';\nimport { DecorationSet, Decoration } from 'prosemirror-view';\nimport { Slice } from 'prosemirror-model';\n\n// ::- Gap cursor selections are represented using this class. Its\n// `$anchor` and `$head` properties both point at the cursor position.\nvar GapCursor = /*@__PURE__*/(function (Selection) {\n function GapCursor($pos) {\n Selection.call(this, $pos, $pos);\n }\n\n if ( Selection ) GapCursor.__proto__ = Selection;\n GapCursor.prototype = Object.create( Selection && Selection.prototype );\n GapCursor.prototype.constructor = GapCursor;\n\n GapCursor.prototype.map = function map (doc, mapping) {\n var $pos = doc.resolve(mapping.map(this.head));\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos)\n };\n\n GapCursor.prototype.content = function content () { return Slice.empty };\n\n GapCursor.prototype.eq = function eq (other) {\n return other instanceof GapCursor && other.head == this.head\n };\n\n GapCursor.prototype.toJSON = function toJSON () {\n return {type: \"gapcursor\", pos: this.head}\n };\n\n GapCursor.fromJSON = function fromJSON (doc, json) {\n if (typeof json.pos != \"number\") { throw new RangeError(\"Invalid input for GapCursor.fromJSON\") }\n return new GapCursor(doc.resolve(json.pos))\n };\n\n GapCursor.prototype.getBookmark = function getBookmark () { return new GapBookmark(this.anchor) };\n\n GapCursor.valid = function valid ($pos) {\n var parent = $pos.parent;\n if (parent.isTextblock || !closedBefore($pos) || !closedAfter($pos)) { return false }\n var override = parent.type.spec.allowGapCursor;\n if (override != null) { return override }\n var deflt = parent.contentMatchAt($pos.index()).defaultType;\n return deflt && deflt.isTextblock\n };\n\n GapCursor.findFrom = function findFrom ($pos, dir, mustMove) {\n search: for (;;) {\n if (!mustMove && GapCursor.valid($pos)) { return $pos }\n var pos = $pos.pos, next = null;\n // Scan up from this position\n for (var d = $pos.depth;; d--) {\n var parent = $pos.node(d);\n if (dir > 0 ? $pos.indexAfter(d) < parent.childCount : $pos.index(d) > 0) {\n next = parent.child(dir > 0 ? $pos.indexAfter(d) : $pos.index(d) - 1);\n break\n } else if (d == 0) {\n return null\n }\n pos += dir;\n var $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur)) { return $cur }\n }\n\n // And then down into the next node\n for (;;) {\n var inside = dir > 0 ? next.firstChild : next.lastChild;\n if (!inside) {\n if (next.isAtom && !next.isText && !NodeSelection.isSelectable(next)) {\n $pos = $pos.doc.resolve(pos + next.nodeSize * dir);\n mustMove = false;\n continue search\n }\n break\n }\n next = inside;\n pos += dir;\n var $cur$1 = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur$1)) { return $cur$1 }\n }\n\n return null\n }\n };\n\n return GapCursor;\n}(Selection));\n\nGapCursor.prototype.visible = false;\n\nSelection.jsonID(\"gapcursor\", GapCursor);\n\nvar GapBookmark = function GapBookmark(pos) {\n this.pos = pos;\n};\nGapBookmark.prototype.map = function map (mapping) {\n return new GapBookmark(mapping.map(this.pos))\n};\nGapBookmark.prototype.resolve = function resolve (doc) {\n var $pos = doc.resolve(this.pos);\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos)\n};\n\nfunction closedBefore($pos) {\n for (var d = $pos.depth; d >= 0; d--) {\n var index = $pos.index(d);\n // At the start of this parent, look at next one\n if (index == 0) { continue }\n // See if the node before (or its first ancestor) is closed\n for (var before = $pos.node(d).child(index - 1);; before = before.lastChild) {\n if ((before.childCount == 0 && !before.inlineContent) || before.isAtom || before.type.spec.isolating) { return true }\n if (before.inlineContent) { return false }\n }\n }\n // Hit start of document\n return true\n}\n\nfunction closedAfter($pos) {\n for (var d = $pos.depth; d >= 0; d--) {\n var index = $pos.indexAfter(d), parent = $pos.node(d);\n if (index == parent.childCount) { continue }\n for (var after = parent.child(index);; after = after.firstChild) {\n if ((after.childCount == 0 && !after.inlineContent) || after.isAtom || after.type.spec.isolating) { return true }\n if (after.inlineContent) { return false }\n }\n }\n return true\n}\n\n// :: () → Plugin\n// Create a gap cursor plugin. When enabled, this will capture clicks\n// near and arrow-key-motion past places that don't have a normally\n// selectable position nearby, and create a gap cursor selection for\n// them. The cursor is drawn as an element with class\n// `ProseMirror-gapcursor`. You can either include\n// `style/gapcursor.css` from the package's directory or add your own\n// styles to make it visible.\nvar gapCursor = function() {\n return new Plugin({\n props: {\n decorations: drawGapCursor,\n\n createSelectionBetween: function createSelectionBetween(_view, $anchor, $head) {\n if ($anchor.pos == $head.pos && GapCursor.valid($head)) { return new GapCursor($head) }\n },\n\n handleClick: handleClick,\n handleKeyDown: handleKeyDown\n }\n })\n};\n\nvar handleKeyDown = keydownHandler({\n \"ArrowLeft\": arrow(\"horiz\", -1),\n \"ArrowRight\": arrow(\"horiz\", 1),\n \"ArrowUp\": arrow(\"vert\", -1),\n \"ArrowDown\": arrow(\"vert\", 1)\n});\n\nfunction arrow(axis, dir) {\n var dirStr = axis == \"vert\" ? (dir > 0 ? \"down\" : \"up\") : (dir > 0 ? \"right\" : \"left\");\n return function(state, dispatch, view) {\n var sel = state.selection;\n var $start = dir > 0 ? sel.$to : sel.$from, mustMove = sel.empty;\n if (sel instanceof TextSelection) {\n if (!view.endOfTextblock(dirStr) || $start.depth == 0) { return false }\n mustMove = false;\n $start = state.doc.resolve(dir > 0 ? $start.after() : $start.before());\n }\n var $found = GapCursor.findFrom($start, dir, mustMove);\n if (!$found) { return false }\n if (dispatch) { dispatch(state.tr.setSelection(new GapCursor($found))); }\n return true\n }\n}\n\nfunction handleClick(view, pos, event) {\n if (!view.editable) { return false }\n var $pos = view.state.doc.resolve(pos);\n if (!GapCursor.valid($pos)) { return false }\n var ref = view.posAtCoords({left: event.clientX, top: event.clientY});\n var inside = ref.inside;\n if (inside > -1 && NodeSelection.isSelectable(view.state.doc.nodeAt(inside))) { return false }\n view.dispatch(view.state.tr.setSelection(new GapCursor($pos)));\n return true\n}\n\nfunction drawGapCursor(state) {\n if (!(state.selection instanceof GapCursor)) { return null }\n var node = document.createElement(\"div\");\n node.className = \"ProseMirror-gapcursor\";\n return DecorationSet.create(state.doc, [Decoration.widget(state.selection.head, node, {key: \"gapcursor\"})])\n}\n\nexport { GapCursor, gapCursor };\n//# sourceMappingURL=index.es.js.map\n","\n /*!\n * tiptap v1.29.5\n * (c) 2020 überdosis GbR (limited liability)\n * @license MIT\n */\n \nimport { EditorState, Plugin, PluginKey, TextSelection } from 'prosemirror-state';\nexport { NodeSelection, Plugin, PluginKey, TextSelection } from 'prosemirror-state';\nimport { EditorView } from 'prosemirror-view';\nimport { Schema, DOMParser, DOMSerializer } from 'prosemirror-model';\nimport { dropCursor } from 'prosemirror-dropcursor';\nimport { gapCursor } from 'prosemirror-gapcursor';\nimport { keymap } from 'prosemirror-keymap';\nimport { baseKeymap } from 'prosemirror-commands';\nimport { inputRules, undoInputRule } from 'prosemirror-inputrules';\nimport { getMarkRange, markIsActive, getMarkAttrs, nodeIsActive, getNodeAttrs } from 'tiptap-utils';\nimport Vue from 'vue';\nimport { setBlockType } from 'tiptap-commands';\n\nfunction camelCase (str) {\n return str.replace(/(?:^\\w|[A-Z]|\\b\\w)/g, (word, index) => index === 0 ? word.toLowerCase() : word.toUpperCase()).replace(/\\s+/g, '');\n}\n\nclass ComponentView {\n constructor(component, {\n editor,\n extension,\n parent,\n node,\n view,\n decorations,\n getPos\n }) {\n this.component = component;\n this.editor = editor;\n this.extension = extension;\n this.parent = parent;\n this.node = node;\n this.view = view;\n this.decorations = decorations;\n this.isNode = !!this.node.marks;\n this.isMark = !this.isNode;\n this.getPos = this.isMark ? this.getMarkPos : getPos;\n this.captureEvents = true;\n this.dom = this.createDOM();\n this.contentDOM = this.vm.$refs.content;\n }\n\n createDOM() {\n const Component = Vue.extend(this.component);\n const props = {\n editor: this.editor,\n node: this.node,\n view: this.view,\n getPos: () => this.getPos(),\n decorations: this.decorations,\n selected: false,\n options: this.extension.options,\n updateAttrs: attrs => this.updateAttrs(attrs)\n };\n\n if (typeof this.extension.setSelection === 'function') {\n this.setSelection = this.extension.setSelection;\n }\n\n if (typeof this.extension.update === 'function') {\n this.update = this.extension.update;\n }\n\n this.vm = new Component({\n parent: this.parent,\n propsData: props\n }).$mount();\n return this.vm.$el;\n }\n\n update(node, decorations) {\n if (node.type !== this.node.type) {\n return false;\n }\n\n if (node === this.node && this.decorations === decorations) {\n return true;\n }\n\n this.node = node;\n this.decorations = decorations;\n this.updateComponentProps({\n node,\n decorations\n });\n return true;\n }\n\n updateComponentProps(props) {\n if (!this.vm._props) {\n return;\n } // Update props in component\n // TODO: Avoid mutating a prop directly.\n // Maybe there is a better way to do this?\n\n\n const originalSilent = Vue.config.silent;\n Vue.config.silent = true;\n Object.entries(props).forEach(([key, value]) => {\n this.vm._props[key] = value;\n }); // this.vm._props.node = node\n // this.vm._props.decorations = decorations\n\n Vue.config.silent = originalSilent;\n }\n\n updateAttrs(attrs) {\n if (!this.view.editable) {\n return;\n }\n\n const {\n state\n } = this.view;\n const {\n type\n } = this.node;\n const pos = this.getPos();\n const newAttrs = { ...this.node.attrs,\n ...attrs\n };\n const transaction = this.isMark ? state.tr.removeMark(pos.from, pos.to, type).addMark(pos.from, pos.to, type.create(newAttrs)) : state.tr.setNodeMarkup(pos, null, newAttrs);\n this.view.dispatch(transaction);\n } // prevent a full re-render of the vue component on update\n // we'll handle prop updates in `update()`\n\n\n ignoreMutation(mutation) {\n // allow leaf nodes to be selected\n if (mutation.type === 'selection') {\n return false;\n }\n\n if (!this.contentDOM) {\n return true;\n }\n\n return !this.contentDOM.contains(mutation.target);\n } // disable (almost) all prosemirror event listener for node views\n\n\n stopEvent(event) {\n if (typeof this.extension.stopEvent === 'function') {\n return this.extension.stopEvent(event);\n }\n\n const draggable = !!this.extension.schema.draggable; // support a custom drag handle\n\n if (draggable && event.type === 'mousedown') {\n const dragHandle = event.target.closest && event.target.closest('[data-drag-handle]');\n const isValidDragHandle = dragHandle && (this.dom === dragHandle || this.dom.contains(dragHandle));\n\n if (isValidDragHandle) {\n this.captureEvents = false;\n document.addEventListener('dragend', () => {\n this.captureEvents = true;\n }, {\n once: true\n });\n }\n }\n\n const isCopy = event.type === 'copy';\n const isPaste = event.type === 'paste';\n const isCut = event.type === 'cut';\n const isDrag = event.type.startsWith('drag') || event.type === 'drop';\n\n if (draggable && isDrag || isCopy || isPaste || isCut) {\n return false;\n }\n\n return this.captureEvents;\n }\n\n selectNode() {\n this.updateComponentProps({\n selected: true\n });\n }\n\n deselectNode() {\n this.updateComponentProps({\n selected: false\n });\n }\n\n getMarkPos() {\n const pos = this.view.posAtDOM(this.dom);\n const resolvedPos = this.view.state.doc.resolve(pos);\n const range = getMarkRange(resolvedPos, this.node.type);\n return range;\n }\n\n destroy() {\n this.vm.$destroy();\n }\n\n}\n\nclass Emitter {\n // Add an event listener for given event\n on(event, fn) {\n this._callbacks = this._callbacks || {}; // Create namespace for this event\n\n if (!this._callbacks[event]) {\n this._callbacks[event] = [];\n }\n\n this._callbacks[event].push(fn);\n\n return this;\n }\n\n emit(event, ...args) {\n this._callbacks = this._callbacks || {};\n const callbacks = this._callbacks[event];\n\n if (callbacks) {\n callbacks.forEach(callback => callback.apply(this, args));\n }\n\n return this;\n } // Remove event listener for given event.\n // If fn is not provided, all event listeners for that event will be removed.\n // If neither is provided, all event listeners will be removed.\n\n\n off(event, fn) {\n if (!arguments.length) {\n this._callbacks = {};\n } else {\n // event listeners for the given event\n const callbacks = this._callbacks ? this._callbacks[event] : null;\n\n if (callbacks) {\n if (fn) {\n this._callbacks[event] = callbacks.filter(cb => cb !== fn); // remove specific handler\n } else {\n delete this._callbacks[event]; // remove all handlers\n }\n }\n }\n\n return this;\n }\n\n}\n\nclass Extension {\n constructor(options = {}) {\n this.options = { ...this.defaultOptions,\n ...options\n };\n }\n\n init() {\n return null;\n }\n\n bindEditor(editor = null) {\n this.editor = editor;\n }\n\n get name() {\n return null;\n }\n\n get type() {\n return 'extension';\n }\n\n get defaultOptions() {\n return {};\n }\n\n get plugins() {\n return [];\n }\n\n inputRules() {\n return [];\n }\n\n pasteRules() {\n return [];\n }\n\n keys() {\n return {};\n }\n\n}\n\nclass ExtensionManager {\n constructor(extensions = [], editor) {\n extensions.forEach(extension => {\n extension.bindEditor(editor);\n extension.init();\n });\n this.extensions = extensions;\n }\n\n get nodes() {\n return this.extensions.filter(extension => extension.type === 'node').reduce((nodes, {\n name,\n schema\n }) => ({ ...nodes,\n [name]: schema\n }), {});\n }\n\n get options() {\n const {\n view\n } = this;\n return this.extensions.reduce((nodes, extension) => ({ ...nodes,\n [extension.name]: new Proxy(extension.options, {\n set(obj, prop, value) {\n const changed = obj[prop] !== value;\n Object.assign(obj, {\n [prop]: value\n });\n\n if (changed) {\n view.updateState(view.state);\n }\n\n return true;\n }\n\n })\n }), {});\n }\n\n get marks() {\n return this.extensions.filter(extension => extension.type === 'mark').reduce((marks, {\n name,\n schema\n }) => ({ ...marks,\n [name]: schema\n }), {});\n }\n\n get plugins() {\n return this.extensions.filter(extension => extension.plugins).reduce((allPlugins, {\n plugins\n }) => [...allPlugins, ...plugins], []);\n }\n\n keymaps({\n schema\n }) {\n const extensionKeymaps = this.extensions.filter(extension => ['extension'].includes(extension.type)).filter(extension => extension.keys).map(extension => extension.keys({\n schema\n }));\n const nodeMarkKeymaps = this.extensions.filter(extension => ['node', 'mark'].includes(extension.type)).filter(extension => extension.keys).map(extension => extension.keys({\n type: schema[\"\".concat(extension.type, \"s\")][extension.name],\n schema\n }));\n return [...extensionKeymaps, ...nodeMarkKeymaps].map(keys => keymap(keys));\n }\n\n inputRules({\n schema,\n excludedExtensions\n }) {\n if (!(excludedExtensions instanceof Array) && excludedExtensions) return [];\n const allowedExtensions = excludedExtensions instanceof Array ? this.extensions.filter(extension => !excludedExtensions.includes(extension.name)) : this.extensions;\n const extensionInputRules = allowedExtensions.filter(extension => ['extension'].includes(extension.type)).filter(extension => extension.inputRules).map(extension => extension.inputRules({\n schema\n }));\n const nodeMarkInputRules = allowedExtensions.filter(extension => ['node', 'mark'].includes(extension.type)).filter(extension => extension.inputRules).map(extension => extension.inputRules({\n type: schema[\"\".concat(extension.type, \"s\")][extension.name],\n schema\n }));\n return [...extensionInputRules, ...nodeMarkInputRules].reduce((allInputRules, inputRules) => [...allInputRules, ...inputRules], []);\n }\n\n pasteRules({\n schema,\n excludedExtensions\n }) {\n if (!(excludedExtensions instanceof Array) && excludedExtensions) return [];\n const allowedExtensions = excludedExtensions instanceof Array ? this.extensions.filter(extension => !excludedExtensions.includes(extension.name)) : this.extensions;\n const extensionPasteRules = allowedExtensions.filter(extension => ['extension'].includes(extension.type)).filter(extension => extension.pasteRules).map(extension => extension.pasteRules({\n schema\n }));\n const nodeMarkPasteRules = allowedExtensions.filter(extension => ['node', 'mark'].includes(extension.type)).filter(extension => extension.pasteRules).map(extension => extension.pasteRules({\n type: schema[\"\".concat(extension.type, \"s\")][extension.name],\n schema\n }));\n return [...extensionPasteRules, ...nodeMarkPasteRules].reduce((allPasteRules, pasteRules) => [...allPasteRules, ...pasteRules], []);\n }\n\n commands({\n schema,\n view\n }) {\n return this.extensions.filter(extension => extension.commands).reduce((allCommands, extension) => {\n const {\n name,\n type\n } = extension;\n const commands = {};\n const value = extension.commands({\n schema,\n ...(['node', 'mark'].includes(type) ? {\n type: schema[\"\".concat(type, \"s\")][name]\n } : {})\n });\n\n const apply = (cb, attrs) => {\n if (!view.editable) {\n return false;\n }\n\n view.focus();\n return cb(attrs)(view.state, view.dispatch, view);\n };\n\n const handle = (_name, _value) => {\n if (Array.isArray(_value)) {\n commands[_name] = attrs => _value.forEach(callback => apply(callback, attrs));\n } else if (typeof _value === 'function') {\n commands[_name] = attrs => apply(_value, attrs);\n }\n };\n\n if (typeof value === 'object') {\n Object.entries(value).forEach(([commandName, commandValue]) => {\n handle(commandName, commandValue);\n });\n } else {\n handle(name, value);\n }\n\n return { ...allCommands,\n ...commands\n };\n }, {});\n }\n\n}\n\nfunction injectCSS (css) {\n if (process.env.NODE_ENV !== 'test') {\n const style = document.createElement('style');\n style.type = 'text/css';\n style.textContent = css;\n const {\n head\n } = document;\n const {\n firstChild\n } = head;\n\n if (firstChild) {\n head.insertBefore(style, firstChild);\n } else {\n head.appendChild(style);\n }\n }\n}\n\nclass Mark extends Extension {\n constructor(options = {}) {\n super(options);\n }\n\n get type() {\n return 'mark';\n }\n\n get view() {\n return null;\n }\n\n get schema() {\n return null;\n }\n\n command() {\n return () => {};\n }\n\n}\n\nfunction minMax(value = 0, min = 0, max = 0) {\n return Math.min(Math.max(parseInt(value, 10), min), max);\n}\n\nclass Node extends Extension {\n constructor(options = {}) {\n super(options);\n }\n\n get type() {\n return 'node';\n }\n\n get view() {\n return null;\n }\n\n get schema() {\n return null;\n }\n\n command() {\n return () => {};\n }\n\n}\n\nclass Doc extends Node {\n get name() {\n return 'doc';\n }\n\n get schema() {\n return {\n content: 'block+'\n };\n }\n\n}\n\nclass Paragraph extends Node {\n get name() {\n return 'paragraph';\n }\n\n get schema() {\n return {\n content: 'inline*',\n group: 'block',\n draggable: false,\n parseDOM: [{\n tag: 'p'\n }],\n toDOM: () => ['p', 0]\n };\n }\n\n commands({\n type\n }) {\n return () => setBlockType(type);\n }\n\n}\n\nclass Text extends Node {\n get name() {\n return 'text';\n }\n\n get schema() {\n return {\n group: 'inline'\n };\n }\n\n}\n\nvar css = \".ProseMirror {\\n position: relative;\\n}\\n\\n.ProseMirror {\\n word-wrap: break-word;\\n white-space: pre-wrap;\\n -webkit-font-variant-ligatures: none;\\n font-variant-ligatures: none;\\n}\\n\\n.ProseMirror pre {\\n white-space: pre-wrap;\\n}\\n\\n.ProseMirror-gapcursor {\\n display: none;\\n pointer-events: none;\\n position: absolute;\\n}\\n\\n.ProseMirror-gapcursor:after {\\n content: \\\"\\\";\\n display: block;\\n position: absolute;\\n top: -2px;\\n width: 20px;\\n border-top: 1px solid black;\\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\\n}\\n\\n@keyframes ProseMirror-cursor-blink {\\n to {\\n visibility: hidden;\\n }\\n}\\n\\n.ProseMirror-hideselection *::selection {\\n background: transparent;\\n}\\n\\n.ProseMirror-hideselection *::-moz-selection {\\n background: transparent;\\n}\\n\\n.ProseMirror-hideselection * {\\n caret-color: transparent;\\n}\\n\\n.ProseMirror-focused .ProseMirror-gapcursor {\\n display: block;\\n}\\n\";\n\nclass Editor extends Emitter {\n constructor(options = {}) {\n super();\n this.defaultOptions = {\n editorProps: {},\n editable: true,\n autoFocus: null,\n extensions: [],\n content: '',\n topNode: 'doc',\n emptyDocument: {\n type: 'doc',\n content: [{\n type: 'paragraph'\n }]\n },\n useBuiltInExtensions: true,\n disableInputRules: false,\n disablePasteRules: false,\n dropCursor: {},\n enableDropCursor: true,\n enableGapCursor: true,\n parseOptions: {},\n injectCSS: true,\n onInit: () => {},\n onTransaction: () => {},\n onUpdate: () => {},\n onFocus: () => {},\n onBlur: () => {},\n onPaste: () => {},\n onDrop: () => {}\n };\n this.events = ['init', 'transaction', 'update', 'focus', 'blur', 'paste', 'drop'];\n this.init(options);\n }\n\n init(options = {}) {\n this.setOptions({ ...this.defaultOptions,\n ...options\n });\n this.focused = false;\n this.selection = {\n from: 0,\n to: 0\n };\n this.element = document.createElement('div');\n this.extensions = this.createExtensions();\n this.nodes = this.createNodes();\n this.marks = this.createMarks();\n this.schema = this.createSchema();\n this.plugins = this.createPlugins();\n this.keymaps = this.createKeymaps();\n this.inputRules = this.createInputRules();\n this.pasteRules = this.createPasteRules();\n this.view = this.createView();\n this.commands = this.createCommands();\n this.setActiveNodesAndMarks();\n\n if (this.options.injectCSS) {\n injectCSS(css);\n }\n\n if (this.options.autoFocus !== null) {\n this.focus(this.options.autoFocus);\n }\n\n this.events.forEach(name => {\n this.on(name, this.options[camelCase(\"on \".concat(name))] || (() => {}));\n });\n this.emit('init', {\n view: this.view,\n state: this.state\n }); // give extension manager access to our view\n\n this.extensions.view = this.view;\n }\n\n setOptions(options) {\n this.options = { ...this.options,\n ...options\n };\n\n if (this.view && this.state) {\n this.view.updateState(this.state);\n }\n }\n\n get builtInExtensions() {\n if (!this.options.useBuiltInExtensions) {\n return [];\n }\n\n return [new Doc(), new Text(), new Paragraph()];\n }\n\n get state() {\n return this.view ? this.view.state : null;\n }\n\n createExtensions() {\n return new ExtensionManager([...this.builtInExtensions, ...this.options.extensions], this);\n }\n\n createPlugins() {\n return this.extensions.plugins;\n }\n\n createKeymaps() {\n return this.extensions.keymaps({\n schema: this.schema\n });\n }\n\n createInputRules() {\n return this.extensions.inputRules({\n schema: this.schema,\n excludedExtensions: this.options.disableInputRules\n });\n }\n\n createPasteRules() {\n return this.extensions.pasteRules({\n schema: this.schema,\n excludedExtensions: this.options.disablePasteRules\n });\n }\n\n createCommands() {\n return this.extensions.commands({\n schema: this.schema,\n view: this.view\n });\n }\n\n createNodes() {\n return this.extensions.nodes;\n }\n\n createMarks() {\n return this.extensions.marks;\n }\n\n createSchema() {\n return new Schema({\n topNode: this.options.topNode,\n nodes: this.nodes,\n marks: this.marks\n });\n }\n\n createState() {\n return EditorState.create({\n schema: this.schema,\n doc: this.createDocument(this.options.content),\n plugins: [...this.plugins, inputRules({\n rules: this.inputRules\n }), ...this.pasteRules, ...this.keymaps, keymap({\n Backspace: undoInputRule\n }), keymap(baseKeymap), ...(this.options.enableDropCursor ? [dropCursor(this.options.dropCursor)] : []), ...(this.options.enableGapCursor ? [gapCursor()] : []), new Plugin({\n key: new PluginKey('editable'),\n props: {\n editable: () => this.options.editable\n }\n }), new Plugin({\n props: {\n attributes: {\n tabindex: 0\n },\n handleDOMEvents: {\n focus: (view, event) => {\n this.focused = true;\n this.emit('focus', {\n event,\n state: view.state,\n view\n });\n const transaction = this.state.tr.setMeta('focused', true);\n this.view.dispatch(transaction);\n },\n blur: (view, event) => {\n this.focused = false;\n this.emit('blur', {\n event,\n state: view.state,\n view\n });\n const transaction = this.state.tr.setMeta('focused', false);\n this.view.dispatch(transaction);\n }\n }\n }\n }), new Plugin({\n props: this.options.editorProps\n })]\n });\n }\n\n createDocument(content, parseOptions = this.options.parseOptions) {\n if (content === null) {\n return this.schema.nodeFromJSON(this.options.emptyDocument);\n }\n\n if (typeof content === 'object') {\n try {\n return this.schema.nodeFromJSON(content);\n } catch (error) {\n console.warn('[tiptap warn]: Invalid content.', 'Passed value:', content, 'Error:', error);\n return this.schema.nodeFromJSON(this.options.emptyDocument);\n }\n }\n\n if (typeof content === 'string') {\n const htmlString = \"

    \".concat(content, \"
    \");\n const parser = new window.DOMParser();\n const element = parser.parseFromString(htmlString, 'text/html').body.firstElementChild;\n return DOMParser.fromSchema(this.schema).parse(element, parseOptions);\n }\n\n return false;\n }\n\n createView() {\n return new EditorView(this.element, {\n state: this.createState(),\n handlePaste: (...args) => {\n this.emit('paste', ...args);\n },\n handleDrop: (...args) => {\n this.emit('drop', ...args);\n },\n dispatchTransaction: this.dispatchTransaction.bind(this)\n });\n }\n\n setParentComponent(component = null) {\n if (!component) {\n return;\n }\n\n this.view.setProps({\n nodeViews: this.initNodeViews({\n parent: component,\n extensions: [...this.builtInExtensions, ...this.options.extensions]\n })\n });\n }\n\n initNodeViews({\n parent,\n extensions\n }) {\n return extensions.filter(extension => ['node', 'mark'].includes(extension.type)).filter(extension => extension.view).reduce((nodeViews, extension) => {\n const nodeView = (node, view, getPos, decorations) => {\n const component = extension.view;\n return new ComponentView(component, {\n editor: this,\n extension,\n parent,\n node,\n view,\n getPos,\n decorations\n });\n };\n\n return { ...nodeViews,\n [extension.name]: nodeView\n };\n }, {});\n }\n\n dispatchTransaction(transaction) {\n const newState = this.state.apply(transaction);\n this.view.updateState(newState);\n this.selection = {\n from: this.state.selection.from,\n to: this.state.selection.to\n };\n this.setActiveNodesAndMarks();\n this.emit('transaction', {\n getHTML: this.getHTML.bind(this),\n getJSON: this.getJSON.bind(this),\n state: this.state,\n transaction\n });\n\n if (!transaction.docChanged || transaction.getMeta('preventUpdate')) {\n return;\n }\n\n this.emitUpdate(transaction);\n }\n\n emitUpdate(transaction) {\n this.emit('update', {\n getHTML: this.getHTML.bind(this),\n getJSON: this.getJSON.bind(this),\n state: this.state,\n transaction\n });\n }\n\n resolveSelection(position = null) {\n if (this.selection && position === null) {\n return this.selection;\n }\n\n if (position === 'start' || position === true) {\n return {\n from: 0,\n to: 0\n };\n }\n\n if (position === 'end') {\n const {\n doc\n } = this.state;\n return {\n from: doc.content.size,\n to: doc.content.size\n };\n }\n\n return {\n from: position,\n to: position\n };\n }\n\n focus(position = null) {\n if (this.view.focused && position === null || position === false) {\n return;\n }\n\n const {\n from,\n to\n } = this.resolveSelection(position);\n this.setSelection(from, to);\n setTimeout(() => this.view.focus(), 10);\n }\n\n setSelection(from = 0, to = 0) {\n const {\n doc,\n tr\n } = this.state;\n const resolvedFrom = minMax(from, 0, doc.content.size);\n const resolvedEnd = minMax(to, 0, doc.content.size);\n const selection = TextSelection.create(doc, resolvedFrom, resolvedEnd);\n const transaction = tr.setSelection(selection);\n this.view.dispatch(transaction);\n }\n\n blur() {\n this.view.dom.blur();\n }\n\n getSchemaJSON() {\n return JSON.parse(JSON.stringify({\n nodes: this.extensions.nodes,\n marks: this.extensions.marks\n }));\n }\n\n getHTML() {\n const div = document.createElement('div');\n const fragment = DOMSerializer.fromSchema(this.schema).serializeFragment(this.state.doc.content);\n div.appendChild(fragment);\n return div.innerHTML;\n }\n\n getJSON() {\n return this.state.doc.toJSON();\n }\n\n setContent(content = {}, emitUpdate = false, parseOptions) {\n const {\n doc,\n tr\n } = this.state;\n const document = this.createDocument(content, parseOptions);\n const selection = TextSelection.create(doc, 0, doc.content.size);\n const transaction = tr.setSelection(selection).replaceSelectionWith(document, false).setMeta('preventUpdate', !emitUpdate);\n this.view.dispatch(transaction);\n }\n\n clearContent(emitUpdate = false) {\n this.setContent(this.options.emptyDocument, emitUpdate);\n }\n\n setActiveNodesAndMarks() {\n this.activeMarks = Object.entries(this.schema.marks).reduce((marks, [name, mark]) => ({ ...marks,\n [name]: (attrs = {}) => markIsActive(this.state, mark, attrs)\n }), {});\n this.activeMarkAttrs = Object.entries(this.schema.marks).reduce((marks, [name, mark]) => ({ ...marks,\n [name]: getMarkAttrs(this.state, mark)\n }), {});\n this.activeNodes = Object.entries(this.schema.nodes).reduce((nodes, [name, node]) => ({ ...nodes,\n [name]: (attrs = {}) => nodeIsActive(this.state, node, attrs)\n }), {});\n }\n\n getMarkAttrs(type = null) {\n return this.activeMarkAttrs[type];\n }\n\n getNodeAttrs(type = null) {\n return { ...getNodeAttrs(this.state, this.schema.nodes[type])\n };\n }\n\n get isActive() {\n return Object.entries({ ...this.activeMarks,\n ...this.activeNodes\n }).reduce((types, [name, value]) => ({ ...types,\n [name]: (attrs = {}) => value(attrs)\n }), {});\n }\n\n registerPlugin(plugin = null, handlePlugins) {\n const plugins = typeof handlePlugins === 'function' ? handlePlugins(plugin, this.state.plugins) : [plugin, ...this.state.plugins];\n const newState = this.state.reconfigure({\n plugins\n });\n this.view.updateState(newState);\n }\n\n unregisterPlugin(name = null) {\n if (!name || !this.view.docView) {\n return;\n }\n\n const newState = this.state.reconfigure({\n plugins: this.state.plugins.filter(plugin => !plugin.key.startsWith(\"\".concat(name, \"$\")))\n });\n this.view.updateState(newState);\n }\n\n destroy() {\n if (!this.view) {\n return;\n }\n\n this.view.destroy();\n }\n\n}\n\nvar EditorContent = {\n props: {\n editor: {\n default: null,\n type: Object\n }\n },\n watch: {\n editor: {\n immediate: true,\n\n handler(editor) {\n if (editor && editor.element) {\n this.$nextTick(() => {\n this.$el.appendChild(editor.element.firstChild);\n editor.setParentComponent(this);\n });\n }\n }\n\n }\n },\n\n render(createElement) {\n return createElement('div');\n },\n\n beforeDestroy() {\n this.editor.element = this.$el;\n }\n\n};\n\nclass Menu {\n constructor({\n options\n }) {\n this.options = options;\n this.preventHide = false; // the mousedown event is fired before blur so we can prevent it\n\n this.mousedownHandler = this.handleClick.bind(this);\n this.options.element.addEventListener('mousedown', this.mousedownHandler, {\n capture: true\n });\n\n this.blurHandler = () => {\n if (this.preventHide) {\n this.preventHide = false;\n return;\n }\n\n this.options.editor.emit('menubar:focusUpdate', false);\n };\n\n this.options.editor.on('blur', this.blurHandler);\n }\n\n handleClick() {\n this.preventHide = true;\n }\n\n destroy() {\n this.options.element.removeEventListener('mousedown', this.mousedownHandler);\n this.options.editor.off('blur', this.blurHandler);\n }\n\n}\n\nfunction MenuBar (options) {\n return new Plugin({\n key: new PluginKey('menu_bar'),\n\n view(editorView) {\n return new Menu({\n editorView,\n options\n });\n }\n\n });\n}\n\nvar EditorMenuBar = {\n props: {\n editor: {\n default: null,\n type: Object\n }\n },\n\n data() {\n return {\n focused: false\n };\n },\n\n watch: {\n editor: {\n immediate: true,\n\n handler(editor) {\n if (editor) {\n this.$nextTick(() => {\n editor.registerPlugin(MenuBar({\n editor,\n element: this.$el\n }));\n this.focused = editor.focused;\n editor.on('focus', () => {\n this.focused = true;\n });\n editor.on('menubar:focusUpdate', focused => {\n this.focused = focused;\n });\n });\n }\n }\n\n }\n },\n\n render() {\n if (!this.editor) {\n return null;\n }\n\n return this.$scopedSlots.default({\n focused: this.focused,\n focus: this.editor.focus,\n commands: this.editor.commands,\n isActive: this.editor.isActive,\n getMarkAttrs: this.editor.getMarkAttrs.bind(this.editor),\n getNodeAttrs: this.editor.getNodeAttrs.bind(this.editor)\n });\n }\n\n};\n\nfunction textRange(node, from, to) {\n const range = document.createRange();\n range.setEnd(node, to == null ? node.nodeValue.length : to);\n range.setStart(node, from || 0);\n return range;\n}\n\nfunction singleRect(object, bias) {\n const rects = object.getClientRects();\n return !rects.length ? object.getBoundingClientRect() : rects[bias < 0 ? 0 : rects.length - 1];\n}\n\nfunction coordsAtPos(view, pos, end = false) {\n const {\n node,\n offset\n } = view.docView.domFromPos(pos);\n let side;\n let rect;\n\n if (node.nodeType === 3) {\n if (end && offset < node.nodeValue.length) {\n rect = singleRect(textRange(node, offset - 1, offset), -1);\n side = 'right';\n } else if (offset < node.nodeValue.length) {\n rect = singleRect(textRange(node, offset, offset + 1), -1);\n side = 'left';\n }\n } else if (node.firstChild) {\n if (offset < node.childNodes.length) {\n const child = node.childNodes[offset];\n rect = singleRect(child.nodeType === 3 ? textRange(child) : child, -1);\n side = 'left';\n }\n\n if ((!rect || rect.top === rect.bottom) && offset) {\n const child = node.childNodes[offset - 1];\n rect = singleRect(child.nodeType === 3 ? textRange(child) : child, 1);\n side = 'right';\n }\n } else {\n rect = node.getBoundingClientRect();\n side = 'left';\n }\n\n const x = rect[side];\n return {\n top: rect.top,\n bottom: rect.bottom,\n left: x,\n right: x\n };\n}\n\nclass Menu$1 {\n constructor({\n options,\n editorView\n }) {\n this.options = { ...{\n element: null,\n keepInBounds: true,\n onUpdate: () => false\n },\n ...options\n };\n this.editorView = editorView;\n this.isActive = false;\n this.left = 0;\n this.bottom = 0;\n this.top = 0;\n this.preventHide = false; // the mousedown event is fired before blur so we can prevent it\n\n this.mousedownHandler = this.handleClick.bind(this);\n this.options.element.addEventListener('mousedown', this.mousedownHandler, {\n capture: true\n });\n\n this.focusHandler = ({\n view\n }) => {\n this.update(view);\n };\n\n this.options.editor.on('focus', this.focusHandler);\n\n this.blurHandler = ({\n event\n }) => {\n if (this.preventHide) {\n this.preventHide = false;\n return;\n }\n\n this.hide(event);\n };\n\n this.options.editor.on('blur', this.blurHandler);\n }\n\n handleClick() {\n this.preventHide = true;\n }\n\n update(view, lastState) {\n const {\n state\n } = view;\n\n if (view.composing) {\n return;\n } // Don't do anything if the document/selection didn't change\n\n\n if (lastState && lastState.doc.eq(state.doc) && lastState.selection.eq(state.selection)) {\n return;\n } // Hide the tooltip if the selection is empty\n\n\n if (state.selection.empty) {\n this.hide();\n return;\n } // Otherwise, reposition it and update its content\n\n\n const {\n from,\n to\n } = state.selection; // These are in screen coordinates\n // We can't use EditorView.cordsAtPos here because it can't handle linebreaks correctly\n // See: https://github.com/ProseMirror/prosemirror-view/pull/47\n\n const start = coordsAtPos(view, from);\n const end = coordsAtPos(view, to, true); // The box in which the tooltip is positioned, to use as base\n\n const parent = this.options.element.offsetParent;\n\n if (!parent) {\n this.hide();\n return;\n }\n\n const box = parent.getBoundingClientRect();\n const el = this.options.element.getBoundingClientRect(); // Find a center-ish x position from the selection endpoints (when\n // crossing lines, end may be more to the left)\n\n const left = (start.left + end.left) / 2 - box.left; // Keep the menuBubble in the bounding box of the offsetParent i\n\n this.left = Math.round(this.options.keepInBounds ? Math.min(box.width - el.width / 2, Math.max(left, el.width / 2)) : left);\n this.bottom = Math.round(box.bottom - start.top);\n this.top = Math.round(end.bottom - box.top);\n this.isActive = true;\n this.sendUpdate();\n }\n\n sendUpdate() {\n this.options.onUpdate({\n isActive: this.isActive,\n left: this.left,\n bottom: this.bottom,\n top: this.top\n });\n }\n\n hide(event) {\n if (event && event.relatedTarget && this.options.element.parentNode && this.options.element.parentNode.contains(event.relatedTarget)) {\n return;\n }\n\n this.isActive = false;\n this.sendUpdate();\n }\n\n destroy() {\n this.options.element.removeEventListener('mousedown', this.mousedownHandler);\n this.options.editor.off('focus', this.focusHandler);\n this.options.editor.off('blur', this.blurHandler);\n }\n\n}\n\nfunction MenuBubble (options) {\n return new Plugin({\n key: new PluginKey('menu_bubble'),\n\n view(editorView) {\n return new Menu$1({\n editorView,\n options\n });\n }\n\n });\n}\n\nvar EditorMenuBubble = {\n props: {\n editor: {\n default: null,\n type: Object\n },\n keepInBounds: {\n default: true,\n type: Boolean\n }\n },\n\n data() {\n return {\n menu: {\n isActive: false,\n left: 0,\n bottom: 0\n }\n };\n },\n\n watch: {\n editor: {\n immediate: true,\n\n handler(editor) {\n if (editor) {\n this.$nextTick(() => {\n editor.registerPlugin(MenuBubble({\n editor,\n element: this.$el,\n keepInBounds: this.keepInBounds,\n onUpdate: menu => {\n // the second check ensures event is fired only once\n if (menu.isActive && this.menu.isActive === false) {\n this.$emit('show', menu);\n } else if (!menu.isActive && this.menu.isActive === true) {\n this.$emit('hide', menu);\n }\n\n this.menu = menu;\n }\n }));\n });\n }\n }\n\n }\n },\n\n render() {\n if (!this.editor) {\n return null;\n }\n\n return this.$scopedSlots.default({\n focused: this.editor.view.focused,\n focus: this.editor.focus,\n commands: this.editor.commands,\n isActive: this.editor.isActive,\n getMarkAttrs: this.editor.getMarkAttrs.bind(this.editor),\n getNodeAttrs: this.editor.getNodeAttrs.bind(this.editor),\n menu: this.menu\n });\n },\n\n beforeDestroy() {\n this.editor.unregisterPlugin('menu_bubble');\n }\n\n};\n\nclass Menu$2 {\n constructor({\n options,\n editorView\n }) {\n this.options = { ...{\n resizeObserver: true,\n element: null,\n onUpdate: () => false\n },\n ...options\n };\n this.preventHide = false;\n this.editorView = editorView;\n this.isActive = false;\n this.top = 0; // the mousedown event is fired before blur so we can prevent it\n\n this.mousedownHandler = this.handleClick.bind(this);\n this.options.element.addEventListener('mousedown', this.mousedownHandler, {\n capture: true\n });\n\n this.focusHandler = ({\n view\n }) => {\n this.update(view);\n };\n\n this.options.editor.on('focus', this.focusHandler);\n\n this.blurHandler = ({\n event\n }) => {\n if (this.preventHide) {\n this.preventHide = false;\n return;\n }\n\n this.hide(event);\n };\n\n this.options.editor.on('blur', this.blurHandler); // sometimes we have to update the position\n // because of a loaded images for example\n\n if (this.options.resizeObserver && window.ResizeObserver) {\n this.resizeObserver = new ResizeObserver(() => {\n if (this.isActive) {\n this.update(this.editorView);\n }\n });\n this.resizeObserver.observe(this.editorView.dom);\n }\n }\n\n handleClick() {\n this.preventHide = true;\n }\n\n update(view, lastState) {\n const {\n state\n } = view; // Don't do anything if the document/selection didn't change\n\n if (lastState && lastState.doc.eq(state.doc) && lastState.selection.eq(state.selection)) {\n return;\n }\n\n if (!state.selection.empty) {\n this.hide();\n return;\n }\n\n const currentDom = view.domAtPos(state.selection.anchor);\n const isActive = currentDom.node.innerHTML === '
    ' && currentDom.node.tagName === 'P' && currentDom.node.parentNode === view.dom;\n\n if (!isActive) {\n this.hide();\n return;\n }\n\n const parent = this.options.element.offsetParent;\n\n if (!parent) {\n this.hide();\n return;\n }\n\n const editorBoundings = parent.getBoundingClientRect();\n const cursorBoundings = view.coordsAtPos(state.selection.anchor);\n const top = cursorBoundings.top - editorBoundings.top;\n this.isActive = true;\n this.top = top;\n this.sendUpdate();\n }\n\n sendUpdate() {\n this.options.onUpdate({\n isActive: this.isActive,\n top: this.top\n });\n }\n\n hide(event) {\n if (event && event.relatedTarget && this.options.element.parentNode && this.options.element.parentNode.contains(event.relatedTarget)) {\n return;\n }\n\n this.isActive = false;\n this.sendUpdate();\n }\n\n destroy() {\n this.options.element.removeEventListener('mousedown', this.mousedownHandler);\n\n if (this.resizeObserver) {\n this.resizeObserver.unobserve(this.editorView.dom);\n }\n\n this.options.editor.off('focus', this.focusHandler);\n this.options.editor.off('blur', this.blurHandler);\n }\n\n}\n\nfunction FloatingMenu (options) {\n return new Plugin({\n key: new PluginKey('floating_menu'),\n\n view(editorView) {\n return new Menu$2({\n editorView,\n options\n });\n }\n\n });\n}\n\nvar EditorFloatingMenu = {\n props: {\n editor: {\n default: null,\n type: Object\n }\n },\n\n data() {\n return {\n menu: {\n isActive: false,\n left: 0,\n bottom: 0\n }\n };\n },\n\n watch: {\n editor: {\n immediate: true,\n\n handler(editor) {\n if (editor) {\n this.$nextTick(() => {\n editor.registerPlugin(FloatingMenu({\n editor,\n element: this.$el,\n onUpdate: menu => {\n // the second check ensures event is fired only once\n if (menu.isActive && this.menu.isActive === false) {\n this.$emit('show', menu);\n } else if (!menu.isActive && this.menu.isActive === true) {\n this.$emit('hide', menu);\n }\n\n this.menu = menu;\n }\n }));\n });\n }\n }\n\n }\n },\n\n render() {\n if (!this.editor) {\n return null;\n }\n\n return this.$scopedSlots.default({\n focused: this.editor.view.focused,\n focus: this.editor.focus,\n commands: this.editor.commands,\n isActive: this.editor.isActive,\n getMarkAttrs: this.editor.getMarkAttrs.bind(this.editor),\n getNodeAttrs: this.editor.getNodeAttrs.bind(this.editor),\n menu: this.menu\n });\n },\n\n beforeDestroy() {\n this.editor.unregisterPlugin('floating_menu');\n }\n\n};\n\nexport { Doc, Editor, EditorContent, EditorFloatingMenu, EditorMenuBar, EditorMenuBubble, Extension, Mark, Node, Paragraph, Text };\n"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-68ea9.9821cd6a.js b/priv/static/adminfe/static/js/chunk-68ea9.9821cd6a.js new file mode 100644 index 000000000..02091ed84 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-68ea9.9821cd6a.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-68ea9"],{"/eX4":function(s,t,i){"use strict";i.r(t);var e=[function(){var s=this.$createElement,t=this._self._c||s;return t("div",{staticClass:"pic-404"},[t("img",{staticClass:"pic-404__parent",attrs:{src:i("o2sD"),alt:"404"}}),this._v(" "),t("img",{staticClass:"pic-404__child left",attrs:{src:i("Jvyq"),alt:"404"}}),this._v(" "),t("img",{staticClass:"pic-404__child mid",attrs:{src:i("Jvyq"),alt:"404"}}),this._v(" "),t("img",{staticClass:"pic-404__child right",attrs:{src:i("Jvyq"),alt:"404"}})])}],n={name:"Page404",computed:{message:function(){return"There is nothing here"}}},r=(i("J67/"),i("KHd+")),l=Object(r.a)(n,function(){var s=this,t=s.$createElement,i=s._self._c||t;return i("div",{staticClass:"wscn-http404-container"},[i("div",{staticClass:"wscn-http404"},[s._m(0),s._v(" "),i("div",{staticClass:"bullshit"},[i("div",{staticClass:"bullshit__oops"},[s._v("OOPS!")]),s._v(" "),i("div",{staticClass:"bullshit__headline"},[s._v(s._s(s.message))]),s._v(" "),i("div",{staticClass:"bullshit__info"},[s._v("Please make sure you URL is correct")]),s._v(" "),i("router-link",{staticClass:"bullshit__return-home",attrs:{to:"/"}},[s._v("Go to the home page")])],1)])])},e,!1,null,"1d6b2d2a",null);l.options.__file="404.vue";t.default=l.exports},"J67/":function(s,t,i){"use strict";var e=i("QCkX");i.n(e).a},Jvyq:function(s,t){s.exports="data:image/png;base64,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"},QCkX:function(s,t,i){},o2sD:function(s,t,i){s.exports=i.p+"static/img/404.a57b6f3.png"}}]); +//# sourceMappingURL=chunk-68ea9.9821cd6a.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-68ea9.9821cd6a.js.map b/priv/static/adminfe/static/js/chunk-68ea9.9821cd6a.js.map new file mode 100644 index 000000000..019cede66 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-68ea9.9821cd6a.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/errorPage/404.vue?e9e9","webpack:///./src/views/errorPage/404.vue?e36b","webpack:///src/views/errorPage/404.vue","webpack:///./src/views/errorPage/404.vue","webpack:///./src/views/errorPage/404.vue?ce30","webpack:///./src/assets/404_images/404_cloud.png","webpack:///./src/assets/404_images/404.png"],"names":["staticRenderFns","_h","this","$createElement","_c","_self","staticClass","attrs","src","__webpack_require__","alt","_v","errorPage_404vue_type_script_lang_js_","name","computed","message","component","Object","componentNormalizer","_vm","_m","_s","to","options","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_style_index_0_id_1d6b2d2a_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","n","module","exports","p"],"mappings":"gHAAA,IACAA,GAAA,WAAoC,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,YAAsBF,EAAA,OAAYE,YAAA,kBAAAC,OAAqCC,IAAMC,EAAQ,QAA6BC,IAAA,SAAlMR,KAAiNS,GAAA,KAAAP,EAAA,OAAwBE,YAAA,sBAAAC,OAAyCC,IAAMC,EAAQ,QAAmCC,IAAA,SAAnUR,KAAkVS,GAAA,KAAAP,EAAA,OAAwBE,YAAA,qBAAAC,OAAwCC,IAAMC,EAAQ,QAAmCC,IAAA,SAAncR,KAAkdS,GAAA,KAAAP,EAAA,OAAwBE,YAAA,uBAAAC,OAA0CC,IAAMC,EAAQ,QAAmCC,IAAA,aCDjaE,GCsBxMC,KAAA,UACAC,UACAC,QADA,WAEA,yDCjBAC,EAAgBC,OAAAC,EAAA,EAAAD,CACdL,EHTF,WAA0B,IAAAO,EAAAjB,KAAaD,EAAAkB,EAAAhB,eAA0BC,EAAAe,EAAAd,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,2BAAqCF,EAAA,OAAYE,YAAA,iBAA2Ba,EAAAC,GAAA,GAAAD,EAAAR,GAAA,KAAAP,EAAA,OAAkCE,YAAA,aAAuBF,EAAA,OAAYE,YAAA,mBAA6Ba,EAAAR,GAAA,WAAAQ,EAAAR,GAAA,KAAAP,EAAA,OAA0CE,YAAA,uBAAiCa,EAAAR,GAAAQ,EAAAE,GAAAF,EAAAJ,YAAAI,EAAAR,GAAA,KAAAP,EAAA,OAAsDE,YAAA,mBAA6Ba,EAAAR,GAAA,yCAAAQ,EAAAR,GAAA,KAAAP,EAAA,eAAgFE,YAAA,wBAAAC,OAA2Ce,GAAA,OAAUH,EAAAR,GAAA,kCGWzjBX,GACF,EACA,KACA,WACA,MAIAgB,EAAAO,QAAAC,OAAA,UACeC,EAAA,QAAAT,+CCpBf,IAAAU,EAAAjB,EAAA,QAAAA,EAAAkB,EAAAD,GAA6e,sBCA7eE,EAAAC,QAAA,0xMCAAD,EAAAC,QAAiBpB,EAAAqB,EAAuB","file":"static/js/chunk-68ea9.9821cd6a.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"wscn-http404-container\"},[_c('div',{staticClass:\"wscn-http404\"},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"bullshit\"},[_c('div',{staticClass:\"bullshit__oops\"},[_vm._v(\"OOPS!\")]),_vm._v(\" \"),_c('div',{staticClass:\"bullshit__headline\"},[_vm._v(_vm._s(_vm.message))]),_vm._v(\" \"),_c('div',{staticClass:\"bullshit__info\"},[_vm._v(\"Please make sure you URL is correct\")]),_vm._v(\" \"),_c('router-link',{staticClass:\"bullshit__return-home\",attrs:{\"to\":\"/\"}},[_vm._v(\"Go to the home page\")])],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pic-404\"},[_c('img',{staticClass:\"pic-404__parent\",attrs:{\"src\":require(\"@/assets/404_images/404.png\"),\"alt\":\"404\"}}),_vm._v(\" \"),_c('img',{staticClass:\"pic-404__child left\",attrs:{\"src\":require(\"@/assets/404_images/404_cloud.png\"),\"alt\":\"404\"}}),_vm._v(\" \"),_c('img',{staticClass:\"pic-404__child mid\",attrs:{\"src\":require(\"@/assets/404_images/404_cloud.png\"),\"alt\":\"404\"}}),_vm._v(\" \"),_c('img',{staticClass:\"pic-404__child right\",attrs:{\"src\":require(\"@/assets/404_images/404_cloud.png\"),\"alt\":\"404\"}})])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./404.vue?vue&type=template&id=1d6b2d2a&scoped=true&\"\nimport script from \"./404.vue?vue&type=script&lang=js&\"\nexport * from \"./404.vue?vue&type=script&lang=js&\"\nimport style0 from \"./404.vue?vue&type=style&index=0&id=1d6b2d2a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d6b2d2a\",\n null\n \n)\n\ncomponent.options.__file = \"404.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=style&index=0&id=1d6b2d2a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=style&index=0&id=1d6b2d2a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJgAAACKCAYAAABW3IOxAAAAAXNSR0IArs4c6QAAElhJREFUeAHtnXuQHMV9x7tndvdOQkgCWZKxkITEQ5YB87AVCT9iEqgyTsXlyA42QVRcScXYzvOPkKeJLSrOy8RVxMSVBNuVqrhIxS7KJk5BKlWpQKiKX4hgwOII6CzLAk6H0Pt0e/uY6Xx+p7vT3Gl2b2e3Z2d2t7vqdzuP7l//+tvf6+75dU+PVi5kioAxZl01UDtMEG43Wu/AmOuUUYeVVqNKmVGjvX2+HAdqX6mkfqS1Pp2pwQkz1wnju+gdIACZlpTr6npU7FChETIh5uJkKvWYPkO+fUp7oyZUowWt9hWLahTyHU2mK/3YjmApYjxlzGWmSuukQ4iktwP2NZCsmFqWWh9D96hWZp+nvb2lgvompNubWn4tKHYEawGkVqJAnBWVutpmZlono2mdjFnVSlqbcTytnynSpHlaXYPeV5F3QLIDNvNIossRLAlaM3Ehk1etqitDIZGidTKMnbTayvVM8IRAZQj1dNHXF9N9blhQpBc4f2dW3WcmgCwAIPenEGdNJVDbGYhDpOmB+DaunZ+14VrpV31fjxb96dZqeRN7vs29m4WITeKkcssRbAGsEKdUq6lrQ7o6M9M6GWU2LYiW6Snd4HO+p8sFX70dQ7wWjfkW8T4IyYIW41uJNvAEKxuzUQbiSocMwqdbp+sh2ZAVdC0qgRhVur8nS75+A79b2lT9AHo+3mbatpINHMEgz/JKqH7ZmPBtJtA3J3cTtIVz+4m0PsyYfS8D9ytRsrp9RXMpd0Oye+bOUj4YOIJNVsJvQKqdgitAh8aocQbIr/P0d4pLNbmMDOPsXKk9tSYMzUrOux6wbaTg6SN0g9vI3HaLeif6v9SNQg0UwSZr5ndVGP51EmCpiJPEH4OAxwFLBskyhilyvozBzyp+L5JxWxKdjeKSl+j+Xqmgl0D66xrFs3Bd8tlJfv9mQVdTFQNDMMj1Tm3M45Ch0BSRhDeppBqtnXjXZXrnlApV1TAKxwe2hHsreEBYw/015NsYazzwdIM/KBT0ZURa6GZIaFHL0eWf5SZs/E7LKdqI2LjQbSjLaxIqd3W5ap6ma1yXiY2MowB6nLyPQbZJ7dE1Kzz6Ri2hG6zMdINZuD2OYNO7IJn4ylIJfU8wyOVN1cx/8MuAPj+BSq0PFabnFddnbNUB8r8Be8bSsKNVH0oaeXdF51Q13J03cknB8WM9TUeaNbnElI3Iv4NRM0etxGsr9HULRsv1XoAT8HJVToZozw8V9VvaqrH0Ej2G6ltoyao2s+jbFmzSmPX4IB7MG7mowIlSUa+xWYmWdP0Mev7JNl59STBAKqqa+XoWqxkWq+yCr1+iOX3DYvEyuv8R8r3bZt59SbByDV+XmV7QZxOrjnUx7tpT8FL1b3VsIwq22lAyq6PvCDZZMbfy+P/bswXMz68ew4FqtfLyU7bGlvQVwVhBeoXW5iuNi5vNHcZdhkH9cXI/LxsLssu1bwjGuGuJqZmH+M3CYdm0Bnlp49tM/Qxc6yWgWJ02aYpyyjenauHfMXF9dcrZJFZP6/UiKyG2J07YJwn6ogVjGujXINdH81YnkGuKrlFWQvTNP3JSjHueYNWquZY5xvuTFrwb8Zln3INLQjzlAxt6n2BBeBdPjaxm0CZPtYg9e5jEfleebMrClp5vuk9Vwl1CLqZf9nuePljy1YTvqxKku4iB9eUM+m0v1lu8nrR+fbioB7rlmgWp5wkmBYFEOjBmcxCqzbX6bNFkaao+4fvmh3RVRwu+Z3iau5CLl5LggrOx7B/h7xpF68AO7KOI9gXBogWKHrPmakU9UG+rB/SetWD6Fq1dQEv3Eu8QjtHCVYueWso4aT1xraxsQPcTEPmno3YM8nFfEyyuYmnt/CAwlweBujx6n0WARwqe9+OCF55kOodDbzXE20z8lpdD02LuZ42X7D3hwgwCA0ewRjVvQrOqFgar5K2PMyGQl0JqdK//xxzi6wzYA1qmFazhugTSrZiNNfsrcSHXBOebZq+53wH2z7RS+RCpWAvMFnrXLdPvG80kohscLxW8l30dln3PG+ZR/E2QcATy3dSK3kGK41qwNmqbV9nWTlWDtWeSnhnbrT6/kNclOG2U0F6SnveD2YOiY03unzUGQkewGFDcJXsIOILZw9JpikHAESwGFHfJHgKOYPawdJpiEHAEiwHFXbKHgCOYPSydphgEHMFiQHGX7CHgCGYPS6cpBgFHsBhQ3CV7CDiC2cPSaYpBwE1vxIAy4Jd+gUn+V1rA4Ani3CHr65rFdQRrhs5g3ltCsUUWC7cRQbYX/XiziK6LbIaOu7cYAnfS2t3TLJIjWDN03L1WEPg0JPtko4iOYI2QcdeTIPC3kOxDcQkcweJQcdeSIiA8ks3+blyY0BFsISLuvF0E5P3ThyGZfEZwLjiCzUHhDiwgIC/DyJ64cy++OIJZQNWpmIfARZzJtvHT31VyBJuHjTuxhIC8c/ooJJPP7bjgEEgFAfmW5UOOYKlg65TOIHCTI5jjQqoIOIKlCq9T7gjmOJAqAo5gqcLrlDuCOQ6kikBPEww/yw2+7z3FvlynU0XJKW8bgZ5bcAipZDHcLyG/gVy/+owrr16tq2fLNXO0UgtWhopPtmSxN2vb1dC/CdnErzcCxLoUSz+B/Cpy4SJWlys1M1KuhyeqdcP3svWbSe8vkqaj22zfFPqe6ukeoSMA4hPXc00wSCEVdgsirdX7kLbsZYfWE3yc9AW+fltmQ7mLjNJXoLstXdgQGxzBYmHJJ8GofGmhfgX5dWRzrOkdXOSrIIf5OsiLtHB1NgneQH6bOlA3ndQRLBbBfBGMipYNdKW1kjFWKy8exJYq6cXQqJch3GilFupqIIQ2FyfV4QgWi1j2BINUsovzrchvIjtizezyRfbb38cDw0E+sFXgeAs2LvoJZEew2ErKjmBU2gZMkleePoZMrx2KNTH7i2EtVCO0cIdo4ZaGodrKnvorF5rlCLYQkenz7hMMYt1M1tINvh9J9cluuoj2/9T4msjeybo5DOFWmFBdCeHOcwSLBbo7BINUy8n+o4gQa0usKb17cbJSV4+VCurneCy1+mTau5DMWZ4uwSDWVWQlpLoDWTaXbf8cvERR5FPJ2/qnSFZLUrfuyYdUonMnIsR6j1Vz86PsJ5jyMnID4lqtJvViDRyIJYv975yRNzXJs5dvjWO8tFrytGv9n7OXgWlg+2sdEwxivRvl0lp9ECk2yKjXL0s3+CwiXWHX/HM9DNppbL8PubdtgkGsN/INn78s+upnUbS+h8FoZroAtQe5DpEHFReaI1Dl9j8gn2Vbp9ckatsEK1eDrzHl8mEUhSj5AR+D4qOf6gp0in+r14MA9T1kK+K+QbR4bcoeYV9FdsOHA9HobRFsqm7eFwbho1FFcoxymUF+Zubzd/Ju3MaFcXJ+HmLfd5FLkH4dR1I0q+EbaLubuh+J05qYYHSNS6eqZi/OxUviFM5emyHbs0I2vqF9KRk1jT+bLsPf75P3amRThjb0Utb/ibF/RD3LEKJhSEywqUpwL//mdzXUGHNDyMaSmef4uOdhutG8ke1pTF6K9JsDOKYmrFySoYMQ67FWtCUiWLVqrgmU2UMr1tEjOsb9kJZtHLJtwgDry3FaKThx9iIydnhri/EHPZrgJV3hw0mAaJlgkMpjhcF3WIr8U0kyWCwuBu+dIdslXSLbPmwSt4O82u7C4gjsJ8pnkAepKxmjJgotE4xx12+FJvxCIu0JI1OAEcg2Rsu2EcNkibTNcBBlryDbkZbLbdOAHtN1CHs/izxAvZz9lHnCQrQENK3XOpYcj/B7fkL9bUenUPIx9lch24YOySb+GPG+C7E66trbLkxvJZTW/XPI31AHk52a3hLBJishj6JG5hczCRT0Rcj2CmRbj8GXtWiEAPUcsg0ZbjHNIEcTMkkP9VfgLdhZCYsSrFI3HwiC8GEruVlQQuH3QbaDBQ+y6ViyCVBPIdciXWtxLRQtKxXS/T2AiPddukWroSnB6BKXMfZ6Hp9XLqeCeOF2lFfFDhZ8vQ6ybQQZ8WWJ932VVZT6U5kM2B9EPgOxZCCfSmhKsMlqcJ8y6ndSydmiUgAKhor6dQqz1qLaflb1rxTuU+AmrodUQ0OC4fN6Oz6v79KK5X5Zs+/rl0u+TvwmUKrI5lP5f2HWH0MscZZ2JcQSTEiFz+tJfF6yiiDXAbAmhou6H1fL2sT9SZQJsWR6p6sh9rG9XKdb7AFyCVJFv30fTVeRziYzmYAW77tMSGcSzmnByvI6WY2BvTHnZWJRgkw1c5vDBb06QZJBiXqAgu5Gvgq5ZDoss3BOC2aq5ov4vHJPLkGMcZds/O/CWQTEqfxnyN9DLFnTlnmYRzB8Xr+Iz+vnM7eqBQM8Tx/ytHpjC1EHIcoJCnkvch/EOp2nAs91kXSJK3h7mT57+uWNPNl4ji2AWMMtUZwz/pwYA3OhTEnvR8T7fjSPpZ5rwdiH4S8wUN4Myn3Ai38Kcl2Ye0PTM1C8719B/hRivZpeNp1rnm4E8HntwOf1P7RiXucq09UAoCdxSyxPN5fcajdY9i/In4DDaG6tjBhWgFQFVko80AvkErtxSwxF7B+kw/+msHdBrKZLlPMGiDdVV3dBrqvzZlicPbgljjD3OGgEE1/WByDWjb1GLqlDjy3+buR1oCNxFZqna4Brhnw9SJPYsrLhE8jVlP1beaqLJLboseM1tizV1VLB+9+SH0762mM1Qv6eJFkxcYzu8YIkhevRuOJm+DzyOYiVK5dDO3ieIVgkJYUKqcxn8JAfw890GWTbELmdySE2VRjY93vXKB73f0RkAG99XVYmFUem5xBsoSG4BEaGCvpQ0ffWsy4MwnU/FAteGTuWdD/nruX4CDn9PsR6vms5dimjRQkWtcMvePuHff0TXqRdw5uOsrAv9eBpfQqnar+uTH0KAOXJ8PHUgcwog0QEi9rIVM3YkqLH8mVzASR4S1pujqGiZ+iq+81p/2OwvBv5Z8glvq2+DW0TLIqI53tHadle4KWMpZDhKvGtRe+3e8za+xOlQl9NaB8Diz9H7odYlXZx6aV0VggWLTBPoRNF34yUitBOs0Fum98MogJCxn40jlHtPXssKxu+iMjUjpBsYIJ1gkWRgx7VkqefZ1lNnXHbVsjW8jIgnmQncUssjerrwWPp/r6OyF4O+3vQ/o5NTpVgUeukRYIwI7gbJmnZ5FtBDddyEXeKeMPR9D14LFM7v0dZnuxB262Z3DWCLbQYx+5LeOaPez6bnxgzz0PPvYApody/bLKwTDPnMrXzhxCrZ73vDcrV1uXMCBa1tljQB0u+GmfItR7CLWPs1XJXGtWT8bE4R+9BvgS5Ml2mnDEO87LPBcGiFp0/7KvzhnpqZD87tXMvxJqIlsUd53AzEGYLqJeeIFhfTu3Y/qew4q+ybVQP6OvbqR3b2DuCJUNUpnbkyfCxZMkGN3bul0jnpGoOYMcdyDZHrmQ14lqw5njJPlkytfMFiDUQUzvN4Uh+1xEsHrPZqR3ZMyuXr4PFm52/q45g8+tk4Kd25sPR+Zkj2FkMn+BQ1mYN9NTOWTjsHDmCKfUCUP4BxHJTO3Y4NU/LID9FjoPEJ5GrHLnmccLqySC2YG5qxyqFmisrsBp5gumZQdghcHZq59O0WGPNYXF3bSHgrV3hrwXwXcgjSNtfdLBlUEp6HkXvNZTvY4gjV0ogx6mdN6t88qRZVQ7DDxsd7mLC+R0sCpx3P06B7WvLhj3W61gbGrqpHdsVlFBfQwIdK5uNlUp4u1Lh7TiHrkqot+3olggmUzufQvr+rZ22ge5SwoYEi+Y/PmHequr1XaHSt6X9pneHBHNTO9GKy8FxSwSbtVO6zMMT6t2hCW7nC6O3stTZ+iZwbRLMTe3MVlLOfhMRLGo7ZCuOnwpuYX3gLsj2flo2K28AJSTY7NSO7AH/o6h97jgfCLRNsKj5r/FNI3My2MnHb3ah8GbI1/YLGwkIJlM7sjbr+1Fb3HG+ELBCsGiRDp0ya1QYfmT64cCoHdF7rRy3QDA3tdMKkDmJY51g0XKNHzebcXnwFIrbw6g3R+81Om5CMJna2Y18mVar3ii9u54vBFIlWLSoh0+b6+u1+u3MHNzGzMG66L3ocQzB5PuPn0dkQzb31k4UrB447hrBZrFgfOYdmqi/RwcaZ676EGRbOXtPfiMEc1M7UWDccXIEINvQ+Mn6zrHj9YfGTtTLsp3nqamAy+YR5MrkGl0Kh0ADBI4Ys/zUVPj4sdPBPQ2iuMsOAYeAQ2A+Av8Pby5Qwk3kUm8AAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/img/404.a57b6f3.png\";"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-6e81.6043af74.js b/priv/static/adminfe/static/js/chunk-6e81.ebe9039f.js similarity index 97% rename from priv/static/adminfe/static/js/chunk-6e81.6043af74.js rename to priv/static/adminfe/static/js/chunk-6e81.ebe9039f.js index 82b08ad24..cd79db1d3 100644 --- a/priv/static/adminfe/static/js/chunk-6e81.6043af74.js +++ b/priv/static/adminfe/static/js/chunk-6e81.ebe9039f.js @@ -1,2 +1,2 @@ (window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-6e81"],{BF41:function(t,a,i){},"UUO+":function(t,a,i){"use strict";i.r(a);var e=i("zGwZ"),s=i.n(e),r={name:"Page401",data:function(){return{errGif:s.a+"?"+ +new Date,ewizardClap:"https://wpimg.wallstcn.com/007ef517-bafd-4066-aae4-6883632d9646",dialogVisible:!1}},methods:{back:function(){this.$route.query.noGoBack?this.$router.push({path:"/dashboard"}):this.$router.go(-1)}}},n=(i("UrVv"),i("KHd+")),l=Object(n.a)(r,function(){var t=this,a=t.$createElement,i=t._self._c||a;return i("div",{staticClass:"errPage-container"},[i("el-button",{staticClass:"pan-back-btn",attrs:{icon:"arrow-left"},on:{click:t.back}},[t._v("返回")]),t._v(" "),i("el-row",[i("el-col",{attrs:{span:12}},[i("h1",{staticClass:"text-jumbo text-ginormous"},[t._v("Oops!")]),t._v("\n gif来源"),i("a",{attrs:{href:"https://zh.airbnb.com/",target:"_blank"}},[t._v("airbnb")]),t._v(" 页面\n "),i("h2",[t._v("你没有权限去该页面")]),t._v(" "),i("h6",[t._v("如有不满请联系你领导")]),t._v(" "),i("ul",{staticClass:"list-unstyled"},[i("li",[t._v("或者你可以去:")]),t._v(" "),i("li",{staticClass:"link-type"},[i("router-link",{attrs:{to:"/dashboard"}},[t._v("回首页")])],1),t._v(" "),i("li",{staticClass:"link-type"},[i("a",{attrs:{href:"https://www.taobao.com/"}},[t._v("随便看看")])]),t._v(" "),i("li",[i("a",{attrs:{href:"#"},on:{click:function(a){a.preventDefault(),t.dialogVisible=!0}}},[t._v("点我看图")])])])]),t._v(" "),i("el-col",{attrs:{span:12}},[i("img",{attrs:{src:t.errGif,width:"313",height:"428",alt:"Girl has dropped her ice cream."}})])],1),t._v(" "),i("el-dialog",{attrs:{visible:t.dialogVisible,title:"随便看"},on:{"update:visible":function(a){t.dialogVisible=a}}},[i("img",{staticClass:"pan-img",attrs:{src:t.ewizardClap}})])],1)},[],!1,null,"ab9be52c",null);l.options.__file="401.vue";a.default=l.exports},UrVv:function(t,a,i){"use strict";var e=i("BF41");i.n(e).a},zGwZ:function(t,a,i){t.exports=i.p+"static/img/401.089007e.gif"}}]); -//# sourceMappingURL=chunk-6e81.6043af74.js.map \ No newline at end of file +//# sourceMappingURL=chunk-6e81.ebe9039f.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-6e81.6043af74.js.map b/priv/static/adminfe/static/js/chunk-6e81.ebe9039f.js.map similarity index 98% rename from priv/static/adminfe/static/js/chunk-6e81.6043af74.js.map rename to priv/static/adminfe/static/js/chunk-6e81.ebe9039f.js.map index 2c1c86e2c..10b437760 100644 --- a/priv/static/adminfe/static/js/chunk-6e81.6043af74.js.map +++ b/priv/static/adminfe/static/js/chunk-6e81.ebe9039f.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./src/views/errorPage/401.vue?e7a2","webpack:///./src/views/errorPage/401.vue?6307","webpack:///src/views/errorPage/401.vue","webpack:///./src/views/errorPage/401.vue","webpack:///./src/views/errorPage/401.vue?2b76","webpack:///./src/assets/401_images/401.gif"],"names":["errorPage_401vue_type_script_lang_js_","name","data","errGif","_401_default","a","Date","ewizardClap","dialogVisible","methods","back","this","$route","query","noGoBack","$router","push","path","go","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","icon","on","click","_v","span","href","target","to","$event","preventDefault","src","width","height","alt","visible","title","update:visible","options","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_401_vue_vue_type_style_index_0_id_ab9be52c_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","module","exports","p"],"mappings":"sIAAA,yBCAwMA,GCgCxMC,KAAA,UACAC,KAAA,WACA,OACAC,OAAAC,EAAAC,EAAA,UAAAC,KACAC,YAAA,kEACAC,eAAA,IAGAC,SACAC,KADA,WAEAC,KAAAC,OAAAC,MAAAC,SACAH,KAAAI,QAAAC,MAAAC,KAAA,eAEAN,KAAAI,QAAAG,IAAA,8BCrCAC,EAAgBC,OAAAC,EAAA,EAAAD,CACdpB,EHTF,WAA0B,IAAAsB,EAAAX,KAAaY,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,sBAAgCF,EAAA,aAAkBE,YAAA,eAAAC,OAAkCC,KAAA,cAAoBC,IAAKC,MAAAT,EAAAZ,QAAkBY,EAAAU,GAAA,QAAAV,EAAAU,GAAA,KAAAP,EAAA,UAAAA,EAAA,UAAuDG,OAAOK,KAAA,MAAWR,EAAA,MAAWE,YAAA,8BAAwCL,EAAAU,GAAA,WAAAV,EAAAU,GAAA,iBAAAP,EAAA,KAAoDG,OAAOM,KAAA,yBAAAC,OAAA,YAAmDb,EAAAU,GAAA,YAAAV,EAAAU,GAAA,eAAAP,EAAA,MAAAH,EAAAU,GAAA,eAAAV,EAAAU,GAAA,KAAAP,EAAA,MAAAH,EAAAU,GAAA,gBAAAV,EAAAU,GAAA,KAAAP,EAAA,MAA2IE,YAAA,kBAA4BF,EAAA,MAAAH,EAAAU,GAAA,aAAAV,EAAAU,GAAA,KAAAP,EAAA,MAAoDE,YAAA,cAAwBF,EAAA,eAAoBG,OAAOQ,GAAA,gBAAmBd,EAAAU,GAAA,aAAAV,EAAAU,GAAA,KAAAP,EAAA,MAA2CE,YAAA,cAAwBF,EAAA,KAAUG,OAAOM,KAAA,6BAAkCZ,EAAAU,GAAA,YAAAV,EAAAU,GAAA,KAAAP,EAAA,MAAAA,EAAA,KAAkDG,OAAOM,KAAA,KAAWJ,IAAKC,MAAA,SAAAM,GAAyBA,EAAAC,iBAAwBhB,EAAAd,eAAA,MAAyBc,EAAAU,GAAA,gBAAAV,EAAAU,GAAA,KAAAP,EAAA,UAAkDG,OAAOK,KAAA,MAAWR,EAAA,OAAYG,OAAOW,IAAAjB,EAAAnB,OAAAqC,MAAA,MAAAC,OAAA,MAAAC,IAAA,wCAAuF,GAAApB,EAAAU,GAAA,KAAAP,EAAA,aAAoCG,OAAOe,QAAArB,EAAAd,cAAAoC,MAAA,OAA0Cd,IAAKe,iBAAA,SAAAR,GAAkCf,EAAAd,cAAA6B,MAA2BZ,EAAA,OAAYE,YAAA,UAAAC,OAA6BW,IAAAjB,EAAAf,kBAAuB,QGYl4C,EACA,KACA,WACA,MAIAY,EAAA2B,QAAAC,OAAA,UACeC,EAAA,QAAA7B,6CCpBf,IAAA8B,EAAAC,EAAA,QAAAA,EAAAC,EAAAF,GAA6e,wBCA7eG,EAAAC,QAAiBH,EAAAI,EAAuB","file":"static/js/chunk-6e81.6043af74.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"errPage-container\"},[_c('el-button',{staticClass:\"pan-back-btn\",attrs:{\"icon\":\"arrow-left\"},on:{\"click\":_vm.back}},[_vm._v(\"返回\")]),_vm._v(\" \"),_c('el-row',[_c('el-col',{attrs:{\"span\":12}},[_c('h1',{staticClass:\"text-jumbo text-ginormous\"},[_vm._v(\"Oops!\")]),_vm._v(\"\\n gif来源\"),_c('a',{attrs:{\"href\":\"https://zh.airbnb.com/\",\"target\":\"_blank\"}},[_vm._v(\"airbnb\")]),_vm._v(\" 页面\\n \"),_c('h2',[_vm._v(\"你没有权限去该页面\")]),_vm._v(\" \"),_c('h6',[_vm._v(\"如有不满请联系你领导\")]),_vm._v(\" \"),_c('ul',{staticClass:\"list-unstyled\"},[_c('li',[_vm._v(\"或者你可以去:\")]),_vm._v(\" \"),_c('li',{staticClass:\"link-type\"},[_c('router-link',{attrs:{\"to\":\"/dashboard\"}},[_vm._v(\"回首页\")])],1),_vm._v(\" \"),_c('li',{staticClass:\"link-type\"},[_c('a',{attrs:{\"href\":\"https://www.taobao.com/\"}},[_vm._v(\"随便看看\")])]),_vm._v(\" \"),_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.dialogVisible=true}}},[_vm._v(\"点我看图\")])])])]),_vm._v(\" \"),_c('el-col',{attrs:{\"span\":12}},[_c('img',{attrs:{\"src\":_vm.errGif,\"width\":\"313\",\"height\":\"428\",\"alt\":\"Girl has dropped her ice cream.\"}})])],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"visible\":_vm.dialogVisible,\"title\":\"随便看\"},on:{\"update:visible\":function($event){_vm.dialogVisible=$event}}},[_c('img',{staticClass:\"pan-img\",attrs:{\"src\":_vm.ewizardClap}})])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./401.vue?vue&type=template&id=ab9be52c&scoped=true&\"\nimport script from \"./401.vue?vue&type=script&lang=js&\"\nexport * from \"./401.vue?vue&type=script&lang=js&\"\nimport style0 from \"./401.vue?vue&type=style&index=0&id=ab9be52c&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ab9be52c\",\n null\n \n)\n\ncomponent.options.__file = \"401.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=style&index=0&id=ab9be52c&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=style&index=0&id=ab9be52c&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"static/img/401.089007e.gif\";"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./src/views/errorPage/401.vue?e7a2","webpack:///./src/views/errorPage/401.vue?6307","webpack:///src/views/errorPage/401.vue","webpack:///./src/views/errorPage/401.vue","webpack:///./src/views/errorPage/401.vue?2b76","webpack:///./src/assets/401_images/401.gif"],"names":["errorPage_401vue_type_script_lang_js_","name","data","errGif","_401_default","a","Date","ewizardClap","dialogVisible","methods","back","this","$route","query","noGoBack","$router","push","path","go","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","icon","on","click","_v","span","href","target","to","$event","preventDefault","src","width","height","alt","visible","title","update:visible","options","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_401_vue_vue_type_style_index_0_id_ab9be52c_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","module","exports","p"],"mappings":"sIAAA,yBCAwMA,GCgCxMC,KAAA,UACAC,KAAA,WACA,OACAC,OAAAC,EAAAC,EAAA,UAAAC,KACAC,YAAA,kEACAC,eAAA,IAGAC,SACAC,KADA,WAEAC,KAAAC,OAAAC,MAAAC,SACAH,KAAAI,QAAAC,MAAAC,KAAA,eAEAN,KAAAI,QAAAG,IAAA,8BCrCAC,EAAgBC,OAAAC,EAAA,EAAAD,CACdpB,EHTF,WAA0B,IAAAsB,EAAAX,KAAaY,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,sBAAgCF,EAAA,aAAkBE,YAAA,eAAAC,OAAkCC,KAAA,cAAoBC,IAAKC,MAAAT,EAAAZ,QAAkBY,EAAAU,GAAA,QAAAV,EAAAU,GAAA,KAAAP,EAAA,UAAAA,EAAA,UAAuDG,OAAOK,KAAA,MAAWR,EAAA,MAAWE,YAAA,8BAAwCL,EAAAU,GAAA,WAAAV,EAAAU,GAAA,iBAAAP,EAAA,KAAoDG,OAAOM,KAAA,yBAAAC,OAAA,YAAmDb,EAAAU,GAAA,YAAAV,EAAAU,GAAA,eAAAP,EAAA,MAAAH,EAAAU,GAAA,eAAAV,EAAAU,GAAA,KAAAP,EAAA,MAAAH,EAAAU,GAAA,gBAAAV,EAAAU,GAAA,KAAAP,EAAA,MAA2IE,YAAA,kBAA4BF,EAAA,MAAAH,EAAAU,GAAA,aAAAV,EAAAU,GAAA,KAAAP,EAAA,MAAoDE,YAAA,cAAwBF,EAAA,eAAoBG,OAAOQ,GAAA,gBAAmBd,EAAAU,GAAA,aAAAV,EAAAU,GAAA,KAAAP,EAAA,MAA2CE,YAAA,cAAwBF,EAAA,KAAUG,OAAOM,KAAA,6BAAkCZ,EAAAU,GAAA,YAAAV,EAAAU,GAAA,KAAAP,EAAA,MAAAA,EAAA,KAAkDG,OAAOM,KAAA,KAAWJ,IAAKC,MAAA,SAAAM,GAAyBA,EAAAC,iBAAwBhB,EAAAd,eAAA,MAAyBc,EAAAU,GAAA,gBAAAV,EAAAU,GAAA,KAAAP,EAAA,UAAkDG,OAAOK,KAAA,MAAWR,EAAA,OAAYG,OAAOW,IAAAjB,EAAAnB,OAAAqC,MAAA,MAAAC,OAAA,MAAAC,IAAA,wCAAuF,GAAApB,EAAAU,GAAA,KAAAP,EAAA,aAAoCG,OAAOe,QAAArB,EAAAd,cAAAoC,MAAA,OAA0Cd,IAAKe,iBAAA,SAAAR,GAAkCf,EAAAd,cAAA6B,MAA2BZ,EAAA,OAAYE,YAAA,UAAAC,OAA6BW,IAAAjB,EAAAf,kBAAuB,QGYl4C,EACA,KACA,WACA,MAIAY,EAAA2B,QAAAC,OAAA,UACeC,EAAA,QAAA7B,6CCpBf,IAAA8B,EAAAC,EAAA,QAAAA,EAAAC,EAAAF,GAA6e,wBCA7eG,EAAAC,QAAiBH,EAAAI,EAAuB","file":"static/js/chunk-6e81.ebe9039f.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"errPage-container\"},[_c('el-button',{staticClass:\"pan-back-btn\",attrs:{\"icon\":\"arrow-left\"},on:{\"click\":_vm.back}},[_vm._v(\"返回\")]),_vm._v(\" \"),_c('el-row',[_c('el-col',{attrs:{\"span\":12}},[_c('h1',{staticClass:\"text-jumbo text-ginormous\"},[_vm._v(\"Oops!\")]),_vm._v(\"\\n gif来源\"),_c('a',{attrs:{\"href\":\"https://zh.airbnb.com/\",\"target\":\"_blank\"}},[_vm._v(\"airbnb\")]),_vm._v(\" 页面\\n \"),_c('h2',[_vm._v(\"你没有权限去该页面\")]),_vm._v(\" \"),_c('h6',[_vm._v(\"如有不满请联系你领导\")]),_vm._v(\" \"),_c('ul',{staticClass:\"list-unstyled\"},[_c('li',[_vm._v(\"或者你可以去:\")]),_vm._v(\" \"),_c('li',{staticClass:\"link-type\"},[_c('router-link',{attrs:{\"to\":\"/dashboard\"}},[_vm._v(\"回首页\")])],1),_vm._v(\" \"),_c('li',{staticClass:\"link-type\"},[_c('a',{attrs:{\"href\":\"https://www.taobao.com/\"}},[_vm._v(\"随便看看\")])]),_vm._v(\" \"),_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.dialogVisible=true}}},[_vm._v(\"点我看图\")])])])]),_vm._v(\" \"),_c('el-col',{attrs:{\"span\":12}},[_c('img',{attrs:{\"src\":_vm.errGif,\"width\":\"313\",\"height\":\"428\",\"alt\":\"Girl has dropped her ice cream.\"}})])],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"visible\":_vm.dialogVisible,\"title\":\"随便看\"},on:{\"update:visible\":function($event){_vm.dialogVisible=$event}}},[_c('img',{staticClass:\"pan-img\",attrs:{\"src\":_vm.ewizardClap}})])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./401.vue?vue&type=template&id=ab9be52c&scoped=true&\"\nimport script from \"./401.vue?vue&type=script&lang=js&\"\nexport * from \"./401.vue?vue&type=script&lang=js&\"\nimport style0 from \"./401.vue?vue&type=style&index=0&id=ab9be52c&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ab9be52c\",\n null\n \n)\n\ncomponent.options.__file = \"401.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=style&index=0&id=ab9be52c&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=style&index=0&id=ab9be52c&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"static/img/401.089007e.gif\";"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-6e8c.2aa335e0.js b/priv/static/adminfe/static/js/chunk-6e8c.2aa335e0.js deleted file mode 100644 index 020158f81..000000000 --- a/priv/static/adminfe/static/js/chunk-6e8c.2aa335e0.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-6e8c"],{"13xp":function(e,s,t){"use strict";var r=t("2r4G");t.n(r).a},"2r4G":function(e,s,t){},"4bFr":function(e,s,t){"use strict";t.r(s);var r=t("ot3S"),i=t("tPM3"),a=t("o0o1"),n=t.n(a),o=t("yXPU"),u=t.n(o),l=t("XJYT"),c={name:"SecuritySettingsModal",props:{visible:{type:Boolean,default:!1},user:{type:Object,default:function(){return{}}}},data:function(){return{securitySettingsForm:{newEmail:"",newPassword:"",isEmailLoading:!1,isPasswordLoading:!1}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},getLabelWidth:function(){return this.isDesktop?"120px":"85px"},userCredentials:function(){return this.$store.state.userProfile.userCredentials}},mounted:function(){var e=u()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.$store.dispatch("FetchUserCredentials",{nickname:this.user.nickname});case 2:this.securitySettingsForm.newEmail=this.userCredentials.email;case 3:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),methods:{updateEmail:function(){var e=u()(n.a.mark(function e(){var s;return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s={email:this.securitySettingsForm.newEmail},this.securitySettingsForm.isEmailLoading=!0,e.next=4,this.$store.dispatch("UpdateUserCredentials",{nickname:this.user.nickname,credentials:s});case 4:this.securitySettingsForm.isEmailLoading=!1,Object(l.Message)({message:this.$t("userProfile.securitySettings.emailUpdated"),type:"success",duration:5e3});case 6:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),updatePassword:function(){var e=u()(n.a.mark(function e(){var s;return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s={password:this.securitySettingsForm.newPassword},this.securitySettingsForm.isPasswordLoading=!0,e.next=4,this.$store.dispatch("UpdateUserCredentials",{nickname:this.user.nickname,credentials:s});case 4:this.securitySettingsForm.isPasswordLoading=!1,this.securitySettingsForm.newPassword="",Object(l.Message)({message:this.$t("userProfile.securitySettings.passwordUpdated"),type:"success",duration:5e3});case 7:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),close:function(){this.$emit("close",!0)}}},d=(t("13xp"),t("KHd+")),p=Object(d.a)(c,function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("el-dialog",{staticClass:"security-settings-modal",attrs:{"before-close":e.close,title:e.$t("userProfile.securitySettings.securitySettings"),visible:e.visible}},[t("el-form",{attrs:{model:e.securitySettingsForm,"label-width":e.getLabelWidth}},[t("el-form-item",{attrs:{label:e.$t("userProfile.securitySettings.email")}},[t("el-input",{attrs:{placeholder:e.$t("userProfile.securitySettings.inputNewEmail")},model:{value:e.securitySettingsForm.newEmail,callback:function(s){e.$set(e.securitySettingsForm,"newEmail",s)},expression:"securitySettingsForm.newEmail"}})],1),e._v(" "),t("el-form-item",[t("el-button",{staticClass:"security-settings-submit-button",attrs:{loading:e.securitySettingsForm.isEmailLoading,disabled:!e.securitySettingsForm.newEmail||e.securitySettingsForm.newEmail===e.userCredentials.email,type:"primary"},on:{click:function(s){return e.updateEmail()}}},[e._v("\n "+e._s(e.$t("userProfile.securitySettings.submit"))+"\n ")])],1),e._v(" "),t("el-form-item",{staticClass:"password-input",attrs:{label:e.$t("userProfile.securitySettings.password")}},[t("el-input",{attrs:{placeholder:e.$t("userProfile.securitySettings.inputNewPassword")},model:{value:e.securitySettingsForm.newPassword,callback:function(s){e.$set(e.securitySettingsForm,"newPassword",s)},expression:"securitySettingsForm.newPassword"}}),e._v(" "),t("small",{staticClass:"form-text"},[e._v("\n "+e._s(e.$t("userProfile.securitySettings.passwordLengthNotice",{minLength:8}))+"\n ")])],1),e._v(" "),t("el-alert",{staticClass:"password-alert",attrs:{closable:!1,type:"warning","show-icon":""}},[t("p",[e._v(e._s(e.$t("userProfile.securitySettings.passwordChangeWarning1")))]),e._v(" "),t("p",[e._v(e._s(e.$t("userProfile.securitySettings.passwordChangeWarning2")))])]),e._v(" "),t("el-form-item",[t("el-button",{staticClass:"security-settings-submit-button",attrs:{loading:e.securitySettingsForm.isPasswordLoading,disabled:e.securitySettingsForm.newPassword.length<8,type:"primary"},on:{click:function(s){return e.updatePassword()}}},[e._v("\n "+e._s(e.$t("userProfile.securitySettings.submit"))+"\n ")])],1)],1)],1)},[],!1,null,null,null);p.options.__file="SecuritySettingsModal.vue";var g=p.exports,_=t("rIUS"),v=t("WjBP"),m={name:"UsersShow",components:{ModerationDropdown:i.a,RebootButton:_.a,ResetPasswordDialog:v.a,Status:r.a,SecuritySettingsModal:g},data:function(){return{showPrivate:!1,resetPasswordDialogOpen:!1,securitySettingsModalVisible:!1}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},loading:function(){return this.$store.state.users.loading},statuses:function(){return this.$store.state.userProfile.statuses},statusesLoading:function(){return this.$store.state.userProfile.statusesLoading},user:function(){return this.$store.state.userProfile.user},userProfileLoading:function(){return this.$store.state.userProfile.userProfileLoading},userCredentials:function(){return this.$store.state.userProfile.userCredentials}},mounted:function(){this.$store.dispatch("NeedReboot"),this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("FetchUserProfile",{userId:this.$route.params.id,godmode:!1})},methods:{closeResetPasswordDialog:function(){this.resetPasswordDialogOpen=!1,this.$store.dispatch("RemovePasswordToken")},humanizeTag:function(e){return{"mrf_tag:media-force-nsfw":"Force NSFW","mrf_tag:media-strip":"Strip Media","mrf_tag:force-unlisted":"Force Unlisted","mrf_tag:sandbox":"Sandbox","mrf_tag:disable-remote-subscription":"Disable remote subscription","mrf_tag:disable-any-subscription":"Disable any subscription"}[e]},onTogglePrivate:function(){this.$store.dispatch("FetchUserProfile",{userId:this.$route.params.id,godmode:this.showPrivate})},openResetPasswordDialog:function(){this.resetPasswordDialogOpen=!0},propertyExists:function(e,s){return e[s]}}},f=(t("9IXO"),Object(d.a)(m,function(){var e=this,s=e.$createElement,t=e._self._c||s;return e.userProfileLoading?e._e():t("main",[e.isDesktop||e.isTablet?t("header",{staticClass:"user-page-header"},[t("div",{staticClass:"avatar-name-container"},[e.propertyExists(e.user,"avatar")?t("el-avatar",{attrs:{src:e.user.avatar,size:"large"}}):e._e(),e._v(" "),e.propertyExists(e.user,"nickname")?t("h1",[e._v(e._s(e.user.nickname))]):t("h1",{staticClass:"invalid"},[e._v("("+e._s(e.$t("users.invalidNickname"))+")")]),e._v(" "),e.propertyExists(e.user,"url")?t("a",{attrs:{href:e.user.url,target:"_blank"}},[t("i",{staticClass:"el-icon-top-right",attrs:{title:e.$t("userProfile.openAccountInInstance")}})]):e._e()],1),e._v(" "),t("div",{staticClass:"left-header-container"},[e.propertyExists(e.user,"nickname")?t("moderation-dropdown",{attrs:{user:e.user,page:"userPage"},on:{"open-reset-token-dialog":e.openResetPasswordDialog}}):e._e(),e._v(" "),t("reboot-button")],1)]):e._e(),e._v(" "),e.isMobile?t("div",{staticClass:"user-page-header-container"},[t("header",{staticClass:"user-page-header"},[t("div",{staticClass:"avatar-name-container"},[e.propertyExists(e.user,"avatar")?t("el-avatar",{attrs:{src:e.user.avatar,size:"large"}}):e._e(),e._v(" "),e.propertyExists(e.user,"nickname")?t("h1",[e._v(e._s(e.user.nickname))]):t("h1",{staticClass:"invalid"},[e._v("("+e._s(e.$t("users.invalidNickname"))+")")])],1),e._v(" "),t("reboot-button")],1),e._v(" "),e.propertyExists(e.user,"nickname")?t("moderation-dropdown",{attrs:{user:e.user,page:"userPage"},on:{"open-reset-token-dialog":e.openResetPasswordDialog}}):e._e()],1):e._e(),e._v(" "),t("reset-password-dialog",{attrs:{"reset-password-dialog-open":e.resetPasswordDialogOpen},on:{"close-reset-token-dialog":e.closeResetPasswordDialog}}),e._v(" "),t("div",{staticClass:"user-profile-container"},[t("el-card",{staticClass:"user-profile-card"},[t("div",{staticClass:"el-table el-table--fit el-table--enable-row-hover el-table--enable-row-transition el-table--medium"},[e.propertyExists(e.user,"nickname")?e._e():t("el-tag",{staticClass:"invalid-user-tag",attrs:{type:"info"}},[e._v("\n "+e._s(e.$t("users.invalidAccount"))+"\n ")]),e._v(" "),t("table",{staticClass:"user-profile-table"},[t("tbody",[t("tr",{staticClass:"el-table__row"},[t("td",{staticClass:"name-col"},[e._v("ID")]),e._v(" "),t("td",[e._v("\n "+e._s(e.user.id)+"\n ")])]),e._v(" "),t("tr",{staticClass:"el-table__row"},[t("td",[e._v(e._s(e.$t("userProfile.actorType")))]),e._v(" "),t("td",[t("el-tag",{attrs:{type:"Person"===e.userCredentials.actor_type?"success":"warning"}},[e._v("\n "+e._s(e.userCredentials.actor_type)+"\n ")])],1)]),e._v(" "),t("tr",{staticClass:"el-table__row"},[t("td",[e._v(e._s(e.$t("userProfile.tags")))]),e._v(" "),t("td",[0!==e.user.tags.length&&e.propertyExists(e.user,"tags")?e._l(e.user.tags,function(s){return t("el-tag",{key:s,staticClass:"user-profile-tag"},[e._v(e._s(e.humanizeTag(s)))])}):t("span",[e._v("—")])],2)]),e._v(" "),t("tr",{staticClass:"el-table__row"},[t("td",[e._v(e._s(e.$t("userProfile.roles")))]),e._v(" "),t("td",[e.user.roles.admin?t("el-tag",{staticClass:"user-profile-tag"},[e._v("\n "+e._s(e.$t("users.admin"))+"\n ")]):e._e(),e._v(" "),e.user.roles.moderator?t("el-tag",{staticClass:"user-profile-tag"},[e._v("\n "+e._s(e.$t("users.moderator"))+"\n ")]):e._e(),e._v(" "),e.propertyExists(e.user,"roles")&&(e.user.roles.moderator||e.user.roles.admin)?e._e():t("span",[e._v("—")])],1)]),e._v(" "),t("tr",{staticClass:"el-table__row"},[t("td",[e._v(e._s(e.$t("userProfile.accountType")))]),e._v(" "),t("td",[e.user.local?t("el-tag",{attrs:{type:"info"}},[e._v(e._s(e.$t("userProfile.local")))]):e._e(),e._v(" "),e.user.local?e._e():t("el-tag",{attrs:{type:"info"}},[e._v(e._s(e.$t("userProfile.external")))])],1)]),e._v(" "),t("tr",{staticClass:"el-table__row"},[t("td",[e._v(e._s(e.$t("userProfile.status")))]),e._v(" "),t("td",[e.user.approval_pending?t("el-tag",{attrs:{type:"info"}},[e._v(e._s(e.$t("userProfile.pending")))]):e._e(),e._v(" "),!e.user.deactivated&!e.user.approval_pending?t("el-tag",{attrs:{type:"success"}},[e._v(e._s(e.$t("userProfile.active")))]):e._e(),e._v(" "),e.user.deactivated?t("el-tag",{attrs:{type:"danger"}},[e._v(e._s(e.$t("userProfile.deactivated")))]):e._e()],1)])])]),e._v(" "),e.user.registration_reason?t("div",[t("div",{staticClass:"reason-label"},[e._v(e._s(e.$t("userProfile.reason")))]),e._v('\n "'+e._s(e.user.registration_reason)+'"\n ')]):e._e()],1),e._v(" "),e.propertyExists(e.user,"nickname")?t("el-button",{staticClass:"security-setting-button",attrs:{icon:"el-icon-lock"},on:{click:function(s){e.securitySettingsModalVisible=!0}}},[e._v("\n "+e._s(e.$t("userProfile.securitySettings.securitySettings"))+"\n ")]):e._e(),e._v(" "),e.propertyExists(e.user,"nickname")?t("SecuritySettingsModal",{attrs:{user:e.user,visible:e.securitySettingsModalVisible},on:{close:function(s){e.securitySettingsModalVisible=!1}}}):e._e()],1),e._v(" "),t("div",{staticClass:"recent-statuses-container"},[t("h2",{staticClass:"recent-statuses"},[e._v(e._s(e.$t("userProfile.recentStatuses")))]),e._v(" "),t("el-checkbox",{staticClass:"show-private-statuses",on:{change:e.onTogglePrivate},model:{value:e.showPrivate,callback:function(s){e.showPrivate=s},expression:"showPrivate"}},[e._v("\n "+e._s(e.$t("statuses.showPrivateStatuses"))+"\n ")]),e._v(" "),e.statusesLoading?e._e():t("el-timeline",{staticClass:"statuses"},[e._l(e.statuses,function(s){return t("el-timeline-item",{key:s.id},[t("status",{attrs:{status:s,account:s.account,"show-checkbox":!1,"user-id":e.user.id,godmode:e.showPrivate}})],1)}),e._v(" "),0===e.statuses.length?t("p",{staticClass:"no-statuses"},[e._v(e._s(e.$t("userProfile.noStatuses")))]):e._e()],2)],1)],1)],1)},[],!1,null,null,null));f.options.__file="show.vue";s.default=f.exports},"53Av":function(e,s,t){"use strict";var r=t("lOBV");t.n(r).a},"9IXO":function(e,s,t){"use strict";var r=t("msq4");t.n(r).a},RnhZ:function(e,s,t){var r={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function i(e){var s=a(e);return t(s)}function a(e){if(!t.o(r,e)){var s=new Error("Cannot find module '"+e+"'");throw s.code="MODULE_NOT_FOUND",s}return r[e]}i.keys=function(){return Object.keys(r)},i.resolve=a,e.exports=i,i.id="RnhZ"},WjBP:function(e,s,t){"use strict";var r={name:"ResetPasswordDialog",props:{resetPasswordDialogOpen:{type:Boolean,default:!1}},computed:{dialogOpen:function(){return this.resetPasswordDialogOpen},loading:function(){return this.$store.state.users.loading},passwordResetLink:function(){return this.$store.state.users.passwordResetToken.link},passwordResetToken:function(){return this.$store.state.users.passwordResetToken.token}},methods:{closeResetPasswordDialog:function(){this.$emit("close-reset-token-dialog")}}},i=t("KHd+"),a=Object(i.a)(r,function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("el-dialog",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],attrs:{visible:e.dialogOpen,title:e.$t("users.passwordResetTokenCreated"),"custom-class":"password-reset-token-dialog"},on:{close:e.closeResetPasswordDialog}},[t("div",[t("p",{staticClass:"password-reset-token"},[e._v(e._s(e.$t("users.passwordResetTokenGenerated"))+" "+e._s(e.passwordResetToken))]),e._v(" "),t("p",[e._v(e._s(e.$t("users.linkToResetPassword"))+"\n "),t("a",{staticClass:"reset-password-link",attrs:{href:e.passwordResetLink,target:"_blank"}},[e._v(e._s(e.passwordResetLink))])])])])},[],!1,null,null,null);a.options.__file="ResetPasswordDialog.vue";s.a=a.exports},lOBV:function(e,s,t){},msq4:function(e,s,t){},tPM3:function(e,s,t){"use strict";var r={name:"ModerationDropdown",props:{user:{type:Object,default:function(){return{}}},page:{type:String,default:"users"},statusId:{type:String,default:""}},computed:{actorType:{get:function(){return this.user.actor_type},set:function(e){this.$store.dispatch("UpdateActorType",{user:this.user,type:e,_userId:this.user.id,_statusId:this.statusId})}},isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{disableMfa:function(e){this.$store.dispatch("DisableMfa",e)},getPasswordResetToken:function(e){this.$emit("open-reset-token-dialog"),this.$store.dispatch("GetPasswordResetToken",e)},handleConfirmationResend:function(e){this.$store.dispatch("ResendConfirmationEmail",[e])},handleDeletion:function(e){var s=this;this.$confirm(this.$t("users.deleteUserConfirmation"),{confirmButtonText:"Delete",cancelButtonText:"Cancel",type:"warning"}).then(function(){s.$store.dispatch("DeleteUsers",{users:[e],_userId:e.id})}).catch(function(){s.$message({type:"info",message:"Delete canceled"})})},handleAccountApproval:function(e){this.$store.dispatch("ApproveUsersAccount",{users:[e],_userId:e.id,_statusId:this.statusId})},handleAccountRejection:function(e){var s=this;this.$confirm(this.$t("users.rejectAccountConfirmation"),{confirmButtonText:"Reject",cancelButtonText:"Cancel",type:"warning"}).then(function(){s.$store.dispatch("DeleteUsers",{users:[e],_userId:e.id})}).catch(function(){s.$message({type:"info",message:"Reject canceled"})})},handleEmailConfirmation:function(e){this.$store.dispatch("ConfirmUsersEmail",{users:[e],_userId:e.id,_statusId:this.statusId})},requirePasswordReset:function(e){this.$store.state.user.nodeInfo.metadata.mailerEnabled?this.$store.dispatch("RequirePasswordReset",[e]):this.$alert(this.$t("users.mailerMustBeEnabled"),"Error",{type:"error"})},showAdminAction:function(e){var s=e.local,t=e.id;return s&&this.showDeactivatedButton(t)},showDeactivatedButton:function(e){return this.$store.state.user.id!==e},toggleActivation:function(e){e.deactivated?this.$store.dispatch("ActivateUsers",{users:[e],_userId:e.id}):this.$store.dispatch("DeactivateUsers",{users:[e],_userId:e.id})},toggleTag:function(e,s){e.tags.includes(s)?this.$store.dispatch("RemoveTag",{users:[e],tag:s,_userId:e.id,_statusId:this.statusId}):this.$store.dispatch("AddTag",{users:[e],tag:s,_userId:e.id,_statusId:this.statusId})},toggleUserRight:function(e,s){e.roles[s]?this.$store.dispatch("DeleteRight",{users:[e],right:s,_userId:e.id,_statusId:this.statusId}):this.$store.dispatch("AddRight",{users:[e],right:s,_userId:e.id,_statusId:this.statusId})}}},i=(t("53Av"),t("KHd+")),a=Object(i.a)(r,function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("el-dropdown",{attrs:{"hide-on-click":!1,size:"small",trigger:"click",placement:"top-start"},nativeOn:{click:function(e){e.stopPropagation()}}},[t("div",["users"===e.page?t("el-button",{staticClass:"el-dropdown-link",attrs:{type:"text"}},[e._v("\n "+e._s(e.$t("users.moderation"))+"\n "),e.isDesktop?t("i",{staticClass:"el-icon-arrow-down el-icon--right"}):e._e()]):e._e(),e._v(" "),"userPage"===e.page||"statusPage"===e.page?t("el-button",{staticClass:"moderate-user-button"},[t("span",{staticClass:"moderate-user-button-container"},[t("span",[t("i",{staticClass:"el-icon-edit"}),e._v("\n "+e._s(e.$t("users.moderateUser"))+"\n ")]),e._v(" "),t("i",{staticClass:"el-icon-arrow-down el-icon--right"})])]):e._e()],1),e._v(" "),t("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[t("el-dropdown-item",{staticClass:"actor-type-dropdown"},[t("el-select",{staticClass:"actor-type-select",attrs:{placeholder:e.$t("userProfile.actorType")},model:{value:e.actorType,callback:function(s){e.actorType=s},expression:"actorType"}},[t("el-option",{attrs:{label:e.$t("users.service"),value:"Service"}}),e._v(" "),t("el-option",{attrs:{label:e.$t("users.person"),value:"Person"}})],1)],1),e._v(" "),e.showAdminAction(e.user)?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(s){return e.toggleUserRight(e.user,"admin")}}},[e._v("\n "+e._s(e.user.roles.admin?e.$t("users.revokeAdmin"):e.$t("users.grantAdmin"))+"\n ")]):e._e(),e._v(" "),e.showAdminAction(e.user)?t("el-dropdown-item",{nativeOn:{click:function(s){return e.toggleUserRight(e.user,"moderator")}}},[e._v("\n "+e._s(e.user.roles.moderator?e.$t("users.revokeModerator"):e.$t("users.grantModerator"))+"\n ")]):e._e(),e._v(" "),e.showDeactivatedButton(e.user.id)&&"statusPage"!==e.page?t("el-dropdown-item",{attrs:{divided:e.showAdminAction(e.user)},nativeOn:{click:function(s){return e.toggleActivation(e.user)}}},[e._v("\n "+e._s(e.user.deactivated?e.$t("users.activateAccount"):e.$t("users.deactivateAccount"))+"\n ")]):e._e(),e._v(" "),e.showDeactivatedButton(e.user.id)&&"statusPage"!==e.page?t("el-dropdown-item",{nativeOn:{click:function(s){return e.handleDeletion(e.user)}}},[e._v("\n "+e._s(e.$t("users.deleteAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.approval_pending?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(s){return e.handleAccountApproval(e.user)}}},[e._v("\n "+e._s(e.$t("users.approveAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.approval_pending?t("el-dropdown-item",{nativeOn:{click:function(s){return e.handleAccountRejection(e.user)}}},[e._v("\n "+e._s(e.$t("users.rejectAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.confirmation_pending?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(s){return e.handleEmailConfirmation(e.user)}}},[e._v("\n "+e._s(e.$t("users.confirmAccount"))+"\n ")]):e._e(),e._v(" "),e.user.local&&e.user.confirmation_pending?t("el-dropdown-item",{nativeOn:{click:function(s){return e.handleConfirmationResend(e.user)}}},[e._v("\n "+e._s(e.$t("users.resendConfirmation"))+"\n ")]):e._e(),e._v(" "),t("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:media-force-nsfw")},attrs:{divided:e.showAdminAction(e.user)},nativeOn:{click:function(s){return e.toggleTag(e.user,"mrf_tag:media-force-nsfw")}}},[e._v("\n "+e._s(e.$t("users.forceNsfw"))+"\n "),e.user.tags.includes("mrf_tag:media-force-nsfw")?t("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),t("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:media-strip")},nativeOn:{click:function(s){return e.toggleTag(e.user,"mrf_tag:media-strip")}}},[e._v("\n "+e._s(e.$t("users.stripMedia"))+"\n "),e.user.tags.includes("mrf_tag:media-strip")?t("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),t("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:force-unlisted")},nativeOn:{click:function(s){return e.toggleTag(e.user,"mrf_tag:force-unlisted")}}},[e._v("\n "+e._s(e.$t("users.forceUnlisted"))+"\n "),e.user.tags.includes("mrf_tag:force-unlisted")?t("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),t("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:sandbox")},nativeOn:{click:function(s){return e.toggleTag(e.user,"mrf_tag:sandbox")}}},[e._v("\n "+e._s(e.$t("users.sandbox"))+"\n "),e.user.tags.includes("mrf_tag:sandbox")?t("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),e.user.local?t("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:disable-remote-subscription")},nativeOn:{click:function(s){return e.toggleTag(e.user,"mrf_tag:disable-remote-subscription")}}},[e._v("\n "+e._s(e.$t("users.disableRemoteSubscription"))+"\n "),e.user.tags.includes("mrf_tag:disable-remote-subscription")?t("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.user.local?t("el-dropdown-item",{class:{"active-tag":e.user.tags.includes("mrf_tag:disable-any-subscription")},nativeOn:{click:function(s){return e.toggleTag(e.user,"mrf_tag:disable-any-subscription")}}},[e._v("\n "+e._s(e.$t("users.disableAnySubscription"))+"\n "),e.user.tags.includes("mrf_tag:disable-any-subscription")?t("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),e.user.local?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(s){return e.getPasswordResetToken(e.user.nickname)}}},[e._v("\n "+e._s(e.$t("users.getPasswordResetToken"))+"\n ")]):e._e(),e._v(" "),e.user.local?t("el-dropdown-item",{nativeOn:{click:function(s){return e.requirePasswordReset(e.user)}}},[e._v("\n "+e._s(e.$t("users.requirePasswordReset"))+"\n ")]):e._e(),e._v(" "),e.user.local?t("el-dropdown-item",{nativeOn:{click:function(s){return e.disableMfa(e.user.nickname)}}},[e._v("\n "+e._s(e.$t("users.disableMfa"))+"\n ")]):e._e()],1)],1)},[],!1,null,null,null);a.options.__file="ModerationDropdown.vue";s.a=a.exports}}]); -//# sourceMappingURL=chunk-6e8c.2aa335e0.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-6e8c.2aa335e0.js.map b/priv/static/adminfe/static/js/chunk-6e8c.2aa335e0.js.map deleted file mode 100644 index 1e742c3f9..000000000 --- a/priv/static/adminfe/static/js/chunk-6e8c.2aa335e0.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/users/components/SecuritySettingsModal.vue?5147","webpack:///./src/views/users/show.vue?816e","webpack:///./src/views/users/components/SecuritySettingsModal.vue?49db","webpack:///src/views/users/components/SecuritySettingsModal.vue","webpack:///./src/views/users/components/SecuritySettingsModal.vue","webpack:///./src/views/users/components/SecuritySettingsModal.vue?dd3f","webpack:///./src/views/users/show.vue?ac8b","webpack:///src/views/users/show.vue","webpack:///./src/views/users/show.vue","webpack:///./src/views/users/components/ModerationDropdown.vue?e3f0","webpack:///./src/views/users/show.vue?aed3","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/views/users/components/ResetPasswordDialog.vue?0b2b","webpack:///./src/views/users/components/ResetPasswordDialog.vue?31da","webpack:///src/views/users/components/ResetPasswordDialog.vue","webpack:///./src/views/users/components/ResetPasswordDialog.vue","webpack:///./src/views/users/components/ModerationDropdown.vue?93ed","webpack:///./src/views/users/components/ModerationDropdown.vue?676e","webpack:///src/views/users/components/ModerationDropdown.vue","webpack:///./src/views/users/components/ModerationDropdown.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_SecuritySettingsModal_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","components_SecuritySettingsModalvue_type_script_lang_js_","name","props","visible","type","Boolean","default","user","Object","data","securitySettingsForm","newEmail","newPassword","isEmailLoading","isPasswordLoading","computed","isDesktop","this","$store","state","app","device","getLabelWidth","userCredentials","userProfile","mounted","_mounted","asyncToGenerator_default","regenerator_default","a","mark","_callee","wrap","_context","prev","next","dispatch","nickname","email","stop","apply","arguments","methods","updateEmail","_updateEmail","_callee2","credentials","_context2","element_ui_common","message","$t","duration","updatePassword","_updatePassword","_callee3","_context3","password","close","$emit","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","before-close","title","model","label-width","label","placeholder","value","callback","$$v","$set","expression","_v","loading","disabled","on","click","$event","_s","minLength","closable","show-icon","length","options","__file","SecuritySettingsModal","users_showvue_type_script_lang_js_","components","ModerationDropdown","RebootButton","ResetPasswordDialog","Status","showPrivate","resetPasswordDialogOpen","securitySettingsModalVisible","isMobile","isTablet","users","statuses","statusesLoading","userProfileLoading","userId","$route","params","id","godmode","closeResetPasswordDialog","humanizeTag","tag","mrf_tag:media-force-nsfw","mrf_tag:media-strip","mrf_tag:force-unlisted","mrf_tag:sandbox","mrf_tag:disable-remote-subscription","mrf_tag:disable-any-subscription","onTogglePrivate","openResetPasswordDialog","propertyExists","account","property","show_component","_e","src","avatar","size","href","url","target","page","open-reset-token-dialog","reset-password-dialog-open","close-reset-token-dialog","actor_type","tags","_l","key","roles","moderator","admin","local","deactivated","approval_pending","registration_reason","icon","change","status","show-checkbox","user-id","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ModerationDropdown_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_show_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-SG","./en-SG.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-nz","./en-nz.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-tw","./zh-tw.js","webpackContext","req","webpackContextResolve","o","e","Error","code","keys","resolve","module","exports","components_ResetPasswordDialogvue_type_script_lang_js_","dialogOpen","passwordResetLink","passwordResetToken","link","token","directives","rawName","custom-class","components_ModerationDropdownvue_type_script_lang_js_","String","statusId","actorType","get","set","_userId","_statusId","disableMfa","getPasswordResetToken","handleConfirmationResend","handleDeletion","_this","$confirm","confirmButtonText","cancelButtonText","then","catch","$message","handleAccountApproval","handleAccountRejection","_this2","handleEmailConfirmation","requirePasswordReset","nodeInfo","metadata","mailerEnabled","$alert","showAdminAction","_ref","showDeactivatedButton","toggleActivation","toggleTag","includes","toggleUserRight","right","hide-on-click","trigger","placement","nativeOn","stopPropagation","slot","divided","confirmation_pending","class","active-tag"],"mappings":"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ACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,O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","file":"static/js/chunk-6e8c.2aa335e0.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecuritySettingsModal.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecuritySettingsModal.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.userProfileLoading)?_c('main',[(_vm.isDesktop || _vm.isTablet)?_c('header',{staticClass:\"user-page-header\"},[_c('div',{staticClass:\"avatar-name-container\"},[(_vm.propertyExists(_vm.user, 'avatar'))?_c('el-avatar',{attrs:{\"src\":_vm.user.avatar,\"size\":\"large\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('h1',[_vm._v(_vm._s(_vm.user.nickname))]):_c('h1',{staticClass:\"invalid\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")]),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'url'))?_c('a',{attrs:{\"href\":_vm.user.url,\"target\":\"_blank\"}},[_c('i',{staticClass:\"el-icon-top-right\",attrs:{\"title\":_vm.$t('userProfile.openAccountInInstance')}})]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"left-header-container\"},[(_vm.propertyExists(_vm.user, 'nickname'))?_c('moderation-dropdown',{attrs:{\"user\":_vm.user,\"page\":'userPage'},on:{\"open-reset-token-dialog\":_vm.openResetPasswordDialog}}):_vm._e(),_vm._v(\" \"),_c('reboot-button')],1)]):_vm._e(),_vm._v(\" \"),(_vm.isMobile)?_c('div',{staticClass:\"user-page-header-container\"},[_c('header',{staticClass:\"user-page-header\"},[_c('div',{staticClass:\"avatar-name-container\"},[(_vm.propertyExists(_vm.user, 'avatar'))?_c('el-avatar',{attrs:{\"src\":_vm.user.avatar,\"size\":\"large\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('h1',[_vm._v(_vm._s(_vm.user.nickname))]):_c('h1',{staticClass:\"invalid\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")])],1),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('moderation-dropdown',{attrs:{\"user\":_vm.user,\"page\":'userPage'},on:{\"open-reset-token-dialog\":_vm.openResetPasswordDialog}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('reset-password-dialog',{attrs:{\"reset-password-dialog-open\":_vm.resetPasswordDialogOpen},on:{\"close-reset-token-dialog\":_vm.closeResetPasswordDialog}}),_vm._v(\" \"),_c('div',{staticClass:\"user-profile-container\"},[_c('el-card',{staticClass:\"user-profile-card\"},[_c('div',{staticClass:\"el-table el-table--fit el-table--enable-row-hover el-table--enable-row-transition el-table--medium\"},[(!_vm.propertyExists(_vm.user, 'nickname'))?_c('el-tag',{staticClass:\"invalid-user-tag\",attrs:{\"type\":\"info\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.invalidAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('table',{staticClass:\"user-profile-table\"},[_c('tbody',[_c('tr',{staticClass:\"el-table__row\"},[_c('td',{staticClass:\"name-col\"},[_vm._v(\"ID\")]),_vm._v(\" \"),_c('td',[_vm._v(\"\\n \"+_vm._s(_vm.user.id)+\"\\n \")])]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.actorType')))]),_vm._v(\" \"),_c('td',[_c('el-tag',{attrs:{\"type\":_vm.userCredentials.actor_type === 'Person' ? 'success' : 'warning'}},[_vm._v(\"\\n \"+_vm._s(_vm.userCredentials.actor_type)+\"\\n \")])],1)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.tags')))]),_vm._v(\" \"),_c('td',[(_vm.user.tags.length === 0 || !_vm.propertyExists(_vm.user, 'tags'))?_c('span',[_vm._v(\"—\")]):_vm._l((_vm.user.tags),function(tag){return _c('el-tag',{key:tag,staticClass:\"user-profile-tag\"},[_vm._v(_vm._s(_vm.humanizeTag(tag)))])})],2)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.roles')))]),_vm._v(\" \"),_c('td',[(_vm.user.roles.admin)?_c('el-tag',{staticClass:\"user-profile-tag\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.admin'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.roles.moderator)?_c('el-tag',{staticClass:\"user-profile-tag\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderator'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.propertyExists(_vm.user, 'roles') || (!_vm.user.roles.moderator && !_vm.user.roles.admin))?_c('span',[_vm._v(\"—\")]):_vm._e()],1)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.accountType')))]),_vm._v(\" \"),_c('td',[(_vm.user.local)?_c('el-tag',{attrs:{\"type\":\"info\"}},[_vm._v(_vm._s(_vm.$t('userProfile.local')))]):_vm._e(),_vm._v(\" \"),(!_vm.user.local)?_c('el-tag',{attrs:{\"type\":\"info\"}},[_vm._v(_vm._s(_vm.$t('userProfile.external')))]):_vm._e()],1)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.status')))]),_vm._v(\" \"),_c('td',[(_vm.user.approval_pending)?_c('el-tag',{attrs:{\"type\":\"info\"}},[_vm._v(_vm._s(_vm.$t('userProfile.pending')))]):_vm._e(),_vm._v(\" \"),(!_vm.user.deactivated & !_vm.user.approval_pending)?_c('el-tag',{attrs:{\"type\":\"success\"}},[_vm._v(_vm._s(_vm.$t('userProfile.active')))]):_vm._e(),_vm._v(\" \"),(_vm.user.deactivated)?_c('el-tag',{attrs:{\"type\":\"danger\"}},[_vm._v(_vm._s(_vm.$t('userProfile.deactivated')))]):_vm._e()],1)])])]),_vm._v(\" \"),(_vm.user.registration_reason)?_c('div',[_c('div',{staticClass:\"reason-label\"},[_vm._v(_vm._s(_vm.$t('userProfile.reason')))]),_vm._v(\"\\n \\\"\"+_vm._s(_vm.user.registration_reason)+\"\\\"\\n \")]):_vm._e()],1),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('el-button',{staticClass:\"security-setting-button\",attrs:{\"icon\":\"el-icon-lock\"},on:{\"click\":function($event){_vm.securitySettingsModalVisible = true}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.securitySettings.securitySettings'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('SecuritySettingsModal',{attrs:{\"user\":_vm.user,\"visible\":_vm.securitySettingsModalVisible},on:{\"close\":function($event){_vm.securitySettingsModalVisible = false}}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"recent-statuses-container\"},[_c('h2',{staticClass:\"recent-statuses\"},[_vm._v(_vm._s(_vm.$t('userProfile.recentStatuses')))]),_vm._v(\" \"),_c('el-checkbox',{staticClass:\"show-private-statuses\",on:{\"change\":_vm.onTogglePrivate},model:{value:(_vm.showPrivate),callback:function ($$v) {_vm.showPrivate=$$v},expression:\"showPrivate\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.showPrivateStatuses'))+\"\\n \")]),_vm._v(\" \"),(!_vm.statusesLoading)?_c('el-timeline',{staticClass:\"statuses\"},[_vm._l((_vm.statuses),function(status){return _c('el-timeline-item',{key:status.id},[_c('status',{attrs:{\"status\":status,\"account\":status.account,\"show-checkbox\":false,\"user-id\":_vm.user.id,\"godmode\":_vm.showPrivate}})],1)}),_vm._v(\" \"),(_vm.statuses.length === 0)?_c('p',{staticClass:\"no-statuses\"},[_vm._v(_vm._s(_vm.$t('userProfile.noStatuses')))]):_vm._e()],2):_vm._e()],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecuritySettingsModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecuritySettingsModal.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SecuritySettingsModal.vue?vue&type=template&id=7fb08478&\"\nimport script from \"./SecuritySettingsModal.vue?vue&type=script&lang=js&\"\nexport * from \"./SecuritySettingsModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SecuritySettingsModal.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SecuritySettingsModal.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{staticClass:\"security-settings-modal\",attrs:{\"before-close\":_vm.close,\"title\":_vm.$t('userProfile.securitySettings.securitySettings'),\"visible\":_vm.visible}},[_c('el-form',{attrs:{\"model\":_vm.securitySettingsForm,\"label-width\":_vm.getLabelWidth}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('userProfile.securitySettings.email')}},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('userProfile.securitySettings.inputNewEmail')},model:{value:(_vm.securitySettingsForm.newEmail),callback:function ($$v) {_vm.$set(_vm.securitySettingsForm, \"newEmail\", $$v)},expression:\"securitySettingsForm.newEmail\"}})],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{staticClass:\"security-settings-submit-button\",attrs:{\"loading\":_vm.securitySettingsForm.isEmailLoading,\"disabled\":!_vm.securitySettingsForm.newEmail || _vm.securitySettingsForm.newEmail === _vm.userCredentials.email,\"type\":\"primary\"},on:{\"click\":function($event){return _vm.updateEmail()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.securitySettings.submit'))+\"\\n \")])],1),_vm._v(\" \"),_c('el-form-item',{staticClass:\"password-input\",attrs:{\"label\":_vm.$t('userProfile.securitySettings.password')}},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('userProfile.securitySettings.inputNewPassword')},model:{value:(_vm.securitySettingsForm.newPassword),callback:function ($$v) {_vm.$set(_vm.securitySettingsForm, \"newPassword\", $$v)},expression:\"securitySettingsForm.newPassword\"}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.securitySettings.passwordLengthNotice', { minLength: 8 }))+\"\\n \")])],1),_vm._v(\" \"),_c('el-alert',{staticClass:\"password-alert\",attrs:{\"closable\":false,\"type\":\"warning\",\"show-icon\":\"\"}},[_c('p',[_vm._v(_vm._s(_vm.$t('userProfile.securitySettings.passwordChangeWarning1')))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('userProfile.securitySettings.passwordChangeWarning2')))])]),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{staticClass:\"security-settings-submit-button\",attrs:{\"loading\":_vm.securitySettingsForm.isPasswordLoading,\"disabled\":_vm.securitySettingsForm.newPassword.length < 8,\"type\":\"primary\"},on:{\"click\":function($event){return _vm.updatePassword()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.securitySettings.submit'))+\"\\n \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./show.vue?vue&type=template&id=ab25eeb8&\"\nimport script from \"./show.vue?vue&type=script&lang=js&\"\nexport * from \"./show.vue?vue&type=script&lang=js&\"\nimport style0 from \"./show.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"show.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-SG\": \"zavE\",\n\t\"./en-SG.js\": \"zavE\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"visible\":_vm.dialogOpen,\"title\":_vm.$t('users.passwordResetTokenCreated'),\"custom-class\":\"password-reset-token-dialog\"},on:{\"close\":_vm.closeResetPasswordDialog}},[_c('div',[_c('p',{staticClass:\"password-reset-token\"},[_vm._v(_vm._s(_vm.$t('users.passwordResetTokenGenerated'))+\" \"+_vm._s(_vm.passwordResetToken))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('users.linkToResetPassword'))+\"\\n \"),_c('a',{staticClass:\"reset-password-link\",attrs:{\"href\":_vm.passwordResetLink,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.passwordResetLink))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./ResetPasswordDialog.vue?vue&type=template&id=e7d3eed4&\"\nimport script from \"./ResetPasswordDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPasswordDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ResetPasswordDialog.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"hide-on-click\":false,\"size\":\"small\",\"trigger\":\"click\",\"placement\":\"top-start\"},nativeOn:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',[(_vm.page === 'users')?_c('el-button',{staticClass:\"el-dropdown-link\",attrs:{\"type\":\"text\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderation'))+\"\\n \"),(_vm.isDesktop)?_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.page === 'userPage' || _vm.page === 'statusPage')?_c('el-button',{staticClass:\"moderate-user-button\"},[_c('span',{staticClass:\"moderate-user-button-container\"},[_c('span',[_c('i',{staticClass:\"el-icon-edit\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderateUser'))+\"\\n \")]),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})])]):_vm._e()],1),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{staticClass:\"actor-type-dropdown\"},[_c('el-select',{staticClass:\"actor-type-select\",attrs:{\"placeholder\":_vm.$t('userProfile.actorType')},model:{value:(_vm.actorType),callback:function ($$v) {_vm.actorType=$$v},expression:\"actorType\"}},[_c('el-option',{attrs:{\"label\":_vm.$t('users.service'),\"value\":\"Service\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":_vm.$t('users.person'),\"value\":\"Person\"}})],1)],1),_vm._v(\" \"),(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.admin ? _vm.$t('users.revokeAdmin') : _vm.$t('users.grantAdmin'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.moderator ? _vm.$t('users.revokeModerator') : _vm.$t('users.grantModerator'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id) && _vm.page !== 'statusPage')?_c('el-dropdown-item',{attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleActivation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.deactivated ? _vm.$t('users.activateAccount') : _vm.$t('users.deactivateAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id) && _vm.page !== 'statusPage')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeletion(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.approval_pending)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleAccountApproval(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.approveAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.approval_pending)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleAccountRejection(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.rejectAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleEmailConfirmation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.confirmAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleConfirmationResend(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.resendConfirmation'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:media-force-nsfw') },attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:media-force-nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceNsfw'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:media-force-nsfw'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:media-strip') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:media-strip')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.stripMedia'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:media-strip'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:force-unlisted') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:force-unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceUnlisted'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:force-unlisted'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:sandbox') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.sandbox'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:sandbox'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:disable-remote-subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:disable-remote-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableRemoteSubscription'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:disable-remote-subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:disable-any-subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:disable-any-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableAnySubscription'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:disable-any-subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.getPasswordResetToken(_vm.user.nickname)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.getPasswordResetToken'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.requirePasswordReset(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.requirePasswordReset'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.disableMfa(_vm.user.nickname)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableMfa'))+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ModerationDropdown.vue?vue&type=template&id=439555de&\"\nimport script from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ModerationDropdown.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-7503.278e0031.js b/priv/static/adminfe/static/js/chunk-7503.278e0031.js deleted file mode 100644 index 3875f9ad9..000000000 --- a/priv/static/adminfe/static/js/chunk-7503.278e0031.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-7503"],{"53Av":function(s,e,t){"use strict";var a=t("lOBV");t.n(a).a},RnhZ:function(s,e,t){var a={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function r(s){var e=n(s);return t(e)}function n(s){if(!t.o(a,s)){var e=new Error("Cannot find module '"+s+"'");throw e.code="MODULE_NOT_FOUND",e}return a[s]}r.keys=function(){return Object.keys(a)},r.resolve=n,s.exports=r,r.id="RnhZ"},S3Ak:function(s,e,t){"use strict";var a=t("lGnS");t.n(a).a},WjBP:function(s,e,t){"use strict";var a={name:"ResetPasswordDialog",props:{resetPasswordDialogOpen:{type:Boolean,default:!1}},computed:{dialogOpen:function(){return this.resetPasswordDialogOpen},loading:function(){return this.$store.state.users.loading},passwordResetLink:function(){return this.$store.state.users.passwordResetToken.link},passwordResetToken:function(){return this.$store.state.users.passwordResetToken.token}},methods:{closeResetPasswordDialog:function(){this.$emit("close-reset-token-dialog")}}},r=t("KHd+"),n=Object(r.a)(a,function(){var s=this,e=s.$createElement,t=s._self._c||e;return t("el-dialog",{directives:[{name:"loading",rawName:"v-loading",value:s.loading,expression:"loading"}],attrs:{visible:s.dialogOpen,title:s.$t("users.passwordResetTokenCreated"),"custom-class":"password-reset-token-dialog"},on:{close:s.closeResetPasswordDialog}},[t("div",[t("p",{staticClass:"password-reset-token"},[s._v(s._s(s.$t("users.passwordResetTokenGenerated"))+" "+s._s(s.passwordResetToken))]),s._v(" "),t("p",[s._v(s._s(s.$t("users.linkToResetPassword"))+"\n "),t("a",{staticClass:"reset-password-link",attrs:{href:s.passwordResetLink,target:"_blank"}},[s._v(s._s(s.passwordResetLink))])])])])},[],!1,null,null,null);n.options.__file="ResetPasswordDialog.vue";e.a=n.exports},lGnS:function(s,e,t){},lOBV:function(s,e,t){},rwwt:function(s,e,t){"use strict";t.r(e);var a=t("ot3S"),r=t("tPM3"),n=t("rIUS"),i=t("WjBP"),o={name:"StatusShow",components:{ModerationDropdown:r.a,RebootButton:n.a,ResetPasswordDialog:i.a,Status:a.a},data:function(){return{showPrivate:!1,resetPasswordDialogOpen:!1}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},loading:function(){return this.$store.state.status.loading},status:function(){return this.$store.state.status.fetchedStatus},statuses:function(){return this.$store.state.userProfile.statuses},statusesLoading:function(){return this.$store.state.userProfile.statusesLoading},user:function(){return this.$store.state.status.statusAuthor}},beforeMount:function(){this.$store.dispatch("NeedReboot"),this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("FetchStatus",this.$route.params.id)},methods:{closeResetPasswordDialog:function(){this.resetPasswordDialogOpen=!1,this.$store.dispatch("RemovePasswordToken")},onTogglePrivate:function(){this.$store.dispatch("FetchUserStatuses",{userId:this.user.id,godmode:this.showPrivate})},openResetPasswordDialog:function(){this.resetPasswordDialogOpen=!0},propertyExists:function(s,e){return s[e]}}},u=(t("S3Ak"),t("KHd+")),c=Object(u.a)(o,function(){var s=this,e=s.$createElement,t=s._self._c||e;return s.loading?s._e():t("div",{staticClass:"status-show-container"},[s.isDesktop||s.isTablet?t("header",{staticClass:"user-page-header"},[t("div",{staticClass:"avatar-name-container"},[s.propertyExists(s.user,"id")?t("router-link",{staticClass:"router-link",attrs:{to:{name:"UsersShow",params:{id:s.user.id}}}},[t("div",{staticClass:"avatar-name-header"},[s.propertyExists(s.user,"avatar")?t("el-avatar",{attrs:{src:s.user.avatar,size:"large"}}):s._e(),s._v(" "),s.propertyExists(s.user,"nickname")?t("h1",[s._v(s._s(s.user.nickname))]):t("h1",{staticClass:"invalid"},[s._v("("+s._s(s.$t("users.invalidNickname"))+")")])],1)]):s._e(),s._v(" "),s.propertyExists(s.user,"url")?t("a",{attrs:{href:s.user.url,target:"_blank"}},[t("i",{staticClass:"el-icon-top-right",attrs:{title:s.$t("userProfile.openAccountInInstance")}})]):s._e()],1),s._v(" "),t("div",{staticClass:"left-header-container"},[t("moderation-dropdown",{attrs:{user:s.user,page:"statusPage","status-id":s.status.id},on:{"open-reset-token-dialog":s.openResetPasswordDialog}}),s._v(" "),t("reboot-button")],1)]):s._e(),s._v(" "),s.isMobile?t("div",{staticClass:"status-page-header-container"},[t("header",{staticClass:"user-page-header"},[t("div",{staticClass:"avatar-name-container"},[s.propertyExists(s.user,"avatar")?t("el-avatar",{attrs:{src:s.user.avatar,size:"large"}}):s._e(),s._v(" "),s.propertyExists(s.user,"nickname")?t("h1",[s._v(s._s(s.user.nickname))]):s._e()],1),s._v(" "),t("reboot-button")],1),s._v(" "),t("moderation-dropdown",{attrs:{user:s.user,page:"statusPage"},on:{"open-reset-token-dialog":s.openResetPasswordDialog}})],1):s._e(),s._v(" "),t("reset-password-dialog",{attrs:{"reset-password-dialog-open":s.resetPasswordDialogOpen},on:{"close-reset-token-dialog":s.closeResetPasswordDialog}}),s._v(" "),t("div",{staticClass:"status-container"},[t("status",{attrs:{status:s.status,account:s.user,"show-checkbox":!1,godmode:s.showPrivate}})],1),s._v(" "),t("div",{staticClass:"recent-statuses-container-show"},[s.propertyExists(s.user,"nickname")?t("h2",{staticClass:"recent-statuses"},[s._v("\n "+s._s(s.$t("userProfile.recentStatuses"))+" by "+s._s(s.user.nickname)+"\n ")]):t("h2",{staticClass:"recent-statuses"},[s._v(s._s(s.$t("userProfile.recentStatuses")))]),s._v(" "),t("el-checkbox",{staticClass:"show-private-statuses",on:{change:s.onTogglePrivate},model:{value:s.showPrivate,callback:function(e){s.showPrivate=e},expression:"showPrivate"}},[s._v("\n "+s._s(s.$t("statuses.showPrivateStatuses"))+"\n ")]),s._v(" "),s.statusesLoading?s._e():t("el-timeline",{staticClass:"statuses"},[s._l(s.statuses,function(e){return t("el-timeline-item",{key:e.id},[t("status",{attrs:{status:e,account:e.account,"show-checkbox":!1,"user-id":s.user.id,godmode:s.showPrivate}})],1)}),s._v(" "),0===s.statuses.length?t("p",{staticClass:"no-statuses"},[s._v(s._s(s.$t("userProfile.noStatuses")))]):s._e()],2)],1)],1)},[],!1,null,null,null);c.options.__file="show.vue";e.default=c.exports},tPM3:function(s,e,t){"use strict";var a={name:"ModerationDropdown",props:{user:{type:Object,default:function(){return{}}},page:{type:String,default:"users"},statusId:{type:String,default:""}},computed:{actorType:{get:function(){return this.user.actor_type},set:function(s){this.$store.dispatch("UpdateActorType",{user:this.user,type:s,_userId:this.user.id,_statusId:this.statusId})}},isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{disableMfa:function(s){this.$store.dispatch("DisableMfa",s)},getPasswordResetToken:function(s){this.$emit("open-reset-token-dialog"),this.$store.dispatch("GetPasswordResetToken",s)},handleConfirmationResend:function(s){this.$store.dispatch("ResendConfirmationEmail",[s])},handleDeletion:function(s){var e=this;this.$confirm(this.$t("users.deleteUserConfirmation"),{confirmButtonText:"Delete",cancelButtonText:"Cancel",type:"warning"}).then(function(){e.$store.dispatch("DeleteUsers",{users:[s],_userId:s.id})}).catch(function(){e.$message({type:"info",message:"Delete canceled"})})},handleAccountApproval:function(s){this.$store.dispatch("ApproveUsersAccount",{users:[s],_userId:s.id,_statusId:this.statusId})},handleAccountRejection:function(s){var e=this;this.$confirm(this.$t("users.rejectAccountConfirmation"),{confirmButtonText:"Reject",cancelButtonText:"Cancel",type:"warning"}).then(function(){e.$store.dispatch("DeleteUsers",{users:[s],_userId:s.id})}).catch(function(){e.$message({type:"info",message:"Reject canceled"})})},handleEmailConfirmation:function(s){this.$store.dispatch("ConfirmUsersEmail",{users:[s],_userId:s.id,_statusId:this.statusId})},requirePasswordReset:function(s){this.$store.state.user.nodeInfo.metadata.mailerEnabled?this.$store.dispatch("RequirePasswordReset",[s]):this.$alert(this.$t("users.mailerMustBeEnabled"),"Error",{type:"error"})},showAdminAction:function(s){var e=s.local,t=s.id;return e&&this.showDeactivatedButton(t)},showDeactivatedButton:function(s){return this.$store.state.user.id!==s},toggleActivation:function(s){s.deactivated?this.$store.dispatch("ActivateUsers",{users:[s],_userId:s.id}):this.$store.dispatch("DeactivateUsers",{users:[s],_userId:s.id})},toggleTag:function(s,e){s.tags.includes(e)?this.$store.dispatch("RemoveTag",{users:[s],tag:e,_userId:s.id,_statusId:this.statusId}):this.$store.dispatch("AddTag",{users:[s],tag:e,_userId:s.id,_statusId:this.statusId})},toggleUserRight:function(s,e){s.roles[e]?this.$store.dispatch("DeleteRight",{users:[s],right:e,_userId:s.id,_statusId:this.statusId}):this.$store.dispatch("AddRight",{users:[s],right:e,_userId:s.id,_statusId:this.statusId})}}},r=(t("53Av"),t("KHd+")),n=Object(r.a)(a,function(){var s=this,e=s.$createElement,t=s._self._c||e;return t("el-dropdown",{attrs:{"hide-on-click":!1,size:"small",trigger:"click",placement:"top-start"},nativeOn:{click:function(s){s.stopPropagation()}}},[t("div",["users"===s.page?t("el-button",{staticClass:"el-dropdown-link",attrs:{type:"text"}},[s._v("\n "+s._s(s.$t("users.moderation"))+"\n "),s.isDesktop?t("i",{staticClass:"el-icon-arrow-down el-icon--right"}):s._e()]):s._e(),s._v(" "),"userPage"===s.page||"statusPage"===s.page?t("el-button",{staticClass:"moderate-user-button"},[t("span",{staticClass:"moderate-user-button-container"},[t("span",[t("i",{staticClass:"el-icon-edit"}),s._v("\n "+s._s(s.$t("users.moderateUser"))+"\n ")]),s._v(" "),t("i",{staticClass:"el-icon-arrow-down el-icon--right"})])]):s._e()],1),s._v(" "),t("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[t("el-dropdown-item",{staticClass:"actor-type-dropdown"},[t("el-select",{staticClass:"actor-type-select",attrs:{placeholder:s.$t("userProfile.actorType")},model:{value:s.actorType,callback:function(e){s.actorType=e},expression:"actorType"}},[t("el-option",{attrs:{label:s.$t("users.service"),value:"Service"}}),s._v(" "),t("el-option",{attrs:{label:s.$t("users.person"),value:"Person"}})],1)],1),s._v(" "),s.showAdminAction(s.user)?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return s.toggleUserRight(s.user,"admin")}}},[s._v("\n "+s._s(s.user.roles.admin?s.$t("users.revokeAdmin"):s.$t("users.grantAdmin"))+"\n ")]):s._e(),s._v(" "),s.showAdminAction(s.user)?t("el-dropdown-item",{nativeOn:{click:function(e){return s.toggleUserRight(s.user,"moderator")}}},[s._v("\n "+s._s(s.user.roles.moderator?s.$t("users.revokeModerator"):s.$t("users.grantModerator"))+"\n ")]):s._e(),s._v(" "),s.showDeactivatedButton(s.user.id)&&"statusPage"!==s.page?t("el-dropdown-item",{attrs:{divided:s.showAdminAction(s.user)},nativeOn:{click:function(e){return s.toggleActivation(s.user)}}},[s._v("\n "+s._s(s.user.deactivated?s.$t("users.activateAccount"):s.$t("users.deactivateAccount"))+"\n ")]):s._e(),s._v(" "),s.showDeactivatedButton(s.user.id)&&"statusPage"!==s.page?t("el-dropdown-item",{nativeOn:{click:function(e){return s.handleDeletion(s.user)}}},[s._v("\n "+s._s(s.$t("users.deleteAccount"))+"\n ")]):s._e(),s._v(" "),s.user.local&&s.user.approval_pending?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return s.handleAccountApproval(s.user)}}},[s._v("\n "+s._s(s.$t("users.approveAccount"))+"\n ")]):s._e(),s._v(" "),s.user.local&&s.user.approval_pending?t("el-dropdown-item",{nativeOn:{click:function(e){return s.handleAccountRejection(s.user)}}},[s._v("\n "+s._s(s.$t("users.rejectAccount"))+"\n ")]):s._e(),s._v(" "),s.user.local&&s.user.confirmation_pending?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return s.handleEmailConfirmation(s.user)}}},[s._v("\n "+s._s(s.$t("users.confirmAccount"))+"\n ")]):s._e(),s._v(" "),s.user.local&&s.user.confirmation_pending?t("el-dropdown-item",{nativeOn:{click:function(e){return s.handleConfirmationResend(s.user)}}},[s._v("\n "+s._s(s.$t("users.resendConfirmation"))+"\n ")]):s._e(),s._v(" "),t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("mrf_tag:media-force-nsfw")},attrs:{divided:s.showAdminAction(s.user)},nativeOn:{click:function(e){return s.toggleTag(s.user,"mrf_tag:media-force-nsfw")}}},[s._v("\n "+s._s(s.$t("users.forceNsfw"))+"\n "),s.user.tags.includes("mrf_tag:media-force-nsfw")?t("i",{staticClass:"el-icon-check"}):s._e()]),s._v(" "),t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("mrf_tag:media-strip")},nativeOn:{click:function(e){return s.toggleTag(s.user,"mrf_tag:media-strip")}}},[s._v("\n "+s._s(s.$t("users.stripMedia"))+"\n "),s.user.tags.includes("mrf_tag:media-strip")?t("i",{staticClass:"el-icon-check"}):s._e()]),s._v(" "),t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("mrf_tag:force-unlisted")},nativeOn:{click:function(e){return s.toggleTag(s.user,"mrf_tag:force-unlisted")}}},[s._v("\n "+s._s(s.$t("users.forceUnlisted"))+"\n "),s.user.tags.includes("mrf_tag:force-unlisted")?t("i",{staticClass:"el-icon-check"}):s._e()]),s._v(" "),t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("mrf_tag:sandbox")},nativeOn:{click:function(e){return s.toggleTag(s.user,"mrf_tag:sandbox")}}},[s._v("\n "+s._s(s.$t("users.sandbox"))+"\n "),s.user.tags.includes("mrf_tag:sandbox")?t("i",{staticClass:"el-icon-check"}):s._e()]),s._v(" "),s.user.local?t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("mrf_tag:disable-remote-subscription")},nativeOn:{click:function(e){return s.toggleTag(s.user,"mrf_tag:disable-remote-subscription")}}},[s._v("\n "+s._s(s.$t("users.disableRemoteSubscription"))+"\n "),s.user.tags.includes("mrf_tag:disable-remote-subscription")?t("i",{staticClass:"el-icon-check"}):s._e()]):s._e(),s._v(" "),s.user.local?t("el-dropdown-item",{class:{"active-tag":s.user.tags.includes("mrf_tag:disable-any-subscription")},nativeOn:{click:function(e){return s.toggleTag(s.user,"mrf_tag:disable-any-subscription")}}},[s._v("\n "+s._s(s.$t("users.disableAnySubscription"))+"\n "),s.user.tags.includes("mrf_tag:disable-any-subscription")?t("i",{staticClass:"el-icon-check"}):s._e()]):s._e(),s._v(" "),s.user.local?t("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return s.getPasswordResetToken(s.user.nickname)}}},[s._v("\n "+s._s(s.$t("users.getPasswordResetToken"))+"\n ")]):s._e(),s._v(" "),s.user.local?t("el-dropdown-item",{nativeOn:{click:function(e){return s.requirePasswordReset(s.user)}}},[s._v("\n "+s._s(s.$t("users.requirePasswordReset"))+"\n ")]):s._e(),s._v(" "),s.user.local?t("el-dropdown-item",{nativeOn:{click:function(e){return s.disableMfa(s.user.nickname)}}},[s._v("\n "+s._s(s.$t("users.disableMfa"))+"\n ")]):s._e()],1)],1)},[],!1,null,null,null);n.options.__file="ModerationDropdown.vue";e.a=n.exports}}]); -//# sourceMappingURL=chunk-7503.278e0031.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-7503.278e0031.js.map b/priv/static/adminfe/static/js/chunk-7503.278e0031.js.map deleted file mode 100644 index 494d1a763..000000000 --- a/priv/static/adminfe/static/js/chunk-7503.278e0031.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/users/components/ModerationDropdown.vue?e3f0","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/views/statuses/show.vue?2896","webpack:///./src/views/users/components/ResetPasswordDialog.vue?0b2b","webpack:///./src/views/users/components/ResetPasswordDialog.vue?31da","webpack:///src/views/users/components/ResetPasswordDialog.vue","webpack:///./src/views/users/components/ResetPasswordDialog.vue","webpack:///./src/views/statuses/show.vue?ba35","webpack:///./src/views/statuses/show.vue?6fdf","webpack:///src/views/statuses/show.vue","webpack:///./src/views/statuses/show.vue","webpack:///./src/views/users/components/ModerationDropdown.vue?93ed","webpack:///./src/views/users/components/ModerationDropdown.vue?676e","webpack:///src/views/users/components/ModerationDropdown.vue","webpack:///./src/views/users/components/ModerationDropdown.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ModerationDropdown_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-SG","./en-SG.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-nz","./en-nz.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-tw","./zh-tw.js","webpackContext","req","id","webpackContextResolve","o","e","Error","code","keys","Object","resolve","module","exports","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_show_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","components_ResetPasswordDialogvue_type_script_lang_js_","name","props","resetPasswordDialogOpen","type","Boolean","default","computed","dialogOpen","this","loading","$store","state","users","passwordResetLink","passwordResetToken","link","token","methods","closeResetPasswordDialog","$emit","component","componentNormalizer","_vm","_h","$createElement","_c","_self","directives","rawName","value","expression","attrs","visible","title","$t","custom-class","on","close","staticClass","_v","_s","href","target","options","__file","__webpack_exports__","statuses_showvue_type_script_lang_js_","components","ModerationDropdown","RebootButton","ResetPasswordDialog","Status","data","showPrivate","isDesktop","app","device","isMobile","isTablet","status","fetchedStatus","statuses","userProfile","statusesLoading","user","statusAuthor","beforeMount","dispatch","$route","params","onTogglePrivate","userId","godmode","openResetPasswordDialog","propertyExists","account","property","_e","to","src","avatar","size","nickname","url","page","status-id","open-reset-token-dialog","reset-password-dialog-open","close-reset-token-dialog","show-checkbox","change","model","callback","$$v","_l","key","user-id","length","components_ModerationDropdownvue_type_script_lang_js_","String","statusId","actorType","get","actor_type","set","_userId","_statusId","disableMfa","getPasswordResetToken","handleConfirmationResend","handleDeletion","_this","$confirm","confirmButtonText","cancelButtonText","then","catch","$message","message","handleAccountApproval","handleAccountRejection","_this2","handleEmailConfirmation","requirePasswordReset","nodeInfo","metadata","mailerEnabled","$alert","showAdminAction","_ref","local","showDeactivatedButton","toggleActivation","deactivated","toggleTag","tag","tags","includes","toggleUserRight","right","roles","hide-on-click","trigger","placement","nativeOn","click","$event","stopPropagation","slot","placeholder","label","divided","admin","moderator","approval_pending","confirmation_pending","class","active-tag"],"mappings":"wGAAA,IAAAA,EAAAC,EAAA,QAAAA,EAAAC,EAAAF,GAAsf,wBCAtf,IAAAG,GACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,O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","file":"static/js/chunk-7503.278e0031.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-SG\": \"zavE\",\n\t\"./en-SG.js\": \"zavE\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"visible\":_vm.dialogOpen,\"title\":_vm.$t('users.passwordResetTokenCreated'),\"custom-class\":\"password-reset-token-dialog\"},on:{\"close\":_vm.closeResetPasswordDialog}},[_c('div',[_c('p',{staticClass:\"password-reset-token\"},[_vm._v(_vm._s(_vm.$t('users.passwordResetTokenGenerated'))+\" \"+_vm._s(_vm.passwordResetToken))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('users.linkToResetPassword'))+\"\\n \"),_c('a',{staticClass:\"reset-password-link\",attrs:{\"href\":_vm.passwordResetLink,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.passwordResetLink))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./ResetPasswordDialog.vue?vue&type=template&id=e7d3eed4&\"\nimport script from \"./ResetPasswordDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPasswordDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ResetPasswordDialog.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"status-show-container\"},[(_vm.isDesktop || _vm.isTablet)?_c('header',{staticClass:\"user-page-header\"},[_c('div',{staticClass:\"avatar-name-container\"},[(_vm.propertyExists(_vm.user, 'id'))?_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":{ name: 'UsersShow', params: { id: _vm.user.id }}}},[_c('div',{staticClass:\"avatar-name-header\"},[(_vm.propertyExists(_vm.user, 'avatar'))?_c('el-avatar',{attrs:{\"src\":_vm.user.avatar,\"size\":\"large\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('h1',[_vm._v(_vm._s(_vm.user.nickname))]):_c('h1',{staticClass:\"invalid\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")])],1)]):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'url'))?_c('a',{attrs:{\"href\":_vm.user.url,\"target\":\"_blank\"}},[_c('i',{staticClass:\"el-icon-top-right\",attrs:{\"title\":_vm.$t('userProfile.openAccountInInstance')}})]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"left-header-container\"},[_c('moderation-dropdown',{attrs:{\"user\":_vm.user,\"page\":'statusPage',\"status-id\":_vm.status.id},on:{\"open-reset-token-dialog\":_vm.openResetPasswordDialog}}),_vm._v(\" \"),_c('reboot-button')],1)]):_vm._e(),_vm._v(\" \"),(_vm.isMobile)?_c('div',{staticClass:\"status-page-header-container\"},[_c('header',{staticClass:\"user-page-header\"},[_c('div',{staticClass:\"avatar-name-container\"},[(_vm.propertyExists(_vm.user, 'avatar'))?_c('el-avatar',{attrs:{\"src\":_vm.user.avatar,\"size\":\"large\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.user, 'nickname'))?_c('h1',[_vm._v(_vm._s(_vm.user.nickname))]):_vm._e()],1),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('moderation-dropdown',{attrs:{\"user\":_vm.user,\"page\":'statusPage'},on:{\"open-reset-token-dialog\":_vm.openResetPasswordDialog}})],1):_vm._e(),_vm._v(\" \"),_c('reset-password-dialog',{attrs:{\"reset-password-dialog-open\":_vm.resetPasswordDialogOpen},on:{\"close-reset-token-dialog\":_vm.closeResetPasswordDialog}}),_vm._v(\" \"),_c('div',{staticClass:\"status-container\"},[_c('status',{attrs:{\"status\":_vm.status,\"account\":_vm.user,\"show-checkbox\":false,\"godmode\":_vm.showPrivate}})],1),_vm._v(\" \"),_c('div',{staticClass:\"recent-statuses-container-show\"},[(_vm.propertyExists(_vm.user, 'nickname'))?_c('h2',{staticClass:\"recent-statuses\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.recentStatuses'))+\" by \"+_vm._s(_vm.user.nickname)+\"\\n \")]):_c('h2',{staticClass:\"recent-statuses\"},[_vm._v(_vm._s(_vm.$t('userProfile.recentStatuses')))]),_vm._v(\" \"),_c('el-checkbox',{staticClass:\"show-private-statuses\",on:{\"change\":_vm.onTogglePrivate},model:{value:(_vm.showPrivate),callback:function ($$v) {_vm.showPrivate=$$v},expression:\"showPrivate\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.showPrivateStatuses'))+\"\\n \")]),_vm._v(\" \"),(!_vm.statusesLoading)?_c('el-timeline',{staticClass:\"statuses\"},[_vm._l((_vm.statuses),function(status){return _c('el-timeline-item',{key:status.id},[_c('status',{attrs:{\"status\":status,\"account\":status.account,\"show-checkbox\":false,\"user-id\":_vm.user.id,\"godmode\":_vm.showPrivate}})],1)}),_vm._v(\" \"),(_vm.statuses.length === 0)?_c('p',{staticClass:\"no-statuses\"},[_vm._v(_vm._s(_vm.$t('userProfile.noStatuses')))]):_vm._e()],2):_vm._e()],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./show.vue?vue&type=template&id=7911e5ce&\"\nimport script from \"./show.vue?vue&type=script&lang=js&\"\nexport * from \"./show.vue?vue&type=script&lang=js&\"\nimport style0 from \"./show.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"show.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"hide-on-click\":false,\"size\":\"small\",\"trigger\":\"click\",\"placement\":\"top-start\"},nativeOn:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',[(_vm.page === 'users')?_c('el-button',{staticClass:\"el-dropdown-link\",attrs:{\"type\":\"text\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderation'))+\"\\n \"),(_vm.isDesktop)?_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.page === 'userPage' || _vm.page === 'statusPage')?_c('el-button',{staticClass:\"moderate-user-button\"},[_c('span',{staticClass:\"moderate-user-button-container\"},[_c('span',[_c('i',{staticClass:\"el-icon-edit\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderateUser'))+\"\\n \")]),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})])]):_vm._e()],1),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{staticClass:\"actor-type-dropdown\"},[_c('el-select',{staticClass:\"actor-type-select\",attrs:{\"placeholder\":_vm.$t('userProfile.actorType')},model:{value:(_vm.actorType),callback:function ($$v) {_vm.actorType=$$v},expression:\"actorType\"}},[_c('el-option',{attrs:{\"label\":_vm.$t('users.service'),\"value\":\"Service\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":_vm.$t('users.person'),\"value\":\"Person\"}})],1)],1),_vm._v(\" \"),(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.admin ? _vm.$t('users.revokeAdmin') : _vm.$t('users.grantAdmin'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showAdminAction(_vm.user))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.toggleUserRight(_vm.user, 'moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.roles.moderator ? _vm.$t('users.revokeModerator') : _vm.$t('users.grantModerator'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id) && _vm.page !== 'statusPage')?_c('el-dropdown-item',{attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleActivation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.user.deactivated ? _vm.$t('users.activateAccount') : _vm.$t('users.deactivateAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.user.id) && _vm.page !== 'statusPage')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeletion(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.approval_pending)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleAccountApproval(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.approveAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.approval_pending)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleAccountRejection(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.rejectAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.handleEmailConfirmation(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.confirmAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local && _vm.user.confirmation_pending)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleConfirmationResend(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.resendConfirmation'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:media-force-nsfw') },attrs:{\"divided\":_vm.showAdminAction(_vm.user)},nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:media-force-nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceNsfw'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:media-force-nsfw'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:media-strip') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:media-strip')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.stripMedia'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:media-strip'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:force-unlisted') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:force-unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceUnlisted'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:force-unlisted'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:sandbox') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.sandbox'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:sandbox'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:disable-remote-subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:disable-remote-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableRemoteSubscription'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:disable-remote-subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.user.tags.includes('mrf_tag:disable-any-subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.user, 'mrf_tag:disable-any-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableAnySubscription'))+\"\\n \"),(_vm.user.tags.includes('mrf_tag:disable-any-subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.getPasswordResetToken(_vm.user.nickname)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.getPasswordResetToken'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.requirePasswordReset(_vm.user)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.requirePasswordReset'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.local)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.disableMfa(_vm.user.nickname)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableMfa'))+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerationDropdown.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ModerationDropdown.vue?vue&type=template&id=439555de&\"\nimport script from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./ModerationDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModerationDropdown.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ModerationDropdown.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-7c6b.1ebeb0e4.js b/priv/static/adminfe/static/js/chunk-7c6b.1ebeb0e4.js deleted file mode 100644 index 63be4d84f..000000000 --- a/priv/static/adminfe/static/js/chunk-7c6b.1ebeb0e4.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-7c6b"],{HMof:function(e,t,i){"use strict";i.r(t);var n=i("o0o1"),s=i.n(n),a=i("yXPU"),o=i.n(a),r=i("MVZn"),l=i.n(r),c=i("rIUS"),v=i("L2JU"),m=i("9i3r"),u={components:{RebootButton:c.a},data:function(){return{rules:{email:[{validator:this.validateEmail,trigger:"blur"}]},newTokenForm:{maxUse:1,expiresAt:""},inviteUserForm:{email:"",name:""},createTokenDialogVisible:!1,inviteUserDialogVisible:!1}},computed:l()({},Object(v.b)(["authHost"]),{getLabelWidth:function(){return this.isDesktop?"100px":"85px"},inviteLink:function(){return"".concat(Object(m.a)(this.authHost),"/registration/").concat(this.newToken.token)},isDesktop:function(){return"desktop"===this.$store.state.app.device},loading:function(){return this.$store.state.invites.loading},newToken:function(){return this.$store.state.invites.newToken},tokens:function(){return this.$store.state.invites.inviteTokens}}),mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchInviteTokens")},methods:{closeDialogWindow:function(){this.inviteUserDialogVisible=!1,this.createTokenDialogVisible=!1,this.$store.dispatch("RemoveNewToken"),this.$data.inviteUserForm.email="",this.$data.inviteUserForm.name=""},createToken:function(){this.$store.dispatch("GenerateInviteToken",this.$data.newTokenForm)},inviteUserViaEmail:function(){var e=o()(s.a.mark(function e(){var t=this;return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:this.$refs.inviteUserForm.validate(function(){var e=o()(s.a.mark(function e(i){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!i){e.next=6;break}return e.next=3,t.$store.dispatch("InviteUserViaEmail",t.$data.inviteUserForm);case 3:t.closeDialogWindow(),e.next=8;break;case 6:return t.$message({type:"error",message:t.$t("invites.submitFormError")}),e.abrupt("return",!1);case 8:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}());case 1:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),revokeInviteToken:function(e){this.$store.dispatch("RevokeToken",e)},validateEmail:function(e,t,i){return""===t?i(new Error(this.$t("invites.emptyEmailError"))):this.validEmail(t)?i():i(new Error(this.$t("invites.invalidEmailError")))},validEmail:function(e){return/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(e)}}},d=(i("ObxI"),i("KHd+")),p=Object(d.a)(u,function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"invites-container"},[i("div",{staticClass:"invites-header-container"},[i("h1",[e._v(e._s(e.$t("invites.inviteTokens")))]),e._v(" "),i("reboot-button")],1),e._v(" "),i("div",{staticClass:"actions-container"},[i("el-button",{staticClass:"create-invite-token",on:{click:function(t){e.createTokenDialogVisible=!0}}},[i("span",[i("i",{staticClass:"icon el-icon-plus"}),e._v("\n "+e._s(e.$t("invites.createInviteToken"))+"\n ")])]),e._v(" "),i("el-button",{staticClass:"invite-via-email",on:{click:function(t){e.inviteUserDialogVisible=!0}}},[i("span",[i("i",{staticClass:"icon el-icon-message"}),e._v("\n "+e._s(e.$t("invites.inviteUserViaEmail"))+"\n ")])])],1),e._v(" "),i("el-dialog",{attrs:{visible:e.createTokenDialogVisible,"show-close":!1,title:e.$t("invites.createInviteToken"),"custom-class":"create-new-token-dialog"},on:{"update:visible":function(t){e.createTokenDialogVisible=t}}},[i("el-form",{ref:"newTokenForm",attrs:{model:e.newTokenForm,"label-width":e.getLabelWidth,"status-icon":""}},[i("el-form-item",{attrs:{label:e.$t("invites.maxUse")}},[i("el-input-number",{attrs:{min:0,size:e.isDesktop?"medium":"small",name:"maxUse"},model:{value:e.newTokenForm.maxUse,callback:function(t){e.$set(e.newTokenForm,"maxUse",t)},expression:"newTokenForm.maxUse"}})],1),e._v(" "),i("el-form-item",{attrs:{label:e.$t("invites.expiresAt")}},[i("el-date-picker",{staticClass:"pick-date",attrs:{placeholder:e.$t("invites.pickDate"),type:"date",name:"date","value-format":"yyyy-MM-dd"},model:{value:e.newTokenForm.expiresAt,callback:function(t){e.$set(e.newTokenForm,"expiresAt",t)},expression:"newTokenForm.expiresAt"}})],1)],1),e._v(" "),i("span",{attrs:{slot:"footer"},slot:"footer"},[i("el-button",{staticClass:"invites-close-dialog",on:{click:e.closeDialogWindow}},[e._v(e._s(e.$t("invites.cancel")))]),e._v(" "),i("el-button",{attrs:{type:"primary"},on:{click:e.createToken}},[e._v(e._s(e.$t("invites.create")))])],1),e._v(" "),"token"in e.newToken?i("el-card",[i("div",{staticClass:"clearfix",attrs:{slot:"header"},slot:"header"},[i("span",[e._v(e._s(e.$t("invites.tokenCreated")))])]),e._v(" "),i("el-form",{staticClass:"new-token-card",attrs:{"label-width":"85px"}},[i("el-form-item",{attrs:{label:e.$t("invites.inviteLink")}},[i("el-link",{attrs:{href:e.inviteLink,underline:!1,target:"_blank"}},[e._v("\n "+e._s(e.inviteLink)+"\n ")])],1),e._v(" "),i("el-form-item",{attrs:{label:e.$t("invites.token")}},[e._v("\n "+e._s(e.newToken.token)+"\n ")]),e._v(" "),i("el-form-item",{attrs:{label:e.$t("invites.maxUse")}},[e._v("\n "+e._s(e.newToken.maxUse)+"\n ")]),e._v(" "),i("el-form-item",{attrs:{label:e.$t("invites.expiresAt")}},[e._v("\n "+e._s(e.newToken.expiresAt||"(not set)")+"\n ")])],1)],1):e._e()],1),e._v(" "),i("el-dialog",{attrs:{visible:e.inviteUserDialogVisible,"show-close":!1,title:e.$t("invites.sendRegistration"),"custom-class":"invite-via-email-dialog"},on:{"update:visible":function(t){e.inviteUserDialogVisible=t}}},[i("div",[i("p",{staticClass:"info"},[e._v(e._s(e.$t("invites.inviteViaEmailAlert")))]),e._v(" "),i("el-form",{ref:"inviteUserForm",attrs:{model:e.inviteUserForm,rules:e.rules,"label-width":e.getLabelWidth,"status-icon":""}},[i("el-form-item",{attrs:{label:e.$t("invites.email"),prop:"email"}},[i("el-input",{attrs:{name:"email",type:"email",autofocus:""},model:{value:e.inviteUserForm.email,callback:function(t){e.$set(e.inviteUserForm,"email",t)},expression:"inviteUserForm.email"}})],1),e._v(" "),i("el-form-item",{attrs:{label:e.$t("invites.name"),prop:"name"}},[i("el-input",{attrs:{name:"name"},model:{value:e.inviteUserForm.name,callback:function(t){e.$set(e.inviteUserForm,"name",t)},expression:"inviteUserForm.name"}})],1)],1)],1),e._v(" "),i("span",{attrs:{slot:"footer"},slot:"footer"},[i("el-button",{on:{click:e.closeDialogWindow}},[e._v(e._s(e.$t("invites.cancel")))]),e._v(" "),i("el-button",{attrs:{type:"primary"},on:{click:e.inviteUserViaEmail}},[e._v(e._s(e.$t("invites.create")))])],1)]),e._v(" "),i("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],staticClass:"invite-token-table",attrs:{data:e.tokens,"default-sort":{prop:"used",order:"ascending"}}},[e.isDesktop?i("el-table-column",{attrs:{label:e.$t("invites.id"),"min-width":"60",prop:"id",sortable:""}}):e._e(),e._v(" "),i("el-table-column",{attrs:{label:e.$t("invites.token"),"min-width":e.isDesktop?320:120,prop:"token"}}),e._v(" "),e.isDesktop?i("el-table-column",{attrs:{label:e.$t("invites.expiresAt"),align:"center","header-align":"center","min-width":"110",prop:"expires_at",sortable:""}}):e._e(),e._v(" "),i("el-table-column",{attrs:{label:e.$t("invites.maxUse"),align:"center","header-align":"center","min-width":"60",prop:"max_use",sortable:""}}),e._v(" "),e.isDesktop?i("el-table-column",{attrs:{label:e.$t("invites.uses"),align:"center","header-align":"center","min-width":"60",prop:"uses"}}):e._e(),e._v(" "),i("el-table-column",{attrs:{label:e.$t("invites.used"),"min-width":e.isDesktop?60:50,align:"center","header-align":"center",prop:"used",sortable:""},scopedSlots:e._u([{key:"default",fn:function(t){return[i("el-tag",{attrs:{type:t.row.used?"danger":"success","disable-transitions":""}},[e._v("\n "+e._s(t.row.used?e.$t("invites.used"):e.$t("invites.active"))+"\n ")])]}}])}),e._v(" "),i("el-table-column",{attrs:{label:e.$t("invites.actions"),"min-width":e.isDesktop?100:50,align:"center","header-align":"center"},scopedSlots:e._u([{key:"default",fn:function(t){return[i("el-button",{attrs:{type:"text",size:"small"},nativeOn:{click:function(i){return e.revokeInviteToken(t.row.token)}}},[e._v("\n "+e._s(e.$t("invites.revoke"))+"\n ")])]}}])})],1)],1)},[],!1,null,null,null);p.options.__file="index.vue";t.default=p.exports},ObxI:function(e,t,i){"use strict";var n=i("Tykb");i.n(n).a},Tykb:function(e,t,i){}}]); -//# sourceMappingURL=chunk-7c6b.1ebeb0e4.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-7c6b.1ebeb0e4.js.map b/priv/static/adminfe/static/js/chunk-7c6b.1ebeb0e4.js.map deleted file mode 100644 index 85d8dcb1c..000000000 --- a/priv/static/adminfe/static/js/chunk-7c6b.1ebeb0e4.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/invites/index.vue?3e9a","webpack:///./src/views/invites/index.vue?b523","webpack:///src/views/invites/index.vue","webpack:///./src/views/invites/index.vue","webpack:///./src/views/invites/index.vue?0fc1"],"names":["views_invitesvue_type_script_lang_js_","components","RebootButton","data","rules","email","validator","this","validateEmail","trigger","newTokenForm","maxUse","expiresAt","inviteUserForm","name","createTokenDialogVisible","inviteUserDialogVisible","computed","objectSpread_default","Object","vuex_esm","getLabelWidth","isDesktop","inviteLink","concat","utils","authHost","newToken","token","$store","state","app","device","loading","invites","tokens","inviteTokens","mounted","dispatch","methods","closeDialogWindow","$data","createToken","inviteUserViaEmail","_inviteUserViaEmail","asyncToGenerator_default","regenerator_default","a","mark","_callee2","_this","wrap","_context2","prev","next","$refs","validate","_ref","_callee","valid","_context","$message","type","message","$t","abrupt","stop","_x","apply","arguments","revokeInviteToken","rule","value","callback","Error","validEmail","test","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","_v","_s","on","click","$event","attrs","visible","show-close","title","custom-class","update:visible","ref","model","label-width","status-icon","label","min","size","$$v","$set","expression","placeholder","value-format","slot","href","underline","target","_e","prop","autofocus","directives","rawName","default-sort","order","min-width","sortable","align","header-align","scopedSlots","_u","key","fn","scope","row","used","disable-transitions","nativeOn","options","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n"],"mappings":"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","file":"static/js/chunk-7c6b.1ebeb0e4.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"invites-container\"},[_c('div',{staticClass:\"invites-header-container\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('invites.inviteTokens')))]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"actions-container\"},[_c('el-button',{staticClass:\"create-invite-token\",on:{\"click\":function($event){_vm.createTokenDialogVisible = true}}},[_c('span',[_c('i',{staticClass:\"icon el-icon-plus\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('invites.createInviteToken'))+\"\\n \")])]),_vm._v(\" \"),_c('el-button',{staticClass:\"invite-via-email\",on:{\"click\":function($event){_vm.inviteUserDialogVisible = true}}},[_c('span',[_c('i',{staticClass:\"icon el-icon-message\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('invites.inviteUserViaEmail'))+\"\\n \")])])],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"visible\":_vm.createTokenDialogVisible,\"show-close\":false,\"title\":_vm.$t('invites.createInviteToken'),\"custom-class\":\"create-new-token-dialog\"},on:{\"update:visible\":function($event){_vm.createTokenDialogVisible=$event}}},[_c('el-form',{ref:\"newTokenForm\",attrs:{\"model\":_vm.newTokenForm,\"label-width\":_vm.getLabelWidth,\"status-icon\":\"\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.maxUse')}},[_c('el-input-number',{attrs:{\"min\":0,\"size\":_vm.isDesktop ? 'medium' : 'small',\"name\":\"maxUse\"},model:{value:(_vm.newTokenForm.maxUse),callback:function ($$v) {_vm.$set(_vm.newTokenForm, \"maxUse\", $$v)},expression:\"newTokenForm.maxUse\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.expiresAt')}},[_c('el-date-picker',{staticClass:\"pick-date\",attrs:{\"placeholder\":_vm.$t('invites.pickDate'),\"type\":\"date\",\"name\":\"date\",\"value-format\":\"yyyy-MM-dd\"},model:{value:(_vm.newTokenForm.expiresAt),callback:function ($$v) {_vm.$set(_vm.newTokenForm, \"expiresAt\", $$v)},expression:\"newTokenForm.expiresAt\"}})],1)],1),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{staticClass:\"invites-close-dialog\",on:{\"click\":_vm.closeDialogWindow}},[_vm._v(_vm._s(_vm.$t('invites.cancel')))]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.createToken}},[_vm._v(_vm._s(_vm.$t('invites.create')))])],1),_vm._v(\" \"),('token' in _vm.newToken)?_c('el-card',[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',[_vm._v(_vm._s(_vm.$t('invites.tokenCreated')))])]),_vm._v(\" \"),_c('el-form',{staticClass:\"new-token-card\",attrs:{\"label-width\":\"85px\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.inviteLink')}},[_c('el-link',{attrs:{\"href\":_vm.inviteLink,\"underline\":false,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.inviteLink)+\"\\n \")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.token')}},[_vm._v(\"\\n \"+_vm._s(_vm.newToken.token)+\"\\n \")]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.maxUse')}},[_vm._v(\"\\n \"+_vm._s(_vm.newToken.maxUse)+\"\\n \")]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.expiresAt')}},[_vm._v(\"\\n \"+_vm._s(_vm.newToken.expiresAt || '(not set)')+\"\\n \")])],1)],1):_vm._e()],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"visible\":_vm.inviteUserDialogVisible,\"show-close\":false,\"title\":_vm.$t('invites.sendRegistration'),\"custom-class\":\"invite-via-email-dialog\"},on:{\"update:visible\":function($event){_vm.inviteUserDialogVisible=$event}}},[_c('div',[_c('p',{staticClass:\"info\"},[_vm._v(_vm._s(_vm.$t('invites.inviteViaEmailAlert')))]),_vm._v(\" \"),_c('el-form',{ref:\"inviteUserForm\",attrs:{\"model\":_vm.inviteUserForm,\"rules\":_vm.rules,\"label-width\":_vm.getLabelWidth,\"status-icon\":\"\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.email'),\"prop\":\"email\"}},[_c('el-input',{attrs:{\"name\":\"email\",\"type\":\"email\",\"autofocus\":\"\"},model:{value:(_vm.inviteUserForm.email),callback:function ($$v) {_vm.$set(_vm.inviteUserForm, \"email\", $$v)},expression:\"inviteUserForm.email\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.name'),\"prop\":\"name\"}},[_c('el-input',{attrs:{\"name\":\"name\"},model:{value:(_vm.inviteUserForm.name),callback:function ($$v) {_vm.$set(_vm.inviteUserForm, \"name\", $$v)},expression:\"inviteUserForm.name\"}})],1)],1)],1),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":_vm.closeDialogWindow}},[_vm._v(_vm._s(_vm.$t('invites.cancel')))]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.inviteUserViaEmail}},[_vm._v(_vm._s(_vm.$t('invites.create')))])],1)]),_vm._v(\" \"),_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"invite-token-table\",attrs:{\"data\":_vm.tokens,\"default-sort\":{prop: 'used', order: 'ascending'}}},[(_vm.isDesktop)?_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.id'),\"min-width\":\"60\",\"prop\":\"id\",\"sortable\":\"\"}}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.token'),\"min-width\":_vm.isDesktop ? 320 : 120,\"prop\":\"token\"}}),_vm._v(\" \"),(_vm.isDesktop)?_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.expiresAt'),\"align\":\"center\",\"header-align\":\"center\",\"min-width\":\"110\",\"prop\":\"expires_at\",\"sortable\":\"\"}}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.maxUse'),\"align\":\"center\",\"header-align\":\"center\",\"min-width\":\"60\",\"prop\":\"max_use\",\"sortable\":\"\"}}),_vm._v(\" \"),(_vm.isDesktop)?_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.uses'),\"align\":\"center\",\"header-align\":\"center\",\"min-width\":\"60\",\"prop\":\"uses\"}}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.used'),\"min-width\":_vm.isDesktop ? 60 : 50,\"align\":\"center\",\"header-align\":\"center\",\"prop\":\"used\",\"sortable\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-tag',{attrs:{\"type\":scope.row.used ? 'danger' : 'success',\"disable-transitions\":\"\"}},[_vm._v(\"\\n \"+_vm._s(scope.row.used ? _vm.$t('invites.used') : _vm.$t('invites.active'))+\"\\n \")])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.actions'),\"min-width\":_vm.isDesktop ? 100 : 50,\"align\":\"center\",\"header-align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},nativeOn:{\"click\":function($event){return _vm.revokeInviteToken(scope.row.token)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('invites.revoke'))+\"\\n \")])]}}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=92978bf4&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-7c6b.56a14571.js b/priv/static/adminfe/static/js/chunk-7c6b.56a14571.js new file mode 100644 index 000000000..df9b7d6ac --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-7c6b.56a14571.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-7c6b"],{HMof:function(e,t,i){"use strict";i.r(t);var n=i("o0o1"),s=i.n(n),a=i("yXPU"),r=i.n(a),o=i("lSNA"),l=i.n(o),c=i("rIUS"),v=i("L2JU"),u=i("9i3r");function m(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),i.push.apply(i,n)}return i}function d(e){for(var t=1;t\n
    \n
    \n

    {{ $t('invites.inviteTokens') }}

    \n \n
    \n
    \n \n \n \n {{ $t('invites.createInviteToken') }}\n \n \n \n \n \n {{ $t('invites.inviteUserViaEmail') }}\n \n \n
    \n \n \n \n \n \n \n \n \n \n \n {{ $t('invites.cancel') }}\n {{ $t('invites.create') }}\n \n \n
    \n {{ $t('invites.tokenCreated') }}\n
    \n \n \n \n {{ inviteLink }}\n \n \n \n {{ newToken.token }}\n \n \n {{ newToken.maxUse }}\n \n \n {{ newToken.expiresAt || '(not set)' }}\n \n \n
    \n \n \n
    \n

    {{ $t('invites.inviteViaEmailAlert') }}

    \n \n \n \n \n \n \n \n \n
    \n \n {{ $t('invites.cancel') }}\n {{ $t('invites.create') }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=92978bf4&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-850d.3e6102c2.js b/priv/static/adminfe/static/js/chunk-850d.3e6102c2.js new file mode 100644 index 000000000..a2c2df2e7 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-850d.3e6102c2.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-850d"],{"07OA":function(t,e,s){"use strict";var a=s("51EY");s.n(a).a},"4rb0":function(t,e,s){},"51EY":function(t,e,s){},"5tnn":function(t,e,s){"use strict";var a=s("V/GZ");s.n(a).a},"G/Mk":function(t,e,s){"use strict";var a=s("xdcp");s.n(a).a},RnhZ:function(t,e,s){var a={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-in":"7C5Q","./en-in.js":"7C5Q","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./en-sg":"t+mt","./en-sg.js":"t+mt","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fil":"1ppg","./fil.js":"1ppg","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-deva":"qvJo","./gom-deva.js":"qvJo","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./oc-lnc":"Fnuy","./oc-lnc.js":"Fnuy","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tk":"Wv91","./tk.js":"Wv91","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-mo":"OmwH","./zh-mo.js":"OmwH","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function r(t){var e=n(t);return s(e)}function n(t){if(!s.o(a,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return a[t]}r.keys=function(){return Object.keys(a)},r.resolve=n,t.exports=r,r.id="RnhZ"},"V/GZ":function(t,e,s){},cEOe:function(t,e,s){"use strict";s.r(e);var a=s("ZhIB"),r=s.n(a),n=s("wd/R"),o=s.n(n),i={name:"NoteCard",props:{report:{type:Object,required:!0},note:{type:Object,required:!0}},methods:{handleNoteDeletion:function(t,e){var s=this;this.$confirm("Are you sure you want to delete this note?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){s.$store.dispatch("DeleteReportNote",{noteID:t,reportID:e}),s.$message({type:"success",message:"Delete completed"})}).catch(function(){s.$message({type:"info",message:"Delete canceled"})})},parseTimestamp:function(t){return o()(t).format("YYYY-MM-DD HH:mm")},propertyExists:function(t,e){return t[e]}}},c=(s("G/Mk"),s("KHd+")),l=Object(c.a)(i,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-card",{staticClass:"note-card"},[s("div",{attrs:{slot:"header"},slot:"header"},[s("div",{staticClass:"note-header"},[t.propertyExists(t.note.user,"id")?s("router-link",{staticClass:"router-link",attrs:{to:{name:"UsersShow",params:{id:t.note.user.id}}}},[s("div",{staticClass:"note-actor"},[t.propertyExists(t.note.user,"avatar")?s("img",{staticClass:"note-avatar-img",attrs:{src:t.note.user.avatar,alt:"avatar"}}):t._e(),t._v(" "),t.propertyExists(t.note.user,"nickname")?s("span",{staticClass:"note-actor-name"},[t._v(t._s(t.note.user.nickname))]):s("span",{staticClass:"note-actor-name deactivated"},[t._v("("+t._s(t.$t("users.invalidNickname"))+")")])])]):t._e(),t._v(" "),s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.handleNoteDeletion(t.note.id,t.report.id)}}},[t._v("\n "+t._s(t.$t("reports.deleteNote"))+"\n ")])],1)]),t._v(" "),s("div",{staticClass:"note-body"},[s("span",{staticClass:"note-content",domProps:{innerHTML:t._s(t.note.content)}}),t._v("\n "+t._s(t.parseTimestamp(t.note.created_at))+"\n ")])])},[],!1,null,null,null);l.options.__file="NoteCard.vue";var u=l.exports,d=s("ot3S"),p={name:"ModerateUserDropdown",props:{account:{type:Object,required:!0},reportId:{type:String,required:!0}},computed:{tagPolicyEnabled:function(){return this.$store.state.users.mrfPolicies.includes("Pleroma.Web.ActivityPub.MRF.TagPolicy")},tags:function(){return this.account.tags||[]}},methods:{enableTagPolicy:function(){var t=this;this.$confirm(this.$t("users.confirmEnablingTagPolicy"),{confirmButtonText:"Yes",cancelButtonText:"Cancel",type:"warning"}).then(function(){t.$message({type:"success",message:t.$t("users.enableTagPolicySuccessMessage")}),t.$store.dispatch("EnableTagPolicy")}).catch(function(){t.$message({type:"info",message:"Canceled"})})},handleDeactivation:function(t){t.deactivated?this.$store.dispatch("ActivateUserFromReports",{user:t,reportId:this.reportId}):this.$store.dispatch("DeactivateUserFromReports",{user:t,reportId:this.reportId})},handleDeletion:function(t){var e=this;this.$confirm(this.$t("users.deleteUserConfirmation"),{confirmButtonText:"Delete",cancelButtonText:"Cancel",type:"warning"}).then(function(){e.$store.dispatch("DeleteUserFromReports",{user:t,reportId:e.reportId})}).catch(function(){e.$message({type:"info",message:"Delete canceled"})})},showDeactivatedButton:function(t){return this.$store.state.user.id!==t},toggleTag:function(t,e){t.tags.includes(e)?this.$store.dispatch("RemoveTagFromReports",{user:t,tag:e,reportId:this.reportId}):this.$store.dispatch("AddTagFromReports",{user:t,tag:e,reportId:this.reportId})}}},v=Object(c.a)(p,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-dropdown",{attrs:{"hide-on-click":!1,trigger:"click"}},[s("el-button",{attrs:{disabled:!t.account.id,plain:"",size:"small",icon:"el-icon-files"}},[t._v(t._s(t.$t("reports.moderateUser"))+"\n "),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[t.showDeactivatedButton(t.account)?s("el-dropdown-item",{nativeOn:{click:function(e){return t.handleDeactivation(t.account)}}},[t._v("\n "+t._s(t.account.deactivated?t.$t("users.activateAccount"):t.$t("users.deactivateAccount"))+"\n ")]):t._e(),t._v(" "),t.showDeactivatedButton(t.account.id)?s("el-dropdown-item",{nativeOn:{click:function(e){return t.handleDeletion(t.account)}}},[t._v("\n "+t._s(t.$t("users.deleteAccount"))+"\n ")]):t._e(),t._v(" "),t.tagPolicyEnabled?s("el-dropdown-item",{class:{"active-tag":t.tags.includes("mrf_tag:media-force-nsfw")},attrs:{divided:!0},nativeOn:{click:function(e){return t.toggleTag(t.account,"mrf_tag:media-force-nsfw")}}},[t._v("\n "+t._s(t.$t("users.forceNsfw"))+"\n "),t.tags.includes("mrf_tag:media-force-nsfw")?s("i",{staticClass:"el-icon-check"}):t._e()]):t._e(),t._v(" "),t.tagPolicyEnabled?s("el-dropdown-item",{class:{"active-tag":t.tags.includes("mrf_tag:media-strip")},nativeOn:{click:function(e){return t.toggleTag(t.account,"mrf_tag:media-strip")}}},[t._v("\n "+t._s(t.$t("users.stripMedia"))+"\n "),t.tags.includes("mrf_tag:media-strip")?s("i",{staticClass:"el-icon-check"}):t._e()]):t._e(),t._v(" "),t.tagPolicyEnabled?s("el-dropdown-item",{class:{"active-tag":t.tags.includes("mrf_tag:force-unlisted")},nativeOn:{click:function(e){return t.toggleTag(t.account,"mrf_tag:force-unlisted")}}},[t._v("\n "+t._s(t.$t("users.forceUnlisted"))+"\n "),t.tags.includes("mrf_tag:force-unlisted")?s("i",{staticClass:"el-icon-check"}):t._e()]):t._e(),t._v(" "),t.tagPolicyEnabled?s("el-dropdown-item",{class:{"active-tag":t.tags.includes("mrf_tag:sandbox")},nativeOn:{click:function(e){return t.toggleTag(t.account,"mrf_tag:sandbox")}}},[t._v("\n "+t._s(t.$t("users.sandbox"))+"\n "),t.tags.includes("mrf_tag:sandbox")?s("i",{staticClass:"el-icon-check"}):t._e()]):t._e(),t._v(" "),t.tagPolicyEnabled&&t.account.local?s("el-dropdown-item",{class:{"active-tag":t.tags.includes("mrf_tag:disable-remote-subscription")},nativeOn:{click:function(e){return t.toggleTag(t.account,"mrf_tag:disable-remote-subscription")}}},[t._v("\n "+t._s(t.$t("users.disableRemoteSubscription"))+"\n "),t.tags.includes("mrf_tag:disable-remote-subscription")?s("i",{staticClass:"el-icon-check"}):t._e()]):t._e(),t._v(" "),t.tagPolicyEnabled&&t.account.local?s("el-dropdown-item",{class:{"active-tag":t.tags.includes("mrf_tag:disable-any-subscription")},nativeOn:{click:function(e){return t.toggleTag(t.account,"mrf_tag:disable-any-subscription")}}},[t._v("\n "+t._s(t.$t("users.disableAnySubscription"))+"\n "),t.tags.includes("mrf_tag:disable-any-subscription")?s("i",{staticClass:"el-icon-check"}):t._e()]):t._e(),t._v(" "),t.tagPolicyEnabled?t._e():s("el-dropdown-item",{staticClass:"no-hover",attrs:{divided:""},nativeOn:{click:function(e){return t.enableTagPolicy(e)}}},[t._v("\n "+t._s(t.$t("users.enableTagPolicy"))+"\n ")])],1)],1)},[],!1,null,null,null);v.options.__file="ModerateUserDropdown.vue";var m=v.exports,g={name:"Report",components:{Status:d.a,ModerateUserDropdown:m,NoteCard:u},props:{reports:{type:Array,required:!0}},data:function(){return{notes:{}}},computed:{loading:function(){return this.$store.state.reports.loading},pageSize:function(){return this.$store.state.reports.pageSize},totalReportsCount:function(){return this.$store.state.reports.totalReportsCount},currentPage:function(){return this.$store.state.reports.currentPage}},methods:{changeReportState:function(t,e){this.$store.dispatch("ChangeReportState",[{state:t,id:e}])},capitalizeFirstLetter:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},getStateType:function(t){switch(t){case"closed":return"info";case"resolved":return"success";default:return"primary"}},getStatusesTitle:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return"Reported statuses: ".concat(t.length," item(s)")},getNotesTitle:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return"Notes: ".concat(t.length," item(s)")},handleNewNote:function(t){this.$store.dispatch("CreateReportNote",{content:this.notes[t],reportID:t}),this.notes[t]=""},handlePageChange:function(t){this.$store.dispatch("FetchReports",t)},parseTimestamp:function(t){return o()(t).format("L HH:mm")},propertyExists:function(t,e,s){return s?t[e]&&t[s]:t[e]},showStatuses:function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).length>0}}},h=(s("07OA"),Object(c.a)(g,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",[s("el-timeline",{staticClass:"reports-timeline"},t._l(t.reports,function(e){return s("el-timeline-item",{key:e.id,staticClass:"timeline-item-container",attrs:{timestamp:t.parseTimestamp(e.created_at),placement:"top"}},[s("el-card",{staticClass:"report"},[s("div",{staticClass:"report-header-container"},[s("div",{staticClass:"title-container"},[t.propertyExists(e.account,"nickname")?s("h3",{staticClass:"report-title"},[t._v(t._s(t.$t("reports.reportOn"))+" "+t._s(e.account.nickname))]):s("h3",{staticClass:"report-title"},[t._v(t._s(t.$t("reports.report")))]),t._v(" "),t.propertyExists(e.account,"id")?s("h5",{staticClass:"id"},[t._v(t._s(t.$t("reports.id"))+": "+t._s(e.id))]):t._e()]),t._v(" "),s("div",[s("el-tag",{staticClass:"report-tag",attrs:{type:t.getStateType(e.state),size:"large"}},[t._v(t._s(t.capitalizeFirstLetter(e.state)))]),t._v(" "),s("el-dropdown",{attrs:{trigger:"click"}},[s("el-button",{staticClass:"report-actions-button",attrs:{plain:"",size:"small",icon:"el-icon-edit"}},[t._v(t._s(t.$t("reports.changeState"))),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},["resolved"!==e.state?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeReportState("resolved",e.id)}}},[t._v(t._s(t.$t("reports.resolve")))]):t._e(),t._v(" "),"open"!==e.state?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeReportState("open",e.id)}}},[t._v(t._s(t.$t("reports.reopen")))]):t._e(),t._v(" "),"closed"!==e.state?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeReportState("closed",e.id)}}},[t._v(t._s(t.$t("reports.close")))]):t._e()],1)],1),t._v(" "),t.propertyExists(e.account,"nickname")?s("moderate-user-dropdown",{attrs:{account:e.account,"report-id":e.id}}):t._e()],1)]),t._v(" "),s("el-divider",{staticClass:"divider"}),t._v(" "),s("div",{staticClass:"report-account-container"},[s("span",{staticClass:"report-row-key"},[t._v(t._s(t.$t("reports.account"))+":")]),t._v(" "),s("div",{staticClass:"report-account"},[t.propertyExists(e.account,"id")?s("router-link",{staticClass:"router-link",attrs:{to:{name:"UsersShow",params:{id:e.account.id}}}},[t.propertyExists(e.account,"avatar")?s("img",{staticClass:"avatar-img",attrs:{src:e.account.avatar,alt:"avatar"}}):t._e(),t._v(" "),t.propertyExists(e.account,"nickname")?s("span",{staticClass:"report-account-name"},[t._v(t._s(e.account.nickname))]):s("span",{staticClass:"report-account-name deactivated"},[t._v("("+t._s(t.$t("users.invalidNickname"))+")")])]):s("span",{staticClass:"report-account-name deactivated"},[t._v("("+t._s(t.$t("users.invalidNickname"))+")")]),t._v(" "),t.propertyExists(e.account,"url")?s("a",{staticClass:"account",attrs:{href:e.account.url,target:"_blank"}},[t._v("\n "+t._s(t.$t("userProfile.openAccountInInstance"))+"\n "),s("i",{staticClass:"el-icon-top-right"})]):t._e()],1)]),t._v(" "),e.content&&e.content.length>0?s("div",[s("el-divider",{staticClass:"divider"}),t._v(" "),s("span",{staticClass:"report-row-key"},[t._v(t._s(t.$t("reports.content"))+":\n "),s("span",[t._v(t._s(e.content))])])],1):t._e(),t._v(" "),s("el-divider",{staticClass:"divider"}),t._v(" "),s("div",{staticClass:"report-account-container",style:t.showStatuses(e.statuses)?"":"margin-bottom:15px"},[s("span",{staticClass:"report-row-key"},[t._v(t._s(t.$t("reports.actor"))+":")]),t._v(" "),s("div",{staticClass:"report-account"},[t.propertyExists(e.actor,"id")?s("router-link",{staticClass:"router-link",attrs:{to:{name:"UsersShow",params:{id:e.actor.id}}}},[t.propertyExists(e.actor,"avatar")?s("img",{staticClass:"avatar-img",attrs:{src:e.actor.avatar,alt:"avatar"}}):t._e(),t._v(" "),t.propertyExists(e.actor,"nickname")?s("span",{staticClass:"report-account-name"},[t._v(t._s(e.actor.nickname))]):s("span",{staticClass:"report-account-name deactivated"},[t._v("("+t._s(t.$t("users.invalidNickname"))+")")])]):s("span",{staticClass:"report-account-name deactivated"},[t._v("("+t._s(t.$t("users.invalidNickname"))+")")]),t._v(" "),t.propertyExists(e.actor,"url")?s("a",{staticClass:"account",attrs:{href:e.actor.url,target:"_blank"}},[t._v("\n "+t._s(t.$t("userProfile.openAccountInInstance"))+"\n "),s("i",{staticClass:"el-icon-top-right"})]):t._e()],1)]),t._v(" "),t.showStatuses(e.statuses)?s("div",{staticClass:"reported-statuses"},[s("el-collapse",[s("el-collapse-item",{attrs:{title:t.getStatusesTitle(e.statuses)}},t._l(e.statuses,function(a){return s("div",{key:a.id},[s("status",{attrs:{status:a,account:a.account.nickname?a.account:e.account,"show-checkbox":!1,page:t.currentPage}})],1)}),0)],1)],1):t._e(),t._v(" "),s("div",{staticClass:"report-notes"},[s("el-collapse",[s("el-collapse-item",{attrs:{title:t.getNotesTitle(e.notes)}},t._l(e.notes,function(t,a){return s("note-card",{key:a,attrs:{note:t,report:e}})}),1)],1),t._v(" "),s("div",{staticClass:"report-note-form"},[s("el-input",{attrs:{placeholder:t.$t("reports.leaveNote"),type:"textarea",rows:"2"},model:{value:t.notes[e.id],callback:function(s){t.$set(t.notes,e.id,s)},expression:"notes[report.id]"}}),t._v(" "),s("div",{staticClass:"report-post-note"},[s("el-button",{on:{click:function(s){return t.handleNewNote(e.id)}}},[t._v(t._s(t.$t("reports.postNote")))])],1)],1)],1)],1)],1)}),1),t._v(" "),t.loading?t._e():s("div",{staticClass:"reports-pagination"},[s("el-pagination",{attrs:{total:t.totalReportsCount,"current-page":t.currentPage,"page-size":t.pageSize,background:"",layout:"prev, pager, next"},on:{"current-change":t.handlePageChange}})],1)],1)},[],!1,null,null,null));h.options.__file="Report.vue";var _=h.exports,f=s("mSNy"),j={data:function(){return{filter:"open",options:[{value:"open",label:f.a.t("reportsFilter.open")},{value:"closed",label:f.a.t("reportsFilter.closed")},{value:"resolved",label:f.a.t("reportsFilter.resolved")}]}},created:function(){this.$store.dispatch("SetReportsFilter",this.$data.filter)},methods:{toggleFilters:function(){this.$store.dispatch("SetReportsFilter",this.$data.filter),this.$store.dispatch("ClearFetchedReports"),this.$store.dispatch("FetchReports",1)}}},b=(s("5tnn"),Object(c.a)(j,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-select",{staticClass:"select-field",attrs:{placeholder:t.$t("reportsFilter.inputPlaceholder"),clearable:"","value-key":"value"},on:{change:t.toggleFilters},model:{value:t.filter,callback:function(e){t.filter=e},expression:"filter"}},t._l(t.options,function(e){return s("el-option",{key:e.value,attrs:{label:e.label,value:e.value}},[t._v(t._s(e.label))])}),1)},[],!1,null,"5ab7c15a",null));b.options.__file="ReportsFilter.vue";var k=b.exports,y={components:{RebootButton:s("rIUS").a,Report:_,ReportsFilter:k},computed:{loading:function(){return this.$store.state.reports.loading},normalizedReportsCount:function(){return r()(this.$store.state.reports.totalReportsCount).format("0a")},reports:function(){return this.$store.state.reports.fetchedReports}},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.$store.dispatch("FetchTagPolicySetting"),this.$store.dispatch("FetchReports",1)}},C=(s("wnWh"),Object(c.a)(y,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"reports-container"},[s("div",{staticClass:"reports-header-container"},[s("h1",[t._v("\n "+t._s(t.$t("reports.reports"))+"\n "),s("span",{staticClass:"report-count"},[t._v("("+t._s(t.normalizedReportsCount)+")")])]),t._v(" "),s("reboot-button")],1),t._v(" "),s("div",{staticClass:"reports-filter-container"},[s("reports-filter")],1),t._v(" "),s("div",{staticClass:"block"},[s("report",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],attrs:{reports:t.reports}}),t._v(" "),0===t.reports.length?s("div",{staticClass:"no-reports-message"},[s("p",[t._v("There are no reports to display")])]):t._e()],1)])},[],!1,null,"6ac87f34",null));C.options.__file="index.vue";e.default=C.exports},wnWh:function(t,e,s){"use strict";var a=s("4rb0");s.n(a).a},xdcp:function(t,e,s){}}]); +//# sourceMappingURL=chunk-850d.3e6102c2.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-850d.3e6102c2.js.map b/priv/static/adminfe/static/js/chunk-850d.3e6102c2.js.map new file mode 100644 index 000000000..7f7718547 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-850d.3e6102c2.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/reports/components/Report.vue?ad5f","webpack:///./src/views/reports/components/ReportsFilter.vue?5d06","webpack:///./src/views/reports/components/NoteCard.vue?b93a","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/views/reports/index.vue?8d7d","webpack:///./src/views/reports/components/NoteCard.vue?6205","webpack:///src/views/reports/components/NoteCard.vue","webpack:///./src/views/reports/components/NoteCard.vue","webpack:///./src/views/reports/components/NoteCard.vue?6977","webpack:///./src/views/reports/components/ModerateUserDropdown.vue?6745","webpack:///src/views/reports/components/ModerateUserDropdown.vue","webpack:///./src/views/reports/components/ModerateUserDropdown.vue","webpack:///./src/views/reports/components/ModerateUserDropdown.vue?6775","webpack:///./src/views/reports/components/Report.vue?a764","webpack:///src/views/reports/components/Report.vue","webpack:///./src/views/reports/components/Report.vue","webpack:///./src/views/reports/components/Report.vue?022c","webpack:///./src/views/reports/components/ReportsFilter.vue?e3b7","webpack:///src/views/reports/components/ReportsFilter.vue","webpack:///./src/views/reports/components/ReportsFilter.vue","webpack:///./src/views/reports/components/ReportsFilter.vue?49ad","webpack:///./src/views/reports/index.vue?3bcc","webpack:///src/views/reports/index.vue","webpack:///./src/views/reports/index.vue","webpack:///./src/views/reports/index.vue?6a35"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Report_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ReportsFilter_vue_vue_type_style_index_0_id_5ab7c15a_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_NoteCard_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-in","./en-in.js","./en-nz","./en-nz.js","./en-sg","./en-sg.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fil","./fil.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-deva","./gom-deva.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./oc-lnc","./oc-lnc.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tk","./tk.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-mo","./zh-mo.js","./zh-tw","./zh-tw.js","webpackContext","req","id","webpackContextResolve","o","e","Error","code","keys","Object","resolve","module","exports","components_NoteCardvue_type_script_lang_js_","name","props","report","type","required","note","methods","handleNoteDeletion","noteID","reportID","_this","this","$confirm","confirmButtonText","cancelButtonText","then","$store","dispatch","$message","message","catch","parseTimestamp","timestamp","moment_default","format","propertyExists","account","property","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","slot","user","to","params","src","avatar","alt","_e","_v","_s","nickname","$t","size","nativeOn","click","$event","domProps","innerHTML","content","created_at","options","__file","NoteCard","components_ModerateUserDropdownvue_type_script_lang_js_","reportId","String","computed","tagPolicyEnabled","state","users","mrfPolicies","includes","tags","enableTagPolicy","handleDeactivation","deactivated","handleDeletion","_this2","showDeactivatedButton","toggleTag","tag","ModerateUserDropdown_component","hide-on-click","trigger","disabled","plain","icon","class","active-tag","divided","local","ModerateUserDropdown","components_Reportvue_type_script_lang_js_","components","Status","reports","Array","data","notes","loading","pageSize","totalReportsCount","currentPage","changeReportState","capitalizeFirstLetter","str","charAt","toUpperCase","slice","getStateType","getStatusesTitle","statuses","arguments","length","undefined","concat","getNotesTitle","handleNewNote","handlePageChange","page","_secondProperty","showStatuses","Report_component","_l","key","placement","report-id","href","url","target","style","actor","title","status","show-checkbox","index","placeholder","rows","model","value","callback","$$v","$set","expression","on","total","current-page","page-size","background","layout","current-change","Report","components_ReportsFiltervue_type_script_lang_js_","filter","label","lang","t","created","$data","toggleFilters","ReportsFilter_component","clearable","value-key","change","item","ReportsFilter","views_reportsvue_type_script_lang_js_","RebootButton","normalizedReportsCount","numeral_default","fetchedReports","mounted","reports_component","directives","rawName","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_6ac87f34_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__"],"mappings":"wGAAA,IAAAA,EAAAC,EAAA,QAAAA,EAAAC,EAAAF,GAA0e,yFCA1e,IAAAG,EAAAF,EAAA,QAAAA,EAAAC,EAAAC,GAAygB,uCCAzgB,IAAAC,EAAAH,EAAA,QAAAA,EAAAC,EAAAE,GAA4e,wBCA5e,IAAAC,GACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,WAAA,OACAC,cAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,U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","file":"static/js/chunk-850d.3e6102c2.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Report.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Report.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=style&index=0&id=5ab7c15a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=style&index=0&id=5ab7c15a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoteCard.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoteCard.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-in\": \"7C5Q\",\n\t\"./en-in.js\": \"7C5Q\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./en-sg\": \"t+mt\",\n\t\"./en-sg.js\": \"t+mt\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fil\": \"1ppg\",\n\t\"./fil.js\": \"1ppg\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-deva\": \"qvJo\",\n\t\"./gom-deva.js\": \"qvJo\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./oc-lnc\": \"Fnuy\",\n\t\"./oc-lnc.js\": \"Fnuy\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tk\": \"Wv91\",\n\t\"./tk.js\": \"Wv91\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-mo\": \"OmwH\",\n\t\"./zh-mo.js\": \"OmwH\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"reports-container\"},[_c('div',{staticClass:\"reports-header-container\"},[_c('h1',[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.reports'))+\"\\n \"),_c('span',{staticClass:\"report-count\"},[_vm._v(\"(\"+_vm._s(_vm.normalizedReportsCount)+\")\")])]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"reports-filter-container\"},[_c('reports-filter')],1),_vm._v(\" \"),_c('div',{staticClass:\"block\"},[_c('report',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"reports\":_vm.reports}}),_vm._v(\" \"),(_vm.reports.length === 0)?_c('div',{staticClass:\"no-reports-message\"},[_c('p',[_vm._v(\"There are no reports to display\")])]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoteCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NoteCard.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./NoteCard.vue?vue&type=template&id=030edbfd&\"\nimport script from \"./NoteCard.vue?vue&type=script&lang=js&\"\nexport * from \"./NoteCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NoteCard.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"NoteCard.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-card',{staticClass:\"note-card\"},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',{staticClass:\"note-header\"},[(_vm.propertyExists(_vm.note.user, 'id'))?_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":{ name: 'UsersShow', params: { id: _vm.note.user.id }}}},[_c('div',{staticClass:\"note-actor\"},[(_vm.propertyExists(_vm.note.user, 'avatar'))?_c('img',{staticClass:\"note-avatar-img\",attrs:{\"src\":_vm.note.user.avatar,\"alt\":\"avatar\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.note.user, 'nickname'))?_c('span',{staticClass:\"note-actor-name\"},[_vm._v(_vm._s(_vm.note.user.nickname))]):_c('span',{staticClass:\"note-actor-name deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")])])]):_vm._e(),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.handleNoteDeletion(_vm.note.id, _vm.report.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.deleteNote'))+\"\\n \")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"note-body\"},[_c('span',{staticClass:\"note-content\",domProps:{\"innerHTML\":_vm._s(_vm.note.content)}}),_vm._v(\"\\n \"+_vm._s(_vm.parseTimestamp(_vm.note.created_at))+\"\\n \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerateUserDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModerateUserDropdown.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./ModerateUserDropdown.vue?vue&type=template&id=c2b03060&\"\nimport script from \"./ModerateUserDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./ModerateUserDropdown.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ModerateUserDropdown.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"hide-on-click\":false,\"trigger\":\"click\"}},[_c('el-button',{attrs:{\"disabled\":!_vm.account.id,\"plain\":\"\",\"size\":\"small\",\"icon\":\"el-icon-files\"}},[_vm._v(_vm._s(_vm.$t('reports.moderateUser'))+\"\\n \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(_vm.showDeactivatedButton(_vm.account))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeactivation(_vm.account)}}},[_vm._v(\"\\n \"+_vm._s(_vm.account.deactivated ? _vm.$t('users.activateAccount') : _vm.$t('users.deactivateAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.account.id))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeletion(_vm.account)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('mrf_tag:media-force-nsfw') },attrs:{\"divided\":true},nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'mrf_tag:media-force-nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceNsfw'))+\"\\n \"),(_vm.tags.includes('mrf_tag:media-force-nsfw'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('mrf_tag:media-strip') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'mrf_tag:media-strip')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.stripMedia'))+\"\\n \"),(_vm.tags.includes('mrf_tag:media-strip'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('mrf_tag:force-unlisted') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'mrf_tag:force-unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceUnlisted'))+\"\\n \"),(_vm.tags.includes('mrf_tag:force-unlisted'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.tagPolicyEnabled)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('mrf_tag:sandbox') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'mrf_tag:sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.sandbox'))+\"\\n \"),(_vm.tags.includes('mrf_tag:sandbox'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.tagPolicyEnabled && _vm.account.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('mrf_tag:disable-remote-subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'mrf_tag:disable-remote-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableRemoteSubscription'))+\"\\n \"),(_vm.tags.includes('mrf_tag:disable-remote-subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.tagPolicyEnabled && _vm.account.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.tags.includes('mrf_tag:disable-any-subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.account, 'mrf_tag:disable-any-subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableAnySubscription'))+\"\\n \"),(_vm.tags.includes('mrf_tag:disable-any-subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(!_vm.tagPolicyEnabled)?_c('el-dropdown-item',{staticClass:\"no-hover\",attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.enableTagPolicy($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.enableTagPolicy'))+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Report.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Report.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Report.vue?vue&type=template&id=097b42a3&\"\nimport script from \"./Report.vue?vue&type=script&lang=js&\"\nexport * from \"./Report.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Report.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Report.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-timeline',{staticClass:\"reports-timeline\"},_vm._l((_vm.reports),function(report){return _c('el-timeline-item',{key:report.id,staticClass:\"timeline-item-container\",attrs:{\"timestamp\":_vm.parseTimestamp(report.created_at),\"placement\":\"top\"}},[_c('el-card',{staticClass:\"report\"},[_c('div',{staticClass:\"report-header-container\"},[_c('div',{staticClass:\"title-container\"},[(_vm.propertyExists(report.account, 'nickname'))?_c('h3',{staticClass:\"report-title\"},[_vm._v(_vm._s(_vm.$t('reports.reportOn'))+\" \"+_vm._s(report.account.nickname))]):_c('h3',{staticClass:\"report-title\"},[_vm._v(_vm._s(_vm.$t('reports.report')))]),_vm._v(\" \"),(_vm.propertyExists(report.account, 'id'))?_c('h5',{staticClass:\"id\"},[_vm._v(_vm._s(_vm.$t('reports.id'))+\": \"+_vm._s(report.id))]):_vm._e()]),_vm._v(\" \"),_c('div',[_c('el-tag',{staticClass:\"report-tag\",attrs:{\"type\":_vm.getStateType(report.state),\"size\":\"large\"}},[_vm._v(_vm._s(_vm.capitalizeFirstLetter(report.state)))]),_vm._v(\" \"),_c('el-dropdown',{attrs:{\"trigger\":\"click\"}},[_c('el-button',{staticClass:\"report-actions-button\",attrs:{\"plain\":\"\",\"size\":\"small\",\"icon\":\"el-icon-edit\"}},[_vm._v(_vm._s(_vm.$t('reports.changeState'))),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(report.state !== 'resolved')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeReportState('resolved', report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.resolve')))]):_vm._e(),_vm._v(\" \"),(report.state !== 'open')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeReportState('open', report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.reopen')))]):_vm._e(),_vm._v(\" \"),(report.state !== 'closed')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeReportState('closed', report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.close')))]):_vm._e()],1)],1),_vm._v(\" \"),(_vm.propertyExists(report.account, 'nickname'))?_c('moderate-user-dropdown',{attrs:{\"account\":report.account,\"report-id\":report.id}}):_vm._e()],1)]),_vm._v(\" \"),_c('el-divider',{staticClass:\"divider\"}),_vm._v(\" \"),_c('div',{staticClass:\"report-account-container\"},[_c('span',{staticClass:\"report-row-key\"},[_vm._v(_vm._s(_vm.$t('reports.account'))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"report-account\"},[(_vm.propertyExists(report.account, 'id'))?_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":{ name: 'UsersShow', params: { id: report.account.id }}}},[(_vm.propertyExists(report.account, 'avatar'))?_c('img',{staticClass:\"avatar-img\",attrs:{\"src\":report.account.avatar,\"alt\":\"avatar\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(report.account, 'nickname'))?_c('span',{staticClass:\"report-account-name\"},[_vm._v(_vm._s(report.account.nickname))]):_c('span',{staticClass:\"report-account-name deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")])]):_c('span',{staticClass:\"report-account-name deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")]),_vm._v(\" \"),(_vm.propertyExists(report.account, 'url'))?_c('a',{staticClass:\"account\",attrs:{\"href\":report.account.url,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.openAccountInInstance'))+\"\\n \"),_c('i',{staticClass:\"el-icon-top-right\"})]):_vm._e()],1)]),_vm._v(\" \"),(report.content && report.content.length > 0)?_c('div',[_c('el-divider',{staticClass:\"divider\"}),_vm._v(\" \"),_c('span',{staticClass:\"report-row-key\"},[_vm._v(_vm._s(_vm.$t('reports.content'))+\":\\n \"),_c('span',[_vm._v(_vm._s(report.content))])])],1):_vm._e(),_vm._v(\" \"),_c('el-divider',{staticClass:\"divider\"}),_vm._v(\" \"),_c('div',{staticClass:\"report-account-container\",style:(_vm.showStatuses(report.statuses) ? '' : 'margin-bottom:15px')},[_c('span',{staticClass:\"report-row-key\"},[_vm._v(_vm._s(_vm.$t('reports.actor'))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"report-account\"},[(_vm.propertyExists(report.actor, 'id'))?_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":{ name: 'UsersShow', params: { id: report.actor.id }}}},[(_vm.propertyExists(report.actor, 'avatar'))?_c('img',{staticClass:\"avatar-img\",attrs:{\"src\":report.actor.avatar,\"alt\":\"avatar\"}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(report.actor, 'nickname'))?_c('span',{staticClass:\"report-account-name\"},[_vm._v(_vm._s(report.actor.nickname))]):_c('span',{staticClass:\"report-account-name deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")])]):_c('span',{staticClass:\"report-account-name deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")]),_vm._v(\" \"),(_vm.propertyExists(report.actor, 'url'))?_c('a',{staticClass:\"account\",attrs:{\"href\":report.actor.url,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.openAccountInInstance'))+\"\\n \"),_c('i',{staticClass:\"el-icon-top-right\"})]):_vm._e()],1)]),_vm._v(\" \"),(_vm.showStatuses(report.statuses))?_c('div',{staticClass:\"reported-statuses\"},[_c('el-collapse',[_c('el-collapse-item',{attrs:{\"title\":_vm.getStatusesTitle(report.statuses)}},_vm._l((report.statuses),function(status){return _c('div',{key:status.id},[_c('status',{attrs:{\"status\":status,\"account\":status.account.nickname ? status.account : report.account,\"show-checkbox\":false,\"page\":_vm.currentPage}})],1)}),0)],1)],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"report-notes\"},[_c('el-collapse',[_c('el-collapse-item',{attrs:{\"title\":_vm.getNotesTitle(report.notes)}},_vm._l((report.notes),function(note,index){return _c('note-card',{key:index,attrs:{\"note\":note,\"report\":report}})}),1)],1),_vm._v(\" \"),_c('div',{staticClass:\"report-note-form\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('reports.leaveNote'),\"type\":\"textarea\",\"rows\":\"2\"},model:{value:(_vm.notes[report.id]),callback:function ($$v) {_vm.$set(_vm.notes, report.id, $$v)},expression:\"notes[report.id]\"}}),_vm._v(\" \"),_c('div',{staticClass:\"report-post-note\"},[_c('el-button',{on:{\"click\":function($event){return _vm.handleNewNote(report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.postNote')))])],1)],1)],1)],1)],1)}),1),_vm._v(\" \"),(!_vm.loading)?_c('div',{staticClass:\"reports-pagination\"},[_c('el-pagination',{attrs:{\"total\":_vm.totalReportsCount,\"current-page\":_vm.currentPage,\"page-size\":_vm.pageSize,\"background\":\"\",\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.handlePageChange}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ReportsFilter.vue?vue&type=template&id=5ab7c15a&scoped=true&\"\nimport script from \"./ReportsFilter.vue?vue&type=script&lang=js&\"\nexport * from \"./ReportsFilter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ReportsFilter.vue?vue&type=style&index=0&id=5ab7c15a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ab7c15a\",\n null\n \n)\n\ncomponent.options.__file = \"ReportsFilter.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-select',{staticClass:\"select-field\",attrs:{\"placeholder\":_vm.$t('reportsFilter.inputPlaceholder'),\"clearable\":\"\",\"value-key\":\"value\"},on:{\"change\":_vm.toggleFilters},model:{value:(_vm.filter),callback:function ($$v) {_vm.filter=$$v},expression:\"filter\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}},[_vm._v(_vm._s(item.label))])}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=6ac87f34&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=6ac87f34&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6ac87f34\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=6ac87f34&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=6ac87f34&rel=stylesheet%2Fscss&lang=scss&scoped=true&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-97e2.c51fe6b0.js b/priv/static/adminfe/static/js/chunk-97e2.c51fe6b0.js deleted file mode 100644 index a9cef7b6b..000000000 --- a/priv/static/adminfe/static/js/chunk-97e2.c51fe6b0.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-97e2"],{"26YS":function(e,t,a){"use strict";a.r(t);var o=a("o0o1"),s=a.n(o),i=a("yXPU"),c=a.n(i),n=a("cDf5"),l=a.n(n),r=a("QILm"),m=a.n(r),p=a("mm8V"),u={props:{host:{type:String,required:!0},packName:{type:String,required:!0},shortcode:{type:String,required:!0},file:{type:String,required:!0},isLocal:{type:Boolean,required:!0}},data:function(){return{newShortcode:null,newFile:null,copyToLocalPackName:null,copyPopoverVisible:!1,copyToShortcode:"",copyToFilename:""}},computed:{emojiName:{get:function(){return null!==this.newShortcode?this.newShortcode:this.shortcode},set:function(e){this.newShortcode=e}},emojiFile:{get:function(){return null!==this.newFile?this.newFile:this.file},set:function(e){this.newFile=e}},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},localPacks:function(){return this.$store.state.emojiPacks.localPacks},remoteInstance:function(){return this.$store.state.emojiPacks.remoteInstance}},methods:{update:function(){var e=c()(s.a.mark(function e(){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,this.$store.dispatch("UpdateEmojiFile",{packName:this.packName,shortcode:this.shortcode,newShortcode:this.emojiName,newFilename:this.emojiFile,force:!0}),e.next=7;break;case 4:return e.prev=4,e.t0=e.catch(0),e.abrupt("return");case 7:this.newShortcode=null,this.newFile=null,this.$store.dispatch("ReloadEmoji");case 10:case"end":return e.stop()}},e,this,[[0,4]])}));return function(){return e.apply(this,arguments)}}(),remove:function(){var e=this;this.$confirm("This will delete the emoji, are you sure?","Warning",{confirmButtonText:"Yes, delete the emoji",cancelButtonText:"No, leave it be",type:"warning"}).then(function(){e.$store.dispatch("DeleteEmojiFile",{packName:e.packName,shortcode:e.shortcode}).then(function(){e.newShortcode=null,e.newFile=null,e.$store.dispatch("ReloadEmoji")})})},copyToLocal:function(){try{this.$store.dispatch("AddNewEmojiFile",{packName:this.copyToLocalPackName,file:this.addressOfEmojiInPack(this.remoteInstance,this.packName,this.file),shortcode:""!==this.copyToShortcode.trim()?this.copyToShortcode.trim():this.shortcode,filename:""!==this.copyToFilename.trim()?this.copyToFilename.trim():this.file})}catch(e){return}this.copyToLocalPackName=null,this.copyToLocalVisible=!1,this.copyToShortcode="",this.copyToFilename="",this.$store.dispatch("ReloadEmoji")},addressOfEmojiInPack:p.b}},d=(a("4ySm"),a("KHd+")),h=Object(d.a)(u,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[e.isLocal?a("div",{class:e.isMobile?"emoji-container-flex":"emoji-container-grid"},[a("img",{staticClass:"emoji-preview-img",attrs:{src:e.addressOfEmojiInPack(e.host,e.packName,e.file)}}),e._v(" "),a("el-input",{staticClass:"emoji-info",attrs:{placeholder:e.$t("emoji.shortcode")},model:{value:e.emojiName,callback:function(t){e.emojiName=t},expression:"emojiName"}}),e._v(" "),a("el-input",{staticClass:"emoji-info",attrs:{placeholder:e.$t("emoji.file")},model:{value:e.emojiFile,callback:function(t){e.emojiFile=t},expression:"emojiFile"}}),e._v(" "),a("div",{staticClass:"emoji-buttons"},[a("el-button",{attrs:{type:"primary"},on:{click:e.update}},[e._v(e._s(e.$t("emoji.update")))]),e._v(" "),a("el-button",{staticClass:"remove-emoji-button",on:{click:e.remove}},[e._v(e._s(e.$t("emoji.remove")))])],1)],1):e._e(),e._v(" "),e.isLocal?e._e():a("div",{class:e.isMobile?"emoji-container-flex":"remote-emoji-container-grid"},[a("img",{staticClass:"emoji-preview-img",attrs:{src:e.addressOfEmojiInPack(e.remoteInstance,e.packName,e.file)}}),e._v(" "),a("el-input",{staticClass:"emoji-info",attrs:{value:e.emojiName,placeholder:e.$t("emoji.shortcode")}}),e._v(" "),a("el-input",{staticClass:"emoji-info",attrs:{value:e.emojiFile,placeholder:e.$t("emoji.file")}}),e._v(" "),a("el-popover",{staticClass:"copy-pack-container",attrs:{placement:"left-start","popper-class":"copy-popover"},model:{value:e.copyPopoverVisible,callback:function(t){e.copyPopoverVisible=t},expression:"copyPopoverVisible"}},[a("p",[e._v(e._s(e.$t("emoji.selectLocalPack")))]),e._v(" "),a("el-select",{staticClass:"copy-pack-select",attrs:{placeholder:e.$t("emoji.localPack")},model:{value:e.copyToLocalPackName,callback:function(t){e.copyToLocalPackName=t},expression:"copyToLocalPackName"}},e._l(e.localPacks,function(e,t){return a("el-option",{key:t,attrs:{label:t,value:t}})}),1),e._v(" "),a("p",[e._v(e._s(e.$t("emoji.specifyShortcode")))]),e._v(" "),a("el-input",{attrs:{placeholder:e.$t("emoji.leaveEmptyShortcode")},model:{value:e.copyToShortcode,callback:function(t){e.copyToShortcode=t},expression:"copyToShortcode"}}),e._v(" "),a("p",[e._v(e._s(e.$t("emoji.specifyFilename")))]),e._v(" "),a("el-input",{attrs:{placeholder:e.$t("emoji.leaveEmptyFilename")},model:{value:e.copyToFilename,callback:function(t){e.copyToFilename=t},expression:"copyToFilename"}}),e._v(" "),a("el-button",{staticClass:"copy-to-local-pack-button",attrs:{disabled:!e.copyToLocalPackName,type:"primary"},on:{click:e.copyToLocal}},[e._v(e._s(e.$t("emoji.copy")))]),e._v(" "),a("el-button",{staticClass:"emoji-button",attrs:{slot:"reference",type:"primary"},slot:"reference"},[e._v(e._s(e.$t("emoji.copyToLocalPack")))])],1)],1)])},[],!1,null,null,null);h.options.__file="SingleEmojiEditor.vue";var k=h.exports,f={props:{packName:{type:String,required:!0}},data:function(){return{shortcode:"",imageUploadURL:"",customFileName:""}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device}},methods:{uploadEmoji:function(){var e=c()(s.a.mark(function e(t){var a;return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.file,e.prev=1,this.$store.dispatch("AddNewEmojiFile",{packName:this.packName,file:a||this.imageUploadURL,shortcode:this.shortcode,filename:this.customFileName}),e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(1),e.abrupt("return");case 8:this.shortcode="",this.imageUploadURL="",this.customFileName="",this.$store.dispatch("ReloadEmoji");case 12:case"end":return e.stop()}},e,this,[[1,5]])}));return function(t){return e.apply(this,arguments)}}()}},v=(a("IVv3"),Object(d.a)(f,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-form",{staticClass:"new-emoji-uploader-form",attrs:{"label-position":e.isMobile?"top":"left","label-width":"130px",size:"small"}},[a("el-form-item",{attrs:{label:e.$t("emoji.shortcode")}},[a("el-input",{attrs:{placeholder:e.$t("emoji.optional")},model:{value:e.shortcode,callback:function(t){e.shortcode=t},expression:"shortcode"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.customFilename")}},[a("el-input",{attrs:{placeholder:e.$t("emoji.optional")},model:{value:e.customFileName,callback:function(t){e.customFileName=t},expression:"customFileName"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.uploadFile")}},[a("div",{staticClass:"upload-file-url"},[a("el-input",{attrs:{placeholder:e.$t("emoji.url")},model:{value:e.imageUploadURL,callback:function(t){e.imageUploadURL=t},expression:"imageUploadURL"}}),e._v(" "),a("el-button",{staticClass:"upload-button",attrs:{type:"primary"},on:{click:e.uploadEmoji}},[e._v(e._s(e.$t("emoji.upload")))])],1),e._v(" "),a("div",{staticClass:"upload-container"},[a("p",{staticClass:"text"},[e._v("or")]),e._v(" "),a("el-upload",{attrs:{"http-request":e.uploadEmoji,multiple:!1,"show-file-list":!1,action:"add"}},[a("el-button",{attrs:{type:"primary"}},[e._v(e._s(e.$t("emoji.clickToUpload")))])],1)],1)])],1)},[],!1,null,null,null));function b(e){var t=function(e,t){if("object"!==l()(e)||null===e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var o=a.call(e,t||"default");if("object"!==l()(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===l()(t)?t:String(t)}v.options.__file="NewEmojiUploader.vue";var j={components:{SingleEmojiEditor:k,NewEmojiUploader:v.exports},props:{name:{type:String,required:!0},pack:{type:Object,required:!0},host:{type:String,required:!0},isLocal:{type:Boolean,required:!0}},data:function(){return{showPackContent:[]}},computed:{currentFilesPage:function(){return this.$store.state.emojiPacks.currentFilesPage},currentPage:function(){return this.$store.state.emojiPacks.currentPage},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"90px":(this.isTablet,"155px")},localPackFilesCount:function(){return this.$store.state.emojiPacks.localPackFilesCount},pageSize:function(){return this.$store.state.emojiPacks.filesPageSize},share:{get:function(){return this.pack.pack["share-files"]},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"share-files",value:e})}},homepage:{get:function(){return this.pack.pack.homepage},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"homepage",value:e})}},description:{get:function(){return this.pack.pack.description},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"description",value:e})}},license:{get:function(){return this.pack.pack.license},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"license",value:e})}},fallbackSrc:{get:function(){return this.pack.pack["fallback-src"]},set:function(e){""!==e.trim()?this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src",value:e}):(this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src",value:null}),this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src-sha256",value:null}))}}},methods:{collapse:function(){this.showPackContent=[]},deletePack:function(){var e=this;this.$confirm("This will delete the pack, are you sure?","Warning",{confirmButtonText:"Yes, delete the pack",cancelButtonText:"No, leave it be",type:"warning"}).then(function(){e.$store.dispatch("DeletePack",{name:e.name}).then(function(){return e.$store.dispatch("ReloadEmoji")}).then(function(){var t=e.$store.state.emojiPacks.localPacks,a=(t[e.name],m()(t,[e.name].map(b)));0===Object.keys(a).length&&e.currentPage>1?e.$store.dispatch("FetchLocalEmojiPacks",e.currentPage-1):e.$store.dispatch("FetchLocalEmojiPacks",e.currentPage)})}).catch(function(){})},handleChange:function(e,t){e.includes("manageEmoji")&&this.$store.dispatch("FetchSinglePack",{name:t,page:1})},handleFilesPageChange:function(e){this.$store.dispatch("FetchSinglePack",{name:this.name,page:e})},savePackMetadata:function(){this.$store.dispatch("SavePackMetadata",{packName:this.name})}}},P=(a("LE4i"),Object(d.a)(j,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-collapse-item",{staticClass:"has-background",attrs:{title:e.name,name:e.name}},[a("el-form",{staticClass:"emoji-pack-metadata",attrs:{"label-width":e.labelWidth,"label-position":"left",size:"small"}},[a("el-form-item",{attrs:{label:e.$t("emoji.sharePack")}},[a("el-switch",{model:{value:e.share,callback:function(t){e.share=t},expression:"share"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.homepage")}},[a("el-input",{model:{value:e.homepage,callback:function(t){e.homepage=t},expression:"homepage"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.description")}},[a("el-input",{attrs:{type:"textarea"},model:{value:e.description,callback:function(t){e.description=t},expression:"description"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.license")}},[a("el-input",{model:{value:e.license,callback:function(t){e.license=t},expression:"license"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.fallbackSrc")}},[a("el-input",{model:{value:e.fallbackSrc,callback:function(t){e.fallbackSrc=t},expression:"fallbackSrc"}})],1),e._v(" "),e.fallbackSrc&&""!==e.fallbackSrc.trim()?a("el-form-item",{attrs:{label:e.$t("emoji.fallbackSrcSha")}},[e._v("\n "+e._s(e.pack.pack["fallback-src-sha256"])+"\n ")]):e._e()],1),e._v(" "),a("div",{staticClass:"pack-button-container"},[a("div",{staticClass:"save-pack-button-container"},[a("el-button",{staticClass:"save-pack-button",attrs:{type:"primary"},on:{click:e.savePackMetadata}},[e._v(e._s(e.$t("emoji.saveMetadata")))]),e._v(" "),a("el-button",{staticClass:"delete-pack-button",on:{click:e.deletePack}},[e._v(e._s(e.$t("emoji.deletePack")))])],1),e._v(" "),a("div",{staticClass:"download-pack-button-container"},[e.pack.pack["can-download"]?a("el-link",{attrs:{href:"//"+e.host+"/api/pleroma/emoji/packs/"+e.name+"/download_shared",underline:!1,type:"primary",target:"_blank"}},[a("el-button",{staticClass:"download-archive"},[e._v(e._s(e.$t("emoji.downloadPackArchive")))])],1):e._e()],1)]),e._v(" "),a("el-collapse",{staticClass:"contents-collapse",on:{change:function(t){return e.handleChange(t,e.name)}},model:{value:e.showPackContent,callback:function(t){e.showPackContent=t},expression:"showPackContent"}},[e.isLocal?a("el-collapse-item",{staticClass:"no-background",attrs:{title:e.$t("emoji.addNewEmoji"),name:"addEmoji"}},[a("new-emoji-uploader",{attrs:{"pack-name":e.name}})],1):e._e(),e._v(" "),a("el-collapse-item",{staticClass:"no-background",attrs:{title:e.$t("emoji.manageEmoji"),name:"manageEmoji"}},[e.pack.files&&Object.keys(e.pack.files).length>0?a("div",e._l(e.pack.files,function(t,o){return a("single-emoji-editor",{key:o,attrs:{host:e.host,"pack-name":e.name,shortcode:o,file:t,"is-local":e.isLocal}})}),1):a("span",{staticClass:"expl"},[e._v(e._s(e.$t("emoji.emptyPack")))]),e._v(" "),a("div",{staticClass:"files-pagination"},[a("el-pagination",{attrs:{total:e.localPackFilesCount,"current-page":e.currentFilesPage,"page-size":e.pageSize,"hide-on-single-page":"",layout:"prev, pager, next"},on:{"current-change":e.handleFilesPageChange}})],1)])],1)],1)},[],!1,null,null,null));P.options.__file="LocalEmojiPack.vue";var _=P.exports,$={components:{SingleEmojiEditor:k},props:{name:{type:String,required:!0},pack:{type:Object,required:!0},host:{type:String,required:!0},isLocal:{type:Boolean,required:!0}},data:function(){return{showPackContent:[],downloadSharedAs:""}},computed:{currentPage:function(){return this.$store.state.emojiPacks.currentPage},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"90px":(this.isTablet,"120px")},loadRemotePack:function(){return this.$store.state.emojiPacks.activeTab===this.name},remoteInstanceAddress:function(){return this.$store.state.emojiPacks.remoteInstance},share:{get:function(){return this.pack.pack["share-files"]},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"share-files",value:e})}},homepage:{get:function(){return this.pack.pack.homepage},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"homepage",value:e})}},description:{get:function(){return this.pack.pack.description},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"description",value:e})}},license:{get:function(){return this.pack.pack.license},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"license",value:e})}},fallbackSrc:{get:function(){return this.pack.pack["fallback-src"]},set:function(e){""!==e.trim()?this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src",value:e}):(this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src",value:null}),this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src-sha256",value:null}))}}},methods:{downloadFromInstance:function(){var e=this;this.$store.dispatch("DownloadFrom",{instanceAddress:this.remoteInstanceAddress,packName:this.name,as:this.downloadSharedAs}).then(function(){return e.$store.dispatch("ReloadEmoji")}).then(function(){return e.$store.dispatch("FetchLocalEmojiPacks",e.currentPage)})}}},g=(a("Zd0x"),Object(d.a)($,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-collapse-item",{staticClass:"has-background",attrs:{title:e.name,name:e.name}},[e.loadRemotePack?a("div",[a("el-form",{staticClass:"emoji-pack-metadata remote-pack-metadata",attrs:{"label-width":e.labelWidth,"label-position":"left",size:"small"}},[a("el-form-item",{attrs:{label:e.$t("emoji.sharePack")}},[a("el-switch",{attrs:{disabled:""},model:{value:e.share,callback:function(t){e.share=t},expression:"share"}})],1),e._v(" "),e.homepage?a("el-form-item",{attrs:{label:e.$t("emoji.homepage")}},[a("span",[e._v(e._s(e.homepage))])]):e._e(),e._v(" "),e.description?a("el-form-item",{attrs:{label:e.$t("emoji.description")}},[a("span",[e._v(e._s(e.description))])]):e._e(),e._v(" "),e.license?a("el-form-item",{attrs:{label:e.$t("emoji.license")}},[a("span",[e._v(e._s(e.license))])]):e._e(),e._v(" "),e.fallbackSrc?a("el-form-item",{attrs:{label:e.$t("emoji.fallbackSrc")}},[a("span",[e._v(e._s(e.fallbackSrc))])]):e._e(),e._v(" "),e.fallbackSrc&&""!==e.fallbackSrc.trim()?a("el-form-item",{attrs:{label:e.$t("emoji.fallbackSrcSha")}},[e._v("\n "+e._s(e.pack.pack["fallback-src-sha256"])+"\n ")]):e._e(),e._v(" "),a("el-form-item",[e.pack.pack["can-download"]&&e.pack.pack["fallback-src"]?a("el-link",{attrs:{href:e.pack.pack["fallback-src"],underline:!1,type:"primary",target:"_blank"}},[a("el-button",{staticClass:"download-archive"},[e._v(e._s(e.$t("emoji.downloadPackArchive")))])],1):e._e()],1)],1),e._v(" "),a("el-collapse",{staticClass:"contents-collapse",model:{value:e.showPackContent,callback:function(t){e.showPackContent=t},expression:"showPackContent"}},[a("el-collapse-item",{staticClass:"no-background",attrs:{title:e.$t("emoji.manageEmoji"),name:"manageEmoji"}},[e.pack.files&&Object.keys(e.pack.files).length>0?a("div",e._l(e.pack.files,function(t,o){return a("single-emoji-editor",{key:o,attrs:{host:e.host,"pack-name":e.name,shortcode:o,file:t,"is-local":e.isLocal}})}),1):a("span",{staticClass:"expl"},[e._v(e._s(e.$t("emoji.emptyPack")))])]),e._v(" "),a("el-collapse-item",{staticClass:"no-background",attrs:{title:e.$t("emoji.downloadPack"),name:"downloadPack"}},[a("p",[e._v("\n "+e._s(e.$t("emoji.thisWillDownload"))+' "'+e._s(e.name)+'" '+e._s(e.$t("emoji.downloadToCurrentInstance"))+'\n "'+e._s(""===e.downloadSharedAs.trim()?e.name:e.downloadSharedAs)+'" ('+e._s(e.$t("emoji.canBeChanged"))+").\n "+e._s(e.$t("emoji.willBeUsable"))+".\n ")]),e._v(" "),a("div",{staticClass:"download-shared-pack"},[a("el-input",{attrs:{placeholder:e.$t("emoji.downloadAsOptional")},model:{value:e.downloadSharedAs,callback:function(t){e.downloadSharedAs=t},expression:"downloadSharedAs"}}),e._v(" "),a("el-button",{staticClass:"download-shared-pack-button",attrs:{type:"primary"},on:{click:e.downloadFromInstance}},[e._v("\n "+e._s(e.isDesktop?e.$t("emoji.downloadSharedPack"):e.$t("emoji.downloadSharedPackMobile"))+"\n ")])],1)])],1)],1):e._e()])},[],!1,null,null,null));g.options.__file="RemoteEmojiPack.vue";var y=g.exports,w=a("mSNy"),C={components:{LocalEmojiPack:_,RebootButton:a("rIUS").a,RemoteEmojiPack:y},data:function(){return{activeTab:"local",newPackName:"",activeLocalPack:[],activeRemotePack:[],fullscreenLoading:!1}},computed:{currentPage:function(){return this.$store.state.emojiPacks.currentPage},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"105px":this.isTablet?"180px":"200px"},localPacks:function(){return this.$store.state.emojiPacks.localPacks},localPacksCount:function(){return this.$store.state.emojiPacks.localPacksCount},pageSize:function(){return this.$store.state.emojiPacks.pageSize},remoteInstanceAddress:{get:function(){return this.$store.state.emojiPacks.remoteInstance},set:function(e){this.$store.dispatch("SetRemoteInstance",e)}},remotePacks:function(){return this.$store.state.emojiPacks.remotePacks}},mounted:function(){this.$store.dispatch("GetNodeInfo"),this.$store.dispatch("NeedReboot"),this.refreshLocalPacks()},methods:{createLocalPack:function(){var e=this;this.$store.dispatch("CreatePack",{name:this.newPackName}).then(function(){e.newPackName="",e.$store.dispatch("FetchLocalEmojiPacks",e.currentPage),e.$store.dispatch("ReloadEmoji")})},handlePageChange:function(e){this.$store.dispatch("FetchLocalEmojiPacks",e)},importFromFS:function(){var e=this;this.$store.dispatch("ImportFromFS").then(function(){e.$store.dispatch("FetchLocalEmojiPacks",e.currentPage),e.$store.dispatch("ReloadEmoji")})},refreshLocalPacks:function(){try{this.$store.dispatch("FetchLocalEmojiPacks",this.currentPage)}catch(e){return}this.$message({type:"success",message:w.a.t("emoji.refreshed")})},refreshRemotePacks:function(){var e=c()(s.a.mark(function e(){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this.fullscreenLoading=!0,e.next=3,this.$store.dispatch("SetRemoteEmojiPacks",{remoteInstance:this.remoteInstanceAddress});case 3:this.fullscreenLoading=!1;case 4:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),reloadEmoji:function(){var e=c()(s.a.mark(function e(){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,this.$store.dispatch("ReloadEmoji"),e.next=7;break;case 4:return e.prev=4,e.t0=e.catch(0),e.abrupt("return");case 7:this.$message({type:"success",message:w.a.t("emoji.reloaded")});case 8:case"end":return e.stop()}},e,this,[[0,4]])}));return function(){return e.apply(this,arguments)}}(),setActiveTab:function(e){this.$refs.localEmojiPack.forEach(function(e){return e.collapse()}),this.$store.dispatch("SetActiveTab",e)}}},S=(a("smuD"),Object(d.a)(C,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"emoji-packs"},[a("div",{staticClass:"emoji-packs-header"},[a("h1",[e._v(e._s(e.$t("emoji.emojiPacks")))]),e._v(" "),a("reboot-button")],1),e._v(" "),a("div",{staticClass:"emoji-header-container"},[a("div",{staticClass:"emoji-packs-header-button-container"},[a("el-button",{staticClass:"reload-emoji-button",on:{click:e.reloadEmoji}},[e._v(e._s(e.$t("emoji.reloadEmoji")))]),e._v(" "),a("el-tooltip",{attrs:{content:e.$t("emoji.importEmojiTooltip"),effects:"dark",placement:"bottom","popper-class":"import-pack-button"}},[a("el-button",{on:{click:e.importFromFS}},[e._v("\n "+e._s(e.$t("emoji.importPacks"))+"\n ")])],1)],1)]),e._v(" "),a("el-tabs",{staticClass:"emoji-packs-tabs",attrs:{type:"card"},model:{value:e.activeTab,callback:function(t){e.activeTab=t},expression:"activeTab"}},[a("el-tab-pane",{attrs:{label:e.$t("emoji.localPacks"),name:"local"}},[a("el-form",{staticClass:"emoji-packs-form",attrs:{"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:e.$t("emoji.localPacks")}},[a("el-button",{on:{click:e.refreshLocalPacks}},[e._v(e._s(e.$t("emoji.refreshLocalPacks")))])],1),e._v(" "),a("el-form-item",{attrs:{label:e.$t("emoji.createLocalPack")}},[a("div",{staticClass:"create-pack"},[a("el-input",{attrs:{placeholder:e.$t("users.name")},model:{value:e.newPackName,callback:function(t){e.newPackName=t},expression:"newPackName"}}),e._v(" "),a("el-button",{staticClass:"create-pack-button",attrs:{disabled:""===e.newPackName.trim()},on:{click:e.createLocalPack}},[e._v("\n "+e._s(e.$t("users.create"))+"\n ")])],1)]),e._v(" "),Object.keys(e.localPacks).length>0?a("el-form-item",{attrs:{label:e.$t("emoji.packs")}},e._l(e.localPacks,function(t,o){return a("el-collapse",{key:o,attrs:{accordion:""},on:{change:e.setActiveTab},model:{value:e.activeLocalPack,callback:function(t){e.activeLocalPack=t},expression:"activeLocalPack"}},[a("local-emoji-pack",{ref:"localEmojiPack",refInFor:!0,attrs:{name:o,pack:t,host:e.$store.getters.authHost,"is-local":!0}})],1)}),1):e._e()],1),e._v(" "),a("div",{staticClass:"pagination"},[a("el-pagination",{attrs:{total:e.localPacksCount,"current-page":e.currentPage,"page-size":e.pageSize,"hide-on-single-page":"",layout:"prev, pager, next"},on:{"current-change":e.handlePageChange}})],1)],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("emoji.remotePacks"),name:"remote"}},[a("el-form",{staticClass:"emoji-packs-form",attrs:{"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:e.$t("emoji.remotePacks")}},[a("div",{staticClass:"create-pack"},[a("el-input",{attrs:{placeholder:e.$t("emoji.remoteInstanceAddress")},model:{value:e.remoteInstanceAddress,callback:function(t){e.remoteInstanceAddress=t},expression:"remoteInstanceAddress"}}),e._v(" "),a("el-button",{directives:[{name:"loading",rawName:"v-loading.fullscreen.lock",value:e.fullscreenLoading,expression:"fullscreenLoading",modifiers:{fullscreen:!0,lock:!0}}],staticClass:"create-pack-button",attrs:{disabled:""===e.remoteInstanceAddress.trim()},on:{click:e.refreshRemotePacks}},[e._v("\n "+e._s(e.$t("emoji.refreshRemote"))+"\n ")])],1)]),e._v(" "),Object.keys(e.remotePacks).length>0?a("el-form-item",{attrs:{label:e.$t("emoji.packs")}},e._l(e.remotePacks,function(t,o){return a("el-collapse",{key:o,attrs:{accordion:""},on:{change:e.setActiveTab},model:{value:e.activeRemotePack,callback:function(t){e.activeRemotePack=t},expression:"activeRemotePack"}},[a("remote-emoji-pack",{attrs:{name:o,pack:t,host:e.$store.getters.authHost,"is-local":!1}})],1)}),1):e._e()],1)],1)],1)],1)},[],!1,null,null,null));S.options.__file="index.vue";t.default=S.exports},"4ySm":function(e,t,a){"use strict";var o=a("n6gr");a.n(o).a},"6lYW":function(e,t,a){},HBNe:function(e,t,a){},IVv3:function(e,t,a){"use strict";var o=a("6lYW");a.n(o).a},LE4i:function(e,t,a){"use strict";var o=a("HBNe");a.n(o).a},QZC8:function(e,t,a){},Zd0x:function(e,t,a){"use strict";var o=a("eDOw");a.n(o).a},eDOw:function(e,t,a){},n6gr:function(e,t,a){},smuD:function(e,t,a){"use strict";var o=a("QZC8");a.n(o).a}}]); -//# sourceMappingURL=chunk-97e2.c51fe6b0.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-97e2.c51fe6b0.js.map b/priv/static/adminfe/static/js/chunk-97e2.c51fe6b0.js.map deleted file mode 100644 index 1d489f4c2..000000000 --- a/priv/static/adminfe/static/js/chunk-97e2.c51fe6b0.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/views/emojiPacks/index.vue?6c67","webpack:///./src/views/emojiPacks/components/SingleEmojiEditor.vue?5a7e","webpack:///src/views/emojiPacks/components/SingleEmojiEditor.vue","webpack:///./src/views/emojiPacks/components/SingleEmojiEditor.vue","webpack:///./src/views/emojiPacks/components/SingleEmojiEditor.vue?52fe","webpack:///./src/views/emojiPacks/components/NewEmojiUploader.vue?1c09","webpack:///src/views/emojiPacks/components/NewEmojiUploader.vue","webpack:///./src/views/emojiPacks/components/NewEmojiUploader.vue","webpack:///./src/views/emojiPacks/components/NewEmojiUploader.vue?e7aa","webpack:///src/views/emojiPacks/components/LocalEmojiPack.vue","webpack:///./src/views/emojiPacks/components/LocalEmojiPack.vue?88cd","webpack:///./src/views/emojiPacks/components/LocalEmojiPack.vue","webpack:///./src/views/emojiPacks/components/LocalEmojiPack.vue?9534","webpack:///./src/views/emojiPacks/components/RemoteEmojiPack.vue?4c9f","webpack:///src/views/emojiPacks/components/RemoteEmojiPack.vue","webpack:///./src/views/emojiPacks/components/RemoteEmojiPack.vue","webpack:///./src/views/emojiPacks/components/RemoteEmojiPack.vue?deb7","webpack:///./src/views/emojiPacks/index.vue?a332","webpack:///src/views/emojiPacks/index.vue","webpack:///./src/views/emojiPacks/index.vue","webpack:///./src/views/emojiPacks/components/SingleEmojiEditor.vue?bc44","webpack:///./src/views/emojiPacks/components/NewEmojiUploader.vue?d98f","webpack:///./src/views/emojiPacks/components/LocalEmojiPack.vue?2a38","webpack:///./src/views/emojiPacks/components/RemoteEmojiPack.vue?118a","webpack:///./src/views/emojiPacks/index.vue?7b86"],"names":["components_SingleEmojiEditorvue_type_script_lang_js_","props","host","type","String","required","packName","shortcode","file","isLocal","Boolean","data","newShortcode","newFile","copyToLocalPackName","copyPopoverVisible","copyToShortcode","copyToFilename","computed","emojiName","get","this","set","val","emojiFile","isDesktop","$store","state","app","device","isMobile","localPacks","emojiPacks","remoteInstance","methods","update","_update","asyncToGenerator_default","regenerator_default","a","mark","_callee","wrap","_context","prev","next","dispatch","newFilename","force","t0","abrupt","stop","apply","arguments","remove","_this","$confirm","confirmButtonText","cancelButtonText","then","copyToLocal","addressOfEmojiInPack","trim","filename","e","copyToLocalVisible","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","class","staticClass","attrs","src","_v","placeholder","$t","model","value","callback","$$v","expression","on","click","_s","_e","placement","popper-class","_l","_pack","name","key","label","disabled","slot","options","__file","SingleEmojiEditor","components_NewEmojiUploadervue_type_script_lang_js_","imageUploadURL","customFileName","uploadEmoji","_uploadEmoji","_ref","_x","NewEmojiUploader_component","label-position","label-width","size","http-request","multiple","show-file-list","action","components_LocalEmojiPackvue_type_script_lang_js_","components","NewEmojiUploader","pack","showPackContent","currentFilesPage","currentPage","isTablet","labelWidth","localPackFilesCount","pageSize","filesPageSize","share","homepage","description","license","fallbackSrc","collapse","deletePack","_this$$store$state$em","updatedPacks","objectWithoutProperties_default","map","_toPropertyKey","keys","length","catch","handleChange","openTabs","includes","page","handleFilesPageChange","savePackMetadata","LocalEmojiPack_component","title","href","underline","target","change","$event","pack-name","files","is-local","total","current-page","page-size","hide-on-single-page","layout","current-change","LocalEmojiPack","components_RemoteEmojiPackvue_type_script_lang_js_","downloadSharedAs","loadRemotePack","activeTab","remoteInstanceAddress","downloadFromInstance","instanceAddress","as","RemoteEmojiPack_component","RemoteEmojiPack","views_emojiPacksvue_type_script_lang_js_","RebootButton","newPackName","activeLocalPack","activeRemotePack","fullscreenLoading","localPacksCount","instance","remotePacks","mounted","refreshLocalPacks","createLocalPack","handlePageChange","importFromFS","_this2","$message","message","lang","t","refreshRemotePacks","_refreshRemotePacks","reloadEmoji","_reloadEmoji","_callee2","_context2","setActiveTab","$refs","localEmojiPack","forEach","el","emojiPacks_component","content","effects","accordion","ref","refInFor","getters","authHost","directives","rawName","modifiers","fullscreen","lock","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_SingleEmojiEditor_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_NewEmojiUploader_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_LocalEmojiPack_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_RemoteEmojiPack_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__"],"mappings":"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","file":"static/js/chunk-97e2.c51fe6b0.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"emoji-packs\"},[_c('div',{staticClass:\"emoji-packs-header\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('emoji.emojiPacks')))]),_vm._v(\" \"),_c('reboot-button')],1),_vm._v(\" \"),_c('div',{staticClass:\"emoji-header-container\"},[_c('div',{staticClass:\"emoji-packs-header-button-container\"},[_c('el-button',{staticClass:\"reload-emoji-button\",on:{\"click\":_vm.reloadEmoji}},[_vm._v(_vm._s(_vm.$t('emoji.reloadEmoji')))]),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"content\":_vm.$t('emoji.importEmojiTooltip'),\"effects\":\"dark\",\"placement\":\"bottom\",\"popper-class\":\"import-pack-button\"}},[_c('el-button',{on:{\"click\":_vm.importFromFS}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('emoji.importPacks'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-tabs',{staticClass:\"emoji-packs-tabs\",attrs:{\"type\":\"card\"},model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},[_c('el-tab-pane',{attrs:{\"label\":_vm.$t('emoji.localPacks'),\"name\":\"local\"}},[_c('el-form',{staticClass:\"emoji-packs-form\",attrs:{\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.localPacks')}},[_c('el-button',{on:{\"click\":_vm.refreshLocalPacks}},[_vm._v(_vm._s(_vm.$t('emoji.refreshLocalPacks')))])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.createLocalPack')}},[_c('div',{staticClass:\"create-pack\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('users.name')},model:{value:(_vm.newPackName),callback:function ($$v) {_vm.newPackName=$$v},expression:\"newPackName\"}}),_vm._v(\" \"),_c('el-button',{staticClass:\"create-pack-button\",attrs:{\"disabled\":_vm.newPackName.trim() === ''},on:{\"click\":_vm.createLocalPack}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.create'))+\"\\n \")])],1)]),_vm._v(\" \"),(Object.keys(_vm.localPacks).length > 0)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.packs')}},_vm._l((_vm.localPacks),function(pack,name){return _c('el-collapse',{key:name,attrs:{\"accordion\":\"\"},on:{\"change\":_vm.setActiveTab},model:{value:(_vm.activeLocalPack),callback:function ($$v) {_vm.activeLocalPack=$$v},expression:\"activeLocalPack\"}},[_c('local-emoji-pack',{ref:\"localEmojiPack\",refInFor:true,attrs:{\"name\":name,\"pack\":pack,\"host\":_vm.$store.getters.authHost,\"is-local\":true}})],1)}),1):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"pagination\"},[_c('el-pagination',{attrs:{\"total\":_vm.localPacksCount,\"current-page\":_vm.currentPage,\"page-size\":_vm.pageSize,\"hide-on-single-page\":\"\",\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.handlePageChange}})],1)],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('emoji.remotePacks'),\"name\":\"remote\"}},[_c('el-form',{staticClass:\"emoji-packs-form\",attrs:{\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.remotePacks')}},[_c('div',{staticClass:\"create-pack\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.remoteInstanceAddress')},model:{value:(_vm.remoteInstanceAddress),callback:function ($$v) {_vm.remoteInstanceAddress=$$v},expression:\"remoteInstanceAddress\"}}),_vm._v(\" \"),_c('el-button',{directives:[{name:\"loading\",rawName:\"v-loading.fullscreen.lock\",value:(_vm.fullscreenLoading),expression:\"fullscreenLoading\",modifiers:{\"fullscreen\":true,\"lock\":true}}],staticClass:\"create-pack-button\",attrs:{\"disabled\":_vm.remoteInstanceAddress.trim() === ''},on:{\"click\":_vm.refreshRemotePacks}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('emoji.refreshRemote'))+\"\\n \")])],1)]),_vm._v(\" \"),(Object.keys(_vm.remotePacks).length > 0)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.packs')}},_vm._l((_vm.remotePacks),function(pack,name){return _c('el-collapse',{key:name,attrs:{\"accordion\":\"\"},on:{\"change\":_vm.setActiveTab},model:{value:(_vm.activeRemotePack),callback:function ($$v) {_vm.activeRemotePack=$$v},expression:\"activeRemotePack\"}},[_c('remote-emoji-pack',{attrs:{\"name\":name,\"pack\":pack,\"host\":_vm.$store.getters.authHost,\"is-local\":false}})],1)}),1):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SingleEmojiEditor.vue?vue&type=template&id=6c624eee&\"\nimport script from \"./SingleEmojiEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./SingleEmojiEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SingleEmojiEditor.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SingleEmojiEditor.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.isLocal)?_c('div',{class:_vm.isMobile ? 'emoji-container-flex' : 'emoji-container-grid'},[_c('img',{staticClass:\"emoji-preview-img\",attrs:{\"src\":_vm.addressOfEmojiInPack(_vm.host, _vm.packName, _vm.file)}}),_vm._v(\" \"),_c('el-input',{staticClass:\"emoji-info\",attrs:{\"placeholder\":_vm.$t('emoji.shortcode')},model:{value:(_vm.emojiName),callback:function ($$v) {_vm.emojiName=$$v},expression:\"emojiName\"}}),_vm._v(\" \"),_c('el-input',{staticClass:\"emoji-info\",attrs:{\"placeholder\":_vm.$t('emoji.file')},model:{value:(_vm.emojiFile),callback:function ($$v) {_vm.emojiFile=$$v},expression:\"emojiFile\"}}),_vm._v(\" \"),_c('div',{staticClass:\"emoji-buttons\"},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.update}},[_vm._v(_vm._s(_vm.$t('emoji.update')))]),_vm._v(\" \"),_c('el-button',{staticClass:\"remove-emoji-button\",on:{\"click\":_vm.remove}},[_vm._v(_vm._s(_vm.$t('emoji.remove')))])],1)],1):_vm._e(),_vm._v(\" \"),(!_vm.isLocal)?_c('div',{class:_vm.isMobile ? 'emoji-container-flex' : 'remote-emoji-container-grid'},[_c('img',{staticClass:\"emoji-preview-img\",attrs:{\"src\":_vm.addressOfEmojiInPack(_vm.remoteInstance, _vm.packName, _vm.file)}}),_vm._v(\" \"),_c('el-input',{staticClass:\"emoji-info\",attrs:{\"value\":_vm.emojiName,\"placeholder\":_vm.$t('emoji.shortcode')}}),_vm._v(\" \"),_c('el-input',{staticClass:\"emoji-info\",attrs:{\"value\":_vm.emojiFile,\"placeholder\":_vm.$t('emoji.file')}}),_vm._v(\" \"),_c('el-popover',{staticClass:\"copy-pack-container\",attrs:{\"placement\":\"left-start\",\"popper-class\":\"copy-popover\"},model:{value:(_vm.copyPopoverVisible),callback:function ($$v) {_vm.copyPopoverVisible=$$v},expression:\"copyPopoverVisible\"}},[_c('p',[_vm._v(_vm._s(_vm.$t('emoji.selectLocalPack')))]),_vm._v(\" \"),_c('el-select',{staticClass:\"copy-pack-select\",attrs:{\"placeholder\":_vm.$t('emoji.localPack')},model:{value:(_vm.copyToLocalPackName),callback:function ($$v) {_vm.copyToLocalPackName=$$v},expression:\"copyToLocalPackName\"}},_vm._l((_vm.localPacks),function(_pack,name){return _c('el-option',{key:name,attrs:{\"label\":name,\"value\":name}})}),1),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('emoji.specifyShortcode')))]),_vm._v(\" \"),_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.leaveEmptyShortcode')},model:{value:(_vm.copyToShortcode),callback:function ($$v) {_vm.copyToShortcode=$$v},expression:\"copyToShortcode\"}}),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('emoji.specifyFilename')))]),_vm._v(\" \"),_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.leaveEmptyFilename')},model:{value:(_vm.copyToFilename),callback:function ($$v) {_vm.copyToFilename=$$v},expression:\"copyToFilename\"}}),_vm._v(\" \"),_c('el-button',{staticClass:\"copy-to-local-pack-button\",attrs:{\"disabled\":!_vm.copyToLocalPackName,\"type\":\"primary\"},on:{\"click\":_vm.copyToLocal}},[_vm._v(_vm._s(_vm.$t('emoji.copy')))]),_vm._v(\" \"),_c('el-button',{staticClass:\"emoji-button\",attrs:{\"slot\":\"reference\",\"type\":\"primary\"},slot:\"reference\"},[_vm._v(_vm._s(_vm.$t('emoji.copyToLocalPack')))])],1)],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./NewEmojiUploader.vue?vue&type=template&id=403a380a&\"\nimport script from \"./NewEmojiUploader.vue?vue&type=script&lang=js&\"\nexport * from \"./NewEmojiUploader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NewEmojiUploader.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"NewEmojiUploader.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-form',{staticClass:\"new-emoji-uploader-form\",attrs:{\"label-position\":_vm.isMobile ? 'top' : 'left',\"label-width\":\"130px\",\"size\":\"small\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.shortcode')}},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.optional')},model:{value:(_vm.shortcode),callback:function ($$v) {_vm.shortcode=$$v},expression:\"shortcode\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.customFilename')}},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.optional')},model:{value:(_vm.customFileName),callback:function ($$v) {_vm.customFileName=$$v},expression:\"customFileName\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.uploadFile')}},[_c('div',{staticClass:\"upload-file-url\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.url')},model:{value:(_vm.imageUploadURL),callback:function ($$v) {_vm.imageUploadURL=$$v},expression:\"imageUploadURL\"}}),_vm._v(\" \"),_c('el-button',{staticClass:\"upload-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.uploadEmoji}},[_vm._v(_vm._s(_vm.$t('emoji.upload')))])],1),_vm._v(\" \"),_c('div',{staticClass:\"upload-container\"},[_c('p',{staticClass:\"text\"},[_vm._v(\"or\")]),_vm._v(\" \"),_c('el-upload',{attrs:{\"http-request\":_vm.uploadEmoji,\"multiple\":false,\"show-file-list\":false,\"action\":\"add\"}},[_c('el-button',{attrs:{\"type\":\"primary\"}},[_vm._v(_vm._s(_vm.$t('emoji.clickToUpload')))])],1)],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalEmojiPack.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalEmojiPack.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LocalEmojiPack.vue?vue&type=template&id=63adc609&\"\nimport script from \"./LocalEmojiPack.vue?vue&type=script&lang=js&\"\nexport * from \"./LocalEmojiPack.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LocalEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"LocalEmojiPack.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-collapse-item',{staticClass:\"has-background\",attrs:{\"title\":_vm.name,\"name\":_vm.name}},[_c('el-form',{staticClass:\"emoji-pack-metadata\",attrs:{\"label-width\":_vm.labelWidth,\"label-position\":\"left\",\"size\":\"small\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.sharePack')}},[_c('el-switch',{model:{value:(_vm.share),callback:function ($$v) {_vm.share=$$v},expression:\"share\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.homepage')}},[_c('el-input',{model:{value:(_vm.homepage),callback:function ($$v) {_vm.homepage=$$v},expression:\"homepage\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.description')}},[_c('el-input',{attrs:{\"type\":\"textarea\"},model:{value:(_vm.description),callback:function ($$v) {_vm.description=$$v},expression:\"description\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.license')}},[_c('el-input',{model:{value:(_vm.license),callback:function ($$v) {_vm.license=$$v},expression:\"license\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.fallbackSrc')}},[_c('el-input',{model:{value:(_vm.fallbackSrc),callback:function ($$v) {_vm.fallbackSrc=$$v},expression:\"fallbackSrc\"}})],1),_vm._v(\" \"),(_vm.fallbackSrc && _vm.fallbackSrc.trim() !== '')?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.fallbackSrcSha')}},[_vm._v(\"\\n \"+_vm._s(_vm.pack.pack[\"fallback-src-sha256\"])+\"\\n \")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"pack-button-container\"},[_c('div',{staticClass:\"save-pack-button-container\"},[_c('el-button',{staticClass:\"save-pack-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.savePackMetadata}},[_vm._v(_vm._s(_vm.$t('emoji.saveMetadata')))]),_vm._v(\" \"),_c('el-button',{staticClass:\"delete-pack-button\",on:{\"click\":_vm.deletePack}},[_vm._v(_vm._s(_vm.$t('emoji.deletePack')))])],1),_vm._v(\" \"),_c('div',{staticClass:\"download-pack-button-container\"},[(_vm.pack.pack['can-download'])?_c('el-link',{attrs:{\"href\":(\"//\" + _vm.host + \"/api/pleroma/emoji/packs/\" + _vm.name + \"/download_shared\"),\"underline\":false,\"type\":\"primary\",\"target\":\"_blank\"}},[_c('el-button',{staticClass:\"download-archive\"},[_vm._v(_vm._s(_vm.$t('emoji.downloadPackArchive')))])],1):_vm._e()],1)]),_vm._v(\" \"),_c('el-collapse',{staticClass:\"contents-collapse\",on:{\"change\":function($event){return _vm.handleChange($event, _vm.name)}},model:{value:(_vm.showPackContent),callback:function ($$v) {_vm.showPackContent=$$v},expression:\"showPackContent\"}},[(_vm.isLocal)?_c('el-collapse-item',{staticClass:\"no-background\",attrs:{\"title\":_vm.$t('emoji.addNewEmoji'),\"name\":\"addEmoji\"}},[_c('new-emoji-uploader',{attrs:{\"pack-name\":_vm.name}})],1):_vm._e(),_vm._v(\" \"),_c('el-collapse-item',{staticClass:\"no-background\",attrs:{\"title\":_vm.$t('emoji.manageEmoji'),\"name\":\"manageEmoji\"}},[(_vm.pack.files && Object.keys(_vm.pack.files).length > 0)?_c('div',_vm._l((_vm.pack.files),function(file,shortcode){return _c('single-emoji-editor',{key:shortcode,attrs:{\"host\":_vm.host,\"pack-name\":_vm.name,\"shortcode\":shortcode,\"file\":file,\"is-local\":_vm.isLocal}})}),1):_c('span',{staticClass:\"expl\"},[_vm._v(_vm._s(_vm.$t('emoji.emptyPack')))]),_vm._v(\" \"),_c('div',{staticClass:\"files-pagination\"},[_c('el-pagination',{attrs:{\"total\":_vm.localPackFilesCount,\"current-page\":_vm.currentFilesPage,\"page-size\":_vm.pageSize,\"hide-on-single-page\":\"\",\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.handleFilesPageChange}})],1)])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteEmojiPack.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteEmojiPack.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./RemoteEmojiPack.vue?vue&type=template&id=3c9fab0c&\"\nimport script from \"./RemoteEmojiPack.vue?vue&type=script&lang=js&\"\nexport * from \"./RemoteEmojiPack.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RemoteEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"RemoteEmojiPack.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-collapse-item',{staticClass:\"has-background\",attrs:{\"title\":_vm.name,\"name\":_vm.name}},[(_vm.loadRemotePack)?_c('div',[_c('el-form',{staticClass:\"emoji-pack-metadata remote-pack-metadata\",attrs:{\"label-width\":_vm.labelWidth,\"label-position\":\"left\",\"size\":\"small\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.sharePack')}},[_c('el-switch',{attrs:{\"disabled\":\"\"},model:{value:(_vm.share),callback:function ($$v) {_vm.share=$$v},expression:\"share\"}})],1),_vm._v(\" \"),(_vm.homepage)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.homepage')}},[_c('span',[_vm._v(_vm._s(_vm.homepage))])]):_vm._e(),_vm._v(\" \"),(_vm.description)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.description')}},[_c('span',[_vm._v(_vm._s(_vm.description))])]):_vm._e(),_vm._v(\" \"),(_vm.license)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.license')}},[_c('span',[_vm._v(_vm._s(_vm.license))])]):_vm._e(),_vm._v(\" \"),(_vm.fallbackSrc)?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.fallbackSrc')}},[_c('span',[_vm._v(_vm._s(_vm.fallbackSrc))])]):_vm._e(),_vm._v(\" \"),(_vm.fallbackSrc && _vm.fallbackSrc.trim() !== '')?_c('el-form-item',{attrs:{\"label\":_vm.$t('emoji.fallbackSrcSha')}},[_vm._v(\"\\n \"+_vm._s(_vm.pack.pack[\"fallback-src-sha256\"])+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-form-item',[(_vm.pack.pack['can-download'] && _vm.pack.pack['fallback-src'])?_c('el-link',{attrs:{\"href\":_vm.pack.pack['fallback-src'],\"underline\":false,\"type\":\"primary\",\"target\":\"_blank\"}},[_c('el-button',{staticClass:\"download-archive\"},[_vm._v(_vm._s(_vm.$t('emoji.downloadPackArchive')))])],1):_vm._e()],1)],1),_vm._v(\" \"),_c('el-collapse',{staticClass:\"contents-collapse\",model:{value:(_vm.showPackContent),callback:function ($$v) {_vm.showPackContent=$$v},expression:\"showPackContent\"}},[_c('el-collapse-item',{staticClass:\"no-background\",attrs:{\"title\":_vm.$t('emoji.manageEmoji'),\"name\":\"manageEmoji\"}},[(_vm.pack.files && Object.keys(_vm.pack.files).length > 0)?_c('div',_vm._l((_vm.pack.files),function(file,shortcode){return _c('single-emoji-editor',{key:shortcode,attrs:{\"host\":_vm.host,\"pack-name\":_vm.name,\"shortcode\":shortcode,\"file\":file,\"is-local\":_vm.isLocal}})}),1):_c('span',{staticClass:\"expl\"},[_vm._v(_vm._s(_vm.$t('emoji.emptyPack')))])]),_vm._v(\" \"),_c('el-collapse-item',{staticClass:\"no-background\",attrs:{\"title\":_vm.$t('emoji.downloadPack'),\"name\":\"downloadPack\"}},[_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('emoji.thisWillDownload'))+\" \\\"\"+_vm._s(_vm.name)+\"\\\" \"+_vm._s(_vm.$t('emoji.downloadToCurrentInstance'))+\"\\n \\\"\"+_vm._s(_vm.downloadSharedAs.trim() === '' ? _vm.name : _vm.downloadSharedAs)+\"\\\" (\"+_vm._s(_vm.$t('emoji.canBeChanged'))+\").\\n \"+_vm._s(_vm.$t('emoji.willBeUsable'))+\".\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"download-shared-pack\"},[_c('el-input',{attrs:{\"placeholder\":_vm.$t('emoji.downloadAsOptional')},model:{value:(_vm.downloadSharedAs),callback:function ($$v) {_vm.downloadSharedAs=$$v},expression:\"downloadSharedAs\"}}),_vm._v(\" \"),_c('el-button',{staticClass:\"download-shared-pack-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.downloadFromInstance}},[_vm._v(\"\\n \"+_vm._s(_vm.isDesktop ? _vm.$t('emoji.downloadSharedPack') : _vm.$t('emoji.downloadSharedPackMobile'))+\"\\n \")])],1)])],1)],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=c5c109ba&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocalEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RemoteEmojiPack.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-9a72.41e843cd.js b/priv/static/adminfe/static/js/chunk-9a72.41e843cd.js deleted file mode 100644 index 575a01d30..000000000 --- a/priv/static/adminfe/static/js/chunk-9a72.41e843cd.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-9a72"],{GFxI:function(t,e,n){},aSQl:function(t,e,n){"use strict";n.d(e,"a",function(){return p});var o=n("o0o1"),a=n.n(o),r=n("yXPU"),s=n.n(r),i=n("oAJy"),l=n.n(i),c=n("LvDl"),u=n.n(c),p=function(){var t=s()(a.a.mark(function t(e){var n,o;return a.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.a.getItem("vuex-lz");case 2:if(n=t.sent,void 0!==(o=u.a.get(n,"oauth.userToken"))){t.next=6;break}throw new Error("PleromaFE token not found");case 6:return t.next=8,e.dispatch("LoginByPleromaFE",{token:o});case 8:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}()},abDm:function(t,e,n){"use strict";var o=n("GFxI");n.n(o).a},c11S:function(t,e,n){"use strict";var o=n("gTgX");n.n(o).a},gTgX:function(t,e,n){},ntYl:function(t,e,n){"use strict";n.r(e);var o=n("J4zp"),a=n.n(o),r=n("o0o1"),s=n.n(r),i=n("yXPU"),l=n.n(i),c=n("zT9a"),u=n("oAJy"),p=n.n(u),d=n("LvDl"),m=n.n(d),g=n("mSNy"),h=n("aSQl"),v={name:"Login",components:{"svg-icon":c.a},data:function(){return{loginForm:{username:"",password:""},passwordType:"password",loading:!1,loadingPleromaFE:!1,showDialog:!1,redirect:void 0,pleromaFEToken:!1,pleromaFEStateKey:"vuex-lz",pleromaFEState:{}}},watch:{$route:{handler:function(t){this.redirect=t.query&&t.query.redirect},immediate:!0}},mounted:function(){var t=l()(s.a.mark(function t(){var e;return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,p.a.getItem(this.pleromaFEStateKey);case 2:if(e=t.sent,this.pleromaFEState=e,void 0!==m.a.get(e,"oauth.userToken")){t.next=6;break}return t.abrupt("return");case 6:this.pleromaFEToken=!0;case 7:case"end":return t.stop()}},t,this)}));return function(){return t.apply(this,arguments)}}(),methods:{showPwd:function(){"password"===this.passwordType?this.passwordType="":this.passwordType="password"},handleLogin:function(){var t=this;this.loading=!0;var e=this.getLoginData();this.$store.dispatch("LoginByUsername",e).then(function(){t.loading=!1,t.$router.push({path:t.redirect||"/users/index"})}).catch(function(){t.loading=!1})},handlePleromaFELogin:function(){var t=l()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return this.loadingPleromaFE=!0,t.prev=1,t.next=4,Object(h.a)(this.$store);case 4:t.next=10;break;case 6:t.prev=6,t.t0=t.catch(1),this.loadingPleromaFE=!1,this.$message.error(g.a.t("login.pleromaFELoginFailed"));case 10:this.loadingPleromaFE=!1,this.$message.success(g.a.t("login.pleromaFELoginSucceed")),this.$router.push({path:this.redirect||"/users/index"});case 13:case"end":return t.stop()}},t,this,[[1,6]])}));return function(){return t.apply(this,arguments)}}(),getLoginData:function(){var t=this.loginForm.username.split("@"),e=a()(t,2),n=e[0],o=e[1];return{username:n.trim(),authHost:o?o.trim():window.location.host,password:this.loginForm.password}}}},f=(n("c11S"),n("abDm"),n("KHd+")),w=Object(f.a)(v,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"login-container"},[n("el-form",{ref:"loginForm",staticClass:"login-form",attrs:{model:t.loginForm,"auto-complete":"on","label-position":"left"}},[n("div",{staticClass:"title-container"},[n("h3",{staticClass:"title"},[t._v("\n "+t._s(t.$t("login.title"))+"\n ")])]),t._v(" "),n("el-form-item",{attrs:{prop:"username"}},[n("span",{staticClass:"svg-container"},[n("svg-icon",{attrs:{"icon-class":"user"}})],1),t._v(" "),n("el-input",{attrs:{placeholder:t.$t("login.username"),name:"username",type:"text","auto-complete":"on"},model:{value:t.loginForm.username,callback:function(e){t.$set(t.loginForm,"username",e)},expression:"loginForm.username"}})],1),t._v(" "),n("div",{staticClass:"omit-host-note"},[t._v(t._s(t.$t("login.omitHostname")))]),t._v(" "),n("el-form-item",{attrs:{prop:"password"}},[n("span",{staticClass:"svg-container"},[n("svg-icon",{attrs:{"icon-class":"password"}})],1),t._v(" "),n("el-input",{attrs:{type:t.passwordType,placeholder:t.$t("login.password"),name:"password","auto-complete":"on"},nativeOn:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.handleLogin(e)}},model:{value:t.loginForm.password,callback:function(e){t.$set(t.loginForm,"password",e)},expression:"loginForm.password"}}),t._v(" "),n("span",{staticClass:"show-pwd",on:{click:t.showPwd}},[n("svg-icon",{attrs:{"icon-class":"password"===t.passwordType?"eye":"eye-open"}})],1)],1),t._v(" "),n("el-button",{staticClass:"login-button",attrs:{loading:t.loading,type:"primary"},nativeOn:{click:function(e){return e.preventDefault(),t.handleLogin(e)}}},[t._v("\n "+t._s(t.$t("login.logIn"))+"\n ")]),t._v(" "),t.pleromaFEToken?n("el-button",{staticClass:"login-button",attrs:{loading:t.loadingPleromaFE,type:"primary"},nativeOn:{click:function(e){return e.preventDefault(),t.handlePleromaFELogin(e)}}},[t._v("\n "+t._s(t.$t("login.logInViaPleromaFE"))+"\n ")]):t._e()],1)],1)},[],!1,null,"5bb13616",null);w.options.__file="index.vue";e.default=w.exports}}]); -//# sourceMappingURL=chunk-9a72.41e843cd.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-9a72.41e843cd.js.map b/priv/static/adminfe/static/js/chunk-9a72.41e843cd.js.map deleted file mode 100644 index aede70d0a..000000000 --- a/priv/static/adminfe/static/js/chunk-9a72.41e843cd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/services/pleromaAuth.js","webpack:///./src/views/login/index.vue?4fb3","webpack:///./src/views/login/index.vue?0399","webpack:///./src/views/login/index.vue?7240","webpack:///./src/views/login/index.vue?95e4","webpack:///src/views/login/index.vue","webpack:///./src/views/login/index.vue"],"names":["authenticateWithPleromaFE","_ref","_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default","_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","a","mark","_callee","store","pleromaFEState","token","wrap","_context","prev","next","localforage","getItem","sent","undefined","_","get","Error","dispatch","stop","_x","apply","this","arguments","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_1_id_5bb13616_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","views_loginvue_type_script_lang_js_","name","components","svg-icon","SvgIcon","data","loginForm","username","password","passwordType","loading","loadingPleromaFE","showDialog","redirect","pleromaFEToken","pleromaFEStateKey","watch","$route","handler","route","query","immediate","mounted","_mounted","asyncToGenerator_default","regenerator_default","localforage_default","lodash_default","abrupt","methods","showPwd","handleLogin","_this","loginData","getLoginData","$store","then","$router","push","path","catch","handlePleromaFELogin","_handlePleromaFELogin","_callee2","_context2","Object","pleromaAuth","t0","$message","error","lang","t","success","_this$loginForm$usern","split","_this$loginForm$usern2","slicedToArray_default","authHost","trim","window","location","host","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","ref","attrs","model","auto-complete","label-position","_v","_s","$t","prop","icon-class","placeholder","type","value","callback","$$v","$set","expression","nativeOn","keyup","$event","indexOf","_k","keyCode","key","on","click","preventDefault","_e","options","__file","__webpack_exports__"],"mappings":"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","file":"static/js/chunk-9a72.41e843cd.js","sourcesContent":["import localforage from 'localforage'\nimport _ from 'lodash'\n\nconst pleromaFEStateKey = 'vuex-lz'\n\nexport const authenticateWithPleromaFE = async(store) => {\n const pleromaFEState = await localforage.getItem(pleromaFEStateKey)\n const token = _.get(pleromaFEState, 'oauth.userToken')\n\n if (token === undefined) {\n throw new Error('PleromaFE token not found')\n }\n\n await store.dispatch('LoginByPleromaFE', { token })\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&id=5bb13616&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&id=5bb13616&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login-container\"},[_c('el-form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"model\":_vm.loginForm,\"auto-complete\":\"on\",\"label-position\":\"left\"}},[_c('div',{staticClass:\"title-container\"},[_c('h3',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.title'))+\"\\n \")])]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"prop\":\"username\"}},[_c('span',{staticClass:\"svg-container\"},[_c('svg-icon',{attrs:{\"icon-class\":\"user\"}})],1),_vm._v(\" \"),_c('el-input',{attrs:{\"placeholder\":_vm.$t('login.username'),\"name\":\"username\",\"type\":\"text\",\"auto-complete\":\"on\"},model:{value:(_vm.loginForm.username),callback:function ($$v) {_vm.$set(_vm.loginForm, \"username\", $$v)},expression:\"loginForm.username\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"omit-host-note\"},[_vm._v(_vm._s(_vm.$t('login.omitHostname')))]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"prop\":\"password\"}},[_c('span',{staticClass:\"svg-container\"},[_c('svg-icon',{attrs:{\"icon-class\":\"password\"}})],1),_vm._v(\" \"),_c('el-input',{attrs:{\"type\":_vm.passwordType,\"placeholder\":_vm.$t('login.password'),\"name\":\"password\",\"auto-complete\":\"on\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.handleLogin($event)}},model:{value:(_vm.loginForm.password),callback:function ($$v) {_vm.$set(_vm.loginForm, \"password\", $$v)},expression:\"loginForm.password\"}}),_vm._v(\" \"),_c('span',{staticClass:\"show-pwd\",on:{\"click\":_vm.showPwd}},[_c('svg-icon',{attrs:{\"icon-class\":_vm.passwordType === 'password' ? 'eye' : 'eye-open'}})],1)],1),_vm._v(\" \"),_c('el-button',{staticClass:\"login-button\",attrs:{\"loading\":_vm.loading,\"type\":\"primary\"},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.handleLogin($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.logIn'))+\"\\n \")]),_vm._v(\" \"),(_vm.pleromaFEToken)?_c('el-button',{staticClass:\"login-button\",attrs:{\"loading\":_vm.loadingPleromaFE,\"type\":\"primary\"},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.handlePleromaFELogin($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.logInViaPleromaFE'))+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=5bb13616&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\nimport style1 from \"./index.vue?vue&type=style&index=1&id=5bb13616&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bb13616\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-9d55.7af22f45.js b/priv/static/adminfe/static/js/chunk-9d55.7af22f45.js new file mode 100644 index 000000000..89d35af79 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-9d55.7af22f45.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-9d55"],{"+2nY":function(t,e,i){"use strict";var n=i("ld6V");i.n(n).a},"+qaP":function(t,e,i){"use strict";var n=i("60OA");i.n(n).a},"0FjT":function(t,e,i){"use strict";var n=i("dnRK");i.n(n).a},"2q6O":function(t,e,i){"use strict";var n=i("Scsy");i.n(n).a},"3IoU":function(t,e,i){"use strict";var n=i("6V7o");i.n(n).a},"3YZA":function(t,e,i){},"3yoa":function(t,e,i){"use strict";var n=i("Vk/j");i.n(n).a},"4NUT":function(t,e,i){},"4b9x":function(t,e,i){"use strict";var n=i("wgcy");i.n(n).a},"60OA":function(t,e,i){},"6V7o":function(t,e,i){},"77pt":function(t,e,i){},"9Hof":function(t,e,i){"use strict";var n=i("ncj/");i.n(n).a},"9p49":function(t,e,i){},"9y8C":function(t,e,i){"use strict";var n=i("rKzx");i.n(n).a},DPt0:function(t,e,i){"use strict";var n=i("x6RV");i.n(n).a},EXm2:function(t,e,i){},Ezi3:function(t,e,i){"use strict";var n=i("MNl6");i.n(n).a},FCne:function(t,e,i){"use strict";var n=i("OCuP");i.n(n).a},"J7+w":function(t,e,i){"use strict";var n=i("fyIw");i.n(n).a},JqY8:function(t,e,i){},KFE3:function(t,e,i){"use strict";var n=i("mSK5");i.n(n).a},MNl6:function(t,e,i){},NiUD:function(t,e,i){},OCuP:function(t,e,i){},OQQp:function(t,e,i){"use strict";var n=i("pPJ2");i.n(n).a},PYLh:function(t,e,i){},PygS:function(t,e,i){"use strict";var n=i("TtMh");i.n(n).a},RSJF:function(t,e,i){},Scsy:function(t,e,i){},TOIk:function(t,e,i){},TRR9:function(t,e,i){},TtMh:function(t,e,i){},TudB:function(t,e,i){},"UbP/":function(t,e,i){},UdS4:function(t,e,i){"use strict";var n=i("WwJU");i.n(n).a},UqcT:function(t,e,i){"use strict";var n=i("RSJF");i.n(n).a},UtFC:function(t,e,i){},"Vk/j":function(t,e,i){},"WvM+":function(t,e,i){"use strict";var n=i("TRR9");i.n(n).a},WwJU:function(t,e,i){},YKHE:function(t,e,i){},YcIK:function(t,e,i){"use strict";i.r(e);var n=i("o0o1"),s=i.n(n),a=i("yXPU"),r=i.n(a),o=i("mSNy"),l=i("lSNA"),u=i.n(l),c=i("L2JU"),p=i("RIqP"),d=i.n(p),g=i("h74u");function b(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),i.push.apply(i,n)}return i}function h(t){for(var e=1;e0){var r=Object(g.e)(t,a,e,i,this.parents.reverse(),this.settings,this.updatedSettings),o=r.valueForState,l=r.valueForUpdatedSettings,u=r.setting;this.$store.dispatch("UpdateSettings",{group:e,key:i,input:u.key,value:l,type:u.type}),this.$store.dispatch("UpdateState",{group:e,key:i,input:u.key,value:o})}else this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:a,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t})},wrapUpdatedSettings:function(t,e,i){return"map"===i?t.reduce(function(t,e){return h(h({},t),{},u()({},Object.keys(e)[0],Object.values(e)[0].value))},{}):t.reduce(function(t,e){return h(h({},t),{},u()({},Object.keys(e)[0],["list",Object.values(e)[0].value]))},{})}}},m=(i("nKzF"),i("KHd+")),v=Object(m.a)(f,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"editable-keyword-container"},[":crontab"===t.setting.key?i("div",{staticClass:"crontab",attrs:{"data-search":t.setting.key}},t._l(t.data,function(e){return i("el-form-item",{key:t.getId(e),staticClass:"crontab-container",attrs:{label:t.getCrontabWorkerLabel(e)}},[i("el-input",{staticClass:"input setting-input",attrs:{value:t.getValue(e),placeholder:t.getSuggestion(e)||null},on:{input:function(i){return t.updateCrontab(i,"value",e)}}})],1)}),1):t.editableKeywordWithInteger?i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[t._l(t.data,function(e){return i("div",{key:t.getId(e),staticClass:"setting-input"},[i("el-input",{staticClass:"name-input",attrs:{value:t.getKey(e),placeholder:"key"},on:{input:function(i){return t.parseEditableKeyword(i,"key",e)}}}),t._v(" :\n "),i("el-input-number",{staticClass:"value-input",attrs:{value:t.getValue(e),min:0,size:"large"},on:{change:function(i){return t.parseEditableKeyword(i,"value",e)}}}),t._v(" "),i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(i){return t.deleteEditableKeywordRow(e)}}})],1)}),t._v(" "),i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:t.addRowToEditableKeyword}})],2):t.editableKeywordWithString?i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[t._l(t.data,function(e){return i("div",{key:t.getId(e),staticClass:"setting-input"},[i("el-input",{staticClass:"name-input",attrs:{value:t.getKey(e),placeholder:t.keyPlaceholder},on:{input:function(i){return t.parseEditableKeyword(i,"key",e)}}}),t._v(" :\n "),i("el-input",{staticClass:"value-input",attrs:{value:t.getValue(e),placeholder:t.valuePlaceholder},on:{input:function(i){return t.parseEditableKeyword(i,"value",e)}}}),t._v(" "),i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(i){return t.deleteEditableKeywordRow(e)}}})],1)}),t._v(" "),i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:t.addRowToEditableKeyword}})],2):t.editableKeywordWithSelect?i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[t._l(t.data,function(e){return i("div",{key:t.getId(e),staticClass:"setting-input"},[i("el-input",{staticClass:"name-input",attrs:{value:t.getKey(e),placeholder:"key"},on:{input:function(i){return t.parseEditableKeyword(i,"key",e)}}}),t._v(" :\n "),i("el-select",{staticClass:"value-input",attrs:{value:t.getValue(e),multiple:"",filterable:"","allow-create":""},on:{change:function(i){return t.parseEditableKeyword(i,"value",e)}}}),t._v(" "),i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(i){return t.deleteEditableKeywordRow(e)}}})],1)}),t._v(" "),i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:t.addRowToEditableKeyword}})],2):t._e()])},[],!1,null,null,null);v.options.__file="EditableKeywordInput.vue";var y=v.exports,_=i("zUJn"),k=i("8j27"),O={name:"EditorInput",components:{EditorContent:_.b,EditorMenuBar:_.c},props:{value:{type:String,default:""},name:{type:String,default:""}},data:function(){return{editor:null,emitAfterOnUpdate:!1}},computed:{isMobile:function(){return"mobile"===this.$store.state.app.device},labelPosition:function(){return this.isMobile?"top":"right"},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"}},watch:{value:function(t){this.emitAfterOnUpdate?this.emitAfterOnUpdate=!1:this.editor&&this.editor.setContent(t)}},beforeDestroy:function(){this.editor&&this.editor.destroy()},mounted:function(){var t=this;this.editor=new _.a({extensions:[new k.a,new k.b,new k.c,new k.d,new k.e({levels:[1,2,3]}),new k.f,new k.g,new k.h,new k.i,new k.j,new k.k,new k.l],content:this.value,onUpdate:function(e){var i=e.getHTML;t.$emit("input",i())}}),this.editor.setContent(this.value)},methods:{removeInstanceDoc:function(){var t=this;return r()(s.a.mark(function e(){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$store.dispatch("RemoveInstanceDocument",t.name);case 2:t.editor.setContent(t.value);case 3:case"end":return e.stop()}},e)}))()}}},P=(i("3yoa"),Object(m.a)(O,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("el-form",{attrs:{"label-position":t.labelPosition,"label-width":t.labelWidth}},[i("el-form-item",{staticClass:"editor-form-item",attrs:{"data-search":"instance-panel"===t.name?":instance_panel":":terms_of_services"}},[i("span",{attrs:{slot:"label"},slot:"label"},[t._v("\n "+t._s("instance-panel"===t.name?t.$t("settings.instancePanel"):t.$t("settings.termsOfServices"))+"\n "),i("el-tooltip",{attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticClass:"delete-setting-button",attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:t.removeInstanceDoc}})],1)],1),t._v(" "),i("div",{staticClass:"editor"},[i("editor-menu-bar",{attrs:{editor:t.editor},scopedSlots:t._u([{key:"default",fn:function(e){var n=e.commands,s=e.isActive;return[i("div",{staticClass:"menubar"},[i("button",{staticClass:"menubar__button",class:{"is-active":s.bold()},on:{click:n.bold}},[i("svg-icon",{attrs:{"icon-class":"tiptap-bold"}})],1),t._v(" "),i("button",{staticClass:"menubar__button",class:{"is-active":s.italic()},on:{click:n.italic}},[i("svg-icon",{attrs:{"icon-class":"tiptap-italic"}})],1),t._v(" "),i("button",{staticClass:"menubar__button",class:{"is-active":s.underline()},on:{click:n.underline}},[i("svg-icon",{attrs:{"icon-class":"tiptap-underline"}})],1),t._v(" "),i("button",{staticClass:"menubar__button",class:{"is-active":s.heading({level:1})},on:{click:function(t){return n.heading({level:1})}}},[t._v("\n H1\n ")]),t._v(" "),i("button",{staticClass:"menubar__button",class:{"is-active":s.heading({level:2})},on:{click:function(t){return n.heading({level:2})}}},[t._v("\n H2\n ")]),t._v(" "),i("button",{staticClass:"menubar__button",class:{"is-active":s.heading({level:3})},on:{click:function(t){return n.heading({level:3})}}},[t._v("\n H3\n ")]),t._v(" "),i("button",{staticClass:"menubar__button",class:{"is-active":s.bullet_list()},on:{click:n.bullet_list}},[i("svg-icon",{attrs:{"icon-class":"tiptap-ul"}})],1),t._v(" "),i("button",{staticClass:"menubar__button",class:{"is-active":s.ordered_list()},on:{click:n.ordered_list}},[i("svg-icon",{attrs:{"icon-class":"tiptap-ol"}})],1),t._v(" "),i("button",{staticClass:"menubar__button",class:{"is-active":s.blockquote()},on:{click:n.blockquote}},[i("svg-icon",{attrs:{"icon-class":"tiptap-quote"}})],1),t._v(" "),i("button",{staticClass:"menubar__button",class:{"is-active":s.link()},on:{click:n.link}},[i("svg-icon",{attrs:{"icon-class":"tiptap-link"}})],1),t._v(" "),i("button",{staticClass:"menubar__button",class:{"is-active":s.code_block()},on:{click:n.code_block}},[i("svg-icon",{attrs:{"icon-class":"tiptap-code"}})],1),t._v(" "),i("button",{staticClass:"menubar__button",on:{click:n.horizontal_rule}},[i("svg-icon",{attrs:{"icon-class":"tiptap-hr"}})],1),t._v(" "),i("button",{staticClass:"menubar__button",on:{click:n.undo}},[i("svg-icon",{attrs:{"icon-class":"tiptap-undo"}})],1),t._v(" "),i("button",{staticClass:"menubar__button",on:{click:n.redo}},[i("svg-icon",{attrs:{"icon-class":"tiptap-redo"}})],1)])]}}])}),t._v(" "),i("editor-content",{staticClass:"editor__content",attrs:{editor:t.editor}})],1)])],1)},[],!1,null,null,null));P.options.__file="EditorInput.vue";var w=P.exports;function S(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),i.push.apply(i,n)}return i}function j(t){for(var e=1;e0){var r=Object(g.e)(t,a,e,i,this.parents.reverse(),this.settings,this.updatedSettings),o=r.valueForState,l=r.valueForUpdatedSettings,u=r.setting;this.$store.dispatch("UpdateSettings",{group:e,key:i,input:u.key,value:l,type:u.type}),this.$store.dispatch("UpdateState",{group:e,key:i,input:u.key,value:o})}else this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:a,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t})}}},it=(i("mGnP"),Object(m.a)(et,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"proxy-url-input",attrs:{"data-search":t.setting.key||t.setting.group}},[i("el-input",{staticClass:"proxy-url-host-input",attrs:{value:t.proxyUrlData.host,placeholder:"host (e.g. localhost or 127.0.0.1)"},on:{input:function(e){return t.updateProxyUrl(e,"host")}}}),t._v(" "),t.isDesktop?i("span",[t._v(":")]):t._e(),t._v(" "),i("el-input",{staticClass:"proxy-url-value-input",attrs:{value:t.proxyUrlData.port,placeholder:"port (e.g 9020 or 3090)"},on:{input:function(e){return t.updateProxyUrl(e,"port")}}}),t._v(" "),i("div",{staticClass:"socks5-checkbox-container"},[i("el-checkbox",{attrs:{value:t.proxyUrlData.socks5},on:{change:function(e){return t.updateProxyUrl(e,"socks5")}}}),t._v(" "),i("span",{staticClass:"socks5-checkbox"},[t._v("Socks5")])],1)],1)},[],!1,null,null,null));it.options.__file="ProxyUrlInput.vue";var nt=it.exports,st={name:"PruneInput",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{prune:{get:function(){return this.data[0]},set:function(t){this.updateRadioInput(t)}}},methods:{updateIntInput:function(t,e){this.updateSetting([e,t],this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)},updateSetting:function(t,e,i,n,s){var a=t.includes(":disabled")?":disabled":t;this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:a,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t})},updateRadioInput:function(t){var e=":disabled"===t?[t]:[t,0];this.updateSetting(e,this.settingGroup.group,this.settingGroup.key,this.setting.key,this.setting.type)}}},at=(i("Ezi3"),Object(m.a)(st,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{attrs:{"data-search":t.setting.key||t.setting.group}},[i("el-radio-group",{staticClass:"prune-options",model:{value:t.prune,callback:function(e){t.prune=e},expression:"prune"}},[i("el-radio",{attrs:{label:":disabled"}},[t._v("Disabled")]),t._v(" "),i("el-radio",{attrs:{label:":maxlen"}},[t._v("Limit-based")]),t._v(" "),i("el-radio",{attrs:{label:":maxage"}},[t._v("Time-based")])],1),t._v(" "),":maxlen"===t.prune?i("el-form-item",{attrs:{label:"Max length","label-width":"100","label-position":"left"}},[i("el-input-number",{staticClass:"top-margin",attrs:{value:t.data[1],min:0,placeholder:"1500",size:"large"},on:{change:function(e){return t.updateIntInput(e,":maxlen")}}})],1):t._e(),t._v(" "),":maxage"===t.prune?i("el-form-item",{attrs:{label:"Max age","label-width":"100","label-position":"left"}},[i("el-input-number",{staticClass:"top-margin",attrs:{value:t.data[1],min:0,placeholder:"3600",size:"large"},on:{change:function(e){return t.updateIntInput(e,":maxage")}}})],1):t._e()],1)},[],!1,null,null,null));at.options.__file="PruneInput.vue";var rt=at.exports,ot={name:"RateLimitInput",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},rateLimitAllUsers:function(){return this.data[this.setting.key]?this.data[this.setting.key]:["",""]},rateLimitAuthUsers:function(){return!(!this.data[this.setting.key]||!Array.isArray(this.data[this.setting.key][0]))&&this.data[this.setting.key][1]},rateLimitUnauthUsers:function(){return!(!this.data[this.setting.key]||!Array.isArray(this.data[this.setting.key][1]))&&this.data[this.setting.key][0]}},methods:{parseRateLimiter:function(t,e,i,n,s){var a;"oneLimit"===n?a="scale"===i?[t,s[1]]:[s[0],t]:"unauthUsersLimit"===n?a="scale"===i?[[t,s[0][1]],[s[1][0],s[1][1]]]:[[s[0][0],t],[s[1][0],s[1][1]]]:"authUserslimit"===n&&(a="scale"===i?[[s[0][0],s[0][1]],[t,s[1][1]]]:[[s[0][0],s[0][1]],[s[1][0],t]]),this.updateSetting(a,this.settingGroup.group,this.settingGroup.key,e,this.setting.type)},toggleLimits:function(t,e){this.updateSetting(t,this.settingGroup.group,this.settingGroup.key,e)},updateSetting:function(t,e,i,n,s){var a=Array.isArray(t[0])?t.map(function(t){return{tuple:t}}):{tuple:t};this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:a,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t})}}},lt=(i("irif"),Object(m.a)(ot,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"rate-limit-container",attrs:{"data-search":t.setting.key||t.setting.group}},[t.rateLimitAuthUsers?t._e():i("div",[i("el-input-number",{staticClass:"scale-input",attrs:{value:t.rateLimitAllUsers[0],controls:!1,placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"scale","oneLimit",t.rateLimitAllUsers)}}}),t._v(" "),i("span",[t._v(":")]),t._v(" "),i("el-input-number",{staticClass:"limit-input",attrs:{value:t.rateLimitAllUsers[1],controls:!1,placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"limit","oneLimit",t.rateLimitAllUsers)}}}),t._v(" "),i("div",{staticClass:"limit-button-container"},[i("el-button",{attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-plus",circle:""},on:{click:function(e){return t.toggleLimits([["",""],["",""]],t.setting.key)}}}),t._v(" "),i("p",{staticClass:"expl limit-expl"},[t._v("Set different limits for unauthenticated and authenticated users")])],1)],1),t._v(" "),t.rateLimitAuthUsers?i("div",[i("el-form-item",{staticClass:"rate-limit"},[i("div",{staticClass:"rate-limit-label-container"},[i("span",{staticClass:"rate-limit-label"},[t._v("\n Unauthenticated users:\n ")])]),t._v(" "),i("div",{staticClass:"rate-limit-content"},[i("el-input-number",{staticClass:"scale-input",attrs:{value:t.rateLimitUnauthUsers[0],controls:!1,placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"scale","unauthUsersLimit",[t.rateLimitUnauthUsers,t.rateLimitAuthUsers])}}}),t._v(" "),i("span",[t._v(":")]),t._v(" "),i("el-input-number",{staticClass:"limit-input",attrs:{value:t.rateLimitUnauthUsers[1],controls:!1,placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"limit","unauthUsersLimit",[t.rateLimitUnauthUsers,t.rateLimitAuthUsers])}}})],1)]),t._v(" "),i("el-form-item",{staticClass:"rate-limit"},[i("div",{staticClass:"rate-limit-label-container"},[i("span",{staticClass:"rate-limit-label"},[t._v("\n Authenticated users:\n ")])]),t._v(" "),i("div",{staticClass:"rate-limit-content"},[i("el-input-number",{staticClass:"scale-input",attrs:{value:t.rateLimitAuthUsers[0],controls:!1,placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"scale","authUserslimit",[t.rateLimitUnauthUsers,t.rateLimitAuthUsers])}}}),t._v(" "),i("span",[t._v(":")]),t._v(" "),i("el-input-number",{staticClass:"limit-input",attrs:{value:t.rateLimitAuthUsers[1],controls:!1,placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,t.setting.key,"limit","authUserslimit",[t.rateLimitUnauthUsers,t.rateLimitAuthUsers])}}})],1)]),t._v(" "),i("div",{staticClass:"limit-button-container"},[i("el-button",{staticClass:"icon-minus-button",attrs:{size:t.isDesktop?"medium":"mini",icon:"el-icon-minus",circle:""},on:{click:function(e){return t.toggleLimits(["",""],t.setting.key)}}}),t._v(" "),i("p",{staticClass:"expl limit-expl"},[t._v("Set limit for all users")])],1)],1):t._e()])},[],!1,null,null,null));lt.options.__file="RateLimitInput.vue";var ut=lt.exports,ct={name:"RegInvitesInput",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},methods:{updateSetting:function(t,e,i,n,s){var a=this,r=this.$store.state.settings.settings[e][i][":registrations_open"],o=this.$store.state.settings.settings[e][i][":invites_enabled"];":registrations_open"===n&&t&&o?this.$confirm("Enabling this setting requires invites to be disabled. Are you sure you want to open registrations?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){a.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:t,type:s}),a.$store.dispatch("UpdateSettings",{group:e,key:i,input:":invites_enabled",value:!1,type:s}),a.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t}),a.$store.dispatch("UpdateState",{group:e,key:i,input:":invites_enabled",value:!1})}):":invites_enabled"===n&&t&&r?this.$confirm("Enabling this setting requires registrations to be disabled. Are you sure you want to enable invitations?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){a.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:t,type:s}),a.$store.dispatch("UpdateSettings",{group:e,key:i,input:":registrations_open",value:!1,type:s}),a.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t}),a.$store.dispatch("UpdateState",{group:e,key:i,input:":registrations_open",value:!1})}):(this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:t,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t}))}}},pt=(i("9Hof"),Object(m.a)(ct,function(){var t=this,e=t.$createElement;return(t._self._c||e)("el-switch",{staticClass:"switch-input",attrs:{value:t.data[t.setting.key],"data-search":t.setting.key},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}})},[],!1,null,null,null));pt.options.__file="RegInvitesInput.vue";var dt=pt.exports,gt={name:"SelectInputWithReducedLabels",props:{data:{type:[Array,Object],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},computed:{inputValue:function(){return"Pleroma.Web.Auth.Authenticator"===this.setting.key?this.data.value:":policies"===this.setting.key&&"string"==typeof this.data[this.setting.key]?[this.data[this.setting.key]]:this.data[this.setting.key]},isMobile:function(){return"mobile"===this.$store.state.app.device}},methods:{options:function(t){var e=this,i={":policies":"Pleroma.Web.ActivityPub.MRF.","Pleroma.Web.Auth.Authenticator":"Pleroma.Web.Auth.",":method":"Pleroma.Captcha.",":adapter":"Swoosh.Adapters.",":providers":"Pleroma.Web.Metadata.Providers.",":parsers":"Pleroma.Web.RichMedia.Parsers.",":ttl_setters":"Pleroma.Web.RichMedia.Parser.",":scrub_policy":"Pleroma.HTML.",":federation_publisher_modules":"Pleroma.Web.",":uploader":"Pleroma.Uploaders.",":filters":"Pleroma.Upload.Filter."};return t.map(function(t){return{value:t,label:t.split(i[e.setting.key])[1]?t.split(i[e.setting.key])[1]:t}})},renderMultipleSelect:function(t){return Array.isArray(t)&&":backends"!==this.setting.key&&":args"!==this.setting.key&&(t.includes("module")||t.includes("list")&&t.includes("string")||t.includes("list")&&t.includes("atom")||t.includes("regex")&&t.includes("string")||":args"===this.setting.key)},updateSetting:function(t,e,i,n,s){var a=Object(g.b)(t);this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:a,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:a})}}},bt=(i("3IoU"),Object(m.a)(gt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"input"},[t.renderMultipleSelect(t.setting.type)?i("el-select",{staticClass:"input",attrs:{value:t.inputValue,"data-search":t.setting.key,multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}},t._l(t.options(t.setting.suggestions),function(t,e){return i("el-option",{key:e,attrs:{value:t.value,label:t.label}})}),1):t._e(),t._v(" "),"module"===t.setting.type||t.setting.type.includes("atom")&&t.setting.type.includes("dropdown")?i("el-select",{staticClass:"input",attrs:{value:!1===t.inputValue?"false":t.inputValue,"data-search":t.setting.key||t.setting.group,clearable:""},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}},t._l(t.options(t.setting.suggestions),function(t,e){return i("el-option",{key:e,attrs:{value:t.value,label:t.label}})}),1):t._e()],1)},[],!1,null,null,null));bt.options.__file="SelectInputWithReducedLabels.vue";var ht=bt.exports;function ft(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),i.push.apply(i,n)}return i}function mt(t){for(var e=1;e0){var r=Object(g.e)(t,a,e,i,this.parents.reverse(),this.settings,this.updatedSettings),o=r.valueForState,l=r.valueForUpdatedSettings,u=r.setting;this.$store.dispatch("UpdateSettings",{group:e,key:i,input:u.key,value:l,type:u.type}),this.$store.dispatch("UpdateState",{group:e,key:i,input:u.key,value:o})}else this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:a,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t})}}},yt=(i("OQQp"),Object(m.a)(vt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"sender-input",attrs:{"data-search":t.setting.key||t.setting.group}},[i("el-input",{staticClass:"email-address-input",attrs:{value:t.sender.email,placeholder:"email address"},on:{input:function(e){return t.updateSender(e,"email")}}}),t._v(" "),i("el-input",{staticClass:"nickname-input",attrs:{value:t.sender.nickname,placeholder:"nickname"},on:{input:function(e){return t.updateSender(e,"nickname")}}})],1)},[],!1,null,null,null));yt.options.__file="SenderInput.vue";var _t=yt.exports,kt={name:"SpecificMultipleSelect",props:{data:{type:[Object,Array],default:function(){return{}}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}}},methods:{updateSetting:function(t,e,i,n,s){this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:t,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t})}}},Ot=(i("UqcT"),Object(m.a)(kt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"multiple-select-container"},[":backends"===t.setting.key?i("el-select",{staticClass:"input",attrs:{value:t.data.value,"data-search":t.setting.key||t.setting.group,multiple:""},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}},[i("el-option",{attrs:{value:":console",label:"console"}}),t._v(" "),i("el-option",{attrs:{value:":ex_syslogger",label:"ExSyslogger"}}),t._v(" "),i("el-option",{attrs:{value:"Quack.Logger",label:"Quack.Logger"}})],1):t._e(),t._v(" "),":args"===t.setting.key?i("el-select",{staticClass:"input",attrs:{value:t.data[t.setting.key],"data-search":t.setting.key||t.setting.group,multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,t.settingGroup.group,t.settingGroup.key,t.setting.key,t.setting.type)}}},[i("el-option",{attrs:{value:"strip"}}),t._v(" "),i("el-option",{attrs:{value:"auto-orient"}}),t._v(" "),i("el-option",{attrs:{value:'{"implode", "1"}'}})],1):t._e()],1)},[],!1,null,null,null));Ot.options.__file="SpecificMultipleSelect.vue";var Pt=Ot.exports,wt=i("4MG8"),St=i.n(wt),jt={name:"Inputs",components:{EditableKeywordInput:y,IconsInput:x,ImageUploadInput:F,LinkFormatterInput:K,MascotsInput:X,ProxyUrlInput:nt,PruneInput:rt,RateLimitInput:ut,RegInvitesInput:dt,SelectInputWithReducedLabels:ht,SenderInput:_t,SpecificMultipleSelect:Pt},props:{customLabelWidth:{type:String,default:function(){return this.labelWidth},required:!1},data:{type:[Object,Array],default:function(){return{}}},labelClass:{type:String,default:function(){return"label"},required:!1},margin:{type:Number,default:function(){return 0},required:!1},nested:{type:Boolean,default:function(){return!1}},setting:{type:Object,default:function(){return{}}},settingGroup:{type:Object,default:function(){return{}}},settingParent:{type:Array,default:function(){return[]},required:!1}},computed:{booleanCombinedInput:function(){return Array.isArray(this.setting.type)&&this.setting.type.includes("boolean")},canBeDeleted:function(){var t=this.settingGroup,e=t.group,i=t.key;return U.a.get(this.$store.state.settings.db,[e,i])&&this.$store.state.settings.db[e][i].includes(this.setting.key)},iconsData:function(){return Array.isArray(this.data)?this.data:[]},inputValue:function(){return[":esshd",":cors_plug",":quack",":tesla",":swoosh"].includes(this.settingGroup.group)&&this.data[this.setting.key]?"atom"===this.setting.type&&":"===this.data[this.setting.key].value[0]?this.data[this.setting.key].value.substr(1):this.data[this.setting.key].value:":logger"===this.settingGroup.group&&":backends"===this.setting.key||"Pleroma.Web.Auth.Authenticator"===this.setting.key||":admin_token"===this.setting.key?this.data.value:":mime"===this.settingGroup.group&&":types"===this.settingParent[0].key?this.data.value?this.data.value[this.setting.key]:[]:"atom"===this.setting.type?this.data[this.setting.key]&&":"===this.data[this.setting.key][0]?this.data[this.setting.key].substr(1):this.data[this.setting.key]:Array.isArray(this.setting.type)&&this.setting.type.find(function(t){return Array.isArray(t)&&t.includes("list")})&&"string"==typeof this.data[this.setting.key]?[this.data[this.setting.key]]:this.data[this.setting.key]},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"120px":this.isTablet?"200px":"280px"},keywordData:function(){return this.settingParent.length>0||Array.isArray(this.setting.type)&&this.setting.type.includes("tuple")&&this.setting.type.includes("list")?Array.isArray(this.data[this.setting.key])?this.data[this.setting.key]:[]:Array.isArray(this.data)?this.data:[]},reducedSelects:function(){return[":filters",":uploader",":federation_publisher_modules",":scrub_policy",":ttl_setters",":parsers",":providers",":method",":policies","Pleroma.Web.Auth.Authenticator"].includes(this.setting.key)||"Pleroma.Emails.Mailer"===this.settingGroup.key&&":adapter"===this.setting.key},settings:function(){return this.$store.state.settings.settings},updatedSettings:function(){return this.$store.state.settings.updatedSettings},isImageUrl:function(){return Array.isArray(this.setting.type)&&this.setting.type.includes("image")}},methods:{editableKeyword:function(t,e){return Array.isArray(e)&&(e.includes("map")&&e.includes("string")||e.includes("map")&&-1!==e.findIndex(function(t){return t.includes("list")&&t.includes("string")})||e.includes("keyword")&&e.includes("integer")||e.includes("keyword")&&e.includes("string")||e.includes("tuple")&&e.includes("list")||e.includes("keyword")&&-1!==e.findIndex(function(t){return t.includes("list")&&t.includes("string")}))},getFormattedDescription:function(t){return St()(t)},processNestedData:function(t,e,i,n){var s=Object(g.e)(t,t,e,i,n.reverse(),this.settings,this.updatedSettings),a=s.valueForState,r=s.valueForUpdatedSettings,o=s.setting;this.$store.dispatch("UpdateSettings",{group:e,key:i,input:o.key,value:r,type:o.type}),this.$store.dispatch("UpdateState",{group:e,key:i,input:o.key,value:a})},removeSetting:function(){var t=this;return r()(s.a.mark(function e(){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:t.$confirm(t.$t("settings.removeSettingConfirmation"),{confirmButtonText:t.$t("users.ok"),cancelButtonText:t.$t("users.cancel"),type:"warning"}).then(r()(s.a.mark(function e(){var i;return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.settingGroup.key?[{group:t.settingGroup.group,key:t.settingGroup.key,delete:!0,subkeys:[t.setting.key]}]:[{group:t.settingGroup.group,key:t.setting.key,delete:!0}],e.prev=1,e.next=4,t.$store.dispatch("RemoveSetting",i);case 4:e.next=9;break;case 6:return e.prev=6,e.t0=e.catch(1),e.abrupt("return");case 9:t.$message({type:"success",message:o.a.t("settings.successfullyRemoved")});case 10:case"end":return e.stop()}},e,null,[[1,6]])}))).catch(function(){t.$message({type:"info",message:t.$t("users.canceled")})});case 1:case"end":return e.stop()}},e)}))()},renderMultipleSelect:function(t){return!this.reducedSelects&&Array.isArray(t)&&":backends"!==this.setting.key&&":args"!==this.setting.key&&(t.includes("module")||t.includes("list")&&t.includes("string")||t.includes("list")&&t.includes("atom")||!t.includes("keyword")&&t.includes("regex")&&t.includes("string"))},renderSingleSelect:function(t){return!this.reducedSelects&&("module"===t||Array.isArray(t)&&t.includes("atom")&&t.includes("dropdown"))},senderInput:function(t){var e=t.key,i=t.type;return Array.isArray(i)&&i.includes("string")&&i.includes("tuple")&&":sender"===e},update:function(t,e,i,n,s,a,r){var o=this.renderSingleSelect(a)?Object(g.b)(t):t;r?this.processNestedData(o,e,i,n):this.updateSetting(o,e,i,s,a)},updateSetting:function(t,e,i,n,s){this.$store.dispatch("UpdateSettings",{group:e,key:i,input:n,value:t,type:s}),this.$store.dispatch("UpdateState",{group:e,key:i,input:n,value:t})}}},Dt=(i("y7KD"),Object(m.a)(jt,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"input-container"},["keyword"===t.setting.type?i("div",{staticClass:"keyword-container"},[i("el-form-item",{class:t.labelClass,style:"margin-left:"+t.margin+"px;margin-bottom:0",attrs:{"label-width":t.customLabelWidth,"data-search":t.setting.key||t.setting.group}},[i("span",{attrs:{slot:"label"},slot:"label"},[t._v("\n "+t._s(t.setting.label)+"\n "),t.canBeDeleted&&t.isDesktop?i("el-tooltip",{attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticClass:"delete-setting-button",attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:t.removeSetting}})],1):t._e()],1)]),t._v(" "),t._l(t.setting.children,function(e){return i("el-form-item",{key:e.key},[i("inputs",{attrs:{"setting-group":t.settingGroup,"setting-parent":t.settingParent.concat([e]),setting:e,data:t.data[t.setting.key],"custom-label-width":t.isMobile?"100px":"120px","label-class":"keyword"===e.type?"center-label":"",margin:t.isDesktop?t.margin+15:t.margin+8,nested:!0}})],1)})],2):t._e(),t._v(" "),"keyword"!==t.setting.type?i("el-form-item",{class:t.labelClass,style:t.isDesktop?"":"margin-left:"+t.margin+"px",attrs:{"label-width":t.customLabelWidth}},[i("span",{attrs:{slot:"label"},slot:"label"},[t._v("\n "+t._s(t.setting.label)+"\n "),t.canBeDeleted&&(t.isDesktop||t.isMobile)?i("el-tooltip",{attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticClass:"delete-setting-button",attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:t.removeSetting}})],1):t._e()],1),t._v(" "),i("div",{staticClass:"input-row"},[t.isImageUrl?i("image-upload-input",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting,"input-value":t.inputValue},on:{change:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}}):"string"===t.setting.type||Array.isArray(t.setting.type)&&t.setting.type.includes("string")&&t.setting.type.includes("atom")?i("el-input",{staticClass:"input",attrs:{value:t.inputValue,placeholder:t.setting.suggestions?t.setting.suggestions[0]:null,"data-search":t.setting.key||t.setting.group},on:{input:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}}):t._e(),t._v(" "),"boolean"!==t.setting.type||[":registrations_open",":invites_enabled"].includes(t.setting.key)?t._e():i("el-switch",{staticClass:"switch-input",attrs:{value:t.inputValue,"data-search":t.setting.key||t.setting.group},on:{change:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}}),t._v(" "),"integer"===t.setting.type?i("el-input-number",{attrs:{value:null===t.inputValue?void 0:t.inputValue,placeholder:t.setting.suggestions?t.setting.suggestions[0].toString():null,min:0,size:t.isDesktop?"large":"medium","data-search":t.setting.key||t.setting.group},on:{change:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}}):t._e(),t._v(" "),t.renderSingleSelect(t.setting.type)?i("el-select",{staticClass:"input",attrs:{value:!1===t.inputValue?"false":t.inputValue,"data-search":t.setting.key||t.setting.group,clearable:""},on:{change:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}},t._l(t.setting.suggestions,function(t,e){return i("el-option",{key:e,attrs:{value:t}})}),1):t._e(),t._v(" "),t.renderMultipleSelect(t.setting.type)?i("el-select",{staticClass:"input",attrs:{value:t.inputValue,"data-search":t.setting.key||t.setting.group,multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}},t._l(t.setting.suggestions,function(t,e){return i("el-option",{key:e,attrs:{value:t}})}),1):t._e(),t._v(" "),":ip"===t.setting.key?i("el-input",{staticClass:"input",attrs:{value:t.inputValue,"data-search":t.setting.key||t.setting.group,placeholder:"xxx.xxx.xxx.xx"},on:{input:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}}):t._e(),t._v(" "),"atom"===t.setting.type?i("el-input",{staticClass:"input",attrs:{value:t.inputValue,placeholder:t.setting.suggestions&&t.setting.suggestions[0]?t.setting.suggestions[0].substr(1):"","data-search":t.setting.key||t.setting.group},on:{input:function(e){return t.update(e,t.settingGroup.group,t.settingGroup.key,t.settingParent,t.setting.key,t.setting.type,t.nested)}}},[i("template",{slot:"prepend"},[t._v(":")])],2):t._e(),t._v(" "),t.editableKeyword(t.setting.key,t.setting.type)?i("editable-keyword-input",{attrs:{data:t.keywordData,"setting-group":t.settingGroup,setting:t.setting,parents:t.settingParent}}):t._e(),t._v(" "),":icons"===t.setting.key?i("icons-input",{attrs:{data:t.iconsData,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),t.booleanCombinedInput?i("link-formatter-input",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":mascots"===t.setting.key?i("mascots-input",{attrs:{data:t.keywordData,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":proxy_url"===t.setting.key?i("proxy-url-input",{attrs:{data:t.data[t.setting.key],"setting-group":t.settingGroup,setting:t.setting,parents:t.settingParent}}):t._e(),t._v(" "),":prune"===t.setting.key?i("prune-input",{attrs:{data:t.data[t.setting.key],"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":rate_limit"===t.settingGroup.key?i("rate-limit-input",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),[":registrations_open",":invites_enabled"].includes(t.setting.key)?i("reg-invites-input",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),t.reducedSelects?i("select-input-with-reduced-labels",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),":backends"===t.setting.key||":args"===t.setting.key?i("specific-multiple-select",{attrs:{data:t.data,"setting-group":t.settingGroup,setting:t.setting}}):t._e(),t._v(" "),t.senderInput(t.setting)?i("sender-input",{attrs:{data:t.data[t.setting.key],"setting-group":t.settingGroup,setting:t.setting,parents:t.settingParent}}):t._e(),t._v(" "),t.canBeDeleted&&t.isTablet?i("el-tooltip",{staticClass:"delete-setting-button-container",attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticClass:"delete-setting-button",attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:t.removeSetting}})],1):t._e()],1),t._v(" "),t.setting.description&&"keyword"!==t.setting.type?i("div",{staticClass:"expl",domProps:{innerHTML:t._s(t.getFormattedDescription(t.setting.description))}}):t._e()]):t._e()],1)},[],!1,null,null,null));Dt.options.__file="Inputs.vue";var Ct={name:"Setting",components:{Inputs:Dt.exports},props:{settingGroup:{type:Object,default:function(){return{}}},data:{type:Object,default:function(){return{}}}},computed:{emailAdapterChildren:function(){var t=this.$store.state.settings.settings[":pleroma"]["Pleroma.Emails.Mailer"][":adapter"];return this.settingGroup.children.filter(function(e){return e.group&&e.group.includes(t)})},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},isTablet:function(){return"tablet"===this.$store.state.app.device},loading:function(){return this.$store.state.settings.loading}},methods:{canBeDeleted:function(t){var e=this.settingGroup,i=e.group,n=e.key||t;return U.a.get(this.$store.state.settings.db,[i,n])&&this.$store.state.settings.db[i][n].includes(t)},compound:function(t){var e=t.type;t.key,t.children;return"keyword"===e||"map"===e||e.includes("keyword")||e.includes("map")},divideSetting:function(t){return[":sslopts",":tlsopts",":adapter",":poll_limits",":queues",":styling",":invalidation",":multi_factor_authentication"].includes(t)},getFormattedDescription:function(t){return St()(t)},notLastInGroup:function(t){return this.settingGroup.children.slice(-1)[0].key!==t},removeSetting:function(t){var e=this;return r()(s.a.mark(function i(){return s.a.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:e.$confirm(e.$t("settings.removeSettingConfirmation"),{confirmButtonText:e.$t("users.ok"),cancelButtonText:e.$t("users.cancel"),type:"warning"}).then(r()(s.a.mark(function i(){var n;return s.a.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return n=e.settingGroup.key?[{group:e.settingGroup.group,key:e.settingGroup.key,delete:!0,subkeys:[t]}]:[{group:e.settingGroup.group,key:t,delete:!0}],i.prev=1,i.next=4,e.$store.dispatch("RemoveSetting",n);case 4:i.next=9;break;case 6:return i.prev=6,i.t0=i.catch(1),i.abrupt("return");case 9:e.$message({type:"success",message:o.a.t("settings.successfullyRemoved")});case 10:case"end":return i.stop()}},i,null,[[1,6]])}))).catch(function(){e.$message({type:"info",message:e.$t("users.canceled")})});case 1:case"end":return i.stop()}},i)}))()},updateSetting:function(t,e,i){this.$store.dispatch("UpdateSettings",{tab:e,data:u()({},i,t)})}}},xt=(i("pnah"),Object(m.a)(Ct,function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.loading?t._e():i("div",[t.settingGroup.label||t.settingGroup.description?i("el-form-item",{staticClass:"description-container",attrs:{"data-search":t.settingGroup.key||t.settingGroup.group}},[t.settingGroup.label?i("span",{staticClass:"setting-label"},[t._v(t._s(t.settingGroup.label))]):t._e(),t._v(" "),t.settingGroup.description?i("span",{staticClass:"expl no-top-margin",domProps:{innerHTML:t._s(t.getFormattedDescription(t.settingGroup.description))}}):t._e()]):t._e(),t._v(" "),"Pleroma.Emails.Mailer"===t.settingGroup.key?i("div",[t._l(t.settingGroup.children.filter(function(t){return!t.group}),function(e){return i("div",{key:e.key},[i("inputs",{attrs:{"setting-group":t.settingGroup,setting:e,data:t.data}})],1)}),t._v(" "),t._l(t.emailAdapterChildren,function(e){return i("div",{key:e.key},[i("inputs",{attrs:{"setting-group":t.settingGroup,setting:e,data:t.data}})],1)})],2):i("div",t._l(t.settingGroup.children,function(e){return i("div",{key:e.key},[t.compound(e)?t._e():i("div",[i("inputs",{attrs:{"setting-group":t.settingGroup,setting:e,data:t.data,nested:!1}})],1),t._v(" "),t.compound(e)?i("div",[t.divideSetting(e.key)?i("el-divider",{staticClass:"divider"}):t._e(),t._v(" "),e.children?i("div",[i("div",{staticClass:"input-container"},[i("el-form-item",{staticClass:"grouped-settings-header",attrs:{"data-search":e.key||e.group}},[i("span",{attrs:{slot:"label"},slot:"label"},[t.isDesktop&&t.canBeDeleted(e.key)?i("el-tooltip",{attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticStyle:{"margin-left":"5px"},attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:function(i){return t.removeSetting(e.key)}}})],1):t._e()],1),t._v(" "),i("span",{staticClass:"label-font"},[t._v(t._s(e.label))]),t._v(" "),t.canBeDeleted(e.key)&&(t.isMobile||t.isTablet)?i("el-tooltip",{attrs:{content:t.$t("settings.removeFromDB"),placement:"bottom-end"}},[i("el-button",{staticClass:"settings-delete-button",attrs:{icon:"el-icon-delete",circle:"",size:"mini"},on:{click:function(i){return t.removeSetting(e.key)}}})],1):t._e()],1)],1),t._v(" "),t._l(e.children,function(n){return i("div",{key:n.key},[i("inputs",{attrs:{"setting-group":t.settingGroup,"setting-parent":[e,n],setting:n,data:t.data[e.key],nested:!0}})],1)})],2):i("div",[i("inputs",{attrs:{"setting-group":t.settingGroup,setting:e,data:t.data[e.key],nested:!0}})],1),t._v(" "),t.notLastInGroup(e.key)?i("el-divider",{staticClass:"divider"}):t._e()],1):t._e()])}),0)],1)},[],!1,null,null,null));xt.options.__file="Setting.vue";var $t=xt.exports;function Ut(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),i.push.apply(i,n)}return i}function Et(t){for(var e=1;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
    \n :\n \n \n
    \n \n
    \n
    \n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditableKeywordInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditableKeywordInput.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EditableKeywordInput.vue?vue&type=template&id=6670a702&\"\nimport script from \"./EditableKeywordInput.vue?vue&type=script&lang=js&\"\nexport * from \"./EditableKeywordInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditableKeywordInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"EditableKeywordInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"editable-keyword-container\"},[(_vm.setting.key === ':crontab')?_c('div',{staticClass:\"crontab\",attrs:{\"data-search\":_vm.setting.key}},_vm._l((_vm.data),function(worker){return _c('el-form-item',{key:_vm.getId(worker),staticClass:\"crontab-container\",attrs:{\"label\":_vm.getCrontabWorkerLabel(worker)}},[_c('el-input',{staticClass:\"input setting-input\",attrs:{\"value\":_vm.getValue(worker),\"placeholder\":_vm.getSuggestion(worker) || null},on:{\"input\":function($event){return _vm.updateCrontab($event, 'value', worker)}}})],1)}),1):(_vm.editableKeywordWithInteger)?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(element){return _c('div',{key:_vm.getId(element),staticClass:\"setting-input\"},[_c('el-input',{staticClass:\"name-input\",attrs:{\"value\":_vm.getKey(element),\"placeholder\":\"key\"},on:{\"input\":function($event){return _vm.parseEditableKeyword($event, 'key', element)}}}),_vm._v(\" :\\n \"),_c('el-input-number',{staticClass:\"value-input\",attrs:{\"value\":_vm.getValue(element),\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.parseEditableKeyword($event, 'value', element)}}}),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteEditableKeywordRow(element)}}})],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToEditableKeyword}})],2):(_vm.editableKeywordWithString)?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(element){return _c('div',{key:_vm.getId(element),staticClass:\"setting-input\"},[_c('el-input',{staticClass:\"name-input\",attrs:{\"value\":_vm.getKey(element),\"placeholder\":_vm.keyPlaceholder},on:{\"input\":function($event){return _vm.parseEditableKeyword($event, 'key', element)}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"value-input\",attrs:{\"value\":_vm.getValue(element),\"placeholder\":_vm.valuePlaceholder},on:{\"input\":function($event){return _vm.parseEditableKeyword($event, 'value', element)}}}),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteEditableKeywordRow(element)}}})],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToEditableKeyword}})],2):(_vm.editableKeywordWithSelect)?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(element){return _c('div',{key:_vm.getId(element),staticClass:\"setting-input\"},[_c('el-input',{staticClass:\"name-input\",attrs:{\"value\":_vm.getKey(element),\"placeholder\":\"key\"},on:{\"input\":function($event){return _vm.parseEditableKeyword($event, 'key', element)}}}),_vm._v(\" :\\n \"),_c('el-select',{staticClass:\"value-input\",attrs:{\"value\":_vm.getValue(element),\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.parseEditableKeyword($event, 'value', element)}}}),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteEditableKeywordRow(element)}}})],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToEditableKeyword}})],2):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditorInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditorInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./EditorInput.vue?vue&type=template&id=5048b868&\"\nimport script from \"./EditorInput.vue?vue&type=script&lang=js&\"\nexport * from \"./EditorInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditorInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"EditorInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-form',{attrs:{\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{staticClass:\"editor-form-item\",attrs:{\"data-search\":_vm.name === 'instance-panel' ? ':instance_panel' : ':terms_of_services'}},[_c('span',{attrs:{\"slot\":\"label\"},slot:\"label\"},[_vm._v(\"\\n \"+_vm._s(_vm.name === 'instance-panel' ? _vm.$t('settings.instancePanel') : _vm.$t('settings.termsOfServices'))+\"\\n \"),_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"delete-setting-button\",attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":_vm.removeInstanceDoc}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"editor\"},[_c('editor-menu-bar',{attrs:{\"editor\":_vm.editor},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar commands = ref.commands;\nvar isActive = ref.isActive;\nreturn [_c('div',{staticClass:\"menubar\"},[_c('button',{staticClass:\"menubar__button\",class:{ 'is-active': isActive.bold() },on:{\"click\":commands.bold}},[_c('svg-icon',{attrs:{\"icon-class\":\"tiptap-bold\"}})],1),_vm._v(\" \"),_c('button',{staticClass:\"menubar__button\",class:{ 'is-active': isActive.italic() },on:{\"click\":commands.italic}},[_c('svg-icon',{attrs:{\"icon-class\":\"tiptap-italic\"}})],1),_vm._v(\" \"),_c('button',{staticClass:\"menubar__button\",class:{ 'is-active': isActive.underline() },on:{\"click\":commands.underline}},[_c('svg-icon',{attrs:{\"icon-class\":\"tiptap-underline\"}})],1),_vm._v(\" \"),_c('button',{staticClass:\"menubar__button\",class:{ 'is-active': isActive.heading({ level: 1 }) },on:{\"click\":function($event){return commands.heading({ level: 1 })}}},[_vm._v(\"\\n H1\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"menubar__button\",class:{ 'is-active': isActive.heading({ level: 2 }) },on:{\"click\":function($event){return commands.heading({ level: 2 })}}},[_vm._v(\"\\n H2\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"menubar__button\",class:{ 'is-active': isActive.heading({ level: 3 }) },on:{\"click\":function($event){return commands.heading({ level: 3 })}}},[_vm._v(\"\\n H3\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"menubar__button\",class:{ 'is-active': isActive.bullet_list() },on:{\"click\":commands.bullet_list}},[_c('svg-icon',{attrs:{\"icon-class\":\"tiptap-ul\"}})],1),_vm._v(\" \"),_c('button',{staticClass:\"menubar__button\",class:{ 'is-active': isActive.ordered_list() },on:{\"click\":commands.ordered_list}},[_c('svg-icon',{attrs:{\"icon-class\":\"tiptap-ol\"}})],1),_vm._v(\" \"),_c('button',{staticClass:\"menubar__button\",class:{ 'is-active': isActive.blockquote() },on:{\"click\":commands.blockquote}},[_c('svg-icon',{attrs:{\"icon-class\":\"tiptap-quote\"}})],1),_vm._v(\" \"),_c('button',{staticClass:\"menubar__button\",class:{ 'is-active': isActive.link() },on:{\"click\":commands.link}},[_c('svg-icon',{attrs:{\"icon-class\":\"tiptap-link\"}})],1),_vm._v(\" \"),_c('button',{staticClass:\"menubar__button\",class:{ 'is-active': isActive.code_block() },on:{\"click\":commands.code_block}},[_c('svg-icon',{attrs:{\"icon-class\":\"tiptap-code\"}})],1),_vm._v(\" \"),_c('button',{staticClass:\"menubar__button\",on:{\"click\":commands.horizontal_rule}},[_c('svg-icon',{attrs:{\"icon-class\":\"tiptap-hr\"}})],1),_vm._v(\" \"),_c('button',{staticClass:\"menubar__button\",on:{\"click\":commands.undo}},[_c('svg-icon',{attrs:{\"icon-class\":\"tiptap-undo\"}})],1),_vm._v(\" \"),_c('button',{staticClass:\"menubar__button\",on:{\"click\":commands.redo}},[_c('svg-icon',{attrs:{\"icon-class\":\"tiptap-redo\"}})],1)])]}}])}),_vm._v(\" \"),_c('editor-content',{staticClass:\"editor__content\",attrs:{\"editor\":_vm.editor}})],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconsInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconsInput.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./IconsInput.vue?vue&type=template&id=0e981ae9&\"\nimport script from \"./IconsInput.vue?vue&type=script&lang=js&\"\nexport * from \"./IconsInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./IconsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"IconsInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mascot-container\",attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(icon,index){return _c('div',{key:index,staticClass:\"mascot\"},[_c('div',{staticClass:\"icons-container\"},[_c('div',{staticClass:\"icon-container\"},_vm._l((icon),function(ref){\nvar key = ref.key;\nvar value = ref.value;\nvar id = ref.id;\nreturn _c('div',{key:id,staticClass:\"icon-values-container\"},[_c('el-input',{staticClass:\"icon-key-input\",attrs:{\"value\":key,\"placeholder\":\"key\"},on:{\"input\":function($event){return _vm.parseIcons($event, 'key', index, id)}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"icon-value-input\",attrs:{\"value\":value,\"placeholder\":\"value\"},on:{\"input\":function($event){return _vm.parseIcons($event, 'value', index, id)}}})],1)}),0),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteIcondRow(index)}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"icons-button-container\"},[_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.addValueToIcons(index)}}}),_vm._v(\" \"),_c('span',{staticClass:\"icons-button-desc\"},[_vm._v(\"Add another `key - value` pair to this icon\")])],1),_vm._v(\" \"),_c('el-divider',{staticClass:\"divider\"})],1)}),_vm._v(\" \"),_c('div',{staticClass:\"icons-button-container\"},[_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addIconToIcons}}),_vm._v(\" \"),_c('span',{staticClass:\"icons-button-desc\"},[_vm._v(\"Add another icon configuration\")])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nconst UPLOAD_URL = '/api/v1/media'\n\nexport function uploadMedia({ formData, authHost }) {\n const url = baseName(authHost) + UPLOAD_URL\n\n return fetch(url, {\n body: formData,\n method: 'POST',\n headers: authHeaders()\n })\n .then((data) => data.json())\n}\n\nconst authHeaders = () => {\n return { 'Authorization': `Bearer ${getToken()}` }\n}\n","\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageUploadInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageUploadInput.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ImageUploadInput.vue?vue&type=template&id=dbef2262&\"\nimport script from \"./ImageUploadInput.vue?vue&type=script&lang=js&\"\nexport * from \"./ImageUploadInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ImageUploadInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ImageUploadInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"image-upload-area\"},[_c('div',{staticClass:\"input-row\"},[_c('div',{staticClass:\"image-upload-wrapper\",style:(_vm.dimensions)},[_c('div',{staticClass:\"image-upload-overlay\",style:(_vm.dimensions)},[_c('input',{staticClass:\"input-file\",attrs:{\"aria-label\":_vm.$t('settings.changeImage'),\"type\":\"file\",\"accept\":\".jpg,.jpeg,.png\"},on:{\"change\":_vm.handleFiles}}),_vm._v(\" \"),_c('div',{staticClass:\"caption\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.changeImage'))+\"\\n \")]),_vm._v(\" \"),_c('el-image',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"uploaded-image\",style:(_vm.dimensions),attrs:{\"src\":_vm.imageUrl(_vm.inputValue),\"fit\":\"cover\"}})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"image-button-group\"},[_c('el-button',{staticClass:\"upload-button\",attrs:{\"size\":\"small\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.uploadImage'))+\"\\n \"),_c('input',{staticClass:\"input-file\",attrs:{\"aria-label\":_vm.$t('settings.changeImage'),\"type\":\"file\",\"accept\":\".jpg,.jpeg,.png\"},on:{\"change\":_vm.handleFiles}})]),_vm._v(\" \"),(!_vm.isDefault)?_c('el-button',{staticStyle:{\"margin-left\":\"5px\"},attrs:{\"type\":\"danger\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.removeFile()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.remove'))+\"\\n \")]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkFormatterInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkFormatterInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./LinkFormatterInput.vue?vue&type=template&id=3e31f4e9&\"\nimport script from \"./LinkFormatterInput.vue?vue&type=script&lang=js&\"\nexport * from \"./LinkFormatterInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LinkFormatterInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"LinkFormatterInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.setting.type.includes('string'))?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-switch',{attrs:{\"value\":_vm.autoLinkerBooleanValue},on:{\"change\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}}),_vm._v(\" \"),(_vm.autoLinkerBooleanValue)?_c('el-input',{attrs:{\"value\":_vm.autoLinkerStringValue},on:{\"input\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.setting.type.includes('integer'))?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-switch',{attrs:{\"value\":_vm.autoLinkerBooleanValue},on:{\"change\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}}),_vm._v(\" \"),(_vm.autoLinkerBooleanValue)?_c('el-input-number',{attrs:{\"value\":_vm.autoLinkerIntegerValue},on:{\"input\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.setting.type.includes('atom'))?_c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-switch',{attrs:{\"value\":_vm.autoLinkerBooleanValue},on:{\"change\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}}),_vm._v(\" \"),(_vm.autoLinkerBooleanValue)?_c('el-input',{attrs:{\"value\":_vm.autoLinkerAtomValue},on:{\"input\":function($event){return _vm.processTwoTypeValue($event, _vm.setting.key)}}},[_c('template',{slot:\"prepend\"},[_vm._v(\":\")])],2):_vm._e()],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MascotsInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MascotsInput.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MascotsInput.vue?vue&type=template&id=0015a0e3&\"\nimport script from \"./MascotsInput.vue?vue&type=script&lang=js&\"\nexport * from \"./MascotsInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MascotsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"MascotsInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mascot-container\",attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_vm._l((_vm.data),function(mascot){return _c('div',{key:_vm.getId(mascot),staticClass:\"mascot\"},[_c('el-form-item',{staticClass:\"mascot-form-item\",attrs:{\"label\":\"Name\",\"label-width\":\"85px\"}},[_c('div',{staticClass:\"mascot-name-container\"},[_c('el-input',{staticClass:\"mascot-name-input\",attrs:{\"value\":_vm.getName(mascot),\"placeholder\":\"Name\"},on:{\"input\":function($event){return _vm.parseMascots($event, 'name', mascot)}}}),_vm._v(\" \"),_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteMascotsRow(mascot)}}})],1)]),_vm._v(\" \"),_c('el-form-item',{staticClass:\"mascot-form-item\",attrs:{\"label\":\"URL\",\"label-width\":\"85px\"}},[_c('el-input',{staticClass:\"mascot-input\",attrs:{\"value\":_vm.getUrl(mascot),\"placeholder\":\"URL\"},on:{\"input\":function($event){return _vm.parseMascots($event, 'url', mascot)}}})],1),_vm._v(\" \"),_c('el-form-item',{staticClass:\"mascot-form-item\",attrs:{\"label\":\"Mime type\",\"label-width\":\"85px\"}},[_c('el-input',{staticClass:\"mascot-input\",attrs:{\"value\":_vm.getMimeType(mascot),\"placeholder\":\"Mime type\"},on:{\"input\":function($event){return _vm.parseMascots($event, 'mimeType', mascot)}}})],1)],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToMascots}})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProxyUrlInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProxyUrlInput.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProxyUrlInput.vue?vue&type=template&id=9a053e1c&\"\nimport script from \"./ProxyUrlInput.vue?vue&type=script&lang=js&\"\nexport * from \"./ProxyUrlInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProxyUrlInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ProxyUrlInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"proxy-url-input\",attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-input',{staticClass:\"proxy-url-host-input\",attrs:{\"value\":_vm.proxyUrlData.host,\"placeholder\":\"host (e.g. localhost or 127.0.0.1)\"},on:{\"input\":function($event){return _vm.updateProxyUrl($event, 'host')}}}),_vm._v(\" \"),(_vm.isDesktop)?_c('span',[_vm._v(\":\")]):_vm._e(),_vm._v(\" \"),_c('el-input',{staticClass:\"proxy-url-value-input\",attrs:{\"value\":_vm.proxyUrlData.port,\"placeholder\":\"port (e.g 9020 or 3090)\"},on:{\"input\":function($event){return _vm.updateProxyUrl($event, 'port')}}}),_vm._v(\" \"),_c('div',{staticClass:\"socks5-checkbox-container\"},[_c('el-checkbox',{attrs:{\"value\":_vm.proxyUrlData.socks5},on:{\"change\":function($event){return _vm.updateProxyUrl($event, 'socks5')}}}),_vm._v(\" \"),_c('span',{staticClass:\"socks5-checkbox\"},[_vm._v(\"Socks5\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PruneInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PruneInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./PruneInput.vue?vue&type=template&id=0da6d714&\"\nimport script from \"./PruneInput.vue?vue&type=script&lang=js&\"\nexport * from \"./PruneInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PruneInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"PruneInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-radio-group',{staticClass:\"prune-options\",model:{value:(_vm.prune),callback:function ($$v) {_vm.prune=$$v},expression:\"prune\"}},[_c('el-radio',{attrs:{\"label\":\":disabled\"}},[_vm._v(\"Disabled\")]),_vm._v(\" \"),_c('el-radio',{attrs:{\"label\":\":maxlen\"}},[_vm._v(\"Limit-based\")]),_vm._v(\" \"),_c('el-radio',{attrs:{\"label\":\":maxage\"}},[_vm._v(\"Time-based\")])],1),_vm._v(\" \"),(_vm.prune === ':maxlen')?_c('el-form-item',{attrs:{\"label\":\"Max length\",\"label-width\":\"100\",\"label-position\":\"left\"}},[_c('el-input-number',{staticClass:\"top-margin\",attrs:{\"value\":_vm.data[1],\"min\":0,\"placeholder\":\"1500\",\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateIntInput($event, ':maxlen')}}})],1):_vm._e(),_vm._v(\" \"),(_vm.prune === ':maxage')?_c('el-form-item',{attrs:{\"label\":\"Max age\",\"label-width\":\"100\",\"label-position\":\"left\"}},[_c('el-input-number',{staticClass:\"top-margin\",attrs:{\"value\":_vm.data[1],\"min\":0,\"placeholder\":\"3600\",\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateIntInput($event, ':maxage')}}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimitInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimitInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./RateLimitInput.vue?vue&type=template&id=6c808afe&\"\nimport script from \"./RateLimitInput.vue?vue&type=script&lang=js&\"\nexport * from \"./RateLimitInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RateLimitInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"RateLimitInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"rate-limit-container\",attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[(!_vm.rateLimitAuthUsers)?_c('div',[_c('el-input-number',{staticClass:\"scale-input\",attrs:{\"value\":_vm.rateLimitAllUsers[0],\"controls\":false,\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, _vm.setting.key, 'scale', 'oneLimit', _vm.rateLimitAllUsers)}}}),_vm._v(\" \"),_c('span',[_vm._v(\":\")]),_vm._v(\" \"),_c('el-input-number',{staticClass:\"limit-input\",attrs:{\"value\":_vm.rateLimitAllUsers[1],\"controls\":false,\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, _vm.setting.key, 'limit', 'oneLimit', _vm.rateLimitAllUsers)}}}),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits([['', ''], ['', '']], _vm.setting.key)}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set different limits for unauthenticated and authenticated users\")])],1)],1):_vm._e(),_vm._v(\" \"),(_vm.rateLimitAuthUsers)?_c('div',[_c('el-form-item',{staticClass:\"rate-limit\"},[_c('div',{staticClass:\"rate-limit-label-container\"},[_c('span',{staticClass:\"rate-limit-label\"},[_vm._v(\"\\n Unauthenticated users:\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"rate-limit-content\"},[_c('el-input-number',{staticClass:\"scale-input\",attrs:{\"value\":_vm.rateLimitUnauthUsers[0],\"controls\":false,\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter(\n $event, _vm.setting.key, 'scale', 'unauthUsersLimit', [_vm.rateLimitUnauthUsers, _vm.rateLimitAuthUsers]\n )}}}),_vm._v(\" \"),_c('span',[_vm._v(\":\")]),_vm._v(\" \"),_c('el-input-number',{staticClass:\"limit-input\",attrs:{\"value\":_vm.rateLimitUnauthUsers[1],\"controls\":false,\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter(\n $event, _vm.setting.key, 'limit', 'unauthUsersLimit', [_vm.rateLimitUnauthUsers, _vm.rateLimitAuthUsers]\n )}}})],1)]),_vm._v(\" \"),_c('el-form-item',{staticClass:\"rate-limit\"},[_c('div',{staticClass:\"rate-limit-label-container\"},[_c('span',{staticClass:\"rate-limit-label\"},[_vm._v(\"\\n Authenticated users:\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"rate-limit-content\"},[_c('el-input-number',{staticClass:\"scale-input\",attrs:{\"value\":_vm.rateLimitAuthUsers[0],\"controls\":false,\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, _vm.setting.key, 'scale', 'authUserslimit', [_vm.rateLimitUnauthUsers, _vm.rateLimitAuthUsers])}}}),_vm._v(\" \"),_c('span',[_vm._v(\":\")]),_vm._v(\" \"),_c('el-input-number',{staticClass:\"limit-input\",attrs:{\"value\":_vm.rateLimitAuthUsers[1],\"controls\":false,\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, _vm.setting.key, 'limit', 'authUserslimit', [_vm.rateLimitUnauthUsers, _vm.rateLimitAuthUsers])}}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{staticClass:\"icon-minus-button\",attrs:{\"size\":_vm.isDesktop ? 'medium' : 'mini',\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits(['', ''], _vm.setting.key)}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set limit for all users\")])],1)],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegInvitesInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegInvitesInput.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./RegInvitesInput.vue?vue&type=template&id=55c7fa7c&\"\nimport script from \"./RegInvitesInput.vue?vue&type=script&lang=js&\"\nexport * from \"./RegInvitesInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RegInvitesInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"RegInvitesInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-switch',{staticClass:\"switch-input\",attrs:{\"value\":_vm.data[_vm.setting.key],\"data-search\":_vm.setting.key},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectInputWithReducedLabels.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectInputWithReducedLabels.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SelectInputWithReducedLabels.vue?vue&type=template&id=f003bd80&\"\nimport script from \"./SelectInputWithReducedLabels.vue?vue&type=script&lang=js&\"\nexport * from \"./SelectInputWithReducedLabels.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SelectInputWithReducedLabels.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SelectInputWithReducedLabels.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input\"},[(_vm.renderMultipleSelect(_vm.setting.type))?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"data-search\":_vm.setting.key,\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}},_vm._l((_vm.options(_vm.setting.suggestions)),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option.value,\"label\":option.label}})}),1):_vm._e(),_vm._v(\" \"),(_vm.setting.type === 'module' || (_vm.setting.type.includes('atom') && _vm.setting.type.includes('dropdown')))?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue === false ? 'false' : _vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}},_vm._l((_vm.options(_vm.setting.suggestions)),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option.value,\"label\":option.label}})}),1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SenderInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SenderInput.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SenderInput.vue?vue&type=template&id=01973d3a&\"\nimport script from \"./SenderInput.vue?vue&type=script&lang=js&\"\nexport * from \"./SenderInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SenderInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SenderInput.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sender-input\",attrs:{\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('el-input',{staticClass:\"email-address-input\",attrs:{\"value\":_vm.sender.email,\"placeholder\":\"email address\"},on:{\"input\":function($event){return _vm.updateSender($event, 'email')}}}),_vm._v(\" \"),_c('el-input',{staticClass:\"nickname-input\",attrs:{\"value\":_vm.sender.nickname,\"placeholder\":\"nickname\"},on:{\"input\":function($event){return _vm.updateSender($event, 'nickname')}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpecificMultipleSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SpecificMultipleSelect.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SpecificMultipleSelect.vue?vue&type=template&id=755f759c&\"\nimport script from \"./SpecificMultipleSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./SpecificMultipleSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SpecificMultipleSelect.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SpecificMultipleSelect.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"multiple-select-container\"},[(_vm.setting.key === ':backends')?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.data.value,\"data-search\":_vm.setting.key || _vm.setting.group,\"multiple\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}},[_c('el-option',{attrs:{\"value\":\":console\",\"label\":\"console\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":ex_syslogger\",\"label\":\"ExSyslogger\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"Quack.Logger\",\"label\":\"Quack.Logger\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':args')?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.data[_vm.setting.key],\"data-search\":_vm.setting.key || _vm.setting.group,\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.setting.key, _vm.setting.type)}}},[_c('el-option',{attrs:{\"value\":\"strip\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"auto-orient\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"{\\\"implode\\\", \\\"1\\\"}\"}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Inputs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Inputs.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Inputs.vue?vue&type=template&id=7e59d6ab&\"\nimport script from \"./Inputs.vue?vue&type=script&lang=js&\"\nexport * from \"./Inputs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Inputs.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Inputs.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input-container\"},[(_vm.setting.type === 'keyword')?_c('div',{staticClass:\"keyword-container\"},[_c('el-form-item',{class:_vm.labelClass,style:((\"margin-left:\" + _vm.margin + \"px;margin-bottom:0\")),attrs:{\"label-width\":_vm.customLabelWidth,\"data-search\":_vm.setting.key || _vm.setting.group}},[_c('span',{attrs:{\"slot\":\"label\"},slot:\"label\"},[_vm._v(\"\\n \"+_vm._s(_vm.setting.label)+\"\\n \"),(_vm.canBeDeleted && _vm.isDesktop)?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"delete-setting-button\",attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":_vm.removeSetting}})],1):_vm._e()],1)]),_vm._v(\" \"),_vm._l((_vm.setting.children),function(subSetting){return _c('el-form-item',{key:subSetting.key},[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting-parent\":_vm.settingParent.concat( [subSetting]),\"setting\":subSetting,\"data\":_vm.data[_vm.setting.key],\"custom-label-width\":_vm.isMobile ? '100px' : '120px',\"label-class\":subSetting.type === 'keyword' ? 'center-label' : '',\"margin\":_vm.isDesktop ? _vm.margin + 15 : _vm.margin + 8,\"nested\":true}})],1)})],2):_vm._e(),_vm._v(\" \"),(_vm.setting.type !== 'keyword')?_c('el-form-item',{class:_vm.labelClass,style:(_vm.isDesktop ? '' : (\"margin-left:\" + _vm.margin + \"px\")),attrs:{\"label-width\":_vm.customLabelWidth}},[_c('span',{attrs:{\"slot\":\"label\"},slot:\"label\"},[_vm._v(\"\\n \"+_vm._s(_vm.setting.label)+\"\\n \"),(_vm.canBeDeleted && (_vm.isDesktop || _vm.isMobile))?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"delete-setting-button\",attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":_vm.removeSetting}})],1):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"input-row\"},[(_vm.isImageUrl)?_c('image-upload-input',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting,\"input-value\":_vm.inputValue},on:{\"change\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}}):(_vm.setting.type === 'string' ||\n (Array.isArray(_vm.setting.type) && _vm.setting.type.includes('string') && _vm.setting.type.includes('atom')))?_c('el-input',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"placeholder\":_vm.setting.suggestions ? _vm.setting.suggestions[0] : null,\"data-search\":_vm.setting.key || _vm.setting.group},on:{\"input\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}}):_vm._e(),_vm._v(\" \"),(_vm.setting.type === 'boolean' && ![':registrations_open', ':invites_enabled'].includes(_vm.setting.key))?_c('el-switch',{staticClass:\"switch-input\",attrs:{\"value\":_vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group},on:{\"change\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}}):_vm._e(),_vm._v(\" \"),(_vm.setting.type === 'integer')?_c('el-input-number',{attrs:{\"value\":_vm.inputValue === null ? undefined : _vm.inputValue,\"placeholder\":_vm.setting.suggestions ? _vm.setting.suggestions[0].toString() : null,\"min\":0,\"size\":_vm.isDesktop ? 'large' : 'medium',\"data-search\":_vm.setting.key || _vm.setting.group},on:{\"change\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}}):_vm._e(),_vm._v(\" \"),(_vm.renderSingleSelect(_vm.setting.type))?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue === false ? 'false' : _vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}},_vm._l((_vm.setting.suggestions),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option}})}),1):_vm._e(),_vm._v(\" \"),(_vm.renderMultipleSelect(_vm.setting.type))?_c('el-select',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group,\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}},_vm._l((_vm.setting.suggestions),function(option,index){return _c('el-option',{key:index,attrs:{\"value\":option}})}),1):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':ip')?_c('el-input',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"data-search\":_vm.setting.key || _vm.setting.group,\"placeholder\":\"xxx.xxx.xxx.xx\"},on:{\"input\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}}):_vm._e(),_vm._v(\" \"),(_vm.setting.type === 'atom')?_c('el-input',{staticClass:\"input\",attrs:{\"value\":_vm.inputValue,\"placeholder\":_vm.setting.suggestions && _vm.setting.suggestions[0] ? _vm.setting.suggestions[0].substr(1) : '',\"data-search\":_vm.setting.key || _vm.setting.group},on:{\"input\":function($event){return _vm.update($event, _vm.settingGroup.group, _vm.settingGroup.key, _vm.settingParent, _vm.setting.key, _vm.setting.type, _vm.nested)}}},[_c('template',{slot:\"prepend\"},[_vm._v(\":\")])],2):_vm._e(),_vm._v(\" \"),(_vm.editableKeyword(_vm.setting.key, _vm.setting.type))?_c('editable-keyword-input',{attrs:{\"data\":_vm.keywordData,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting,\"parents\":_vm.settingParent}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':icons')?_c('icons-input',{attrs:{\"data\":_vm.iconsData,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.booleanCombinedInput)?_c('link-formatter-input',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':mascots')?_c('mascots-input',{attrs:{\"data\":_vm.keywordData,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':proxy_url')?_c('proxy-url-input',{attrs:{\"data\":_vm.data[_vm.setting.key],\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting,\"parents\":_vm.settingParent}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':prune')?_c('prune-input',{attrs:{\"data\":_vm.data[_vm.setting.key],\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.settingGroup.key === ':rate_limit')?_c('rate-limit-input',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),([':registrations_open', ':invites_enabled'].includes(_vm.setting.key))?_c('reg-invites-input',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.reducedSelects)?_c('select-input-with-reduced-labels',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.setting.key === ':backends' || _vm.setting.key === ':args')?_c('specific-multiple-select',{attrs:{\"data\":_vm.data,\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting}}):_vm._e(),_vm._v(\" \"),(_vm.senderInput(_vm.setting))?_c('sender-input',{attrs:{\"data\":_vm.data[_vm.setting.key],\"setting-group\":_vm.settingGroup,\"setting\":_vm.setting,\"parents\":_vm.settingParent}}):_vm._e(),_vm._v(\" \"),(_vm.canBeDeleted && _vm.isTablet)?_c('el-tooltip',{staticClass:\"delete-setting-button-container\",attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"delete-setting-button\",attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":_vm.removeSetting}})],1):_vm._e()],1),_vm._v(\" \"),(_vm.setting.description && _vm.setting.type !== 'keyword')?_c('div',{staticClass:\"expl\",domProps:{\"innerHTML\":_vm._s(_vm.getFormattedDescription(_vm.setting.description))}}):_vm._e()]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Setting.vue?vue&type=template&id=25e5eaa4&\"\nimport script from \"./Setting.vue?vue&type=script&lang=js&\"\nexport * from \"./Setting.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Setting.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Setting.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',[(_vm.settingGroup.label || _vm.settingGroup.description)?_c('el-form-item',{staticClass:\"description-container\",attrs:{\"data-search\":_vm.settingGroup.key || _vm.settingGroup.group}},[(_vm.settingGroup.label)?_c('span',{staticClass:\"setting-label\"},[_vm._v(_vm._s(_vm.settingGroup.label))]):_vm._e(),_vm._v(\" \"),(_vm.settingGroup.description)?_c('span',{staticClass:\"expl no-top-margin\",domProps:{\"innerHTML\":_vm._s(_vm.getFormattedDescription(_vm.settingGroup.description))}}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.settingGroup.key === 'Pleroma.Emails.Mailer')?_c('div',[_vm._l((_vm.settingGroup.children.filter(function (setting) { return !setting.group; })),function(setting){return _c('div',{key:setting.key},[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting\":setting,\"data\":_vm.data}})],1)}),_vm._v(\" \"),_vm._l((_vm.emailAdapterChildren),function(setting){return _c('div',{key:setting.key},[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting\":setting,\"data\":_vm.data}})],1)})],2):_c('div',_vm._l((_vm.settingGroup.children),function(setting){return _c('div',{key:setting.key},[(!_vm.compound(setting))?_c('div',[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting\":setting,\"data\":_vm.data,\"nested\":false}})],1):_vm._e(),_vm._v(\" \"),(_vm.compound(setting))?_c('div',[(_vm.divideSetting(setting.key))?_c('el-divider',{staticClass:\"divider\"}):_vm._e(),_vm._v(\" \"),(!setting.children)?_c('div',[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting\":setting,\"data\":_vm.data[setting.key],\"nested\":true}})],1):_c('div',[_c('div',{staticClass:\"input-container\"},[_c('el-form-item',{staticClass:\"grouped-settings-header\",attrs:{\"data-search\":setting.key || setting.group}},[_c('span',{attrs:{\"slot\":\"label\"},slot:\"label\"},[(_vm.isDesktop && _vm.canBeDeleted(setting.key))?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticStyle:{\"margin-left\":\"5px\"},attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.removeSetting(setting.key)}}})],1):_vm._e()],1),_vm._v(\" \"),_c('span',{staticClass:\"label-font\"},[_vm._v(_vm._s(setting.label))]),_vm._v(\" \"),(_vm.canBeDeleted(setting.key) && (_vm.isMobile || _vm.isTablet))?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.removeFromDB'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"settings-delete-button\",attrs:{\"icon\":\"el-icon-delete\",\"circle\":\"\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.removeSetting(setting.key)}}})],1):_vm._e()],1)],1),_vm._v(\" \"),_vm._l((setting.children),function(subSetting){return _c('div',{key:subSetting.key},[_c('inputs',{attrs:{\"setting-group\":_vm.settingGroup,\"setting-parent\":[setting, subSetting],\"setting\":subSetting,\"data\":_vm.data[setting.key],\"nested\":true}})],1)})],2),_vm._v(\" \"),(_vm.notLastInGroup(setting.key))?_c('el-divider',{staticClass:\"divider\"}):_vm._e()],1):_vm._e()])}),0)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ActivityPub.vue?vue&type=template&id=54a49c6e&\"\nimport script from \"./ActivityPub.vue?vue&type=script&lang=js&\"\nexport * from \"./ActivityPub.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ActivityPub.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ActivityPub.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.activitypubData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth,\"data-search\":\":activitypub\"}},[_c('setting',{attrs:{\"setting-group\":_vm.activitypub,\"data\":_vm.activitypubData}})],1),_vm._v(\" \"),(_vm.user)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.userData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth,\"data-search\":\":user\"}},[_c('setting',{attrs:{\"setting-group\":_vm.user,\"data\":_vm.userData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Authentication.vue?vue&type=template&id=5eb8e4a0&\"\nimport script from \"./Authentication.vue?vue&type=script&lang=js&\"\nexport * from \"./Authentication.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Authentication.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Authentication.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.pleromaAuthenticatorData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.pleromaAuthenticator,\"data\":_vm.pleromaAuthenticatorData}})],1),_vm._v(\" \"),(_vm.pleromaAuthenticator)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.authData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.auth,\"data\":_vm.authData}})],1),_vm._v(\" \"),(_vm.auth)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.ldapData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.ldap,\"data\":_vm.ldapData}})],1),_vm._v(\" \"),(_vm.ldap)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.oauth2Data,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.oauth2,\"data\":_vm.oauth2Data}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Captcha.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Captcha.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Captcha.vue?vue&type=template&id=66ab985a&\"\nimport script from \"./Captcha.vue?vue&type=script&lang=js&\"\nexport * from \"./Captcha.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Captcha.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Captcha.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.captchaData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.captcha,\"data\":_vm.captchaData}})],1),_vm._v(\" \"),(_vm.captcha)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.kocaptchaData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.kocaptcha,\"data\":_vm.kocaptchaData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Esshd.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Esshd.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Esshd.vue?vue&type=template&id=5a9ec988&\"\nimport script from \"./Esshd.vue?vue&type=script&lang=js&\"\nexport * from \"./Esshd.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Esshd.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Esshd.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.esshdData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.esshd,\"data\":_vm.esshdData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Frontend.vue?vue&type=template&id=cca7df2a&\"\nimport script from \"./Frontend.vue?vue&type=script&lang=js&\"\nexport * from \"./Frontend.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Frontend.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Frontend.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.frontendData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.frontend,\"data\":_vm.frontendData}})],1),_vm._v(\" \"),(_vm.frontend)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.staticFeData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.staticFe,\"data\":_vm.staticFeData}})],1),_vm._v(\" \"),(_vm.staticFe)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.frontendsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.frontends,\"data\":_vm.frontendsData}})],1),_vm._v(\" \"),(_vm.frontends)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.assetsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.assets,\"data\":_vm.assetsData}})],1),_vm._v(\" \"),(_vm.assets)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.emojiData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.emoji,\"data\":_vm.emojiData}})],1),_vm._v(\" \"),(_vm.emoji)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.chatData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.chat,\"data\":_vm.chatData}})],1),_vm._v(\" \"),(_vm.chat)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.markupData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.markup,\"data\":_vm.markupData}})],1),_vm._v(\" \"),(_vm.preload)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.preloadData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.preload,\"data\":_vm.preloadData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Gopher.vue?vue&type=template&id=6ff77a41&\"\nimport script from \"./Gopher.vue?vue&type=script&lang=js&\"\nexport * from \"./Gopher.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Gopher.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Gopher.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[(!_vm.loading)?_c('el-form',{attrs:{\"model\":_vm.gopherData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.gopher,\"data\":_vm.gopherData}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Http.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Http.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Http.vue?vue&type=template&id=e1a70b9a&\"\nimport script from \"./Http.vue?vue&type=script&lang=js&\"\nexport * from \"./Http.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Http.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Http.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.httpData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.http,\"data\":_vm.httpData}})],1),_vm._v(\" \"),(_vm.http)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.corsPlugData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.corsPlug,\"data\":_vm.corsPlugData}})],1),_vm._v(\" \"),(_vm.corsPlug)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.httpSecurityData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.httpSecurity,\"data\":_vm.httpSecurityData}})],1),_vm._v(\" \"),(_vm.httpSecurity)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.webCacheTtlData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.webCacheTtl,\"data\":_vm.webCacheTtlData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Instance.vue?vue&type=template&id=2125db0b&\"\nimport script from \"./Instance.vue?vue&type=script&lang=js&\"\nexport * from \"./Instance.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Instance.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Instance.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.instanceData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.instance,\"data\":_vm.instanceData}})],1),_vm._v(\" \"),_c('editor-input',{attrs:{\"name\":'instance-panel'},on:{\"input\":_vm.handleEditorUpdate},model:{value:(_vm.instancePanelContent),callback:function ($$v) {_vm.instancePanelContent=$$v},expression:\"instancePanelContent\"}}),_vm._v(\" \"),(_vm.instance)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.restrictUnauthenticatedData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.restrictUnauthenticated,\"data\":_vm.restrictUnauthenticatedData}})],1),_vm._v(\" \"),(_vm.restrictUnauthenticated)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.adminTokenData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.adminToken,\"data\":_vm.adminTokenData}})],1),_vm._v(\" \"),(_vm.adminToken)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.welcomeData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.welcome,\"data\":_vm.welcomeData}})],1),_vm._v(\" \"),(_vm.welcome)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.scheduledActivityData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.scheduledActivity,\"data\":_vm.scheduledActivityData}})],1),_vm._v(\" \"),(_vm.scheduledActivity)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.manifestData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.manifest,\"data\":_vm.manifestData}})],1),_vm._v(\" \"),(_vm.manifest)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.pleromaUserData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth,\"data-search\":\"Pleroma.User\"}},[_c('setting',{attrs:{\"setting-group\":_vm.pleromaUser,\"data\":_vm.pleromaUserData}})],1),_vm._v(\" \"),(_vm.pleromaUser)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.faviconsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.favicons,\"data\":_vm.faviconsData}})],1),_vm._v(\" \"),(_vm.favicons)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.uriSchemesData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.uriSchemes,\"data\":_vm.uriSchemesData}})],1),_vm._v(\" \"),(_vm.uriSchemes)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.feedData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.feed,\"data\":_vm.feedData}})],1),_vm._v(\" \"),(_vm.feed)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.streamerData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.streamer,\"data\":_vm.streamerData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./JobQueue.vue?vue&type=template&id=75886b5e&\"\nimport script from \"./JobQueue.vue?vue&type=script&lang=js&\"\nexport * from \"./JobQueue.vue?vue&type=script&lang=js&\"\nimport style0 from \"./JobQueue.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"JobQueue.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.obanQueuesData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.obanQueues,\"data\":_vm.obanQueuesData}})],1),_vm._v(\" \"),(_vm.obanQueues)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.workersData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.workers,\"data\":_vm.workersData}})],1),_vm._v(\" \"),(_vm.workers)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.activityExpirationData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.activityExpiration,\"data\":_vm.activityExpirationData}})],1),_vm._v(\" \"),(_vm.activityExpiration)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.connectionsPoolsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.connectionsPools,\"data\":_vm.connectionsPoolsData}})],1),_vm._v(\" \"),(_vm.connectionsPools)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.poolsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.pools,\"data\":_vm.poolsData}})],1),_vm._v(\" \"),(_vm.pools)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.hackneyPoolsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.hackneyPools,\"data\":_vm.hackneyPoolsData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkFormatter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkFormatter.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LinkFormatter.vue?vue&type=template&id=7fc32c68&\"\nimport script from \"./LinkFormatter.vue?vue&type=script&lang=js&\"\nexport * from \"./LinkFormatter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LinkFormatter.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"LinkFormatter.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.linkFormatterData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.linkFormatter,\"data\":_vm.linkFormatterData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Logger.vue?vue&type=template&id=17a20fb1&\"\nimport script from \"./Logger.vue?vue&type=script&lang=js&\"\nexport * from \"./Logger.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Logger.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Logger.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.loggerData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.logger,\"data\":_vm.loggerData}})],1),_vm._v(\" \"),(_vm.logger)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.consoleData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.console,\"data\":_vm.consoleData}})],1),_vm._v(\" \"),(_vm.console)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.exsysloggerData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.exsyslogger,\"data\":_vm.exsysloggerData}})],1),_vm._v(\" \"),(_vm.exsyslogger)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.quackData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.quack,\"data\":_vm.quackData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mailer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mailer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Mailer.vue?vue&type=template&id=2076a984&\"\nimport script from \"./Mailer.vue?vue&type=script&lang=js&\"\nexport * from \"./Mailer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Mailer.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Mailer.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.mailerData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mailer,\"data\":_vm.mailerData}})],1),_vm._v(\" \"),(_vm.mailer)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.swooshData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.swoosh,\"data\":_vm.swooshData}})],1),_vm._v(\" \"),(_vm.swoosh)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.emailNotificationsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.emailNotifications,\"data\":_vm.emailNotificationsData}})],1),_vm._v(\" \"),(_vm.emailNotifications)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.userEmailData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.userEmail,\"data\":_vm.userEmailData}})],1),_vm._v(\" \"),(_vm.userEmail)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.newUsersDigestEmailData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.newUsersDigestEmail,\"data\":_vm.newUsersDigestEmailData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaProxy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaProxy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MediaProxy.vue?vue&type=template&id=2a6ebcaa&\"\nimport script from \"./MediaProxy.vue?vue&type=script&lang=js&\"\nexport * from \"./MediaProxy.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MediaProxy.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"MediaProxy.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[(!_vm.loading)?_c('el-form',{attrs:{\"model\":_vm.mediaProxyData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mediaProxy,\"data\":_vm.mediaProxyData}})],1):_vm._e(),_vm._v(\" \"),(_vm.mediaProxy)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('el-form',{attrs:{\"model\":_vm.httpInvalidationData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.httpInvalidation,\"data\":_vm.httpInvalidationData}})],1):_vm._e(),_vm._v(\" \"),(_vm.httpInvalidation)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('el-form',{attrs:{\"model\":_vm.scriptInvalidationData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.scriptInvalidation,\"data\":_vm.scriptInvalidationData}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Metadata.vue?vue&type=template&id=20e3cd95&\"\nimport script from \"./Metadata.vue?vue&type=script&lang=js&\"\nexport * from \"./Metadata.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Metadata.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Metadata.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.metadataData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.metadata,\"data\":_vm.metadataData}})],1),_vm._v(\" \"),(_vm.metadata)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.richMediaData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.richMedia,\"data\":_vm.richMediaData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MRF.vue?vue&type=template&id=5f89373d&\"\nimport script from \"./MRF.vue?vue&type=script&lang=js&\"\nexport * from \"./MRF.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MRF.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"MRF.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_vm._l((_vm.mrfSettings),function(setting){return _c('div',{key:setting.key},[(_vm.showMrfPolicy(setting.key))?_c('el-form',{attrs:{\"model\":_vm.getSettingData(setting),\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":setting,\"data\":_vm.getSettingData(setting)}}),_vm._v(\" \"),(setting)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e()],1):_vm._e()],1)}),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Other.vue?vue&type=template&id=0adcbe4a&\"\nimport script from \"./Other.vue?vue&type=script&lang=js&\"\nexport * from \"./Other.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Other.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Other.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('editor-input',{attrs:{\"name\":'terms-of-service'},on:{\"input\":_vm.handleEditorUpdate},model:{value:(_vm.termsOfServicesContent),callback:function ($$v) {_vm.termsOfServicesContent=$$v},expression:\"termsOfServicesContent\"}}),_vm._v(\" \"),_c('el-divider',{staticClass:\"divider thick-line\"}),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.mimeTypesData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.mimeTypes,\"data\":_vm.mimeTypesData}})],1),_vm._v(\" \"),(_vm.mimeTypes)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.remoteIpData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.remoteIp,\"data\":_vm.remoteIpData}})],1),_vm._v(\" \"),(_vm.remoteIpData)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.modulesData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.modules,\"data\":_vm.modulesData}})],1),_vm._v(\" \"),(_vm.castAndValidate)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.castAndValidateData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.castAndValidate,\"data\":_vm.castAndValidateData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimiters.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimiters.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RateLimiters.vue?vue&type=template&id=7dcebd79&\"\nimport script from \"./RateLimiters.vue?vue&type=script&lang=js&\"\nexport * from \"./RateLimiters.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RateLimiters.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"RateLimiters.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[(!_vm.loading)?_c('el-form',{attrs:{\"model\":_vm.rateLimitersData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.rateLimiters,\"data\":_vm.rateLimitersData}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Relays.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Relays.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Relays.vue?vue&type=template&id=ea95544e&\"\nimport script from \"./Relays.vue?vue&type=script&lang=js&\"\nexport * from \"./Relays.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Relays.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Relays.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"relays-container\"},[_c('div',{staticClass:\"follow-relay-container\"},[_c('el-input',{staticClass:\"follow-relay\",attrs:{\"placeholder\":_vm.$t('settings.followRelay')},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.followRelay($event)}},model:{value:(_vm.newRelay),callback:function ($$v) {_vm.newRelay=$$v},expression:\"newRelay\"}}),_vm._v(\" \"),_c('el-button',{nativeOn:{\"click\":function($event){return _vm.followRelay($event)}}},[_vm._v(_vm._s(_vm.$t('settings.follow')))])],1),_vm._v(\" \"),_c('el-table',{attrs:{\"data\":_vm.relays}},[_c('el-table-column',{attrs:{\"label\":_vm.$t('settings.instanceUrl'),\"prop\":\"actor\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('settings.followedBack'),\"width\":_vm.getLabelWidth,\"prop\":\"followed_back\",\"align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('i',{class:scope.row.followed_back ? 'el-icon-check' : 'el-icon-minus'})]}}],null,false,237257305)}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('table.actions'),\"width\":_vm.getLabelWidth,\"fixed\":\"right\",\"align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},nativeOn:{\"click\":function($event){return _vm.deleteRelay(scope.row.actor)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('table.unfollow'))+\"\\n \")])]}}],null,false,877363589)})],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Upload.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Upload.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Upload.vue?vue&type=template&id=ae996124&\"\nimport script from \"./Upload.vue?vue&type=script&lang=js&\"\nexport * from \"./Upload.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Upload.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Upload.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[_c('el-form',{attrs:{\"model\":_vm.uploadData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.upload,\"data\":_vm.uploadData}})],1),_vm._v(\" \"),(_vm.upload)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),(_vm.showUploadersLocal)?_c('el-form',{attrs:{\"model\":_vm.uploadersLocalData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.uploadersLocal,\"data\":_vm.uploadersLocalData}}),_vm._v(\" \"),(_vm.uploadersLocal)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.showUploadersS3)?_c('el-form',{attrs:{\"model\":_vm.s3Data,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.s3,\"data\":_vm.s3Data}}),_vm._v(\" \"),(_vm.s3)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.showUploadersS3)?_c('el-form',{attrs:{\"model\":_vm.uploadersS3Data,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.uploadersS3,\"data\":_vm.uploadersS3Data}}),_vm._v(\" \"),(_vm.uploadersS3)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.uploadFilterMogrifyData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.uploadFilterMogrify,\"data\":_vm.uploadFilterMogrifyData}})],1),_vm._v(\" \"),(_vm.uploadFilterMogrify)?_c('el-divider',{staticClass:\"divider thick-line\"}):_vm._e(),_vm._v(\" \"),_c('el-form',{attrs:{\"model\":_vm.uploadAnonymizeFilenameData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.uploadAnonymizeFilename,\"data\":_vm.uploadAnonymizeFilenameData}})],1),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebPush.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebPush.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WebPush.vue?vue&type=template&id=3ddc7c01&\"\nimport script from \"./WebPush.vue?vue&type=script&lang=js&\"\nexport * from \"./WebPush.vue?vue&type=script&lang=js&\"\nimport style0 from \"./WebPush.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"WebPush.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"form-container\",class:_vm.isSidebarOpen},[(!_vm.loading)?_c('el-form',{attrs:{\"model\":_vm.vapidDetailsData,\"label-position\":_vm.labelPosition,\"label-width\":_vm.labelWidth}},[_c('setting',{attrs:{\"setting-group\":_vm.vapidDetails,\"data\":_vm.vapidDetailsData}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"submit-button-container\"},[_c('el-button',{staticClass:\"submit-button\",attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","export const tabs = description => {\n return {\n 'activity-pub': {\n label: 'settings.activityPub',\n settings: [':activitypub', ':user']\n },\n 'authentication': {\n label: 'settings.auth',\n settings: [':auth', ':ldap', ':oauth2', 'Pleroma.Web.Auth.Authenticator']\n },\n 'esshd': {\n label: 'settings.esshd',\n settings: [':esshd']\n },\n 'captcha': {\n label: 'settings.captcha',\n settings: ['Pleroma.Captcha', 'Pleroma.Captcha.Kocaptcha']\n },\n 'frontend': {\n label: 'settings.frontend',\n settings: [':assets', ':chat', ':frontends', ':emoji', ':frontend_configurations', ':markup', ':static_fe']\n },\n 'gopher': {\n label: 'settings.gopher',\n settings: [':gopher']\n },\n 'http': {\n label: 'settings.http',\n settings: [':cors_plug', ':http', ':http_security', ':web_cache_ttl']\n },\n 'instance': {\n label: 'settings.instance',\n settings: [':admin_token', ':instance', ':instance_panel', ':instances_favicons', ':welcome', ':manifest', 'Pleroma.User', 'Pleroma.ScheduledActivity', ':uri_schemes', ':feed', ':streamer', ':restrict_unauthenticated']\n },\n 'job-queue': {\n label: 'settings.jobQueue',\n settings: ['Pleroma.ActivityExpiration', ':connections_pool', ':hackney_pools', 'Oban', ':pools', ':workers']\n },\n 'link-formatter': {\n label: 'settings.linkFormatter',\n settings: ['Pleroma.Formatter']\n },\n 'logger': {\n label: 'settings.logger',\n settings: [':console', ':ex_syslogger', ':quack', ':logger']\n },\n 'mailer': {\n label: 'settings.mailer',\n settings: [':email_notifications', 'Pleroma.Emails.Mailer', 'Pleroma.Emails.UserEmail', ':swoosh', 'Pleroma.Emails.NewUsersDigestEmail']\n },\n 'media-proxy': {\n label: 'settings.mediaProxy',\n settings: [':media_proxy', 'Pleroma.Web.MediaProxy.Invalidation.Http', 'Pleroma.Web.MediaProxy.Invalidation.Script']\n },\n 'metadata': {\n label: 'settings.metadata',\n settings: ['Pleroma.Web.Metadata', ':rich_media']\n },\n 'mrf': {\n label: 'settings.mrf',\n settings: description.filter(el => el.tab === 'mrf').map(setting => setting.key)\n },\n 'rate-limiters': {\n label: 'settings.rateLimiters',\n settings: [':rate_limit']\n },\n 'relays': {\n label: 'settings.relays',\n settings: ['relays']\n },\n 'web-push': {\n label: 'settings.webPush',\n settings: [':vapid_details']\n },\n 'upload': {\n label: 'settings.upload',\n settings: ['Pleroma.Upload.Filter.AnonymizeFilename', 'Pleroma.Upload.Filter.Mogrify', 'Pleroma.Uploaders.S3', 'Pleroma.Uploaders.Local', 'Pleroma.Upload', ':s3']\n },\n 'other': {\n label: 'settings.other',\n settings: [':mime', 'Pleroma.Plugs.RemoteIp', ':modules', 'Pleroma.Web.ApiSpec.CastAndValidate', ':terms_of_services']\n }\n }\n}\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=82f78b3e&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=82f78b3e&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"82f78b3e\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimitInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimitInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProxyUrlInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProxyUrlInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditableKeywordInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditableKeywordInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconsInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkFormatter.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkFormatter.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Inputs.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Inputs.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageUploadInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js??ref--11-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageUploadInput.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-commons.51fe2926.js.map b/priv/static/adminfe/static/js/chunk-commons.51fe2926.js.map deleted file mode 100644 index 7d55c69d6..000000000 --- a/priv/static/adminfe/static/js/chunk-commons.51fe2926.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/components/Status/index.vue?aecc","webpack:///./src/components/Status/index.vue?b843","webpack:///./src/components/Status/index.vue?6071","webpack:///src/components/Status/index.vue","webpack:///./src/components/Status/index.vue","webpack:///./src/components/RebootButton/index.vue?8db4","webpack:///./src/components/RebootButton/index.vue?2f45","webpack:///src/components/RebootButton/index.vue","webpack:///./src/components/RebootButton/index.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","components_Statusvue_type_script_lang_js_","name","props","account","type","Object","required","default","fetchStatusesByInstance","Boolean","showCheckbox","status","page","Number","userId","String","godmode","data","showHiddenStatus","methods","capitalizeFirstLetter","str","charAt","toUpperCase","slice","changeStatus","statusId","isSensitive","visibility","this","$store","dispatch","reportCurrentPage","deleteStatus","_this","$confirm","confirmButtonText","cancelButtonText","then","$message","message","catch","handleStatusSelection","$emit","handleRouteChange","$router","push","params","id","optionPercent","poll","pollOption","allVotes","options","reduce","acc","option","votes_count","toFixed","parseTimestamp","timestamp","moment_default","format","propertyExists","property","_secondProperty","component","componentNormalizer","_vm","_h","$createElement","_c","_self","deleted","staticClass","attrs","slot","_v","_s","$t","domProps","innerHTML","content","created_at","_e","href","url","target","on","click","$event","stopPropagation","nativeOn","change","to","src","avatar","nickname","size","trigger","plain","icon","sensitive","spoiler_text","_l","index","key","title","percentage","attachment","preview_url","__file","__webpack_exports__","components_RebootButtonvue_type_script_lang_js_","computed","needReboot","state","app","restartApp","_restartApp","asyncToGenerator_default","regenerator_default","a","mark","_callee","wrap","_context","prev","next","t0","abrupt","lang","t","stop","apply","arguments","placement"],"mappings":"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","file":"static/js/chunk-commons.51fe2926.js","sourcesContent":["import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.status.deleted)?_c('el-card',{staticClass:\"status-card\",nativeOn:{\"click\":function($event){return _vm.handleRouteChange()}}},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',{staticClass:\"status-header\"},[_c('div',{staticClass:\"status-account-container\"},[_c('div',{staticClass:\"status-account\"},[(_vm.showCheckbox)?_c('el-checkbox',{staticClass:\"status-checkbox\",on:{\"change\":function($event){return _vm.handleStatusSelection(_vm.account)}}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.account, 'id'))?_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":{ name: 'UsersShow', params: { id: _vm.account.id }}},nativeOn:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',{staticClass:\"status-card-header\"},[(_vm.propertyExists(_vm.account, 'avatar'))?_c('img',{staticClass:\"status-avatar-img\",attrs:{\"src\":_vm.account.avatar}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.account, 'nickname'))?_c('span',{staticClass:\"status-account-name\"},[_vm._v(_vm._s(_vm.account.nickname))]):_c('span',[(_vm.propertyExists(_vm.account, 'nickname'))?_c('span',{staticClass:\"status-account-name\"},[_vm._v(\"\\n \"+_vm._s(_vm.account.nickname)+\"\\n \")]):_c('span',{staticClass:\"status-account-name deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")])])])]):_vm._e()],1)]),_vm._v(\" \"),_c('div',{staticClass:\"status-actions\"},[_c('div',{staticClass:\"status-tags\"},[(_vm.status.sensitive)?_c('el-tag',{attrs:{\"type\":\"warning\",\"size\":\"large\"}},[_vm._v(_vm._s(_vm.$t('reports.sensitive')))]):_vm._e(),_vm._v(\" \"),_c('el-tag',{attrs:{\"size\":\"large\"}},[_vm._v(_vm._s(_vm.capitalizeFirstLetter(_vm.status.visibility)))])],1),_vm._v(\" \"),_c('el-dropdown',{attrs:{\"trigger\":\"click\"},nativeOn:{\"click\":function($event){$event.stopPropagation();}}},[_c('el-button',{staticClass:\"status-actions-button\",attrs:{\"plain\":\"\",\"size\":\"small\",\"icon\":\"el-icon-edit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.changeScope'))),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(!_vm.status.sensitive)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, true, _vm.status.visibility)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.addSensitive'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.sensitive)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, false, _vm.status.visibility)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.removeSensitive'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.visibility !== 'public')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, _vm.status.sensitive, 'public')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.public'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.visibility !== 'private')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, _vm.status.sensitive, 'private')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.private'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.visibility !== 'unlisted')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, _vm.status.sensitive, 'unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.unlisted'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.deleteStatus(_vm.status.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.deleteStatus'))+\"\\n \")])],1)],1)],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"status-body\"},[(_vm.status.spoiler_text)?_c('div',[_c('strong',[_vm._v(_vm._s(_vm.status.spoiler_text))]),_vm._v(\" \"),(!_vm.showHiddenStatus)?_c('el-button',{staticClass:\"show-more-button\",attrs:{\"size\":\"mini\"},on:{\"click\":function($event){_vm.showHiddenStatus = true}}},[_vm._v(\"Show more\")]):_vm._e(),_vm._v(\" \"),(_vm.showHiddenStatus)?_c('el-button',{staticClass:\"show-more-button\",attrs:{\"size\":\"mini\"},on:{\"click\":function($event){_vm.showHiddenStatus = false}}},[_vm._v(\"Show less\")]):_vm._e(),_vm._v(\" \"),(_vm.showHiddenStatus)?_c('div',[_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(_vm.status.content)}}),_vm._v(\" \"),(_vm.status.poll)?_c('div',{staticClass:\"poll\"},[_c('ul',_vm._l((_vm.status.poll.options),function(option,index){return _c('li',{key:index},[_vm._v(\"\\n \"+_vm._s(option.title)+\"\\n \"),_c('el-progress',{attrs:{\"percentage\":_vm.optionPercent(_vm.status.poll, option)}})],1)}),0)]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.status.media_attachments),function(attachment,index){return _c('div',{key:index,staticClass:\"image\"},[_c('img',{attrs:{\"src\":attachment.preview_url}})])})],2):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.status.spoiler_text)?_c('div',[_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(_vm.status.content)}}),_vm._v(\" \"),(_vm.status.poll)?_c('div',{staticClass:\"poll\"},[_c('ul',_vm._l((_vm.status.poll.options),function(option,index){return _c('li',{key:index},[_vm._v(\"\\n \"+_vm._s(option.title)+\"\\n \"),_c('el-progress',{attrs:{\"percentage\":_vm.optionPercent(_vm.status.poll, option)}})],1)}),0)]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.status.media_attachments),function(attachment,index){return _c('div',{key:index,staticClass:\"image\"},[_c('img',{attrs:{\"src\":attachment.preview_url}})])})],2):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"status-footer\"},[_c('span',{staticClass:\"status-created-at\"},[_vm._v(_vm._s(_vm.parseTimestamp(_vm.status.created_at)))]),_vm._v(\" \"),(_vm.status.url)?_c('a',{staticClass:\"account\",attrs:{\"href\":_vm.status.url,\"target\":\"_blank\"},on:{\"click\":function($event){$event.stopPropagation();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.openStatusInInstance'))+\"\\n \"),_c('i',{staticClass:\"el-icon-top-right\"})]):_vm._e()])])]):_c('el-card',{staticClass:\"status-card\"},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',{staticClass:\"status-header\"},[_c('div',{staticClass:\"status-account-container\"},[_c('div',{staticClass:\"status-account\"},[_c('h4',{staticClass:\"status-deleted\"},[_vm._v(_vm._s(_vm.$t('reports.statusDeleted')))])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"status-body\"},[(_vm.status.content)?_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(_vm.status.content)}}):_c('span',{staticClass:\"status-without-content\"},[_vm._v(\"no content\")])]),_vm._v(\" \"),_c('div',{staticClass:\"status-footer\"},[(_vm.status.created_at)?_c('span',{staticClass:\"status-created-at\"},[_vm._v(_vm._s(_vm.parseTimestamp(_vm.status.created_at)))]):_vm._e(),_vm._v(\" \"),(_vm.status.url)?_c('a',{staticClass:\"account\",attrs:{\"href\":_vm.status.url,\"target\":\"_blank\"},on:{\"click\":function($event){$event.stopPropagation();}}},[_vm._v(\"\\n Open status in instance\\n \"),_c('i',{staticClass:\"el-icon-top-right\"})]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=69419e6d&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.needReboot)?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.restartApp'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"reboot-button\",attrs:{\"type\":\"warning\"},on:{\"click\":_vm.restartApp}},[_c('span',[_c('i',{staticClass:\"el-icon-refresh\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.instanceReboot'))+\"\\n \")])])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=53cfaf1d&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-commons.51fe2926.js b/priv/static/adminfe/static/js/chunk-commons.a6002038.js similarity index 89% rename from priv/static/adminfe/static/js/chunk-commons.51fe2926.js rename to priv/static/adminfe/static/js/chunk-commons.a6002038.js index 3fe10f0d3..2b16da9c7 100644 --- a/priv/static/adminfe/static/js/chunk-commons.51fe2926.js +++ b/priv/static/adminfe/static/js/chunk-commons.a6002038.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-commons"],{Kw8l:function(t,s,e){"use strict";var a=e("cRgN");e.n(a).a},cRgN:function(t,s,e){},ot3S:function(t,s,e){"use strict";var a=e("wd/R"),n=e.n(a),i={name:"Status",props:{account:{type:Object,required:!1,default:function(){return{}}},fetchStatusesByInstance:{type:Boolean,required:!1,default:!1},showCheckbox:{type:Boolean,required:!0,default:!1},status:{type:Object,required:!0},page:{type:Number,required:!1,default:0},userId:{type:String,required:!1,default:""},godmode:{type:Boolean,required:!1,default:!1}},data:function(){return{showHiddenStatus:!1}},methods:{capitalizeFirstLetter:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},changeStatus:function(t,s,e){this.$store.dispatch("ChangeStatusScope",{statusId:t,isSensitive:s,visibility:e,reportCurrentPage:this.page,userId:this.userId,godmode:this.godmode,fetchStatusesByInstance:this.fetchStatusesByInstance})},deleteStatus:function(t){var s=this;this.$confirm("Are you sure you want to delete this status?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){s.$store.dispatch("DeleteStatus",{statusId:t,reportCurrentPage:s.page,userId:s.userId,godmode:s.godmode,fetchStatusesByInstance:s.fetchStatusesByInstance}),s.$message({type:"success",message:"Delete completed"})}).catch(function(){s.$message({type:"info",message:"Delete canceled"})})},handleStatusSelection:function(t){this.$emit("status-selection",t)},handleRouteChange:function(){this.$router.push({name:"StatusShow",params:{id:this.status.id}})},optionPercent:function(t,s){var e=t.options.reduce(function(t,s){return t+s.votes_count},0);return 0===e?0:+(s.votes_count/e*100).toFixed(1)},parseTimestamp:function(t){return n()(t).format("YYYY-MM-DD HH:mm")},propertyExists:function(t,s,e){return e?t[s]&&t[e]:t[s]}}},o=(e("Kw8l"),e("KHd+")),r=Object(o.a)(i,function(){var t=this,s=t.$createElement,e=t._self._c||s;return t.status.deleted?e("el-card",{staticClass:"status-card"},[e("div",{attrs:{slot:"header"},slot:"header"},[e("div",{staticClass:"status-header"},[e("div",{staticClass:"status-account-container"},[e("div",{staticClass:"status-account"},[e("h4",{staticClass:"status-deleted"},[t._v(t._s(t.$t("reports.statusDeleted")))])])])])]),t._v(" "),e("div",{staticClass:"status-body"},[t.status.content?e("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}}):e("span",{staticClass:"status-without-content"},[t._v("no content")])]),t._v(" "),e("div",{staticClass:"status-footer"},[t.status.created_at?e("span",{staticClass:"status-created-at"},[t._v(t._s(t.parseTimestamp(t.status.created_at)))]):t._e(),t._v(" "),t.status.url?e("a",{staticClass:"account",attrs:{href:t.status.url,target:"_blank"},on:{click:function(t){t.stopPropagation()}}},[t._v("\n Open status in instance\n "),e("i",{staticClass:"el-icon-top-right"})]):t._e()])]):e("el-card",{staticClass:"status-card",nativeOn:{click:function(s){return t.handleRouteChange()}}},[e("div",{attrs:{slot:"header"},slot:"header"},[e("div",{staticClass:"status-header"},[e("div",{staticClass:"status-account-container"},[e("div",{staticClass:"status-account"},[t.showCheckbox?e("el-checkbox",{staticClass:"status-checkbox",on:{change:function(s){return t.handleStatusSelection(t.account)}}}):t._e(),t._v(" "),t.propertyExists(t.account,"id")?e("router-link",{staticClass:"router-link",attrs:{to:{name:"UsersShow",params:{id:t.account.id}}},nativeOn:{click:function(t){t.stopPropagation()}}},[e("div",{staticClass:"status-card-header"},[t.propertyExists(t.account,"avatar")?e("img",{staticClass:"status-avatar-img",attrs:{src:t.account.avatar}}):t._e(),t._v(" "),t.propertyExists(t.account,"nickname")?e("span",{staticClass:"status-account-name"},[t._v(t._s(t.account.nickname))]):e("span",[t.propertyExists(t.account,"nickname")?e("span",{staticClass:"status-account-name"},[t._v("\n "+t._s(t.account.nickname)+"\n ")]):e("span",{staticClass:"status-account-name deactivated"},[t._v("("+t._s(t.$t("users.invalidNickname"))+")")])])])]):t._e()],1)]),t._v(" "),e("div",{staticClass:"status-actions"},[e("div",{staticClass:"status-tags"},[t.status.sensitive?e("el-tag",{attrs:{type:"warning",size:"large"}},[t._v(t._s(t.$t("reports.sensitive")))]):t._e(),t._v(" "),e("el-tag",{attrs:{size:"large"}},[t._v(t._s(t.capitalizeFirstLetter(t.status.visibility)))])],1),t._v(" "),e("el-dropdown",{attrs:{trigger:"click"},nativeOn:{click:function(t){t.stopPropagation()}}},[e("el-button",{staticClass:"status-actions-button",attrs:{plain:"",size:"small",icon:"el-icon-edit"}},[t._v("\n "+t._s(t.$t("reports.changeScope"))),e("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),e("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[t.status.sensitive?t._e():e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,!0,t.status.visibility)}}},[t._v("\n "+t._s(t.$t("reports.addSensitive"))+"\n ")]),t._v(" "),t.status.sensitive?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,!1,t.status.visibility)}}},[t._v("\n "+t._s(t.$t("reports.removeSensitive"))+"\n ")]):t._e(),t._v(" "),"public"!==t.status.visibility?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,t.status.sensitive,"public")}}},[t._v("\n "+t._s(t.$t("reports.public"))+"\n ")]):t._e(),t._v(" "),"private"!==t.status.visibility?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,t.status.sensitive,"private")}}},[t._v("\n "+t._s(t.$t("reports.private"))+"\n ")]):t._e(),t._v(" "),"unlisted"!==t.status.visibility?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,t.status.sensitive,"unlisted")}}},[t._v("\n "+t._s(t.$t("reports.unlisted"))+"\n ")]):t._e(),t._v(" "),e("el-dropdown-item",{nativeOn:{click:function(s){return t.deleteStatus(t.status.id)}}},[t._v("\n "+t._s(t.$t("reports.deleteStatus"))+"\n ")])],1)],1)],1)])]),t._v(" "),e("div",{staticClass:"status-body"},[t.status.spoiler_text?e("div",[e("strong",[t._v(t._s(t.status.spoiler_text))]),t._v(" "),t.showHiddenStatus?t._e():e("el-button",{staticClass:"show-more-button",attrs:{size:"mini"},on:{click:function(s){t.showHiddenStatus=!0}}},[t._v("Show more")]),t._v(" "),t.showHiddenStatus?e("el-button",{staticClass:"show-more-button",attrs:{size:"mini"},on:{click:function(s){t.showHiddenStatus=!1}}},[t._v("Show less")]):t._e(),t._v(" "),t.showHiddenStatus?e("div",[e("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}}),t._v(" "),t.status.poll?e("div",{staticClass:"poll"},[e("ul",t._l(t.status.poll.options,function(s,a){return e("li",{key:a},[t._v("\n "+t._s(s.title)+"\n "),e("el-progress",{attrs:{percentage:t.optionPercent(t.status.poll,s)}})],1)}),0)]):t._e(),t._v(" "),t._l(t.status.media_attachments,function(t,s){return e("div",{key:s,staticClass:"image"},[e("img",{attrs:{src:t.preview_url}})])})],2):t._e()],1):t._e(),t._v(" "),t.status.spoiler_text?t._e():e("div",[e("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}}),t._v(" "),t.status.poll?e("div",{staticClass:"poll"},[e("ul",t._l(t.status.poll.options,function(s,a){return e("li",{key:a},[t._v("\n "+t._s(s.title)+"\n "),e("el-progress",{attrs:{percentage:t.optionPercent(t.status.poll,s)}})],1)}),0)]):t._e(),t._v(" "),t._l(t.status.media_attachments,function(t,s){return e("div",{key:s,staticClass:"image"},[e("img",{attrs:{src:t.preview_url}})])})],2),t._v(" "),e("div",{staticClass:"status-footer"},[e("span",{staticClass:"status-created-at"},[t._v(t._s(t.parseTimestamp(t.status.created_at)))]),t._v(" "),t.status.url?e("a",{staticClass:"account",attrs:{href:t.status.url,target:"_blank"},on:{click:function(t){t.stopPropagation()}}},[t._v("\n "+t._s(t.$t("statuses.openStatusInInstance"))+"\n "),e("i",{staticClass:"el-icon-top-right"})]):t._e()])])])},[],!1,null,null,null);r.options.__file="index.vue";s.a=r.exports},rIUS:function(t,s,e){"use strict";var a=e("o0o1"),n=e.n(a),i=e("yXPU"),o=e.n(i),r=e("mSNy"),c={name:"RebootButton",computed:{needReboot:function(){return this.$store.state.app.needReboot}},methods:{restartApp:function(){var t=o()(n.a.mark(function t(){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,this.$store.dispatch("RestartApplication");case 3:t.next=8;break;case 5:return t.prev=5,t.t0=t.catch(0),t.abrupt("return");case 8:this.$message({type:"success",message:r.a.t("settings.restartSuccess")});case 9:case"end":return t.stop()}},t,this,[[0,5]])}));return function(){return t.apply(this,arguments)}}()}},u=e("KHd+"),l=Object(u.a)(c,function(){var t=this.$createElement,s=this._self._c||t;return this.needReboot?s("el-tooltip",{attrs:{content:this.$t("settings.restartApp"),placement:"bottom-end"}},[s("el-button",{staticClass:"reboot-button",attrs:{type:"warning"},on:{click:this.restartApp}},[s("span",[s("i",{staticClass:"el-icon-refresh"}),this._v("\n "+this._s(this.$t("settings.instanceReboot"))+"\n ")])])],1):this._e()},[],!1,null,null,null);l.options.__file="index.vue";s.a=l.exports}}]); -//# sourceMappingURL=chunk-commons.51fe2926.js.map \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-commons"],{Kw8l:function(t,s,e){"use strict";var a=e("cRgN");e.n(a).a},cRgN:function(t,s,e){},ot3S:function(t,s,e){"use strict";var a=e("wd/R"),n=e.n(a),i={name:"Status",props:{account:{type:Object,required:!1,default:function(){return{}}},fetchStatusesByInstance:{type:Boolean,required:!1,default:!1},showCheckbox:{type:Boolean,required:!0,default:!1},status:{type:Object,required:!0},page:{type:Number,required:!1,default:0},userId:{type:String,required:!1,default:""},godmode:{type:Boolean,required:!1,default:!1}},data:function(){return{showHiddenStatus:!1}},methods:{capitalizeFirstLetter:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},changeStatus:function(t,s,e){this.$store.dispatch("ChangeStatusScope",{statusId:t,isSensitive:s,visibility:e,reportCurrentPage:this.page,userId:this.userId,godmode:this.godmode,fetchStatusesByInstance:this.fetchStatusesByInstance})},deleteStatus:function(t){var s=this;this.$confirm("Are you sure you want to delete this status?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){s.$store.dispatch("DeleteStatus",{statusId:t,reportCurrentPage:s.page,userId:s.userId,godmode:s.godmode,fetchStatusesByInstance:s.fetchStatusesByInstance}),s.$message({type:"success",message:"Delete completed"})}).catch(function(){s.$message({type:"info",message:"Delete canceled"})})},handleStatusSelection:function(t){this.$emit("status-selection",t)},handleRouteChange:function(){this.$router.push({name:"StatusShow",params:{id:this.status.id}})},optionPercent:function(t,s){var e=t.options.reduce(function(t,s){return t+s.votes_count},0);return 0===e?0:+(s.votes_count/e*100).toFixed(1)},parseTimestamp:function(t){return n()(t).format("YYYY-MM-DD HH:mm")},propertyExists:function(t,s,e){return e?t[s]&&t[e]:t[s]}}},o=(e("Kw8l"),e("KHd+")),r=Object(o.a)(i,function(){var t=this,s=t.$createElement,e=t._self._c||s;return t.status.deleted?e("el-card",{staticClass:"status-card"},[e("div",{attrs:{slot:"header"},slot:"header"},[e("div",{staticClass:"status-header"},[e("div",{staticClass:"status-account-container"},[e("div",{staticClass:"status-account"},[e("h4",{staticClass:"status-deleted"},[t._v(t._s(t.$t("reports.statusDeleted")))])])])])]),t._v(" "),e("div",{staticClass:"status-body"},[t.status.content?e("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}}):e("span",{staticClass:"status-without-content"},[t._v("no content")])]),t._v(" "),e("div",{staticClass:"status-footer"},[t.status.created_at?e("span",{staticClass:"status-created-at"},[t._v(t._s(t.parseTimestamp(t.status.created_at)))]):t._e(),t._v(" "),t.status.url?e("a",{staticClass:"account",attrs:{href:t.status.url,target:"_blank"},on:{click:function(t){t.stopPropagation()}}},[t._v("\n Open status in instance\n "),e("i",{staticClass:"el-icon-top-right"})]):t._e()])]):e("el-card",{staticClass:"status-card",nativeOn:{click:function(s){return t.handleRouteChange()}}},[e("div",{attrs:{slot:"header"},slot:"header"},[e("div",{staticClass:"status-header"},[e("div",{staticClass:"status-account-container"},[e("div",{staticClass:"status-account"},[t.showCheckbox?e("el-checkbox",{staticClass:"status-checkbox",on:{change:function(s){return t.handleStatusSelection(t.account)}}}):t._e(),t._v(" "),t.propertyExists(t.account,"id")?e("router-link",{staticClass:"router-link",attrs:{to:{name:"UsersShow",params:{id:t.account.id}}},nativeOn:{click:function(t){t.stopPropagation()}}},[e("div",{staticClass:"status-card-header"},[t.propertyExists(t.account,"avatar")?e("img",{staticClass:"status-avatar-img",attrs:{src:t.account.avatar}}):t._e(),t._v(" "),t.propertyExists(t.account,"nickname")?e("span",{staticClass:"status-account-name"},[t._v(t._s(t.account.nickname))]):e("span",[t.propertyExists(t.account,"nickname")?e("span",{staticClass:"status-account-name"},[t._v("\n "+t._s(t.account.nickname)+"\n ")]):e("span",{staticClass:"status-account-name deactivated"},[t._v("("+t._s(t.$t("users.invalidNickname"))+")")])])])]):t._e()],1)]),t._v(" "),e("div",{staticClass:"status-actions"},[e("div",{staticClass:"status-tags"},[t.status.sensitive?e("el-tag",{attrs:{type:"warning",size:"large"}},[t._v(t._s(t.$t("reports.sensitive")))]):t._e(),t._v(" "),e("el-tag",{attrs:{size:"large"}},[t._v(t._s(t.capitalizeFirstLetter(t.status.visibility)))])],1),t._v(" "),e("el-dropdown",{attrs:{trigger:"click"},nativeOn:{click:function(t){t.stopPropagation()}}},[e("el-button",{staticClass:"status-actions-button",attrs:{plain:"",size:"small",icon:"el-icon-edit"}},[t._v("\n "+t._s(t.$t("reports.changeScope"))),e("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),e("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[t.status.sensitive?t._e():e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,!0,t.status.visibility)}}},[t._v("\n "+t._s(t.$t("reports.addSensitive"))+"\n ")]),t._v(" "),t.status.sensitive?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,!1,t.status.visibility)}}},[t._v("\n "+t._s(t.$t("reports.removeSensitive"))+"\n ")]):t._e(),t._v(" "),"public"!==t.status.visibility?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,t.status.sensitive,"public")}}},[t._v("\n "+t._s(t.$t("reports.public"))+"\n ")]):t._e(),t._v(" "),"private"!==t.status.visibility?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,t.status.sensitive,"private")}}},[t._v("\n "+t._s(t.$t("reports.private"))+"\n ")]):t._e(),t._v(" "),"unlisted"!==t.status.visibility?e("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(t.status.id,t.status.sensitive,"unlisted")}}},[t._v("\n "+t._s(t.$t("reports.unlisted"))+"\n ")]):t._e(),t._v(" "),e("el-dropdown-item",{nativeOn:{click:function(s){return t.deleteStatus(t.status.id)}}},[t._v("\n "+t._s(t.$t("reports.deleteStatus"))+"\n ")])],1)],1)],1)])]),t._v(" "),e("div",{staticClass:"status-body"},[t.status.spoiler_text?e("div",[e("strong",[t._v(t._s(t.status.spoiler_text))]),t._v(" "),t.showHiddenStatus?t._e():e("el-button",{staticClass:"show-more-button",attrs:{size:"mini"},on:{click:function(s){t.showHiddenStatus=!0}}},[t._v("Show more")]),t._v(" "),t.showHiddenStatus?e("el-button",{staticClass:"show-more-button",attrs:{size:"mini"},on:{click:function(s){t.showHiddenStatus=!1}}},[t._v("Show less")]):t._e(),t._v(" "),t.showHiddenStatus?e("div",[e("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}}),t._v(" "),t.status.poll?e("div",{staticClass:"poll"},[e("ul",t._l(t.status.poll.options,function(s,a){return e("li",{key:a},[t._v("\n "+t._s(s.title)+"\n "),e("el-progress",{attrs:{percentage:t.optionPercent(t.status.poll,s)}})],1)}),0)]):t._e(),t._v(" "),t._l(t.status.media_attachments,function(t,s){return e("div",{key:s,staticClass:"image"},[e("img",{attrs:{src:t.preview_url}})])})],2):t._e()],1):t._e(),t._v(" "),t.status.spoiler_text?t._e():e("div",[e("span",{staticClass:"status-content",domProps:{innerHTML:t._s(t.status.content)}}),t._v(" "),t.status.poll?e("div",{staticClass:"poll"},[e("ul",t._l(t.status.poll.options,function(s,a){return e("li",{key:a},[t._v("\n "+t._s(s.title)+"\n "),e("el-progress",{attrs:{percentage:t.optionPercent(t.status.poll,s)}})],1)}),0)]):t._e(),t._v(" "),t._l(t.status.media_attachments,function(t,s){return e("div",{key:s,staticClass:"image"},[e("img",{attrs:{src:t.preview_url}})])})],2),t._v(" "),e("div",{staticClass:"status-footer"},[e("span",{staticClass:"status-created-at"},[t._v(t._s(t.parseTimestamp(t.status.created_at)))]),t._v(" "),t.status.url?e("a",{staticClass:"account",attrs:{href:t.status.url,target:"_blank"},on:{click:function(t){t.stopPropagation()}}},[t._v("\n "+t._s(t.$t("statuses.openStatusInInstance"))+"\n "),e("i",{staticClass:"el-icon-top-right"})]):t._e()])])])},[],!1,null,null,null);r.options.__file="index.vue";s.a=r.exports},rIUS:function(t,s,e){"use strict";var a=e("o0o1"),n=e.n(a),i=e("yXPU"),o=e.n(i),r=e("mSNy"),c={name:"RebootButton",computed:{needReboot:function(){return this.$store.state.app.needReboot}},methods:{restartApp:function(){var t=this;return o()(n.a.mark(function s(){return n.a.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return s.prev=0,s.next=3,t.$store.dispatch("RestartApplication");case 3:s.next=8;break;case 5:return s.prev=5,s.t0=s.catch(0),s.abrupt("return");case 8:t.$message({type:"success",message:r.a.t("settings.restartSuccess")});case 9:case"end":return s.stop()}},s,null,[[0,5]])}))()}}},u=e("KHd+"),l=Object(u.a)(c,function(){var t=this.$createElement,s=this._self._c||t;return this.needReboot?s("el-tooltip",{attrs:{content:this.$t("settings.restartApp"),placement:"bottom-end"}},[s("el-button",{staticClass:"reboot-button",attrs:{type:"warning"},on:{click:this.restartApp}},[s("span",[s("i",{staticClass:"el-icon-refresh"}),this._v("\n "+this._s(this.$t("settings.instanceReboot"))+"\n ")])])],1):this._e()},[],!1,null,null,null);l.options.__file="index.vue";s.a=l.exports}}]); +//# sourceMappingURL=chunk-commons.a6002038.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-commons.a6002038.js.map b/priv/static/adminfe/static/js/chunk-commons.a6002038.js.map new file mode 100644 index 000000000..3c7d78861 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-commons.a6002038.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/components/Status/index.vue?aecc","webpack:///./src/components/Status/index.vue?b843","webpack:///./src/components/Status/index.vue?6071","webpack:///src/components/Status/index.vue","webpack:///./src/components/Status/index.vue","webpack:///./src/components/RebootButton/index.vue?8db4","webpack:///./src/components/RebootButton/index.vue?2f45","webpack:///src/components/RebootButton/index.vue","webpack:///./src/components/RebootButton/index.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","components_Statusvue_type_script_lang_js_","name","props","account","type","Object","required","default","fetchStatusesByInstance","Boolean","showCheckbox","status","page","Number","userId","String","godmode","data","showHiddenStatus","methods","capitalizeFirstLetter","str","charAt","toUpperCase","slice","changeStatus","statusId","isSensitive","visibility","this","$store","dispatch","reportCurrentPage","deleteStatus","_this","$confirm","confirmButtonText","cancelButtonText","then","$message","message","catch","handleStatusSelection","$emit","handleRouteChange","$router","push","params","id","optionPercent","poll","pollOption","allVotes","options","reduce","acc","option","votes_count","toFixed","parseTimestamp","timestamp","moment_default","format","propertyExists","property","_secondProperty","component","componentNormalizer","_vm","_h","$createElement","_c","_self","deleted","staticClass","attrs","slot","_v","_s","$t","domProps","innerHTML","content","created_at","_e","href","url","target","on","click","$event","stopPropagation","nativeOn","change","to","src","avatar","nickname","size","trigger","plain","icon","sensitive","spoiler_text","_l","index","key","title","percentage","attachment","preview_url","__file","__webpack_exports__","components_RebootButtonvue_type_script_lang_js_","computed","needReboot","state","app","restartApp","asyncToGenerator_default","regenerator_default","a","mark","_callee","wrap","_context","prev","next","t0","abrupt","lang","t","stop","placement"],"mappings":"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","file":"static/js/chunk-commons.a6002038.js","sourcesContent":["import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.status.deleted)?_c('el-card',{staticClass:\"status-card\",nativeOn:{\"click\":function($event){return _vm.handleRouteChange()}}},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',{staticClass:\"status-header\"},[_c('div',{staticClass:\"status-account-container\"},[_c('div',{staticClass:\"status-account\"},[(_vm.showCheckbox)?_c('el-checkbox',{staticClass:\"status-checkbox\",on:{\"change\":function($event){return _vm.handleStatusSelection(_vm.account)}}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.account, 'id'))?_c('router-link',{staticClass:\"router-link\",attrs:{\"to\":{ name: 'UsersShow', params: { id: _vm.account.id }}},nativeOn:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',{staticClass:\"status-card-header\"},[(_vm.propertyExists(_vm.account, 'avatar'))?_c('img',{staticClass:\"status-avatar-img\",attrs:{\"src\":_vm.account.avatar}}):_vm._e(),_vm._v(\" \"),(_vm.propertyExists(_vm.account, 'nickname'))?_c('span',{staticClass:\"status-account-name\"},[_vm._v(_vm._s(_vm.account.nickname))]):_c('span',[(_vm.propertyExists(_vm.account, 'nickname'))?_c('span',{staticClass:\"status-account-name\"},[_vm._v(\"\\n \"+_vm._s(_vm.account.nickname)+\"\\n \")]):_c('span',{staticClass:\"status-account-name deactivated\"},[_vm._v(\"(\"+_vm._s(_vm.$t('users.invalidNickname'))+\")\")])])])]):_vm._e()],1)]),_vm._v(\" \"),_c('div',{staticClass:\"status-actions\"},[_c('div',{staticClass:\"status-tags\"},[(_vm.status.sensitive)?_c('el-tag',{attrs:{\"type\":\"warning\",\"size\":\"large\"}},[_vm._v(_vm._s(_vm.$t('reports.sensitive')))]):_vm._e(),_vm._v(\" \"),_c('el-tag',{attrs:{\"size\":\"large\"}},[_vm._v(_vm._s(_vm.capitalizeFirstLetter(_vm.status.visibility)))])],1),_vm._v(\" \"),_c('el-dropdown',{attrs:{\"trigger\":\"click\"},nativeOn:{\"click\":function($event){$event.stopPropagation();}}},[_c('el-button',{staticClass:\"status-actions-button\",attrs:{\"plain\":\"\",\"size\":\"small\",\"icon\":\"el-icon-edit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.changeScope'))),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(!_vm.status.sensitive)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, true, _vm.status.visibility)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.addSensitive'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.sensitive)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, false, _vm.status.visibility)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.removeSensitive'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.visibility !== 'public')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, _vm.status.sensitive, 'public')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.public'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.visibility !== 'private')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, _vm.status.sensitive, 'private')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.private'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.status.visibility !== 'unlisted')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(_vm.status.id, _vm.status.sensitive, 'unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.unlisted'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.deleteStatus(_vm.status.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.deleteStatus'))+\"\\n \")])],1)],1)],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"status-body\"},[(_vm.status.spoiler_text)?_c('div',[_c('strong',[_vm._v(_vm._s(_vm.status.spoiler_text))]),_vm._v(\" \"),(!_vm.showHiddenStatus)?_c('el-button',{staticClass:\"show-more-button\",attrs:{\"size\":\"mini\"},on:{\"click\":function($event){_vm.showHiddenStatus = true}}},[_vm._v(\"Show more\")]):_vm._e(),_vm._v(\" \"),(_vm.showHiddenStatus)?_c('el-button',{staticClass:\"show-more-button\",attrs:{\"size\":\"mini\"},on:{\"click\":function($event){_vm.showHiddenStatus = false}}},[_vm._v(\"Show less\")]):_vm._e(),_vm._v(\" \"),(_vm.showHiddenStatus)?_c('div',[_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(_vm.status.content)}}),_vm._v(\" \"),(_vm.status.poll)?_c('div',{staticClass:\"poll\"},[_c('ul',_vm._l((_vm.status.poll.options),function(option,index){return _c('li',{key:index},[_vm._v(\"\\n \"+_vm._s(option.title)+\"\\n \"),_c('el-progress',{attrs:{\"percentage\":_vm.optionPercent(_vm.status.poll, option)}})],1)}),0)]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.status.media_attachments),function(attachment,index){return _c('div',{key:index,staticClass:\"image\"},[_c('img',{attrs:{\"src\":attachment.preview_url}})])})],2):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.status.spoiler_text)?_c('div',[_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(_vm.status.content)}}),_vm._v(\" \"),(_vm.status.poll)?_c('div',{staticClass:\"poll\"},[_c('ul',_vm._l((_vm.status.poll.options),function(option,index){return _c('li',{key:index},[_vm._v(\"\\n \"+_vm._s(option.title)+\"\\n \"),_c('el-progress',{attrs:{\"percentage\":_vm.optionPercent(_vm.status.poll, option)}})],1)}),0)]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.status.media_attachments),function(attachment,index){return _c('div',{key:index,staticClass:\"image\"},[_c('img',{attrs:{\"src\":attachment.preview_url}})])})],2):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"status-footer\"},[_c('span',{staticClass:\"status-created-at\"},[_vm._v(_vm._s(_vm.parseTimestamp(_vm.status.created_at)))]),_vm._v(\" \"),(_vm.status.url)?_c('a',{staticClass:\"account\",attrs:{\"href\":_vm.status.url,\"target\":\"_blank\"},on:{\"click\":function($event){$event.stopPropagation();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('statuses.openStatusInInstance'))+\"\\n \"),_c('i',{staticClass:\"el-icon-top-right\"})]):_vm._e()])])]):_c('el-card',{staticClass:\"status-card\"},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',{staticClass:\"status-header\"},[_c('div',{staticClass:\"status-account-container\"},[_c('div',{staticClass:\"status-account\"},[_c('h4',{staticClass:\"status-deleted\"},[_vm._v(_vm._s(_vm.$t('reports.statusDeleted')))])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"status-body\"},[(_vm.status.content)?_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(_vm.status.content)}}):_c('span',{staticClass:\"status-without-content\"},[_vm._v(\"no content\")])]),_vm._v(\" \"),_c('div',{staticClass:\"status-footer\"},[(_vm.status.created_at)?_c('span',{staticClass:\"status-created-at\"},[_vm._v(_vm._s(_vm.parseTimestamp(_vm.status.created_at)))]):_vm._e(),_vm._v(\" \"),(_vm.status.url)?_c('a',{staticClass:\"account\",attrs:{\"href\":_vm.status.url,\"target\":\"_blank\"},on:{\"click\":function($event){$event.stopPropagation();}}},[_vm._v(\"\\n Open status in instance\\n \"),_c('i',{staticClass:\"el-icon-top-right\"})]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=69419e6d&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.needReboot)?_c('el-tooltip',{attrs:{\"content\":_vm.$t('settings.restartApp'),\"placement\":\"bottom-end\"}},[_c('el-button',{staticClass:\"reboot-button\",attrs:{\"type\":\"warning\"},on:{\"click\":_vm.restartApp}},[_c('span',[_c('i',{staticClass:\"el-icon-refresh\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.instanceReboot'))+\"\\n \")])])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=53cfaf1d&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-d34d.0f06fe76.js b/priv/static/adminfe/static/js/chunk-d34d.0f06fe76.js new file mode 100644 index 000000000..edd221e6e --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-d34d.0f06fe76.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-d34d"],{GFxI:function(e,n,t){},aSQl:function(e,n,t){"use strict";t.d(n,"a",function(){return p});var o=t("o0o1"),a=t.n(o),r=t("yXPU"),s=t.n(r),i=t("oAJy"),l=t.n(i),c=t("LvDl"),u=t.n(c),p=function(){var e=s()(a.a.mark(function e(n){var t,o;return a.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.a.getItem("vuex-lz");case 2:if(t=e.sent,void 0!==(o=u.a.get(t,"oauth.userToken"))){e.next=6;break}throw new Error("PleromaFE token not found");case 6:return e.next=8,n.dispatch("LoginByPleromaFE",{token:o});case 8:case"end":return e.stop()}},e)}));return function(n){return e.apply(this,arguments)}}()},abDm:function(e,n,t){"use strict";var o=t("GFxI");t.n(o).a},c11S:function(e,n,t){"use strict";var o=t("gTgX");t.n(o).a},gTgX:function(e,n,t){},ntYl:function(e,n,t){"use strict";t.r(n);var o=t("J4zp"),a=t.n(o),r=t("o0o1"),s=t.n(r),i=t("yXPU"),l=t.n(i),c=t("zT9a"),u=t("oAJy"),p=t.n(u),d=t("LvDl"),m=t.n(d),g=t("mSNy"),v=t("aSQl"),h={name:"Login",components:{"svg-icon":c.a},data:function(){return{loginForm:{username:"",password:""},passwordType:"password",loading:!1,loadingPleromaFE:!1,showDialog:!1,redirect:void 0,pleromaFEToken:!1,pleromaFEStateKey:"vuex-lz",pleromaFEState:{}}},watch:{$route:{handler:function(e){this.redirect=e.query&&e.query.redirect},immediate:!0}},mounted:function(){var e=this;return l()(s.a.mark(function n(){var t;return s.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,p.a.getItem(e.pleromaFEStateKey);case 2:if(t=n.sent,e.pleromaFEState=t,void 0!==m.a.get(t,"oauth.userToken")){n.next=6;break}return n.abrupt("return");case 6:e.pleromaFEToken=!0;case 7:case"end":return n.stop()}},n)}))()},methods:{showPwd:function(){"password"===this.passwordType?this.passwordType="":this.passwordType="password"},handleLogin:function(){var e=this;this.loading=!0;var n=this.getLoginData();this.$store.dispatch("LoginByUsername",n).then(function(){e.loading=!1,e.$router.push({path:e.redirect||"/users/index"})}).catch(function(){e.loading=!1})},handlePleromaFELogin:function(){var e=this;return l()(s.a.mark(function n(){return s.a.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return e.loadingPleromaFE=!0,n.prev=1,n.next=4,Object(v.a)(e.$store);case 4:n.next=10;break;case 6:n.prev=6,n.t0=n.catch(1),e.loadingPleromaFE=!1,e.$message.error(g.a.t("login.pleromaFELoginFailed"));case 10:e.loadingPleromaFE=!1,e.$message.success(g.a.t("login.pleromaFELoginSucceed")),e.$router.push({path:e.redirect||"/users/index"});case 13:case"end":return n.stop()}},n,null,[[1,6]])}))()},getLoginData:function(){var e=this.loginForm.username.split("@"),n=a()(e,2),t=n[0],o=n[1];return{username:t.trim(),authHost:o?o.trim():window.location.host,password:this.loginForm.password}}}},f=(t("c11S"),t("abDm"),t("KHd+")),w=Object(f.a)(h,function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"login-container"},[t("el-form",{ref:"loginForm",staticClass:"login-form",attrs:{model:e.loginForm,"auto-complete":"on","label-position":"left"}},[t("div",{staticClass:"title-container"},[t("h3",{staticClass:"title"},[e._v("\n "+e._s(e.$t("login.title"))+"\n ")])]),e._v(" "),t("el-form-item",{attrs:{prop:"username"}},[t("span",{staticClass:"svg-container"},[t("svg-icon",{attrs:{"icon-class":"user"}})],1),e._v(" "),t("el-input",{attrs:{placeholder:e.$t("login.username"),name:"username",type:"text","auto-complete":"on"},model:{value:e.loginForm.username,callback:function(n){e.$set(e.loginForm,"username",n)},expression:"loginForm.username"}})],1),e._v(" "),t("div",{staticClass:"omit-host-note"},[e._v(e._s(e.$t("login.omitHostname")))]),e._v(" "),t("el-form-item",{attrs:{prop:"password"}},[t("span",{staticClass:"svg-container"},[t("svg-icon",{attrs:{"icon-class":"password"}})],1),e._v(" "),t("el-input",{attrs:{type:e.passwordType,placeholder:e.$t("login.password"),name:"password","auto-complete":"on"},nativeOn:{keyup:function(n){return!n.type.indexOf("key")&&e._k(n.keyCode,"enter",13,n.key,"Enter")?null:e.handleLogin(n)}},model:{value:e.loginForm.password,callback:function(n){e.$set(e.loginForm,"password",n)},expression:"loginForm.password"}}),e._v(" "),t("span",{staticClass:"show-pwd",on:{click:e.showPwd}},[t("svg-icon",{attrs:{"icon-class":"password"===e.passwordType?"eye":"eye-open"}})],1)],1),e._v(" "),t("el-button",{staticClass:"login-button",attrs:{loading:e.loading,type:"primary"},nativeOn:{click:function(n){return n.preventDefault(),e.handleLogin(n)}}},[e._v("\n "+e._s(e.$t("login.logIn"))+"\n ")]),e._v(" "),e.pleromaFEToken?t("el-button",{staticClass:"login-button",attrs:{loading:e.loadingPleromaFE,type:"primary"},nativeOn:{click:function(n){return n.preventDefault(),e.handlePleromaFELogin(n)}}},[e._v("\n "+e._s(e.$t("login.logInViaPleromaFE"))+"\n ")]):e._e()],1)],1)},[],!1,null,"5bb13616",null);w.options.__file="index.vue";n.default=w.exports}}]); +//# sourceMappingURL=chunk-d34d.0f06fe76.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-d34d.0f06fe76.js.map b/priv/static/adminfe/static/js/chunk-d34d.0f06fe76.js.map new file mode 100644 index 000000000..6bcd4ed8b --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-d34d.0f06fe76.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/services/pleromaAuth.js","webpack:///./src/views/login/index.vue?4fb3","webpack:///./src/views/login/index.vue?0399","webpack:///./src/views/login/index.vue?7240","webpack:///./src/views/login/index.vue?95e4","webpack:///src/views/login/index.vue","webpack:///./src/views/login/index.vue"],"names":["authenticateWithPleromaFE","_ref","_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default","_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","a","mark","_callee","store","pleromaFEState","token","wrap","_context","prev","next","localforage","getItem","sent","undefined","_","get","Error","dispatch","stop","_x","apply","this","arguments","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_1_id_5bb13616_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","views_loginvue_type_script_lang_js_","name","components","svg-icon","SvgIcon","data","loginForm","username","password","passwordType","loading","loadingPleromaFE","showDialog","redirect","pleromaFEToken","pleromaFEStateKey","watch","$route","handler","route","query","immediate","mounted","_this","asyncToGenerator_default","regenerator_default","localforage_default","lodash_default","abrupt","methods","showPwd","handleLogin","_this2","loginData","getLoginData","$store","then","$router","push","path","catch","handlePleromaFELogin","_this3","_callee2","_context2","Object","pleromaAuth","t0","$message","error","lang","t","success","_this$loginForm$usern","split","_this$loginForm$usern2","slicedToArray_default","authHost","trim","window","location","host","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","ref","attrs","model","auto-complete","label-position","_v","_s","$t","prop","icon-class","placeholder","type","value","callback","$$v","$set","expression","nativeOn","keyup","$event","indexOf","_k","keyCode","key","on","click","preventDefault","_e","options","__file","__webpack_exports__"],"mappings":"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","file":"static/js/chunk-d34d.0f06fe76.js","sourcesContent":["import localforage from 'localforage'\nimport _ from 'lodash'\n\nconst pleromaFEStateKey = 'vuex-lz'\n\nexport const authenticateWithPleromaFE = async(store) => {\n const pleromaFEState = await localforage.getItem(pleromaFEStateKey)\n const token = _.get(pleromaFEState, 'oauth.userToken')\n\n if (token === undefined) {\n throw new Error('PleromaFE token not found')\n }\n\n await store.dispatch('LoginByPleromaFE', { token })\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&id=5bb13616&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&id=5bb13616&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login-container\"},[_c('el-form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"model\":_vm.loginForm,\"auto-complete\":\"on\",\"label-position\":\"left\"}},[_c('div',{staticClass:\"title-container\"},[_c('h3',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.title'))+\"\\n \")])]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"prop\":\"username\"}},[_c('span',{staticClass:\"svg-container\"},[_c('svg-icon',{attrs:{\"icon-class\":\"user\"}})],1),_vm._v(\" \"),_c('el-input',{attrs:{\"placeholder\":_vm.$t('login.username'),\"name\":\"username\",\"type\":\"text\",\"auto-complete\":\"on\"},model:{value:(_vm.loginForm.username),callback:function ($$v) {_vm.$set(_vm.loginForm, \"username\", $$v)},expression:\"loginForm.username\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"omit-host-note\"},[_vm._v(_vm._s(_vm.$t('login.omitHostname')))]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"prop\":\"password\"}},[_c('span',{staticClass:\"svg-container\"},[_c('svg-icon',{attrs:{\"icon-class\":\"password\"}})],1),_vm._v(\" \"),_c('el-input',{attrs:{\"type\":_vm.passwordType,\"placeholder\":_vm.$t('login.password'),\"name\":\"password\",\"auto-complete\":\"on\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.handleLogin($event)}},model:{value:(_vm.loginForm.password),callback:function ($$v) {_vm.$set(_vm.loginForm, \"password\", $$v)},expression:\"loginForm.password\"}}),_vm._v(\" \"),_c('span',{staticClass:\"show-pwd\",on:{\"click\":_vm.showPwd}},[_c('svg-icon',{attrs:{\"icon-class\":_vm.passwordType === 'password' ? 'eye' : 'eye-open'}})],1)],1),_vm._v(\" \"),_c('el-button',{staticClass:\"login-button\",attrs:{\"loading\":_vm.loading,\"type\":\"primary\"},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.handleLogin($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.logIn'))+\"\\n \")]),_vm._v(\" \"),(_vm.pleromaFEToken)?_c('el-button',{staticClass:\"login-button\",attrs:{\"loading\":_vm.loadingPleromaFE,\"type\":\"primary\"},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.handlePleromaFELogin($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.logInViaPleromaFE'))+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=5bb13616&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\nimport style1 from \"./index.vue?vue&type=style&index=1&id=5bb13616&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bb13616\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-d55e.f9bab96d.js b/priv/static/adminfe/static/js/chunk-d55e.f9bab96d.js new file mode 100644 index 000000000..4e7ab35bb --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-d55e.f9bab96d.js @@ -0,0 +1,270 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-d55e"],{"+s0g":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),t="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],s=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(t("wd/R"))},"//9w":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},"/X5v":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10,t=1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t},week:{dow:1,doy:4}})}(t("wd/R"))},"0mo+":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},t={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12".split("_"),monthsShortRegex:/^(ཟླ་\d{1,2})/,monthsParseExact:!0,weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(e){return t[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,a){return 12===e&&(e=0),"མཚན་མོ"===a&&e>=4||"ཉིན་གུང"===a&&e<5||"དགོང་དག"===a?e+12:e},meridiem:function(e,a,t){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(t("wd/R"))},"0tRk":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"do_2ª_3ª_4ª_5ª_6ª_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})}(t("wd/R"))},"1ppg":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("fil",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(t("wd/R"))},"1rYy":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,a){switch(a){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}})}(t("wd/R"))},"1xZ4":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,a){var t=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==a&&"W"!==a||(t="a"),e+t},week:{dow:1,doy:4}})}(t("wd/R"))},"2fjn":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})}(t("wd/R"))},"2ykv":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),t="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],s=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(t("wd/R"))},"3E1r":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},t={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return t[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,a){return 12===e&&(e=0),"रात"===a?e<4?e:e+12:"सुबह"===a?e:"दोपहर"===a?e>=10?e:e+12:"शाम"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})}(t("wd/R"))},"4MV3":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},t={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પહેલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(e){return e.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,function(e){return t[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]})},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(e,a){return 12===e&&(e=0),"રાત"===a?e<4?e:e+12:"સવાર"===a?e:"બપોર"===a?e>=10?e:e+12:"સાંજ"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"રાત":e<10?"સવાર":e<17?"બપોર":e<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(t("wd/R"))},"4dOw":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t},week:{dow:1,doy:4}})}(t("wd/R"))},"6+QB":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?e>=11?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(t("wd/R"))},"6B0Y":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},t={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(e){return"ល្ងាច"===e},meridiem:function(e,a,t){return e<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(e){return e.replace(/[១២៣៤៥៦៧៨៩០]/g,function(e){return t[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]})},week:{dow:1,doy:4}})}(t("wd/R"))},"7BjC":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +function a(e,a,t,n){var s={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return a?s[t][2]?s[t][2]:s[t][1]:n?s[t][0]:s[t][1]}e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:"%d päeva",M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},"7C5Q":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("en-in",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t},week:{dow:0,doy:6}})}(t("wd/R"))},"7aV9":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(e){return e+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(e){return"ප.ව."===e||"පස් වරු"===e},meridiem:function(e,a,t){return e>11?t?"ප.ව.":"පස් වරු":t?"පෙ.ව.":"පෙර වරු"}})}(t("wd/R"))},"8/+R":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},t={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(e){return e.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,function(e){return t[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]})},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(e,a){return 12===e&&(e=0),"ਰਾਤ"===a?e<4?e:e+12:"ਸਵੇਰ"===a?e:"ਦੁਪਹਿਰ"===a?e>=10?e:e+12:"ਸ਼ਾਮ"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"ਰਾਤ":e<10?"ਸਵੇਰ":e<17?"ਦੁਪਹਿਰ":e<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(t("wd/R"))},"8mBD":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(t("wd/R"))},"9rRi":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){var a=1===e?"d":e%10==2?"na":"mh";return e+a},week:{dow:1,doy:4}})}(t("wd/R"))},"A+xa":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){var a=/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран";return e+a},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(t("wd/R"))},AQ68:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(t("wd/R"))},AvvY:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,a){return 12===e&&(e=0),"രാത്രി"===a&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===a||"വൈകുന്നേരം"===a?e+12:e},meridiem:function(e,a,t){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}})}(t("wd/R"))},B55N:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令和",narrow:"㋿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"平成",narrow:"㍻",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"昭和",narrow:"㍼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大正",narrow:"㍽",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"明治",narrow:"㍾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西暦",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"紀元前",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(元|\d+)年/,eraYearOrdinalParse:function(e,a){return"元"===a[1]?1:parseInt(a[1]||e,10)},months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,a,t){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()!==this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(e){return this.week()!==e.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(e,a){switch(a){case"y":return 1===e?"元年":e+"年";case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}(t("wd/R"))},BVg3:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +function a(e){return e%100==11||e%10!=1}function t(e,t,n,s){var r=e+" ";switch(n){case"s":return t||s?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return a(e)?r+(t||s?"sekúndur":"sekúndum"):r+"sekúnda";case"m":return t?"mínúta":"mínútu";case"mm":return a(e)?r+(t||s?"mínútur":"mínútum"):t?r+"mínúta":r+"mínútu";case"hh":return a(e)?r+(t||s?"klukkustundir":"klukkustundum"):r+"klukkustund";case"d":return t?"dagur":s?"dag":"degi";case"dd":return a(e)?t?r+"dagar":r+(s?"daga":"dögum"):t?r+"dagur":r+(s?"dag":"degi");case"M":return t?"mánuður":s?"mánuð":"mánuði";case"MM":return a(e)?t?r+"mánuðir":r+(s?"mánuði":"mánuðum"):t?r+"mánuður":r+(s?"mánuð":"mánuði");case"y":return t||s?"ár":"ári";case"yy":return a(e)?r+(t||s?"ár":"árum"):r+(t||s?"ár":"ári")}}e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:t,ss:t,m:t,mm:t,h:"klukkustund",hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},ByF4:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},CjzT:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],s=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(t("wd/R"))},CoRJ:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})}(t("wd/R"))},"D/JM":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(t("wd/R"))},"DKr+":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +function a(e,a,t,n){var s={s:["thoddea sekondamni","thodde sekond"],ss:[e+" sekondamni",e+" sekond"],m:["eka mintan","ek minut"],mm:[e+" mintamni",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voramni",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disamni",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineamni",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsamni",e+" vorsam"]};return n?s[t][0]:s[t][1]}e.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,a){switch(a){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(e,a){return 12===e&&(e=0),"rati"===a?e<4?e:e+12:"sokallim"===a?e:"donparam"===a?e>12?e:e+12:"sanje"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"rati":e<12?"sokallim":e<16?"donparam":e<20?"sanje":"rati"}})}(t("wd/R"))},Dkky:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(t("wd/R"))},Dmvi:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t},week:{dow:0,doy:4}})}(t("wd/R"))},DoHr:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),meridiem:function(e,a,t){return e<12?t?"öö":"ÖÖ":t?"ös":"ÖS"},meridiemParse:/öö|ÖÖ|ös|ÖS/,isPM:function(e){return"ös"===e||"ÖS"===e},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,t){switch(t){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var n=e%10,s=e%100-n,r=e>=100?100:null;return e+(a[n]||a[s]||a[r])}},week:{dow:1,doy:7}})}(t("wd/R"))},DxQv:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},Dzi0:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(t("wd/R"))},"E+lV":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(e,t,n){var s=a.words[n];return 1===n.length?t?s[0]:s[1]:e+" "+a.correctGrammaticalCase(e,s)}};e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:a.translate,m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"дан",dd:a.translate,M:"месец",MM:a.translate,y:"годину",yy:a.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(t("wd/R"))},EOgW:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,a,t){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(t("wd/R"))},Fnuy:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("oc-lnc",{months:{standalone:"genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre".split("_"),format:"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[uèi a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[ièr a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,a){var t=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==a&&"W"!==a||(t="a"),e+t},week:{dow:1,doy:4}})}(t("wd/R"))},G0Uy:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(t("wd/R"))},H8ED:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +function a(e,a,t){var n={ss:a?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:a?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:a?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===t?a?"хвіліна":"хвіліну":"h"===t?a?"гадзіна":"гадзіну":e+" "+function(e,a){var t=e.split("_");return a%10==1&&a%100!=11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}(n[t],+e)}e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:a,mm:a,h:a,hh:a,d:"дзень",dd:a,M:"месяц",MM:a,y:"год",yy:a},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,a,t){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})}(t("wd/R"))},HP3h:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},s=function(e){return function(a,s,r,d){var i=t(a),_=n[e][t(a)];return 2===i&&(_=_[s?0:1]),_.replace(/%d/i,a)}},r=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-ly",{months:r,monthsShort:r,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,a,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})}(t("wd/R"))},IBtZ:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ka",{months:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,function(e,a,t){return"ი"===t?a+"ში":a+t+"ში"})},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):e},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})}(t("wd/R"))},"Ivi+":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,a,t){return e<12?"오전":"오후"}})}(t("wd/R"))},"JCF/":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},t={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},n=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];e.defineLocale("ku",{months:n,monthsShort:n,weekdays:"یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌".split("_"),weekdaysShort:"یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره‌|به‌یانی/,isPM:function(e){return/ئێواره‌/.test(e)},meridiem:function(e,a,t){return e<12?"به‌یانی":"ئێواره‌"},calendar:{sameDay:"[ئه‌مرۆ كاتژمێر] LT",nextDay:"[به‌یانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له‌ %s",past:"%s",s:"چه‌ند چركه‌یه‌ك",ss:"چركه‌ %d",m:"یه‌ك خوله‌ك",mm:"%d خوله‌ك",h:"یه‌ك كاتژمێر",hh:"%d كاتژمێر",d:"یه‌ك ڕۆژ",dd:"%d ڕۆژ",M:"یه‌ك مانگ",MM:"%d مانگ",y:"یه‌ك ساڵ",yy:"%d ساڵ"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})}(t("wd/R"))},JVSJ:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +function a(e,a,t){var n=e+" ";switch(t){case"ss":return n+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return n+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return n+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return n+=1===e?"dan":"dana";case"MM":return n+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return n+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:a,m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(t("wd/R"))},JvlW:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function t(e,a,t,n){return a?s(t)[0]:n?s(t)[1]:s(t)[2]}function n(e){return e%10==0||e>10&&e<20}function s(e){return a[e].split("_")}function r(e,a,r,d){var i=e+" ";return 1===e?i+t(0,a,r[0],d):a?i+(n(e)?s(r)[1]:s(r)[0]):d?i+s(r)[1]:i+(n(e)?s(r)[1]:s(r)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,a,t,n){return a?"kelios sekundės":n?"kelių sekundžių":"kelias sekundes"},ss:r,m:t,mm:r,h:t,hh:r,d:t,dd:r,M:t,MM:r,y:t,yy:r},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}(t("wd/R"))},"K/tc":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"vm":"VM":t?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(t("wd/R"))},KSF8:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"sa":"SA":t?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần trước lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(t("wd/R"))},KTz0:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(e,t,n){var s=a.words[n];return 1===n.length?t?s[0]:s[1]:e+" "+a.correctGrammaticalCase(e,s)}};e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:a.translate,m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"dan",dd:a.translate,M:"mjesec",MM:a.translate,y:"godinu",yy:a.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(t("wd/R"))},Loxo:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(t("wd/R"))},OIYi:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t}})}(t("wd/R"))},Oaa7:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t},week:{dow:1,doy:4}})}(t("wd/R"))},Ob0Z:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},t={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function n(e,a,t,n){var s="";if(a)switch(t){case"s":s="काही सेकंद";break;case"ss":s="%d सेकंद";break;case"m":s="एक मिनिट";break;case"mm":s="%d मिनिटे";break;case"h":s="एक तास";break;case"hh":s="%d तास";break;case"d":s="एक दिवस";break;case"dd":s="%d दिवस";break;case"M":s="एक महिना";break;case"MM":s="%d महिने";break;case"y":s="एक वर्ष";break;case"yy":s="%d वर्षे"}else switch(t){case"s":s="काही सेकंदां";break;case"ss":s="%d सेकंदां";break;case"m":s="एका मिनिटा";break;case"mm":s="%d मिनिटां";break;case"h":s="एका तासा";break;case"hh":s="%d तासां";break;case"d":s="एका दिवसा";break;case"dd":s="%d दिवसां";break;case"M":s="एका महिन्या";break;case"MM":s="%d महिन्यां";break;case"y":s="एका वर्षा";break;case"yy":s="%d वर्षां"}return s.replace(/%d/i,e)}e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return t[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]})},meridiemParse:/पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,meridiemHour:function(e,a){return 12===e&&(e=0),"पहाटे"===a||"सकाळी"===a?e:"दुपारी"===a||"सायंकाळी"===a||"रात्री"===a?e>=12?e:e+12:void 0},meridiem:function(e,a,t){return e>=0&&e<6?"पहाटे":e<12?"सकाळी":e<17?"दुपारी":e<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(t("wd/R"))},OjkT:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},t={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return t[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]})},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,a){return 12===e&&(e=0),"राति"===a?e<4?e:e+12:"बिहान"===a?e:"दिउँसो"===a?e>=10?e:e+12:"साँझ"===a?e+12:void 0},meridiem:function(e,a,t){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(t("wd/R"))},OmwH:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("zh-mo",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"D/M/YYYY",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),"凌晨"===a||"早上"===a||"上午"===a?e:"中午"===a?e>=11?e:e+12:"下午"===a||"晚上"===a?e+12:void 0},meridiem:function(e,a,t){var n=100*e+a;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(t("wd/R"))},Oxv6:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};e.defineLocale("tg",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Пагоҳ соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(e,a){return 12===e&&(e=0),"шаб"===a?e<4?e:e+12:"субҳ"===a?e:"рӯз"===a?e>=11?e:e+12:"бегоҳ"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"шаб":e<11?"субҳ":e<16?"рӯз":e<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(e){var t=e%10,n=e>=100?100:null;return e+(a[e]||a[t]||a[n])},week:{dow:1,doy:7}})}(t("wd/R"))},PA2r:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),t="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),n=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],s=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function r(e){return e>1&&e<5&&1!=~~(e/10)}function d(e,a,t,n){var s=e+" ";switch(t){case"s":return a||n?"pár sekund":"pár sekundami";case"ss":return a||n?s+(r(e)?"sekundy":"sekund"):s+"sekundami";case"m":return a?"minuta":n?"minutu":"minutou";case"mm":return a||n?s+(r(e)?"minuty":"minut"):s+"minutami";case"h":return a?"hodina":n?"hodinu":"hodinou";case"hh":return a||n?s+(r(e)?"hodiny":"hodin"):s+"hodinami";case"d":return a||n?"den":"dnem";case"dd":return a||n?s+(r(e)?"dny":"dní"):s+"dny";case"M":return a||n?"měsíc":"měsícem";case"MM":return a||n?s+(r(e)?"měsíce":"měsíců"):s+"měsíci";case"y":return a||n?"rok":"rokem";case"yy":return a||n?s+(r(e)?"roky":"let"):s+"lety"}}e.defineLocale("cs",{months:a,monthsShort:t,monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:d,ss:d,m:d,mm:d,h:d,hh:d,d:d,dd:d,M:d,MM:d,y:d,yy:d},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},PeUW:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},t={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,function(e){return t[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]})},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,a,t){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,a){return 12===e&&(e=0),"யாமம்"===a?e<2?e:e+12:"வைகறை"===a||"காலை"===a?e:"நண்பகல்"===a&&e>=10?e:e+12},week:{dow:0,doy:6}})}(t("wd/R"))},PpIw:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},t={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,function(e){return t[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]})},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,a){return 12===e&&(e=0),"ರಾತ್ರಿ"===a?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===a?e:"ಮಧ್ಯಾಹ್ನ"===a?e>=10?e:e+12:"ಸಂಜೆ"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})}(t("wd/R"))},Qj4J:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(t("wd/R"))},RAwQ:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +function a(e,a,t,n){var s={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return a?s[t][0]:s[t][1]}function t(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var a=e%10,n=e/10;return t(0===a?n:a)}if(e<1e4){for(;e>=10;)e/=10;return t(e)}return t(e/=1e3)}e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return t(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return t(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:a,mm:"%d Minutten",h:a,hh:"%d Stonnen",d:a,dd:"%d Deeg",M:a,MM:"%d Méint",y:a,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},S6ln:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +function a(e,a,t){var n=e+" ";switch(t){case"ss":return n+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return n+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return n+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return n+=1===e?"dan":"dana";case"MM":return n+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return n+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:return"[prošlu] [nedjelju] [u] LT";case 3:return"[prošlu] [srijedu] [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:a,m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(t("wd/R"))},SFxW:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"bir neçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,a,t){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var t=e%10,n=e%100-t,s=e>=100?100:null;return e+(a[t]||a[n]||a[s])},week:{dow:1,doy:7}})}(t("wd/R"))},SatO:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),"凌晨"===a||"早上"===a||"上午"===a?e:"中午"===a?e>=11?e:e+12:"下午"===a||"晚上"===a?e+12:void 0},meridiem:function(e,a,t){var n=100*e+a;return n<600?"凌晨":n<900?"早上":n<1200?"上午":1200===n?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(t("wd/R"))},UDhR:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?e>=11?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:0,doy:6}})}(t("wd/R"))},USCx:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Meitheamh","Iúil","Lúnasa","Meán Fómhair","Deireadh Fómhair","Samhain","Nollaig"],monthsShort:["Ean","Feabh","Márt","Aib","Beal","Meith","Iúil","Lún","M.F.","D.F.","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Sathairn"],weekdaysShort:["Domh","Luan","Máirt","Céad","Déar","Aoine","Sath"],weekdaysMin:["Do","Lu","Má","Cé","Dé","A","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d míonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){var a=1===e?"d":e%10==2?"na":"mh";return e+a},week:{dow:1,doy:4}})}(t("wd/R"))},UpQW:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],t=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];e.defineLocale("ur",{months:a,monthsShort:a,weekdays:t,weekdaysShort:t,weekdaysMin:t,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,a,t){return e<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(t("wd/R"))},Ur1D:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,a,t){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,a){return 12===e&&(e=0),"ekuseni"===a?e:"emini"===a?e>=11?e:e+12:"entsambama"===a||"ebusuku"===a?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(t("wd/R"))},V2x9:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t},week:{dow:1,doy:4}})}(t("wd/R"))},Vclq:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],s=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(t("wd/R"))},WYrj:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],t=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];e.defineLocale("dv",{months:a,monthsShort:a,weekdays:t,weekdaysShort:t,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,a,t){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}})}(t("wd/R"))},Wv91:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'ünji",4:"'ünji",100:"'ünji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"};e.defineLocale("tk",{months:"Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr".split("_"),monthsShort:"Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek".split("_"),weekdays:"Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe".split("_"),weekdaysShort:"Ýek_Duş_Siş_Çar_Pen_Ann_Şen".split("_"),weekdaysMin:"Ýk_Dş_Sş_Çr_Pn_An_Şn".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[düýn] LT",lastWeek:"[geçen] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s soň",past:"%s öň",s:"birnäçe sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir gün",dd:"%d gün",M:"bir aý",MM:"%d aý",y:"bir ýyl",yy:"%d ýyl"},ordinal:function(e,t){switch(t){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'unjy";var n=e%10,s=e%100-n,r=e>=100?100:null;return e+(a[n]||a[s]||a[r])}},week:{dow:1,doy:7}})}(t("wd/R"))},WxRl:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function t(e,a,t,n){var s=e;switch(t){case"s":return n||a?"néhány másodperc":"néhány másodperce";case"ss":return s+(n||a)?" másodperc":" másodperce";case"m":return"egy"+(n||a?" perc":" perce");case"mm":return s+(n||a?" perc":" perce");case"h":return"egy"+(n||a?" óra":" órája");case"hh":return s+(n||a?" óra":" órája");case"d":return"egy"+(n||a?" nap":" napja");case"dd":return s+(n||a?" nap":" napja");case"M":return"egy"+(n||a?" hónap":" hónapja");case"MM":return s+(n||a?" hónap":" hónapja");case"y":return"egy"+(n||a?" év":" éve");case"yy":return s+(n||a?" év":" éve")}return""}function n(e){return(e?"":"[múlt] ")+"["+a[this.day()]+"] LT[-kor]"}e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,a,t){return e<12?!0===t?"de":"DE":!0===t?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return n.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return n.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},X709:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var a=e%10,t=1==~~(e%100/10)?":e":1===a?":a":2===a?":a":":e";return e+t},week:{dow:1,doy:4}})}(t("wd/R"))},XDpg:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),"凌晨"===a||"早上"===a||"上午"===a?e:"下午"===a||"晚上"===a?e+12:e>=11?e:e+12},meridiem:function(e,a,t){var n=100*e+a;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:function(e){return e.week()!==this.week()?"[下]dddLT":"[本]dddLT"},lastDay:"[昨天]LT",lastWeek:function(e){return this.week()!==e.week()?"[上]dddLT":"[本]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s后",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(t("wd/R"))},XLvN:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,a){return 12===e&&(e=0),"రాత్రి"===a?e<4?e:e+12:"ఉదయం"===a?e:"మధ్యాహ్నం"===a?e>=10?e:e+12:"సాయంత్రం"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(t("wd/R"))},YRex:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(e,a){return 12===e&&(e=0),"يېرىم كېچە"===a||"سەھەر"===a||"چۈشتىن بۇرۇن"===a?e:"چۈشتىن كېيىن"===a||"كەچ"===a?e+12:e>=11?e:e+12},meridiem:function(e,a,t){var n=100*e+a;return n<600?"يېرىم كېچە":n<900?"سەھەر":n<1130?"چۈشتىن بۇرۇن":n<1230?"چۈش":n<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"-كۈنى";case"w":case"W":return e+"-ھەپتە";default:return e}},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:7}})}(t("wd/R"))},Z4QM:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],t=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];e.defineLocale("sd",{months:a,monthsShort:a,weekdays:t,weekdaysShort:t,weekdaysMin:t,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,a,t){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(t("wd/R"))},ZAMP:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?e>=11?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(t("wd/R"))},Zduo:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,a,t){return e>11?t?"p.t.m.":"P.T.M.":t?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(t("wd/R"))},aIdf:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +function a(e,a,t){return e+" "+function(e,a){return 2===a?function(e){var a={m:"v",b:"v",d:"z"};return void 0===a[e.charAt(0)]?e:a[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[t],e)}var t=[/^gen/i,/^c[ʼ\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],n=/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,s=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];e.defineLocale("br",{months:"Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:s,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[ʼ\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:s,monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:t,longMonthsParse:t,shortMonthsParse:t,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warcʼhoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Decʼh da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s ʼzo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:a,h:"un eur",hh:"%d eur",d:"un devezh",dd:a,M:"ur miz",MM:a,y:"ur bloaz",yy:function(e){switch(function e(a){return a>9?e(a%10):a}(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){var a=1===e?"añ":"vet";return e+a},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(e){return"g.m."===e},meridiem:function(e,a,t){return e<12?"a.m.":"g.m."}})}(t("wd/R"))},aIsn:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(t("wd/R"))},aQkU:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"за %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"една минута",mm:"%d минути",h:"еден час",hh:"%d часа",d:"еден ден",dd:"%d дена",M:"еден месец",MM:"%d месеци",y:"една година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-ев":0===t?e+"-ен":t>10&&t<20?e+"-ти":1===a?e+"-ви":2===a?e+"-ри":7===a||8===a?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(t("wd/R"))},b1Dy:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t},week:{dow:1,doy:4}})}(t("wd/R"))},bOMt:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},bXm7:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){var t=e%10,n=e>=100?100:null;return e+(a[e]||a[t]||a[n])},week:{dow:1,doy:7}})}(t("wd/R"))},bYM6:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(t("wd/R"))},bpih:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(t("wd/R"))},bxKX:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(t("wd/R"))},cRix:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),t="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(t("wd/R"))},czMo:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t}})}(t("wd/R"))},dNwA:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"hh:mm A",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(t("wd/R"))},"e+ae":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),t="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function n(e){return e>1&&e<5}function s(e,a,t,s){var r=e+" ";switch(t){case"s":return a||s?"pár sekúnd":"pár sekundami";case"ss":return a||s?r+(n(e)?"sekundy":"sekúnd"):r+"sekundami";case"m":return a?"minúta":s?"minútu":"minútou";case"mm":return a||s?r+(n(e)?"minúty":"minút"):r+"minútami";case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?r+(n(e)?"hodiny":"hodín"):r+"hodinami";case"d":return a||s?"deň":"dňom";case"dd":return a||s?r+(n(e)?"dni":"dní"):r+"dňami";case"M":return a||s?"mesiac":"mesiacom";case"MM":return a||s?r+(n(e)?"mesiace":"mesiacov"):r+"mesiacmi";case"y":return a||s?"rok":"rokom";case"yy":return a||s?r+(n(e)?"roky":"rokov"):r+"rokmi"}}e.defineLocale("sk",{months:a,monthsShort:t,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:s,ss:s,m:s,mm:s,h:s,hh:s,d:s,dd:s,M:s,MM:s,y:s,yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},fzPg:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(t("wd/R"))},gVVK:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +function a(e,a,t,n){var s=e+" ";switch(t){case"s":return a||n?"nekaj sekund":"nekaj sekundami";case"ss":return s+=1===e?a?"sekundo":"sekundi":2===e?a||n?"sekundi":"sekundah":e<5?a||n?"sekunde":"sekundah":"sekund";case"m":return a?"ena minuta":"eno minuto";case"mm":return s+=1===e?a?"minuta":"minuto":2===e?a||n?"minuti":"minutama":e<5?a||n?"minute":"minutami":a||n?"minut":"minutami";case"h":return a?"ena ura":"eno uro";case"hh":return s+=1===e?a?"ura":"uro":2===e?a||n?"uri":"urama":e<5?a||n?"ure":"urami":a||n?"ur":"urami";case"d":return a||n?"en dan":"enim dnem";case"dd":return s+=1===e?a||n?"dan":"dnem":2===e?a||n?"dni":"dnevoma":a||n?"dni":"dnevi";case"M":return a||n?"en mesec":"enim mesecem";case"MM":return s+=1===e?a||n?"mesec":"mesecem":2===e?a||n?"meseca":"mesecema":e<5?a||n?"mesece":"meseci":a||n?"mesecev":"meseci";case"y":return a||n?"eno leto":"enim letom";case"yy":return s+=1===e?a||n?"leto":"letom":2===e?a||n?"leti":"letoma":e<5?a||n?"leta":"leti":a||n?"let":"leti"}}e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(t("wd/R"))},gekB:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),t=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",a[7],a[8],a[9]];function n(e,n,s,r){var d="";switch(s){case"s":return r?"muutaman sekunnin":"muutama sekunti";case"ss":d=r?"sekunnin":"sekuntia";break;case"m":return r?"minuutin":"minuutti";case"mm":d=r?"minuutin":"minuuttia";break;case"h":return r?"tunnin":"tunti";case"hh":d=r?"tunnin":"tuntia";break;case"d":return r?"päivän":"päivä";case"dd":d=r?"päivän":"päivää";break;case"M":return r?"kuukauden":"kuukausi";case"MM":d=r?"kuukauden":"kuukautta";break;case"y":return r?"vuoden":"vuosi";case"yy":d=r?"vuoden":"vuotta"}return d=function(e,n){return e<10?n?t[e]:a[e]:e}(e,r)+" "+d}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},gjCT:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},t={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,a,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"،")},week:{dow:0,doy:6}})}(t("wd/R"))},hKrs:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Миналата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[Миналия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-ев":0===t?e+"-ен":t>10&&t<20?e+"-ти":1===a?e+"-ви":2===a?e+"-ри":7===a||8===a?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(t("wd/R"))},honF:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},t={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(e){return t[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]})},week:{dow:1,doy:4}})}(t("wd/R"))},iEDd:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(t("wd/R"))},iYuL:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],s=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha inválida"})}(t("wd/R"))},jUeY:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,a){return e?"string"==typeof a&&/D/.test(a.substring(0,a.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,a,t){return e>11?t?"μμ":"ΜΜ":t?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,a){var t=this._calendarEl[e],n=a&&a.hours();return function(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}(t)&&(t=t.apply(a)),t.replace("{}",n%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(t("wd/R"))},jVdC:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),t="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function n(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function s(e,a,t){var s=e+" ";switch(t){case"ss":return s+(n(e)?"sekundy":"sekund");case"m":return a?"minuta":"minutę";case"mm":return s+(n(e)?"minuty":"minut");case"h":return a?"godzina":"godzinę";case"hh":return s+(n(e)?"godziny":"godzin");case"MM":return s+(n(e)?"miesiące":"miesięcy");case"yy":return s+(n(e)?"lata":"lat")}}e.defineLocale("pl",{months:function(e,n){return e?""===n?"("+t[e.month()]+"|"+a[e.month()]+")":/D MMMM/.test(n)?t[e.month()]:a[e.month()]:a},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:s,m:s,mm:s,h:s,hh:s,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:s,y:"rok",yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},jfSC:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},t={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,a,t){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"%d ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(t("wd/R"))},jnO4:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},t={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},s={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(a,t,r,d){var i=n(a),_=s[e][n(a)];return 2===i&&(_=_[t?0:1]),_.replace(/%d/i,a)}},d=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar",{months:d,monthsShort:d,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,a,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})}(t("wd/R"))},kEOa:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},t={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,function(e){return t[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]})},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,a){return 12===e&&(e=0),"রাত"===a&&e>=4||"দুপুর"===a&&e<5||"বিকাল"===a?e+12:e},meridiem:function(e,a,t){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(t("wd/R"))},kOpN:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),"凌晨"===a||"早上"===a||"上午"===a?e:"中午"===a?e>=11?e:e+12:"下午"===a||"晚上"===a?e+12:void 0},meridiem:function(e,a,t){var n=100*e+a;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(t("wd/R"))},l5ep:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var a=e,t="";return a>20?t=40===a||50===a||60===a||80===a||100===a?"fed":"ain":a>0&&(t=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][a]),e+t},week:{dow:1,doy:4}})}(t("wd/R"))},lXzo:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +function a(e,a,t){var n={ss:a?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:a?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===t?a?"минута":"минуту":e+" "+function(e,a){var t=e.split("_");return a%10==1&&a%100!=11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}(n[t],+e)}var t=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:t,longMonthsParse:t,shortMonthsParse:t,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:a,m:a,mm:a,h:"час",hh:a,d:"день",dd:a,M:"месяц",MM:a,y:"год",yy:a},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,a,t){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})}(t("wd/R"))},lYtQ:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +function a(e,a,t,n){switch(t){case"s":return a?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(a?" секунд":" секундын");case"m":case"mm":return e+(a?" минут":" минутын");case"h":case"hh":return e+(a?" цаг":" цагийн");case"d":case"dd":return e+(a?" өдөр":" өдрийн");case"M":case"MM":return e+(a?" сар":" сарын");case"y":case"yy":return e+(a?" жил":" жилийн");default:return e}}e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(e){return"ҮХ"===e},meridiem:function(e,a,t){return e<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+" өдөр";default:return e}}})}(t("wd/R"))},lgnt:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){var t=e%10,n=e>=100?100:null;return e+(a[e]||a[t]||a[n])},week:{dow:1,doy:7}})}(t("wd/R"))},lyxo:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +function a(e,a,t){var n=" ";return(e%100>=20||e>=100&&e%100==0)&&(n=" de "),e+n+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[t]}e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:a,m:"un minut",mm:a,h:"o oră",hh:a,d:"o zi",dd:a,M:"o lună",MM:a,y:"un an",yy:a},week:{dow:1,doy:7}})}(t("wd/R"))},nyYc:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,t=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i];e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsRegex:a,monthsShortRegex:a,monthsStrictRegex:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,monthsShortStrictRegex:/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,monthsParse:t,longMonthsParse:t,shortMonthsParse:t,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,a){switch(a){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(t("wd/R"))},o1bE:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},t={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},n=function(e){return function(n,s,r,d){var i=a(n),_=t[e][a(n)];return 2===i&&(_=_[s?0:1]),_.replace(/%d/i,n)}},s=["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-dz",{months:s,monthsShort:s,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,a,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:n("s"),ss:n("s"),m:n("m"),mm:n("m"),h:n("h"),hh:n("h"),d:n("d"),dd:n("d"),M:n("M"),MM:n("M"),y:n("y"),yy:n("y")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:0,doy:4}})}(t("wd/R"))},"p/rL":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(t("wd/R"))},qvJo:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +function a(e,a,t,n){var s={s:["थोडया सॅकंडांनी","थोडे सॅकंड"],ss:[e+" सॅकंडांनी",e+" सॅकंड"],m:["एका मिणटान","एक मिनूट"],mm:[e+" मिणटांनी",e+" मिणटां"],h:["एका वरान","एक वर"],hh:[e+" वरांनी",e+" वरां"],d:["एका दिसान","एक दीस"],dd:[e+" दिसांनी",e+" दीस"],M:["एका म्हयन्यान","एक म्हयनो"],MM:[e+" म्हयन्यानी",e+" म्हयने"],y:["एका वर्सान","एक वर्स"],yy:[e+" वर्सांनी",e+" वर्सां"]};return n?s[t][0]:s[t][1]}e.defineLocale("gom-deva",{months:{standalone:"जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),format:"जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार".split("_"),weekdaysShort:"आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.".split("_"),weekdaysMin:"आ_सो_मं_बु_ब्रे_सु_शे".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [वाजतां]",LTS:"A h:mm:ss [वाजतां]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [वाजतां]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [वाजतां]",llll:"ddd, D MMM YYYY, A h:mm [वाजतां]"},calendar:{sameDay:"[आयज] LT",nextDay:"[फाल्यां] LT",nextWeek:"[फुडलो] dddd[,] LT",lastDay:"[काल] LT",lastWeek:"[फाटलो] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s आदीं",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}(वेर)/,ordinal:function(e,a){switch(a){case"D":return e+"वेर";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/राती|सकाळीं|दनपारां|सांजे/,meridiemHour:function(e,a){return 12===e&&(e=0),"राती"===a?e<4?e:e+12:"सकाळीं"===a?e:"दनपारां"===a?e>12?e:e+12:"सांजे"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"राती":e<12?"सकाळीं":e<16?"दनपारां":e<20?"सांजे":"राती"}})}(t("wd/R"))},raLr:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +function a(e,a,t){var n={ss:a?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:a?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:a?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===t?a?"хвилина":"хвилину":"h"===t?a?"година":"годину":e+" "+function(e,a){var t=e.split("_");return a%10==1&&a%100!=11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}(n[t],+e)}function t(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(e,a){var t,n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===e?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):e?(t=/(\[[ВвУу]\]) ?dddd/.test(a)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(a)?"genitive":"nominative",n[t][e.day()]):n.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:t("[Сьогодні "),nextDay:t("[Завтра "),lastDay:t("[Вчора "),nextWeek:t("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return t("[Минулої] dddd [").call(this);case 1:case 2:case 4:return t("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:a,m:a,mm:a,h:"годину",hh:a,d:"день",dd:a,M:"місяць",MM:a,y:"рік",yy:a},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,a,t){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}(t("wd/R"))},"s+uk":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +function a(e,a,t,n){var s={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?s[t][0]:s[t][1]}e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,w:a,ww:"%d Wochen",M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},sp3z:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,a,t){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}})}(t("wd/R"))},"t+mt":function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("en-sg",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10,t=1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t},week:{dow:1,doy:4}})}(t("wd/R"))},tGlX:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +function a(e,a,t,n){var s={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?s[t][0]:s[t][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,w:a,ww:"%d Wochen",M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},tT3J:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(t("wd/R"))},tUCv:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,a){return 12===e&&(e=0),"enjing"===a?e:"siyang"===a?e>=11?e:e+12:"sonten"===a||"ndalu"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(t("wd/R"))},u3GI:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +function a(e,a,t,n){var s={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?s[t][0]:s[t][1]}e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,w:a,ww:"%d Wochen",M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},uEye:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._må._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_må_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},uXwI:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function t(e,a,t){return t?a%10==1&&a%100!=11?e[2]:e[3]:a%10==1&&a%100!=11?e[0]:e[1]}function n(e,n,s){return e+" "+t(a[s],e,n)}function s(e,n,s){return t(a[s],e,n)}e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,a){return a?"dažas sekundes":"dažām sekundēm"},ss:n,m:s,mm:n,h:s,hh:n,d:s,dd:n,M:s,MM:n,y:s,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},wQk9:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(t("wd/R"))},"wd/R":function(e,a,t){(function(e){e.exports=function(){"use strict";var a,n;function s(){return a.apply(null,arguments)}function r(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function d(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function i(e,a){return Object.prototype.hasOwnProperty.call(e,a)}function _(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var a;for(a in e)if(i(e,a))return!1;return!0}function o(e){return void 0===e}function u(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function m(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function l(e,a){var t,n=[];for(t=0;t>>0;for(a=0;a0)for(t=0;t=0;return(r?t?"+":"":"-")+Math.pow(10,Math.max(0,s)).toString().substr(1)+n}s.suppressDeprecationWarnings=!1,s.deprecationHandler=null,g=Object.keys?Object.keys:function(e){var a,t=[];for(a in e)i(e,a)&&t.push(a);return t};var O=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,P=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,W={},A={};function E(e,a,t,n){var s=n;"string"==typeof n&&(s=function(){return this[n]()}),e&&(A[e]=s),a&&(A[a[0]]=function(){return x(s.apply(this,arguments),a[1],a[2])}),t&&(A[t]=function(){return this.localeData().ordinal(s.apply(this,arguments),e)})}function F(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function R(e,a){return e.isValid()?(a=z(a,e.localeData()),W[a]=W[a]||function(e){var a,t,n=e.match(O);for(a=0,t=n.length;a=0&&P.test(e);)e=e.replace(P,n),P.lastIndex=0,t-=1;return e}var N={};function J(e,a){var t=e.toLowerCase();N[t]=N[t+"s"]=N[a]=e}function C(e){return"string"==typeof e?N[e]||N[e.toLowerCase()]:void 0}function I(e){var a,t,n={};for(t in e)i(e,t)&&(a=C(t))&&(n[a]=e[t]);return n}var U={};function G(e,a){U[e]=a}function V(e){return e%4==0&&e%100!=0||e%400==0}function B(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function K(e){var a=+e,t=0;return 0!==a&&isFinite(a)&&(t=B(a)),t}function Z(e,a){return function(t){return null!=t?($(this,e,t),s.updateOffset(this,a),this):q(this,e)}}function q(e,a){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+a]():NaN}function $(e,a,t){e.isValid()&&!isNaN(t)&&("FullYear"===a&&V(e.year())&&1===e.month()&&29===e.date()?(t=K(t),e._d["set"+(e._isUTC?"UTC":"")+a](t,e.month(),Oe(t,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+a](t))}var Q,X=/\d/,ee=/\d\d/,ae=/\d{3}/,te=/\d{4}/,ne=/[+-]?\d{6}/,se=/\d\d?/,re=/\d\d\d\d?/,de=/\d\d\d\d\d\d?/,ie=/\d{1,3}/,_e=/\d{1,4}/,oe=/[+-]?\d{1,6}/,ue=/\d+/,me=/[+-]?\d+/,le=/Z|[+-]\d\d:?\d\d/gi,Me=/Z|[+-]\d\d(?::?\d\d)?/gi,he=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function ce(e,a,t){Q[e]=H(a)?a:function(e,n){return e&&t?t:a}}function Le(e,a){return i(Q,e)?Q[e](a._strict,a._locale):new RegExp(function(e){return Ye(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,a,t,n,s){return a||t||n||s}))}(e))}function Ye(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}Q={};var ye={};function fe(e,a){var t,n=a;for("string"==typeof e&&(e=[e]),u(a)&&(n=function(e,t){t[a]=K(e)}),t=0;t68?1900:2e3)};var Ce=Z("FullYear",!0);function Ie(e){var a,t;return e<100&&e>=0?((t=Array.prototype.slice.call(arguments))[0]=e+400,a=new Date(Date.UTC.apply(null,t)),isFinite(a.getUTCFullYear())&&a.setUTCFullYear(e)):a=new Date(Date.UTC.apply(null,arguments)),a}function Ue(e,a,t){var n=7+a-t,s=(7+Ie(e,0,n).getUTCDay()-a)%7;return-s+n-1}function Ge(e,a,t,n,s){var r,d,i=(7+t-n)%7,_=Ue(e,n,s),o=1+7*(a-1)+i+_;return o<=0?d=Je(r=e-1)+o:o>Je(e)?(r=e+1,d=o-Je(e)):(r=e,d=o),{year:r,dayOfYear:d}}function Ve(e,a,t){var n,s,r=Ue(e.year(),a,t),d=Math.floor((e.dayOfYear()-r-1)/7)+1;return d<1?(s=e.year()-1,n=d+Be(s,a,t)):d>Be(e.year(),a,t)?(n=d-Be(e.year(),a,t),s=e.year()+1):(s=e.year(),n=d),{week:n,year:s}}function Be(e,a,t){var n=Ue(e,a,t),s=Ue(e+1,a,t);return(Je(e)-n+s)/7}function Ke(e,a){return e.slice(a,7).concat(e.slice(0,a))}E("w",["ww",2],"wo","week"),E("W",["WW",2],"Wo","isoWeek"),J("week","w"),J("isoWeek","W"),G("week",5),G("isoWeek",5),ce("w",se),ce("ww",se,ee),ce("W",se),ce("WW",se,ee),pe(["w","ww","W","WW"],function(e,a,t,n){a[n.substr(0,1)]=K(e)}),E("d",0,"do","day"),E("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),E("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),E("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),E("e",0,0,"weekday"),E("E",0,0,"isoWeekday"),J("day","d"),J("weekday","e"),J("isoWeekday","E"),G("day",11),G("weekday",11),G("isoWeekday",11),ce("d",se),ce("e",se),ce("E",se),ce("dd",function(e,a){return a.weekdaysMinRegex(e)}),ce("ddd",function(e,a){return a.weekdaysShortRegex(e)}),ce("dddd",function(e,a){return a.weekdaysRegex(e)}),pe(["dd","ddd","dddd"],function(e,a,t,n){var s=t._locale.weekdaysParse(e,n,t._strict);null!=s?a.d=s:c(t).invalidWeekday=e}),pe(["d","e","E"],function(e,a,t,n){a[n]=K(e)});var Ze="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),qe="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),$e="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Qe=he,Xe=he,ea=he;function aa(){function e(e,a){return a.length-e.length}var a,t,n,s,r,d=[],i=[],_=[],o=[];for(a=0;a<7;a++)t=h([2e3,1]).day(a),n=Ye(this.weekdaysMin(t,"")),s=Ye(this.weekdaysShort(t,"")),r=Ye(this.weekdays(t,"")),d.push(n),i.push(s),_.push(r),o.push(n),o.push(s),o.push(r);d.sort(e),i.sort(e),_.sort(e),o.sort(e),this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+_.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+d.join("|")+")","i")}function ta(){return this.hours()%12||12}function na(e,a){E(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),a)})}function sa(e,a){return a._meridiemParse}E("H",["HH",2],0,"hour"),E("h",["hh",2],0,ta),E("k",["kk",2],0,function(){return this.hours()||24}),E("hmm",0,0,function(){return""+ta.apply(this)+x(this.minutes(),2)}),E("hmmss",0,0,function(){return""+ta.apply(this)+x(this.minutes(),2)+x(this.seconds(),2)}),E("Hmm",0,0,function(){return""+this.hours()+x(this.minutes(),2)}),E("Hmmss",0,0,function(){return""+this.hours()+x(this.minutes(),2)+x(this.seconds(),2)}),na("a",!0),na("A",!1),J("hour","h"),G("hour",13),ce("a",sa),ce("A",sa),ce("H",se),ce("h",se),ce("k",se),ce("HH",se,ee),ce("hh",se,ee),ce("kk",se,ee),ce("hmm",re),ce("hmmss",de),ce("Hmm",re),ce("Hmmss",de),fe(["H","HH"],ve),fe(["k","kk"],function(e,a,t){var n=K(e);a[ve]=24===n?0:n}),fe(["a","A"],function(e,a,t){t._isPm=t._locale.isPM(e),t._meridiem=e}),fe(["h","hh"],function(e,a,t){a[ve]=K(e),c(t).bigHour=!0}),fe("hmm",function(e,a,t){var n=e.length-2;a[ve]=K(e.substr(0,n)),a[be]=K(e.substr(n)),c(t).bigHour=!0}),fe("hmmss",function(e,a,t){var n=e.length-4,s=e.length-2;a[ve]=K(e.substr(0,n)),a[be]=K(e.substr(n,2)),a[He]=K(e.substr(s)),c(t).bigHour=!0}),fe("Hmm",function(e,a,t){var n=e.length-2;a[ve]=K(e.substr(0,n)),a[be]=K(e.substr(n))}),fe("Hmmss",function(e,a,t){var n=e.length-4,s=e.length-2;a[ve]=K(e.substr(0,n)),a[be]=K(e.substr(n,2)),a[He]=K(e.substr(s))});var ra,da=Z("Hours",!0),ia={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Pe,monthsShort:We,week:{dow:0,doy:6},weekdays:Ze,weekdaysMin:$e,weekdaysShort:qe,meridiemParse:/[ap]\.?m?\.?/i},_a={},oa={};function ua(e,a){var t,n=Math.min(e.length,a.length);for(t=0;t0;){if(n=la(s.slice(0,a).join("-")))return n;if(t&&t.length>=a&&ua(s,t)>=a-1)break;a--}r++}return ra}(e)}function La(e){var a,t=e._a;return t&&-2===c(e).overflow&&(a=t[Te]<0||t[Te]>11?Te:t[ge]<1||t[ge]>Oe(t[we],t[Te])?ge:t[ve]<0||t[ve]>24||24===t[ve]&&(0!==t[be]||0!==t[He]||0!==t[Se])?ve:t[be]<0||t[be]>59?be:t[He]<0||t[He]>59?He:t[Se]<0||t[Se]>999?Se:-1,c(e)._overflowDayOfYear&&(age)&&(a=ge),c(e)._overflowWeeks&&-1===a&&(a=je),c(e)._overflowWeekday&&-1===a&&(a=xe),c(e).overflow=a),e}var Ya=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ya=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,fa=/Z|[+-]\d\d(?::?\d\d)?/,pa=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],ka=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Da=/^\/?Date\((-?\d+)/i,wa=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Ta={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function ga(e){var a,t,n,s,r,d,i=e._i,_=Ya.exec(i)||ya.exec(i);if(_){for(c(e).iso=!0,a=0,t=pa.length;a7)&&(_=!0)):(r=e._locale._week.dow,d=e._locale._week.doy,o=Ve(Pa(),r,d),t=Ha(a.gg,e._a[we],o.year),n=Ha(a.w,o.week),null!=a.d?((s=a.d)<0||s>6)&&(_=!0):null!=a.e?(s=a.e+r,(a.e<0||a.e>6)&&(_=!0)):s=r),n<1||n>Be(t,r,d)?c(e)._overflowWeeks=!0:null!=_?c(e)._overflowWeekday=!0:(i=Ge(t,n,s,r,d),e._a[we]=i.year,e._dayOfYear=i.dayOfYear)}(e),null!=e._dayOfYear&&(d=Ha(e._a[we],n[we]),(e._dayOfYear>Je(d)||0===e._dayOfYear)&&(c(e)._overflowDayOfYear=!0),t=Ie(d,0,e._dayOfYear),e._a[Te]=t.getUTCMonth(),e._a[ge]=t.getUTCDate()),a=0;a<3&&null==e._a[a];++a)e._a[a]=i[a]=n[a];for(;a<7;a++)e._a[a]=i[a]=null==e._a[a]?2===a?1:0:e._a[a];24===e._a[ve]&&0===e._a[be]&&0===e._a[He]&&0===e._a[Se]&&(e._nextDay=!0,e._a[ve]=0),e._d=(e._useUTC?Ie:function(e,a,t,n,s,r,d){var i;return e<100&&e>=0?(i=new Date(e+400,a,t,n,s,r,d),isFinite(i.getFullYear())&&i.setFullYear(e)):i=new Date(e,a,t,n,s,r,d),i}).apply(null,i),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ve]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(c(e).weekdayMismatch=!0)}}function ja(e){if(e._f!==s.ISO_8601)if(e._f!==s.RFC_2822){e._a=[],c(e).empty=!0;var a,t,n,r,d,i,_=""+e._i,o=_.length,u=0;for(n=z(e._f,e._locale).match(O)||[],a=0;a0&&c(e).unusedInput.push(d),_=_.slice(_.indexOf(t)+t.length),u+=t.length),A[r]?(t?c(e).empty=!1:c(e).unusedTokens.push(r),ke(r,t,e)):e._strict&&!t&&c(e).unusedTokens.push(r);c(e).charsLeftOver=o-u,_.length>0&&c(e).unusedInput.push(_),e._a[ve]<=12&&!0===c(e).bigHour&&e._a[ve]>0&&(c(e).bigHour=void 0),c(e).parsedDateParts=e._a.slice(0),c(e).meridiem=e._meridiem,e._a[ve]=function(e,a,t){var n;return null==t?a:null!=e.meridiemHour?e.meridiemHour(a,t):null!=e.isPM?((n=e.isPM(t))&&a<12&&(a+=12),n||12!==a||(a=0),a):a}(e._locale,e._a[ve],e._meridiem),null!==(i=c(e).era)&&(e._a[we]=e._locale.erasConvertYear(i,e._a[we])),Sa(e),La(e)}else ba(e);else ga(e)}function xa(e){var a=e._i,t=e._f;return e._locale=e._locale||ca(e._l),null===a||void 0===t&&""===a?Y({nullInput:!0}):("string"==typeof a&&(e._i=a=e._locale.preparse(a)),D(a)?new k(La(a)):(m(a)?e._d=a:r(t)?function(e){var a,t,n,s,r,d,i=!1;if(0===e._f.length)return c(e).invalidFormat=!0,void(e._d=new Date(NaN));for(s=0;sthis?this:e:Y()});function Ea(e,a){var t,n;if(1===a.length&&r(a[0])&&(a=a[0]),!a.length)return Pa();for(t=a[0],n=1;n=0?new Date(e+400,a,t)-ut:new Date(e,a,t).valueOf()}function Mt(e,a,t){return e<100&&e>=0?Date.UTC(e+400,a,t)-ut:Date.UTC(e,a,t)}function ht(e,a){return a.erasAbbrRegex(e)}function ct(){var e,a,t=[],n=[],s=[],r=[],d=this.eras();for(e=0,a=d.length;er&&(a=r),function(e,a,t,n,s){var r=Ge(e,a,t,n,s),d=Ie(r.year,0,r.dayOfYear);return this.year(d.getUTCFullYear()),this.month(d.getUTCMonth()),this.date(d.getUTCDate()),this}.call(this,e,a,t,n,s))}E("N",0,0,"eraAbbr"),E("NN",0,0,"eraAbbr"),E("NNN",0,0,"eraAbbr"),E("NNNN",0,0,"eraName"),E("NNNNN",0,0,"eraNarrow"),E("y",["y",1],"yo","eraYear"),E("y",["yy",2],0,"eraYear"),E("y",["yyy",3],0,"eraYear"),E("y",["yyyy",4],0,"eraYear"),ce("N",ht),ce("NN",ht),ce("NNN",ht),ce("NNNN",function(e,a){return a.erasNameRegex(e)}),ce("NNNNN",function(e,a){return a.erasNarrowRegex(e)}),fe(["N","NN","NNN","NNNN","NNNNN"],function(e,a,t,n){var s=t._locale.erasParse(e,n,t._strict);s?c(t).era=s:c(t).invalidEra=e}),ce("y",ue),ce("yy",ue),ce("yyy",ue),ce("yyyy",ue),ce("yo",function(e,a){return a._eraYearOrdinalRegex||ue}),fe(["y","yy","yyy","yyyy"],we),fe(["yo"],function(e,a,t,n){var s;t._locale._eraYearOrdinalRegex&&(s=e.match(t._locale._eraYearOrdinalRegex)),t._locale.eraYearOrdinalParse?a[we]=t._locale.eraYearOrdinalParse(e,s):a[we]=parseInt(e,10)}),E(0,["gg",2],0,function(){return this.weekYear()%100}),E(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Lt("gggg","weekYear"),Lt("ggggg","weekYear"),Lt("GGGG","isoWeekYear"),Lt("GGGGG","isoWeekYear"),J("weekYear","gg"),J("isoWeekYear","GG"),G("weekYear",1),G("isoWeekYear",1),ce("G",me),ce("g",me),ce("GG",se,ee),ce("gg",se,ee),ce("GGGG",_e,te),ce("gggg",_e,te),ce("GGGGG",oe,ne),ce("ggggg",oe,ne),pe(["gggg","ggggg","GGGG","GGGGG"],function(e,a,t,n){a[n.substr(0,2)]=K(e)}),pe(["gg","GG"],function(e,a,t,n){a[n]=s.parseTwoDigitYear(e)}),E("Q",0,"Qo","quarter"),J("quarter","Q"),G("quarter",7),ce("Q",X),fe("Q",function(e,a){a[Te]=3*(K(e)-1)}),E("D",["DD",2],"Do","date"),J("date","D"),G("date",9),ce("D",se),ce("DD",se,ee),ce("Do",function(e,a){return e?a._dayOfMonthOrdinalParse||a._ordinalParse:a._dayOfMonthOrdinalParseLenient}),fe(["D","DD"],ge),fe("Do",function(e,a){a[ge]=K(e.match(se)[0])});var yt=Z("Date",!0);E("DDD",["DDDD",3],"DDDo","dayOfYear"),J("dayOfYear","DDD"),G("dayOfYear",4),ce("DDD",ie),ce("DDDD",ae),fe(["DDD","DDDD"],function(e,a,t){t._dayOfYear=K(e)}),E("m",["mm",2],0,"minute"),J("minute","m"),G("minute",14),ce("m",se),ce("mm",se,ee),fe(["m","mm"],be);var ft=Z("Minutes",!1);E("s",["ss",2],0,"second"),J("second","s"),G("second",15),ce("s",se),ce("ss",se,ee),fe(["s","ss"],He);var pt,kt,Dt=Z("Seconds",!1);for(E("S",0,0,function(){return~~(this.millisecond()/100)}),E(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),E(0,["SSS",3],0,"millisecond"),E(0,["SSSS",4],0,function(){return 10*this.millisecond()}),E(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),E(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),E(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),E(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),E(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),J("millisecond","ms"),G("millisecond",16),ce("S",ie,X),ce("SS",ie,ee),ce("SSS",ie,ae),pt="SSSS";pt.length<=9;pt+="S")ce(pt,ue);function wt(e,a){a[Se]=K(1e3*("0."+e))}for(pt="S";pt.length<=9;pt+="S")fe(pt,wt);kt=Z("Milliseconds",!1),E("z",0,0,"zoneAbbr"),E("zz",0,0,"zoneName");var Tt=k.prototype;function gt(e){return e}Tt.add=et,Tt.calendar=function(e,a){1===arguments.length&&(function(e){return D(e)||m(e)||tt(e)||u(e)||function(e){var a=r(e),t=!1;return a&&(t=0===e.filter(function(a){return!u(a)&&tt(e)}).length),a&&t}(e)||function(e){var a,t=d(e)&&!_(e),n=!1,s=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"];for(a=0;at.valueOf():t.valueOf()9999?R(t,a?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):H(Date.prototype.toISOString)?a?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",R(t,"Z")):R(t,a?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},Tt.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,a,t,n="moment",s="";return this.isLocal()||(n=0===this.utcOffset()?"moment.utc":"moment.parseZone",s="Z"),e="["+n+'("]',a=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",t=s+'[")]',this.format(e+a+"-MM-DD[T]HH:mm:ss.SSS"+t)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(Tt[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),Tt.toJSON=function(){return this.isValid()?this.toISOString():null},Tt.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},Tt.unix=function(){return Math.floor(this.valueOf()/1e3)},Tt.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},Tt.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},Tt.eraName=function(){var e,a,t,n=this.localeData().eras();for(e=0,a=n.length;ethis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},Tt.isLocal=function(){return!!this.isValid()&&!this._isUTC},Tt.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},Tt.isUtc=Va,Tt.isUTC=Va,Tt.zoneAbbr=function(){return this._isUTC?"UTC":""},Tt.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},Tt.dates=T("dates accessor is deprecated. Use date instead.",yt),Tt.months=T("months accessor is deprecated. Use month instead",ze),Tt.years=T("years accessor is deprecated. Use year instead",Ce),Tt.zone=T("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,a){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,a),this):-this.utcOffset()}),Tt.isDSTShifted=T("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var e,a={};return p(a,this),(a=xa(a))._a?(e=a._isUTC?h(a._a):Pa(a._a),this._isDSTShifted=this.isValid()&&function(e,a,t){var n,s=Math.min(e.length,a.length),r=Math.abs(e.length-a.length),d=0;for(n=0;n0):this._isDSTShifted=!1,this._isDSTShifted});var vt=j.prototype;function bt(e,a,t,n){var s=ca(),r=h().set(n,a);return s[t](r,e)}function Ht(e,a,t){if(u(e)&&(a=e,e=void 0),e=e||"",null!=a)return bt(e,a,t,"month");var n,s=[];for(n=0;n<12;n++)s[n]=bt(e,n,t,"month");return s}function St(e,a,t,n){"boolean"==typeof e?(u(a)&&(t=a,a=void 0),a=a||""):(t=a=e,e=!1,u(a)&&(t=a,a=void 0),a=a||"");var s,r=ca(),d=e?r._week.dow:0,i=[];if(null!=t)return bt(a,(t+d)%7,n,"day");for(s=0;s<7;s++)i[s]=bt(a,(s+d)%7,n,"day");return i}vt.calendar=function(e,a,t){var n=this._calendar[e]||this._calendar.sameElse;return H(n)?n.call(a,t):n},vt.longDateFormat=function(e){var a=this._longDateFormat[e],t=this._longDateFormat[e.toUpperCase()];return a||!t?a:(this._longDateFormat[e]=t.match(O).map(function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e}).join(""),this._longDateFormat[e])},vt.invalidDate=function(){return this._invalidDate},vt.ordinal=function(e){return this._ordinal.replace("%d",e)},vt.preparse=gt,vt.postformat=gt,vt.relativeTime=function(e,a,t,n){var s=this._relativeTime[t];return H(s)?s(e,a,t,n):s.replace(/%d/i,e)},vt.pastFuture=function(e,a){var t=this._relativeTime[e>0?"future":"past"];return H(t)?t(a):t.replace(/%s/i,a)},vt.set=function(e){var a,t;for(t in e)i(e,t)&&(H(a=e[t])?this[t]=a:this["_"+t]=a);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},vt.eras=function(e,a){var t,n,r,d=this._eras||ca("en")._eras;for(t=0,n=d.length;t=0)return _[n]},vt.erasConvertYear=function(e,a){var t=e.since<=e.until?1:-1;return void 0===a?s(e.since).year():s(e.since).year()+(a-e.offset)*t},vt.erasAbbrRegex=function(e){return i(this,"_erasAbbrRegex")||ct.call(this),e?this._erasAbbrRegex:this._erasRegex},vt.erasNameRegex=function(e){return i(this,"_erasNameRegex")||ct.call(this),e?this._erasNameRegex:this._erasRegex},vt.erasNarrowRegex=function(e){return i(this,"_erasNarrowRegex")||ct.call(this),e?this._erasNarrowRegex:this._erasRegex},vt.months=function(e,a){return e?r(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||Ae).test(a)?"format":"standalone"][e.month()]:r(this._months)?this._months:this._months.standalone},vt.monthsShort=function(e,a){return e?r(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[Ae.test(a)?"format":"standalone"][e.month()]:r(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},vt.monthsParse=function(e,a,t){var n,s,r;if(this._monthsParseExact)return function(e,a,t){var n,s,r,d=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],n=0;n<12;++n)r=h([2e3,n]),this._shortMonthsParse[n]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[n]=this.months(r,"").toLocaleLowerCase();return t?"MMM"===a?-1!==(s=De.call(this._shortMonthsParse,d))?s:null:-1!==(s=De.call(this._longMonthsParse,d))?s:null:"MMM"===a?-1!==(s=De.call(this._shortMonthsParse,d))?s:-1!==(s=De.call(this._longMonthsParse,d))?s:null:-1!==(s=De.call(this._longMonthsParse,d))?s:-1!==(s=De.call(this._shortMonthsParse,d))?s:null}.call(this,e,a,t);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),n=0;n<12;n++){if(s=h([2e3,n]),t&&!this._longMonthsParse[n]&&(this._longMonthsParse[n]=new RegExp("^"+this.months(s,"").replace(".","")+"$","i"),this._shortMonthsParse[n]=new RegExp("^"+this.monthsShort(s,"").replace(".","")+"$","i")),t||this._monthsParse[n]||(r="^"+this.months(s,"")+"|^"+this.monthsShort(s,""),this._monthsParse[n]=new RegExp(r.replace(".",""),"i")),t&&"MMMM"===a&&this._longMonthsParse[n].test(e))return n;if(t&&"MMM"===a&&this._shortMonthsParse[n].test(e))return n;if(!t&&this._monthsParse[n].test(e))return n}},vt.monthsRegex=function(e){return this._monthsParseExact?(i(this,"_monthsRegex")||Ne.call(this),e?this._monthsStrictRegex:this._monthsRegex):(i(this,"_monthsRegex")||(this._monthsRegex=Fe),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},vt.monthsShortRegex=function(e){return this._monthsParseExact?(i(this,"_monthsRegex")||Ne.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(i(this,"_monthsShortRegex")||(this._monthsShortRegex=Ee),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},vt.week=function(e){return Ve(e,this._week.dow,this._week.doy).week},vt.firstDayOfYear=function(){return this._week.doy},vt.firstDayOfWeek=function(){return this._week.dow},vt.weekdays=function(e,a){var t=r(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(a)?"format":"standalone"];return!0===e?Ke(t,this._week.dow):e?t[e.day()]:t},vt.weekdaysMin=function(e){return!0===e?Ke(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},vt.weekdaysShort=function(e){return!0===e?Ke(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},vt.weekdaysParse=function(e,a,t){var n,s,r;if(this._weekdaysParseExact)return function(e,a,t){var n,s,r,d=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],n=0;n<7;++n)r=h([2e3,1]).day(n),this._minWeekdaysParse[n]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[n]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[n]=this.weekdays(r,"").toLocaleLowerCase();return t?"dddd"===a?-1!==(s=De.call(this._weekdaysParse,d))?s:null:"ddd"===a?-1!==(s=De.call(this._shortWeekdaysParse,d))?s:null:-1!==(s=De.call(this._minWeekdaysParse,d))?s:null:"dddd"===a?-1!==(s=De.call(this._weekdaysParse,d))?s:-1!==(s=De.call(this._shortWeekdaysParse,d))?s:-1!==(s=De.call(this._minWeekdaysParse,d))?s:null:"ddd"===a?-1!==(s=De.call(this._shortWeekdaysParse,d))?s:-1!==(s=De.call(this._weekdaysParse,d))?s:-1!==(s=De.call(this._minWeekdaysParse,d))?s:null:-1!==(s=De.call(this._minWeekdaysParse,d))?s:-1!==(s=De.call(this._weekdaysParse,d))?s:-1!==(s=De.call(this._shortWeekdaysParse,d))?s:null}.call(this,e,a,t);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),n=0;n<7;n++){if(s=h([2e3,1]).day(n),t&&!this._fullWeekdaysParse[n]&&(this._fullWeekdaysParse[n]=new RegExp("^"+this.weekdays(s,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[n]=new RegExp("^"+this.weekdaysShort(s,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[n]=new RegExp("^"+this.weekdaysMin(s,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[n]||(r="^"+this.weekdays(s,"")+"|^"+this.weekdaysShort(s,"")+"|^"+this.weekdaysMin(s,""),this._weekdaysParse[n]=new RegExp(r.replace(".",""),"i")),t&&"dddd"===a&&this._fullWeekdaysParse[n].test(e))return n;if(t&&"ddd"===a&&this._shortWeekdaysParse[n].test(e))return n;if(t&&"dd"===a&&this._minWeekdaysParse[n].test(e))return n;if(!t&&this._weekdaysParse[n].test(e))return n}},vt.weekdaysRegex=function(e){return this._weekdaysParseExact?(i(this,"_weekdaysRegex")||aa.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(i(this,"_weekdaysRegex")||(this._weekdaysRegex=Qe),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},vt.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(i(this,"_weekdaysRegex")||aa.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(i(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Xe),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},vt.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(i(this,"_weekdaysRegex")||aa.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(i(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=ea),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},vt.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},vt.meridiem=function(e,a,t){return e>11?t?"pm":"PM":t?"am":"AM"},Ma("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10,t=1===K(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th";return e+t}}),s.lang=T("moment.lang is deprecated. Use moment.locale instead.",Ma),s.langData=T("moment.langData is deprecated. Use moment.localeData instead.",ca);var jt=Math.abs;function xt(e,a,t,n){var s=Za(a,t);return e._milliseconds+=n*s._milliseconds,e._days+=n*s._days,e._months+=n*s._months,e._bubble()}function Ot(e){return e<0?Math.floor(e):Math.ceil(e)}function Pt(e){return 4800*e/146097}function Wt(e){return 146097*e/4800}function At(e){return function(){return this.as(e)}}var Et=At("ms"),Ft=At("s"),Rt=At("m"),zt=At("h"),Nt=At("d"),Jt=At("w"),Ct=At("M"),It=At("Q"),Ut=At("y");function Gt(e){return function(){return this.isValid()?this._data[e]:NaN}}var Vt=Gt("milliseconds"),Bt=Gt("seconds"),Kt=Gt("minutes"),Zt=Gt("hours"),qt=Gt("days"),$t=Gt("months"),Qt=Gt("years"),Xt=Math.round,en={ss:44,s:45,m:45,h:22,d:26,w:null,M:11},an=Math.abs;function tn(e){return(e>0)-(e<0)||+e}function nn(){if(!this.isValid())return this.localeData().invalidDate();var e,a,t,n,s,r,d,i,_=an(this._milliseconds)/1e3,o=an(this._days),u=an(this._months),m=this.asSeconds();return m?(e=B(_/60),a=B(e/60),_%=60,e%=60,t=B(u/12),u%=12,n=_?_.toFixed(3).replace(/\.?0+$/,""):"",s=m<0?"-":"",r=tn(this._months)!==tn(m)?"-":"",d=tn(this._days)!==tn(m)?"-":"",i=tn(this._milliseconds)!==tn(m)?"-":"",s+"P"+(t?r+t+"Y":"")+(u?r+u+"M":"")+(o?d+o+"D":"")+(a||e||_?"T":"")+(a?i+a+"H":"")+(e?i+e+"M":"")+(_?i+n+"S":"")):"P0D"}var sn=Ra.prototype;return sn.isValid=function(){return this._isValid},sn.abs=function(){var e=this._data;return this._milliseconds=jt(this._milliseconds),this._days=jt(this._days),this._months=jt(this._months),e.milliseconds=jt(e.milliseconds),e.seconds=jt(e.seconds),e.minutes=jt(e.minutes),e.hours=jt(e.hours),e.months=jt(e.months),e.years=jt(e.years),this},sn.add=function(e,a){return xt(this,e,a,1)},sn.subtract=function(e,a){return xt(this,e,a,-1)},sn.as=function(e){if(!this.isValid())return NaN;var a,t,n=this._milliseconds;if("month"===(e=C(e))||"quarter"===e||"year"===e)switch(a=this._days+n/864e5,t=this._months+Pt(a),e){case"month":return t;case"quarter":return t/3;case"year":return t/12}else switch(a=this._days+Math.round(Wt(this._months)),e){case"week":return a/7+n/6048e5;case"day":return a+n/864e5;case"hour":return 24*a+n/36e5;case"minute":return 1440*a+n/6e4;case"second":return 86400*a+n/1e3;case"millisecond":return Math.floor(864e5*a)+n;default:throw new Error("Unknown unit "+e)}},sn.asMilliseconds=Et,sn.asSeconds=Ft,sn.asMinutes=Rt,sn.asHours=zt,sn.asDays=Nt,sn.asWeeks=Jt,sn.asMonths=Ct,sn.asQuarters=It,sn.asYears=Ut,sn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*K(this._months/12):NaN},sn._bubble=function(){var e,a,t,n,s,r=this._milliseconds,d=this._days,i=this._months,_=this._data;return r>=0&&d>=0&&i>=0||r<=0&&d<=0&&i<=0||(r+=864e5*Ot(Wt(i)+d),d=0,i=0),_.milliseconds=r%1e3,e=B(r/1e3),_.seconds=e%60,a=B(e/60),_.minutes=a%60,t=B(a/60),_.hours=t%24,d+=B(t/24),s=B(Pt(d)),i+=s,d-=Ot(Wt(s)),n=B(i/12),i%=12,_.days=d,_.months=i,_.years=n,this},sn.clone=function(){return Za(this)},sn.get=function(e){return e=C(e),this.isValid()?this[e+"s"]():NaN},sn.milliseconds=Vt,sn.seconds=Bt,sn.minutes=Kt,sn.hours=Zt,sn.days=qt,sn.weeks=function(){return B(this.days()/7)},sn.months=$t,sn.years=Qt,sn.humanize=function(e,a){if(!this.isValid())return this.localeData().invalidDate();var t,n,s=!1,r=en;return"object"==typeof e&&(a=e,e=!1),"boolean"==typeof e&&(s=e),"object"==typeof a&&(r=Object.assign({},en,a),null!=a.s&&null==a.ss&&(r.ss=a.s-1)),t=this.localeData(),n=function(e,a,t,n){var s=Za(e).abs(),r=Xt(s.as("s")),d=Xt(s.as("m")),i=Xt(s.as("h")),_=Xt(s.as("d")),o=Xt(s.as("M")),u=Xt(s.as("w")),m=Xt(s.as("y")),l=r<=t.ss&&["s",r]||r0,l[4]=n,function(e,a,t,n,s){return s.relativeTime(a||1,!!t,e,n)}.apply(null,l)}(this,!s,r,t),s&&(n=t.pastFuture(+this,n)),t.postformat(n)},sn.toISOString=nn,sn.toString=nn,sn.toJSON=nn,sn.locale=st,sn.localeData=dt,sn.toIsoString=T("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",nn),sn.lang=rt,E("X",0,0,"unix"),E("x",0,0,"valueOf"),ce("x",me),ce("X",/[+-]?\d+(\.\d{1,3})?/),fe("X",function(e,a,t){t._d=new Date(1e3*parseFloat(e))}),fe("x",function(e,a,t){t._d=new Date(K(e))}), +//! moment.js +s.version="2.28.0",function(e){a=e}(Pa),s.fn=Tt,s.min=function(){return Ea("isBefore",[].slice.call(arguments,0))},s.max=function(){return Ea("isAfter",[].slice.call(arguments,0))},s.now=function(){return Date.now?Date.now():+new Date},s.utc=h,s.unix=function(e){return Pa(1e3*e)},s.months=function(e,a){return Ht(e,a,"months")},s.isDate=m,s.locale=Ma,s.invalid=Y,s.duration=Za,s.isMoment=D,s.weekdays=function(e,a,t){return St(e,a,t,"weekdays")},s.parseZone=function(){return Pa.apply(null,arguments).parseZone()},s.localeData=ca,s.isDuration=za,s.monthsShort=function(e,a){return Ht(e,a,"monthsShort")},s.weekdaysMin=function(e,a,t){return St(e,a,t,"weekdaysMin")},s.defineLocale=ha,s.updateLocale=function(e,a){if(null!=a){var t,n,s=ia;null!=_a[e]&&null!=_a[e].parentLocale?_a[e].set(S(_a[e]._config,a)):(null!=(n=la(e))&&(s=n._config),a=S(s,a),null==n&&(a.abbr=e),(t=new j(a)).parentLocale=_a[e],_a[e]=t),Ma(e)}else null!=_a[e]&&(null!=_a[e].parentLocale?(_a[e]=_a[e].parentLocale,e===Ma()&&Ma(e)):null!=_a[e]&&delete _a[e]);return _a[e]},s.locales=function(){return g(_a)},s.weekdaysShort=function(e,a,t){return St(e,a,t,"weekdaysShort")},s.normalizeUnits=C,s.relativeTimeRounding=function(e){return void 0===e?Xt:"function"==typeof e&&(Xt=e,!0)},s.relativeTimeThreshold=function(e,a){return void 0!==en[e]&&(void 0===a?en[e]:(en[e]=a,"s"===e&&(en.ss=a-1),!0))},s.calendarFormat=function(e,a){var t=e.diff(a,"days",!0);return t<-6?"sameElse":t<-1?"lastWeek":t<0?"lastDay":t<1?"sameDay":t<2?"nextDay":t<7?"nextWeek":"sameElse"},s.prototype=Tt,s.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},s}()}).call(this,t("YuTi")(e))},x6pH:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,a,t){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?t?'לפנה"צ':"לפני הצהריים":e<18?t?'אחה"צ':"אחרי הצהריים":"בערב"}})}(t("wd/R"))},yPMs:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,a,t){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},z1FC:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +function a(e,a,t,n){var s={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return n?s[t][0]:a?s[t][0]:s[t][1]}e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,a,t){return e>11?t?"d'o":"D'O":t?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},z3Vd:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function t(e,t,n,s){var r=function(e){var t=Math.floor(e%1e3/100),n=Math.floor(e%100/10),s=e%10,r="";return t>0&&(r+=a[t]+"vatlh"),n>0&&(r+=(""!==r?" ":"")+a[n]+"maH"),s>0&&(r+=(""!==r?" ":"")+a[s]),""===r?"pagh":r}(e);switch(n){case"ss":return r+" lup";case"mm":return r+" tup";case"hh":return r+" rep";case"dd":return r+" jaj";case"MM":return r+" jar";case"yy":return r+" DIS"}}e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"leS":-1!==e.indexOf("jar")?a.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?a.slice(0,-3)+"nem":a+" pIq"},past:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"Hu’":-1!==e.indexOf("jar")?a.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?a.slice(0,-3)+"ben":a+" ret"},s:"puS lup",ss:t,m:"wa’ tup",mm:t,h:"wa’ rep",hh:t,d:"wa’ jaj",dd:t,M:"wa’ jar",MM:t,y:"wa’ DIS",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(t("wd/R"))},zx6S:function(e,a,t){!function(e){"use strict"; +//! moment.js locale configuration +var a={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(e,t,n){var s=a.words[n];return 1===n.length?t?s[0]:s[1]:e+" "+a.correctGrammaticalCase(e,s)}};e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:a.translate,m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"dan",dd:a.translate,M:"mesec",MM:a.translate,y:"godinu",yy:a.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(t("wd/R"))}}]); +//# sourceMappingURL=chunk-d55e.f9bab96d.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-d55e.f9bab96d.js.map b/priv/static/adminfe/static/js/chunk-d55e.f9bab96d.js.map new file mode 100644 index 000000000..323d9ba2a --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-d55e.f9bab96d.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/se.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/fil.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/en-in.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/oc-lnc.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ku.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/zh-mo.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/tk.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/it-ch.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/moment/locale/gom-deva.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/en-sg.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/sr.js"],"names":["moment","monthsShortWithDots","split","monthsShortWithoutDots","monthsParse","monthsRegex","defineLocale","months","monthsShort","m","format","test","month","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","weekdays","weekdaysShort","weekdaysMin","weekdaysParseExact","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","s","ss","mm","h","hh","d","dd","M","MM","y","yy","dayOfMonthOrdinalParse","ordinal","number","week","dow","doy","factory","__webpack_require__","monthsParseExact","b","output","symbolMap","1","2","3","4","5","6","7","8","9","0","numberMap","༡","༢","༣","༤","༥","༦","༧","༨","༩","༠","preparse","string","replace","match","postformat","meridiemParse","meridiemHour","hour","meridiem","minute","isLower","this","day","standalone","isPM","input","period","isFormat","ll","lll","llll","hours","१","२","३","४","५","६","७","८","९","०","૧","૨","૩","૪","૫","૬","૭","૮","૯","૦","minutes","១","២","៣","៤","៥","៦","៧","៨","៩","០","processRelativeTime","withoutSuffix","key","isFuture","੧","੨","੩","੪","੫","੬","੭","੮","੯","੦","affix","exec","eras","since","offset","name","narrow","abbr","until","eraYearOrdinalRegex","eraYearOrdinalParse","parseInt","l","now","plural","n","translate","result","monthsShortDot","suffixes","70","80","20","50","100","10","30","60","90","a","c","translator","words","correctGrammaticalCase","wordKey","length","relativeTimeWithPlural","word","num","forms","pluralForm","plurals","pluralize","u","f","str","$0","$1","$2","token","isUpper","١","٢","٣","٤","٥","٦","٧","٨","٩","٠","units","translateSingular","special","relativeTimeMr","hm","12","13","40","௧","௨","௩","௪","௫","௬","௭","௮","௯","௦","೧","೨","೩","೪","೫","೬","೭","೮","೯","೦","eifelerRegelAppliesToNumber","isNaN","lastDigit","firstDigit","substr","indexOf","days","weekEndings","charAt","toLowerCase","call","relativeTimeWithMutation","text","mutationTable","undefined","substring","softMutation","mutation","minWeekdaysParse","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","lastNumber","last2Digits","numbersPast","numbersFuture","verbalNumber","၁","၂","၃","၄","၅","၆","၇","၈","၉","၀","invalidDate","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","Function","Object","prototype","toString","isFunction","apply","monthsNominative","monthsSubjective","۱","۲","۳","۴","۵","۶","۷","۸","۹","۰","১","২","৩","৪","৫","৬","৭","৮","৯","০","separator","processHoursFunction","nounCase","nominative","accusative","genitive","slice","concat","w","ww","relativeTimeWithSingular","module","exports","hookCallback","some","hooks","arguments","isArray","Array","isObject","hasOwnProp","hasOwnProperty","isObjectEmpty","obj","getOwnPropertyNames","k","isUndefined","isNumber","isDate","Date","map","arr","fn","i","res","push","extend","valueOf","createUTC","locale","strict","createLocalOrUTC","utc","getParsingFlags","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","t","len","momentProperties","updateInProgress","copyConfig","to","from","prop","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","args","join","Error","stack","keys","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","set","zeroFill","targetLength","forceSign","absNumber","Math","abs","zerosToFill","sign","pow","max","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","callback","func","localeData","removeFormattingTokens","formatMoment","expandFormat","array","makeFormatFunction","replaceLongDateFormatTokens","lastIndex","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","value","isFinite","makeGetSet","keepTime","set$1","get","date","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","RegExp","regexEscape","matched","p1","p2","p3","p4","unescapeFormat","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","x","mod","o","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","setMonth","dayOfMonth","min","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","parseTwoDigitYear","getSetYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","fwd","fwdlw","getUTCDay","dayOfYearFromWeeks","weekday","resYear","resDayOfYear","localWeekday","weekOffset","dayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","lowercase","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","_meridiem","pos","pos1","pos2","globalLocale","getSetHour","baseConfig","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","e","values","data","getLocale","_config","parentLocale","forEach","names","j","next","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","configFromRFC2822","parsedArray","preprocessRFC2822","weekdayStr","parsedInput","weekdayProvided","weekdayActual","getDay","checkWeekday","obsOffset","militaryOffset","numOffset","calculateOffset","setUTCMinutes","getUTCMinutes","defaults","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","getUTCMonth","getUTCDate","getFullYear","getMonth","getDate","currentDateArray","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ms","setFullYear","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","isPm","meridiemFixWrap","erasConvertYear","prepareConfig","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","second","millisecond","configFromObject","configFromInput","isUTC","add","createFromConfig","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","years","quarters","quarter","weeks","isoWeek","milliseconds","unitHasDecimal","parseFloat","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","utcOffset","offsetFromString","chunkOffset","matcher","chunk","parts","matches","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","parseIso","base","isBefore","positiveMomentsDifference","momentsDifference","inp","isAfter","createAdder","direction","tmp","addSubtract","isAdding","invalid","subtract","isString","String","monthDiff","anchor2","adjust","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","proto","preParsePostFormat","time","formats","arrayTest","dataTypeTest","filter","item","isNumberOrStringArray","objectTest","propertyTest","properties","isMomentInputObject","isMomentInput","isCalendarSpec","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","toArray","toObject","toDate","toISOString","keepOffset","inspect","prefix","suffix","zone","isLocal","Symbol","for","toJSON","unix","creationData","eraName","eraNarrow","eraAbbr","eraYear","dir","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","toUpperCase","tok","_invalidDate","_ordinal","_relativeTime","pastFuture","source","_eras","_monthsShort","monthName","_monthsParseExact","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","weekdayName","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","assign","posNegDuration","relativeTime$1","toIsoString","version","setHookCallback","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","numbersNouns","numberNoun","hundred","ten","one","numberAsNoun"],"mappings":"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IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KAGA,SAAAoG,EAAAlK,EAAAqF,EAAArD,EAAAuD,GACA,IAAA/E,EAAA,GACA,GAAA6E,EACA,OAAArD,GACA,QACAxB,EAAA,aACA,MACA,SACAA,EAAA,WACA,MACA,QACAA,EAAA,WACA,MACA,SACAA,EAAA,YACA,MACA,QACAA,EAAA,SACA,MACA,SACAA,EAAA,SACA,MACA,QACAA,EAAA,UACA,MACA,SACAA,EAAA,UACA,MACA,QACAA,EAAA,WACA,MACA,SACAA,EAAA,WACA,MACA,QACAA,EAAA,UACA,MACA,SACAA,EAAA,gBAIA,OAAAwB,GACA,QACAxB,EAAA,eACA,MACA,SACAA,EAAA,aACA,MACA,QACAA,EAAA,aACA,MACA,SACAA,EAAA,aACA,MACA,QACAA,EAAA,WACA,MACA,SACAA,EAAA,WACA,MACA,QACAA,EAAA,YACA,MACA,SACAA,EAAA,YACA,MACA,QACAA,EAAA,cACA,MACA,SACAA,EAAA,cACA,MACA,QACAA,EAAA,YACA,MACA,SACAA,EAAA,YAIA,OAAAA,EAAAyB,QAAA,MAAAjC,GAGApD,EAAAM,aAAA,MACAC,OAAA,wFAAAL,MACA,KAEAM,YAAA,gFAAAN,MACA,KAEAwD,kBAAA,EACAxC,SAAA,uDAAAhB,MAAA,KACAiB,cAAA,kCAAAjB,MAAA,KACAkB,YAAA,qBAAAlB,MAAA,KACAoB,gBACAC,GAAA,eACAC,IAAA,kBACAC,EAAA,aACAC,GAAA,cACAC,IAAA,4BACAC,KAAA,mCAEAC,UACAC,QAAA,UACAC,QAAA,aACAC,SAAA,WACAC,QAAA,WACAC,SAAA,mBACAC,SAAA,KAEAC,cACAC,OAAA,UACAC,KAAA,WACAC,EAAA+K,EACA9K,GAAA8K,EACA7M,EAAA6M,EACA7K,GAAA6K,EACA5K,EAAA4K,EACA3K,GAAA2K,EACA1K,EAAA0K,EACAzK,GAAAyK,EACAxK,EAAAwK,EACAvK,GAAAuK,EACAtK,EAAAsK,EACArK,GAAAqK,GAEAnI,SAAA,SAAAC,GACA,OAAAA,EAAAC,QAAA,yBAAAC,GACA,OAAAd,EAAAc,MAGAC,WAAA,SAAAH,GACA,OAAAA,EAAAC,QAAA,eAAAC,GACA,OAAAzB,EAAAyB,MAGAE,cAAA,qCACAC,aAAA,SAAAC,EAAAC,GAIA,OAHA,KAAAD,IACAA,EAAA,GAEA,UAAAC,GAAA,UAAAA,EACAD,EAEA,WAAAC,GACA,aAAAA,GACA,WAAAA,EAEAD,GAAA,GAAAA,IAAA,QALa,GAQbC,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,GAAA,GAAAA,EAAA,EACA,QACaA,EAAA,GACb,QACaA,EAAA,GACb,SACaA,EAAA,GACb,WAEA,UAGArC,MACAC,IAAA,EACAC,IAAA,KAvMuCC,CAAWC,EAAQ,gCCEzD,SAAAzD,GAA2B;kCAI5B;IAAA6D,GACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,KAEAC,GACAiC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KAGAlH,EAAAM,aAAA,MACAC,OAAA,uFAAAL,MACA,KAEAM,YAAA,uEAAAN,MACA,KAEAwD,kBAAA,EACAxC,SAAA,wDAAAhB,MACA,KAEAiB,cAAA,0CAAAjB,MAAA,KACAkB,YAAA,4BAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,eACAC,IAAA,kBACAC,EAAA,aACAC,GAAA,cACAC,IAAA,4BACAC,KAAA,mCAEAuD,SAAA,SAAAC,GACA,OAAAA,EAAAC,QAAA,yBAAAC,GACA,OAAAd,EAAAc,MAGAC,WAAA,SAAAH,GACA,OAAAA,EAAAC,QAAA,eAAAC,GACA,OAAAzB,EAAAyB,MAGAE,cAAA,yBACAC,aAAA,SAAAC,EAAAC,GAIA,OAHA,KAAAD,IACAA,EAAA,GAEA,SAAAC,EACAD,EAAA,EAAAA,IAAA,GACa,UAAAC,EACbD,EACa,WAAAC,EACbD,GAAA,GAAAA,IAAA,GACa,SAAAC,EACbD,EAAA,QADa,GAIbC,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,EACA,OACaA,EAAA,GACb,QACaA,EAAA,GACb,SACaA,EAAA,GACb,OAEA,QAGA7D,UACAC,QAAA,UACAC,QAAA,YACAC,SAAA,qBACAC,QAAA,YACAC,SAAA,oBACAC,SAAA,KAEAC,cACAC,OAAA,OACAC,KAAA,WACAC,EAAA,YACAC,GAAA,aACA/B,EAAA,WACAgC,GAAA,WACAC,EAAA,WACAC,GAAA,WACAC,EAAA,SACAC,GAAA,SACAC,EAAA,WACAC,GAAA,WACAC,EAAA,UACAC,GAAA,WAEAI,MACAC,IAAA,EACAC,IAAA,KAtHuCC,CAAWC,EAAQ,gCCKzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,SACAC,OAAA,wCAAAL,MACA,KAEAM,YAAA,yCAAAN,MACA,KAEAgB,SAAA,8BAAAhB,MAAA,KACAiB,cAAA,uBAAAjB,MAAA,KACAkB,YAAA,gBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,YACAC,IAAA,kBACAC,KAAA,sBACAsI,EAAA,WACA7D,GAAA,YACAC,IAAA,kBACAC,KAAA,uBAEAf,cAAA,oBACAC,aAAA,SAAAC,EAAAC,GAIA,OAHA,KAAAD,IACAA,EAAA,GAEA,OAAAC,GAAA,OAAAA,GAAA,OAAAA,EACAD,EACa,OAAAC,EACbD,GAAA,GAAAA,IAAA,GACa,OAAAC,GAAA,OAAAA,EACbD,EAAA,QADa,GAIbC,SAAA,SAAAD,EAAAE,EAAAC,GACA,IAAA0H,EAAA,IAAA7H,EAAAE,EACA,OAAA2H,EAAA,IACA,KACaA,EAAA,IACb,KACaA,EAAA,KACb,KACaA,EAAA,KACb,KACaA,EAAA,KACb,KAEA,MAGA1L,UACAC,QAAA,UACAC,QAAA,UACAC,SAAA,aACAC,QAAA,UACAC,SAAA,aACAC,SAAA,KAEAe,uBAAA,iBACAC,QAAA,SAAAC,EAAA+C,GACA,OAAAA,GACA,QACA,QACA,UACA,OAAA/C,EAAA,IACA,QACA,OAAAA,EAAA,IACA,QACA,QACA,OAAAA,EAAA,IACA,QACA,OAAAA,IAGAhB,cACAC,OAAA,MACAC,KAAA,MACAC,EAAA,KACAC,GAAA,OACA/B,EAAA,OACAgC,GAAA,QACAC,EAAA,OACAC,GAAA,QACAC,EAAA,MACAC,GAAA,OACAC,EAAA,OACAC,GAAA,QACAC,EAAA,MACAC,GAAA,UAhGuCO,CAAWC,EAAQ,gCCCzD,SAAAzD,GAA2B;kCAI5B;IAAAyK,GACAlG,EAAA,MACAT,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAyG,GAAA,MACAyC,GAAA,MACAC,GAAA,MACA7C,GAAA,MACAI,GAAA,MACA0C,GAAA,MACA7C,GAAA,MACAI,GAAA,MACAP,GAAA,MACAC,GAAA,MACAO,GAAA,MACAJ,IAAA,OAGA9K,EAAAM,aAAA,MACAC,OAAA,yEAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,yDAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,2BAEAC,UACAC,QAAA,mBACAC,QAAA,mBACAE,QAAA,mBACAD,SAAA,kCACAE,SAAA,oCACAC,SAAA,KAEAC,cACAC,OAAA,WACAC,KAAA,SACAC,EAAA,eACA9B,EAAA,YACAgC,GAAA,YACAC,EAAA,UACAC,GAAA,UACAC,EAAA,SACAC,GAAA,SACAC,EAAA,SACAC,GAAA,SACAC,EAAA,SACAC,GAAA,UAEAuC,cAAA,qBACAC,aAAA,SAAAC,EAAAC,GAIA,OAHA,KAAAD,IACAA,EAAA,GAEA,QAAAC,EACAD,EAAA,EAAAA,IAAA,GACa,SAAAC,EACbD,EACa,QAAAC,EACbD,GAAA,GAAAA,IAAA,GACa,UAAAC,EACbD,EAAA,QADa,GAIbC,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,EACA,MACaA,EAAA,GACb,OACaA,EAAA,GACb,MACaA,EAAA,GACb,QAEA,OAGAxC,uBAAA,kBACAC,QAAA,SAAAC,GACA,IAAA+H,EAAA/H,EAAA,GACAO,EAAAP,GAAA,aACA,OAAAA,GAAAqH,EAAArH,IAAAqH,EAAAU,IAAAV,EAAA9G,KAEAN,MACAC,IAAA,EACAC,IAAA,KA7GuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5B;IAAAO,EAAA,oFAAAL,MACA,KAEAM,EAAA,kDAAAN,MAAA,KACAE,GACA,QACA,QACA,QACA,QACA,QACA,yBACA,4BACA,QACA,QACA,QACA,QACA,SAIAC,EAAA,wJAEA,SAAA+J,EAAAC,GACA,OAAAA,EAAA,GAAAA,EAAA,SAAAA,EAAA,IAEA,SAAAC,EAAAlH,EAAAqF,EAAAC,EAAAC,GACA,IAAA4B,EAAAnH,EAAA,IACA,OAAAsF,GACA,QACA,OAAAD,GAAAE,EAAA,6BACA,SACA,OAAAF,GAAAE,EACA4B,GAAAH,EAAAhH,GAAA,oBAEAmH,EAAA,YAEA,QACA,OAAA9B,EAAA,SAAAE,EAAA,mBACA,SACA,OAAAF,GAAAE,EACA4B,GAAAH,EAAAhH,GAAA,kBAEAmH,EAAA,WAEA,QACA,OAAA9B,EAAA,SAAAE,EAAA,mBACA,SACA,OAAAF,GAAAE,EACA4B,GAAAH,EAAAhH,GAAA,kBAEAmH,EAAA,WAEA,QACA,OAAA9B,GAAAE,EAAA,aACA,SACA,OAAAF,GAAAE,EACA4B,GAAAH,EAAAhH,GAAA,aAEAmH,EAAA,MAEA,QACA,OAAA9B,GAAAE,EAAA,kBACA,SACA,OAAAF,GAAAE,EACA4B,GAAAH,EAAAhH,GAAA,mBAEAmH,EAAA,SAEA,QACA,OAAA9B,GAAAE,EAAA,cACA,SACA,OAAAF,GAAAE,EACA4B,GAAAH,EAAAhH,GAAA,cAEAmH,EAAA,QAKAvK,EAAAM,aAAA,MACAC,SACAC,cACAH,cACAQ,iBAAAR,EAGAS,kBAAA,uKACAC,uBAAA,sDACAX,cACAY,gBAAAZ,EACAa,iBAAAb,EACAc,SAAA,mDAAAhB,MAAA,KACAiB,cAAA,uBAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,OACAC,IAAA,UACAC,EAAA,aACAC,GAAA,eACAC,IAAA,oBACAC,KAAA,yBACAsI,EAAA,cAEArI,UACAC,QAAA,cACAC,QAAA,eACAC,SAAA,WACA,OAAA8D,KAAAC,OACA,OACA,wBACA,OACA,OACA,wBACA,OACA,yBACA,OACA,0BACA,OACA,uBACA,OACA,0BAGA9D,QAAA,eACAC,SAAA,WACA,OAAA4D,KAAAC,OACA,OACA,8BACA,OACA,OACA,6BACA,OACA,8BACA,OACA,OACA,6BACA,OACA,gCAGA5D,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,UACAC,EAAA+H,EACA9H,GAAA8H,EACA7J,EAAA6J,EACA7H,GAAA6H,EACA5H,EAAA4H,EACA3H,GAAA2H,EACA1H,EAAA0H,EACAzH,GAAAyH,EACAxH,EAAAwH,EACAvH,GAAAuH,EACAtH,EAAAsH,EACArH,GAAAqH,GAEApH,uBAAA,YACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KAzKuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5B;IAAA6D,GACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,KAEAC,GACAmJ,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KAGApO,EAAAM,aAAA,MACAC,OAAA,0FAAAL,MACA,KAEAM,YAAA,0FAAAN,MACA,KAEAgB,SAAA,8FAAAhB,MACA,KAEAiB,cAAA,mDAAAjB,MACA,KAEAkB,YAAA,sBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,qBACAC,KAAA,4BAEAC,UACAC,QAAA,aACAC,QAAA,YACAC,SAAA,WACAC,QAAA,cACAC,SAAA,yBACAC,SAAA,KAEAC,cACAC,OAAA,SACAC,KAAA,UACAC,EAAA,oBACAC,GAAA,eACA/B,EAAA,cACAgC,GAAA,gBACAC,EAAA,gBACAC,GAAA,eACAC,EAAA,WACAC,GAAA,aACAC,EAAA,YACAC,GAAA,cACAC,EAAA,aACAC,GAAA,eAEAC,uBAAA,aACAC,QAAA,SAAAC,GACA,OAAAA,EAAA,OAEA+B,SAAA,SAAAC,GACA,OAAAA,EAAAC,QAAA,yBAAAC,GACA,OAAAd,EAAAc,MAGAC,WAAA,SAAAH,GACA,OAAAA,EAAAC,QAAA,eAAAC,GACA,OAAAzB,EAAAyB,MAIAE,cAAA,wCACAG,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,EACA,SACaA,EAAA,EACb,SACaA,EAAA,GACb,QACaA,EAAA,GACb,WACaA,EAAA,GACb,WACaA,EAAA,GACb,QAEA,UAGAD,aAAA,SAAAC,EAAAC,GAIA,OAHA,KAAAD,IACAA,EAAA,GAEA,UAAAC,EACAD,EAAA,EAAAA,IAAA,GACa,UAAAC,GAAA,SAAAA,EACbD,EACa,YAAAC,GACbD,GAAA,GAAAA,EAEAA,EAAA,IAGArC,MACAC,IAAA,EACAC,IAAA,KA/HuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5B;IAAA6D,GACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,KAEAC,GACA6J,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KAGA9O,EAAAM,aAAA,MACAC,OAAA,6FAAAL,MACA,KAEAM,YAAA,2EAAAN,MACA,KAEAwD,kBAAA,EACAxC,SAAA,0DAAAhB,MACA,KAEAiB,cAAA,qCAAAjB,MAAA,KACAkB,YAAA,wBAAAlB,MAAA,KACAoB,gBACAC,GAAA,SACAC,IAAA,YACAC,EAAA,aACAC,GAAA,cACAC,IAAA,sBACAC,KAAA,6BAEAC,UACAC,QAAA,YACAC,QAAA,YACAC,SAAA,WACAC,QAAA,cACAC,SAAA,oBACAC,SAAA,KAEAC,cACAC,OAAA,UACAC,KAAA,WACAC,EAAA,gBACAC,GAAA,gBACA/B,EAAA,aACAgC,GAAA,WACAC,EAAA,YACAC,GAAA,UACAC,EAAA,WACAC,GAAA,SACAC,EAAA,cACAC,GAAA,YACAC,EAAA,YACAC,GAAA,WAEAkC,SAAA,SAAAC,GACA,OAAAA,EAAAC,QAAA,yBAAAC,GACA,OAAAd,EAAAc,MAGAC,WAAA,SAAAH,GACA,OAAAA,EAAAC,QAAA,eAAAC,GACA,OAAAzB,EAAAyB,MAGAE,cAAA,gCACAC,aAAA,SAAAC,EAAAC,GAIA,OAHA,KAAAD,IACAA,EAAA,GAEA,WAAAC,EACAD,EAAA,EAAAA,IAAA,GACa,aAAAC,EACbD,EACa,aAAAC,EACbD,GAAA,GAAAA,IAAA,GACa,SAAAC,EACbD,EAAA,QADa,GAIbC,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,EACA,SACaA,EAAA,GACb,WACaA,EAAA,GACb,WACaA,EAAA,GACb,OAEA,UAGAxC,uBAAA,eACAC,QAAA,SAAAC,GACA,OAAAA,EAAA,OAEAC,MACAC,IAAA,EACAC,IAAA,KAzHuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,SACAC,OAAA,wEAAAL,MACA,KAEAM,YAAA,wEAAAN,MACA,KAEAgB,SAAA,sDAAAhB,MAAA,KACAiB,cAAA,wCAAAjB,MAAA,KACAkB,YAAA,gBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,0BAEAC,UACAC,QAAA,wBACAC,QAAA,sBACAC,SAAA,uBACAC,QAAA,sBACAC,SAAA,uBACAC,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,SACAC,EAAA,OACAC,GAAA,WACA/B,EAAA,QACAgC,GAAA,WACAC,EAAA,OACAC,GAAA,WACAC,EAAA,MACAC,GAAA,UACAC,EAAA,MACAC,GAAA,UACAC,EAAA,MACAC,GAAA,YAEAI,MACAC,IAAA,EACAC,IAAA,MApDuCC,CAAWC,EAAQ,gCCIzD,SAAAzD,GAA2B;kCAI5B;SAAAwI,EAAApF,EAAAqF,EAAAC,EAAAC,GACA,IAAAjI,GACAD,GAAA,6BACAiC,GAAA,2BACAE,GAAA,uBACAE,GAAA,0BACAE,GAAA,yBAEA,OAAAyF,EAAA/H,EAAAgI,GAAA,GAAAhI,EAAAgI,GAAA,GAuBA,SAAAqG,EAAA3L,GAEA,GADAA,EAAA6G,SAAA7G,EAAA,IACA4L,MAAA5L,GACA,SAEA,GAAAA,EAAA,EAEA,SACS,GAAAA,EAAA,GAET,UAAAA,MAAA,EAIS,GAAAA,EAAA,KAET,IAAA6L,EAAA7L,EAAA,GACA8L,EAAA9L,EAAA,GACA,OACA2L,EADA,IAAAE,EACAC,EAEAD,GACS,GAAA7L,EAAA,KAET,KAAAA,GAAA,IACAA,GAAA,GAEA,OAAA2L,EAAA3L,GAIA,OAAA2L,EADA3L,GAAA,KAKApD,EAAAM,aAAA,MACAC,OAAA,uFAAAL,MACA,KAEAM,YAAA,+DAAAN,MACA,KAEAwD,kBAAA,EACAxC,SAAA,mEAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,cACAC,IAAA,iBACAC,EAAA,aACAC,GAAA,eACAC,IAAA,2BACAC,KAAA,kCAEAC,UACAC,QAAA,eACAK,SAAA,IACAJ,QAAA,eACAC,SAAA,eACAC,QAAA,mBACAC,SAAA,WAEA,OAAA4D,KAAAC,OACA,OACA,OACA,gCACA,QACA,kCAIA3D,cACAC,OAhGA,SAAA+C,GAEA,OAAA2J,EADA3J,EAAA+J,OAAA,EAAA/J,EAAAgK,QAAA,OAEA,KAAAhK,EAEA,MAAAA,GA4FA9C,KA1FA,SAAA8C,GAEA,OAAA2J,EADA3J,EAAA+J,OAAA,EAAA/J,EAAAgK,QAAA,OAEA,QAAAhK,EAEA,SAAAA,GAsFA7C,EAAA,kBACAC,GAAA,cACA/B,EAAA+H,EACA/F,GAAA,cACAC,EAAA8F,EACA7F,GAAA,aACAC,EAAA4F,EACA3F,GAAA,UACAC,EAAA0F,EACAzF,GAAA,WACAC,EAAAwF,EACAvF,GAAA,WAEAC,uBAAA,YACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KApIuCC,CAAWC,EAAQ,gCCEzD,SAAAzD,GAA2B;kCAI5B;SAAAsK,EAAAlH,EAAAqF,EAAAC,GACA,IAAA6B,EAAAnH,EAAA,IACA,OAAAsF,GACA,SAQA,OANA6B,GADA,IAAAnH,EACA,UACiB,IAAAA,GAAA,IAAAA,GAAA,IAAAA,EACjB,UAEA,UAGA,QACA,OAAAqF,EAAA,8BACA,SAQA,OANA8B,GADA,IAAAnH,EACA,SACiB,IAAAA,GAAA,IAAAA,GAAA,IAAAA,EACjB,SAEA,SAGA,QACA,OAAAqF,EAAA,0BACA,SAQA,OANA8B,GADA,IAAAnH,EACA,MACiB,IAAAA,GAAA,IAAAA,GAAA,IAAAA,EACjB,OAEA,OAGA,SAMA,OAJAmH,GADA,IAAAnH,EACA,MAEA,OAGA,SAQA,OANAmH,GADA,IAAAnH,EACA,SACiB,IAAAA,GAAA,IAAAA,GAAA,IAAAA,EACjB,UAEA,UAGA,SAQA,OANAmH,GADA,IAAAnH,EACA,SACiB,IAAAA,GAAA,IAAAA,GAAA,IAAAA,EACjB,SAEA,UAMApD,EAAAM,aAAA,MACAC,QACAG,OAAA,oGAAAR,MACA,KAEA8F,WAAA,gGAAA9F,MACA,MAGAM,YAAA,+DAAAN,MACA,KAEAwD,kBAAA,EACAxC,SAAA,4DAAAhB,MACA,KAEAiB,cAAA,qCAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,OACAC,IAAA,UACAC,EAAA,aACAC,GAAA,eACAC,IAAA,oBACAC,KAAA,2BAEAC,UACAC,QAAA,eACAC,QAAA,eACAC,SAAA,WACA,OAAA8D,KAAAC,OACA,OACA,8BACA,OACA,6BACA,OACA,4BACA,OACA,OACA,OACA,OACA,0BAGA9D,QAAA,eACAC,SAAA,WACA,OAAA4D,KAAAC,OACA,OACA,mCACA,OACA,kCACA,OACA,iCACA,OACA,OACA,OACA,OACA,+BAGA5D,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,WACAC,EAAA,cACAC,GAAA8H,EACA7J,EAAA6J,EACA7H,GAAA6H,EACA5H,EAAA4H,EACA3H,GAAA2H,EACA1H,EAAA,MACAC,GAAAyH,EACAxH,EAAA,SACAC,GAAAuH,EACAtH,EAAA,SACAC,GAAAqH,GAEApH,uBAAA,YACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KAxJuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5B;IAAAyK,GACA3G,EAAA,QACAI,EAAA,QACAG,EAAA,QACAqG,GAAA,QACAC,GAAA,QACA5G,EAAA,OACAK,EAAA,OACAwG,GAAA,OACAC,GAAA,OACA7G,EAAA,QACAC,EAAA,QACA6G,IAAA,QACA3G,EAAA,OACAG,EAAA,QACAyG,GAAA,QACAC,GAAA,QACAC,GAAA,QACAC,GAAA,SAGAlL,EAAAM,aAAA,MACAC,OAAA,+EAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,qEAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,2BAEAC,UACAC,QAAA,kBACAC,QAAA,kBACAC,SAAA,+BACAC,QAAA,aACAC,SAAA,+BACAC,SAAA,KAEAC,cACAC,OAAA,WACAC,KAAA,WACAC,EAAA,kBACAC,GAAA,YACA/B,EAAA,aACAgC,GAAA,YACAC,EAAA,WACAC,GAAA,UACAC,EAAA,UACAC,GAAA,SACAC,EAAA,SACAC,GAAA,QACAC,EAAA,SACAC,GAAA,SAEAuC,cAAA,0BACAS,KAAA,SAAAC,GACA,yBAAAvF,KAAAuF,IAEAP,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,EACA,OACaA,EAAA,GACb,QACaA,EAAA,GACb,SAEA,SAGAxC,uBAAA,wCACAC,QAAA,SAAAC,GACA,OAAAA,EAEA,OAAAA,EAAA,QAEA,IAAA+H,EAAA/H,EAAA,GACAO,EAAAP,EAAA,IAAA+H,EACAC,EAAAhI,GAAA,aACA,OAAAA,GAAAqH,EAAAU,IAAAV,EAAA9G,IAAA8G,EAAAW,KAEA/H,MACAC,IAAA,EACAC,IAAA,KAnGuCC,CAAWC,EAAQ,gCCMzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,SACAC,OAAA,wCAAAL,MACA,KAEAM,YAAA,yCAAAN,MACA,KAEAgB,SAAA,8BAAAhB,MAAA,KACAiB,cAAA,uBAAAjB,MAAA,KACAkB,YAAA,gBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,YACAC,IAAA,kBACAC,KAAA,sBACAsI,EAAA,WACA7D,GAAA,YACAC,IAAA,kBACAC,KAAA,uBAEAf,cAAA,oBACAC,aAAA,SAAAC,EAAAC,GAIA,OAHA,KAAAD,IACAA,EAAA,GAEA,OAAAC,GAAA,OAAAA,GAAA,OAAAA,EACAD,EACa,OAAAC,EACbD,GAAA,GAAAA,IAAA,GACa,OAAAC,GAAA,OAAAA,EACbD,EAAA,QADa,GAIbC,SAAA,SAAAD,EAAAE,EAAAC,GACA,IAAA0H,EAAA,IAAA7H,EAAAE,EACA,OAAA2H,EAAA,IACA,KACaA,EAAA,IACb,KACaA,EAAA,KACb,KACa,OAAAA,EACb,KACaA,EAAA,KACb,KAEA,MAGA1L,UACAC,QAAA,SACAC,QAAA,SACAC,SAAA,YACAC,QAAA,SACAC,SAAA,YACAC,SAAA,KAEAe,uBAAA,iBACAC,QAAA,SAAAC,EAAA+C,GACA,OAAAA,GACA,QACA,QACA,UACA,OAAA/C,EAAA,IACA,QACA,OAAAA,EAAA,IACA,QACA,QACA,OAAAA,EAAA,IACA,QACA,OAAAA,IAGAhB,cACAC,OAAA,MACAC,KAAA,MACAC,EAAA,KACAC,GAAA,OACA/B,EAAA,OACAgC,GAAA,QACAC,EAAA,OACAC,GAAA,QACAC,EAAA,MACAC,GAAA,OACAC,EAAA,OACAC,GAAA,QACAC,EAAA,MACAC,GAAA,UAhGuCO,CAAWC,EAAQ,gCCCzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,yFAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,6CAAAhB,MAAA,KACAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,4BACAC,KAAA,mCAEA4D,cAAA,wBACAC,aAAA,SAAAC,EAAAC,GAIA,OAHA,KAAAD,IACAA,EAAA,GAEA,SAAAC,EACAD,EACa,UAAAC,EACbD,GAAA,GAAAA,IAAA,GACa,SAAAC,GAAA,UAAAA,EACbD,EAAA,QADa,GAIbC,SAAA,SAAAa,EAAAqB,EAAAhC,GACA,OAAAW,EAAA,GACA,OACaA,EAAA,GACb,QACaA,EAAA,GACb,OAEA,SAGA3E,UACAC,QAAA,sBACAC,QAAA,mBACAC,SAAA,kBACAC,QAAA,qBACAC,SAAA,uBACAC,SAAA,KAEAC,cACAC,OAAA,WACAC,KAAA,eACAC,EAAA,iBACAC,GAAA,WACA/B,EAAA,UACAgC,GAAA,WACAC,EAAA,QACAC,GAAA,SACAC,EAAA,SACAC,GAAA,UACAC,EAAA,UACAC,GAAA,WACAC,EAAA,UACAC,GAAA,YAEAI,MACAC,IAAA,EACAC,IAAA,KAzEuCC,CAAWC,EAAQ,gCCEzD,SAAAzD,GAA2B;kCA4C5BA;EAAAM,aAAA,MACAC,QAxCA,SACA,UACA,QACA,UACA,YACA,YACA,OACA,SACA,eACA,mBACA,UACA,WA8BAC,aA3BA,MACA,QACA,OACA,MACA,OACA,QACA,OACA,MACA,OACA,OACA,OACA,QAiBAkD,kBAAA,EACAxC,UAfA,eACA,WACA,WACA,cACA,YACA,YACA,eAUAC,eARA,oDASAC,aARA,mCASAE,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,2BAEAC,UACAC,QAAA,gBACAC,QAAA,kBACAC,SAAA,eACAC,QAAA,eACAC,SAAA,2BACAC,SAAA,KAEAC,cACAC,OAAA,OACAC,KAAA,YACAC,EAAA,gBACAC,GAAA,aACA/B,EAAA,UACAgC,GAAA,aACAC,EAAA,iBACAC,GAAA,oBACAC,EAAA,KACAC,GAAA,QACAC,EAAA,KACAC,GAAA,YACAC,EAAA,SACAC,GAAA,aAEAC,uBAAA,mBACAC,QAAA,SAAAC,GACA,IAAAQ,EAAA,IAAAR,EAAA,IAAAA,EAAA,gBACA,OAAAA,EAAAQ,GAEAP,MACAC,IAAA,EACAC,IAAA,KA7FuCC,CAAWC,EAAQ,gCCIzD,SAAAzD,GAA2B;kCAI5B;IAAAO,GACA,QACA,QACA,OACA,QACA,MACA,MACA,SACA,OACA,QACA,SACA,QACA,SAEA8O,GAAA,mDAEArP,EAAAM,aAAA,MACAC,SACAC,YAAAD,EACAW,SAAAmO,EACAlO,cAAAkO,EACAjO,YAAAiO,EACA/N,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,2BAEA4D,cAAA,UACAS,KAAA,SAAAC,GACA,cAAAA,GAEAP,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,GACA,MAEA,OAEA7D,UACAC,QAAA,eACAC,QAAA,eACAC,SAAA,iBACAC,QAAA,sBACAC,SAAA,yBACAC,SAAA,KAEAC,cACAC,OAAA,SACAC,KAAA,SACAC,EAAA,YACAC,GAAA,WACA/B,EAAA,UACAgC,GAAA,SACAC,EAAA,YACAC,GAAA,WACAC,EAAA,SACAC,GAAA,QACAC,EAAA,UACAC,GAAA,SACAC,EAAA,UACAC,GAAA,UAEAkC,SAAA,SAAAC,GACA,OAAAA,EAAAC,QAAA,WAEAE,WAAA,SAAAH,GACA,OAAAA,EAAAC,QAAA,WAEAhC,MACAC,IAAA,EACAC,IAAA,KA/EuCC,CAAWC,EAAQ,gCCEzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,mHAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,sEAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,SACAC,IAAA,YACAC,EAAA,aACAC,GAAA,cACAC,IAAA,qBACAC,KAAA,4BAEAC,UACAC,QAAA,mBACAC,QAAA,kBACAC,SAAA,gBACAC,QAAA,iBACAC,SAAA,8BACAC,SAAA,KAEAC,cACAC,OAAA,SACAC,KAAA,iBACAC,EAAA,qBACAC,GAAA,cACA/B,EAAA,SACAgC,GAAA,aACAC,EAAA,SACAC,GAAA,aACAC,EAAA,UACAC,GAAA,cACAC,EAAA,UACAC,GAAA,cACAC,EAAA,UACAC,GAAA,eAEAuC,cAAA,mCACAG,SAAA,SAAAa,EAAAqB,EAAAhC,GACA,OAAAW,EAAA,GACA,UACaA,EAAA,GACb,QACaA,EAAA,GACb,aAEA,WAGAf,aAAA,SAAAC,EAAAC,GAIA,OAHA,KAAAD,IACAA,EAAA,GAEA,YAAAC,EACAD,EACa,UAAAC,EACbD,GAAA,GAAAA,IAAA,GACa,eAAAC,GAAA,YAAAA,EACb,IAAAD,EACA,EAEAA,EAAA,QAJa,GAObxC,uBAAA,UACAC,QAAA,KACAE,MACAC,IAAA,EACAC,IAAA,KAjFuCC,CAAWC,EAAQ,gCCKzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,OACAC,OAAA,0FAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,kDAAAhB,MAAA,KACAiB,cAAA,iCAAAjB,MAAA,KACAkB,YAAA,yBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,2BAEAC,UACAC,QAAA,gBACAC,QAAA,gBACAC,SAAA,gBACAC,QAAA,oBACAC,SAAA,+BACAC,SAAA,KAEAC,cACAC,OAAA,SACAC,KAAA,WACAC,EAAA,gBACAC,GAAA,aACA/B,EAAA,aACAgC,GAAA,YACAC,EAAA,WACAC,GAAA,UACAC,EAAA,YACAC,GAAA,WACAC,EAAA,YACAC,GAAA,WACAC,EAAA,YACAC,GAAA,YAEAC,uBAAA,uBACAC,QAAA,SAAAC,GACA,IAAAO,EAAAP,EAAA,GACAQ,EACA,MAAAR,EAAA,QACA,KACA,IAAAO,EACA,KACA,IAAAA,EACA,KACA,IAAAA,EACA,KACA,KACA,OAAAP,EAAAQ,GAEAP,MACAC,IAAA,EACAC,IAAA,KAhEuCC,CAAWC,EAAQ,gCCEzD,SAAAzD,GAA2B;kCAI5B;IAAAwK,EAAA,8DAAAtK,MACA,KAEAM,EAAA,kDAAAN,MAAA,KACAE,GACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEAC,EAAA,mLAEAL,EAAAM,aAAA,SACAC,OAAA,2FAAAL,MACA,KAEAM,YAAA,SAAAC,EAAAC,GACA,OAAAD,EAEa,QAAAE,KAAAD,GACbF,EAAAC,EAAAG,SAEA4J,EAAA/J,EAAAG,SAJA4J,GAOAnK,cACAQ,iBAAAR,EACAS,kBAAA,+FACAC,uBAAA,0FACAX,cACAY,gBAAAZ,EACAa,iBAAAb,EACAc,SAAA,uDAAAhB,MAAA,KACAiB,cAAA,qCAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,SACAC,IAAA,YACAC,EAAA,aACAC,GAAA,wBACAC,IAAA,+BACAC,KAAA,sCAEAC,UACAC,QAAA,WACA,uBAAAgE,KAAAU,QAAA,gBAEAzE,QAAA,WACA,0BAAA+D,KAAAU,QAAA,gBAEAxE,SAAA,WACA,wBAAA8D,KAAAU,QAAA,gBAEAvE,QAAA,WACA,wBAAA6D,KAAAU,QAAA,gBAEAtE,SAAA,WACA,MACA,0BACA,IAAA4D,KAAAU,QAAA,QACA,QAGArE,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,UACAC,EAAA,gBACAC,GAAA,cACA/B,EAAA,YACAgC,GAAA,aACAC,EAAA,WACAC,GAAA,WACAC,EAAA,SACAC,GAAA,UACAC,EAAA,SACAC,GAAA,WACAC,EAAA,SACAC,GAAA,WAEAC,uBAAA,WACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KArGuCC,CAAWC,EAAQ,gCCEzD,SAAAzD,GAA2B;kCAI5B;IAAAO,GACA,WACA,aACA,SACA,WACA,KACA,OACA,SACA,WACA,eACA,aACA,aACA,cAEAW,GACA,WACA,OACA,WACA,OACA,aACA,SACA,YAGAlB,EAAAM,aAAA,MACAC,SACAC,YAAAD,EACAW,WACAC,cAAAD,EACAE,YAAA,qCAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,WACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,0BAEA4D,cAAA,QACAS,KAAA,SAAAC,GACA,aAAAA,GAEAP,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,GACA,KAEA,MAGA7D,UACAC,QAAA,cACAC,QAAA,cACAC,SAAA,UACAC,QAAA,cACAC,SAAA,qBACAC,SAAA,KAEAC,cACAC,OAAA,cACAC,KAAA,YACAC,EAAA,iBACAC,GAAA,cACA/B,EAAA,WACAgC,GAAA,YACAC,EAAA,aACAC,GAAA,cACAC,EAAA,WACAC,GAAA,YACAC,EAAA,SACAC,GAAA,UACAC,EAAA,WACAC,GAAA,aAEAkC,SAAA,SAAAC,GACA,OAAAA,EAAAC,QAAA,WAEAE,WAAA,SAAAH,GACA,OAAAA,EAAAC,QAAA,WAEAhC,MACAC,IAAA,EACAC,IAAA,MAxFuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5B;IAAAyK,GACA3G,EAAA,QACAI,EAAA,QACAG,EAAA,QACAqG,GAAA,QACAC,GAAA,QACA5G,EAAA,OACAK,EAAA,OACAwG,GAAA,OACAC,GAAA,OACA7G,EAAA,QACAC,EAAA,QACA6G,IAAA,QACA3G,EAAA,OACAG,EAAA,QACAyG,GAAA,QACAC,GAAA,QACAC,GAAA,QACAC,GAAA,SAGAlL,EAAAM,aAAA,MACAC,OAAA,+EAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,wDAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,2BAEAC,UACAC,QAAA,mBACAC,QAAA,mBACAC,SAAA,2BACAC,QAAA,YACAC,SAAA,0BACAC,SAAA,KAEAC,cACAC,OAAA,SACAC,KAAA,QACAC,EAAA,iBACA9B,EAAA,YACAgC,GAAA,WACAC,EAAA,YACAC,GAAA,WACAC,EAAA,UACAC,GAAA,SACAC,EAAA,SACAC,GAAA,QACAC,EAAA,UACAC,GAAA,UAEAE,QAAA,SAAAC,EAAA+C,GACA,OAAAA,GACA,QACA,QACA,SACA,SACA,OAAA/C,EACA,QACA,OAAAA,EAEA,OAAAA,EAAA,QAEA,IAAA+H,EAAA/H,EAAA,GACAO,EAAAP,EAAA,IAAA+H,EACAC,EAAAhI,GAAA,aACA,OAAAA,GAAAqH,EAAAU,IAAAV,EAAA9G,IAAA8G,EAAAW,MAGA/H,MACAC,IAAA,EACAC,IAAA,KAzFuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5B;IAAAsP,EAAA,gEAAApP,MACA,KAEA,SAAAoK,EAAAlH,EAAAqF,EAAAC,EAAAC,GACA,IAAAiD,EAAAxI,EACA,OAAAsF,GACA,QACA,OAAAC,GAAAF,EACA,mBACA,oBACA,SACA,OAAAmD,GAAAjD,GAAAF,GACA,aACA,cACA,QACA,aAAAE,GAAAF,EAAA,kBACA,SACA,OAAAmD,GAAAjD,GAAAF,EAAA,kBACA,QACA,aAAAE,GAAAF,EAAA,iBACA,SACA,OAAAmD,GAAAjD,GAAAF,EAAA,iBACA,QACA,aAAAE,GAAAF,EAAA,iBACA,SACA,OAAAmD,GAAAjD,GAAAF,EAAA,iBACA,QACA,aAAAE,GAAAF,EAAA,qBACA,SACA,OAAAmD,GAAAjD,GAAAF,EAAA,qBACA,QACA,aAAAE,GAAAF,EAAA,cACA,SACA,OAAAmD,GAAAjD,GAAAF,EAAA,cAEA,SAEA,SAAApF,EAAAsF,GACA,OACAA,EAAA,cACA,IACA2G,EAAAxJ,KAAAC,OACA,aAIA/F,EAAAM,aAAA,MACAC,OAAA,oGAAAL,MACA,KAEAM,YAAA,qDAAAN,MACA,KAEAgB,SAAA,sDAAAhB,MAAA,KACAiB,cAAA,gCAAAjB,MAAA,KACAkB,YAAA,qBAAAlB,MAAA,KACAoB,gBACAC,GAAA,OACAC,IAAA,UACAC,EAAA,cACAC,GAAA,gBACAC,IAAA,qBACAC,KAAA,4BAEA4D,cAAA,SACAS,KAAA,SAAAC,GACA,YAAAA,EAAAqJ,OAAA,GAAAC,eAEA7J,SAAA,SAAAa,EAAAqB,EAAAhC,GACA,OAAAW,EAAA,IACA,IAAAX,EAAA,WAEA,IAAAA,EAAA,WAGAhE,UACAC,QAAA,gBACAC,QAAA,oBACAC,SAAA,WACA,OAAAqB,EAAAoM,KAAA3J,MAAA,IAEA7D,QAAA,oBACAC,SAAA,WACA,OAAAmB,EAAAoM,KAAA3J,MAAA,IAEA3D,SAAA,KAEAC,cACAC,OAAA,WACAC,KAAA,KACAC,EAAA+H,EACA9H,GAAA8H,EACA7J,EAAA6J,EACA7H,GAAA6H,EACA5H,EAAA4H,EACA3H,GAAA2H,EACA1H,EAAA0H,EACAzH,GAAAyH,EACAxH,EAAAwH,EACAvH,GAAAuH,EACAtH,EAAAsH,EACArH,GAAAqH,GAEApH,uBAAA,YACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KAlHuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,wFAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,oDAAAhB,MAAA,KACAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,0BACAC,KAAA,+BACA0E,IAAA,mBACAC,KAAA,wBAEA1E,UACAC,QAAA,YACAC,QAAA,eACAE,QAAA,YACAD,SAAA,eACAE,SAAA,iBACAC,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,eACAC,EAAA,iBACAC,GAAA,cACA/B,EAAA,WACAgC,GAAA,aACAC,EAAA,WACAC,GAAA,YACAC,EAAA,SACAC,GAAA,WACAC,EAAA,WACAC,GAAA,aACAC,EAAA,SACAC,GAAA,SAEAC,uBAAA,mBACAC,QAAA,SAAAC,GACA,IAAAO,EAAAP,EAAA,GACAQ,EACA,MAAAR,EAAA,QACA,KACA,IAAAO,EACA,KACA,IAAAA,EACA,KAEA,KAEA,OAAAP,EAAAQ,GAEAP,MACAC,IAAA,EACAC,IAAA,KAlEuCC,CAAWC,EAAQ,gCCKzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,SACAC,OAAA,wCAAAL,MACA,KAEAM,YAAA,yCAAAN,MACA,KAEAgB,SAAA,8BAAAhB,MAAA,KACAiB,cAAA,uBAAAjB,MAAA,KACAkB,YAAA,gBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,YACAC,IAAA,kBACAC,KAAA,sBACAsI,EAAA,WACA7D,GAAA,YACAC,IAAA,kBACAC,KAAA,uBAEAf,cAAA,oBACAC,aAAA,SAAAC,EAAAC,GAIA,OAHA,KAAAD,IACAA,EAAA,GAEA,OAAAC,GAAA,OAAAA,GAAA,OAAAA,EACAD,EACa,OAAAC,GAAA,OAAAA,EACbD,EAAA,GAGAA,GAAA,GAAAA,IAAA,IAGAC,SAAA,SAAAD,EAAAE,EAAAC,GACA,IAAA0H,EAAA,IAAA7H,EAAAE,EACA,OAAA2H,EAAA,IACA,KACaA,EAAA,IACb,KACaA,EAAA,KACb,KACaA,EAAA,KACb,KACaA,EAAA,KACb,KAEA,MAGA1L,UACAC,QAAA,SACAC,QAAA,SACAC,SAAA,SAAAmI,GACA,OAAAA,EAAA9G,SAAAyC,KAAAzC,OACA,WAEA,YAGApB,QAAA,SACAC,SAAA,SAAAiI,GACA,OAAArE,KAAAzC,SAAA8G,EAAA9G,OACA,WAEA,YAGAlB,SAAA,KAEAe,uBAAA,iBACAC,QAAA,SAAAC,EAAA+C,GACA,OAAAA,GACA,QACA,QACA,UACA,OAAA/C,EAAA,IACA,QACA,OAAAA,EAAA,IACA,QACA,QACA,OAAAA,EAAA,IACA,QACA,OAAAA,IAGAhB,cACAC,OAAA,MACAC,KAAA,MACAC,EAAA,KACAC,GAAA,OACA/B,EAAA,OACAgC,GAAA,QACAC,EAAA,OACAC,GAAA,QACAC,EAAA,MACAC,GAAA,OACAC,EAAA,OACAC,GAAA,QACAC,EAAA,MACAC,GAAA,QAEAI,MAEAC,IAAA,EACAC,IAAA,KAlHuCC,CAAWC,EAAQ,gCCCzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,wFAAAL,MACA,KAEAM,YAAA,mEAAAN,MACA,KAEAwD,kBAAA,EACAxC,SAAA,8DAAAhB,MACA,KAEAiB,cAAA,kCAAAjB,MAAA,KACAkB,YAAA,qBAAAlB,MAAA,KACAoB,gBACAC,GAAA,SACAC,IAAA,YACAC,EAAA,aACAC,GAAA,cACAC,IAAA,sBACAC,KAAA,6BAEAC,UACAC,QAAA,YACAC,QAAA,YACAC,SAAA,WACAC,QAAA,aACAC,SAAA,gBACAC,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,YACAC,EAAA,iBACAC,GAAA,aACA/B,EAAA,YACAgC,GAAA,cACAC,EAAA,SACAC,GAAA,WACAC,EAAA,UACAC,GAAA,YACAC,EAAA,SACAC,GAAA,WACAC,EAAA,cACAC,GAAA,iBAEAC,uBAAA,WACAC,QAAA,MACAqC,cAAA,iCACAC,aAAA,SAAAC,EAAAC,GAIA,OAHA,KAAAD,IACAA,EAAA,GAEA,WAAAC,EACAD,EAAA,EAAAA,IAAA,GACa,SAAAC,EACbD,EACa,cAAAC,EACbD,GAAA,GAAAA,IAAA,GACa,aAAAC,EACbD,EAAA,QADa,GAIbC,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,EACA,SACaA,EAAA,GACb,OACaA,EAAA,GACb,YACaA,EAAA,GACb,WAEA,UAGArC,MACAC,IAAA,EACAC,IAAA,KApFuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,SACAC,OAAA,sFAAAL,MACA,KAEAM,YAAA,sFAAAN,MACA,KAEAgB,SAAA,yDAAAhB,MACA,KAEAiB,cAAA,uBAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,0BACAC,IAAA,iCACAC,KAAA,wCAEA4D,cAAA,qDACAC,aAAA,SAAAC,EAAAC,GAIA,OAHA,KAAAD,IACAA,EAAA,GAGA,eAAAC,GACA,UAAAA,GACA,iBAAAA,EAEAD,EACa,iBAAAC,GAAA,QAAAA,EACbD,EAAA,GAEAA,GAAA,GAAAA,IAAA,IAGAC,SAAA,SAAAD,EAAAE,EAAAC,GACA,IAAA0H,EAAA,IAAA7H,EAAAE,EACA,OAAA2H,EAAA,IACA,aACaA,EAAA,IACb,QACaA,EAAA,KACb,eACaA,EAAA,KACb,MACaA,EAAA,KACb,eAEA,OAGA1L,UACAC,QAAA,mBACAC,QAAA,kBACAC,SAAA,4BACAC,QAAA,eACAC,SAAA,6BACAC,SAAA,KAEAC,cACAC,OAAA,WACAC,KAAA,WACAC,EAAA,eACAC,GAAA,YACA/B,EAAA,YACAgC,GAAA,WACAC,EAAA,YACAC,GAAA,WACAC,EAAA,UACAC,GAAA,SACAC,EAAA,UACAC,GAAA,SACAC,EAAA,UACAC,GAAA,UAGAC,uBAAA,6BACAC,QAAA,SAAAC,EAAA+C,GACA,OAAAA,GACA,QACA,QACA,UACA,OAAA/C,EAAA,QACA,QACA,QACA,OAAAA,EAAA,SACA,QACA,OAAAA,IAGA+B,SAAA,SAAAC,GACA,OAAAA,EAAAC,QAAA,WAEAE,WAAA,SAAAH,GACA,OAAAA,EAAAC,QAAA,WAEAhC,MAEAC,IAAA,EACAC,IAAA,KA5GuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5B;IAAAO,GACA,QACA,UACA,OACA,QACA,MACA,MACA,SACA,OACA,UACA,SACA,QACA,SAEA8O,GAAA,iDAEArP,EAAAM,aAAA,MACAC,SACAC,YAAAD,EACAW,SAAAmO,EACAlO,cAAAkO,EACAjO,YAAAiO,EACA/N,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,2BAEA4D,cAAA,UACAS,KAAA,SAAAC,GACA,cAAAA,GAEAP,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,GACA,MAEA,OAEA7D,UACAC,QAAA,UACAC,QAAA,aACAC,SAAA,yBACAC,QAAA,aACAC,SAAA,4BACAC,SAAA,KAEAC,cACAC,OAAA,SACAC,KAAA,QACAC,EAAA,YACAC,GAAA,WACA/B,EAAA,SACAgC,GAAA,SACAC,EAAA,UACAC,GAAA,UACAC,EAAA,WACAC,GAAA,WACAC,EAAA,WACAC,GAAA,WACAC,EAAA,SACAC,GAAA,UAEAkC,SAAA,SAAAC,GACA,OAAAA,EAAAC,QAAA,WAEAE,WAAA,SAAAH,GACA,OAAAA,EAAAC,QAAA,WAEAhC,MACAC,IAAA,EACAC,IAAA,KA/EuCC,CAAWC,EAAQ,gCCIzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,SACAC,OAAA,oFAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,6CAAAhB,MAAA,KACAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,4BACAC,KAAA,mCAEA4D,cAAA,8BACAC,aAAA,SAAAC,EAAAC,GAIA,OAHA,KAAAD,IACAA,EAAA,GAEA,SAAAC,EACAD,EACa,cAAAC,EACbD,GAAA,GAAAA,IAAA,GACa,WAAAC,GAAA,UAAAA,EACbD,EAAA,QADa,GAIbC,SAAA,SAAAa,EAAAqB,EAAAhC,GACA,OAAAW,EAAA,GACA,OACaA,EAAA,GACb,YACaA,EAAA,GACb,SAEA,SAGA3E,UACAC,QAAA,sBACAC,QAAA,kBACAC,SAAA,kBACAC,QAAA,sBACAC,SAAA,wBACAC,SAAA,KAEAC,cACAC,OAAA,WACAC,KAAA,gBACAC,EAAA,gBACAC,GAAA,UACA/B,EAAA,UACAgC,GAAA,WACAC,EAAA,QACAC,GAAA,SACAC,EAAA,SACAC,GAAA,UACAC,EAAA,UACAC,GAAA,WACAC,EAAA,UACAC,GAAA,YAEAI,MACAC,IAAA,EACAC,IAAA,KAzEuCC,CAAWC,EAAQ,gCCKzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,6FAAAL,MACA,KAEAM,YAAA,oDAAAN,MAAA,KACAgB,SAAA,qDAAAhB,MAAA,KACAiB,cAAA,gCAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,4BACAC,IAAA,kCACAC,KAAA,2CACA2E,KAAA,uCAEAf,cAAA,cACAS,KAAA,SAAAC,GACA,YAAAA,EAAAqJ,OAAA,GAAAC,eAEA7J,SAAA,SAAAa,EAAAqB,EAAAhC,GACA,OAAAW,EAAA,GACAX,EAAA,kBAEAA,EAAA,mBAGAhE,UACAC,QAAA,iBACAC,QAAA,iBACAC,SAAA,gBACAC,QAAA,iBACAC,SAAA,2BACAC,SAAA,KAEAC,cACAC,OAAA,UACAC,KAAA,WACAC,EAAA,kBACAC,GAAA,cACA/B,EAAA,aACAgC,GAAA,aACAC,EAAA,WACAC,GAAA,WACAC,EAAA,WACAC,GAAA,WACAC,EAAA,aACAC,GAAA,aACAC,EAAA,WACAC,GAAA,YAEAC,uBAAA,WACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KA/DuCC,CAAWC,EAAQ,gCCAzD,SAAAzD,GAA2B;kCAI5B;SAAA0P,EAAAtM,EAAAqF,EAAAC,GAMA,OAAAtF,EAAA,IAoBA,SAAAuM,EAAAvM,GACA,WAAAA,EAKA,SAAAuM,GACA,IAAAC,GACAnP,EAAA,IACAkD,EAAA,IACAf,EAAA,KAEA,YAAAiN,IAAAD,EAAAD,EAAAJ,OAAA,IACAI,EAEAC,EAAAD,EAAAJ,OAAA,IAAAI,EAAAG,UAAA,GAbAC,CAAAJ,GAEAA,EAxBAK,EAJAvN,GAAA,WACAM,GAAA,MACAF,GAAA,UAEA6F,GAAAtF,GAsCA,IAAAhD,GACA,QACA,cACA,QACA,QACA,QACA,cACA,QACA,QACA,QACA,QACA,OACA,SAEAC,EAAA,6IAqBA4P,GACA,OACA,OACA,eACA,QACA,OACA,OACA,QAGAjQ,EAAAM,aAAA,MACAC,OAAA,gFAAAL,MACA,KAEAM,YAAA,mDAAAN,MAAA,KACAgB,SAAA,6CAAAhB,MAAA,KACAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,wBAAAlB,MAAA,KACAgQ,cAAAD,EACAE,mBApCA,QACA,QACA,WACA,iBACA,SACA,WACA,YA+BAC,oBA5BA,QACA,QACA,QACA,QACA,QACA,QACA,SAuBAH,mBAEA5P,cACAQ,iBAAAR,EACAS,kBA7CA,wFA8CAC,uBA7CA,2DA8CAX,cACAY,gBAAAZ,EACAa,iBAAAb,EAEAkB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,sBACAC,IAAA,4BACAC,KAAA,mCAEAC,UACAC,QAAA,gBACAC,QAAA,qBACAC,SAAA,eACAC,QAAA,gBACAC,SAAA,qBACAC,SAAA,KAEAC,cACAC,OAAA,YACAC,KAAA,SACAC,EAAA,wBACAC,GAAA,YACA/B,EAAA,cACAgC,GAAAiN,EACAhN,EAAA,SACAC,GAAA,SACAC,EAAA,YACAC,GAAA6M,EACA5M,EAAA,SACAC,GAAA2M,EACA1M,EAAA,WACAC,GApIA,SAAAG,GACA,OAWA,SAAAiN,EAAAjN,GACA,OAAAA,EAAA,EACAiN,EAAAjN,EAAA,IAEAA,EAfAiN,CAAAjN,IACA,OACA,OACA,OACA,OACA,OACA,OAAAA,EAAA,SACA,QACA,OAAAA,EAAA,YA6HAF,uBAAA,kBACAC,QAAA,SAAAC,GACA,IAAAQ,EAAA,IAAAR,EAAA,WACA,OAAAA,EAAAQ,GAEAP,MACAC,IAAA,EACAC,IAAA,GAEAiC,cAAA,YACAS,KAAA,SAAAsG,GACA,eAAAA,GAEA5G,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,oBAnKuClC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,8IAAAL,MACA,KAEAM,YAAA,iEAAAN,MACA,KAEAG,YAAA,yCACAS,kBAAA,yCACAD,iBAAA,yCACAE,uBAAA,yCACAG,SAAA,kDAAAhB,MAAA,KACAiB,cAAA,wBAAAjB,MAAA,KACAkB,YAAA,wBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,wBACAC,KAAA,+BAEAC,UACAC,QAAA,wBACAC,QAAA,eACAC,SAAA,cACAC,QAAA,iBACAC,SAAA,2BACAC,SAAA,KAEAC,cACAC,OAAA,cACAC,KAAA,WACAC,EAAA,mBACAC,GAAA,YACA/B,EAAA,YACAgC,GAAA,YACAC,EAAA,WACAC,GAAA,WACAC,EAAA,QACAC,GAAA,QACAC,EAAA,YACAC,GAAA,YACAC,EAAA,SACAC,GAAA,UAEAC,uBAAA,WACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KAzDuCC,CAAWC,EAAQ,gCCIzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,uFAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,wDAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,OACAC,IAAA,UACAC,EAAA,YACAC,GAAA,cACAC,IAAA,mBACAC,KAAA,0BAEAC,UACAC,QAAA,gBACAC,QAAA,eACAC,SAAA,oBACAC,QAAA,gBACAC,SAAA,WACA,OAAA4D,KAAAC,OACA,OACA,OACA,OACA,kCACA,OACA,OACA,OACA,OACA,oCAGA5D,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,UACAC,EAAA,kBACAC,GAAA,aACA/B,EAAA,cACAgC,GAAA,YACAC,EAAA,WACAC,GAAA,UACAC,EAAA,WACAC,GAAA,UACAC,EAAA,aACAC,GAAA,YACAC,EAAA,cACAC,GAAA,aAEAC,uBAAA,8BACAC,QAAA,SAAAC,GACA,IAAA6L,EAAA7L,EAAA,GACAkN,EAAAlN,EAAA,IACA,WAAAA,EACAA,EAAA,MACa,IAAAkN,EACblN,EAAA,MACakN,EAAA,IAAAA,EAAA,GACblN,EAAA,MACa,IAAA6L,EACb7L,EAAA,MACa,IAAA6L,EACb7L,EAAA,MACa,IAAA6L,GAAA,IAAAA,EACb7L,EAAA,MAEAA,EAAA,OAGAC,MACAC,IAAA,EACAC,IAAA,KAnFuCC,CAAWC,EAAQ,gCCEzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,SACAC,OAAA,wFAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,2DAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,SACAC,IAAA,YACAC,EAAA,aACAC,GAAA,cACAC,IAAA,qBACAC,KAAA,4BAEAC,UACAC,QAAA,gBACAC,QAAA,mBACAC,SAAA,eACAC,QAAA,oBACAC,SAAA,sBACAC,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,SACAC,EAAA,gBACAC,GAAA,aACA/B,EAAA,WACAgC,GAAA,aACAC,EAAA,UACAC,GAAA,WACAC,EAAA,QACAC,GAAA,UACAC,EAAA,UACAC,GAAA,YACAC,EAAA,SACAC,GAAA,YAEAC,uBAAA,uBACAC,QAAA,SAAAC,GACA,IAAAO,EAAAP,EAAA,GACAQ,EACA,MAAAR,EAAA,QACA,KACA,IAAAO,EACA,KACA,IAAAA,EACA,KACA,IAAAA,EACA,KACA,KACA,OAAAP,EAAAQ,GAEAP,MACAC,IAAA,EACAC,IAAA,KAlEuCC,CAAWC,EAAQ,gCCKzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,qFAAAL,MACA,KAEAM,YAAA,6DAAAN,MACA,KAEAwD,kBAAA,EACAxC,SAAA,qDAAAhB,MAAA,KACAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,eACAC,IAAA,2BACAC,KAAA,iCAEAC,UACAC,QAAA,iBACAC,QAAA,oBACAC,SAAA,gBACAC,QAAA,iBACAC,SAAA,0BACAC,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,WACAC,EAAA,gBACAC,GAAA,cACA/B,EAAA,aACAgC,GAAA,cACAC,EAAA,UACAC,GAAA,WACAC,EAAA,SACAC,GAAA,WACAC,EAAA,WACAC,GAAA,aACAC,EAAA,SACAC,GAAA,SAEAC,uBAAA,YACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KAvDuCC,CAAWC,EAAQ,gCCCzD,SAAAzD,GAA2B;kCAI5B;IAAAyK,GACAlG,EAAA,MACAT,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAyG,GAAA,MACAH,GAAA,MACAI,GAAA,MACA0C,GAAA,MACA7C,GAAA,MACAI,GAAA,MACAP,GAAA,MACAC,GAAA,MACAO,GAAA,MACAJ,IAAA,OAGA9K,EAAAM,aAAA,MACAC,OAAA,qFAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,0DAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,2BAEAC,UACAC,QAAA,mBACAC,QAAA,mBACAC,SAAA,kBACAC,QAAA,kBACAC,SAAA,kCACAC,SAAA,KAEAC,cACAC,OAAA,YACAC,KAAA,WACAC,EAAA,iBACAC,GAAA,YACA/B,EAAA,YACAgC,GAAA,WACAC,EAAA,YACAC,GAAA,WACAC,EAAA,UACAC,GAAA,SACAC,EAAA,SACAC,GAAA,QACAC,EAAA,UACAC,GAAA,UAEAC,uBAAA,kBACAC,QAAA,SAAAC,GACA,IAAA+H,EAAA/H,EAAA,GACAO,EAAAP,GAAA,aACA,OAAAA,GAAAqH,EAAArH,IAAAqH,EAAAU,IAAAV,EAAA9G,KAEAN,MACAC,IAAA,EACAC,IAAA,KAhFuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,SACAC,OAAA,yEAAAL,MACA,KAEAM,YAAA,yEAAAN,MACA,KAEAgB,SAAA,sDAAAhB,MAAA,KACAiB,cAAA,wCAAAjB,MAAA,KACAkB,YAAA,gBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,0BAEAC,UACAC,QAAA,wBACAC,QAAA,sBACAC,SAAA,uBACAC,QAAA,sBACAC,SAAA,uBACAC,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,SACAC,EAAA,OACAC,GAAA,WACA/B,EAAA,QACAgC,GAAA,WACAC,EAAA,OACAC,GAAA,WACAC,EAAA,MACAC,GAAA,UACAC,EAAA,MACAC,GAAA,UACAC,EAAA,MACAC,GAAA,YAEAI,MACAC,IAAA,EACAC,IAAA,KApDuCC,CAAWC,EAAQ,gCCKzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,gGAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,2DAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,0BAEAC,UACAC,QAAA,WACA,MACA,WACAgE,KAAAU,QAAA,aAAAV,KAAAU,QAAA,WACA,OAGAzE,QAAA,WACA,MACA,aACA+D,KAAAU,QAAA,aAAAV,KAAAU,QAAA,WACA,OAGAxE,SAAA,WACA,MACA,WACA8D,KAAAU,QAAA,aAAAV,KAAAU,QAAA,WACA,OAGAvE,QAAA,WACA,MACA,WACA6D,KAAAU,QAAA,aAAAV,KAAAU,QAAA,WACA,OAGAtE,SAAA,WACA,OAAA4D,KAAAC,OACA,OACA,MACA,uBACAD,KAAAU,QAAA,EACA,OACA,IAAAV,KAAAU,QACA,IACA,OACA,MAEA,QACA,MACA,uBACAV,KAAAU,QAAA,EACA,OACA,IAAAV,KAAAU,QACA,IACA,OACA,QAIArE,SAAA,KAEAC,cACAC,OAAA,SACAC,KAAA,QACAC,EAAA,iBACAC,GAAA,aACA/B,EAAA,YACAgC,GAAA,YACAC,EAAA,SACAC,GAAA,SACAC,EAAA,YACAC,GAAA,YACAC,EAAA,UACAC,GAAA,UACAC,EAAA,UACAC,GAAA,WAEAC,uBAAA,WACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KApGuCC,CAAWC,EAAQ,gCCCzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,SACAC,OAAA,gGAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,2DAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,0BAEAC,UACAC,QAAA,iBACAC,QAAA,mBACAC,SAAA,iBACAC,QAAA,iBACAC,SAAA,WACA,OAAA4D,KAAAC,OACA,OACA,mCACA,QACA,qCAGA5D,SAAA,KAEAC,cACAC,OAAA,SAAAE,GACA,mBAAA5B,KAAA4B,GAAA,gBAAAA,GAEAD,KAAA,QACAC,EAAA,iBACAC,GAAA,aACA/B,EAAA,YACAgC,GAAA,YACAC,EAAA,SACAC,GAAA,SACAC,EAAA,YACAC,GAAA,YACAC,EAAA,UACAC,GAAA,UACAC,EAAA,UACAC,GAAA,WAEAC,uBAAA,WACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KA9DuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5B;IAAAC,EAAA,6DAAAC,MACA,KAEAC,EAAA,kDAAAD,MACA,KAGAF,EAAAM,aAAA,MACAC,OAAA,iGAAAL,MACA,KAEAM,YAAA,SAAAC,EAAAC,GACA,OAAAD,EAEa,QAAAE,KAAAD,GACbP,EAAAM,EAAAG,SAEAX,EAAAQ,EAAAG,SAJAX,GAOAyD,kBAAA,EACAxC,SAAA,wDAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,0BAEAC,UACAC,QAAA,gBACAC,QAAA,gBACAC,SAAA,eACAC,QAAA,iBACAC,SAAA,wBACAC,SAAA,KAEAC,cACAC,OAAA,SACAC,KAAA,SACAC,EAAA,mBACAC,GAAA,cACA/B,EAAA,YACAgC,GAAA,aACAC,EAAA,WACAC,GAAA,WACAC,EAAA,UACAC,GAAA,WACAC,EAAA,aACAC,GAAA,aACAC,EAAA,WACAC,GAAA,cAEAC,uBAAA,kBACAC,QAAA,SAAAC,GACA,OACAA,GACA,IAAAA,GAAA,IAAAA,MAAA,gBAGAC,MACAC,IAAA,EACAC,IAAA,KA3EuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,SACAC,OAAA,wFAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,2DAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,2BAEAC,UACAC,QAAA,gBACAC,QAAA,mBACAC,SAAA,eACAC,QAAA,oBACAC,SAAA,sBACAC,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,SACAC,EAAA,gBACAC,GAAA,aACA/B,EAAA,WACAgC,GAAA,aACAC,EAAA,UACAC,GAAA,WACAC,EAAA,QACAC,GAAA,UACAC,EAAA,UACAC,GAAA,YACAC,EAAA,SACAC,GAAA,YAEAC,uBAAA,uBACAC,QAAA,SAAAC,GACA,IAAAO,EAAAP,EAAA,GACAQ,EACA,MAAAR,EAAA,QACA,KACA,IAAAO,EACA,KACA,IAAAA,EACA,KACA,IAAAA,EACA,KACA,KACA,OAAAP,EAAAQ,KA9DuCJ,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,sFAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,8DAAAhB,MACA,KAEAiB,cAAA,kCAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,UACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,2BAEAC,UACAC,QAAA,eACAC,QAAA,iBACAC,SAAA,8BACAC,QAAA,YACAC,SAAA,kCACAC,SAAA,KAEAC,cACAC,OAAA,aACAC,KAAA,WACAC,EAAA,aACAC,GAAA,aACA/B,EAAA,cACAgC,GAAA,YACAC,EAAA,aACAC,GAAA,WACAC,EAAA,YACAC,GAAA,UACAC,EAAA,cACAC,GAAA,WACAC,EAAA,cACAC,GAAA,YAEAI,MACAC,IAAA,EACAC,IAAA,KApDuCC,CAAWC,EAAQ,kCCIzD,SAAAzD,GAA2B;kCAI5B;IAAAO,EAAA,oFAAAL,MACA,KAEAM,EAAA,kDAAAN,MAAA,KACA,SAAAkK,EAAAC,GACA,OAAAA,EAAA,GAAAA,EAAA,EAEA,SAAAC,EAAAlH,EAAAqF,EAAAC,EAAAC,GACA,IAAA4B,EAAAnH,EAAA,IACA,OAAAsF,GACA,QACA,OAAAD,GAAAE,EAAA,6BACA,SACA,OAAAF,GAAAE,EACA4B,GAAAH,EAAAhH,GAAA,oBAEAmH,EAAA,YAEA,QACA,OAAA9B,EAAA,SAAAE,EAAA,mBACA,SACA,OAAAF,GAAAE,EACA4B,GAAAH,EAAAhH,GAAA,kBAEAmH,EAAA,WAEA,QACA,OAAA9B,EAAA,SAAAE,EAAA,mBACA,SACA,OAAAF,GAAAE,EACA4B,GAAAH,EAAAhH,GAAA,kBAEAmH,EAAA,WAEA,QACA,OAAA9B,GAAAE,EAAA,aACA,SACA,OAAAF,GAAAE,EACA4B,GAAAH,EAAAhH,GAAA,aAEAmH,EAAA,QAEA,QACA,OAAA9B,GAAAE,EAAA,oBACA,SACA,OAAAF,GAAAE,EACA4B,GAAAH,EAAAhH,GAAA,sBAEAmH,EAAA,WAEA,QACA,OAAA9B,GAAAE,EAAA,cACA,SACA,OAAAF,GAAAE,EACA4B,GAAAH,EAAAhH,GAAA,gBAEAmH,EAAA,SAKAvK,EAAAM,aAAA,MACAC,SACAC,cACAU,SAAA,sDAAAhB,MAAA,KACAiB,cAAA,uBAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,OACAC,IAAA,UACAC,EAAA,aACAC,GAAA,eACAC,IAAA,oBACAC,KAAA,0BAEAC,UACAC,QAAA,cACAC,QAAA,gBACAC,SAAA,WACA,OAAA8D,KAAAC,OACA,OACA,wBACA,OACA,OACA,wBACA,OACA,wBACA,OACA,0BACA,OACA,wBACA,OACA,0BAGA9D,QAAA,eACAC,SAAA,WACA,OAAA4D,KAAAC,OACA,OACA,6BACA,OACA,OACA,6BACA,OACA,6BACA,OACA,OACA,6BACA,OACA,+BAGA5D,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,UACAC,EAAA+H,EACA9H,GAAA8H,EACA7J,EAAA6J,EACA7H,GAAA6H,EACA5H,EAAA4H,EACA3H,GAAA2H,EACA1H,EAAA0H,EACAzH,GAAAyH,EACAxH,EAAAwH,EACAvH,GAAAuH,EACAtH,EAAAsH,EACArH,GAAAqH,GAEApH,uBAAA,YACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KA7IuCC,CAAWC,EAAQ,gCCEzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,0FAAAL,MACA,KAEAM,YAAA,gEAAAN,MAAA,KACAgB,SAAA,uDAAAhB,MAAA,KACAiB,cAAA,sCAAAjB,MAAA,KACAkB,YAAA,2BAAAlB,MAAA,KACAoB,gBACAC,GAAA,SACAC,IAAA,YACAC,EAAA,aACAC,GAAA,cACAC,IAAA,qBACAC,KAAA,4BAEAC,UACAC,QAAA,gBACAC,QAAA,eACAC,SAAA,8BACAC,QAAA,eACAC,SAAA,6BACAC,SAAA,KAEAC,cACAC,OAAA,SACAC,KAAA,WACAC,EAAA,oBACAC,GAAA,WACA/B,EAAA,cACAgC,GAAA,aACAC,EAAA,cACAC,GAAA,aACAC,EAAA,WACAC,GAAA,UACAC,EAAA,WACAC,GAAA,UACAC,EAAA,YACAC,GAAA,YAEAC,uBAAA,gBACAC,QAAA,UACAE,MACAC,IAAA,EACAC,IAAA,KAnDuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5B;SAAAwI,EAAApF,EAAAqF,EAAAC,EAAAC,GACA,IAAA4B,EAAAnH,EAAA,IACA,OAAAsF,GACA,QACA,OAAAD,GAAAE,EACA,eACA,kBACA,SAUA,OARA4B,GADA,IAAAnH,EACAqF,EAAA,oBACiB,IAAArF,EACjBqF,GAAAE,EAAA,qBACiBvF,EAAA,EACjBqF,GAAAE,EAAA,qBAEA,SAGA,QACA,OAAAF,EAAA,0BACA,SAUA,OARA8B,GADA,IAAAnH,EACAqF,EAAA,kBACiB,IAAArF,EACjBqF,GAAAE,EAAA,oBACiBvF,EAAA,EACjBqF,GAAAE,EAAA,oBAEAF,GAAAE,EAAA,mBAGA,QACA,OAAAF,EAAA,oBACA,SAUA,OARA8B,GADA,IAAAnH,EACAqF,EAAA,YACiB,IAAArF,EACjBqF,GAAAE,EAAA,cACiBvF,EAAA,EACjBqF,GAAAE,EAAA,cAEAF,GAAAE,EAAA,aAGA,QACA,OAAAF,GAAAE,EAAA,qBACA,SAQA,OANA4B,GADA,IAAAnH,EACAqF,GAAAE,EAAA,aACiB,IAAAvF,EACjBqF,GAAAE,EAAA,gBAEAF,GAAAE,EAAA,cAGA,QACA,OAAAF,GAAAE,EAAA,0BACA,SAUA,OARA4B,GADA,IAAAnH,EACAqF,GAAAE,EAAA,kBACiB,IAAAvF,EACjBqF,GAAAE,EAAA,oBACiBvF,EAAA,EACjBqF,GAAAE,EAAA,kBAEAF,GAAAE,EAAA,mBAGA,QACA,OAAAF,GAAAE,EAAA,wBACA,SAUA,OARA4B,GADA,IAAAnH,EACAqF,GAAAE,EAAA,eACiB,IAAAvF,EACjBqF,GAAAE,EAAA,gBACiBvF,EAAA,EACjBqF,GAAAE,EAAA,cAEAF,GAAAE,EAAA,cAMA3I,EAAAM,aAAA,MACAC,OAAA,wFAAAL,MACA,KAEAM,YAAA,8DAAAN,MACA,KAEAwD,kBAAA,EACAxC,SAAA,sDAAAhB,MAAA,KACAiB,cAAA,qCAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,OACAC,IAAA,UACAC,EAAA,eACAC,GAAA,eACAC,IAAA,oBACAC,KAAA,2BAEAC,UACAC,QAAA,gBACAC,QAAA,gBAEAC,SAAA,WACA,OAAA8D,KAAAC,OACA,OACA,8BACA,OACA,4BACA,OACA,6BACA,OACA,OACA,OACA,OACA,2BAGA9D,QAAA,iBACAC,SAAA,WACA,OAAA4D,KAAAC,OACA,OACA,qCACA,OACA,mCACA,OACA,oCACA,OACA,OACA,OACA,OACA,kCAGA5D,SAAA,KAEAC,cACAC,OAAA,SACAC,KAAA,UACAC,EAAAiG,EACAhG,GAAAgG,EACA/H,EAAA+H,EACA/F,GAAA+F,EACA9F,EAAA8F,EACA7F,GAAA6F,EACA5F,EAAA4F,EACA3F,GAAA2F,EACA1F,EAAA0F,EACAzF,GAAAyF,EACAxF,EAAAwF,EACAvF,GAAAuF,GAEAtF,uBAAA,YACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KAxKuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5B;IAAAuQ,EAAA,wEAAArQ,MACA,KAEAsQ,GACA,QACA,QACA,SACA,SACA,SACA,SACA,SACAD,EAAA,GACAA,EAAA,GACAA,EAAA,IAEA,SAAAjG,EAAAlH,EAAAqF,EAAAC,EAAAC,GACA,IAAA4B,EAAA,GACA,OAAA7B,GACA,QACA,OAAAC,EAAA,sCACA,SACA4B,EAAA5B,EAAA,sBACA,MACA,QACA,OAAAA,EAAA,sBACA,SACA4B,EAAA5B,EAAA,uBACA,MACA,QACA,OAAAA,EAAA,iBACA,SACA4B,EAAA5B,EAAA,kBACA,MACA,QACA,OAAAA,EAAA,iBACA,SACA4B,EAAA5B,EAAA,kBACA,MACA,QACA,OAAAA,EAAA,uBACA,SACA4B,EAAA5B,EAAA,wBACA,MACA,QACA,OAAAA,EAAA,iBACA,SACA4B,EAAA5B,EAAA,kBAIA,OADA4B,EAGA,SAAAnH,EAAAuF,GACA,OAAAvF,EAAA,GACAuF,EACA6H,EAAApN,GACAmN,EAAAnN,GACAA,EARAqN,CAAArN,EAAAuF,GAAA,IAAA4B,EAWAvK,EAAAM,aAAA,MACAC,OAAA,2GAAAL,MACA,KAEAM,YAAA,uEAAAN,MACA,KAEAgB,SAAA,qEAAAhB,MACA,KAEAiB,cAAA,uBAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,mBACAC,IAAA,gCACAC,KAAA,sCACAsI,EAAA,WACA7D,GAAA,cACAC,IAAA,2BACAC,KAAA,iCAEA1E,UACAC,QAAA,oBACAC,QAAA,sBACAC,SAAA,gBACAC,QAAA,mBACAC,SAAA,4BACAC,SAAA,KAEAC,cACAC,OAAA,YACAC,KAAA,YACAC,EAAA+H,EACA9H,GAAA8H,EACA7J,EAAA6J,EACA7H,GAAA6H,EACA5H,EAAA4H,EACA3H,GAAA2H,EACA1H,EAAA0H,EACAzH,GAAAyH,EACAxH,EAAAwH,EACAvH,GAAAuH,EACAtH,EAAAsH,EACArH,GAAAqH,GAEApH,uBAAA,YACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KAvHuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5B;IAAA6D,GACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,KAEAC,GACAiI,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KAGAlN,EAAAM,aAAA,SACAC,OAAA,6EAAAL,MACA,KAEAM,YAAA,6EAAAN,MACA,KAEAgB,SAAA,sDAAAhB,MAAA,KACAiB,cAAA,wCAAAjB,MAAA,KACAkB,YAAA,gBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,0BAEA4D,cAAA,MACAS,KAAA,SAAAC,GACA,YAAAA,GAEAP,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,GACA,IAEA,KAGA7D,UACAC,QAAA,wBACAC,QAAA,sBACAC,SAAA,uBACAC,QAAA,sBACAC,SAAA,uBACAC,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,SACAC,EAAA,OACAC,GAAA,WACA/B,EAAA,QACAgC,GAAA,WACAC,EAAA,OACAC,GAAA,WACAC,EAAA,MACAC,GAAA,UACAC,EAAA,MACAC,GAAA,UACAC,EAAA,MACAC,GAAA,YAEAkC,SAAA,SAAAC,GACA,OAAAA,EACAC,QAAA,yBAAAC,GACA,OAAAd,EAAAc,KAEAD,QAAA,WAEAE,WAAA,SAAAH,GACA,OAAAA,EACAC,QAAA,eAAAC,GACA,OAAAzB,EAAAyB,KAEAD,QAAA,WAEAhC,MACAC,IAAA,EACAC,IAAA,KAtGuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,oFAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,yDAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,OACAC,IAAA,UACAC,EAAA,YACAC,GAAA,cACAC,IAAA,mBACAC,KAAA,0BAEAC,UACAC,QAAA,cACAC,QAAA,cACAC,SAAA,cACAC,QAAA,eACAC,SAAA,WACA,OAAA4D,KAAAC,OACA,OACA,OACA,OACA,+BACA,OACA,OACA,OACA,OACA,gCAGA5D,SAAA,KAEAC,cACAC,OAAA,UACAC,KAAA,WACAC,EAAA,kBACAC,GAAA,aACA/B,EAAA,SACAgC,GAAA,YACAC,EAAA,MACAC,GAAA,UACAC,EAAA,MACAC,GAAA,UACAC,EAAA,QACAC,GAAA,YACAC,EAAA,SACAC,GAAA,aAEAC,uBAAA,8BACAC,QAAA,SAAAC,GACA,IAAA6L,EAAA7L,EAAA,GACAkN,EAAAlN,EAAA,IACA,WAAAA,EACAA,EAAA,MACa,IAAAkN,EACblN,EAAA,MACakN,EAAA,IAAAA,EAAA,GACblN,EAAA,MACa,IAAA6L,EACb7L,EAAA,MACa,IAAA6L,EACb7L,EAAA,MACa,IAAA6L,GAAA,IAAAA,EACb7L,EAAA,MAEAA,EAAA,OAGAC,MACAC,IAAA,EACAC,IAAA,KAnFuCC,CAAWC,EAAQ,gCCKzD,SAAAzD,GAA2B;kCAI5B;IAAA6D,GACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,KAEAC,GACAkM,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KAGAnR,EAAAM,aAAA,MACAC,OAAA,2FAAAL,MACA,KAEAM,YAAA,mDAAAN,MAAA,KACAgB,SAAA,wDAAAhB,MACA,KAEAiB,cAAA,2BAAAjB,MAAA,KACAkB,YAAA,2BAAAlB,MAAA,KAEAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,0BAEAC,UACAC,QAAA,kBACAC,QAAA,sBACAC,SAAA,gBACAC,QAAA,mBACAC,SAAA,6BACAC,SAAA,KAEAC,cACAC,OAAA,gBACAC,KAAA,kBACAC,EAAA,kBACAC,GAAA,aACA/B,EAAA,WACAgC,GAAA,WACAC,EAAA,UACAC,GAAA,UACAC,EAAA,SACAC,GAAA,SACAC,EAAA,OACAC,GAAA,OACAC,EAAA,UACAC,GAAA,WAEAkC,SAAA,SAAAC,GACA,OAAAA,EAAAC,QAAA,yBAAAC,GACA,OAAAd,EAAAc,MAGAC,WAAA,SAAAH,GACA,OAAAA,EAAAC,QAAA,eAAAC,GACA,OAAAzB,EAAAyB,MAGAjC,MACAC,IAAA,EACAC,IAAA,KAvFuCC,CAAWC,EAAQ,gCCCzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,yFAAAL,MACA,KAEAM,YAAA,8DAAAN,MACA,KAEAwD,kBAAA,EACAxC,SAAA,mDAAAhB,MAAA,KACAiB,cAAA,qCAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,OACAC,IAAA,UACAC,EAAA,aACAC,GAAA,wBACAC,IAAA,6BACAC,KAAA,oCAEAC,UACAC,QAAA,WACA,oBAAAgE,KAAAU,QAAA,kBAEAzE,QAAA,WACA,oBAAA+D,KAAAU,QAAA,kBAEAxE,SAAA,WACA,oBAAA8D,KAAAU,QAAA,kBAEAvE,QAAA,WACA,oBAAA6D,KAAAU,QAAA,iBAEAtE,SAAA,WACA,MACA,yBAAA4D,KAAAU,QAAA,kBAGArE,SAAA,KAEAC,cACAC,OAAA,SAAA8J,GACA,WAAAA,EAAAiD,QAAA,MACA,IAAAjD,EAEA,MAAAA,GAEA7J,KAAA,SACAC,EAAA,eACAC,GAAA,cACA/B,EAAA,YACAgC,GAAA,aACAC,EAAA,YACAC,GAAA,WACAC,EAAA,SACAC,GAAA,UACAC,EAAA,SACAC,GAAA,WACAC,EAAA,SACAC,GAAA,WAEAC,uBAAA,WACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KAxEuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5B;IAAAwK,EAAA,8DAAAtK,MACA,KAEAM,EAAA,kDAAAN,MAAA,KACAE,GACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEAC,EAAA,mLAEAL,EAAAM,aAAA,MACAC,OAAA,2FAAAL,MACA,KAEAM,YAAA,SAAAC,EAAAC,GACA,OAAAD,EAEa,QAAAE,KAAAD,GACbF,EAAAC,EAAAG,SAEA4J,EAAA/J,EAAAG,SAJA4J,GAOAnK,cACAQ,iBAAAR,EACAS,kBAAA,+FACAC,uBAAA,0FACAX,cACAY,gBAAAZ,EACAa,iBAAAb,EACAc,SAAA,uDAAAhB,MAAA,KACAiB,cAAA,qCAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,OACAC,IAAA,UACAC,EAAA,aACAC,GAAA,wBACAC,IAAA,6BACAC,KAAA,oCAEAC,UACAC,QAAA,WACA,uBAAAgE,KAAAU,QAAA,gBAEAzE,QAAA,WACA,0BAAA+D,KAAAU,QAAA,gBAEAxE,SAAA,WACA,wBAAA8D,KAAAU,QAAA,gBAEAvE,QAAA,WACA,wBAAA6D,KAAAU,QAAA,gBAEAtE,SAAA,WACA,MACA,0BACA,IAAA4D,KAAAU,QAAA,QACA,QAGArE,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,UACAC,EAAA,gBACAC,GAAA,cACA/B,EAAA,YACAgC,GAAA,aACAC,EAAA,WACAC,GAAA,WACAC,EAAA,SACAC,GAAA,UACAC,EAAA,SACAC,GAAA,WACAC,EAAA,SACAC,GAAA,WAEAC,uBAAA,WACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,GAEA6N,YAAA,mBAvGuC5N,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAW5BA;EAAAM,aAAA,MACA+Q,mBAAA,qHAAAnR,MACA,KAEAoR,iBAAA,qHAAApR,MACA,KAEAK,OAAA,SAAAgR,EAAA7Q,GACA,OAAA6Q,EAGA,iBAAA7Q,GACA,IAAAC,KAAAD,EAAAoP,UAAA,EAAApP,EAAA0O,QAAA,UAGAtJ,KAAA0L,kBAAAD,EAAA3Q,SAEAkF,KAAA2L,oBAAAF,EAAA3Q,SARAkF,KAAA2L,qBAWAjR,YAAA,oDAAAN,MAAA,KACAgB,SAAA,yDAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAyF,SAAA,SAAAa,EAAAqB,EAAAhC,GACA,OAAAW,EAAA,GACAX,EAAA,UAEAA,EAAA,WAGAI,KAAA,SAAAC,GACA,aAAAA,EAAA,IAAAsJ,cAAA,IAEAhK,cAAA,gBACAlE,gBACAC,GAAA,SACAC,IAAA,YACAC,EAAA,aACAC,GAAA,cACAC,IAAA,qBACAC,KAAA,4BAEA8P,YACA5P,QAAA,iBACAC,QAAA,gBACAC,SAAA,eACAC,QAAA,eACAC,SAAA,WACA,OAAA4D,KAAAC,OACA,OACA,sCACA,QACA,yCAGA5D,SAAA,KAEAN,SAAA,SAAA6G,EAAAiJ,GACA,IAAA/N,EAAAkC,KAAA8L,YAAAlJ,GACAlC,EAAAmL,KAAAnL,QAIA,OAzEA,SAAAN,GACA,MACA,oBAAA2L,UAAA3L,aAAA2L,UACA,sBAAAC,OAAAC,UAAAC,SAAAvC,KAAAvJ,GAmEA+L,CAAArO,KACAA,IAAAsO,MAAAP,IAEA/N,EAAAyB,QAAA,KAAqCmB,EAAA,qBAErCpE,cACAC,OAAA,QACAC,KAAA,UACAC,EAAA,oBACAC,GAAA,kBACA/B,EAAA,YACAgC,GAAA,WACAC,EAAA,UACAC,GAAA,UACAC,EAAA,WACAC,GAAA,WACAC,EAAA,aACAC,GAAA,WACAC,EAAA,cACAC,GAAA,aAEAC,uBAAA,WACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KAtGuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5B;IAAAmS,EAAA,mGAAAjS,MACA,KAEAkS,EAAA,qGAAAlS,MACA,KAEA,SAAAkK,EAAAC,GACA,OAAAA,EAAA,MAAAA,EAAA,SAAAA,EAAA,UAEA,SAAAC,EAAAlH,EAAAqF,EAAAC,GACA,IAAA6B,EAAAnH,EAAA,IACA,OAAAsF,GACA,SACA,OAAA6B,GAAAH,EAAAhH,GAAA,oBACA,QACA,OAAAqF,EAAA,kBACA,SACA,OAAA8B,GAAAH,EAAAhH,GAAA,kBACA,QACA,OAAAqF,EAAA,oBACA,SACA,OAAA8B,GAAAH,EAAAhH,GAAA,oBACA,SACA,OAAAmH,GAAAH,EAAAhH,GAAA,uBACA,SACA,OAAAmH,GAAAH,EAAAhH,GAAA,eAIApD,EAAAM,aAAA,MACAC,OAAA,SAAAgR,EAAA7Q,GACA,OAAA6Q,EAEa,KAAA7Q,EAKb,IACA0R,EAAAb,EAAA3Q,SACA,IACAuR,EAAAZ,EAAA3Q,SACA,IAEa,SAAAD,KAAAD,GACb0R,EAAAb,EAAA3Q,SAEAuR,EAAAZ,EAAA3Q,SAfAuR,GAkBA3R,YAAA,kDAAAN,MAAA,KACAgB,SAAA,6DAAAhB,MACA,KAEAiB,cAAA,2BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,2BAEAC,UACAC,QAAA,cACAC,QAAA,eACAC,SAAA,WACA,OAAA8D,KAAAC,OACA,OACA,2BAEA,OACA,yBAEA,OACA,uBAEA,OACA,wBAEA,QACA,0BAGA9D,QAAA,iBACAC,SAAA,WACA,OAAA4D,KAAAC,OACA,OACA,kCACA,OACA,8BACA,OACA,+BACA,QACA,iCAGA5D,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,UACAC,EAAA,eACAC,GAAA8H,EACA7J,EAAA6J,EACA7H,GAAA6H,EACA5H,EAAA4H,EACA3H,GAAA2H,EACA1H,EAAA,UACAC,GAAA,SACAC,EAAA,UACAC,GAAAuH,EACAtH,EAAA,MACAC,GAAAqH,GAEApH,uBAAA,YACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KA/HuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5B;IAAA6D,GACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,KAEAC,GACA6N,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KAGA9S,EAAAM,aAAA,MACAC,OAAA,wEAAAL,MACA,KAEAM,YAAA,wEAAAN,MACA,KAEAgB,SAAA,qDAAAhB,MACA,KAEAiB,cAAA,qDAAAjB,MACA,KAEAkB,YAAA,gBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,2BAEA4D,cAAA,wBACAS,KAAA,SAAAC,GACA,mBAAAvF,KAAAuF,IAEAP,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,GACA,aAEA,cAGA7D,UACAC,QAAA,kBACAC,QAAA,iBACAC,SAAA,iBACAC,QAAA,kBACAC,SAAA,uBACAC,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,SACAC,EAAA,YACAC,GAAA,WACA/B,EAAA,WACAgC,GAAA,WACAC,EAAA,UACAC,GAAA,UACAC,EAAA,SACAC,GAAA,SACAC,EAAA,SACAC,GAAA,SACAC,EAAA,SACAC,GAAA,UAEAkC,SAAA,SAAAC,GACA,OAAAA,EACAC,QAAA,kBAAAC,GACA,OAAAd,EAAAc,KAEAD,QAAA,WAEAE,WAAA,SAAAH,GACA,OAAAA,EACAC,QAAA,eAAAC,GACA,OAAAzB,EAAAyB,KAEAD,QAAA,WAEAnC,uBAAA,WACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,MA5GuCC,CAAWC,EAAQ,gCCKzD,SAAAzD,GAA2B;kCAI5B;IAAA6D,GACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,KAEAC,GACAiI,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KAEApB,EAAA,SAAAzB,GACA,WAAAA,EACA,EACA,IAAAA,EACA,EACA,IAAAA,EACA,EACAA,EAAA,QAAAA,EAAA,QACA,EACAA,EAAA,QACA,EACA,GAEA0B,GACAxJ,GACA,eACA,eACA,qBACA,UACA,WACA,YAEA9B,GACA,eACA,eACA,qBACA,WACA,WACA,YAEAiC,GACA,cACA,cACA,mBACA,WACA,UACA,WAEAE,GACA,aACA,YACA,iBACA,UACA,WACA,UAEAE,GACA,aACA,YACA,iBACA,UACA,UACA,UAEAE,GACA,aACA,YACA,iBACA,WACA,WACA,WAGAgJ,EAAA,SAAAC,GACA,gBAAA7I,EAAAqF,EAAArD,EAAAuD,GACA,IAAAuD,EAAAJ,EAAA1I,GACA+I,EAAAJ,EAAAE,GAAAH,EAAA1I,IAIA,OAHA,IAAA8I,IACAC,IAAA1D,EAAA,MAEA0D,EAAA9G,QAAA,MAAAjC,KAGA7C,GACA,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGAP,EAAAM,aAAA,MACAC,SACAC,YAAAD,EACAW,SAAA,sDAAAhB,MAAA,KACAiB,cAAA,wCAAAjB,MAAA,KACAkB,YAAA,gBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,0BAEA4D,cAAA,MACAS,KAAA,SAAAC,GACA,YAAAA,GAEAP,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,GACA,IAEA,KAGA7D,UACAC,QAAA,wBACAC,QAAA,uBACAC,SAAA,uBACAC,QAAA,sBACAC,SAAA,uBACAC,SAAA,KAEAC,cACAC,OAAA,SACAC,KAAA,SACAC,EAAAyJ,EAAA,KACAxJ,GAAAwJ,EAAA,KACAvL,EAAAuL,EAAA,KACAvJ,GAAAuJ,EAAA,KACAtJ,EAAAsJ,EAAA,KACArJ,GAAAqJ,EAAA,KACApJ,EAAAoJ,EAAA,KACAnJ,GAAAmJ,EAAA,KACAlJ,EAAAkJ,EAAA,KACAjJ,GAAAiJ,EAAA,KACAhJ,EAAAgJ,EAAA,KACA/I,GAAA+I,EAAA,MAEA7G,SAAA,SAAAC,GACA,OAAAA,EACAC,QAAA,yBAAAC,GACA,OAAAd,EAAAc,KAEAD,QAAA,WAEAE,WAAA,SAAAH,GACA,OAAAA,EACAC,QAAA,eAAAC,GACA,OAAAzB,EAAAyB,KAEAD,QAAA,WAEAhC,MACAC,IAAA,EACAC,IAAA,MAzLuCC,CAAWC,EAAQ,gCCCzD,SAAAzD,GAA2B;kCAI5B;IAAA6D,GACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,IACAC,EAAA,KAEAC,GACAuO,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KAGAxT,EAAAM,aAAA,MACAC,OAAA,0FAAAL,MACA,KAEAM,YAAA,mEAAAN,MACA,KAEAgB,SAAA,4DAAAhB,MACA,KAEAiB,cAAA,uCAAAjB,MAAA,KACAkB,YAAA,kCAAAlB,MAAA,KACAoB,gBACAC,GAAA,aACAC,IAAA,gBACAC,EAAA,aACAC,GAAA,cACAC,IAAA,0BACAC,KAAA,iCAEAC,UACAC,QAAA,UACAC,QAAA,gBACAC,SAAA,WACAC,QAAA,aACAC,SAAA,gBACAC,SAAA,KAEAC,cACAC,OAAA,SACAC,KAAA,SACAC,EAAA,eACAC,GAAA,aACA/B,EAAA,WACAgC,GAAA,WACAC,EAAA,WACAC,GAAA,WACAC,EAAA,SACAC,GAAA,SACAC,EAAA,SACAC,GAAA,SACAC,EAAA,SACAC,GAAA,UAEAkC,SAAA,SAAAC,GACA,OAAAA,EAAAC,QAAA,yBAAAC,GACA,OAAAd,EAAAc,MAGAC,WAAA,SAAAH,GACA,OAAAA,EAAAC,QAAA,eAAAC,GACA,OAAAzB,EAAAyB,MAGAE,cAAA,2BACAC,aAAA,SAAAC,EAAAC,GAIA,OAHA,KAAAD,IACAA,EAAA,GAGA,QAAAC,GAAAD,GAAA,GACA,UAAAC,GAAAD,EAAA,GACA,UAAAC,EAEAD,EAAA,GAEAA,GAGAC,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,EACA,MACaA,EAAA,GACb,OACaA,EAAA,GACb,QACaA,EAAA,GACb,QAEA,OAGArC,MACAC,IAAA,EACAC,IAAA,KApHuCC,CAAWC,EAAQ,gCCIzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,SACAC,OAAA,wCAAAL,MACA,KAEAM,YAAA,yCAAAN,MACA,KAEAgB,SAAA,8BAAAhB,MAAA,KACAiB,cAAA,uBAAAjB,MAAA,KACAkB,YAAA,gBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,YACAC,IAAA,kBACAC,KAAA,sBACAsI,EAAA,WACA7D,GAAA,YACAC,IAAA,kBACAC,KAAA,uBAEAf,cAAA,oBACAC,aAAA,SAAAC,EAAAC,GAIA,OAHA,KAAAD,IACAA,EAAA,GAEA,OAAAC,GAAA,OAAAA,GAAA,OAAAA,EACAD,EACa,OAAAC,EACbD,GAAA,GAAAA,IAAA,GACa,OAAAC,GAAA,OAAAA,EACbD,EAAA,QADa,GAIbC,SAAA,SAAAD,EAAAE,EAAAC,GACA,IAAA0H,EAAA,IAAA7H,EAAAE,EACA,OAAA2H,EAAA,IACA,KACaA,EAAA,IACb,KACaA,EAAA,KACb,KACaA,EAAA,KACb,KACaA,EAAA,KACb,KAEA,MAGA1L,UACAC,QAAA,UACAC,QAAA,UACAC,SAAA,aACAC,QAAA,UACAC,SAAA,aACAC,SAAA,KAEAe,uBAAA,iBACAC,QAAA,SAAAC,EAAA+C,GACA,OAAAA,GACA,QACA,QACA,UACA,OAAA/C,EAAA,IACA,QACA,OAAAA,EAAA,IACA,QACA,QACA,OAAAA,EAAA,IACA,QACA,OAAAA,IAGAhB,cACAC,OAAA,MACAC,KAAA,MACAC,EAAA,KACAC,GAAA,OACA/B,EAAA,OACAgC,GAAA,QACAC,EAAA,OACAC,GAAA,QACAC,EAAA,MACAC,GAAA,OACAC,EAAA,OACAC,GAAA,QACAC,EAAA,MACAC,GAAA,UAhGuCO,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,yFAAAL,MACA,KAEAM,YAAA,qDAAAN,MACA,KAEAgB,SAAA,+EAAAhB,MACA,KAEAiB,cAAA,+BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EAEAC,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,2BAEAC,UACAC,QAAA,iBACAC,QAAA,gBACAC,SAAA,eACAC,QAAA,eACAC,SAAA,wBACAC,SAAA,KAEAC,cACAC,OAAA,UACAC,KAAA,WACAC,EAAA,mBACAC,GAAA,YACA/B,EAAA,QACAgC,GAAA,WACAC,EAAA,MACAC,GAAA,SACAC,EAAA,UACAC,GAAA,aACAC,EAAA,MACAC,GAAA,SACAC,EAAA,WACAC,GAAA,cAEAC,uBAAA,mCAEAC,QAAA,SAAAC,GACA,IAAAO,EAAAP,EACAQ,EAAA,GAiCA,OATAD,EAAA,GAEAC,EADA,KAAAD,GAAA,KAAAA,GAAA,KAAAA,GAAA,KAAAA,GAAA,MAAAA,EACA,MAEA,MAEaA,EAAA,IACbC,GA7BA,GACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,OASAD,IAEAP,EAAAQ,GAEAP,MACAC,IAAA,EACAC,IAAA,KA9FuCC,CAAWC,EAAQ,gCCIzD,SAAAzD,GAA2B;kCAY5B;SAAA0L,EAAAtI,EAAAqF,EAAAC,GACA,IAAAhI,GACA8B,GAAAiG,EAAA,kDACAhG,GAAAgG,EAAA,4CACA9F,GAAA,iBACAE,GAAA,gBACAE,GAAA,uBACAE,GAAA,gBAEA,YAAAyF,EACAD,EAAA,kBAEArF,EAAA,IApBA,SAAAuI,EAAAC,GACA,IAAAC,EAAAF,EAAAzL,MAAA,KACA,OAAA0L,EAAA,OAAAA,EAAA,QACAC,EAAA,GACAD,EAAA,OAAAA,EAAA,QAAAA,EAAA,QAAAA,EAAA,SACAC,EAAA,GACAA,EAAA,GAcAzB,CAAA1J,EAAAgI,IAAAtF,GAGA,IAAAhD,GACA,QACA,QACA,QACA,QACA,WACA,QACA,QACA,QACA,QACA,QACA,QACA,SAMAJ,EAAAM,aAAA,MACAC,QACAG,OAAA,oFAAAR,MACA,KAEA8F,WAAA,kFAAA9F,MACA,MAGAM,aAEAE,OAAA,gEAAAR,MACA,KAEA8F,WAAA,gEAAA9F,MACA,MAGAgB,UACA8E,WAAA,gEAAA9F,MACA,KAEAQ,OAAA,gEAAAR,MACA,KAEAkG,SAAA,iDAEAjF,cAAA,uBAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAE,cACAY,gBAAAZ,EACAa,iBAAAb,EAGAC,YAAA,2MAGAQ,iBAAA,2MAGAC,kBAAA,wHAGAC,uBAAA,6FACAO,gBACAC,GAAA,OACAC,IAAA,UACAC,EAAA,aACAC,GAAA,iBACAC,IAAA,uBACAC,KAAA,8BAEAC,UACAC,QAAA,kBACAC,QAAA,iBACAE,QAAA,gBACAD,SAAA,SAAAmI,GACA,GAAAA,EAAA9G,SAAAyC,KAAAzC,OAcA,WAAAyC,KAAAC,MACA,oBAEA,mBAhBA,OAAAD,KAAAC,OACA,OACA,mCACA,OACA,OACA,OACA,mCACA,OACA,OACA,OACA,qCAUA7D,SAAA,SAAAiI,GACA,GAAAA,EAAA9G,SAAAyC,KAAAzC,OAcA,WAAAyC,KAAAC,MACA,oBAEA,mBAhBA,OAAAD,KAAAC,OACA,OACA,iCACA,OACA,OACA,OACA,iCACA,OACA,OACA,OACA,mCAUA5D,SAAA,KAEAC,cACAC,OAAA,WACAC,KAAA,WACAC,EAAA,mBACAC,GAAAkJ,EACAjL,EAAAiL,EACAjJ,GAAAiJ,EACAhJ,EAAA,MACAC,GAAA+I,EACA9I,EAAA,OACAC,GAAA6I,EACA5I,EAAA,QACAC,GAAA2I,EACA1I,EAAA,MACAC,GAAAyI,GAEAlG,cAAA,wBACAS,KAAA,SAAAC,GACA,uBAAAvF,KAAAuF,IAEAP,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,EACA,OACaA,EAAA,GACb,OACaA,EAAA,GACb,MAEA,UAGAxC,uBAAA,mBACAC,QAAA,SAAAC,EAAA+C,GACA,OAAAA,GACA,QACA,QACA,UACA,OAAA/C,EAAA,KACA,QACA,OAAAA,EAAA,MACA,QACA,QACA,OAAAA,EAAA,KACA,QACA,OAAAA,IAGAC,MACAC,IAAA,EACAC,IAAA,KAvMuCC,CAAWC,EAAQ,gCCCzD,SAAAzD,GAA2B;kCAI5B;SAAAsK,EAAAlH,EAAAqF,EAAAC,EAAAC,GACA,OAAAD,GACA,QACA,OAAAD,EAAA,kCACA,SACA,OAAArF,GAAAqF,EAAA,uBACA,QACA,SACA,OAAArF,GAAAqF,EAAA,qBACA,QACA,SACA,OAAArF,GAAAqF,EAAA,kBACA,QACA,SACA,OAAArF,GAAAqF,EAAA,mBACA,QACA,SACA,OAAArF,GAAAqF,EAAA,iBACA,QACA,SACA,OAAArF,GAAAqF,EAAA,kBACA,QACA,OAAArF,GAIApD,EAAAM,aAAA,MACAC,OAAA,+LAAAL,MACA,KAEAM,YAAA,6EAAAN,MACA,KAEAwD,kBAAA,EACAxC,SAAA,6CAAAhB,MAAA,KACAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,oBACAC,IAAA,0BACAC,KAAA,iCAEA4D,cAAA,SACAS,KAAA,SAAAC,GACA,aAAAA,GAEAP,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,GACA,KAEA,MAGA7D,UACAC,QAAA,eACAC,QAAA,eACAC,SAAA,iBACAC,QAAA,eACAC,SAAA,qBACAC,SAAA,KAEAC,cACAC,OAAA,WACAC,KAAA,UACAC,EAAA+H,EACA9H,GAAA8H,EACA7J,EAAA6J,EACA7H,GAAA6H,EACA5H,EAAA4H,EACA3H,GAAA2H,EACA1H,EAAA0H,EACAzH,GAAAyH,EACAxH,EAAAwH,EACAvH,GAAAuH,EACAtH,EAAAsH,EACArH,GAAAqH,GAEApH,uBAAA,eACAC,QAAA,SAAAC,EAAA+C,GACA,OAAAA,GACA,QACA,QACA,UACA,OAAA/C,EAAA,QACA,QACA,OAAAA,MAhGuCI,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5B;IAAAyK,GACAlG,EAAA,MACAT,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAC,EAAA,MACAyG,GAAA,MACAH,GAAA,MACAI,GAAA,MACA0C,GAAA,MACA7C,GAAA,MACAI,GAAA,MACAP,GAAA,MACAC,GAAA,MACAO,GAAA,MACAJ,IAAA,OAGA9K,EAAAM,aAAA,MACAC,OAAA,kFAAAL,MACA,KAEAM,YAAA,qDAAAN,MACA,KAEAgB,SAAA,2DAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,2BAEAC,UACAC,QAAA,kBACAC,QAAA,kBACAC,SAAA,iBACAC,QAAA,kBACAC,SAAA,wCACAC,SAAA,KAEAC,cACAC,OAAA,YACAC,KAAA,WACAC,EAAA,iBACAC,GAAA,YACA/B,EAAA,YACAgC,GAAA,WACAC,EAAA,WACAC,GAAA,UACAC,EAAA,UACAC,GAAA,SACAC,EAAA,SACAC,GAAA,QACAC,EAAA,UACAC,GAAA,UAEAC,uBAAA,wBACAC,QAAA,SAAAC,GACA,IAAA+H,EAAA/H,EAAA,GACAO,EAAAP,GAAA,aACA,OAAAA,GAAAqH,EAAArH,IAAAqH,EAAAU,IAAAV,EAAA9G,KAEAN,MACAC,IAAA,EACAC,IAAA,KAlFuCC,CAAWC,EAAQ,gCCKzD,SAAAzD,GAA2B;kCAI5B;SAAA0L,EAAAtI,EAAAqF,EAAAC,GACA,IAQA+K,EAAA,IAIA,OAHArQ,EAAA,SAAAA,GAAA,KAAAA,EAAA,UACAqQ,EAAA,QAEArQ,EAAAqQ,GAXAjR,GAAA,UACAC,GAAA,SACAE,GAAA,MACAE,GAAA,OACAE,GAAA,OACAE,GAAA,OAMAyF,GAGA1I,EAAAM,aAAA,MACAC,OAAA,oGAAAL,MACA,KAEAM,YAAA,+DAAAN,MACA,KAEAwD,kBAAA,EACAxC,SAAA,kDAAAhB,MAAA,KACAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,OACAC,IAAA,UACAC,EAAA,aACAC,GAAA,cACAC,IAAA,mBACAC,KAAA,0BAEAC,UACAC,QAAA,cACAC,QAAA,gBACAC,SAAA,eACAC,QAAA,eACAC,SAAA,uBACAC,SAAA,KAEAC,cACAC,OAAA,WACAC,KAAA,aACAC,EAAA,iBACAC,GAAAkJ,EACAjL,EAAA,WACAgC,GAAAiJ,EACAhJ,EAAA,QACAC,GAAA+I,EACA9I,EAAA,OACAC,GAAA6I,EACA5I,EAAA,SACAC,GAAA2I,EACA1I,EAAA,QACAC,GAAAyI,GAEArI,MACAC,IAAA,EACAC,IAAA,KApEuCC,CAAWC,EAAQ,gCCCzD,SAAAzD,GAA2B;kCAI5B;IAEAK,EAAA,yKACAD,GACA,SACA,SACA,SACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,SAGAJ,EAAAM,aAAA,MACAC,OAAA,uFAAAL,MACA,KAEAM,YAAA,iEAAAN,MACA,KAEAG,cACAQ,iBAAAR,EACAS,kBA3BA,2FA4BAC,uBA3BA,oFA4BAX,cACAY,gBAAAZ,EACAa,iBAAAb,EACAc,SAAA,sDAAAhB,MAAA,KACAiB,cAAA,qCAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,0BAEAC,UACAC,QAAA,qBACAC,QAAA,gBACAC,SAAA,cACAC,QAAA,cACAC,SAAA,sBACAC,SAAA,KAEAC,cACAC,OAAA,UACAC,KAAA,YACAC,EAAA,oBACAC,GAAA,cACA/B,EAAA,aACAgC,GAAA,aACAC,EAAA,YACAC,GAAA,YACAC,EAAA,UACAC,GAAA,WACAC,EAAA,UACAC,GAAA,UACAC,EAAA,QACAC,GAAA,UAEAC,uBAAA,eACAC,QAAA,SAAAC,EAAA+C,GACA,OAAAA,GAIA,QACA,OAAA/C,GAAA,IAAAA,EAAA,SAGA,QACA,QACA,QACA,UACA,QACA,OAAAA,GAAA,IAAAA,EAAA,UAGA,QACA,QACA,OAAAA,GAAA,IAAAA,EAAA,YAGAC,MACAC,IAAA,EACAC,IAAA,KApGuCC,CAAWC,EAAQ,gCCOzD,SAAAzD,GAA2B;kCAI5B;IAAA8L,EAAA,SAAAzB,GACA,WAAAA,EACA,EACA,IAAAA,EACA,EACA,IAAAA,EACA,EACAA,EAAA,QAAAA,EAAA,QACA,EACAA,EAAA,QACA,EACA,GAEA0B,GACAxJ,GACA,eACA,eACA,qBACA,UACA,WACA,YAEA9B,GACA,eACA,eACA,qBACA,WACA,WACA,YAEAiC,GACA,cACA,cACA,mBACA,WACA,UACA,WAEAE,GACA,aACA,YACA,iBACA,UACA,WACA,UAEAE,GACA,aACA,YACA,iBACA,UACA,UACA,UAEAE,GACA,aACA,YACA,iBACA,WACA,WACA,WAGAgJ,EAAA,SAAAC,GACA,gBAAA7I,EAAAqF,EAAArD,EAAAuD,GACA,IAAAuD,EAAAJ,EAAA1I,GACA+I,EAAAJ,EAAAE,GAAAH,EAAA1I,IAIA,OAHA,IAAA8I,IACAC,IAAA1D,EAAA,MAEA0D,EAAA9G,QAAA,MAAAjC,KAGA7C,GACA,QACA,QACA,OACA,QACA,MACA,OACA,SACA,MACA,SACA,SACA,SACA,UAGAP,EAAAM,aAAA,SACAC,SACAC,YAAAD,EACAW,SAAA,sDAAAhB,MAAA,KACAiB,cAAA,wCAAAjB,MAAA,KACAkB,YAAA,gBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,0BAEA4D,cAAA,MACAS,KAAA,SAAAC,GACA,YAAAA,GAEAP,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,GACA,IAEA,KAGA7D,UACAC,QAAA,wBACAC,QAAA,uBACAC,SAAA,uBACAC,QAAA,sBACAC,SAAA,uBACAC,SAAA,KAEAC,cACAC,OAAA,SACAC,KAAA,SACAC,EAAAyJ,EAAA,KACAxJ,GAAAwJ,EAAA,KACAvL,EAAAuL,EAAA,KACAvJ,GAAAuJ,EAAA,KACAtJ,EAAAsJ,EAAA,KACArJ,GAAAqJ,EAAA,KACApJ,EAAAoJ,EAAA,KACAnJ,GAAAmJ,EAAA,KACAlJ,EAAAkJ,EAAA,KACAjJ,GAAAiJ,EAAA,KACAhJ,EAAAgJ,EAAA,KACA/I,GAAA+I,EAAA,MAEAzG,WAAA,SAAAH,GACA,OAAAA,EAAAC,QAAA,WAEAhC,MACAC,IAAA,EACAC,IAAA,KAtJuCC,CAAWC,EAAQ,kCCDzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,8IAAAL,MACA,KAEAM,YAAA,iDAAAN,MAAA,KACAgB,SAAA,+CAAAhB,MAAA,KACAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,2BACAC,IAAA,wCACAC,KAAA,8CAEAC,UACAC,QAAA,eACAC,QAAA,iBACAC,SAAA,qBACAC,QAAA,iBACAC,SAAA,yBACAC,SAAA,KAEAC,cACAC,OAAA,UACAC,KAAA,aACAC,EAAA,kBACAC,GAAA,aACA/B,EAAA,eACAgC,GAAA,YACAC,EAAA,aACAC,GAAA,UACAC,EAAA,aACAC,GAAA,UACAC,EAAA,aACAC,GAAA,UACAC,EAAA,YACAC,GAAA,UAEAI,MACAC,IAAA,EACAC,IAAA,KAjDuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5B;SAAAwI,EAAApF,EAAAqF,EAAAC,EAAAC,GACA,IAAAjI,GACA6B,GAAA,gCACAC,IAAAY,EAAA,aAAAA,EAAA,UACA3C,GAAA,yBACAgC,IAAAW,EAAA,YAAAA,EAAA,WACAV,GAAA,oBACAC,IAAAS,EAAA,UAAAA,EAAA,SACAR,GAAA,sBACAC,IAAAO,EAAA,WAAAA,EAAA,QACAN,GAAA,6BACAC,IAAAK,EAAA,cAAAA,EAAA,WACAJ,GAAA,wBACAC,IAAAG,EAAA,YAAAA,EAAA,YAEA,OAAAuF,EAAAjI,EAAAgI,GAAA,GAAAhI,EAAAgI,GAAA,GAGA1I,EAAAM,aAAA,YACAC,QACAyF,WAAA,wFAAA9F,MACA,KAEAQ,OAAA,mJAAAR,MACA,KAEAkG,SAAA,mBAEA5F,YAAA,4EAAAN,MACA,KAEAwD,kBAAA,EACAxC,SAAA,qDAAAhB,MAAA,KACAiB,cAAA,4CAAAjB,MAAA,KACAkB,YAAA,wBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,kBACAC,IAAA,qBACAC,EAAA,aACAC,GAAA,cACAC,IAAA,8BACAC,KAAA,uCACA2E,KAAA,oCAEA1E,UACAC,QAAA,WACAC,QAAA,eACAC,SAAA,qBACAC,QAAA,WACAC,SAAA,qBACAC,SAAA,KAEAC,cACAC,OAAA,KACAC,KAAA,UACAC,EAAAiG,EACAhG,GAAAgG,EACA/H,EAAA+H,EACA/F,GAAA+F,EACA9F,EAAA8F,EACA7F,GAAA6F,EACA5F,EAAA4F,EACA3F,GAAA2F,EACA1F,EAAA0F,EACAzF,GAAAyF,EACAxF,EAAAwF,EACAvF,GAAAuF,GAEAtF,uBAAA,eACAC,QAAA,SAAAC,EAAA+C,GACA,OAAAA,GAEA,QACA,OAAA/C,EAAA,MACA,QACA,QACA,QACA,UACA,QACA,QACA,QACA,OAAAA,IAGAC,MACAC,IAAA,EACAC,IAAA,GAEAiC,cAAA,4BACAC,aAAA,SAAAC,EAAAC,GAIA,OAHA,KAAAD,IACAA,EAAA,GAEA,SAAAC,EACAD,EAAA,EAAAA,IAAA,GACa,WAAAC,EACbD,EACa,YAAAC,EACbD,EAAA,GAAAA,IAAA,GACa,UAAAC,EACbD,EAAA,QADa,GAIbC,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,EACA,OACaA,EAAA,GACb,SACaA,EAAA,GACb,UACaA,EAAA,GACb,QAEA,UAzHuClC,CAAWC,EAAQ,gCCIzD,SAAAzD,GAA2B;kCAY5B;SAAA0L,EAAAtI,EAAAqF,EAAAC,GACA,IAAAhI,GACA8B,GAAAiG,EAAA,kDACAhG,GAAAgG,EAAA,kDACA9F,GAAA8F,EAAA,4CACA5F,GAAA,gBACAE,GAAA,wBACAE,GAAA,kBAEA,YAAAyF,EACAD,EAAA,oBACS,MAAAC,EACTD,EAAA,kBAEArF,EAAA,IAtBA,SAAAuI,EAAAC,GACA,IAAAC,EAAAF,EAAAzL,MAAA,KACA,OAAA0L,EAAA,OAAAA,EAAA,QACAC,EAAA,GACAD,EAAA,OAAAA,EAAA,QAAAA,EAAA,QAAAA,EAAA,SACAC,EAAA,GACAA,EAAA,GAgBAzB,CAAA1J,EAAAgI,IAAAtF,GAiCA,SAAAsQ,EAAAvH,GACA,kBACA,OAAAA,EAAA,UAAArG,KAAAU,QAAA,gBAIAxG,EAAAM,aAAA,MACAC,QACAG,OAAA,yFAAAR,MACA,KAEA8F,WAAA,iGAAA9F,MACA,MAGAM,YAAA,yDAAAN,MACA,KAEAgB,SAhDA,SAAAT,EAAAC,GACA,IAWAiT,EAXAzS,GACA0S,WAAA,0DAAA1T,MACA,KAEA2T,WAAA,0DAAA3T,MACA,KAEA4T,SAAA,4DAAA5T,MACA,MAKA,WAAAO,EACAS,EAAA,WACA6S,MAAA,KACAC,OAAA9S,EAAA,WAAA6S,MAAA,MAEAtT,GAIAkT,EAAA,qBAAAhT,KAAAD,GACA,aACA,sCAAAC,KAAAD,GACA,WACA,aACAQ,EAAAyS,GAAAlT,EAAAsF,QARA7E,EAAA,YA6BAC,cAAA,uBAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,iBACAC,IAAA,wBACAC,KAAA,+BAEAC,UACAC,QAAA4R,EAAA,cACA3R,QAAA2R,EAAA,YACAzR,QAAAyR,EAAA,WACA1R,SAAA0R,EAAA,cACAxR,SAAA,WACA,OAAA4D,KAAAC,OACA,OACA,OACA,OACA,OACA,OAAA2N,EAAA,oBAAAjE,KAAA3J,MACA,OACA,OACA,OACA,OAAA4N,EAAA,qBAAAjE,KAAA3J,QAGA3D,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,UACAC,EAAA,kBACAC,GAAAkJ,EACAjL,EAAAiL,EACAjJ,GAAAiJ,EACAhJ,EAAA,SACAC,GAAA+I,EACA9I,EAAA,OACAC,GAAA6I,EACA5I,EAAA,SACAC,GAAA2I,EACA1I,EAAA,MACAC,GAAAyI,GAGAlG,cAAA,wBACAS,KAAA,SAAAC,GACA,uBAAAvF,KAAAuF,IAEAP,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,EACA,OACaA,EAAA,GACb,QACaA,EAAA,GACb,MAEA,UAGAxC,uBAAA,iBACAC,QAAA,SAAAC,EAAA+C,GACA,OAAAA,GACA,QACA,QACA,UACA,QACA,QACA,OAAA/C,EAAA,KACA,QACA,OAAAA,EAAA,MACA,QACA,OAAAA,IAGAC,MACAC,IAAA,EACAC,IAAA,KAhKuCC,CAAWC,EAAQ,kCCKzD,SAAAzD,GAA2B;kCAI5B;SAAAwI,EAAApF,EAAAqF,EAAAC,EAAAC,GACA,IAAAjI,GACAD,GAAA,8BACAiC,GAAA,8BACAE,GAAA,uBACAC,IAAAO,EAAA,QAAAA,EAAA,UACA6Q,GAAA,4BACAnR,GAAA,2BACAC,IAAAK,EAAA,UAAAA,EAAA,YACAJ,GAAA,yBACAC,IAAAG,EAAA,SAAAA,EAAA,YAEA,OAAAqF,EAAA/H,EAAAgI,GAAA,GAAAhI,EAAAgI,GAAA,GAGA1I,EAAAM,aAAA,SACAC,OAAA,qFAAAL,MACA,KAEAM,YAAA,6DAAAN,MACA,KAEAwD,kBAAA,EACAxC,SAAA,8DAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,eACAC,IAAA,qBACAC,KAAA,4BAEAC,UACAC,QAAA,sBACAK,SAAA,IACAJ,QAAA,uBACAC,SAAA,qBACAC,QAAA,wBACAC,SAAA,gCAEAE,cACAC,OAAA,QACAC,KAAA,SACAC,EAAA,oBACAC,GAAA,cACA/B,EAAA+H,EACA/F,GAAA,aACAC,EAAA8F,EACA7F,GAAA,aACAC,EAAA4F,EACA3F,GAAA2F,EACAyL,EAAAzL,EACA0L,GAAA,YACApR,EAAA0F,EACAzF,GAAAyF,EACAxF,EAAAwF,EACAvF,GAAAuF,GAEAtF,uBAAA,YACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KA1EuCC,CAAWC,EAAQ,gCCAzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,6EAAAL,MACA,KAEAM,YAAA,6EAAAN,MACA,KAEAgB,SAAA,sCAAAhB,MAAA,KACAiB,cAAA,oCAAAjB,MAAA,KACAkB,YAAA,mBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,6BAEA4D,cAAA,kBACAS,KAAA,SAAAC,GACA,iBAAAA,GAEAP,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,GACA,WAEA,UAGA7D,UACAC,QAAA,kBACAC,QAAA,mBACAC,SAAA,wBACAC,QAAA,qBACAC,SAAA,4BACAC,SAAA,KAEAC,cACAC,OAAA,SACAC,KAAA,WACAC,EAAA,mBACAC,GAAA,YACA/B,EAAA,SACAgC,GAAA,UACAC,EAAA,YACAC,GAAA,aACAC,EAAA,QACAC,GAAA,SACAC,EAAA,UACAC,GAAA,WACAC,EAAA,OACAC,GAAA,SAEAC,uBAAA,eACAC,QAAA,SAAAC,GACA,YAAAA,KA/DuCI,CAAWC,EAAQ,kCCGzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,SACAC,OAAA,wFAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,2DAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,2BAEAC,UACAC,QAAA,gBACAC,QAAA,mBACAC,SAAA,eACAC,QAAA,oBACAC,SAAA,sBACAC,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,SACAC,EAAA,gBACAC,GAAA,aACA/B,EAAA,WACAgC,GAAA,aACAC,EAAA,UACAC,GAAA,WACAC,EAAA,QACAC,GAAA,UACAC,EAAA,UACAC,GAAA,YACAC,EAAA,SACAC,GAAA,YAEAC,uBAAA,uBACAC,QAAA,SAAAC,GACA,IAAAO,EAAAP,EAAA,GACAQ,EACA,MAAAR,EAAA,QACA,KACA,IAAAO,EACA,KACA,IAAAA,EACA,KACA,IAAAA,EACA,KACA,KACA,OAAAP,EAAAQ,GAEAP,MACAC,IAAA,EACAC,IAAA,KAlEuCC,CAAWC,EAAQ,gCCKzD,SAAAzD,GAA2B;kCAI5B;SAAAwI,EAAApF,EAAAqF,EAAAC,EAAAC,GACA,IAAAjI,GACAD,GAAA,8BACAiC,GAAA,8BACAE,GAAA,uBACAC,IAAAO,EAAA,QAAAA,EAAA,UACA6Q,GAAA,4BACAnR,GAAA,2BACAC,IAAAK,EAAA,UAAAA,EAAA,YACAJ,GAAA,yBACAC,IAAAG,EAAA,SAAAA,EAAA,YAEA,OAAAqF,EAAA/H,EAAAgI,GAAA,GAAAhI,EAAAgI,GAAA,GAGA1I,EAAAM,aAAA,MACAC,OAAA,qFAAAL,MACA,KAEAM,YAAA,6DAAAN,MACA,KAEAwD,kBAAA,EACAxC,SAAA,8DAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,eACAC,IAAA,qBACAC,KAAA,4BAEAC,UACAC,QAAA,sBACAK,SAAA,IACAJ,QAAA,uBACAC,SAAA,qBACAC,QAAA,wBACAC,SAAA,gCAEAE,cACAC,OAAA,QACAC,KAAA,SACAC,EAAA,oBACAC,GAAA,cACA/B,EAAA+H,EACA/F,GAAA,aACAC,EAAA8F,EACA7F,GAAA,aACAC,EAAA4F,EACA3F,GAAA2F,EACAyL,EAAAzL,EACA0L,GAAA,YACApR,EAAA0F,EACAzF,GAAAyF,EACAxF,EAAAwF,EACAvF,GAAAuF,GAEAtF,uBAAA,YACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KA1EuCC,CAAWC,EAAQ,gCCCzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,YACAC,OAAA,wFAAAL,MACA,KAEAM,YAAA,wFAAAN,MACA,KAEAgB,SAAA,kDAAAhB,MAAA,KACAiB,cAAA,kDAAAjB,MAAA,KACAkB,YAAA,kDAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,0BAEAC,UACAC,QAAA,eACAC,QAAA,cACAC,SAAA,cACAC,QAAA,gBACAC,SAAA,cACAC,SAAA,KAEAC,cACAC,OAAA,iBACAC,KAAA,SACAC,EAAA,OACAC,GAAA,UACA/B,EAAA,QACAgC,GAAA,WACAC,EAAA,OACAC,GAAA,cACAC,EAAA,MACAC,GAAA,WACAC,EAAA,QACAC,GAAA,YACAC,EAAA,QACAC,GAAA,aAEAI,MACAC,IAAA,EACAC,IAAA,MAnDuCC,CAAWC,EAAQ,gCCIzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,yFAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,+CAAAhB,MAAA,KACAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,4BACAC,KAAA,mCAEA4D,cAAA,6BACAC,aAAA,SAAAC,EAAAC,GAIA,OAHA,KAAAD,IACAA,EAAA,GAEA,WAAAC,EACAD,EACa,WAAAC,EACbD,GAAA,GAAAA,IAAA,GACa,WAAAC,GAAA,UAAAA,EACbD,EAAA,QADa,GAIbC,SAAA,SAAAa,EAAAqB,EAAAhC,GACA,OAAAW,EAAA,GACA,SACaA,EAAA,GACb,SACaA,EAAA,GACb,SAEA,SAGA3E,UACAC,QAAA,2BACAC,QAAA,sBACAC,SAAA,kBACAC,QAAA,wBACAC,SAAA,4BACAC,SAAA,KAEAC,cACAC,OAAA,gBACAC,KAAA,uBACAC,EAAA,kBACAC,GAAA,WACA/B,EAAA,kBACAgC,GAAA,WACAC,EAAA,gBACAC,GAAA,SACAC,EAAA,WACAC,GAAA,YACAC,EAAA,UACAC,GAAA,WACAC,EAAA,SACAC,GAAA,WAEAI,MACAC,IAAA,EACAC,IAAA,KAzEuCC,CAAWC,EAAQ,gCCEzD,SAAAzD,GAA2B;kCAI5B;SAAAwI,EAAApF,EAAAqF,EAAAC,EAAAC,GACA,IAAAjI,GACAD,GAAA,8BACAiC,GAAA,8BACAE,GAAA,uBACAC,IAAAO,EAAA,QAAAA,EAAA,UACA6Q,GAAA,4BACAnR,GAAA,2BACAC,IAAAK,EAAA,UAAAA,EAAA,YACAJ,GAAA,yBACAC,IAAAG,EAAA,SAAAA,EAAA,YAEA,OAAAqF,EAAA/H,EAAAgI,GAAA,GAAAhI,EAAAgI,GAAA,GAGA1I,EAAAM,aAAA,SACAC,OAAA,qFAAAL,MACA,KAEAM,YAAA,6DAAAN,MACA,KAEAwD,kBAAA,EACAxC,SAAA,8DAAAhB,MACA,KAEAiB,cAAA,uBAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,eACAC,IAAA,qBACAC,KAAA,4BAEAC,UACAC,QAAA,sBACAK,SAAA,IACAJ,QAAA,uBACAC,SAAA,qBACAC,QAAA,wBACAC,SAAA,gCAEAE,cACAC,OAAA,QACAC,KAAA,SACAC,EAAA,oBACAC,GAAA,cACA/B,EAAA+H,EACA/F,GAAA,aACAC,EAAA8F,EACA7F,GAAA,aACAC,EAAA4F,EACA3F,GAAA2F,EACAyL,EAAAzL,EACA0L,GAAA,YACApR,EAAA0F,EACAzF,GAAAyF,EACAxF,EAAAwF,EACAvF,GAAAuF,GAEAtF,uBAAA,YACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KA1EuCC,CAAWC,EAAQ,gCCIzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,qFAAAL,MACA,KAEAM,YAAA,6DAAAN,MACA,KAEAwD,kBAAA,EACAxC,SAAA,qDAAAhB,MAAA,KACAiB,cAAA,+BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,eACAC,IAAA,0BACAC,KAAA,iCAEAC,UACAC,QAAA,oBACAC,QAAA,uBACAC,SAAA,mBACAC,QAAA,oBACAC,SAAA,gCACAC,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,WACAC,EAAA,eACAC,GAAA,YACA/B,EAAA,aACAgC,GAAA,YACAC,EAAA,WACAC,GAAA,WACAC,EAAA,UACAC,GAAA,WACAC,EAAA,YACAC,GAAA,aACAC,EAAA,SACAC,GAAA,SAEAC,uBAAA,YACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KAvDuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5B;IAAAmN,GACA3K,GAAA,qCAAAtC,MAAA,KACAO,EAAA,iCAAAP,MAAA,KACAuC,GAAA,iCAAAvC,MAAA,KACAwC,EAAA,iCAAAxC,MAAA,KACAyC,GAAA,iCAAAzC,MAAA,KACA0C,EAAA,6BAAA1C,MAAA,KACA2C,GAAA,6BAAA3C,MAAA,KACA4C,EAAA,iCAAA5C,MAAA,KACA6C,GAAA,iCAAA7C,MAAA,KACA8C,EAAA,wBAAA9C,MAAA,KACA+C,GAAA,wBAAA/C,MAAA,MAKA,SAAAQ,EAAAmL,EAAAzI,EAAAqF,GACA,OAAAA,EAEArF,EAAA,OAAAA,EAAA,QAAAyI,EAAA,GAAAA,EAAA,GAIAzI,EAAA,OAAAA,EAAA,QAAAyI,EAAA,GAAAA,EAAA,GAGA,SAAAH,EAAAtI,EAAAqF,EAAAC,GACA,OAAAtF,EAAA,IAAA1C,EAAAyM,EAAAzE,GAAAtF,EAAAqF,GAEA,SAAA0L,EAAA/Q,EAAAqF,EAAAC,GACA,OAAAhI,EAAAyM,EAAAzE,GAAAtF,EAAAqF,GAMAzI,EAAAM,aAAA,MACAC,OAAA,uGAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,0EAAAhB,MACA,KAEAiB,cAAA,kBAAAjB,MAAA,KACAkB,YAAA,kBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,cACAC,GAAA,uBACAC,IAAA,8BACAC,KAAA,qCAEAC,UACAC,QAAA,uBACAC,QAAA,oBACAC,SAAA,qBACAC,QAAA,sBACAC,SAAA,gCACAC,SAAA,KAEAC,cACAC,OAAA,SACAC,KAAA,WACAC,EAlCA,SAAAa,EAAAqF,GACA,OAAAA,EAAA,mCAkCAjG,GAAAkJ,EACAjL,EAAA0T,EACA1R,GAAAiJ,EACAhJ,EAAAyR,EACAxR,GAAA+I,EACA9I,EAAAuR,EACAtR,GAAA6I,EACA5I,EAAAqR,EACApR,GAAA2I,EACA1I,EAAAmR,EACAlR,GAAAyI,GAEAxI,uBAAA,YACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KA1FuCC,CAAWC,EAAQ,gCCEzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,OACAC,OAAA,kFAAAL,MACA,KAEAM,YAAA,kFAAAN,MACA,KAEAgB,SAAA,kDAAAhB,MAAA,KACAiB,cAAA,kDAAAjB,MAAA,KACAkB,YAAA,kDAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,0BAEAC,UACAC,QAAA,cACAC,QAAA,cACAC,SAAA,cACAC,QAAA,eACAC,SAAA,cACAC,SAAA,KAEAC,cACAC,OAAA,gBACAC,KAAA,SACAC,EAAA,OACAC,GAAA,UACA/B,EAAA,QACAgC,GAAA,WACAC,EAAA,OACAC,GAAA,cACAC,EAAA,MACAC,GAAA,WACAC,EAAA,QACAC,GAAA,YACAC,EAAA,QACAC,GAAA,aAEAI,MACAC,IAAA,EACAC,IAAA,MAnDuCC,CAAWC,EAAQ,kCCN1D,SAAA2Q,GAOgEA,EAAAC,QAG/D,WAAqB,aAEtB,IAAAC,EA4HAC,EA1HA,SAAAC,IACA,OAAAF,EAAApC,MAAA,KAAAuC,WASA,SAAAC,EAAAxO,GACA,OACAA,aAAAyO,OACA,mBAAA7C,OAAAC,UAAAC,SAAAvC,KAAAvJ,GAIA,SAAA0O,EAAA1O,GAGA,OACA,MAAAA,GACA,oBAAA4L,OAAAC,UAAAC,SAAAvC,KAAAvJ,GAIA,SAAA2O,EAAA1J,EAAAxH,GACA,OAAAmO,OAAAC,UAAA+C,eAAArF,KAAAtE,EAAAxH,GAGA,SAAAoR,EAAAC,GACA,GAAAlD,OAAAmD,oBACA,WAAAnD,OAAAmD,oBAAAD,GAAAvJ,OAEA,IAAAyJ,EACA,IAAAA,KAAAF,EACA,GAAAH,EAAAG,EAAAE,GACA,SAGA,SAIA,SAAAC,EAAAjP,GACA,gBAAAA,EAGA,SAAAkP,EAAAlP,GACA,MACA,iBAAAA,GACA,oBAAA4L,OAAAC,UAAAC,SAAAvC,KAAAvJ,GAIA,SAAAmP,EAAAnP,GACA,OACAA,aAAAoP,MACA,kBAAAxD,OAAAC,UAAAC,SAAAvC,KAAAvJ,GAIA,SAAAqP,EAAAC,EAAAC,GACA,IACAC,EADAC,KAEA,IAAAD,EAAA,EAAmBA,EAAAF,EAAA/J,SAAgBiK,EACnCC,EAAAC,KAAAH,EAAAD,EAAAE,OAEA,OAAAC,EAGA,SAAAE,EAAA1K,EAAAxH,GACA,QAAA+R,KAAA/R,EACAkR,EAAAlR,EAAA+R,KACAvK,EAAAuK,GAAA/R,EAAA+R,IAYA,OARAb,EAAAlR,EAAA,cACAwH,EAAA6G,SAAArO,EAAAqO,UAGA6C,EAAAlR,EAAA,aACAwH,EAAA2K,QAAAnS,EAAAmS,SAGA3K,EAGA,SAAA4K,EAAA7P,EAAAxF,EAAAsV,EAAAC,GACA,OAAAC,GAAAhQ,EAAAxF,EAAAsV,EAAAC,GAAA,GAAAE,MAyBA,SAAAC,EAAA3V,GAIA,OAHA,MAAAA,EAAA4V,MACA5V,EAAA4V,KArBAC,OAAA,EACAC,gBACAC,eACAC,UAAA,EACAC,cAAA,EACAC,WAAA,EACAC,WAAA,KACAC,aAAA,KACAC,eAAA,EACAC,iBAAA,EACAC,KAAA,EACAC,mBACAC,IAAA,KACAvR,SAAA,KACAwR,SAAA,EACAC,iBAAA,IAQA3W,EAAA4V,IAsBA,SAAAgB,EAAA5W,GACA,SAAAA,EAAA6W,SAAA,CACA,IAAAC,EAAAnB,EAAA3V,GACA+W,EAAAjD,EAAA9E,KAAA8H,EAAAN,gBAAA,SAAAvB,GACA,aAAAA,IAEA+B,GACAzI,MAAAvO,EAAAiX,GAAAC,YACAJ,EAAAd,SAAA,IACAc,EAAAjB,QACAiB,EAAAX,aACAW,EAAAV,eACAU,EAAAK,iBACAL,EAAAH,kBACAG,EAAAZ,YACAY,EAAAT,gBACAS,EAAAR,mBACAQ,EAAA5R,UAAA4R,EAAA5R,UAAA6R,GAUA,GARA/W,EAAAoX,UACAJ,EACAA,GACA,IAAAF,EAAAb,eACA,IAAAa,EAAAhB,aAAA9K,aACAoE,IAAA0H,EAAAO,SAGA,MAAAhG,OAAAiG,UAAAjG,OAAAiG,SAAAtX,GAGA,OAAAgX,EAFAhX,EAAA6W,SAAAG,EAKA,OAAAhX,EAAA6W,SAGA,SAAAU,EAAAT,GACA,IAAA9W,EAAAsV,EAAAkC,KAOA,OANA,MAAAV,EACA1B,EAAAO,EAAA3V,GAAA8W,GAEAnB,EAAA3V,GAAAsW,iBAAA,EAGAtW,EA7DA8T,EADAI,MAAA5C,UAAAwC,KACAI,MAAA5C,UAAAwC,KAEA,SAAA2D,GACA,IAEAxC,EAFAyC,EAAArG,OAAAhM,MACAsS,EAAAD,EAAA1M,SAAA,EAGA,IAAAiK,EAAA,EAAuBA,EAAA0C,EAAS1C,IAChC,GAAAA,KAAAyC,GAAAD,EAAAzI,KAAA3J,KAAAqS,EAAAzC,KAAAyC,GACA,SAIA,UAqDA,IAAAE,EAAA7D,EAAA6D,oBACAC,GAAA,EAEA,SAAAC,EAAAC,EAAAC,GACA,IAAA/C,EAAAgD,EAAAC,EAiCA,GA/BAxD,EAAAsD,EAAAG,oBACAJ,EAAAI,iBAAAH,EAAAG,kBAEAzD,EAAAsD,EAAAI,MACAL,EAAAK,GAAAJ,EAAAI,IAEA1D,EAAAsD,EAAAK,MACAN,EAAAM,GAAAL,EAAAK,IAEA3D,EAAAsD,EAAAM,MACAP,EAAAO,GAAAN,EAAAM,IAEA5D,EAAAsD,EAAAZ,WACAW,EAAAX,QAAAY,EAAAZ,SAEA1C,EAAAsD,EAAAO,QACAR,EAAAQ,KAAAP,EAAAO,MAEA7D,EAAAsD,EAAAQ,UACAT,EAAAS,OAAAR,EAAAQ,QAEA9D,EAAAsD,EAAAS,WACAV,EAAAU,QAAAT,EAAAS,SAEA/D,EAAAsD,EAAApC,OACAmC,EAAAnC,IAAAD,EAAAqC,IAEAtD,EAAAsD,EAAAU,WACAX,EAAAW,QAAAV,EAAAU,SAGAd,EAAA5M,OAAA,EACA,IAAAiK,EAAA,EAAuBA,EAAA2C,EAAA5M,OAA6BiK,IACpDgD,EAAAL,EAAA3C,GAEAP,EADAwD,EAAAF,EAAAC,MAEAF,EAAAE,GAAAC,GAKA,OAAAH,EAIA,SAAAY,EAAAC,GACAd,EAAAzS,KAAAuT,GACAvT,KAAA4R,GAAA,IAAApC,KAAA,MAAA+D,EAAA3B,GAAA2B,EAAA3B,GAAAC,UAAAM,KACAnS,KAAAuR,YACAvR,KAAA4R,GAAA,IAAApC,KAAA2C,OAIA,IAAAK,IACAA,GAAA,EACA9D,EAAA8E,aAAAxT,MACAwS,GAAA,GAIA,SAAAiB,EAAAvE,GACA,OACAA,aAAAoE,GAAA,MAAApE,GAAA,MAAAA,EAAA4D,iBAIA,SAAAY,EAAAC,IAEA,IAAAjF,EAAAkF,6BACA,oBAAAC,SACAA,QAAAH,MAEAG,QAAAH,KAAA,wBAAAC,GAIA,SAAAG,EAAAH,EAAAhE,GACA,IAAAoE,GAAA,EAEA,OAAAhE,EAAA,WAIA,GAHA,MAAArB,EAAAsF,oBACAtF,EAAAsF,mBAAA,KAAAL,GAEAI,EAAA,CACA,IACAE,EACArE,EACAhN,EAHAsR,KAIA,IAAAtE,EAAA,EAA2BA,EAAAjB,UAAAhJ,OAAsBiK,IAAA,CAEjD,GADAqE,EAAA,GACA,iBAAAtF,UAAAiB,GAAA,CAEA,IAAAhN,KADAqR,GAAA,MAAArE,EAAA,KACAjB,UAAA,GACAI,EAAAJ,UAAA,GAAA/L,KACAqR,GAAArR,EAAA,KAAA+L,UAAA,GAAA/L,GAAA,MAGAqR,IAAAhG,MAAA,WAEAgG,EAAAtF,UAAAiB,GAEAsE,EAAApE,KAAAmE,GAEAP,EACAC,EACA,gBACA9E,MAAA5C,UAAAgC,MAAAtE,KAAAuK,GAAAC,KAAA,IACA,MACA,IAAAC,OAAAC,OAEAN,GAAA,EAEA,OAAApE,EAAAvD,MAAApM,KAAA2O,YACSgB,GAGT,IAgFA2E,EAhFAC,KAEA,SAAAC,EAAA3Q,EAAA8P,GACA,MAAAjF,EAAAsF,oBACAtF,EAAAsF,mBAAAnQ,EAAA8P,GAEAY,EAAA1Q,KACA6P,EAAAC,GACAY,EAAA1Q,IAAA,GAOA,SAAAsI,EAAA/L,GACA,MACA,oBAAA2L,UAAA3L,aAAA2L,UACA,sBAAAC,OAAAC,UAAAC,SAAAvC,KAAAvJ,GA2BA,SAAAqU,EAAAC,EAAAC,GACA,IACA/B,EADA/C,EAAAE,KAA2B2E,GAE3B,IAAA9B,KAAA+B,EACA5F,EAAA4F,EAAA/B,KACA9D,EAAA4F,EAAA9B,KAAA9D,EAAA6F,EAAA/B,KACA/C,EAAA+C,MACA7C,EAAAF,EAAA+C,GAAA8B,EAAA9B,IACA7C,EAAAF,EAAA+C,GAAA+B,EAAA/B,KACiB,MAAA+B,EAAA/B,GACjB/C,EAAA+C,GAAA+B,EAAA/B,UAEA/C,EAAA+C,IAIA,IAAAA,KAAA8B,EAEA3F,EAAA2F,EAAA9B,KACA7D,EAAA4F,EAAA/B,IACA9D,EAAA4F,EAAA9B,MAGA/C,EAAA+C,GAAA7C,KAAqCF,EAAA+C,KAGrC,OAAA/C,EAGA,SAAA+E,EAAArB,GACA,MAAAA,GACAvT,KAAA6U,IAAAtB,GAmCA,SAAAuB,EAAAxX,EAAAyX,EAAAC,GACA,IAAAC,EAAA,GAAAC,KAAAC,IAAA7X,GACA8X,EAAAL,EAAAE,EAAAtP,OACA0P,EAAA/X,GAAA,EACA,OACA+X,EAAAL,EAAA,YACAE,KAAAI,IAAA,GAAAJ,KAAAK,IAAA,EAAAH,IAAAlJ,WAAA7C,OAAA,GACA4L,EA1GAvG,EAAAkF,6BAAA,EACAlF,EAAAsF,mBAAA,KAsEAM,EADAtI,OAAAsI,KACAtI,OAAAsI,KAEA,SAAApF,GACA,IAAAU,EACAC,KACA,IAAAD,KAAAV,EACAH,EAAAG,EAAAU,IACAC,EAAAC,KAAAF,GAGA,OAAAC,GA6BA,IAAA2F,EAAA,yMACAC,EAAA,6CACAC,KACAC,KAMA,SAAAC,EAAAnP,EAAAoP,EAAAxY,EAAAyY,GACA,IAAAC,EAAAD,EACA,iBAAAA,IACAC,EAAA,WACA,OAAA/V,KAAA8V,OAGArP,IACAkP,EAAAlP,GAAAsP,GAEAF,IACAF,EAAAE,EAAA,eACA,OAAAf,EAAAiB,EAAA3J,MAAApM,KAAA2O,WAAAkH,EAAA,GAAAA,EAAA,MAGAxY,IACAsY,EAAAtY,GAAA,WACA,OAAA2C,KAAAgW,aAAA3Y,QACA0Y,EAAA3J,MAAApM,KAAA2O,WACAlI,KAMA,SAAAwP,EAAA7V,GACA,OAAAA,EAAAZ,MAAA,YACAY,EAAAb,QAAA,eAEAa,EAAAb,QAAA,UA6BA,SAAA2W,EAAAvb,EAAAC,GACA,OAAAD,EAAA4W,WAIA3W,EAAAub,EAAAvb,EAAAD,EAAAqb,cACAN,EAAA9a,GACA8a,EAAA9a,IAjCA,SAAAA,GACA,IACAgV,EACAjK,EAFAyQ,EAAAxb,EAAA4E,MAAAgW,GAIA,IAAA5F,EAAA,EAAAjK,EAAAyQ,EAAAzQ,OAA0CiK,EAAAjK,EAAYiK,IACtD+F,EAAAS,EAAAxG,IACAwG,EAAAxG,GAAA+F,EAAAS,EAAAxG,IAEAwG,EAAAxG,GAAAqG,EAAAG,EAAAxG,IAIA,gBAAA/D,GACA,IACA+D,EADA9R,EAAA,GAEA,IAAA8R,EAAA,EAAuBA,EAAAjK,EAAYiK,IACnC9R,GAAAqO,EAAAiK,EAAAxG,IACAwG,EAAAxG,GAAAjG,KAAAkC,EAAAjR,GACAwb,EAAAxG,GAEA,OAAA9R,GAYAuY,CAAAzb,GAEA8a,EAAA9a,GAAAD,IAPAA,EAAAqb,aAAA1K,cAUA,SAAA6K,EAAAvb,EAAAsV,GACA,IAAAN,EAAA,EAEA,SAAA0G,EAAAlW,GACA,OAAA8P,EAAA1U,eAAA4E,MAIA,IADAqV,EAAAc,UAAA,EACA3G,GAAA,GAAA6F,EAAA5a,KAAAD,IACAA,IAAA2E,QACAkW,EACAa,GAEAb,EAAAc,UAAA,EACA3G,GAAA,EAGA,OAAAhV,EAkFA,IAAA4b,KAEA,SAAAC,EAAAC,EAAAC,GACA,IAAAC,EAAAF,EAAAhN,cACA8M,EAAAI,GAAAJ,EAAAI,EAAA,KAAAJ,EAAAG,GAAAD,EAGA,SAAAG,EAAAxP,GACA,uBAAAA,EACAmP,EAAAnP,IAAAmP,EAAAnP,EAAAqC,oBACAK,EAGA,SAAA+M,EAAAC,GACA,IACAC,EACApE,EAFAqE,KAIA,IAAArE,KAAAmE,EACAhI,EAAAgI,EAAAnE,KACAoE,EAAAH,EAAAjE,MAEAqE,EAAAD,GAAAD,EAAAnE,IAKA,OAAAqE,EAGA,IAAAC,KAEA,SAAAC,EAAAT,EAAAU,GACAF,EAAAR,GAAAU,EAiBA,SAAAC,EAAAC,GACA,OAAAA,EAAA,MAAAA,EAAA,QAAAA,EAAA,OAGA,SAAAC,EAAAja,GACA,OAAAA,EAAA,EAEA4X,KAAAsC,KAAAla,IAAA,EAEA4X,KAAAuC,MAAAna,GAIA,SAAAoa,EAAAC,GACA,IAAAC,GAAAD,EACAE,EAAA,EAMA,OAJA,IAAAD,GAAAE,SAAAF,KACAC,EAAAN,EAAAK,IAGAC,EAGA,SAAAE,EAAArB,EAAAsB,GACA,gBAAAH,GACA,aAAAA,GACAI,EAAAjY,KAAA0W,EAAAmB,GACAnJ,EAAA8E,aAAAxT,KAAAgY,GACAhY,MAEAkY,EAAAlY,KAAA0W,IAKA,SAAAwB,EAAArM,EAAA6K,GACA,OAAA7K,EAAA0F,UACA1F,EAAA+F,GAAA,OAAA/F,EAAAsH,OAAA,UAAAuD,KACAvE,IAGA,SAAA8F,EAAApM,EAAA6K,EAAAmB,GACAhM,EAAA0F,YAAArI,MAAA2O,KAEA,aAAAnB,GACAW,EAAAxL,EAAAyL,SACA,IAAAzL,EAAA/Q,SACA,KAAA+Q,EAAAsM,QAEAN,EAAAH,EAAAG,GACAhM,EAAA+F,GAAA,OAAA/F,EAAAsH,OAAA,UAAAuD,GACAmB,EACAhM,EAAA/Q,QACAsd,GAAAP,EAAAhM,EAAA/Q,WAGA+Q,EAAA+F,GAAA,OAAA/F,EAAAsH,OAAA,UAAAuD,GAAAmB,IAgCA,IAmBAQ,EAnBAC,EAAA,KACAC,GAAA,OACAC,GAAA,QACAC,GAAA,QACAC,GAAA,aACAC,GAAA,QACAC,GAAA,YACAC,GAAA,gBACAC,GAAA,UACAC,GAAA,UACAC,GAAA,eACAC,GAAA,MACAC,GAAA,WACAC,GAAA,qBACAC,GAAA,0BAIAC,GAAA,wJAKA,SAAAC,GAAA7S,EAAA8S,EAAAC,GACAnB,EAAA5R,GAAA0F,EAAAoN,GACAA,EACA,SAAAE,EAAAzD,GACA,OAAAyD,GAAAD,IAAAD,GAIA,SAAAG,GAAAjT,EAAA8M,GACA,OAAAxE,EAAAsJ,EAAA5R,GAIA4R,EAAA5R,GAAA8M,EAAAxB,QAAAwB,EAAAF,SAHA,IAAAsG,OAOA,SAAAld,GACA,OAAAmd,GACAnd,EACA8C,QAAA,SACAA,QAAA,+CACAsa,EACAC,EACAC,EACAC,EACAC,GAEA,OAAAH,GAAAC,GAAAC,GAAAC,KAlBAC,CAAAzT,IAuBA,SAAAmT,GAAAnd,GACA,OAAAA,EAAA8C,QAAA,yBAA8C,QApC9C8Y,KAuCA,IAAA8B,MAEA,SAAAC,GAAA3T,EAAAqP,GACA,IAAAlG,EACAmG,EAAAD,EASA,IARA,iBAAArP,IACAA,OAEA6I,EAAAwG,KACAC,EAAA,SAAA3V,EAAAgW,GACAA,EAAAN,GAAA4B,EAAAtX,KAGAwP,EAAA,EAAmBA,EAAAnJ,EAAAd,OAAkBiK,IACrCuK,GAAA1T,EAAAmJ,IAAAmG,EAIA,SAAAsE,GAAA5T,EAAAqP,GACAsE,GAAA3T,EAAA,SAAArG,EAAAgW,EAAA7C,EAAA9M,GACA8M,EAAA+G,GAAA/G,EAAA+G,OACAxE,EAAA1V,EAAAmT,EAAA+G,GAAA/G,EAAA9M,KAIA,SAAA8T,GAAA9T,EAAArG,EAAAmT,GACA,MAAAnT,GAAA2O,EAAAoL,GAAA1T,IACA0T,GAAA1T,GAAArG,EAAAmT,EAAAiH,GAAAjH,EAAA9M,GAIA,IAcA6C,GAdAmR,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,EACAC,GAAA,EAuBA,SAAA7C,GAAAd,EAAAxc,GACA,GAAAoO,MAAAoO,IAAApO,MAAApO,GACA,OAAAqX,IAEA,IAAA+I,EAzBA,SAAA3W,EAAA4W,GACA,OAAA5W,EAAA4W,OAwBAC,CAAAtgB,EAAA,IAEA,OADAwc,IAAAxc,EAAAogB,GAAA,GACA,IAAAA,EACA7D,EAAAC,GACA,GACA,GACA,GAAA4D,EAAA,IAxBA5R,GADAuF,MAAA5C,UAAA3C,QACAuF,MAAA5C,UAAA3C,QAEA,SAAA+R,GAEA,IAAAzL,EACA,IAAAA,EAAA,EAAuBA,EAAA5P,KAAA2F,SAAiBiK,EACxC,GAAA5P,KAAA4P,KAAAyL,EACA,OAAAzL,EAGA,UAmBAgG,EAAA,6BACA,OAAA5V,KAAAlF,QAAA,IAGA8a,EAAA,mBAAAhb,GACA,OAAAoF,KAAAgW,aAAAtb,YAAAsF,KAAApF,KAGAgb,EAAA,oBAAAhb,GACA,OAAAoF,KAAAgW,aAAAvb,OAAAuF,KAAApF,KAKA6b,EAAA,aAIAU,EAAA,WAIAmC,GAAA,IAAAX,IACAW,GAAA,KAAAX,GAAAJ,IACAe,GAAA,eAAAG,EAAAvJ,GACA,OAAAA,EAAAnV,iBAAA0e,KAEAH,GAAA,gBAAAG,EAAAvJ,GACA,OAAAA,EAAA3V,YAAAkf,KAGAW,IAAA,mBAAAha,EAAAgW,GACAA,EAAAsE,IAAAhD,EAAAtX,GAAA,IAGAga,IAAA,uBAAAha,EAAAgW,EAAA7C,EAAA9M,GACA,IAAA3L,EAAAyY,EAAAF,QAAA/Y,YAAA8F,EAAAqG,EAAA8M,EAAAxB,SAEA,MAAAjX,EACAsb,EAAAsE,IAAA5f,EAEAwV,EAAAiD,GAAAxC,aAAA3Q,IAMA,IAAAkb,GAAA,wFAAAlhB,MACA,KAEAmhB,GAAA,kDAAAnhB,MACA,KAEAohB,GAAA,gCACAC,GAAApC,GACAqC,GAAArC,GAoIA,SAAAsC,GAAA9P,EAAAgM,GACA,IAAA+D,EAEA,IAAA/P,EAAA0F,UAEA,OAAA1F,EAGA,oBAAAgM,EACA,WAAAhd,KAAAgd,GACAA,EAAAH,EAAAG,QAIA,IAAAvI,EAFAuI,EAAAhM,EAAAmK,aAAA1b,YAAAud,IAGA,OAAAhM,EAOA,OAFA+P,EAAA1G,KAAA2G,IAAAhQ,EAAAsM,OAAAC,GAAAvM,EAAAyL,OAAAO,IACAhM,EAAA+F,GAAA,OAAA/F,EAAAsH,OAAA,mBAAA0E,EAAA+D,GACA/P,EAGA,SAAAiQ,GAAAjE,GACA,aAAAA,GACA8D,GAAA3b,KAAA6X,GACAnJ,EAAA8E,aAAAxT,MAAA,GACAA,MAEAkY,EAAAlY,KAAA,SAgDA,SAAA+b,KACA,SAAAC,EAAA3W,EAAAxH,GACA,OAAAA,EAAA8H,OAAAN,EAAAM,OAGA,IAGAiK,EACA/D,EAJAoQ,KACAC,KACAC,KAGA,IAAAvM,EAAA,EAAmBA,EAAA,GAAQA,IAE3B/D,EAAAoE,GAAA,IAAAL,IACAqM,EAAAnM,KAAA9P,KAAAtF,YAAAmR,EAAA,KACAqQ,EAAApM,KAAA9P,KAAAvF,OAAAoR,EAAA,KACAsQ,EAAArM,KAAA9P,KAAAvF,OAAAoR,EAAA,KACAsQ,EAAArM,KAAA9P,KAAAtF,YAAAmR,EAAA,KAOA,IAHAoQ,EAAAG,KAAAJ,GACAE,EAAAE,KAAAJ,GACAG,EAAAC,KAAAJ,GACApM,EAAA,EAAmBA,EAAA,GAAQA,IAC3BqM,EAAArM,GAAAgK,GAAAqC,EAAArM,IACAsM,EAAAtM,GAAAgK,GAAAsC,EAAAtM,IAEA,IAAAA,EAAA,EAAmBA,EAAA,GAAQA,IAC3BuM,EAAAvM,GAAAgK,GAAAuC,EAAAvM,IAGA5P,KAAAqc,aAAA,IAAA1C,OAAA,KAAAwC,EAAAhI,KAAA,cACAnU,KAAAsc,kBAAAtc,KAAAqc,aACArc,KAAAuc,mBAAA,IAAA5C,OACA,KAAAuC,EAAA/H,KAAA,SACA,KAEAnU,KAAAwc,wBAAA,IAAA7C,OACA,KAAAsC,EAAA9H,KAAA,SACA,KAiDA,SAAAsI,GAAAnF,GACA,OAAAD,EAAAC,GAAA,QA5CA1B,EAAA,mBACA,IAAA1Y,EAAA8C,KAAAsX,OACA,OAAApa,GAAA,KAAA4X,EAAA5X,EAAA,OAAAA,IAGA0Y,EAAA,wBACA,OAAA5V,KAAAsX,OAAA,MAGA1B,EAAA,uBACAA,EAAA,wBACAA,EAAA,4BAIAa,EAAA,YAIAU,EAAA,UAIAmC,GAAA,IAAAJ,IACAI,GAAA,KAAAX,GAAAJ,IACAe,GAAA,OAAAP,GAAAN,IACAa,GAAA,QAAAN,GAAAN,IACAY,GAAA,SAAAN,GAAAN,IAEA0B,IAAA,kBAAAK,IACAL,GAAA,gBAAAha,EAAAgW,GACAA,EAAAqE,IACA,IAAAra,EAAAuF,OAAA+I,EAAAgO,kBAAAtc,GAAAsX,EAAAtX,KAEAga,GAAA,cAAAha,EAAAgW,GACAA,EAAAqE,IAAA/L,EAAAgO,kBAAAtc,KAEAga,GAAA,aAAAha,EAAAgW,GACAA,EAAAqE,IAAAtW,SAAA/D,EAAA,MAWAsO,EAAAgO,kBAAA,SAAAtc,GACA,OAAAsX,EAAAtX,IAAAsX,EAAAtX,GAAA,cAKA,IAAAuc,GAAA5E,EAAA,eAwBA,SAAA6E,GAAA1f,GACA,IAAAib,EAAAjE,EAcA,OAZAhX,EAAA,KAAAA,GAAA,IACAgX,EAAArF,MAAA5C,UAAAgC,MAAAtE,KAAAgF,YAEA,GAAAzR,EAAA,IACAib,EAAA,IAAA3I,UAAAqN,IAAAzQ,MAAA,KAAA8H,IACA4D,SAAAK,EAAA2E,mBACA3E,EAAA4E,eAAA7f,IAGAib,EAAA,IAAA3I,UAAAqN,IAAAzQ,MAAA,KAAAuC,YAGAwJ,EAIA,SAAA6E,GAAA1F,EAAA9Z,EAAAC,GACA,IACAwf,EAAA,EAAAzf,EAAAC,EAEAyf,GAAA,EAAAN,GAAAtF,EAAA,EAAA2F,GAAAE,YAAA3f,GAAA,EAEA,OAAA0f,EAAAD,EAAA,EAIA,SAAAG,GAAA9F,EAAA/Z,EAAA8f,EAAA7f,EAAAC,GACA,IAGA6f,EACAC,EAJAC,GAAA,EAAAH,EAAA7f,GAAA,EACAigB,EAAAT,GAAA1F,EAAA9Z,EAAAC,GACAigB,EAAA,KAAAngB,EAAA,GAAAigB,EAAAC,EAeA,OAXAC,GAAA,EAEAH,EAAAd,GADAa,EAAAhG,EAAA,GACAoG,EACSA,EAAAjB,GAAAnF,IACTgG,EAAAhG,EAAA,EACAiG,EAAAG,EAAAjB,GAAAnF,KAEAgG,EAAAhG,EACAiG,EAAAG,IAIApG,KAAAgG,EACAI,UAAAH,GAIA,SAAAI,GAAA9R,EAAArO,EAAAC,GACA,IAEAmgB,EACAN,EAHAG,EAAAT,GAAAnR,EAAAyL,OAAA9Z,EAAAC,GACAF,EAAA2X,KAAAuC,OAAA5L,EAAA6R,YAAAD,EAAA,QAeA,OAXAlgB,EAAA,GACA+f,EAAAzR,EAAAyL,OAAA,EACAsG,EAAArgB,EAAAsgB,GAAAP,EAAA9f,EAAAC,IACSF,EAAAsgB,GAAAhS,EAAAyL,OAAA9Z,EAAAC,IACTmgB,EAAArgB,EAAAsgB,GAAAhS,EAAAyL,OAAA9Z,EAAAC,GACA6f,EAAAzR,EAAAyL,OAAA,IAEAgG,EAAAzR,EAAAyL,OACAsG,EAAArgB,IAIAA,KAAAqgB,EACAtG,KAAAgG,GAIA,SAAAO,GAAAvG,EAAA9Z,EAAAC,GACA,IAAAggB,EAAAT,GAAA1F,EAAA9Z,EAAAC,GACAqgB,EAAAd,GAAA1F,EAAA,EAAA9Z,EAAAC,GACA,OAAAgf,GAAAnF,GAAAmG,EAAAK,GAAA,EAyJA,SAAAC,GAAAC,EAAAzZ,GACA,OAAAyZ,EAAA/P,MAAA1J,EAAA,GAAA2J,OAAA8P,EAAA/P,MAAA,EAAA1J,IArJAqR,EAAA,0BACAA,EAAA,6BAIAa,EAAA,YACAA,EAAA,eAIAU,EAAA,UACAA,EAAA,aAIAmC,GAAA,IAAAX,IACAW,GAAA,KAAAX,GAAAJ,IACAe,GAAA,IAAAX,IACAW,GAAA,KAAAX,GAAAJ,IAEA8B,IAAA,4BACAja,EACA7C,EACAgW,EACA9M,GAEAlJ,EAAAkJ,EAAA4C,OAAA,MAAAqO,EAAAtX,KAsCAwV,EAAA,kBAEAA,EAAA,kBAAAhb,GACA,OAAAoF,KAAAgW,aAAA1a,YAAA0E,KAAApF,KAGAgb,EAAA,mBAAAhb,GACA,OAAAoF,KAAAgW,aAAA3a,cAAA2E,KAAApF,KAGAgb,EAAA,oBAAAhb,GACA,OAAAoF,KAAAgW,aAAA5a,SAAA4E,KAAApF,KAGAgb,EAAA,mBACAA,EAAA,sBAIAa,EAAA,WACAA,EAAA,eACAA,EAAA,kBAGAU,EAAA,UACAA,EAAA,cACAA,EAAA,iBAIAmC,GAAA,IAAAX,IACAW,GAAA,IAAAX,IACAW,GAAA,IAAAX,IACAW,GAAA,cAAAG,EAAAvJ,GACA,OAAAA,EAAA+N,iBAAAxE,KAEAH,GAAA,eAAAG,EAAAvJ,GACA,OAAAA,EAAAgO,mBAAAzE,KAEAH,GAAA,gBAAAG,EAAAvJ,GACA,OAAAA,EAAAiO,cAAA1E,KAGAY,IAAA,4BAAAja,EAAA7C,EAAAgW,EAAA9M,GACA,IAAA4W,EAAA9J,EAAAF,QAAAjJ,cAAAhK,EAAAqG,EAAA8M,EAAAxB,SAEA,MAAAsL,EACA9f,EAAAT,EAAAugB,EAEA/M,EAAAiD,GAAAzB,eAAA1R,IAIAia,IAAA,sBAAAja,EAAA7C,EAAAgW,EAAA9M,GACAlJ,EAAAkJ,GAAAiR,EAAAtX,KAkCA,IAAAge,GAAA,2DAAAhkB,MACA,KAEAikB,GAAA,8BAAAjkB,MAAA,KACAkkB,GAAA,uBAAAlkB,MAAA,KACAmkB,GAAAlF,GACAmF,GAAAnF,GACAoF,GAAApF,GAiRA,SAAAqF,KACA,SAAA1C,EAAA3W,EAAAxH,GACA,OAAAA,EAAA8H,OAAAN,EAAAM,OAGA,IAIAiK,EACA/D,EACA8S,EACAC,EACAC,EARAC,KACA7C,KACAC,KACAC,KAMA,IAAAvM,EAAA,EAAmBA,EAAA,EAAOA,IAE1B/D,EAAAoE,GAAA,QAAAhQ,IAAA2P,GACA+O,EAAA/E,GAAA5Z,KAAA1E,YAAAuQ,EAAA,KACA+S,EAAAhF,GAAA5Z,KAAA3E,cAAAwQ,EAAA,KACAgT,EAAAjF,GAAA5Z,KAAA5E,SAAAyQ,EAAA,KACAiT,EAAAhP,KAAA6O,GACA1C,EAAAnM,KAAA8O,GACA1C,EAAApM,KAAA+O,GACA1C,EAAArM,KAAA6O,GACAxC,EAAArM,KAAA8O,GACAzC,EAAArM,KAAA+O,GAIAC,EAAA1C,KAAAJ,GACAC,EAAAG,KAAAJ,GACAE,EAAAE,KAAAJ,GACAG,EAAAC,KAAAJ,GAEAhc,KAAA+e,eAAA,IAAApF,OAAA,KAAAwC,EAAAhI,KAAA,cACAnU,KAAAgf,oBAAAhf,KAAA+e,eACA/e,KAAAif,kBAAAjf,KAAA+e,eAEA/e,KAAAkf,qBAAA,IAAAvF,OACA,KAAAuC,EAAA/H,KAAA,SACA,KAEAnU,KAAAmf,0BAAA,IAAAxF,OACA,KAAAsC,EAAA9H,KAAA,SACA,KAEAnU,KAAAof,wBAAA,IAAAzF,OACA,KAAAmF,EAAA3K,KAAA,SACA,KAMA,SAAAkL,KACA,OAAArf,KAAAU,QAAA,OAqCA,SAAAb,GAAA4G,EAAA6Y,GACA1J,EAAAnP,EAAA,eACA,OAAAzG,KAAAgW,aAAAnW,SACAG,KAAAU,QACAV,KAAA+B,UACAud,KAiBA,SAAAC,GAAA9F,EAAAvJ,GACA,OAAAA,EAAAsP,eArDA5J,EAAA,uBACAA,EAAA,eAAAyJ,IACAzJ,EAAA,eANA,WACA,OAAA5V,KAAAU,SAAA,KAOAkV,EAAA,qBACA,SAAAyJ,GAAAjT,MAAApM,MAAA8U,EAAA9U,KAAA+B,UAAA,KAGA6T,EAAA,uBACA,MACA,GACAyJ,GAAAjT,MAAApM,MACA8U,EAAA9U,KAAA+B,UAAA,GACA+S,EAAA9U,KAAAyf,UAAA,KAIA7J,EAAA,qBACA,SAAA5V,KAAAU,QAAAoU,EAAA9U,KAAA+B,UAAA,KAGA6T,EAAA,uBACA,MACA,GACA5V,KAAAU,QACAoU,EAAA9U,KAAA+B,UAAA,GACA+S,EAAA9U,KAAAyf,UAAA,KAcA5f,GAAA,QACAA,GAAA,QAIA4W,EAAA,YAGAU,EAAA,WAQAmC,GAAA,IAAAiG,IACAjG,GAAA,IAAAiG,IACAjG,GAAA,IAAAX,IACAW,GAAA,IAAAX,IACAW,GAAA,IAAAX,IACAW,GAAA,KAAAX,GAAAJ,IACAe,GAAA,KAAAX,GAAAJ,IACAe,GAAA,KAAAX,GAAAJ,IAEAe,GAAA,MAAAV,IACAU,GAAA,QAAAT,IACAS,GAAA,MAAAV,IACAU,GAAA,QAAAT,IAEAuB,IAAA,UAAAQ,IACAR,IAAA,mBAAAha,EAAAgW,EAAA7C,GACA,IAAAmM,EAAAhI,EAAAtX,GACAgW,EAAAwE,IAAA,KAAA8E,EAAA,EAAAA,IAEAtF,IAAA,kBAAAha,EAAAgW,EAAA7C,GACAA,EAAAoM,MAAApM,EAAAF,QAAAlT,KAAAC,GACAmT,EAAAqM,UAAAxf,IAEAga,IAAA,mBAAAha,EAAAgW,EAAA7C,GACA6C,EAAAwE,IAAAlD,EAAAtX,GACAkQ,EAAAiD,GAAAvB,SAAA,IAEAoI,GAAA,eAAAha,EAAAgW,EAAA7C,GACA,IAAAsM,EAAAzf,EAAAuF,OAAA,EACAyQ,EAAAwE,IAAAlD,EAAAtX,EAAAiJ,OAAA,EAAAwW,IACAzJ,EAAAyE,IAAAnD,EAAAtX,EAAAiJ,OAAAwW,IACAvP,EAAAiD,GAAAvB,SAAA,IAEAoI,GAAA,iBAAAha,EAAAgW,EAAA7C,GACA,IAAAuM,EAAA1f,EAAAuF,OAAA,EACAoa,EAAA3f,EAAAuF,OAAA,EACAyQ,EAAAwE,IAAAlD,EAAAtX,EAAAiJ,OAAA,EAAAyW,IACA1J,EAAAyE,IAAAnD,EAAAtX,EAAAiJ,OAAAyW,EAAA,IACA1J,EAAA0E,IAAApD,EAAAtX,EAAAiJ,OAAA0W,IACAzP,EAAAiD,GAAAvB,SAAA,IAEAoI,GAAA,eAAAha,EAAAgW,EAAA7C,GACA,IAAAsM,EAAAzf,EAAAuF,OAAA,EACAyQ,EAAAwE,IAAAlD,EAAAtX,EAAAiJ,OAAA,EAAAwW,IACAzJ,EAAAyE,IAAAnD,EAAAtX,EAAAiJ,OAAAwW,MAEAzF,GAAA,iBAAAha,EAAAgW,EAAA7C,GACA,IAAAuM,EAAA1f,EAAAuF,OAAA,EACAoa,EAAA3f,EAAAuF,OAAA,EACAyQ,EAAAwE,IAAAlD,EAAAtX,EAAAiJ,OAAA,EAAAyW,IACA1J,EAAAyE,IAAAnD,EAAAtX,EAAAiJ,OAAAyW,EAAA,IACA1J,EAAA0E,IAAApD,EAAAtX,EAAAiJ,OAAA0W,MAWA,IAsCAC,GAjCAC,GAAAlI,EAAA,YAUAmI,IACAnkB,UA5iDAC,QAAA,gBACAC,QAAA,mBACAC,SAAA,eACAC,QAAA,oBACAC,SAAA,sBACAC,SAAA,KAwiDAb,gBAj7CAE,IAAA,YACAD,GAAA,SACAE,EAAA,aACAC,GAAA,eACAC,IAAA,sBACAC,KAAA,6BA66CAwP,YAh5CA,eAi5CAjO,QA34CA,KA44CAD,uBA34CA,UA44CAd,cAr4CAC,OAAA,QACAC,KAAA,SACAC,EAAA,gBACAC,GAAA,aACA/B,EAAA,WACAgC,GAAA,aACAC,EAAA,UACAC,GAAA,WACAC,EAAA,QACAC,GAAA,UACAoR,EAAA,SACAC,GAAA,WACApR,EAAA,UACAC,GAAA,YACAC,EAAA,SACAC,GAAA,YAw3CA1C,OAAA6gB,GACA5gB,YAAA6gB,GAEAhe,MAxlBAC,IAAA,EACAC,IAAA,GAylBArC,SAAAgjB,GACA9iB,YAAAgjB,GACAjjB,cAAAgjB,GAEA3e,cAhCA,iBAoCAygB,MACAC,MAGA,SAAAC,GAAAC,EAAAC,GACA,IAAA3Q,EACA4Q,EAAAtL,KAAA2G,IAAAyE,EAAA3a,OAAA4a,EAAA5a,QACA,IAAAiK,EAAA,EAAmBA,EAAA4Q,EAAU5Q,GAAA,EAC7B,GAAA0Q,EAAA1Q,KAAA2Q,EAAA3Q,GACA,OAAAA,EAGA,OAAA4Q,EAGA,SAAAC,GAAA7d,GACA,OAAAA,IAAA8G,cAAAnK,QAAA,SAAAqD,EAsCA,SAAA8d,GAAA7c,GACA,IAAA8c,EAAA,KAGA,QACA5W,IAAAoW,GAAAtc,SACA,IAAAyK,GACAA,GACAA,EAAAC,QAEA,IACAoS,EAAAX,GAAAY,MAEgBjjB,EAAA,OAAAA,CAAe,KAAWkG,GAC1Cgd,GAAAF,GACa,MAAAG,GAGbX,GAAAtc,GAAA,KAGA,OAAAsc,GAAAtc,GAMA,SAAAgd,GAAAje,EAAAme,GACA,IAAAC,EAqBA,OApBApe,KAEAoe,EADA3R,EAAA0R,GACAE,GAAAre,GAEApI,GAAAoI,EAAAme,IAKAf,GAAAgB,EAEA,oBAAAnN,iBAAAH,MAEAG,QAAAH,KACA,UAAA9Q,EAAA,2CAMAod,GAAAY,MAGA,SAAApmB,GAAAqJ,EAAA0P,GACA,UAAAA,EAAA,CACA,IAAArD,EACAwE,EAAAwL,GAEA,GADA3M,EAAAxP,KAAAF,EACA,MAAAsc,GAAAtc,GACA2Q,EACA,uBACA,2OAKAE,EAAAyL,GAAAtc,GAAAqd,aACa,SAAA3N,EAAA4N,aACb,SAAAhB,GAAA5M,EAAA4N,cACAzM,EAAAyL,GAAA5M,EAAA4N,cAAAD,YACiB,CAEjB,UADAhR,EAAAwQ,GAAAnN,EAAA4N,eAWA,OAPAf,GAAA7M,EAAA4N,gBACAf,GAAA7M,EAAA4N,kBAEAf,GAAA7M,EAAA4N,cAAArR,MACAjM,OACA0P,WAEA,KATAmB,EAAAxE,EAAAgR,QA0BA,OAbAf,GAAAtc,GAAA,IAAA+Q,EAAAH,EAAAC,EAAAnB,IAEA6M,GAAAvc,IACAuc,GAAAvc,GAAAud,QAAA,SAAAjG,GACA3gB,GAAA2gB,EAAAtX,KAAAsX,EAAA5H,UAOAsN,GAAAhd,GAEAsc,GAAAtc,GAIA,cADAsc,GAAAtc,GACA,KAkDA,SAAAod,GAAAre,GACA,IAAAsN,EAMA,GAJAtN,KAAAyQ,SAAAzQ,EAAAyQ,QAAAuN,QACAhe,IAAAyQ,QAAAuN,QAGAhe,EACA,OAAAod,GAGA,IAAApR,EAAAhM,GAAA,CAGA,GADAsN,EAAAwQ,GAAA9d,GAEA,OAAAsN,EAEAtN,MAGA,OA5MA,SAAAye,GAOA,IANA,IACAC,EACAC,EACArR,EACA9V,EAJAwV,EAAA,EAMAA,EAAAyR,EAAA1b,QAAA,CAKA,IAJAvL,EAAAqmB,GAAAY,EAAAzR,IAAAxV,MAAA,KACAknB,EAAAlnB,EAAAuL,OAEA4b,GADAA,EAAAd,GAAAY,EAAAzR,EAAA,KACA2R,EAAAnnB,MAAA,UACAknB,EAAA,IAEA,GADApR,EAAAwQ,GAAAtmB,EAAA6T,MAAA,EAAAqT,GAAAnN,KAAA,MAEA,OAAAjE,EAEA,GACAqR,GACAA,EAAA5b,QAAA2b,GACAjB,GAAAjmB,EAAAmnB,IAAAD,EAAA,EAGA,MAEAA,IAEA1R,IAEA,OAAAoQ,GA+KAwB,CAAA5e,GAOA,SAAA6e,GAAA9mB,GACA,IAAAgW,EACAtL,EAAA1K,EAAA6f,GAuCA,OArCAnV,IAAA,IAAAiL,EAAA3V,GAAAgW,WACAA,EACAtL,EAAAqV,IAAA,GAAArV,EAAAqV,IAAA,GACAA,GACArV,EAAAsV,IAAA,GAAAtV,EAAAsV,IAAAvC,GAAA/S,EAAAoV,IAAApV,EAAAqV,KACAC,GACAtV,EAAAuV,IAAA,GACAvV,EAAAuV,IAAA,IACA,KAAAvV,EAAAuV,MACA,IAAAvV,EAAAwV,KACA,IAAAxV,EAAAyV,KACA,IAAAzV,EAAA0V,KACAH,GACAvV,EAAAwV,IAAA,GAAAxV,EAAAwV,IAAA,GACAA,GACAxV,EAAAyV,IAAA,GAAAzV,EAAAyV,IAAA,GACAA,GACAzV,EAAA0V,IAAA,GAAA1V,EAAA0V,IAAA,IACAA,IACA,EAGAzK,EAAA3V,GAAA+mB,qBACA/Q,EAAA8J,IAAA9J,EAAAgK,MAEAhK,EAAAgK,IAEArK,EAAA3V,GAAAgnB,iBAAA,IAAAhR,IACAA,EAAAqK,IAEA1K,EAAA3V,GAAAinB,mBAAA,IAAAjR,IACAA,EAAAsK,IAGA3K,EAAA3V,GAAAgW,YAGAhW,EAKA,IAAAknB,GAAA,iJACAC,GAAA,6IACAC,GAAA,wBACAC,KACA,uCACA,iCACA,kCACA,4BAAiC,IACjC,2BACA,wBAA8B,IAC9B,4BACA,qBACA,6BACA,2BAAsC,IACtC,oBACA,kBAA6B,IAC7B,gBAA2B,IAG3BC,KACA,wCACA,uCACA,8BACA,sBACA,oCACA,mCACA,0BACA,oBACA,cAEAC,GAAA,qBAEA7Q,GAAA,0LACA8Q,IACAC,GAAA,EACAC,IAAA,EACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,IACAC,KAAA,KAIA,SAAAC,GAAAvP,GACA,IAAA3D,EACAxL,EAGA2e,EACAC,EACAC,EACAC,EALA5jB,EAAAiU,EAAAR,GACAvT,EAAAqiB,GAAApe,KAAAnE,IAAAwiB,GAAAre,KAAAnE,GAMA,GAAAE,EAAA,CAGA,IAFA8Q,EAAAiD,GAAArC,KAAA,EAEAtB,EAAA,EAAAxL,EAAA4d,GAAArc,OAA4CiK,EAAAxL,EAAOwL,IACnD,GAAAoS,GAAApS,GAAA,GAAAnM,KAAAjE,EAAA,KACAwjB,EAAAhB,GAAApS,GAAA,GACAmT,GAAA,IAAAf,GAAApS,GAAA,GACA,MAGA,SAAAoT,EAEA,YADAzP,EAAA/B,UAAA,GAGA,GAAAhS,EAAA,IACA,IAAAoQ,EAAA,EAAAxL,EAAA6d,GAAAtc,OAAgDiK,EAAAxL,EAAOwL,IACvD,GAAAqS,GAAArS,GAAA,GAAAnM,KAAAjE,EAAA,KAEAyjB,GAAAzjB,EAAA,SAAAyiB,GAAArS,GAAA,GACA,MAGA,SAAAqT,EAEA,YADA1P,EAAA/B,UAAA,GAIA,IAAAuR,GAAA,MAAAE,EAEA,YADA1P,EAAA/B,UAAA,GAGA,GAAAhS,EAAA,IACA,IAAAuiB,GAAAte,KAAAjE,EAAA,IAIA,YADA+T,EAAA/B,UAAA,GAFA0R,EAAA,IAMA3P,EAAAP,GAAAgQ,GAAAC,GAAA,KAAAC,GAAA,IACAC,GAAA5P,QAEAA,EAAA/B,UAAA,EAIA,SAAA4R,GACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEA,IAAAjf,GAeA,SAAA4e,GACA,IAAA/L,EAAAnT,SAAAkf,EAAA,IACA,OAAA/L,GAAA,GACA,IAAAA,EACSA,GAAA,IACT,KAAAA,EAEAA,EArBAqM,CAAAN,GACA9H,GAAAjS,QAAAga,GACAnf,SAAAof,EAAA,IACApf,SAAAqf,EAAA,IACArf,SAAAsf,EAAA,KAOA,OAJAC,GACAjf,EAAAqL,KAAA3L,SAAAuf,EAAA,KAGAjf,EAuDA,SAAAmf,GAAArQ,GACA,IACAsQ,EADArkB,EAAA6R,GAAA5N,KA3CA,SAAAhH,GAEA,OAAAA,EACA8C,QAAA,yBACAA,QAAA,gBACAA,QAAA,aACAA,QAAA,aAqCAukB,CAAAvQ,EAAAR,KAEA,GAAAvT,EAAA,CASA,GARAqkB,EAAAT,GACA5jB,EAAA,GACAA,EAAA,GACAA,EAAA,GACAA,EAAA,GACAA,EAAA,GACAA,EAAA,KA3CA,SAAAukB,EAAAC,EAAAzQ,GACA,GAAAwQ,EAAA,CAEA,IAAAE,EAAA5F,GAAA/U,QAAAya,GACAG,EAAA,IAAA1U,KACAwU,EAAA,GACAA,EAAA,GACAA,EAAA,IACAG,SACA,GAAAF,IAAAC,EAGA,OAFA5T,EAAAiD,GAAAjC,iBAAA,EACAiC,EAAA/B,UAAA,GACA,EAGA,SA8BA4S,CAAA5kB,EAAA,GAAAqkB,EAAAtQ,GACA,OAGAA,EAAAiH,GAAAqJ,EACAtQ,EAAAL,KAhCA,SAAAmR,EAAAC,EAAAC,GACA,GAAAF,EACA,OAAAlC,GAAAkC,GACS,GAAAC,EAET,SAEA,IAAA7c,EAAAtD,SAAAogB,EAAA,IACA5pB,EAAA8M,EAAA,IACA7K,GAAA6K,EAAA9M,GAAA,IACA,UAAAiC,EAAAjC,EAsBA6pB,CAAAhlB,EAAA,GAAAA,EAAA,GAAAA,EAAA,KAEA+T,EAAA3B,GAAAgL,GAAAxQ,MAAA,KAAAmH,EAAAiH,IACAjH,EAAA3B,GAAA6S,cAAAlR,EAAA3B,GAAA8S,gBAAAnR,EAAAL,MAEA5C,EAAAiD,GAAAlC,SAAA,OAEAkC,EAAA/B,UAAA,EA6CA,SAAAmT,GAAAtf,EAAAxH,EAAAyH,GACA,aAAAD,EACAA,EAEA,MAAAxH,EACAA,EAEAyH,EAoBA,SAAAsf,GAAArR,GACA,IAAA3D,EACAuI,EAEA0M,EACAC,EACAC,EAHA3kB,KAKA,IAAAmT,EAAA3B,GAAA,CAgCA,IA5BAiT,EA7BA,SAAAtR,GAEA,IAAAyR,EAAA,IAAAxV,KAAAd,EAAArK,OACA,OAAAkP,EAAA0R,SAEAD,EAAAlI,iBACAkI,EAAAE,cACAF,EAAAG,eAGAH,EAAAI,cAAAJ,EAAAK,WAAAL,EAAAM,WAmBAC,CAAAhS,GAGAA,EAAA+G,IAAA,MAAA/G,EAAAiH,GAAAG,KAAA,MAAApH,EAAAiH,GAAAE,KA0EA,SAAAnH,GACA,IAAApF,EAAAqX,EAAAjoB,EAAA8f,EAAA7f,EAAAC,EAAAgoB,EAAAC,EAAAC,EAGA,OADAxX,EAAAoF,EAAA+G,IACAsL,IAAA,MAAAzX,EAAA0X,GAAA,MAAA1X,EAAA2X,GACAtoB,EAAA,EACAC,EAAA,EAMA+nB,EAAAb,GACAxW,EAAAyX,GACArS,EAAAiH,GAAAC,IACAkD,GAAAoI,KAAA,KAAAzO,MAEA/Z,EAAAonB,GAAAxW,EAAA0X,EAAA,KACAxI,EAAAsH,GAAAxW,EAAA2X,EAAA,IACA,GAAAzI,EAAA,KACAqI,GAAA,KAGAloB,EAAA+V,EAAAF,QAAA2S,MAAAxoB,IACAC,EAAA8V,EAAAF,QAAA2S,MAAAvoB,IAEAkoB,EAAAhI,GAAAoI,KAAAvoB,EAAAC,GAEA+nB,EAAAb,GAAAxW,EAAA8X,GAAA1S,EAAAiH,GAAAC,IAAAkL,EAAArO,MAGA/Z,EAAAonB,GAAAxW,IAAAwX,EAAApoB,MAEA,MAAA4Q,EAAArR,IAEAugB,EAAAlP,EAAArR,GACA,GAAAugB,EAAA,KACAqI,GAAA,GAEa,MAAAvX,EAAA2S,GAEbzD,EAAAlP,EAAA2S,EAAAtjB,GACA2Q,EAAA2S,EAAA,GAAA3S,EAAA2S,EAAA,KACA4E,GAAA,IAIArI,EAAA7f,GAGAD,EAAA,GAAAA,EAAAsgB,GAAA2H,EAAAhoB,EAAAC,GACA6S,EAAAiD,GAAAoO,gBAAA,EACS,MAAA+D,EACTpV,EAAAiD,GAAAqO,kBAAA,GAEA6D,EAAArI,GAAAoI,EAAAjoB,EAAA8f,EAAA7f,EAAAC,GACA8V,EAAAiH,GAAAC,IAAAgL,EAAAnO,KACA/D,EAAA2S,WAAAT,EAAA/H,WAlIAyI,CAAA5S,GAIA,MAAAA,EAAA2S,aACAnB,EAAAJ,GAAApR,EAAAiH,GAAAC,IAAAoK,EAAApK,MAGAlH,EAAA2S,WAAAzJ,GAAAsI,IACA,IAAAxR,EAAA2S,cAEA5V,EAAAiD,GAAAmO,oBAAA,GAGAvJ,EAAAyE,GAAAmI,EAAA,EAAAxR,EAAA2S,YACA3S,EAAAiH,GAAAE,IAAAvC,EAAA+M,cACA3R,EAAAiH,GAAAG,IAAAxC,EAAAgN,cAQAvV,EAAA,EAAmBA,EAAA,SAAA2D,EAAAiH,GAAA5K,KAA+BA,EAClD2D,EAAAiH,GAAA5K,GAAAxP,EAAAwP,GAAAiV,EAAAjV,GAIA,KAAcA,EAAA,EAAOA,IACrB2D,EAAAiH,GAAA5K,GAAAxP,EAAAwP,GACA,MAAA2D,EAAAiH,GAAA5K,GAAA,IAAAA,EAAA,IAAA2D,EAAAiH,GAAA5K,GAKA,KAAA2D,EAAAiH,GAAAI,KACA,IAAArH,EAAAiH,GAAAK,KACA,IAAAtH,EAAAiH,GAAAM,KACA,IAAAvH,EAAAiH,GAAAO,MAEAxH,EAAA6S,UAAA,EACA7S,EAAAiH,GAAAI,IAAA,GAGArH,EAAA3B,IAAA2B,EAAA0R,QAAArI,GAp1CA,SAAA1f,EAAAvC,EAAAmC,EAAAF,EAAAI,EAAAP,EAAA4pB,GAGA,IAAAlO,EAYA,OAVAjb,EAAA,KAAAA,GAAA,GAEAib,EAAA,IAAA3I,KAAAtS,EAAA,IAAAvC,EAAAmC,EAAAF,EAAAI,EAAAP,EAAA4pB,GACAvO,SAAAK,EAAAiN,gBACAjN,EAAAmO,YAAAppB,IAGAib,EAAA,IAAA3I,KAAAtS,EAAAvC,EAAAmC,EAAAF,EAAAI,EAAAP,EAAA4pB,GAGAlO,IAq0CA/L,MACA,KACAhM,GAEA0kB,EAAAvR,EAAA0R,QACA1R,EAAA3B,GAAAuL,YACA5J,EAAA3B,GAAAuS,SAIA,MAAA5Q,EAAAL,MACAK,EAAA3B,GAAA6S,cAAAlR,EAAA3B,GAAA8S,gBAAAnR,EAAAL,MAGAK,EAAA6S,WACA7S,EAAAiH,GAAAI,IAAA,IAKArH,EAAA+G,SACA,IAAA/G,EAAA+G,GAAAxd,GACAyW,EAAA+G,GAAAxd,IAAAgoB,IAEAxU,EAAAiD,GAAAjC,iBAAA,IAwEA,SAAA6R,GAAA5P,GAEA,GAAAA,EAAAP,KAAAtE,EAAA6X,SAIA,GAAAhT,EAAAP,KAAAtE,EAAA8X,SAAA,CAIAjT,EAAAiH,MACAlK,EAAAiD,GAAA/C,OAAA,EAGA,IACAZ,EACAoU,EACA7J,EACA1T,EACAggB,EAGArV,EARA9R,EAAA,GAAAiU,EAAAR,GAMA2T,EAAApnB,EAAAqG,OACAghB,EAAA,EAMA,IAHAxM,EACAhE,EAAA5C,EAAAP,GAAAO,EAAAF,SAAA7T,MAAAgW,OAEA5F,EAAA,EAAmBA,EAAAuK,EAAAxU,OAAmBiK,IACtCnJ,EAAA0T,EAAAvK,IACAoU,GAAA1kB,EAAAE,MAAAka,GAAAjT,EAAA8M,SACA,OAEAkT,EAAAnnB,EAAA+J,OAAA,EAAA/J,EAAAgK,QAAA0a,KACAre,OAAA,GACA2K,EAAAiD,GAAA7C,YAAAZ,KAAA2W,GAEAnnB,IAAA2O,MACA3O,EAAAgK,QAAA0a,KAAAre,QAEAghB,GAAA3C,EAAAre,QAGAgQ,EAAAlP,IACAud,EACA1T,EAAAiD,GAAA/C,OAAA,EAEAF,EAAAiD,GAAA9C,aAAAX,KAAArJ,GAEA8T,GAAA9T,EAAAud,EAAAzQ,IACaA,EAAAxB,UAAAiS,GACb1T,EAAAiD,GAAA9C,aAAAX,KAAArJ,GAKA6J,EAAAiD,GAAA3C,cACA8V,EAAAC,EACArnB,EAAAqG,OAAA,GACA2K,EAAAiD,GAAA7C,YAAAZ,KAAAxQ,GAKAiU,EAAAiH,GAAAI,KAAA,KACA,IAAAtK,EAAAiD,GAAAvB,SACAuB,EAAAiH,GAAAI,IAAA,IAEAtK,EAAAiD,GAAAvB,aAAAjI,GAGAuG,EAAAiD,GAAApC,gBAAAoC,EAAAiH,GAAAvM,MAAA,GACAqC,EAAAiD,GAAA1T,SAAA0T,EAAAqM,UAEArM,EAAAiH,GAAAI,IAgBA,SAAA1K,EAAAtQ,EAAAC,GACA,IAAA+mB,EAEA,aAAA/mB,EAEAD,EAEA,MAAAsQ,EAAAvQ,aACAuQ,EAAAvQ,aAAAC,EAAAC,GACS,MAAAqQ,EAAA/P,OAETymB,EAAA1W,EAAA/P,KAAAN,KACAD,EAAA,KACAA,GAAA,IAEAgnB,GAAA,KAAAhnB,IACAA,EAAA,GAEAA,GAGAA,EArCAinB,CACAtT,EAAAF,QACAE,EAAAiH,GAAAI,IACArH,EAAAqM,WAKA,QADAxO,EAAAd,EAAAiD,GAAAnC,OAEAmC,EAAAiH,GAAAC,IAAAlH,EAAAF,QAAAyT,gBAAA1V,EAAAmC,EAAAiH,GAAAC,MAGAmK,GAAArR,GACAkO,GAAAlO,QA/EAqQ,GAAArQ,QAJAuP,GAAAvP,GAwMA,SAAAwT,GAAAxT,GACA,IAAAnT,EAAAmT,EAAAR,GACAnY,EAAA2Y,EAAAP,GAIA,OAFAO,EAAAF,QAAAE,EAAAF,SAAA4N,GAAA1N,EAAAN,IAEA,OAAA7S,QAAA2J,IAAAnP,GAAA,KAAAwF,EACA8R,GAAkCrB,WAAA,KAGlC,iBAAAzQ,IACAmT,EAAAR,GAAA3S,EAAAmT,EAAAF,QAAAhU,SAAAe,IAGAqT,EAAArT,GACA,IAAAkT,EAAAmO,GAAArhB,KACSmP,EAAAnP,GACTmT,EAAA3B,GAAAxR,EACSwO,EAAAhU,GA1GT,SAAA2Y,GACA,IAAAyT,EACAC,EACAC,EACAtX,EACAuX,EACAC,EACAC,GAAA,EAEA,OAAA9T,EAAAP,GAAArN,OAGA,OAFA2K,EAAAiD,GAAAvC,eAAA,OACAuC,EAAA3B,GAAA,IAAApC,KAAA2C,MAIA,IAAAvC,EAAA,EAAmBA,EAAA2D,EAAAP,GAAArN,OAAsBiK,IACzCuX,EAAA,EACAC,GAAA,EACAJ,EAAAvU,KAAsCc,GACtC,MAAAA,EAAA0R,UACA+B,EAAA/B,QAAA1R,EAAA0R,SAEA+B,EAAAhU,GAAAO,EAAAP,GAAApD,GACAuT,GAAA6D,GAEAzV,EAAAyV,KACAI,GAAA,GAIAD,GAAA7W,EAAA0W,GAAApW,cAGAuW,GAAA,GAAA7W,EAAA0W,GAAAvW,aAAA9K,OAEA2K,EAAA0W,GAAAM,MAAAH,EAEAE,EAaAF,EAAAD,IACAA,EAAAC,EACAF,EAAAD,IAbA,MAAAE,GACAC,EAAAD,GACAE,KAEAF,EAAAC,EACAF,EAAAD,EACAI,IACAC,GAAA,IAWAtX,EAAAwD,EAAA0T,GAAAD,GAkDAO,CAAAhU,GACS3Y,EACTuoB,GAAA5P,GAYA,SAAAA,GACA,IAAAnT,EAAAmT,EAAAR,GACA1D,EAAAjP,GACAmT,EAAA3B,GAAA,IAAApC,KAAAd,EAAArK,OACSkL,EAAAnP,GACTmT,EAAA3B,GAAA,IAAApC,KAAApP,EAAA4P,WACS,iBAAA5P,EAldT,SAAAmT,GACA,IAAAsG,EAAAqI,GAAAze,KAAA8P,EAAAR,IACA,OAAA8G,GAKAiJ,GAAAvP,IACA,IAAAA,EAAA/B,kBACA+B,EAAA/B,SAKAoS,GAAArQ,IACA,IAAAA,EAAA/B,kBACA+B,EAAA/B,SAKA+B,EAAAxB,QACAwB,EAAA/B,UAAA,EAGA9C,EAAA8Y,wBAAAjU,MAtBAA,EAAA3B,GAAA,IAAApC,MAAAqK,EAAA,IAgdA4N,CAAAlU,GACS3E,EAAAxO,IACTmT,EAAAiH,GAAA/K,EAAArP,EAAA6N,MAAA,YAAAiB,GACA,OAAA/K,SAAA+K,EAAA,MAEA0V,GAAArR,IACSzE,EAAA1O,GA1ET,SAAAmT,GACA,IAAAA,EAAA3B,GAAA,CAIA,IAAAhC,EAAAkH,EAAAvD,EAAAR,IACA2U,OAAA3d,IAAA6F,EAAA3P,IAAA2P,EAAAuI,KAAAvI,EAAA3P,IACAsT,EAAAiH,GAAA/K,GACAG,EAAA0H,KAAA1H,EAAA9U,MAAA4sB,EAAA9X,EAAAhQ,KAAAgQ,EAAA9P,OAAA8P,EAAA+X,OAAA/X,EAAAgY,aACA,SAAA1Y,GACA,OAAAA,GAAA/K,SAAA+K,EAAA,MAIA0V,GAAArR,IA6DAsU,CAAAtU,GACSjE,EAAAlP,GAETmT,EAAA3B,GAAA,IAAApC,KAAApP,GAEAsO,EAAA8Y,wBAAAjU,GA7BAuU,CAAAvU,GAGAhC,EAAAgC,KACAA,EAAA3B,GAAA,MAGA2B,IA0BA,SAAAnD,GAAAhQ,EAAAxF,EAAAsV,EAAAC,EAAA4X,GACA,IAAAziB,KA2BA,OAzBA,IAAA1K,IAAA,IAAAA,IACAuV,EAAAvV,EACAA,OAAAmP,IAGA,IAAAmG,IAAA,IAAAA,IACAC,EAAAD,EACAA,OAAAnG,IAIA+E,EAAA1O,IAAA6O,EAAA7O,IACAwO,EAAAxO,IAAA,IAAAA,EAAAuF,UAEAvF,OAAA2J,GAIAzE,EAAAwN,kBAAA,EACAxN,EAAA2f,QAAA3f,EAAA6N,OAAA4U,EACAziB,EAAA2N,GAAA/C,EACA5K,EAAAyN,GAAA3S,EACAkF,EAAA0N,GAAApY,EACA0K,EAAAyM,QAAA5B,EA7FA,SAAAoD,GACA,IAAA1D,EAAA,IAAAyD,EAAAmO,GAAAsF,GAAAxT,KAOA,OANA1D,EAAAuW,WAEAvW,EAAAmY,IAAA,OACAnY,EAAAuW,cAAArc,GAGA8F,EAuFAoY,CAAA3iB,GAGA,SAAAygB,GAAA3lB,EAAAxF,EAAAsV,EAAAC,GACA,OAAAC,GAAAhQ,EAAAxF,EAAAsV,EAAAC,GAAA,GAteAzB,EAAA8Y,wBAAA1T,EACA,iVAIA,SAAAP,GACAA,EAAA3B,GAAA,IAAApC,KAAA+D,EAAAR,IAAAQ,EAAA0R,QAAA,cAuLAvW,EAAA6X,SAAA,aAGA7X,EAAA8X,SAAA,aAySA,IAAA0B,GAAApU,EACA,qGACA,WACA,IAAAqU,EAAApC,GAAA3Z,MAAA,KAAAuC,WACA,OAAA3O,KAAAuR,WAAA4W,EAAA5W,UACA4W,EAAAnoB,UAAAmoB,EAEAjW,MAIAkW,GAAAtU,EACA,qGACA,WACA,IAAAqU,EAAApC,GAAA3Z,MAAA,KAAAuC,WACA,OAAA3O,KAAAuR,WAAA4W,EAAA5W,UACA4W,EAAAnoB,UAAAmoB,EAEAjW,MAUA,SAAAmW,GAAA1Y,EAAA2Y,GACA,IAAAzY,EAAAD,EAIA,GAHA,IAAA0Y,EAAA3iB,QAAAiJ,EAAA0Z,EAAA,MACAA,IAAA,KAEAA,EAAA3iB,OACA,OAAAogB,KAGA,IADAlW,EAAAyY,EAAA,GACA1Y,EAAA,EAAmBA,EAAA0Y,EAAA3iB,SAAoBiK,EACvC0Y,EAAA1Y,GAAA2B,YAAA+W,EAAA1Y,GAAAD,GAAAE,KACAA,EAAAyY,EAAA1Y,IAGA,OAAAC,EAgBA,IAIA0Y,IACA,OACA,UACA,QACA,OACA,MACA,OACA,SACA,SACA,eAyCA,SAAAC,GAAAC,GACA,IAAAxR,EAAAH,EAAA2R,GACAC,EAAAzR,EAAAK,MAAA,EACAqR,EAAA1R,EAAA2R,SAAA,EACAnuB,EAAAwc,EAAAnc,OAAA,EACA+tB,EAAA5R,EAAA1Z,MAAA0Z,EAAA6R,SAAA,EACAvf,EAAA0N,EAAAhX,KAAA,EACAS,EAAAuW,EAAArX,MAAA,EACAmC,EAAAkV,EAAAnX,QAAA,EACA2f,EAAAxI,EAAA0Q,QAAA,EACAoB,EAAA9R,EAAA2Q,aAAA,EAEA5nB,KAAAwR,SAlDA,SAAA7W,GACA,IAAAiI,EAEAgN,EADAoZ,GAAA,EAEA,IAAApmB,KAAAjI,EACA,GACAoU,EAAApU,EAAAiI,MAEA,IAAA0G,GAAAK,KAAA4e,GAAA3lB,IACA,MAAAjI,EAAAiI,IAAAsG,MAAAvO,EAAAiI,KAGA,SAIA,IAAAgN,EAAA,EAAmBA,EAAA2Y,GAAA5iB,SAAqBiK,EACxC,GAAAjV,EAAA4tB,GAAA3Y,IAAA,CACA,GAAAoZ,EACA,SAEAC,WAAAtuB,EAAA4tB,GAAA3Y,OAAA8H,EAAA/c,EAAA4tB,GAAA3Y,OACAoZ,GAAA,GAKA,SAuBAE,CAAAjS,GAGAjX,KAAAmpB,eACAJ,EACA,IAAAtJ,EACA,IAAA1d,EACA,IAAArB,EAAA,MAGAV,KAAAopB,OAAA7f,EAAA,EAAAsf,EAIA7oB,KAAAqpB,SAAA5uB,EAAA,EAAAkuB,EAAA,GAAAD,EAEA1oB,KAAAspB,SAEAtpB,KAAAqT,QAAA4N,KAEAjhB,KAAAupB,UAGA,SAAAC,GAAAta,GACA,OAAAA,aAAAsZ,GAGA,SAAAiB,GAAAnsB,GACA,OAAAA,EAAA,GACA,EAAA4X,KAAAwU,OAAA,EAAApsB,GAEA4X,KAAAwU,MAAApsB,GAuBA,SAAAsG,GAAA6C,EAAAkH,GACAiI,EAAAnP,EAAA,eACA,IAAA7C,EAAA5D,KAAA2pB,YACAtU,EAAA,IAKA,OAJAzR,EAAA,IACAA,KACAyR,EAAA,KAGAA,EACAP,KAAAlR,EAAA,OACA+J,EACAmH,IAAAlR,EAAA,QAKAA,GAAA,SACAA,GAAA,SAIA0V,GAAA,IAAAF,IACAE,GAAA,KAAAF,IACAgB,IAAA,mBAAAha,EAAAgW,EAAA7C,GACAA,EAAA0R,SAAA,EACA1R,EAAAL,KAAA0W,GAAAxQ,GAAAhZ,KAQA,IAAAypB,GAAA,kBAEA,SAAAD,GAAAE,EAAAxqB,GACA,IACAyqB,EACAC,EACAjoB,EAHAkoB,GAAA3qB,GAAA,IAAAE,MAAAsqB,GAKA,cAAAG,EACA,MAGAF,EAAAE,IAAAtkB,OAAA,OACAqkB,GAAAD,EAAA,IAAAvqB,MAAAqqB,MAAA,SAGA,KAFA9nB,EAAA,GAAAioB,EAAA,GAAAtS,EAAAsS,EAAA,KAEA,QAAAA,EAAA,GAAAjoB,MAIA,SAAAmoB,GAAA9pB,EAAA+pB,GACA,IAAAta,EAAAua,EACA,OAAAD,EAAAhX,QACAtD,EAAAsa,EAAAE,QACAD,GACA3W,EAAArT,IAAAmP,EAAAnP,GACAA,EAAA4P,UACA+V,GAAA3lB,GAAA4P,WAAAH,EAAAG,UAEAH,EAAA+B,GAAA0Y,QAAAza,EAAA+B,GAAA5B,UAAAoa,GACA1b,EAAA8E,aAAA3D,GAAA,GACAA,GAEAkW,GAAA3lB,GAAAmqB,QAIA,SAAAC,GAAA7vB,GAGA,OAAAua,KAAAwU,MAAA/uB,EAAAiX,GAAA6Y,qBA0JA,SAAAC,KACA,QAAA1qB,KAAAuR,WAAAvR,KAAAmT,QAAA,IAAAnT,KAAAoT,QApJA1E,EAAA8E,aAAA,aAwJA,IAAAmX,GAAA,wDAIAC,GAAA,sKAEA,SAAAC,GAAAzqB,EAAAwC,GACA,IAGAyS,EACAyV,EACAC,EALAtC,EAAAroB,EAEAZ,EAAA,KAkEA,OA7DAgqB,GAAAppB,GACAqoB,GACApC,GAAAjmB,EAAA+oB,cACArsB,EAAAsD,EAAAgpB,MACApsB,EAAAoD,EAAAipB,SAES/Z,EAAAlP,KAAA8I,OAAA9I,IACTqoB,KACA7lB,EACA6lB,EAAA7lB,IAAAxC,EAEAqoB,EAAAM,cAAA3oB,IAESZ,EAAAmrB,GAAAlnB,KAAArD,KACTiV,EAAA,MAAA7V,EAAA,QACAipB,GACAvrB,EAAA,EACAJ,EAAA4a,EAAAlY,EAAAmb,KAAAtF,EACAzY,EAAA8a,EAAAlY,EAAAob,KAAAvF,EACA1a,EAAA+c,EAAAlY,EAAAqb,KAAAxF,EACA5Y,EAAAib,EAAAlY,EAAAsb,KAAAzF,EACAgR,GAAA3O,EAAA+R,GAAA,IAAAjqB,EAAAub,MAAA1F,KAES7V,EAAAorB,GAAAnnB,KAAArD,KACTiV,EAAA,MAAA7V,EAAA,QACAipB,GACAvrB,EAAA8tB,GAAAxrB,EAAA,GAAA6V,GACArY,EAAAguB,GAAAxrB,EAAA,GAAA6V,GACAlH,EAAA6c,GAAAxrB,EAAA,GAAA6V,GACAvY,EAAAkuB,GAAAxrB,EAAA,GAAA6V,GACAzY,EAAAouB,GAAAxrB,EAAA,GAAA6V,GACA1a,EAAAqwB,GAAAxrB,EAAA,GAAA6V,GACA5Y,EAAAuuB,GAAAxrB,EAAA,GAAA6V,KAES,MAAAoT,EAETA,KAEA,iBAAAA,IACA,SAAAA,GAAA,OAAAA,KAEAsC,EAiDA,SAAAE,EAAA9C,GACA,IAAAtY,EACA,OAAAob,EAAA1Z,WAAA4W,EAAA5W,WAIA4W,EAAA+B,GAAA/B,EAAA8C,GACAA,EAAAC,SAAA/C,GACAtY,EAAAsb,GAAAF,EAAA9C,KAEAtY,EAAAsb,GAAAhD,EAAA8C,IACAlC,cAAAlZ,EAAAkZ,aACAlZ,EAAApV,QAAAoV,EAAApV,QAGAoV,IAZoBkZ,aAAA,EAAAtuB,OAAA,GApDpB2wB,CACArF,GAAA0C,EAAA9V,MACAoT,GAAA0C,EAAA/V,MAGA+V,MACApC,GAAA0E,EAAAhC,aACAN,EAAAzrB,EAAA+tB,EAAAtwB,QAGAqwB,EAAA,IAAAtC,GAAAC,GAEAe,GAAAppB,IAAA2O,EAAA3O,EAAA,aACA0qB,EAAAzX,QAAAjT,EAAAiT,SAGAmW,GAAAppB,IAAA2O,EAAA3O,EAAA,cACA0qB,EAAAtZ,SAAApR,EAAAoR,UAGAsZ,EAMA,SAAAE,GAAAK,EAAAhW,GAIA,IAAAxF,EAAAwb,GAAApC,WAAAoC,EAAA9rB,QAAA,UAEA,OAAA2J,MAAA2G,GAAA,EAAAA,GAAAwF,EAGA,SAAA8V,GAAAF,EAAA9C,GACA,IAAAtY,KAUA,OARAA,EAAApV,OACA0tB,EAAArtB,QAAAmwB,EAAAnwB,QAAA,IAAAqtB,EAAA7Q,OAAA2T,EAAA3T,QACA2T,EAAAZ,QAAArC,IAAAnY,EAAApV,OAAA,KAAA6wB,QAAAnD,MACAtY,EAAApV,OAGAoV,EAAAkZ,cAAAZ,GAAA8C,EAAAZ,QAAArC,IAAAnY,EAAApV,OAAA,KAEAoV,EAsBA,SAAA0b,GAAAC,EAAA3nB,GACA,gBAAAgP,EAAAxS,GACA,IAAAorB,EAmBA,OAjBA,OAAAprB,GAAA6I,OAAA7I,KACAmU,EACA3Q,EACA,YACAA,EACA,uDACAA,EACA,kGAGA4nB,EAAA5Y,EACAA,EAAAxS,EACAA,EAAAorB,GAIAC,GAAA1rB,KADA6qB,GAAAhY,EAAAxS,GACAmrB,GACAxrB,MAIA,SAAA0rB,GAAA7f,EAAA4c,EAAAkD,EAAAnY,GACA,IAAAuV,EAAAN,EAAAU,cACA5f,EAAAkgB,GAAAhB,EAAAW,OACA3uB,EAAAgvB,GAAAhB,EAAAY,SAEAxd,EAAA0F,YAKAiC,EAAA,MAAAA,KAEA/Y,GACAkhB,GAAA9P,EAAAqM,EAAArM,EAAA,SAAApR,EAAAkxB,GAEApiB,GACA0O,EAAApM,EAAA,OAAAqM,EAAArM,EAAA,QAAAtC,EAAAoiB,GAEA5C,GACAld,EAAA+F,GAAA0Y,QAAAze,EAAA+F,GAAA5B,UAAA+Y,EAAA4C,GAEAnY,GACA9E,EAAA8E,aAAA3H,EAAAtC,GAAA9O,IA5FAowB,GAAAlb,GAAA6Y,GAAAvc,UACA4e,GAAAe,QA9XA,WACA,OAAAf,GAAA1Y,MA4dA,IAAA6V,GAAAuD,GAAA,SACAM,GAAAN,IAAA,cAEA,SAAAO,GAAA1rB,GACA,uBAAAA,gBAAA2rB,OAiQA,SAAAC,GAAA3mB,EAAAxH,GACA,GAAAwH,EAAA8S,OAAAta,EAAAsa,OAGA,OAAA6T,GAAAnuB,EAAAwH,GAGA,IAGA4mB,EACAC,EAJAC,EAAA,IAAAtuB,EAAAyZ,OAAAjS,EAAAiS,SAAAzZ,EAAA/C,QAAAuK,EAAAvK,SAEAsxB,EAAA/mB,EAAAglB,QAAArC,IAAAmE,EAAA,UAeA,OAXAtuB,EAAAuuB,EAAA,GACAH,EAAA5mB,EAAAglB,QAAArC,IAAAmE,EAAA,YAEAD,GAAAruB,EAAAuuB,MAAAH,KAEAA,EAAA5mB,EAAAglB,QAAArC,IAAAmE,EAAA,YAEAD,GAAAruB,EAAAuuB,IAAAH,EAAAG,MAIAD,EAAAD,IAAA,EAmHA,SAAAhc,GAAAtN,GACA,IAAAypB,EAEA,YAAAtiB,IAAAnH,EACA5C,KAAAqT,QAAAuN,OAGA,OADAyL,EAAApL,GAAAre,MAEA5C,KAAAqT,QAAAgZ,GAEArsB,MA1HA0O,EAAA4d,cAAA,uBACA5d,EAAA6d,iBAAA,yBA6HA,IAAAC,GAAA1Y,EACA,kJACA,SAAAlR,GACA,YAAAmH,IAAAnH,EACA5C,KAAAgW,aAEAhW,KAAAkQ,OAAAtN,KAKA,SAAAoT,KACA,OAAAhW,KAAAqT,QAGA,IAAAoZ,GAAA,IACAC,GAAA,GAAAD,GACAE,GAAA,GAAAD,GACAE,GAAA,QAAAD,GAGA,SAAAE,GAAAC,EAAAC,GACA,OAAAD,EAAAC,OAGA,SAAAC,GAAA9vB,EAAAvC,EAAAmC,GAEA,OAAAI,EAAA,KAAAA,GAAA,EAEA,IAAAsS,KAAAtS,EAAA,IAAAvC,EAAAmC,GAAA8vB,GAEA,IAAApd,KAAAtS,EAAAvC,EAAAmC,GAAAkT,UAIA,SAAAid,GAAA/vB,EAAAvC,EAAAmC,GAEA,OAAAI,EAAA,KAAAA,GAAA,EAEAsS,KAAAqN,IAAA3f,EAAA,IAAAvC,EAAAmC,GAAA8vB,GAEApd,KAAAqN,IAAA3f,EAAAvC,EAAAmC,GAsbA,SAAAowB,GAAAzT,EAAAvJ,GACA,OAAAA,EAAAid,cAAA1T,GAeA,SAAA2T,KACA,IAIAxd,EACAxL,EALAipB,KACAC,KACAC,KACApR,KAGAzY,EAAA1D,KAAA0D,OAEA,IAAAkM,EAAA,EAAAxL,EAAAV,EAAAiC,OAAoCiK,EAAAxL,IAAOwL,EAC3C0d,EAAAxd,KAAA8J,GAAAlW,EAAAkM,GAAA/L,OACAwpB,EAAAvd,KAAA8J,GAAAlW,EAAAkM,GAAA7L,OACAwpB,EAAAzd,KAAA8J,GAAAlW,EAAAkM,GAAA9L,SAEAqY,EAAArM,KAAA8J,GAAAlW,EAAAkM,GAAA/L,OACAsY,EAAArM,KAAA8J,GAAAlW,EAAAkM,GAAA7L,OACAoY,EAAArM,KAAA8J,GAAAlW,EAAAkM,GAAA9L,SAGA9D,KAAAwtB,WAAA,IAAA7T,OAAA,KAAAwC,EAAAhI,KAAA,cACAnU,KAAAytB,eAAA,IAAA9T,OAAA,KAAA2T,EAAAnZ,KAAA,cACAnU,KAAA0tB,eAAA,IAAA/T,OAAA,KAAA0T,EAAAlZ,KAAA,cACAnU,KAAA2tB,iBAAA,IAAAhU,OACA,KAAA4T,EAAApZ,KAAA,SACA,KAcA,SAAAyZ,GAAAnnB,EAAAonB,GACAjY,EAAA,GAAAnP,IAAAd,QAAA,EAAAkoB,GAoFA,SAAAC,GAAA1tB,EAAA7C,EAAA8f,EAAA7f,EAAAC,GACA,IAAAswB,EACA,aAAA3tB,EACAud,GAAA3d,KAAAxC,EAAAC,GAAA6Z,MAEAyW,EAAAlQ,GAAAzd,EAAA5C,EAAAC,GACAF,EAAAwwB,IACAxwB,EAAAwwB,GAMA,SAAAvI,EAAAjoB,EAAA8f,EAAA7f,EAAAC,GACA,IAAAuwB,EAAA5Q,GAAAoI,EAAAjoB,EAAA8f,EAAA7f,EAAAC,GACA0a,EAAAyE,GAAAoR,EAAA1W,KAAA,EAAA0W,EAAAtQ,WAKA,OAHA1d,KAAAsX,KAAAa,EAAA2E,kBACA9c,KAAAlF,MAAAqd,EAAA+M,eACAllB,KAAAmY,OAAAgN,cACAnlB,MAXA2J,KAAA3J,KAAAI,EAAA7C,EAAA8f,EAAA7f,EAAAC,IAjYAmY,EAAA,mBACAA,EAAA,oBACAA,EAAA,qBACAA,EAAA,sBACAA,EAAA,yBAEAA,EAAA,4BACAA,EAAA,0BACAA,EAAA,2BACAA,EAAA,4BAEA0D,GAAA,IAAA4T,IACA5T,GAAA,KAAA4T,IACA5T,GAAA,MAAA4T,IACA5T,GAAA,OAmOA,SAAAG,EAAAvJ,GACA,OAAAA,EAAA+d,cAAAxU,KAnOAH,GAAA,QAsOA,SAAAG,EAAAvJ,GACA,OAAAA,EAAAge,gBAAAzU,KArOAW,IAAA,wCACAha,EACAgW,EACA7C,EACA9M,GAEA,IAAA2K,EAAAmC,EAAAF,QAAA8a,UAAA/tB,EAAAqG,EAAA8M,EAAAxB,SACAX,EACAd,EAAAiD,GAAAnC,MAEAd,EAAAiD,GAAAzC,WAAA1Q,IAIAkZ,GAAA,IAAAL,IACAK,GAAA,KAAAL,IACAK,GAAA,MAAAL,IACAK,GAAA,OAAAL,IACAK,GAAA,KAsNA,SAAAG,EAAAvJ,GACA,OAAAA,EAAAke,sBAAAnV,KArNAmB,IAAA,uBAAAK,IACAL,IAAA,eAAAha,EAAAgW,EAAA7C,EAAA9M,GACA,IAAAjH,EACA+T,EAAAF,QAAA+a,uBACA5uB,EAAAY,EAAAZ,MAAA+T,EAAAF,QAAA+a,uBAGA7a,EAAAF,QAAAnP,oBACAkS,EAAAqE,IAAAlH,EAAAF,QAAAnP,oBAAA9D,EAAAZ,GAEA4W,EAAAqE,IAAAtW,SAAA/D,EAAA,MA4OAwV,EAAA,wBACA,OAAA5V,KAAAwlB,WAAA,MAGA5P,EAAA,wBACA,OAAA5V,KAAAquB,cAAA,MAOAT,GAAA,mBACAA,GAAA,oBACAA,GAAA,sBACAA,GAAA,uBAIAnX,EAAA,iBACAA,EAAA,oBAIAU,EAAA,cACAA,EAAA,iBAIAmC,GAAA,IAAAJ,IACAI,GAAA,IAAAJ,IACAI,GAAA,KAAAX,GAAAJ,IACAe,GAAA,KAAAX,GAAAJ,IACAe,GAAA,OAAAP,GAAAN,IACAa,GAAA,OAAAP,GAAAN,IACAa,GAAA,QAAAN,GAAAN,IACAY,GAAA,QAAAN,GAAAN,IAEA2B,IAAA,wCACAja,EACA7C,EACAgW,EACA9M,GAEAlJ,EAAAkJ,EAAA4C,OAAA,MAAAqO,EAAAtX,KAGAia,IAAA,oBAAAja,EAAA7C,EAAAgW,EAAA9M,GACAlJ,EAAAkJ,GAAAiI,EAAAgO,kBAAAtc,KAsEAwV,EAAA,sBAIAa,EAAA,eAIAU,EAAA,aAIAmC,GAAA,IAAAhB,GACA8B,GAAA,aAAAha,EAAAgW,GACAA,EAAAsE,IAAA,GAAAhD,EAAAtX,GAAA,KAaAwV,EAAA,0BAIAa,EAAA,YAGAU,EAAA,UAIAmC,GAAA,IAAAX,IACAW,GAAA,KAAAX,GAAAJ,IACAe,GAAA,cAAAG,EAAAvJ,GAEA,OAAAuJ,EACAvJ,EAAAoe,yBAAApe,EAAAqe,cACAre,EAAAse,iCAGApU,IAAA,UAAAO,IACAP,GAAA,cAAAha,EAAAgW,GACAA,EAAAuE,IAAAjD,EAAAtX,EAAAZ,MAAAmZ,IAAA,MAKA,IAAA8V,GAAA1W,EAAA,WAIAnC,EAAA,qCAIAa,EAAA,mBAGAU,EAAA,eAIAmC,GAAA,MAAAR,IACAQ,GAAA,OAAAd,IACA4B,IAAA,uBAAAha,EAAAgW,EAAA7C,GACAA,EAAA2S,WAAAxO,EAAAtX,KAiBAwV,EAAA,yBAIAa,EAAA,cAIAU,EAAA,aAIAmC,GAAA,IAAAX,IACAW,GAAA,KAAAX,GAAAJ,IACA6B,IAAA,UAAAS,IAIA,IAAA6T,GAAA3W,EAAA,cAIAnC,EAAA,yBAIAa,EAAA,cAIAU,EAAA,aAIAmC,GAAA,IAAAX,IACAW,GAAA,KAAAX,GAAAJ,IACA6B,IAAA,UAAAU,IAIA,IA8CArU,GAAAkoB,GA9CAC,GAAA7W,EAAA,cA+CA,IA3CAnC,EAAA,mBACA,SAAA5V,KAAA4nB,cAAA,OAGAhS,EAAA,wBACA,SAAA5V,KAAA4nB,cAAA,MAGAhS,EAAA,6BACAA,EAAA,0BACA,UAAA5V,KAAA4nB,gBAEAhS,EAAA,2BACA,WAAA5V,KAAA4nB,gBAEAhS,EAAA,4BACA,WAAA5V,KAAA4nB,gBAEAhS,EAAA,6BACA,WAAA5V,KAAA4nB,gBAEAhS,EAAA,8BACA,WAAA5V,KAAA4nB,gBAEAhS,EAAA,+BACA,WAAA5V,KAAA4nB,gBAKAnR,EAAA,oBAIAU,EAAA,kBAIAmC,GAAA,IAAAR,GAAAR,GACAgB,GAAA,KAAAR,GAAAP,IACAe,GAAA,MAAAR,GAAAN,IAGA/R,GAAA,OAAwBA,GAAAd,QAAA,EAAmBc,IAAA,IAC3C6S,GAAA7S,GAAAwS,IAGA,SAAA4V,GAAAzuB,EAAAgW,GACAA,EAAA2E,IAAArD,EAAA,UAAAtX,IAGA,IAAAqG,GAAA,IAAqBA,GAAAd,QAAA,EAAmBc,IAAA,IACxC2T,GAAA3T,GAAAooB,IAGAF,GAAA5W,EAAA,mBAIAnC,EAAA,oBACAA,EAAA,qBAYA,IAAAkZ,GAAAxb,EAAArH,UAgHA,SAAA8iB,GAAAzvB,GACA,OAAAA,EA/GAwvB,GAAA9G,OACA8G,GAAA/yB,SAjoCA,SAAAizB,EAAAC,GAEA,IAAAtgB,UAAAhJ,SA1GA,SAAAvF,GACA,OACAqT,EAAArT,IACAmP,EAAAnP,IACA0rB,GAAA1rB,IACAkP,EAAAlP,IAgDA,SAAAA,GACA,IAAA8uB,EAAAtgB,EAAAxO,GACA+uB,GAAA,EAOA,OANAD,IACAC,EAGiB,IAFjB/uB,EAAAgvB,OAAA,SAAAC,GACA,OAAA/f,EAAA+f,IAAAvD,GAAA1rB,KACiBuF,QAEjBupB,GAAAC,EAxDAG,CAAAlvB,IAOA,SAAAA,GACA,IA4BAwP,EA5BA2f,EAAAzgB,EAAA1O,KAAA6O,EAAA7O,GACAovB,GAAA,EACAC,GACA,QACA,OACA,IACA,SACA,QACA,IACA,OACA,MACA,IACA,QACA,OACA,IACA,QACA,OACA,IACA,UACA,SACA,IACA,UACA,SACA,IACA,eACA,cACA,MAKA,IAAA7f,EAAA,EAAmBA,EAAA6f,EAAA9pB,OAAuBiK,GAAA,EAE1C4f,KAAAzgB,EAAA3O,EADAqvB,EAAA7f,IAIA,OAAA2f,GAAAC,EA3CAE,CAAAtvB,IACA,OAAAA,QACA2J,IAAA3J,EAkGAuvB,CAAAhhB,UAAA,KACAqgB,EAAArgB,UAAA,GACAsgB,OAAAllB,GA5CA,SAAA3J,GACA,IAUAwP,EAVA2f,EAAAzgB,EAAA1O,KAAA6O,EAAA7O,GACAovB,GAAA,EACAC,GACA,UACA,UACA,UACA,WACA,WACA,YAKA,IAAA7f,EAAA,EAAmBA,EAAA6f,EAAA9pB,OAAuBiK,GAAA,EAE1C4f,KAAAzgB,EAAA3O,EADAqvB,EAAA7f,IAIA,OAAA2f,GAAAC,EA0BaI,CAAAjhB,UAAA,MACbsgB,EAAAtgB,UAAA,GACAqgB,OAAAjlB,IAKA,IAAA1F,EAAA2qB,GAAAjJ,KACA8J,EAAA3F,GAAA7lB,EAAArE,MAAA8vB,QAAA,OACAl1B,EAAA8T,EAAAqhB,eAAA/vB,KAAA6vB,IAAA,WACA/xB,EACAmxB,IACA9iB,EAAA8iB,EAAAr0B,IACAq0B,EAAAr0B,GAAA+O,KAAA3J,KAAAqE,GACA4qB,EAAAr0B,IAEA,OAAAoF,KAAApF,OACAkD,GAAAkC,KAAAgW,aAAAja,SAAAnB,EAAAoF,KAAA+lB,GAAA1hB,MA2mCAyqB,GAAAzE,MAvmCA,WACA,WAAA/W,EAAAtT,OAumCA8uB,GAAA1E,KA/hCA,SAAAhqB,EAAAiH,EAAA2oB,GACA,IAAAC,EAAAC,EAAApyB,EAEA,IAAAkC,KAAAuR,UACA,OAAAY,IAKA,KAFA8d,EAAA/F,GAAA9pB,EAAAJ,OAEAuR,UACA,OAAAY,IAOA,OAJA+d,EAAA,KAAAD,EAAAtG,YAAA3pB,KAAA2pB,aAEAtiB,EAAAwP,EAAAxP,IAGA,WACAvJ,EAAAkuB,GAAAhsB,KAAAiwB,GAAA,GACA,MACA,YACAnyB,EAAAkuB,GAAAhsB,KAAAiwB,GACA,MACA,cACAnyB,EAAAkuB,GAAAhsB,KAAAiwB,GAAA,EACA,MACA,aACAnyB,GAAAkC,KAAAiwB,GAAA,IACA,MACA,aACAnyB,GAAAkC,KAAAiwB,GAAA,IACA,MACA,WACAnyB,GAAAkC,KAAAiwB,GAAA,KACA,MACA,UACAnyB,GAAAkC,KAAAiwB,EAAAC,GAAA,MACA,MACA,WACApyB,GAAAkC,KAAAiwB,EAAAC,GAAA,OACA,MACA,QACApyB,EAAAkC,KAAAiwB,EAGA,OAAAD,EAAAlyB,EAAAyZ,EAAAzZ,IAk/BAgxB,GAAAqB,MA1uBA,SAAA9oB,GACA,IAAA2nB,EAAAoB,EAEA,QAAArmB,KADA1C,EAAAwP,EAAAxP,KACA,gBAAAA,IAAArH,KAAAuR,UACA,OAAAvR,KAKA,OAFAowB,EAAApwB,KAAAmT,OAAA8Z,GAAAD,GAEA3lB,GACA,WACA2nB,EAAAoB,EAAApwB,KAAAsX,OAAA,SACA,MACA,cACA0X,EACAoB,EACApwB,KAAAsX,OACAtX,KAAAlF,QAAAkF,KAAAlF,QAAA,IACA,GACA,EACA,MACA,YACAk0B,EAAAoB,EAAApwB,KAAAsX,OAAAtX,KAAAlF,QAAA,OACA,MACA,WACAk0B,EACAoB,EACApwB,KAAAsX,OACAtX,KAAAlF,QACAkF,KAAAmY,OAAAnY,KAAAqd,UAAA,GACA,EACA,MACA,cACA2R,EACAoB,EACApwB,KAAAsX,OACAtX,KAAAlF,QACAkF,KAAAmY,QAAAnY,KAAAqwB,aAAA,MACA,EACA,MACA,UACA,WACArB,EAAAoB,EAAApwB,KAAAsX,OAAAtX,KAAAlF,QAAAkF,KAAAmY,OAAA,KACA,MACA,WACA6W,EAAAhvB,KAAA4R,GAAA5B,UACAgf,GACArC,GACAE,GACAmC,GAAAhvB,KAAAmT,OAAA,EAAAnT,KAAA2pB,YAAA+C,IACAC,IAEA,EACA,MACA,aACAqC,EAAAhvB,KAAA4R,GAAA5B,UACAgf,GAAAtC,GAAAG,GAAAmC,EAAAtC,IAAA,EACA,MACA,aACAsC,EAAAhvB,KAAA4R,GAAA5B,UACAgf,GAAAvC,GAAAI,GAAAmC,EAAAvC,IAAA,EAMA,OAFAzsB,KAAA4R,GAAA0Y,QAAA0E,GACAtgB,EAAA8E,aAAAxT,MAAA,GACAA,MAyqBA8uB,GAAAl0B,OAp5BA,SAAA01B,GACAA,IACAA,EAAAtwB,KAAA0qB,QACAhc,EAAA6d,iBACA7d,EAAA4d,eAEA,IAAAxuB,EAAAoY,EAAAlW,KAAAswB,GACA,OAAAtwB,KAAAgW,aAAAvW,WAAA3B,IA84BAgxB,GAAAnc,KA34BA,SAAAqc,EAAArsB,GACA,OACA3C,KAAAuR,YACAkC,EAAAub,MAAAzd,WAAAwU,GAAAiJ,GAAAzd,WAEAsZ,IAAmCnY,GAAA1S,KAAA2S,KAAAqc,IACnC9e,OAAAlQ,KAAAkQ,UACAqgB,UAAA5tB,GAEA3C,KAAAgW,aAAA1K,eAm4BAwjB,GAAA0B,QA/3BA,SAAA7tB,GACA,OAAA3C,KAAA2S,KAAAoT,KAAApjB,IA+3BAmsB,GAAApc,GA53BA,SAAAsc,EAAArsB,GACA,OACA3C,KAAAuR,YACAkC,EAAAub,MAAAzd,WAAAwU,GAAAiJ,GAAAzd,WAEAsZ,IAAmClY,KAAA3S,KAAA0S,GAAAsc,IACnC9e,OAAAlQ,KAAAkQ,UACAqgB,UAAA5tB,GAEA3C,KAAAgW,aAAA1K,eAo3BAwjB,GAAA2B,MAh3BA,SAAA9tB,GACA,OAAA3C,KAAA0S,GAAAqT,KAAApjB,IAg3BAmsB,GAAA5W,IAnjIA,SAAA7Q,GAEA,OAAA8E,EAAAnM,KADAqH,EAAAwP,EAAAxP,KAEArH,KAAAqH,KAEArH,MA+iIA8uB,GAAA4B,UAznBA,WACA,OAAApgB,EAAAtQ,MAAA2Q,UAynBAme,GAAAxD,QA7mCA,SAAAlrB,EAAAiH,GACA,IAAAspB,EAAAld,EAAArT,KAAA2lB,GAAA3lB,GACA,SAAAJ,KAAAuR,YAAAof,EAAApf,aAIA,iBADAlK,EAAAwP,EAAAxP,IAAA,eAEArH,KAAAgQ,UAAA2gB,EAAA3gB,UAEA2gB,EAAA3gB,UAAAhQ,KAAAqqB,QAAAyF,QAAAzoB,GAAA2I,YAqmCA8e,GAAA5D,SAjmCA,SAAA9qB,EAAAiH,GACA,IAAAspB,EAAAld,EAAArT,KAAA2lB,GAAA3lB,GACA,SAAAJ,KAAAuR,YAAAof,EAAApf,aAIA,iBADAlK,EAAAwP,EAAAxP,IAAA,eAEArH,KAAAgQ,UAAA2gB,EAAA3gB,UAEAhQ,KAAAqqB,QAAA8F,MAAA9oB,GAAA2I,UAAA2gB,EAAA3gB,YAylCA8e,GAAA8B,UArlCA,SAAAje,EAAAD,EAAArL,EAAAwpB,GACA,IAAAC,EAAArd,EAAAd,KAAAoT,GAAApT,GACAoe,EAAAtd,EAAAf,KAAAqT,GAAArT,GACA,SAAA1S,KAAAuR,WAAAuf,EAAAvf,WAAAwf,EAAAxf,aAKA,OAFAsf,KAAA,MAEA,GACA7wB,KAAAsrB,QAAAwF,EAAAzpB,IACArH,KAAAkrB,SAAA4F,EAAAzpB,MACA,MAAAwpB,EAAA,GACA7wB,KAAAkrB,SAAA6F,EAAA1pB,IACArH,KAAAsrB,QAAAyF,EAAA1pB,KAykCAynB,GAAAkC,OArkCA,SAAA5wB,EAAAiH,GACA,IACA4pB,EADAN,EAAAld,EAAArT,KAAA2lB,GAAA3lB,GAEA,SAAAJ,KAAAuR,YAAAof,EAAApf,aAIA,iBADAlK,EAAAwP,EAAAxP,IAAA,eAEArH,KAAAgQ,YAAA2gB,EAAA3gB,WAEAihB,EAAAN,EAAA3gB,UAEAhQ,KAAAqqB,QAAAyF,QAAAzoB,GAAA2I,WAAAihB,GACAA,GAAAjxB,KAAAqqB,QAAA8F,MAAA9oB,GAAA2I,aAyjCA8e,GAAAoC,cApjCA,SAAA9wB,EAAAiH,GACA,OAAArH,KAAAgxB,OAAA5wB,EAAAiH,IAAArH,KAAAsrB,QAAAlrB,EAAAiH,IAojCAynB,GAAAqC,eAjjCA,SAAA/wB,EAAAiH,GACA,OAAArH,KAAAgxB,OAAA5wB,EAAAiH,IAAArH,KAAAkrB,SAAA9qB,EAAAiH,IAijCAynB,GAAAvd,QAxoBA,WACA,OAAAA,EAAAvR,OAwoBA8uB,GAAAtC,QACAsC,GAAA5e,UACA4e,GAAA9Y,cACA8Y,GAAAvZ,IAAA6S,GACA0G,GAAAjT,IAAAqM,GACA4G,GAAAsC,aA1oBA,WACA,OAAArhB,KAAwBO,EAAAtQ,QA0oBxB8uB,GAAAja,IA1jIA,SAAAxN,EAAAwQ,GACA,oBAAAxQ,EAAA,CAEA,IACAuI,EADAyhB,EAzFA,SAAAC,GACA,IACAnrB,EADAkB,KAEA,IAAAlB,KAAAmrB,EACAviB,EAAAuiB,EAAAnrB,IACAkB,EAAAyI,MAA4B4G,KAAAvQ,EAAAiR,SAAAF,EAAA/Q,KAM5B,OAHAkB,EAAA+U,KAAA,SAAA/W,EAAAxH,GACA,OAAAwH,EAAA+R,SAAAvZ,EAAAuZ,WAEA/P,EA8EAkqB,CADAlqB,EAAAyP,EAAAzP,IAGA,IAAAuI,EAAA,EAAuBA,EAAAyhB,EAAA1rB,OAAwBiK,IAC/C5P,KAAAqxB,EAAAzhB,GAAA8G,MAAArP,EAAAgqB,EAAAzhB,GAAA8G,YAIA,GAAAvK,EAAAnM,KADAqH,EAAAwP,EAAAxP,KAEA,OAAArH,KAAAqH,GAAAwQ,GAGA,OAAA7X,MA6iIA8uB,GAAAgB,QA/zBA,SAAAzoB,GACA,IAAA2nB,EAAAoB,EAEA,QAAArmB,KADA1C,EAAAwP,EAAAxP,KACA,gBAAAA,IAAArH,KAAAuR,UACA,OAAAvR,KAKA,OAFAowB,EAAApwB,KAAAmT,OAAA8Z,GAAAD,GAEA3lB,GACA,WACA2nB,EAAAoB,EAAApwB,KAAAsX,OAAA,KACA,MACA,cACA0X,EAAAoB,EACApwB,KAAAsX,OACAtX,KAAAlF,QAAAkF,KAAAlF,QAAA,EACA,GAEA,MACA,YACAk0B,EAAAoB,EAAApwB,KAAAsX,OAAAtX,KAAAlF,QAAA,GACA,MACA,WACAk0B,EAAAoB,EACApwB,KAAAsX,OACAtX,KAAAlF,QACAkF,KAAAmY,OAAAnY,KAAAqd,WAEA,MACA,cACA2R,EAAAoB,EACApwB,KAAAsX,OACAtX,KAAAlF,QACAkF,KAAAmY,QAAAnY,KAAAqwB,aAAA,IAEA,MACA,UACA,WACArB,EAAAoB,EAAApwB,KAAAsX,OAAAtX,KAAAlF,QAAAkF,KAAAmY,QACA,MACA,WACA6W,EAAAhvB,KAAA4R,GAAA5B,UACAgf,GAAAnC,GACAmC,GAAAhvB,KAAAmT,OAAA,EAAAnT,KAAA2pB,YAAA+C,IACAC,IAEA,MACA,aACAqC,EAAAhvB,KAAA4R,GAAA5B,UACAgf,GAAAnC,GAAAmC,EAAAtC,IACA,MACA,aACAsC,EAAAhvB,KAAA4R,GAAA5B,UACAgf,GAAAnC,GAAAmC,EAAAvC,IAMA,OAFAzsB,KAAA4R,GAAA0Y,QAAA0E,GACAtgB,EAAA8E,aAAAxT,MAAA,GACAA,MAowBA8uB,GAAAjD,YACAiD,GAAA0C,QAjrBA,WACA,IAAA72B,EAAAqF,KACA,OACArF,EAAA2c,OACA3c,EAAAG,QACAH,EAAAwd,OACAxd,EAAAiF,OACAjF,EAAAmF,SACAnF,EAAAgtB,SACAhtB,EAAAitB,gBAyqBAkH,GAAA2C,SArqBA,WACA,IAAA92B,EAAAqF,KACA,OACA0oB,MAAA/tB,EAAA2c,OACA7c,OAAAE,EAAAG,QACAqd,KAAAxd,EAAAwd,OACAzX,MAAA/F,EAAA+F,QACAqB,QAAApH,EAAAoH,UACA0d,QAAA9kB,EAAA8kB,UACAsJ,aAAApuB,EAAAouB,iBA6pBA+F,GAAA4C,OAvrBA,WACA,WAAAliB,KAAAxP,KAAAgQ,YAurBA8e,GAAA6C,YAx+BA,SAAAC,GACA,IAAA5xB,KAAAuR,UACA,YAEA,IAAAlB,GAAA,IAAAuhB,EACAj3B,EAAA0V,EAAArQ,KAAAqqB,QAAAha,MAAArQ,KACA,OAAArF,EAAA2c,OAAA,GAAA3c,EAAA2c,OAAA,KACApB,EACAvb,EACA0V,EACA,iCACA,gCAGAlE,EAAAqD,KAAAvD,UAAA0lB,aAEAthB,EACArQ,KAAA0xB,SAAAC,cAEA,IAAAniB,KAAAxP,KAAAgQ,UAAA,GAAAhQ,KAAA2pB,YAAA,KACAgI,cACApyB,QAAA,IAAA2W,EAAAvb,EAAA,MAGAub,EACAvb,EACA0V,EAAA,8DA+8BAye,GAAA+C,QAr8BA,WACA,IAAA7xB,KAAAuR,UACA,2BAAAvR,KAAA+S,GAAA,OAEA,IAEA+e,EACAxa,EAEAya,EALAhc,EAAA,SACAic,EAAA,GAcA,OATAhyB,KAAAiyB,YACAlc,EAAA,IAAA/V,KAAA2pB,YAAA,gCACAqI,EAAA,KAEAF,EAAA,IAAA/b,EAAA,MACAuB,EAAA,GAAAtX,KAAAsX,QAAAtX,KAAAsX,QAAA,qBAEAya,EAAAC,EAAA,OAEAhyB,KAAApF,OAAAk3B,EAAAxa,EAHA,wBAGAya,IAm7BA,oBAAAG,QAAA,MAAAA,OAAAC,MACArD,GAAAoD,OAAAC,IAAA,0CACA,gBAAAnyB,KAAApF,SAAA,MAGAk0B,GAAAsD,OAjqBA,WAEA,OAAApyB,KAAAuR,UAAAvR,KAAA2xB,cAAA,MAgqBA7C,GAAA5iB,SAp/BA,WACA,OAAAlM,KAAAqqB,QAAAna,OAAA,MAAAtV,OAAA,qCAo/BAk0B,GAAAuD,KArsBA,WACA,OAAAnd,KAAAuC,MAAAzX,KAAAgQ,UAAA,MAqsBA8e,GAAA9e,QA1sBA,WACA,OAAAhQ,KAAA4R,GAAA5B,UAAA,KAAAhQ,KAAAoT,SAAA,IA0sBA0b,GAAAwD,aAppBA,WACA,OACAlyB,MAAAJ,KAAA+S,GACAnY,OAAAoF,KAAAgT,GACA9C,OAAAlQ,KAAAqT,QACA0U,MAAA/nB,KAAAmT,OACAhD,OAAAnQ,KAAA+R,UA+oBA+c,GAAAyD,QAzgBA,WACA,IAAA3iB,EACAxL,EACAyO,EACAnP,EAAA1D,KAAAgW,aAAAtS,OACA,IAAAkM,EAAA,EAAAxL,EAAAV,EAAAiC,OAAoCiK,EAAAxL,IAAOwL,EAAA,CAI3C,GAFAiD,EAAA7S,KAAAqqB,QAAAyF,QAAA,OAAA9f,UAEAtM,EAAAkM,GAAAjM,OAAAkP,MAAAnP,EAAAkM,GAAA5L,MACA,OAAAN,EAAAkM,GAAA/L,KAEA,GAAAH,EAAAkM,GAAA5L,OAAA6O,MAAAnP,EAAAkM,GAAAjM,MACA,OAAAD,EAAAkM,GAAA/L,KAIA,UAyfAirB,GAAA0D,UAtfA,WACA,IAAA5iB,EACAxL,EACAyO,EACAnP,EAAA1D,KAAAgW,aAAAtS,OACA,IAAAkM,EAAA,EAAAxL,EAAAV,EAAAiC,OAAoCiK,EAAAxL,IAAOwL,EAAA,CAI3C,GAFAiD,EAAA7S,KAAAqqB,QAAAyF,QAAA,OAAA9f,UAEAtM,EAAAkM,GAAAjM,OAAAkP,MAAAnP,EAAAkM,GAAA5L,MACA,OAAAN,EAAAkM,GAAA9L,OAEA,GAAAJ,EAAAkM,GAAA5L,OAAA6O,MAAAnP,EAAAkM,GAAAjM,MACA,OAAAD,EAAAkM,GAAA9L,OAIA,UAseAgrB,GAAA2D,QAneA,WACA,IAAA7iB,EACAxL,EACAyO,EACAnP,EAAA1D,KAAAgW,aAAAtS,OACA,IAAAkM,EAAA,EAAAxL,EAAAV,EAAAiC,OAAoCiK,EAAAxL,IAAOwL,EAAA,CAI3C,GAFAiD,EAAA7S,KAAAqqB,QAAAyF,QAAA,OAAA9f,UAEAtM,EAAAkM,GAAAjM,OAAAkP,MAAAnP,EAAAkM,GAAA5L,MACA,OAAAN,EAAAkM,GAAA7L,KAEA,GAAAL,EAAAkM,GAAA5L,OAAA6O,MAAAnP,EAAAkM,GAAAjM,MACA,OAAAD,EAAAkM,GAAA7L,KAIA,UAmdA+qB,GAAA4D,QAhdA,WACA,IAAA9iB,EACAxL,EACAuuB,EACA9f,EACAnP,EAAA1D,KAAAgW,aAAAtS,OACA,IAAAkM,EAAA,EAAAxL,EAAAV,EAAAiC,OAAoCiK,EAAAxL,IAAOwL,EAM3C,GALA+iB,EAAAjvB,EAAAkM,GAAAjM,OAAAD,EAAAkM,GAAA5L,MAAA,KAGA6O,EAAA7S,KAAAqqB,QAAAyF,QAAA,OAAA9f,UAGAtM,EAAAkM,GAAAjM,OAAAkP,MAAAnP,EAAAkM,GAAA5L,OACAN,EAAAkM,GAAA5L,OAAA6O,MAAAnP,EAAAkM,GAAAjM,MAEA,OACA3D,KAAAsX,OAAA5I,EAAAhL,EAAAkM,GAAAjM,OAAA2T,QAAAqb,EACAjvB,EAAAkM,GAAAhM,OAKA,OAAA5D,KAAAsX,QA0bAwX,GAAAxX,KAAAqF,GACAmS,GAAAzX,WAvkHA,WACA,OAAAA,EAAArX,KAAAsX,SAukHAwX,GAAAtJ,SAjUA,SAAAplB,GACA,OAAA0tB,GAAAnkB,KACA3J,KACAI,EACAJ,KAAAzC,OACAyC,KAAAqd,UACArd,KAAAgW,aAAAgQ,MAAAxoB,IACAwC,KAAAgW,aAAAgQ,MAAAvoB,MA2TAqxB,GAAAT,YAvTA,SAAAjuB,GACA,OAAA0tB,GAAAnkB,KACA3J,KACAI,EACAJ,KAAA8oB,UACA9oB,KAAAqwB,aACA,EACA,IAiTAvB,GAAAlG,QAAAkG,GAAAnG,SA/OA,SAAAvoB,GACA,aAAAA,EACA8U,KAAAsC,MAAAxX,KAAAlF,QAAA,MACAkF,KAAAlF,MAAA,GAAAsF,EAAA,GAAAJ,KAAAlF,QAAA,IA6OAg0B,GAAAh0B,MAAAghB,GACAgT,GAAA1W,YA9tHA,WACA,OAAAA,GAAApY,KAAAsX,OAAAtX,KAAAlF,UA8tHAg0B,GAAAvxB,KAAAuxB,GAAAjG,MA/6GA,SAAAzoB,GACA,IAAA7C,EAAAyC,KAAAgW,aAAAzY,KAAAyC,MACA,aAAAI,EAAA7C,EAAAyC,KAAAgoB,IAAA,GAAA5nB,EAAA7C,GAAA,MA86GAuxB,GAAAhG,QAAAgG,GAAA8D,SA36GA,SAAAxyB,GACA,IAAA7C,EAAAogB,GAAA3d,KAAA,KAAAzC,KACA,aAAA6C,EAAA7C,EAAAyC,KAAAgoB,IAAA,GAAA5nB,EAAA7C,GAAA,MA06GAuxB,GAAAjR,YA1SA,WACA,IAAAgV,EAAA7yB,KAAAgW,aAAAgQ,MACA,OAAAnI,GAAA7d,KAAAsX,OAAAub,EAAAr1B,IAAAq1B,EAAAp1B,MAySAqxB,GAAAgE,gBAtSA,WACA,IAAAD,EAAA7yB,KAAAgW,aAAAgQ,MACA,OAAAnI,GAAA7d,KAAAwlB,WAAAqN,EAAAr1B,IAAAq1B,EAAAp1B,MAqSAqxB,GAAAiE,eApTA,WACA,OAAAlV,GAAA7d,KAAAsX,OAAA,MAoTAwX,GAAAkE,sBAjTA,WACA,OAAAnV,GAAA7d,KAAAquB,cAAA,MAiTAS,GAAA3W,KAAAsW,GACAK,GAAA7uB,IAAA6uB,GAAAvlB,KA5pGA,SAAAnJ,GACA,IAAAJ,KAAAuR,UACA,aAAAnR,EAAAJ,KAAAmS,IAEA,IAAAlS,EAAAD,KAAAmT,OAAAnT,KAAA4R,GAAAuL,YAAAnd,KAAA4R,GAAAuS,SACA,aAAA/jB,GACAA,EAzNA,SAAAA,EAAA8P,GACA,uBAAA9P,EACAA,EAGA8I,MAAA9I,GAKA,iBADAA,EAAA8P,EAAA9F,cAAAhK,IAEAA,EAGA,KARA+D,SAAA/D,EAAA,IAmNA6yB,CAAA7yB,EAAAJ,KAAAgW,cACAhW,KAAAgoB,IAAA5nB,EAAAH,EAAA,MAEAA,GAopGA6uB,GAAAzR,QAhpGA,SAAAjd,GACA,IAAAJ,KAAAuR,UACA,aAAAnR,EAAAJ,KAAAmS,IAEA,IAAAkL,GAAArd,KAAAC,MAAA,EAAAD,KAAAgW,aAAAgQ,MAAAxoB,KAAA,EACA,aAAA4C,EAAAid,EAAArd,KAAAgoB,IAAA5nB,EAAAid,EAAA,MA4oGAyR,GAAAuB,WAzoGA,SAAAjwB,GACA,IAAAJ,KAAAuR,UACA,aAAAnR,EAAAJ,KAAAmS,IAOA,SAAA/R,EAAA,CACA,IAAAid,EAjOA,SAAAjd,EAAA8P,GACA,uBAAA9P,EACA8P,EAAA9F,cAAAhK,GAAA,KAEA8I,MAAA9I,GAAA,KAAAA,EA6NA8yB,CAAA9yB,EAAAJ,KAAAgW,cACA,OAAAhW,KAAAC,IAAAD,KAAAC,MAAA,EAAAod,IAAA,GAEA,OAAArd,KAAAC,OAAA,GA6nGA6uB,GAAApR,UAhMA,SAAAtd,GACA,IAAAsd,EACAxI,KAAAwU,OACA1pB,KAAAqqB,QAAAyF,QAAA,OAAA9vB,KAAAqqB,QAAAyF,QAAA,gBACA,EACA,aAAA1vB,EAAAsd,EAAA1d,KAAAgoB,IAAA5nB,EAAAsd,EAAA,MA4LAoR,GAAAlvB,KAAAkvB,GAAApuB,MAAAuf,GACA6O,GAAAhvB,OAAAgvB,GAAA/sB,QAAA2sB,GACAI,GAAAnH,OAAAmH,GAAArP,QAAAmP,GACAE,GAAAlH,YAAAkH,GAAA/F,aAAA4F,GACAG,GAAAnF,UA7mDA,SAAAvpB,EAAA+yB,EAAAC,GACA,IACAC,EADAzvB,EAAA5D,KAAAoT,SAAA,EAEA,IAAApT,KAAAuR,UACA,aAAAnR,EAAAJ,KAAAmS,IAEA,SAAA/R,EAAA,CACA,oBAAAA,GAEA,WADAA,EAAAwpB,GAAAxQ,GAAAhZ,IAEA,OAAAJ,UAEakV,KAAAC,IAAA/U,GAAA,KAAAgzB,IACbhzB,GAAA,IAwBA,OAtBAJ,KAAAmT,QAAAggB,IACAE,EAAA7I,GAAAxqB,OAEAA,KAAAoT,QAAAhT,EACAJ,KAAAmT,QAAA,EACA,MAAAkgB,GACArzB,KAAAgoB,IAAAqL,EAAA,KAEAzvB,IAAAxD,KACA+yB,GAAAnzB,KAAAszB,kBACA5H,GACA1rB,KACA6qB,GAAAzqB,EAAAwD,EAAA,KACA,GACA,GAEiB5D,KAAAszB,oBACjBtzB,KAAAszB,mBAAA,EACA5kB,EAAA8E,aAAAxT,MAAA,GACAA,KAAAszB,kBAAA,OAGAtzB,KAEA,OAAAA,KAAAmT,OAAAvP,EAAA4mB,GAAAxqB,OAukDA8uB,GAAAze,IArjDA,SAAA8iB,GACA,OAAAnzB,KAAA2pB,UAAA,EAAAwJ,IAqjDArE,GAAAvE,MAljDA,SAAA4I,GASA,OARAnzB,KAAAmT,SACAnT,KAAA2pB,UAAA,EAAAwJ,GACAnzB,KAAAmT,QAAA,EAEAggB,GACAnzB,KAAA6rB,SAAArB,GAAAxqB,MAAA,MAGAA,MA0iDA8uB,GAAAyE,UAviDA,WACA,SAAAvzB,KAAAkT,KACAlT,KAAA2pB,UAAA3pB,KAAAkT,MAAA,WACS,oBAAAlT,KAAA+S,GAAA,CACT,IAAAygB,EAAA5J,GAAAzQ,GAAAnZ,KAAA+S,IACA,MAAAygB,EACAxzB,KAAA2pB,UAAA6J,GAEAxzB,KAAA2pB,UAAA,MAGA,OAAA3pB,MA6hDA8uB,GAAA2E,qBA1hDA,SAAArzB,GACA,QAAAJ,KAAAuR,YAGAnR,IAAA2lB,GAAA3lB,GAAAupB,YAAA,GAEA3pB,KAAA2pB,YAAAvpB,GAAA,QAqhDA0uB,GAAA4E,MAlhDA,WACA,OACA1zB,KAAA2pB,YAAA3pB,KAAAqqB,QAAAvvB,MAAA,GAAA6uB,aACA3pB,KAAA2pB,YAAA3pB,KAAAqqB,QAAAvvB,MAAA,GAAA6uB,aAghDAmF,GAAAmD,QAt/CA,WACA,QAAAjyB,KAAAuR,YAAAvR,KAAAmT,QAs/CA2b,GAAA6E,YAn/CA,WACA,QAAA3zB,KAAAuR,WAAAvR,KAAAmT,QAm/CA2b,GAAApE,SACAoE,GAAA/G,MAAA2C,GACAoE,GAAA8E,SAzFA,WACA,OAAA5zB,KAAAmT,OAAA,UAyFA2b,GAAA+E,SAtFA,WACA,OAAA7zB,KAAAmT,OAAA,iCAsFA2b,GAAAgF,MAAAhgB,EACA,kDACA2a,IAEAK,GAAAr0B,OAAAqZ,EACA,mDACAgI,IAEAgT,GAAApG,MAAA5U,EACA,iDACA6I,IAEAmS,GAAAkD,KAAAle,EACA,2GA3lDA,SAAA1T,EAAA+yB,GACA,aAAA/yB,GACA,iBAAAA,IACAA,MAGAJ,KAAA2pB,UAAAvpB,EAAA+yB,GAEAnzB,OAEAA,KAAA2pB,cAolDAmF,GAAAiF,aAAAjgB,EACA,0GAniDA,WACA,IAAAzE,EAAArP,KAAAg0B,eACA,OAAAh0B,KAAAg0B,cAGA,IACA7L,EADA7iB,KAcA,OAXAmN,EAAAnN,EAAAtF,OACAsF,EAAAyhB,GAAAzhB,IAEAkV,IACA2N,EAAA7iB,EAAA6N,OAAAlD,EAAA3K,EAAAkV,IAAAuL,GAAAzgB,EAAAkV,IACAxa,KAAAg0B,cACAh0B,KAAAuR,WAtOA,SAAA0iB,EAAAC,EAAAC,GACA,IAGAvkB,EAHA0C,EAAA4C,KAAA2G,IAAAoY,EAAAtuB,OAAAuuB,EAAAvuB,QACAyuB,EAAAlf,KAAAC,IAAA8e,EAAAtuB,OAAAuuB,EAAAvuB,QACA0uB,EAAA,EAEA,IAAAzkB,EAAA,EAAmBA,EAAA0C,EAAS1C,KAE5BukB,GAAAF,EAAArkB,KAAAskB,EAAAtkB,KACAukB,GAAAzc,EAAAuc,EAAArkB,MAAA8H,EAAAwc,EAAAtkB,MAEAykB,IAGA,OAAAA,EAAAD,EAyNAE,CAAAhvB,EAAAkV,GAAA2N,EAAAqJ,WAAA,GAEAxxB,KAAAg0B,eAAA,EAGAh0B,KAAAg0B,gBAgiDA,IAAAO,GAAA3f,EAAA3I,UAuCA,SAAAuoB,GAAA55B,EAAA65B,EAAAC,EAAAC,GACA,IAAAzkB,EAAA+Q,KACA5Q,EAAAJ,IAAA4E,IAAA8f,EAAAF,GACA,OAAAvkB,EAAAwkB,GAAArkB,EAAAzV,GAGA,SAAAg6B,GAAAh6B,EAAA65B,EAAAC,GAQA,GAPAplB,EAAA1U,KACA65B,EAAA75B,EACAA,OAAAmP,GAGAnP,KAAA,GAEA,MAAA65B,EACA,OAAAD,GAAA55B,EAAA65B,EAAAC,EAAA,SAGA,IAAA9kB,EACAilB,KACA,IAAAjlB,EAAA,EAAmBA,EAAA,GAAQA,IAC3BilB,EAAAjlB,GAAA4kB,GAAA55B,EAAAgV,EAAA8kB,EAAA,SAEA,OAAAG,EAWA,SAAAC,GAAAC,EAAAn6B,EAAA65B,EAAAC,GACA,kBAAAK,GACAzlB,EAAA1U,KACA65B,EAAA75B,EACAA,OAAAmP,GAGAnP,KAAA,KAGA65B,EADA75B,EAAAm6B,EAEAA,GAAA,EAEAzlB,EAAA1U,KACA65B,EAAA75B,EACAA,OAAAmP,GAGAnP,KAAA,IAGA,IAEAgV,EAFAM,EAAA+Q,KACA+T,EAAAD,EAAA7kB,EAAA8V,MAAAxoB,IAAA,EAEAq3B,KAEA,SAAAJ,EACA,OAAAD,GAAA55B,GAAA65B,EAAAO,GAAA,EAAAN,EAAA,OAGA,IAAA9kB,EAAA,EAAmBA,EAAA,EAAOA,IAC1BilB,EAAAjlB,GAAA4kB,GAAA55B,GAAAgV,EAAAolB,GAAA,EAAAN,EAAA,OAEA,OAAAG,EAxGAN,GAAAx4B,SAj9IA,SAAA6G,EAAAiJ,EAAAxH,GACA,IAAAvG,EAAAkC,KAAAi1B,UAAAryB,IAAA5C,KAAAi1B,UAAA,SACA,OAAA9oB,EAAArO,KAAA6L,KAAAkC,EAAAxH,GAAAvG,GAg9IAy2B,GAAA/4B,eAt1IA,SAAAoH,GACA,IAAAhI,EAAAoF,KAAAk1B,gBAAAtyB,GACAuyB,EAAAn1B,KAAAk1B,gBAAAtyB,EAAAwyB,eAEA,OAAAx6B,IAAAu6B,EACAv6B,GAGAoF,KAAAk1B,gBAAAtyB,GAAAuyB,EACA31B,MAAAgW,GACA/F,IAAA,SAAA4lB,GACA,MACA,SAAAA,GACA,OAAAA,GACA,OAAAA,GACA,SAAAA,EAEAA,EAAApnB,MAAA,GAEAonB,IAEAlhB,KAAA,IAEAnU,KAAAk1B,gBAAAtyB,KAg0IA2xB,GAAAjpB,YA3zIA,WACA,OAAAtL,KAAAs1B,cA2zIAf,GAAAl3B,QArzIA,SAAAC,GACA,OAAA0C,KAAAu1B,SAAAh2B,QAAA,KAAAjC,IAqzIAi3B,GAAAl1B,SAAA0vB,GACAwF,GAAA90B,WAAAsvB,GACAwF,GAAAj4B,aAjyIA,SAAAgB,EAAAqF,EAAArD,EAAAuD,GACA,IAAA/E,EAAAkC,KAAAw1B,cAAAl2B,GACA,OAAA6M,EAAArO,GACAA,EAAAR,EAAAqF,EAAArD,EAAAuD,GACA/E,EAAAyB,QAAA,MAAAjC,IA8xIAi3B,GAAAkB,WA3xIA,SAAArL,EAAAtsB,GACA,IAAAlD,EAAAoF,KAAAw1B,cAAApL,EAAA,mBACA,OAAAje,EAAAvR,KAAAkD,GAAAlD,EAAA2E,QAAA,MAAAzB,IA0xIAy2B,GAAA1f,IA7iJA,SAAAtB,GACA,IAAAX,EAAAhD,EACA,IAAAA,KAAA2D,EACAxE,EAAAwE,EAAA3D,KAEAzD,EADAyG,EAAAW,EAAA3D,IAEA5P,KAAA4P,GAAAgD,EAEA5S,KAAA,IAAA4P,GAAAgD,GAIA5S,KAAAkhB,QAAA3N,EAIAvT,KAAAwuB,+BAAA,IAAA7U,QACA3Z,KAAAsuB,wBAAAoH,QAAA11B,KAAAuuB,cAAAmH,QACA,IACA,UAAwBA,SA2hJxBnB,GAAA7wB,KA1qBA,SAAA/I,EAAAC,GACA,IAAAgV,EACAxL,EACA+T,EACAzU,EAAA1D,KAAA21B,OAAA1U,GAAA,MAAA0U,MACA,IAAA/lB,EAAA,EAAAxL,EAAAV,EAAAiC,OAAoCiK,EAAAxL,IAAOwL,EAAA,CAC3C,cAAAlM,EAAAkM,GAAAjM,OACA,aAEAwU,EAAAzJ,EAAAhL,EAAAkM,GAAAjM,OAAAmsB,QAAA,OACApsB,EAAAkM,GAAAjM,MAAAwU,EAAAnI,UAIA,cAAAtM,EAAAkM,GAAA5L,OACA,gBACAN,EAAAkM,GAAA5L,MAAA,IACA,MACA,aAEAmU,EAAAzJ,EAAAhL,EAAAkM,GAAA5L,OAAA8rB,QAAA,OAAA9f,UACAtM,EAAAkM,GAAA5L,MAAAmU,EAAAnI,WAIA,OAAAtM,GAkpBA6wB,GAAApG,UA/oBA,SAAAoE,EAAA33B,EAAAuV,GACA,IAAAP,EACAxL,EAEAP,EACAE,EACAD,EAHAJ,EAAA1D,KAAA0D,OAMA,IAFA6uB,IAAA6C,cAEAxlB,EAAA,EAAAxL,EAAAV,EAAAiC,OAAoCiK,EAAAxL,IAAOwL,EAK3C,GAJA/L,EAAAH,EAAAkM,GAAA/L,KAAAuxB,cACArxB,EAAAL,EAAAkM,GAAA7L,KAAAqxB,cACAtxB,EAAAJ,EAAAkM,GAAA9L,OAAAsxB,cAEAjlB,EACA,OAAAvV,GACA,QACA,SACA,UACA,GAAAmJ,IAAAwuB,EACA,OAAA7uB,EAAAkM,GAEA,MAEA,WACA,GAAA/L,IAAA0uB,EACA,OAAA7uB,EAAAkM,GAEA,MAEA,YACA,GAAA9L,IAAAyuB,EACA,OAAA7uB,EAAAkM,QAIa,IAAA/L,EAAAE,EAAAD,GAAAwF,QAAAipB,IAAA,EACb,OAAA7uB,EAAAkM,IA2mBA2kB,GAAAzN,gBAtmBA,SAAA1V,EAAAkG,GACA,IAAAqb,EAAAvhB,EAAAzN,OAAAyN,EAAApN,MAAA,KACA,YAAA+F,IAAAuN,EACA5I,EAAA0C,EAAAzN,OAAA2T,OAEA5I,EAAA0C,EAAAzN,OAAA2T,UAAAlG,EAAAxN,QAAA+uB,GAkmBA4B,GAAApH,cAjgBA,SAAA1T,GAIA,OAHA1K,EAAA/O,KAAA,mBACAotB,GAAAzjB,KAAA3J,MAEAyZ,EAAAzZ,KAAA0tB,eAAA1tB,KAAAwtB,YA8fA+G,GAAAtG,cAzgBA,SAAAxU,GAIA,OAHA1K,EAAA/O,KAAA,mBACAotB,GAAAzjB,KAAA3J,MAEAyZ,EAAAzZ,KAAAytB,eAAAztB,KAAAwtB,YAsgBA+G,GAAArG,gBA5fA,SAAAzU,GAIA,OAHA1K,EAAA/O,KAAA,qBACAotB,GAAAzjB,KAAA3J,MAEAyZ,EAAAzZ,KAAA2tB,iBAAA3tB,KAAAwtB,YA0fA+G,GAAA95B,OAl9HA,SAAAE,EAAAC,GACA,OAAAD,EAKAiU,EAAA5O,KAAAqpB,SACArpB,KAAAqpB,QAAA1uB,EAAAG,SACAkF,KAAAqpB,SACArpB,KAAAqpB,QAAA/oB,UAAAkb,IAAA3gB,KAAAD,GACA,SACA,cACAD,EAAAG,SAVA8T,EAAA5O,KAAAqpB,SACArpB,KAAAqpB,QACArpB,KAAAqpB,QAAA,YA+8HAkL,GAAA75B,YAp8HA,SAAAC,EAAAC,GACA,OAAAD,EAKAiU,EAAA5O,KAAA41B,cACA51B,KAAA41B,aAAAj7B,EAAAG,SACAkF,KAAA41B,aACApa,GAAA3gB,KAAAD,GAAA,uBACAD,EAAAG,SARA8T,EAAA5O,KAAA41B,cACA51B,KAAA41B,aACA51B,KAAA41B,aAAA,YAi8HArB,GAAAj6B,YAz4HA,SAAAu7B,EAAAj7B,EAAAuV,GACA,IAAAP,EAAA/D,EAAA0N,EAEA,GAAAvZ,KAAA81B,kBACA,OAnDA,SAAAD,EAAAj7B,EAAAuV,GACA,IAAAP,EACAmmB,EACAlqB,EACAmqB,EAAAH,EAAAI,oBACA,IAAAj2B,KAAAk2B,aAKA,IAHAl2B,KAAAk2B,gBACAl2B,KAAAm2B,oBACAn2B,KAAAo2B,qBACAxmB,EAAA,EAAuBA,EAAA,KAAQA,EAC/B/D,EAAAoE,GAAA,IAAAL,IACA5P,KAAAo2B,kBAAAxmB,GAAA5P,KAAAtF,YACAmR,EACA,IACAoqB,oBACAj2B,KAAAm2B,iBAAAvmB,GAAA5P,KAAAvF,OAAAoR,EAAA,IAAAoqB,oBAIA,OAAA9lB,EACA,QAAAvV,GAEA,KADAm7B,EAAAzsB,GAAAK,KAAA3J,KAAAo2B,kBAAAJ,IACAD,EAAA,MAGA,KADAA,EAAAzsB,GAAAK,KAAA3J,KAAAm2B,iBAAAH,IACAD,EAAA,KAGA,QAAAn7B,GAEA,KADAm7B,EAAAzsB,GAAAK,KAAA3J,KAAAo2B,kBAAAJ,IAEAD,GAGA,KADAA,EAAAzsB,GAAAK,KAAA3J,KAAAm2B,iBAAAH,IACAD,EAAA,MAGA,KADAA,EAAAzsB,GAAAK,KAAA3J,KAAAm2B,iBAAAH,IAEAD,GAGA,KADAA,EAAAzsB,GAAAK,KAAA3J,KAAAo2B,kBAAAJ,IACAD,EAAA,MASApsB,KAAA3J,KAAA61B,EAAAj7B,EAAAuV,GAYA,IATAnQ,KAAAk2B,eACAl2B,KAAAk2B,gBACAl2B,KAAAm2B,oBACAn2B,KAAAo2B,sBAMAxmB,EAAA,EAAmBA,EAAA,GAAQA,IAAA,CAmB3B,GAjBA/D,EAAAoE,GAAA,IAAAL,IACAO,IAAAnQ,KAAAm2B,iBAAAvmB,KACA5P,KAAAm2B,iBAAAvmB,GAAA,IAAA+J,OACA,IAAA3Z,KAAAvF,OAAAoR,EAAA,IAAAtM,QAAA,YACA,KAEAS,KAAAo2B,kBAAAxmB,GAAA,IAAA+J,OACA,IAAA3Z,KAAAtF,YAAAmR,EAAA,IAAAtM,QAAA,YACA,MAGA4Q,GAAAnQ,KAAAk2B,aAAAtmB,KACA2J,EACA,IAAAvZ,KAAAvF,OAAAoR,EAAA,SAAA7L,KAAAtF,YAAAmR,EAAA,IACA7L,KAAAk2B,aAAAtmB,GAAA,IAAA+J,OAAAJ,EAAAha,QAAA,cAIA4Q,GACA,SAAAvV,GACAoF,KAAAm2B,iBAAAvmB,GAAA/U,KAAAg7B,GAEA,OAAAjmB,EACa,GACbO,GACA,QAAAvV,GACAoF,KAAAo2B,kBAAAxmB,GAAA/U,KAAAg7B,GAEA,OAAAjmB,EACa,IAAAO,GAAAnQ,KAAAk2B,aAAAtmB,GAAA/U,KAAAg7B,GACb,OAAAjmB,IA01HA2kB,GAAAh6B,YAxxHA,SAAAkf,GACA,OAAAzZ,KAAA81B,mBACA/mB,EAAA/O,KAAA,iBACA+b,GAAApS,KAAA3J,MAEAyZ,EACAzZ,KAAAuc,mBAEAvc,KAAAqc,eAGAtN,EAAA/O,KAAA,kBACAA,KAAAqc,aAAAX,IAEA1b,KAAAuc,oBAAA9C,EACAzZ,KAAAuc,mBACAvc,KAAAqc,eAywHAkY,GAAAx5B,iBA7yHA,SAAA0e,GACA,OAAAzZ,KAAA81B,mBACA/mB,EAAA/O,KAAA,iBACA+b,GAAApS,KAAA3J,MAEAyZ,EACAzZ,KAAAwc,wBAEAxc,KAAAsc,oBAGAvN,EAAA/O,KAAA,uBACAA,KAAAsc,kBAAAb,IAEAzb,KAAAwc,yBAAA/C,EACAzZ,KAAAwc,wBACAxc,KAAAsc,oBA8xHAiY,GAAAh3B,KArhHA,SAAAsO,GACA,OAAA8R,GAAA9R,EAAA7L,KAAAgmB,MAAAxoB,IAAAwC,KAAAgmB,MAAAvoB,KAAAF,MAqhHAg3B,GAAA8B,eAzgHA,WACA,OAAAr2B,KAAAgmB,MAAAvoB,KAygHA82B,GAAA+B,eA9gHA,WACA,OAAAt2B,KAAAgmB,MAAAxoB,KA+gHA+2B,GAAAn5B,SAz5GA,SAAAT,EAAAC,GACA,IAAAQ,EAAAwT,EAAA5O,KAAAu2B,WACAv2B,KAAAu2B,UACAv2B,KAAAu2B,UACA57B,IAAA,IAAAA,GAAAqF,KAAAu2B,UAAAj2B,SAAAzF,KAAAD,GACA,SACA,cAEA,WAAAD,EACAojB,GAAA3iB,EAAA4E,KAAAgmB,MAAAxoB,KACA7C,EACAS,EAAAT,EAAAsF,OACA7E,GA84GAm5B,GAAAj5B,YAn4GA,SAAAX,GACA,WAAAA,EACAojB,GAAA/d,KAAAw2B,aAAAx2B,KAAAgmB,MAAAxoB,KACA7C,EACAqF,KAAAw2B,aAAA77B,EAAAsF,OACAD,KAAAw2B,cA+3GAjC,GAAAl5B,cA54GA,SAAAV,GACA,WAAAA,EACAojB,GAAA/d,KAAAy2B,eAAAz2B,KAAAgmB,MAAAxoB,KACA7C,EACAqF,KAAAy2B,eAAA97B,EAAAsF,OACAD,KAAAy2B,gBAw4GAlC,GAAAnqB,cApzGA,SAAAssB,EAAA97B,EAAAuV,GACA,IAAAP,EAAA/D,EAAA0N,EAEA,GAAAvZ,KAAA22B,oBACA,OA7EA,SAAAD,EAAA97B,EAAAuV,GACA,IAAAP,EACAmmB,EACAlqB,EACAmqB,EAAAU,EAAAT,oBACA,IAAAj2B,KAAA42B,eAKA,IAJA52B,KAAA42B,kBACA52B,KAAA62B,uBACA72B,KAAA82B,qBAEAlnB,EAAA,EAAuBA,EAAA,IAAOA,EAC9B/D,EAAAoE,GAAA,QAAAhQ,IAAA2P,GACA5P,KAAA82B,kBAAAlnB,GAAA5P,KAAA1E,YACAuQ,EACA,IACAoqB,oBACAj2B,KAAA62B,oBAAAjnB,GAAA5P,KAAA3E,cACAwQ,EACA,IACAoqB,oBACAj2B,KAAA42B,eAAAhnB,GAAA5P,KAAA5E,SAAAyQ,EAAA,IAAAoqB,oBAIA,OAAA9lB,EACA,SAAAvV,GAEA,KADAm7B,EAAAzsB,GAAAK,KAAA3J,KAAA42B,eAAAZ,IACAD,EAAA,KACa,QAAAn7B,GAEb,KADAm7B,EAAAzsB,GAAAK,KAAA3J,KAAA62B,oBAAAb,IACAD,EAAA,MAGA,KADAA,EAAAzsB,GAAAK,KAAA3J,KAAA82B,kBAAAd,IACAD,EAAA,KAGA,SAAAn7B,GAEA,KADAm7B,EAAAzsB,GAAAK,KAAA3J,KAAA42B,eAAAZ,IAEAD,GAGA,KADAA,EAAAzsB,GAAAK,KAAA3J,KAAA62B,oBAAAb,IAEAD,GAGA,KADAA,EAAAzsB,GAAAK,KAAA3J,KAAA82B,kBAAAd,IACAD,EAAA,KACa,QAAAn7B,GAEb,KADAm7B,EAAAzsB,GAAAK,KAAA3J,KAAA62B,oBAAAb,IAEAD,GAGA,KADAA,EAAAzsB,GAAAK,KAAA3J,KAAA42B,eAAAZ,IAEAD,GAGA,KADAA,EAAAzsB,GAAAK,KAAA3J,KAAA82B,kBAAAd,IACAD,EAAA,MAGA,KADAA,EAAAzsB,GAAAK,KAAA3J,KAAA82B,kBAAAd,IAEAD,GAGA,KADAA,EAAAzsB,GAAAK,KAAA3J,KAAA42B,eAAAZ,IAEAD,GAGA,KADAA,EAAAzsB,GAAAK,KAAA3J,KAAA62B,oBAAAb,IACAD,EAAA,MASApsB,KAAA3J,KAAA02B,EAAA97B,EAAAuV,GAUA,IAPAnQ,KAAA42B,iBACA52B,KAAA42B,kBACA52B,KAAA82B,qBACA92B,KAAA62B,uBACA72B,KAAA+2B,uBAGAnnB,EAAA,EAAmBA,EAAA,EAAOA,IAAA,CA6B1B,GA1BA/D,EAAAoE,GAAA,QAAAhQ,IAAA2P,GACAO,IAAAnQ,KAAA+2B,mBAAAnnB,KACA5P,KAAA+2B,mBAAAnnB,GAAA,IAAA+J,OACA,IAAA3Z,KAAA5E,SAAAyQ,EAAA,IAAAtM,QAAA,gBACA,KAEAS,KAAA62B,oBAAAjnB,GAAA,IAAA+J,OACA,IAAA3Z,KAAA3E,cAAAwQ,EAAA,IAAAtM,QAAA,gBACA,KAEAS,KAAA82B,kBAAAlnB,GAAA,IAAA+J,OACA,IAAA3Z,KAAA1E,YAAAuQ,EAAA,IAAAtM,QAAA,gBACA,MAGAS,KAAA42B,eAAAhnB,KACA2J,EACA,IACAvZ,KAAA5E,SAAAyQ,EAAA,IACA,KACA7L,KAAA3E,cAAAwQ,EAAA,IACA,KACA7L,KAAA1E,YAAAuQ,EAAA,IACA7L,KAAA42B,eAAAhnB,GAAA,IAAA+J,OAAAJ,EAAAha,QAAA,cAIA4Q,GACA,SAAAvV,GACAoF,KAAA+2B,mBAAAnnB,GAAA/U,KAAA67B,GAEA,OAAA9mB,EACa,GACbO,GACA,QAAAvV,GACAoF,KAAA62B,oBAAAjnB,GAAA/U,KAAA67B,GAEA,OAAA9mB,EACa,GACbO,GACA,OAAAvV,GACAoF,KAAA82B,kBAAAlnB,GAAA/U,KAAA67B,GAEA,OAAA9mB,EACa,IAAAO,GAAAnQ,KAAA42B,eAAAhnB,GAAA/U,KAAA67B,GACb,OAAA9mB,IAwvGA2kB,GAAApW,cA3sGA,SAAA1E,GACA,OAAAzZ,KAAA22B,qBACA5nB,EAAA/O,KAAA,mBACA0e,GAAA/U,KAAA3J,MAEAyZ,EACAzZ,KAAAkf,qBAEAlf,KAAA+e,iBAGAhQ,EAAA/O,KAAA,oBACAA,KAAA+e,eAAAR,IAEAve,KAAAkf,sBAAAzF,EACAzZ,KAAAkf,qBACAlf,KAAA+e,iBA4rGAwV,GAAArW,mBAxrGA,SAAAzE,GACA,OAAAzZ,KAAA22B,qBACA5nB,EAAA/O,KAAA,mBACA0e,GAAA/U,KAAA3J,MAEAyZ,EACAzZ,KAAAmf,0BAEAnf,KAAAgf,sBAGAjQ,EAAA/O,KAAA,yBACAA,KAAAgf,oBAAAR,IAEAxe,KAAAmf,2BAAA1F,EACAzZ,KAAAmf,0BACAnf,KAAAgf,sBAyqGAuV,GAAAtW,iBArqGA,SAAAxE,GACA,OAAAzZ,KAAA22B,qBACA5nB,EAAA/O,KAAA,mBACA0e,GAAA/U,KAAA3J,MAEAyZ,EACAzZ,KAAAof,wBAEApf,KAAAif,oBAGAlQ,EAAA/O,KAAA,uBACAA,KAAAif,kBAAAR,IAEAze,KAAAof,yBAAA3F,EACAzZ,KAAAof,wBACApf,KAAAif,oBAupGAsV,GAAAp0B,KAr+FA,SAAAC,GAGA,aAAAA,EAAA,IAAAsJ,cAAAD,OAAA,IAm+FA8qB,GAAA10B,SAz9FA,SAAAa,EAAAqB,EAAAhC,GACA,OAAAW,EAAA,GACAX,EAAA,UAEAA,EAAA,WAijGA8gB,GAAA,MACAnd,OAEAC,MAAA,aACAK,MAAA,IACAJ,OAAA,EACAC,KAAA,cACAC,OAAA,KACAC,KAAA,OAGAJ,MAAA,aACAK,OAAA,IACAJ,OAAA,EACAC,KAAA,gBACAC,OAAA,KACAC,KAAA,OAGA3G,uBAAA,uBACAC,QAAA,SAAAC,GACA,IAAAO,EAAAP,EAAA,GACAQ,EACA,IAAA4Z,EAAApa,EAAA,QACA,KACA,IAAAO,EACA,KACA,IAAAA,EACA,KACA,IAAAA,EACA,KACA,KACA,OAAAP,EAAAQ,KAMA4Q,EAAA8d,KAAA1Y,EACA,wDACA+M,IAEAnS,EAAAsoB,SAAAljB,EACA,gEACAmN,IAGA,IAAAgW,GAAA/hB,KAAAC,IAmBA,SAAA+hB,GAAAzO,EAAAroB,EAAAyX,EAAA2T,GACA,IAAArD,EAAA0C,GAAAzqB,EAAAyX,GAMA,OAJA4Q,EAAAU,eAAAqC,EAAArD,EAAAgB,cACAV,EAAAW,OAAAoC,EAAArD,EAAAiB,MACAX,EAAAY,SAAAmC,EAAArD,EAAAkB,QAEAZ,EAAAc,UAaA,SAAA4N,GAAA75B,GACA,OAAAA,EAAA,EACA4X,KAAAuC,MAAAna,GAEA4X,KAAAsC,KAAAla,GA2DA,SAAA85B,GAAA7tB,GAGA,YAAAA,EAAA,OAGA,SAAA8tB,GAAA58B,GAEA,cAAAA,EAAA,KA4DA,SAAA68B,GAAAC,GACA,kBACA,OAAAv3B,KAAAw3B,GAAAD,IAIA,IAAAE,GAAAH,GAAA,MACAI,GAAAJ,GAAA,KACAK,GAAAL,GAAA,KACAM,GAAAN,GAAA,KACAO,GAAAP,GAAA,KACAQ,GAAAR,GAAA,KACAS,GAAAT,GAAA,KACAU,GAAAV,GAAA,KACAW,GAAAX,GAAA,KAWA,SAAAY,GAAAr0B,GACA,kBACA,OAAA7D,KAAAuR,UAAAvR,KAAAspB,MAAAzlB,GAAAsO,KAIA,IAAA4W,GAAAmP,GAAA,gBACAzY,GAAAyY,GAAA,WACAn2B,GAAAm2B,GAAA,WACAx3B,GAAAw3B,GAAA,SACA3uB,GAAA2uB,GAAA,QACAz9B,GAAAy9B,GAAA,UACAxP,GAAAwP,GAAA,SAMAxO,GAAAxU,KAAAwU,MACAyO,IACAz7B,GAAA,GACAD,EAAA,GACA9B,EAAA,GACAiC,EAAA,GACAE,EAAA,GACAqR,EAAA,KACAnR,EAAA,IAyGAo7B,GAAAljB,KAAAC,IAEA,SAAAE,GAAA8F,GACA,OAAAA,EAAA,IAAAA,EAAA,KAAAA,EAGA,SAAAkd,KAQA,IAAAr4B,KAAAuR,UACA,OAAAvR,KAAAgW,aAAA1K,cAGA,IAGAvJ,EACArB,EACAgoB,EACAjsB,EAEA67B,EACAC,EACAC,EACAC,EAXAhZ,EAAA2Y,GAAAp4B,KAAAmpB,eAAA,IACA5f,EAAA6uB,GAAAp4B,KAAAopB,OACA3uB,EAAA29B,GAAAp4B,KAAAqpB,SAKAqP,EAAA14B,KAAA03B,YAMA,OAAAgB,GAOA32B,EAAAwV,EAAAkI,EAAA,IACA/e,EAAA6W,EAAAxV,EAAA,IACA0d,GAAA,GACA1d,GAAA,GAGA2mB,EAAAnR,EAAA9c,EAAA,IACAA,GAAA,GAGAgC,EAAAgjB,IAAAkZ,QAAA,GAAAp5B,QAAA,gBAEA+4B,EAAAI,EAAA,SACAH,EAAAljB,GAAArV,KAAAqpB,WAAAhU,GAAAqjB,GAAA,OACAF,EAAAnjB,GAAArV,KAAAopB,SAAA/T,GAAAqjB,GAAA,OACAD,EAAApjB,GAAArV,KAAAmpB,iBAAA9T,GAAAqjB,GAAA,OAGAJ,EACA,KACA5P,EAAA6P,EAAA7P,EAAA,SACAjuB,EAAA89B,EAAA99B,EAAA,SACA8O,EAAAivB,EAAAjvB,EAAA,SACA7I,GAAAqB,GAAA0d,EAAA,SACA/e,EAAA+3B,EAAA/3B,EAAA,SACAqB,EAAA02B,EAAA12B,EAAA,SACA0d,EAAAgZ,EAAAh8B,EAAA,SA9BA,MAkCA,IAAAm8B,GAAApQ,GAAAvc,UAwGA,OAtGA2sB,GAAArnB,QA/3EA,WACA,OAAAvR,KAAAwR,UA+3EAonB,GAAAzjB,IA3YA,WACA,IAAA6L,EAAAhhB,KAAAspB,MAaA,OAXAtpB,KAAAmpB,cAAA8N,GAAAj3B,KAAAmpB,eACAnpB,KAAAopB,MAAA6N,GAAAj3B,KAAAopB,OACAppB,KAAAqpB,QAAA4N,GAAAj3B,KAAAqpB,SAEArI,EAAA+H,aAAAkO,GAAAjW,EAAA+H,cACA/H,EAAAvB,QAAAwX,GAAAjW,EAAAvB,SACAuB,EAAAjf,QAAAk1B,GAAAjW,EAAAjf,SACAif,EAAAtgB,MAAAu2B,GAAAjW,EAAAtgB,OACAsgB,EAAAvmB,OAAAw8B,GAAAjW,EAAAvmB,QACAumB,EAAA0H,MAAAuO,GAAAjW,EAAA0H,OAEA1oB,MA8XA44B,GAAA5Q,IAhXA,SAAA5nB,EAAAyX,GACA,OAAAqf,GAAAl3B,KAAAI,EAAAyX,EAAA,IAgXA+gB,GAAA/M,SA5WA,SAAAzrB,EAAAyX,GACA,OAAAqf,GAAAl3B,KAAAI,EAAAyX,GAAA,IA4WA+gB,GAAApB,GA/RA,SAAAnwB,GACA,IAAArH,KAAAuR,UACA,OAAAY,IAEA,IAAA5I,EACA9O,EACAsuB,EAAA/oB,KAAAmpB,cAIA,cAFA9hB,EAAAwP,EAAAxP,KAEA,YAAAA,GAAA,SAAAA,EAGA,OAFAkC,EAAAvJ,KAAAopB,MAAAL,EAAA,MACAtuB,EAAAuF,KAAAqpB,QAAA+N,GAAA7tB,GACAlC,GACA,YACA,OAAA5M,EACA,cACA,OAAAA,EAAA,EACA,WACA,OAAAA,EAAA,QAKA,OADA8O,EAAAvJ,KAAAopB,MAAAlU,KAAAwU,MAAA2N,GAAAr3B,KAAAqpB,UACAhiB,GACA,WACA,OAAAkC,EAAA,EAAAwf,EAAA,OACA,UACA,OAAAxf,EAAAwf,EAAA,MACA,WACA,UAAAxf,EAAAwf,EAAA,KACA,aACA,YAAAxf,EAAAwf,EAAA,IACA,aACA,aAAAxf,EAAAwf,EAAA,IAEA,kBACA,OAAA7T,KAAAuC,MAAA,MAAAlO,GAAAwf,EACA,QACA,UAAA3U,MAAA,gBAAA/M,KAyPAuxB,GAAAnB,kBACAmB,GAAAlB,aACAkB,GAAAjB,aACAiB,GAAAhB,WACAgB,GAAAf,UACAe,GAAAd,WACAc,GAAAb,YACAa,GAAAZ,cACAY,GAAAX,WACAW,GAAA5oB,QA5PA,WACA,OAAAhQ,KAAAuR,UAIAvR,KAAAmpB,cACA,MAAAnpB,KAAAopB,MACAppB,KAAAqpB,QAAA,UACA,QAAA3R,EAAA1X,KAAAqpB,QAAA,IANAlX,KA2PAymB,GAAArP,QA5WA,WACA,IAIA9J,EACA1d,EACArB,EACAgoB,EACAmQ,EARA9P,EAAA/oB,KAAAmpB,cACA5f,EAAAvJ,KAAAopB,MACA3uB,EAAAuF,KAAAqpB,QACArI,EAAAhhB,KAAAspB,MAgDA,OArCAP,GAAA,GAAAxf,GAAA,GAAA9O,GAAA,GACAsuB,GAAA,GAAAxf,GAAA,GAAA9O,GAAA,IAGAsuB,GAAA,MAAAoO,GAAAE,GAAA58B,GAAA8O,GACAA,EAAA,EACA9O,EAAA,GAKAumB,EAAA+H,eAAA,IAEAtJ,EAAAlI,EAAAwR,EAAA,KACA/H,EAAAvB,UAAA,GAEA1d,EAAAwV,EAAAkI,EAAA,IACAuB,EAAAjf,UAAA,GAEArB,EAAA6W,EAAAxV,EAAA,IACAif,EAAAtgB,QAAA,GAEA6I,GAAAgO,EAAA7W,EAAA,IAGAm4B,EAAAthB,EAAA6f,GAAA7tB,IACA9O,GAAAo+B,EACAtvB,GAAA4tB,GAAAE,GAAAwB,IAGAnQ,EAAAnR,EAAA9c,EAAA,IACAA,GAAA,GAEAumB,EAAAzX,OACAyX,EAAAvmB,SACAumB,EAAA0H,QAEA1oB,MAyTA44B,GAAAvO,MAlOA,WACA,OAAAQ,GAAA7qB,OAkOA44B,GAAA1gB,IA/NA,SAAA7Q,GAEA,OADAA,EAAAwP,EAAAxP,GACArH,KAAAuR,UAAAvR,KAAAqH,EAAA,OAAA8K,KA8NAymB,GAAA7P,gBACA6P,GAAAnZ,WACAmZ,GAAA72B,WACA62B,GAAAl4B,SACAk4B,GAAArvB,QACAqvB,GAAA/P,MAlNA,WACA,OAAAtR,EAAAvX,KAAAuJ,OAAA,IAkNAqvB,GAAAn+B,UACAm+B,GAAAlQ,SACAkQ,GAAArI,SAlIA,SAAAuI,EAAAC,GACA,IAAA/4B,KAAAuR,UACA,OAAAvR,KAAAgW,aAAA1K,cAGA,IAEA4E,EACApS,EAHAk7B,GAAA,EACAC,EAAAd,GAyBA,MArBA,iBAAAW,IACAC,EAAAD,EACAA,GAAA,GAEA,kBAAAA,IACAE,EAAAF,GAEA,iBAAAC,IACAE,EAAAjtB,OAAAktB,UAAiCf,GAAAY,GACjC,MAAAA,EAAAt8B,GAAA,MAAAs8B,EAAAr8B,KACAu8B,EAAAv8B,GAAAq8B,EAAAt8B,EAAA,IAIAyT,EAAAlQ,KAAAgW,aACAlY,EAxFA,SAAAq7B,EAAAx2B,EAAAw1B,EAAAjoB,GACA,IAAAuY,EAAAoC,GAAAsO,GAAAhkB,MACAsK,EAAAiK,GAAAjB,EAAA+O,GAAA,MACAz1B,EAAA2nB,GAAAjB,EAAA+O,GAAA,MACA92B,EAAAgpB,GAAAjB,EAAA+O,GAAA,MACAjuB,EAAAmgB,GAAAjB,EAAA+O,GAAA,MACA/8B,EAAAivB,GAAAjB,EAAA+O,GAAA,MACA3O,EAAAa,GAAAjB,EAAA+O,GAAA,MACA9O,EAAAgB,GAAAjB,EAAA+O,GAAA,MACAnyB,EACAoa,GAAA0Y,EAAAz7B,KAAA,IAAA+iB,IACAA,EAAA0Y,EAAA17B,IAAA,KAAAgjB,IACA1d,GAAA,UACAA,EAAAo2B,EAAAx9B,IAAA,KAAAoH,IACArB,GAAA,UACAA,EAAAy3B,EAAAv7B,IAAA,KAAA8D,IACA6I,GAAA,UACAA,EAAA4uB,EAAAr7B,IAAA,KAAAyM,GAgBA,OAdA,MAAA4uB,EAAAhqB,IACA9I,EACAA,GACAwjB,GAAA,UACAA,EAAAsP,EAAAhqB,IAAA,KAAA0a,KAEAxjB,KACA5K,GAAA,UACAA,EAAA09B,EAAAn7B,IAAA,KAAAvC,IACAiuB,GAAA,gBAAAA,IAEA,GAAA/lB,EACA0C,EAAA,IAAA8zB,EAAA,EACA9zB,EAAA,GAAA6K,EApCA,SAAA5Q,EAAAhC,EAAAqF,EAAAE,EAAAqN,GACA,OAAAA,EAAA5T,aAAAgB,GAAA,IAAAqF,EAAArD,EAAAuD,IAoCAuJ,MAAA,KAAA/G,GAuDA+zB,CAAAp5B,MAAAg5B,EAAAC,EAAA/oB,GAEA8oB,IACAl7B,EAAAoS,EAAAulB,YAAAz1B,KAAAlC,IAGAoS,EAAAzQ,WAAA3B,IAoGA86B,GAAAjH,YAAA0G,GACAO,GAAA1sB,SAAAmsB,GACAO,GAAAxG,OAAAiG,GACAO,GAAA1oB,UACA0oB,GAAA5iB,cAEA4iB,GAAAS,YAAAvlB,EACA,sFACAukB,IAEAO,GAAApM,QAIA5W,EAAA,gBACAA,EAAA,mBAIA0D,GAAA,IAAAJ,IACAI,GAAA,IA9tJA,wBA+tJAc,GAAA,aAAAha,EAAAgW,EAAA7C,GACAA,EAAA3B,GAAA,IAAApC,KAAA,IAAAyZ,WAAA7oB,MAEAga,GAAA,aAAAha,EAAAgW,EAAA7C,GACAA,EAAA3B,GAAA,IAAApC,KAAAkI,EAAAtX;;AAKAsO,EAAA4qB,QAAA,SAh+KA,SAAAxjB,GACAtH,EAAAsH,EAi+KAyjB,CAAAxT,IAEArX,EAAAiB,GAAAmf,GACApgB,EAAAmN,IAv/EA,WAGA,OAAAwM,GAAA,cAFApa,MAAAtE,KAAAgF,UAAA,KAu/EAD,EAAA6G,IAl/EA,WAGA,OAAA8S,GAAA,aAFApa,MAAAtE,KAAAgF,UAAA,KAk/EAD,EAAArK,IA7+EA,WACA,OAAAmL,KAAAnL,IAAAmL,KAAAnL,OAAA,IAAAmL,MA6+EAd,EAAA2B,IAAAJ,EACAvB,EAAA2jB,KA1oBA,SAAAjyB,GACA,OAAA2lB,GAAA,IAAA3lB,IA0oBAsO,EAAAjU,OAlhBA,SAAAG,EAAA65B,GACA,OAAAG,GAAAh6B,EAAA65B,EAAA,WAkhBA/lB,EAAAa,SACAb,EAAAwB,OAAA2Q,GACAnS,EAAAkd,QAAA1Z,EACAxD,EAAA+Z,SAAAoC,GACAnc,EAAA+E,WACA/E,EAAAtT,SAhhBA,SAAA25B,EAAAn6B,EAAA65B,GACA,OAAAK,GAAAC,EAAAn6B,EAAA65B,EAAA,aAghBA/lB,EAAA6kB,UA9oBA,WACA,OAAAxN,GAAA3Z,MAAA,KAAAuC,WAAA4kB,aA8oBA7kB,EAAAsH,WAAAiL,GACAvS,EAAA8a,cACA9a,EAAAhU,YAxhBA,SAAAE,EAAA65B,GACA,OAAAG,GAAAh6B,EAAA65B,EAAA,gBAwhBA/lB,EAAApT,YA7gBA,SAAAy5B,EAAAn6B,EAAA65B,GACA,OAAAK,GAAAC,EAAAn6B,EAAA65B,EAAA,gBA6gBA/lB,EAAAlU,gBACAkU,EAAA8qB,aAn4GA,SAAA31B,EAAA0P,GACA,SAAAA,EAAA,CACA,IAAArD,EACAupB,EACA/kB,EAAAwL,GAEA,MAAAC,GAAAtc,IAAA,MAAAsc,GAAAtc,GAAAsd,aAEAhB,GAAAtc,GAAAgR,IAAAJ,EAAA0L,GAAAtc,GAAAqd,QAAA3N,KAIA,OADAkmB,EAAA/Y,GAAA7c,MAEA6Q,EAAA+kB,EAAAvY,SAEA3N,EAAAkB,EAAAC,EAAAnB,GACA,MAAAkmB,IAIAlmB,EAAAxP,KAAAF,IAEAqM,EAAA,IAAA0E,EAAArB,IACA4N,aAAAhB,GAAAtc,GACAsc,GAAAtc,GAAAqM,GAIA2Q,GAAAhd,QAGA,MAAAsc,GAAAtc,KACA,MAAAsc,GAAAtc,GAAAsd,cACAhB,GAAAtc,GAAAsc,GAAAtc,GAAAsd,aACAtd,IAAAgd,MACAA,GAAAhd,IAEiB,MAAAsc,GAAAtc,WACjBsc,GAAAtc,IAIA,OAAAsc,GAAAtc,IA01GA6K,EAAAyR,QA/zGA,WACA,OAAA7L,EAAA6L,KA+zGAzR,EAAArT,cArhBA,SAAA05B,EAAAn6B,EAAA65B,GACA,OAAAK,GAAAC,EAAAn6B,EAAA65B,EAAA,kBAqhBA/lB,EAAAmI,iBACAnI,EAAAgrB,qBAtNA,SAAAC,GACA,YAAA5vB,IAAA4vB,EACAjQ,GAEA,mBAAAiQ,IACAjQ,GAAAiQ,GACA,IAiNAjrB,EAAAkrB,sBA3MA,SAAAC,EAAAC,GACA,YAAA/vB,IAAAouB,GAAA0B,UAGA9vB,IAAA+vB,EACA3B,GAAA0B,IAEA1B,GAAA0B,GAAAC,EACA,MAAAD,IACA1B,GAAAz7B,GAAAo9B,EAAA,IAEA,KAiMAprB,EAAAqhB,eAr5DA,SAAAgK,EAAA11B,GACA,IAAA+lB,EAAA2P,EAAA3P,KAAA/lB,EAAA,WACA,OAAA+lB,GAAA,EACA,WACAA,GAAA,EACA,WACAA,EAAA,EACA,UACAA,EAAA,EACA,UACAA,EAAA,EACA,UACAA,EAAA,EACA,WACA,YAw4DA1b,EAAAzC,UAAA6iB,GAGApgB,EAAAsrB,WACAC,eAAA,mBACAC,uBAAA,sBACAC,kBAAA,0BACAxf,KAAA,aACAyf,KAAA,QACAC,aAAA,WACAC,QAAA,eACAtf,KAAA,aACAN,MAAA,WAGAhM,EA1hLgEhR,oDCI/D,SAAAxD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,0EAAAL,MACA,KAEAM,YAAA,4DAAAN,MACA,KAEAgB,SAAA,uCAAAhB,MAAA,KACAiB,cAAA,uBAAAjB,MAAA,KACAkB,YAAA,gBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,iBACAC,IAAA,uBACAC,KAAA,6BACAsI,EAAA,WACA7D,GAAA,aACAC,IAAA,mBACAC,KAAA,yBAEA1E,UACAC,QAAA,cACAC,QAAA,aACAC,SAAA,iBACAC,QAAA,eACAC,SAAA,+BACAC,SAAA,KAEAC,cACAC,OAAA,UACAC,KAAA,UACAC,EAAA,aACAC,GAAA,WACA/B,EAAA,MACAgC,GAAA,UACAC,EAAA,MACAC,GAAA,SAAAS,GACA,WAAAA,EACA,SAEAA,EAAA,SAEAR,EAAA,MACAC,GAAA,SAAAO,GACA,WAAAA,EACA,SAEAA,EAAA,SAEAN,EAAA,OACAC,GAAA,SAAAK,GACA,WAAAA,EACA,UAEAA,EAAA,WAEAJ,EAAA,MACAC,GAAA,SAAAG,GACA,WAAAA,EACA,SACiBA,EAAA,YAAAA,EACjBA,EAAA,OAEAA,EAAA,UAGAoC,cAAA,gEACAS,KAAA,SAAAC,GACA,oCAAAvF,KAAAuF,IAEAP,SAAA,SAAAD,EAAAE,EAAAC,GACA,OAAAH,EAAA,EACA,aACaA,EAAA,GACb,QACaA,EAAA,GACbG,EAAA,wBACaH,EAAA,GACbG,EAAA,uBAEA,UAzFuCrC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5BA;EAAAM,aAAA,MACAC,OAAA,gFAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,4DAAAhB,MACA,KAEAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,mBAAAlB,MAAA,KACAmB,oBAAA,EACAmE,cAAA,QACAS,KAAA,SAAAC,GACA,YAAAA,EAAAqJ,OAAA,IAEA5J,SAAA,SAAAa,EAAAqB,EAAAhC,GACA,OAAAW,EAAA,cAEAlF,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,2BAEAC,UACAC,QAAA,cACAC,QAAA,gBACAC,SAAA,eACAC,QAAA,cACAC,SAAA,wBACAC,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,aACAC,EAAA,eACAC,GAAA,aACA/B,EAAA,aACAgC,GAAA,YACAC,EAAA,UACAC,GAAA,SACAC,EAAA,WACAC,GAAA,UACAC,EAAA,WACAC,GAAA,UACAC,EAAA,UACAC,GAAA,WAEAC,uBAAA,YACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KA7DuCC,CAAWC,EAAQ,gCCEzD,SAAAzD,GAA2B;kCAiE5B;SAAAwI,EAAApF,EAAAqF,EAAAC,EAAAC,GACA,IAAAjI,GACA6B,GAAA,qCACAC,IAAAY,EAAA,WAAAA,EAAA,YACA3C,GAAA,wBACAgC,IAAAW,EAAA,SAAAA,EAAA,UACAV,GAAA,yBACAC,IAAAS,EAAA,SAAAA,EAAA,UACAR,GAAA,yBACAC,IAAAO,EAAA,SAAAA,EAAA,UACAN,GAAA,sBACAC,IAAAK,EAAA,SAAAA,EAAA,UACAJ,GAAA,oBACAC,IAAAG,EAAA,OAAAA,EAAA,SAEA,OAAAuF,EACAjI,EAAAgI,GAAA,GACAD,EACA/H,EAAAgI,GAAA,GACAhI,EAAAgI,GAAA,GA9EA1I,EAAAM,aAAA,OACAC,OAAA,sFAAAL,MACA,KAEAM,YAAA,kDAAAN,MAAA,KACAgB,SAAA,sDAAAhB,MAAA,KACAiB,cAAA,8BAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,wBACAC,IAAA,8BACAC,KAAA,0CAEA4D,cAAA,aACAS,KAAA,SAAAC,GACA,cAAAA,EAAAsJ,eAEA7J,SAAA,SAAAa,EAAAqB,EAAAhC,GACA,OAAAW,EAAA,GACAX,EAAA,YAEAA,EAAA,aAGAhE,UACAC,QAAA,cACAC,QAAA,cACAC,SAAA,cACAC,QAAA,eACAC,SAAA,8BACAC,SAAA,KAEAC,cACAC,OAAA,YACAC,KAAA,OACAC,EAAAiG,EACAhG,GAAAgG,EACA/H,EAAA+H,EACA/F,GAAA+F,EACA9F,EAAA8F,EACA7F,GAAA6F,EACA5F,EAAA4F,EACA3F,GAAA2F,EACA1F,EAAA0F,EACAzF,GAAAyF,EACAxF,EAAAwF,EACAvF,GAAAuF,GAEAtF,uBAAA,YACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KAhEuCC,CAAWC,EAAQ,gCCEzD,SAAAzD,GAA2B;kCAI5B;IAAAqgC,EAAA,iDAAAngC,MAAA,KA4BA,SAAAoK,EAAAlH,EAAAqF,EAAArD,EAAAuD,GACA,IAAA23B,EAiBA,SAAAl9B,GACA,IAAAm9B,EAAAvlB,KAAAuC,MAAAna,EAAA,SACAo9B,EAAAxlB,KAAAuC,MAAAna,EAAA,QACAq9B,EAAAr9B,EAAA,GACAuI,EAAA,GAUA,OATA40B,EAAA,IACA50B,GAAA00B,EAAAE,GAAA,SAEAC,EAAA,IACA70B,IAAA,KAAAA,EAAA,QAAA00B,EAAAG,GAAA,OAEAC,EAAA,IACA90B,IAAA,KAAAA,EAAA,QAAA00B,EAAAI,IAEA,KAAA90B,EAAA,OAAAA,EA/BA+0B,CAAAt9B,GACA,OAAAgC,GACA,SACA,OAAAk7B,EAAA,OACA,SACA,OAAAA,EAAA,OACA,SACA,OAAAA,EAAA,OACA,SACA,OAAAA,EAAA,OACA,SACA,OAAAA,EAAA,OACA,SACA,OAAAA,EAAA,QAqBAtgC,EAAAM,aAAA,OACAC,OAAA,kMAAAL,MACA,KAEAM,YAAA,0HAAAN,MACA,KAEAwD,kBAAA,EACAxC,SAAA,2DAAAhB,MACA,KAEAiB,cAAA,2DAAAjB,MACA,KAEAkB,YAAA,2DAAAlB,MACA,KAEAoB,gBACAC,GAAA,QACAC,IAAA,WACAC,EAAA,aACAC,GAAA,cACAC,IAAA,oBACAC,KAAA,2BAEAC,UACAC,QAAA,cACAC,QAAA,cACAC,SAAA,MACAC,QAAA,cACAC,SAAA,MACAC,SAAA,KAEAC,cACAC,OA/FA,SAAAuB,GACA,IAAAkxB,EAAAlxB,EASA,OARAkxB,GACA,IAAAlxB,EAAAwL,QAAA,OACA0lB,EAAA/gB,MAAA,aACA,IAAAnQ,EAAAwL,QAAA,OACA0lB,EAAA/gB,MAAA,aACA,IAAAnQ,EAAAwL,QAAA,OACA0lB,EAAA/gB,MAAA,YACA+gB,EAAA,QAuFAxyB,KAnFA,SAAAsB,GACA,IAAAkxB,EAAAlxB,EASA,OARAkxB,GACA,IAAAlxB,EAAAwL,QAAA,OACA0lB,EAAA/gB,MAAA,aACA,IAAAnQ,EAAAwL,QAAA,OACA0lB,EAAA/gB,MAAA,aACA,IAAAnQ,EAAAwL,QAAA,OACA0lB,EAAA/gB,MAAA,YACA+gB,EAAA,QA2EAvyB,EAAA,UACAC,GAAA8H,EACA7J,EAAA,UACAgC,GAAA6H,EACA5H,EAAA,UACAC,GAAA2H,EACA1H,EAAA,UACAC,GAAAyH,EACAxH,EAAA,UACAC,GAAAuH,EACAtH,EAAA,UACAC,GAAAqH,GAEApH,uBAAA,YACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KA3HuCC,CAAWC,EAAQ,gCCGzD,SAAAzD,GAA2B;kCAI5B;IAAAqL,GACAC,OAEA9I,IAAA,+BACA/B,GAAA,8BACAgC,IAAA,2BACAC,GAAA,2BACAC,IAAA,qBACAE,IAAA,qBACAE,IAAA,2BACAE,IAAA,6BAEAsI,uBAAA,SAAAnI,EAAAoI,GACA,WAAApI,EACAoI,EAAA,GACApI,GAAA,GAAAA,GAAA,EACAoI,EAAA,GACAA,EAAA,IAEAlB,UAAA,SAAAlH,EAAAqF,EAAAC,GACA,IAAA8C,EAAAH,EAAAC,MAAA5C,GACA,WAAAA,EAAA+C,OACAhD,EAAA+C,EAAA,GAAAA,EAAA,GAGApI,EACA,IACAiI,EAAAE,uBAAAnI,EAAAoI,KAMAxL,EAAAM,aAAA,MACAC,OAAA,mFAAAL,MACA,KAEAM,YAAA,2DAAAN,MACA,KAEAwD,kBAAA,EACAxC,SAAA,wDAAAhB,MACA,KAEAiB,cAAA,qCAAAjB,MAAA,KACAkB,YAAA,uBAAAlB,MAAA,KACAmB,oBAAA,EACAC,gBACAC,GAAA,OACAC,IAAA,UACAC,EAAA,aACAC,GAAA,eACAC,IAAA,oBACAC,KAAA,2BAEAC,UACAC,QAAA,eACAC,QAAA,eACAC,SAAA,WACA,OAAA8D,KAAAC,OACA,OACA,6BACA,OACA,2BACA,OACA,4BACA,OACA,OACA,OACA,OACA,0BAGA9D,QAAA,cACAC,SAAA,WAUA,OARA,4BACA,gCACA,4BACA,0BACA,8BACA,2BACA,4BAEA4D,KAAAC,QAEA5D,SAAA,KAEAC,cACAC,OAAA,QACAC,KAAA,SACAC,EAAA,mBACAC,GAAA6I,EAAAf,UACA7J,EAAA4K,EAAAf,UACA7H,GAAA4I,EAAAf,UACA5H,EAAA2I,EAAAf,UACA3H,GAAA0I,EAAAf,UACA1H,EAAA,MACAC,GAAAwI,EAAAf,UACAxH,EAAA,QACAC,GAAAsI,EAAAf,UACAtH,EAAA,SACAC,GAAAoI,EAAAf,WAEApH,uBAAA,YACAC,QAAA,MACAE,MACAC,IAAA,EACAC,IAAA,KAnHuCC,CAAWC,EAAQ","file":"static/js/chunk-d55e.f9bab96d.js","sourcesContent":["//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n '_'\n ),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '༡',\n '2': '༢',\n '3': '༣',\n '4': '༤',\n '5': '༥',\n '6': '༦',\n '7': '༧',\n '8': '༨',\n '9': '༩',\n '0': '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var hi = moment.defineLocale('hi', {\n months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '૧',\n '2': '૨',\n '3': '૩',\n '4': '૪',\n '5': '૫',\n '6': '૬',\n '7': '૭',\n '8': '૮',\n '9': '૯',\n '0': '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '១',\n '2': '២',\n '3': '៣',\n '4': '៤',\n '5': '៥',\n '6': '៦',\n '7': '៧',\n '8': '៨',\n '9': '៩',\n '0': '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n '_'\n ),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '੧',\n '2': '੨',\n '3': '੩',\n '4': '੪',\n '5': '੫',\n '6': '੬',\n '7': '੭',\n '8': '੮',\n '9': '੯',\n '0': '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'дан',\n dd: translator.translate,\n M: 'месец',\n MM: translator.translate,\n y: 'годину',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n '_'\n ),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '0': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n $0,\n $1,\n $2\n ) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Пагоҳ соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '௧',\n '2': '௨',\n '3': '௩',\n '4': '௪',\n '5': '௫',\n '6': '௬',\n '7': '௭',\n '8': '௮',\n '9': '௯',\n '0': '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '೧',\n '2': '೨',\n '3': '೩',\n '4': '೪',\n '5': '೫',\n '6': '೬',\n '7': '೭',\n '8': '೮',\n '9': '೯',\n '0': '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n ' '\n );\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split(\n '_'\n ),\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n '_'\n );\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '၁',\n '2': '၂',\n '3': '၃',\n '4': '၄',\n '5': '၅',\n '6': '၆',\n '7': '၇',\n '8': '၈',\n '9': '၉',\n '0': '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n );\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (format === '') {\n // Hack: if format empty we know this is used to generate\n // RegExp by moment. Give then back both valid forms of months\n // in RegExp ready format.\n return (\n '(' +\n monthsSubjective[momentToFormat.month()] +\n '|' +\n monthsNominative[momentToFormat.month()] +\n ')'\n );\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n '_'\n ),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '۱',\n '2': '۲',\n '3': '۳',\n '4': '۴',\n '5': '۵',\n '6': '۶',\n '7': '۷',\n '8': '۸',\n '9': '۹',\n '0': '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n '1': '১',\n '2': '২',\n '3': '৩',\n '4': '৪',\n '5': '৫',\n '6': '৬',\n '7': '৭',\n '8': '৮',\n '9': '৯',\n '0': '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js\n//! version : 2.28.0\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.28.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n '_'\n ),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-df62.6c5105a6.js b/priv/static/adminfe/static/js/chunk-df62.6c5105a6.js deleted file mode 100644 index c6c4b82ee..000000000 --- a/priv/static/adminfe/static/js/chunk-df62.6c5105a6.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-df62"],{"+s0g":function(e,t,a){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),a="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),s=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],n=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,s){return e?/-MMM-/.test(s)?a[e.month()]:t[e.month()]:t},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:s,longMonthsParse:s,shortMonthsParse:s,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(a("wd/R"))},"//9w":function(e,t,a){!function(e){"use strict";e.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},"/X5v":function(e,t,a){!function(e){"use strict";e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},"0mo+":function(e,t,a){!function(e){"use strict";var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},a={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,t){return 12===e&&(e=0),"མཚན་མོ"===t&&e>=4||"ཉིན་གུང"===t&&e<5||"དགོང་དག"===t?e+12:e},meridiem:function(e,t,a){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(a("wd/R"))},"0tRk":function(e,t,a){!function(e){"use strict";e.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})}(a("wd/R"))},"1rYy":function(e,t,a){!function(e){"use strict";e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,t){switch(t){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}})}(a("wd/R"))},"1xZ4":function(e,t,a){!function(e){"use strict";e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var a=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(a="a"),e+a},week:{dow:1,doy:4}})}(a("wd/R"))},"2fjn":function(e,t,a){!function(e){"use strict";e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})}(a("wd/R"))},"2ykv":function(e,t,a){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),a="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),s=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],n=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,s){return e?/-MMM-/.test(s)?a[e.month()]:t[e.month()]:t},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:s,longMonthsParse:s,shortMonthsParse:s,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(a("wd/R"))},"3E1r":function(e,t,a){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},a={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})}(a("wd/R"))},"4MV3":function(e,t,a){!function(e){"use strict";var t={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},a={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(e){return e.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(e,t){return 12===e&&(e=0),"રાત"===t?e<4?e:e+12:"સવાર"===t?e:"બપોર"===t?e>=10?e:e+12:"સાંજ"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"રાત":e<10?"સવાર":e<17?"બપોર":e<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(a("wd/R"))},"4dOw":function(e,t,a){!function(e){"use strict";e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},"6+QB":function(e,t,a){!function(e){"use strict";e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,a){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(a("wd/R"))},"6B0Y":function(e,t,a){!function(e){"use strict";var t={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},a={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(e){return"ល្ងាច"===e},meridiem:function(e,t,a){return e<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(e){return e.replace(/[១២៣៤៥៦៧៨៩០]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},week:{dow:1,doy:4}})}(a("wd/R"))},"7BjC":function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?n[a][2]?n[a][2]:n[a][1]:s?n[a][0]:n[a][1]}e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},"7aV9":function(e,t,a){!function(e){"use strict";e.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(e){return e+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(e){return"ප.ව."===e||"පස් වරු"===e},meridiem:function(e,t,a){return e>11?a?"ප.ව.":"පස් වරු":a?"පෙ.ව.":"පෙර වරු"}})}(a("wd/R"))},"8/+R":function(e,t,a){!function(e){"use strict";var t={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},a={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(e){return e.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ਰਾਤ"===t?e<4?e:e+12:"ਸਵੇਰ"===t?e:"ਦੁਪਹਿਰ"===t?e>=10?e:e+12:"ਸ਼ਾਮ"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"ਰਾਤ":e<10?"ਸਵੇਰ":e<17?"ਦੁਪਹਿਰ":e<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(a("wd/R"))},"8mBD":function(e,t,a){!function(e){"use strict";e.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},"9rRi":function(e,t,a){!function(e){"use strict";e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){var t=1===e?"d":e%10==2?"na":"mh";return e+t},week:{dow:1,doy:4}})}(a("wd/R"))},"A+xa":function(e,t,a){!function(e){"use strict";e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){var t=/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран";return e+t},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(a("wd/R"))},AQ68:function(e,t,a){!function(e){"use strict";e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(a("wd/R"))},AvvY:function(e,t,a){!function(e){"use strict";e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,t){return 12===e&&(e=0),"രാത്രി"===t&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===t||"വൈകുന്നേരം"===t?e+12:e},meridiem:function(e,t,a){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}})}(a("wd/R"))},B55N:function(e,t,a){!function(e){"use strict";e.defineLocale("ja",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,a){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()12?e:e+12:"sanje"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"rati":e<12?"sokalli":e<16?"donparam":e<20?"sanje":"rati"}})}(a("wd/R"))},Dkky:function(e,t,a){!function(e){"use strict";e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(a("wd/R"))},Dmvi:function(e,t,a){!function(e){"use strict";e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},DoHr:function(e,t,a){!function(e){"use strict";var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var s=e%10,n=e%100-s,r=e>=100?100:null;return e+(t[s]||t[n]||t[r])}},week:{dow:1,doy:7}})}(a("wd/R"))},DxQv:function(e,t,a){!function(e){"use strict";e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},Dzi0:function(e,t,a){!function(e){"use strict";e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(a("wd/R"))},"E+lV":function(e,t,a){!function(e){"use strict";var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,a,s){var n=t.words[s];return 1===s.length?a?n[0]:n[1]:e+" "+t.correctGrammaticalCase(e,n)}};e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(a("wd/R"))},EOgW:function(e,t,a){!function(e){"use strict";e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,a){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(a("wd/R"))},G0Uy:function(e,t,a){!function(e){"use strict";e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},H8ED:function(e,t,a){!function(e){"use strict";function t(e,t,a){var s={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===a?t?"хвіліна":"хвіліну":"h"===a?t?"гадзіна":"гадзіну":e+" "+function(e,t){var a=e.split("_");return t%10==1&&t%100!=11?a[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?a[1]:a[2]}(s[a],+e)}e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,a){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})}(a("wd/R"))},HP3h:function(e,t,a){!function(e){"use strict";var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},a=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},s={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},n=function(e){return function(t,n,r,d){var i=a(t),_=s[e][a(t)];return 2===i&&(_=_[n?0:1]),_.replace(/%d/i,t)}},r=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-ly",{months:r,monthsShort:r,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,a){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:n("s"),ss:n("s"),m:n("m"),mm:n("m"),h:n("h"),hh:n("h"),d:n("d"),dd:n("d"),M:n("M"),MM:n("M"),y:n("y"),yy:n("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})}(a("wd/R"))},IBtZ:function(e,t,a){!function(e){"use strict";e.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return/(წამი|წუთი|საათი|წელი)/.test(e)?e.replace(/ი$/,"ში"):e+"ში"},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})}(a("wd/R"))},"Ivi+":function(e,t,a){!function(e){"use strict";e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,a){return e<12?"오전":"오후"}})}(a("wd/R"))},"JCF/":function(e,t,a){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},a={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},s=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];e.defineLocale("ku",{months:s,monthsShort:s,weekdays:"یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌".split("_"),weekdaysShort:"یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره‌|به‌یانی/,isPM:function(e){return/ئێواره‌/.test(e)},meridiem:function(e,t,a){return e<12?"به‌یانی":"ئێواره‌"},calendar:{sameDay:"[ئه‌مرۆ كاتژمێر] LT",nextDay:"[به‌یانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له‌ %s",past:"%s",s:"چه‌ند چركه‌یه‌ك",ss:"چركه‌ %d",m:"یه‌ك خوله‌ك",mm:"%d خوله‌ك",h:"یه‌ك كاتژمێر",hh:"%d كاتژمێر",d:"یه‌ك ڕۆژ",dd:"%d ڕۆژ",M:"یه‌ك مانگ",MM:"%d مانگ",y:"یه‌ك ساڵ",yy:"%d ساڵ"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return a[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})}(a("wd/R"))},JVSJ:function(e,t,a){!function(e){"use strict";function t(e,t,a){var s=e+" ";switch(a){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return s+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(a("wd/R"))},JvlW:function(e,t,a){!function(e){"use strict";var t={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function a(e,t,a,s){return t?n(a)[0]:s?n(a)[1]:n(a)[2]}function s(e){return e%10==0||e>10&&e<20}function n(e){return t[e].split("_")}function r(e,t,r,d){var i=e+" ";return 1===e?i+a(0,t,r[0],d):t?i+(s(e)?n(r)[1]:n(r)[0]):d?i+n(r)[1]:i+(s(e)?n(r)[1]:n(r)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,t,a,s){return t?"kelios sekundės":s?"kelių sekundžių":"kelias sekundes"},ss:r,m:a,mm:r,h:a,hh:r,d:a,dd:r,M:a,MM:r,y:a,yy:r},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}(a("wd/R"))},"K/tc":function(e,t,a){!function(e){"use strict";e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,t,a){return e<12?a?"vm":"VM":a?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(a("wd/R"))},KSF8:function(e,t,a){!function(e){"use strict";e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,t,a){return e<12?a?"sa":"SA":a?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(a("wd/R"))},KTz0:function(e,t,a){!function(e){"use strict";var t={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,a,s){var n=t.words[s];return 1===s.length?a?n[0]:n[1]:e+" "+t.correctGrammaticalCase(e,n)}};e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mjesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(a("wd/R"))},Loxo:function(e,t,a){!function(e){"use strict";e.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(a("wd/R"))},OIYi:function(e,t,a){!function(e){"use strict";e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a}})}(a("wd/R"))},Oaa7:function(e,t,a){!function(e){"use strict";e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},Ob0Z:function(e,t,a){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},a={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function s(e,t,a,s){var n="";if(t)switch(a){case"s":n="काही सेकंद";break;case"ss":n="%d सेकंद";break;case"m":n="एक मिनिट";break;case"mm":n="%d मिनिटे";break;case"h":n="एक तास";break;case"hh":n="%d तास";break;case"d":n="एक दिवस";break;case"dd":n="%d दिवस";break;case"M":n="एक महिना";break;case"MM":n="%d महिने";break;case"y":n="एक वर्ष";break;case"yy":n="%d वर्षे"}else switch(a){case"s":n="काही सेकंदां";break;case"ss":n="%d सेकंदां";break;case"m":n="एका मिनिटा";break;case"mm":n="%d मिनिटां";break;case"h":n="एका तासा";break;case"hh":n="%d तासां";break;case"d":n="एका दिवसा";break;case"dd":n="%d दिवसां";break;case"M":n="एका महिन्या";break;case"MM":n="%d महिन्यां";break;case"y":n="एका वर्षा";break;case"yy":n="%d वर्षां"}return n.replace(/%d/i,e)}e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:s,ss:s,m:s,mm:s,h:s,hh:s,d:s,dd:s,M:s,MM:s,y:s,yy:s},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात्री"===t?e<4?e:e+12:"सकाळी"===t?e:"दुपारी"===t?e>=10?e:e+12:"सायंकाळी"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"रात्री":e<10?"सकाळी":e<17?"दुपारी":e<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(a("wd/R"))},OjkT:function(e,t,a){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},a={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,t){return 12===e&&(e=0),"राति"===t?e<4?e:e+12:"बिहान"===t?e:"दिउँसो"===t?e>=10?e:e+12:"साँझ"===t?e+12:void 0},meridiem:function(e,t,a){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(a("wd/R"))},Oxv6:function(e,t,a){!function(e){"use strict";var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};e.defineLocale("tg",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Пагоҳ соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(e,t){return 12===e&&(e=0),"шаб"===t?e<4?e:e+12:"субҳ"===t?e:"рӯз"===t?e>=11?e:e+12:"бегоҳ"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"шаб":e<11?"субҳ":e<16?"рӯз":e<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(e){var a=e%10,s=e>=100?100:null;return e+(t[e]||t[a]||t[s])},week:{dow:1,doy:7}})}(a("wd/R"))},PA2r:function(e,t,a){!function(e){"use strict";var t="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),a="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),s=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],n=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function r(e){return e>1&&e<5&&1!=~~(e/10)}function d(e,t,a,s){var n=e+" ";switch(a){case"s":return t||s?"pár sekund":"pár sekundami";case"ss":return t||s?n+(r(e)?"sekundy":"sekund"):n+"sekundami";case"m":return t?"minuta":s?"minutu":"minutou";case"mm":return t||s?n+(r(e)?"minuty":"minut"):n+"minutami";case"h":return t?"hodina":s?"hodinu":"hodinou";case"hh":return t||s?n+(r(e)?"hodiny":"hodin"):n+"hodinami";case"d":return t||s?"den":"dnem";case"dd":return t||s?n+(r(e)?"dny":"dní"):n+"dny";case"M":return t||s?"měsíc":"měsícem";case"MM":return t||s?n+(r(e)?"měsíce":"měsíců"):n+"měsíci";case"y":return t||s?"rok":"rokem";case"yy":return t||s?n+(r(e)?"roky":"let"):n+"lety"}}e.defineLocale("cs",{months:t,monthsShort:a,monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:s,longMonthsParse:s,shortMonthsParse:s,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:d,ss:d,m:d,mm:d,h:d,hh:d,d:d,dd:d,M:d,MM:d,y:d,yy:d},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},PeUW:function(e,t,a){!function(e){"use strict";var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},a={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,a){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,t){return 12===e&&(e=0),"யாமம்"===t?e<2?e:e+12:"வைகறை"===t||"காலை"===t?e:"நண்பகல்"===t&&e>=10?e:e+12},week:{dow:0,doy:6}})}(a("wd/R"))},PpIw:function(e,t,a){!function(e){"use strict";var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},a={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})}(a("wd/R"))},Qj4J:function(e,t,a){!function(e){"use strict";e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(a("wd/R"))},RAwQ:function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return t?n[a][0]:n[a][1]}function a(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var t=e%10,s=e/10;return a(0===t?s:t)}if(e<1e4){for(;e>=10;)e/=10;return a(e)}return a(e/=1e3)}e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return a(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return a(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:t,mm:"%d Minutten",h:t,hh:"%d Stonnen",d:t,dd:"%d Deeg",M:t,MM:"%d Méint",y:t,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},S6ln:function(e,t,a){!function(e){"use strict";function t(e,t,a){var s=e+" ";switch(a){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return s+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(a("wd/R"))},SFxW:function(e,t,a){!function(e){"use strict";var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,a){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var a=e%10,s=e%100-a,n=e>=100?100:null;return e+(t[a]||t[s]||t[n])},week:{dow:1,doy:7}})}(a("wd/R"))},SatO:function(e,t,a){!function(e){"use strict";e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,a){var s=100*e+t;return s<600?"凌晨":s<900?"早上":s<1130?"上午":s<1230?"中午":s<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(a("wd/R"))},UDhR:function(e,t,a){!function(e){"use strict";e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"siang"===t?e>=11?e:e+12:"sore"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,a){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(a("wd/R"))},USCx:function(e,t,a){!function(e){"use strict";e.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Méitheamh","Iúil","Lúnasa","Meán Fómhair","Deaireadh Fómhair","Samhain","Nollaig"],monthsShort:["Eaná","Feab","Márt","Aibr","Beal","Méit","Iúil","Lúna","Meán","Deai","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Satharn"],weekdaysShort:["Dom","Lua","Mái","Céa","Déa","hAo","Sat"],weekdaysMin:["Do","Lu","Má","Ce","Dé","hA","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné aig] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d mí",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){var t=1===e?"d":e%10==2?"na":"mh";return e+t},week:{dow:1,doy:4}})}(a("wd/R"))},UpQW:function(e,t,a){!function(e){"use strict";var t=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],a=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];e.defineLocale("ur",{months:t,monthsShort:t,weekdays:a,weekdaysShort:a,weekdaysMin:a,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,a){return e<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(a("wd/R"))},Ur1D:function(e,t,a){!function(e){"use strict";e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,t,a){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,t){return 12===e&&(e=0),"ekuseni"===t?e:"emini"===t?e>=11?e:e+12:"entsambama"===t||"ebusuku"===t?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(a("wd/R"))},V2x9:function(e,t,a){!function(e){"use strict";e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},Vclq:function(e,t,a){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),a="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),s=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],n=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,s){return e?/-MMM-/.test(s)?a[e.month()]:t[e.month()]:t},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:s,longMonthsParse:s,shortMonthsParse:s,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(a("wd/R"))},WYrj:function(e,t,a){!function(e){"use strict";var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],a=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];e.defineLocale("dv",{months:t,monthsShort:t,weekdays:a,weekdaysShort:a,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,t,a){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}})}(a("wd/R"))},WxRl:function(e,t,a){!function(e){"use strict";var t="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function a(e,t,a,s){var n=e;switch(a){case"s":return s||t?"néhány másodperc":"néhány másodperce";case"ss":return n+(s||t)?" másodperc":" másodperce";case"m":return"egy"+(s||t?" perc":" perce");case"mm":return n+(s||t?" perc":" perce");case"h":return"egy"+(s||t?" óra":" órája");case"hh":return n+(s||t?" óra":" órája");case"d":return"egy"+(s||t?" nap":" napja");case"dd":return n+(s||t?" nap":" napja");case"M":return"egy"+(s||t?" hónap":" hónapja");case"MM":return n+(s||t?" hónap":" hónapja");case"y":return"egy"+(s||t?" év":" éve");case"yy":return n+(s||t?" év":" éve")}return""}function s(e){return(e?"":"[múlt] ")+"["+t[this.day()]+"] LT[-kor]"}e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,a){return e<12?!0===a?"de":"DE":!0===a?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return s.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return s.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},X709:function(e,t,a){!function(e){"use strict";e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"e":1===t?"a":2===t?"a":"e";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},XDpg:function(e,t,a){!function(e){"use strict";e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,a){var s=100*e+t;return s<600?"凌晨":s<900?"早上":s<1130?"上午":s<1230?"中午":s<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(a("wd/R"))},XLvN:function(e,t,a){!function(e){"use strict";e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,t){return 12===e&&(e=0),"రాత్రి"===t?e<4?e:e+12:"ఉదయం"===t?e:"మధ్యాహ్నం"===t?e>=10?e:e+12:"సాయంత్రం"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(a("wd/R"))},YRex:function(e,t,a){!function(e){"use strict";e.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(e,t){return 12===e&&(e=0),"يېرىم كېچە"===t||"سەھەر"===t||"چۈشتىن بۇرۇن"===t?e:"چۈشتىن كېيىن"===t||"كەچ"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,a){var s=100*e+t;return s<600?"يېرىم كېچە":s<900?"سەھەر":s<1130?"چۈشتىن بۇرۇن":s<1230?"چۈش":s<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"-كۈنى";case"w":case"W":return e+"-ھەپتە";default:return e}},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:7}})}(a("wd/R"))},Z4QM:function(e,t,a){!function(e){"use strict";var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],a=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];e.defineLocale("sd",{months:t,monthsShort:t,weekdays:a,weekdaysShort:a,weekdaysMin:a,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,a){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(a("wd/R"))},ZAMP:function(e,t,a){!function(e){"use strict";e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,a){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(a("wd/R"))},Zduo:function(e,t,a){!function(e){"use strict";e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,t,a){return e>11?a?"p.t.m.":"P.T.M.":a?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"sekundoj",ss:"%d sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(a("wd/R"))},aIdf:function(e,t,a){!function(e){"use strict";function t(e,t,a){return e+" "+function(e,t){return 2===t?function(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[a],e)}e.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(function e(t){return t>9?e(t%10):t}(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){var t=1===e?"añ":"vet";return e+t},week:{dow:1,doy:4}})}(a("wd/R"))},aIsn:function(e,t,a){!function(e){"use strict";e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},aQkU:function(e,t,a){!function(e){"use strict";e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,a=e%100;return 0===e?e+"-ев":0===a?e+"-ен":a>10&&a<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(a("wd/R"))},b1Dy:function(e,t,a){!function(e){"use strict";e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},bOMt:function(e,t,a){!function(e){"use strict";e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},bXm7:function(e,t,a){!function(e){"use strict";var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){var a=e%10,s=e>=100?100:null;return e+(t[e]||t[a]||t[s])},week:{dow:1,doy:7}})}(a("wd/R"))},bYM6:function(e,t,a){!function(e){"use strict";e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(a("wd/R"))},bpih:function(e,t,a){!function(e){"use strict";e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},bxKX:function(e,t,a){!function(e){"use strict";e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},cRix:function(e,t,a){!function(e){"use strict";var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),a="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,s){return e?/-MMM-/.test(s)?a[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(a("wd/R"))},czMo:function(e,t,a){!function(e){"use strict";e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a}})}(a("wd/R"))},dNwA:function(e,t,a){!function(e){"use strict";e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(a("wd/R"))},"e+ae":function(e,t,a){!function(e){"use strict";var t="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),a="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function s(e){return e>1&&e<5}function n(e,t,a,n){var r=e+" ";switch(a){case"s":return t||n?"pár sekúnd":"pár sekundami";case"ss":return t||n?r+(s(e)?"sekundy":"sekúnd"):r+"sekundami";case"m":return t?"minúta":n?"minútu":"minútou";case"mm":return t||n?r+(s(e)?"minúty":"minút"):r+"minútami";case"h":return t?"hodina":n?"hodinu":"hodinou";case"hh":return t||n?r+(s(e)?"hodiny":"hodín"):r+"hodinami";case"d":return t||n?"deň":"dňom";case"dd":return t||n?r+(s(e)?"dni":"dní"):r+"dňami";case"M":return t||n?"mesiac":"mesiacom";case"MM":return t||n?r+(s(e)?"mesiace":"mesiacov"):r+"mesiacmi";case"y":return t||n?"rok":"rokom";case"yy":return t||n?r+(s(e)?"roky":"rokov"):r+"rokmi"}}e.defineLocale("sk",{months:t,monthsShort:a,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},fzPg:function(e,t,a){!function(e){"use strict";e.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(a("wd/R"))},gVVK:function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n=e+" ";switch(a){case"s":return t||s?"nekaj sekund":"nekaj sekundami";case"ss":return n+=1===e?t?"sekundo":"sekundi":2===e?t||s?"sekundi":"sekundah":e<5?t||s?"sekunde":"sekundah":"sekund";case"m":return t?"ena minuta":"eno minuto";case"mm":return n+=1===e?t?"minuta":"minuto":2===e?t||s?"minuti":"minutama":e<5?t||s?"minute":"minutami":t||s?"minut":"minutami";case"h":return t?"ena ura":"eno uro";case"hh":return n+=1===e?t?"ura":"uro":2===e?t||s?"uri":"urama":e<5?t||s?"ure":"urami":t||s?"ur":"urami";case"d":return t||s?"en dan":"enim dnem";case"dd":return n+=1===e?t||s?"dan":"dnem":2===e?t||s?"dni":"dnevoma":t||s?"dni":"dnevi";case"M":return t||s?"en mesec":"enim mesecem";case"MM":return n+=1===e?t||s?"mesec":"mesecem":2===e?t||s?"meseca":"mesecema":e<5?t||s?"mesece":"meseci":t||s?"mesecev":"meseci";case"y":return t||s?"eno leto":"enim letom";case"yy":return n+=1===e?t||s?"leto":"letom":2===e?t||s?"leti":"letoma":e<5?t||s?"leta":"leti":t||s?"let":"leti"}}e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(a("wd/R"))},gekB:function(e,t,a){!function(e){"use strict";var t="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),a=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",t[7],t[8],t[9]];function s(e,s,n,r){var d="";switch(n){case"s":return r?"muutaman sekunnin":"muutama sekunti";case"ss":return r?"sekunnin":"sekuntia";case"m":return r?"minuutin":"minuutti";case"mm":d=r?"minuutin":"minuuttia";break;case"h":return r?"tunnin":"tunti";case"hh":d=r?"tunnin":"tuntia";break;case"d":return r?"päivän":"päivä";case"dd":d=r?"päivän":"päivää";break;case"M":return r?"kuukauden":"kuukausi";case"MM":d=r?"kuukauden":"kuukautta";break;case"y":return r?"vuoden":"vuosi";case"yy":d=r?"vuoden":"vuotta"}return d=function(e,s){return e<10?s?a[e]:t[e]:e}(e,r)+" "+d}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:s,ss:s,m:s,mm:s,h:s,hh:s,d:s,dd:s,M:s,MM:s,y:s,yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},gjCT:function(e,t,a){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},a={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,a){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return a[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:0,doy:6}})}(a("wd/R"))},hKrs:function(e,t,a){!function(e){"use strict";e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,a=e%100;return 0===e?e+"-ев":0===a?e+"-ен":a>10&&a<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(a("wd/R"))},honF:function(e,t,a){!function(e){"use strict";var t={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},a={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},week:{dow:1,doy:4}})}(a("wd/R"))},iEDd:function(e,t,a){!function(e){"use strict";e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},iYuL:function(e,t,a){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),a="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),s=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],n=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,s){return e?/-MMM-/.test(s)?a[e.month()]:t[e.month()]:t},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:s,longMonthsParse:s,shortMonthsParse:s,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},jUeY:function(e,t,a){!function(e){"use strict";e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,a){return e>11?a?"μμ":"ΜΜ":a?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var a=this._calendarEl[e],s=t&&t.hours();return function(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}(a)&&(a=a.apply(t)),a.replace("{}",s%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(a("wd/R"))},jVdC:function(e,t,a){!function(e){"use strict";var t="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),a="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function s(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function n(e,t,a){var n=e+" ";switch(a){case"ss":return n+(s(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return n+(s(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return n+(s(e)?"godziny":"godzin");case"MM":return n+(s(e)?"miesiące":"miesięcy");case"yy":return n+(s(e)?"lata":"lat")}}e.defineLocale("pl",{months:function(e,s){return e?""===s?"("+a[e.month()]+"|"+t[e.month()]+")":/D MMMM/.test(s)?a[e.month()]:t[e.month()]:t},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:n,m:n,mm:n,h:n,hh:n,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:n,y:"rok",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},jfSC:function(e,t,a){!function(e){"use strict";var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},a={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,a){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"ثانیه d%",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,function(e){return a[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(a("wd/R"))},jnO4:function(e,t,a){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},a={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},s=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(t,a,r,d){var i=s(t),_=n[e][s(t)];return 2===i&&(_=_[a?0:1]),_.replace(/%d/i,t)}},d=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar",{months:d,monthsShort:d,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,a){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return a[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})}(a("wd/R"))},kEOa:function(e,t,a){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},a={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,a){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(a("wd/R"))},kOpN:function(e,t,a){!function(e){"use strict";e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,a){var s=100*e+t;return s<600?"凌晨":s<900?"早上":s<1130?"上午":s<1230?"中午":s<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(a("wd/R"))},l5ep:function(e,t,a){!function(e){"use strict";e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var t=e,a="";return t>20?a=40===t||50===t||60===t||80===t||100===t?"fed":"ain":t>0&&(a=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][t]),e+a},week:{dow:1,doy:4}})}(a("wd/R"))},lXzo:function(e,t,a){!function(e){"use strict";function t(e,t,a){var s={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===a?t?"минута":"минуту":e+" "+function(e,t){var a=e.split("_");return t%10==1&&t%100!=11?a[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?a[1]:a[2]}(s[a],+e)}var a=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:a,longMonthsParse:a,shortMonthsParse:a,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,a){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})}(a("wd/R"))},lYtQ:function(e,t,a){!function(e){"use strict";function t(e,t,a,s){switch(a){case"s":return t?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(t?" секунд":" секундын");case"m":case"mm":return e+(t?" минут":" минутын");case"h":case"hh":return e+(t?" цаг":" цагийн");case"d":case"dd":return e+(t?" өдөр":" өдрийн");case"M":case"MM":return e+(t?" сар":" сарын");case"y":case"yy":return e+(t?" жил":" жилийн");default:return e}}e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(e){return"ҮХ"===e},meridiem:function(e,t,a){return e<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+" өдөр";default:return e}}})}(a("wd/R"))},lgnt:function(e,t,a){!function(e){"use strict";var t={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){var a=e%10,s=e>=100?100:null;return e+(t[e]||t[a]||t[s])},week:{dow:1,doy:7}})}(a("wd/R"))},lyxo:function(e,t,a){!function(e){"use strict";function t(e,t,a){var s=" ";return(e%100>=20||e>=100&&e%100==0)&&(s=" de "),e+s+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[a]}e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}})}(a("wd/R"))},nyYc:function(e,t,a){!function(e){"use strict";e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,t){switch(t){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(a("wd/R"))},o1bE:function(e,t,a){!function(e){"use strict";e.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}})}(a("wd/R"))},"p/rL":function(e,t,a){!function(e){"use strict";e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(a("wd/R"))},raLr:function(e,t,a){!function(e){"use strict";function t(e,t,a){var s={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===a?t?"хвилина":"хвилину":"h"===a?t?"година":"годину":e+" "+function(e,t){var a=e.split("_");return t%10==1&&t%100!=11?a[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?a[1]:a[2]}(s[a],+e)}function a(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(e,t){var a={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};if(!0===e)return a.nominative.slice(1,7).concat(a.nominative.slice(0,1));if(!e)return a.nominative;var s=/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative";return a[s][e.day()]},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:a("[Сьогодні "),nextDay:a("[Завтра "),lastDay:a("[Вчора "),nextWeek:a("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return a("[Минулої] dddd [").call(this);case 1:case 2:case 4:return a("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,a){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}(a("wd/R"))},"s+uk":function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?n[a][0]:n[a][1]}e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},sp3z:function(e,t,a){!function(e){"use strict";e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,t,a){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}})}(a("wd/R"))},tGlX:function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?n[a][0]:n[a][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},tT3J:function(e,t,a){!function(e){"use strict";e.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(a("wd/R"))},tUCv:function(e,t,a){!function(e){"use strict";e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,t){return 12===e&&(e=0),"enjing"===t?e:"siyang"===t?e>=11?e:e+12:"sonten"===t||"ndalu"===t?e+12:void 0},meridiem:function(e,t,a){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(a("wd/R"))},u3GI:function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?n[a][0]:n[a][1]}e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},uEye:function(e,t,a){!function(e){"use strict";e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},uXwI:function(e,t,a){!function(e){"use strict";var t={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function a(e,t,a){return a?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function s(e,s,n){return e+" "+a(t[n],e,s)}function n(e,s,n){return a(t[n],e,s)}e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,t){return t?"dažas sekundes":"dažām sekundēm"},ss:s,m:n,mm:s,h:n,hh:s,d:n,dd:s,M:n,MM:s,y:n,yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},wQk9:function(e,t,a){!function(e){"use strict";e.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(a("wd/R"))},"wd/R":function(e,t,a){(function(e){e.exports=function(){"use strict";var t,s;function n(){return t.apply(null,arguments)}function r(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function d(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function i(e){return void 0===e}function _(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function o(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function u(e,t){var a,s=[];for(a=0;a>>0,s=0;s0)for(a=0;a=0;return(r?a?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+s}var J=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,N=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,C={},I={};function U(e,t,a,s){var n=s;"string"==typeof s&&(n=function(){return this[s]()}),e&&(I[e]=n),t&&(I[t[0]]=function(){return z(n.apply(this,arguments),t[1],t[2])}),a&&(I[a]=function(){return this.localeData().ordinal(n.apply(this,arguments),e)})}function G(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function V(e,t){return e.isValid()?(t=K(t,e.localeData()),C[t]=C[t]||function(e){var t,a,s=e.match(J);for(t=0,a=s.length;t=0&&N.test(e);)e=e.replace(N,s),N.lastIndex=0,a-=1;return e}var Z=/\d/,B=/\d\d/,$=/\d{3}/,q=/\d{4}/,Q=/[+-]?\d{6}/,X=/\d\d?/,ee=/\d\d\d\d?/,te=/\d\d\d\d\d\d?/,ae=/\d{1,3}/,se=/\d{1,4}/,ne=/[+-]?\d{1,6}/,re=/\d+/,de=/[+-]?\d+/,ie=/Z|[+-]\d\d:?\d\d/gi,_e=/Z|[+-]\d\d(?::?\d\d)?/gi,oe=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,ue={};function me(e,t,a){ue[e]=j(t)?t:function(e,s){return e&&a?a:t}}function le(e,t){return m(ue,e)?ue[e](t._strict,t._locale):new RegExp(function(e){return Me(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,a,s,n){return t||a||s||n}))}(e))}function Me(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var he={};function ce(e,t){var a,s=t;for("string"==typeof e&&(e=[e]),_(t)&&(s=function(e,a){a[t]=T(e)}),a=0;a68?1900:2e3)};var be,je=xe("FullYear",!0);function xe(e,t){return function(a){return null!=a?(Pe(this,e,a),n.updateOffset(this,t),this):Oe(this,e)}}function Oe(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function Pe(e,t,a){e.isValid()&&!isNaN(a)&&("FullYear"===t&&He(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](a,e.month(),We(a,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](a))}function We(e,t){if(isNaN(e)||isNaN(t))return NaN;var a=function(e,t){return(e%t+t)%t}(t,12);return e+=(t-a)/12,1===a?He(e)?29:28:31-a%7%2}be=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t=0){var a=Array.prototype.slice.call(arguments);a[0]=e+400,t=new Date(Date.UTC.apply(null,a)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)}else t=new Date(Date.UTC.apply(null,arguments));return t}function Ue(e,t,a){var s=7+t-a,n=(7+Ie(e,0,s).getUTCDay()-t)%7;return-n+s-1}function Ge(e,t,a,s,n){var r,d,i=(7+a-s)%7,_=Ue(e,s,n),o=1+7*(t-1)+i+_;return o<=0?d=Se(r=e-1)+o:o>Se(e)?(r=e+1,d=o-Se(e)):(r=e,d=o),{year:r,dayOfYear:d}}function Ve(e,t,a){var s,n,r=Ue(e.year(),t,a),d=Math.floor((e.dayOfYear()-r-1)/7)+1;return d<1?(n=e.year()-1,s=d+Ke(n,t,a)):d>Ke(e.year(),t,a)?(s=d-Ke(e.year(),t,a),n=e.year()+1):(n=e.year(),s=d),{week:s,year:n}}function Ke(e,t,a){var s=Ue(e,t,a),n=Ue(e+1,t,a);return(Se(e)-s+n)/7}function Ze(e,t){return e.slice(t,7).concat(e.slice(0,t))}U("w",["ww",2],"wo","week"),U("W",["WW",2],"Wo","isoWeek"),W("week","w"),W("isoWeek","W"),R("week",5),R("isoWeek",5),me("w",X),me("ww",X,B),me("W",X),me("WW",X,B),Le(["w","ww","W","WW"],function(e,t,a,s){t[s.substr(0,1)]=T(e)}),U("d",0,"do","day"),U("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),U("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),U("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),U("e",0,0,"weekday"),U("E",0,0,"isoWeekday"),W("day","d"),W("weekday","e"),W("isoWeekday","E"),R("day",11),R("weekday",11),R("isoWeekday",11),me("d",X),me("e",X),me("E",X),me("dd",function(e,t){return t.weekdaysMinRegex(e)}),me("ddd",function(e,t){return t.weekdaysShortRegex(e)}),me("dddd",function(e,t){return t.weekdaysRegex(e)}),Le(["dd","ddd","dddd"],function(e,t,a,s){var n=a._locale.weekdaysParse(e,s,a._strict);null!=n?t.d=n:h(a).invalidWeekday=e}),Le(["d","e","E"],function(e,t,a,s){t[s]=T(e)});var Be="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),$e="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),qe="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Qe=oe,Xe=oe,et=oe;function tt(){function e(e,t){return t.length-e.length}var t,a,s,n,r,d=[],i=[],_=[],o=[];for(t=0;t<7;t++)a=M([2e3,1]).day(t),s=this.weekdaysMin(a,""),n=this.weekdaysShort(a,""),r=this.weekdays(a,""),d.push(s),i.push(n),_.push(r),o.push(s),o.push(n),o.push(r);for(d.sort(e),i.sort(e),_.sort(e),o.sort(e),t=0;t<7;t++)i[t]=Me(i[t]),_[t]=Me(_[t]),o[t]=Me(o[t]);this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+_.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+d.join("|")+")","i")}function at(){return this.hours()%12||12}function st(e,t){U(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function nt(e,t){return t._meridiemParse}U("H",["HH",2],0,"hour"),U("h",["hh",2],0,at),U("k",["kk",2],0,function(){return this.hours()||24}),U("hmm",0,0,function(){return""+at.apply(this)+z(this.minutes(),2)}),U("hmmss",0,0,function(){return""+at.apply(this)+z(this.minutes(),2)+z(this.seconds(),2)}),U("Hmm",0,0,function(){return""+this.hours()+z(this.minutes(),2)}),U("Hmmss",0,0,function(){return""+this.hours()+z(this.minutes(),2)+z(this.seconds(),2)}),st("a",!0),st("A",!1),W("hour","h"),R("hour",13),me("a",nt),me("A",nt),me("H",X),me("h",X),me("k",X),me("HH",X,B),me("hh",X,B),me("kk",X,B),me("hmm",ee),me("hmmss",te),me("Hmm",ee),me("Hmmss",te),ce(["H","HH"],ke),ce(["k","kk"],function(e,t,a){var s=T(e);t[ke]=24===s?0:s}),ce(["a","A"],function(e,t,a){a._isPm=a._locale.isPM(e),a._meridiem=e}),ce(["h","hh"],function(e,t,a){t[ke]=T(e),h(a).bigHour=!0}),ce("hmm",function(e,t,a){var s=e.length-2;t[ke]=T(e.substr(0,s)),t[De]=T(e.substr(s)),h(a).bigHour=!0}),ce("hmmss",function(e,t,a){var s=e.length-4,n=e.length-2;t[ke]=T(e.substr(0,s)),t[De]=T(e.substr(s,2)),t[Te]=T(e.substr(n)),h(a).bigHour=!0}),ce("Hmm",function(e,t,a){var s=e.length-2;t[ke]=T(e.substr(0,s)),t[De]=T(e.substr(s))}),ce("Hmmss",function(e,t,a){var s=e.length-4,n=e.length-2;t[ke]=T(e.substr(0,s)),t[De]=T(e.substr(s,2)),t[Te]=T(e.substr(n))});var rt,dt=xe("Hours",!0),it={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ee,monthsShort:Fe,week:{dow:0,doy:6},weekdays:Be,weekdaysMin:qe,weekdaysShort:$e,meridiemParse:/[ap]\.?m?\.?/i},_t={},ot={};function ut(e){return e?e.toLowerCase().replace("_","-"):e}function mt(t){var s=null;if(!_t[t]&&void 0!==e&&e&&e.exports)try{s=rt._abbr,a("RnhZ")("./"+t),lt(s)}catch(e){}return _t[t]}function lt(e,t){var a;return e&&((a=i(t)?ht(e):Mt(e,t))?rt=a:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),rt._abbr}function Mt(e,t){if(null!==t){var a,s=it;if(t.abbr=e,null!=_t[e])b("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=_t[e]._config;else if(null!=t.parentLocale)if(null!=_t[t.parentLocale])s=_t[t.parentLocale]._config;else{if(null==(a=mt(t.parentLocale)))return ot[t.parentLocale]||(ot[t.parentLocale]=[]),ot[t.parentLocale].push({name:e,config:t}),null;s=a._config}return _t[e]=new O(x(s,t)),ot[e]&&ot[e].forEach(function(e){Mt(e.name,e.config)}),lt(e),_t[e]}return delete _t[e],null}function ht(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return rt;if(!r(e)){if(t=mt(e))return t;e=[e]}return function(e){for(var t,a,s,n,r=0;r0;){if(s=mt(n.slice(0,t).join("-")))return s;if(a&&a.length>=t&&w(n,a,!0)>=t-1)break;t--}r++}return rt}(e)}function ct(e){var t,a=e._a;return a&&-2===h(e).overflow&&(t=a[fe]<0||a[fe]>11?fe:a[pe]<1||a[pe]>We(a[ye],a[fe])?pe:a[ke]<0||a[ke]>24||24===a[ke]&&(0!==a[De]||0!==a[Te]||0!==a[we])?ke:a[De]<0||a[De]>59?De:a[Te]<0||a[Te]>59?Te:a[we]<0||a[we]>999?we:-1,h(e)._overflowDayOfYear&&(tpe)&&(t=pe),h(e)._overflowWeeks&&-1===t&&(t=ge),h(e)._overflowWeekday&&-1===t&&(t=ve),h(e).overflow=t),e}function Lt(e,t,a){return null!=e?e:null!=t?t:a}function Yt(e){var t,a,s,r,d,i=[];if(!e._d){for(s=function(e){var t=new Date(n.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}(e),e._w&&null==e._a[pe]&&null==e._a[fe]&&function(e){var t,a,s,n,r,d,i,_;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)r=1,d=4,a=Lt(t.GG,e._a[ye],Ve(Ot(),1,4).year),s=Lt(t.W,1),((n=Lt(t.E,1))<1||n>7)&&(_=!0);else{r=e._locale._week.dow,d=e._locale._week.doy;var o=Ve(Ot(),r,d);a=Lt(t.gg,e._a[ye],o.year),s=Lt(t.w,o.week),null!=t.d?((n=t.d)<0||n>6)&&(_=!0):null!=t.e?(n=t.e+r,(t.e<0||t.e>6)&&(_=!0)):n=r}s<1||s>Ke(a,r,d)?h(e)._overflowWeeks=!0:null!=_?h(e)._overflowWeekday=!0:(i=Ge(a,s,n,r,d),e._a[ye]=i.year,e._dayOfYear=i.dayOfYear)}(e),null!=e._dayOfYear&&(d=Lt(e._a[ye],s[ye]),(e._dayOfYear>Se(d)||0===e._dayOfYear)&&(h(e)._overflowDayOfYear=!0),a=Ie(d,0,e._dayOfYear),e._a[fe]=a.getUTCMonth(),e._a[pe]=a.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=i[t]=s[t];for(;t<7;t++)e._a[t]=i[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ke]&&0===e._a[De]&&0===e._a[Te]&&0===e._a[we]&&(e._nextDay=!0,e._a[ke]=0),e._d=(e._useUTC?Ie:function(e,t,a,s,n,r,d){var i;return e<100&&e>=0?(i=new Date(e+400,t,a,s,n,r,d),isFinite(i.getFullYear())&&i.setFullYear(e)):i=new Date(e,t,a,s,n,r,d),i}).apply(null,i),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ke]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(h(e).weekdayMismatch=!0)}}var yt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ft=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,pt=/Z|[+-]\d\d(?::?\d\d)?/,kt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Dt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Tt=/^\/?Date\((\-?\d+)/i;function wt(e){var t,a,s,n,r,d,i=e._i,_=yt.exec(i)||ft.exec(i);if(_){for(h(e).iso=!0,t=0,a=kt.length;t0&&h(e).unusedInput.push(d),i=i.slice(i.indexOf(a)+a.length),o+=a.length),I[r]?(a?h(e).empty=!1:h(e).unusedTokens.push(r),Ye(r,a,e)):e._strict&&!a&&h(e).unusedTokens.push(r);h(e).charsLeftOver=_-o,i.length>0&&h(e).unusedInput.push(i),e._a[ke]<=12&&!0===h(e).bigHour&&e._a[ke]>0&&(h(e).bigHour=void 0),h(e).parsedDateParts=e._a.slice(0),h(e).meridiem=e._meridiem,e._a[ke]=function(e,t,a){var s;return null==a?t:null!=e.meridiemHour?e.meridiemHour(t,a):null!=e.isPM?((s=e.isPM(a))&&t<12&&(t+=12),s||12!==t||(t=0),t):t}(e._locale,e._a[ke],e._meridiem),Yt(e),ct(e)}else Ht(e);else wt(e)}function jt(e){var t=e._i,a=e._f;return e._locale=e._locale||ht(e._l),null===t||void 0===a&&""===t?L({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),k(t)?new p(ct(t)):(o(t)?e._d=t:r(a)?function(e){var t,a,s,n,r;if(0===e._f.length)return h(e).invalidFormat=!0,void(e._d=new Date(NaN));for(n=0;nthis?this:e:L()});function At(e,t){var a,s;if(1===t.length&&r(t[0])&&(t=t[0]),!t.length)return Ot();for(a=t[0],s=1;s=0?new Date(e+400,t,a)-_a:new Date(e,t,a).valueOf()}function ma(e,t,a){return e<100&&e>=0?Date.UTC(e+400,t,a)-_a:Date.UTC(e,t,a)}function la(e,t){U(0,[e,e.length],0,t)}function Ma(e,t,a,s,n){var r;return null==e?Ve(this,s,n).year:(r=Ke(e,s,n),t>r&&(t=r),function(e,t,a,s,n){var r=Ge(e,t,a,s,n),d=Ie(r.year,0,r.dayOfYear);return this.year(d.getUTCFullYear()),this.month(d.getUTCMonth()),this.date(d.getUTCDate()),this}.call(this,e,t,a,s,n))}U(0,["gg",2],0,function(){return this.weekYear()%100}),U(0,["GG",2],0,function(){return this.isoWeekYear()%100}),la("gggg","weekYear"),la("ggggg","weekYear"),la("GGGG","isoWeekYear"),la("GGGGG","isoWeekYear"),W("weekYear","gg"),W("isoWeekYear","GG"),R("weekYear",1),R("isoWeekYear",1),me("G",de),me("g",de),me("GG",X,B),me("gg",X,B),me("GGGG",se,q),me("gggg",se,q),me("GGGGG",ne,Q),me("ggggg",ne,Q),Le(["gggg","ggggg","GGGG","GGGGG"],function(e,t,a,s){t[s.substr(0,2)]=T(e)}),Le(["gg","GG"],function(e,t,a,s){t[s]=n.parseTwoDigitYear(e)}),U("Q",0,"Qo","quarter"),W("quarter","Q"),R("quarter",7),me("Q",Z),ce("Q",function(e,t){t[fe]=3*(T(e)-1)}),U("D",["DD",2],"Do","date"),W("date","D"),R("date",9),me("D",X),me("DD",X,B),me("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),ce(["D","DD"],pe),ce("Do",function(e,t){t[pe]=T(e.match(X)[0])});var ha=xe("Date",!0);U("DDD",["DDDD",3],"DDDo","dayOfYear"),W("dayOfYear","DDD"),R("dayOfYear",4),me("DDD",ae),me("DDDD",$),ce(["DDD","DDDD"],function(e,t,a){a._dayOfYear=T(e)}),U("m",["mm",2],0,"minute"),W("minute","m"),R("minute",14),me("m",X),me("mm",X,B),ce(["m","mm"],De);var ca=xe("Minutes",!1);U("s",["ss",2],0,"second"),W("second","s"),R("second",15),me("s",X),me("ss",X,B),ce(["s","ss"],Te);var La,Ya=xe("Seconds",!1);for(U("S",0,0,function(){return~~(this.millisecond()/100)}),U(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),U(0,["SSS",3],0,"millisecond"),U(0,["SSSS",4],0,function(){return 10*this.millisecond()}),U(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),U(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),U(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),U(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),U(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),W("millisecond","ms"),R("millisecond",16),me("S",ae,Z),me("SS",ae,B),me("SSS",ae,$),La="SSSS";La.length<=9;La+="S")me(La,re);function ya(e,t){t[we]=T(1e3*("0."+e))}for(La="S";La.length<=9;La+="S")ce(La,ya);var fa=xe("Milliseconds",!1);U("z",0,0,"zoneAbbr"),U("zz",0,0,"zoneName");var pa=p.prototype;function ka(e){return e}pa.add=Xt,pa.calendar=function(e,t){var a=e||Ot(),s=It(a,this).startOf("day"),r=n.calendarFormat(this,s)||"sameElse",d=t&&(j(t[r])?t[r].call(this,a):t[r]);return this.format(d||this.localeData().calendar(r,this,Ot(a)))},pa.clone=function(){return new p(this)},pa.diff=function(e,t,a){var s,n,r;if(!this.isValid())return NaN;if(!(s=It(e,this)).isValid())return NaN;switch(n=6e4*(s.utcOffset()-this.utcOffset()),t=A(t)){case"year":r=ta(this,s)/12;break;case"month":r=ta(this,s);break;case"quarter":r=ta(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-n)/864e5;break;case"week":r=(this-s-n)/6048e5;break;default:r=this-s}return a?r:D(r)},pa.endOf=function(e){var t;if(void 0===(e=A(e))||"millisecond"===e||!this.isValid())return this;var a=this._isUTC?ma:ua;switch(e){case"year":t=a(this.year()+1,0,1)-1;break;case"quarter":t=a(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=a(this.year(),this.month()+1,1)-1;break;case"week":t=a(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=a(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=a(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=ia-oa(t+(this._isUTC?0:this.utcOffset()*da),ia)-1;break;case"minute":t=this._d.valueOf(),t+=da-oa(t,da)-1;break;case"second":t=this._d.valueOf(),t+=ra-oa(t,ra)-1}return this._d.setTime(t),n.updateOffset(this,!0),this},pa.format=function(e){e||(e=this.isUtc()?n.defaultFormatUtc:n.defaultFormat);var t=V(this,e);return this.localeData().postformat(t)},pa.from=function(e,t){return this.isValid()&&(k(e)&&e.isValid()||Ot(e).isValid())?Zt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},pa.fromNow=function(e){return this.from(Ot(),e)},pa.to=function(e,t){return this.isValid()&&(k(e)&&e.isValid()||Ot(e).isValid())?Zt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},pa.toNow=function(e){return this.to(Ot(),e)},pa.get=function(e){return j(this[e=A(e)])?this[e]():this},pa.invalidAt=function(){return h(this).overflow},pa.isAfter=function(e,t){var a=k(e)?e:Ot(e);return!(!this.isValid()||!a.isValid())&&("millisecond"===(t=A(t)||"millisecond")?this.valueOf()>a.valueOf():a.valueOf()9999?V(a,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):j(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",V(a,"Z")):V(a,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},pa.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var a="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n=t+'[")]';return this.format(a+s+"-MM-DD[T]HH:mm:ss.SSS"+n)},pa.toJSON=function(){return this.isValid()?this.toISOString():null},pa.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},pa.unix=function(){return Math.floor(this.valueOf()/1e3)},pa.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},pa.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},pa.year=je,pa.isLeapYear=function(){return He(this.year())},pa.weekYear=function(e){return Ma.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},pa.isoWeekYear=function(e){return Ma.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},pa.quarter=pa.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},pa.month=ze,pa.daysInMonth=function(){return We(this.year(),this.month())},pa.week=pa.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},pa.isoWeek=pa.isoWeeks=function(e){var t=Ve(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},pa.weeksInYear=function(){var e=this.localeData()._week;return Ke(this.year(),e.dow,e.doy)},pa.isoWeeksInYear=function(){return Ke(this.year(),1,4)},pa.date=ha,pa.day=pa.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=function(e,t){return"string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}(e,this.localeData()),this.add(e-t,"d")):t},pa.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},pa.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=function(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7},pa.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},pa.hour=pa.hours=dt,pa.minute=pa.minutes=ca,pa.second=pa.seconds=Ya,pa.millisecond=pa.milliseconds=fa,pa.utcOffset=function(e,t,a){var s,r=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=Ct(_e,e)))return this}else Math.abs(e)<16&&!a&&(e*=60);return!this._isUTC&&t&&(s=Ut(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),r!==e&&(!t||this._changeInProgress?Qt(this,Zt(e-r,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,n.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?r:Ut(this)},pa.utc=function(e){return this.utcOffset(0,e)},pa.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Ut(this),"m")),this},pa.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Ct(ie,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},pa.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Ot(e).utcOffset():0,(this.utcOffset()-e)%60==0)},pa.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},pa.isLocal=function(){return!!this.isValid()&&!this._isUTC},pa.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},pa.isUtc=Gt,pa.isUTC=Gt,pa.zoneAbbr=function(){return this._isUTC?"UTC":""},pa.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},pa.dates=v("dates accessor is deprecated. Use date instead.",ha),pa.months=v("months accessor is deprecated. Use month instead",ze),pa.years=v("years accessor is deprecated. Use year instead",je),pa.zone=v("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),pa.isDSTShifted=v("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!i(this._isDSTShifted))return this._isDSTShifted;var e={};if(y(e,this),(e=jt(e))._a){var t=e._isUTC?M(e._a):Ot(e._a);this._isDSTShifted=this.isValid()&&w(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var Da=O.prototype;function Ta(e,t,a,s){var n=ht(),r=M().set(s,t);return n[a](r,e)}function wa(e,t,a){if(_(e)&&(t=e,e=void 0),e=e||"",null!=t)return Ta(e,t,a,"month");var s,n=[];for(s=0;s<12;s++)n[s]=Ta(e,s,a,"month");return n}function ga(e,t,a,s){"boolean"==typeof e?(_(t)&&(a=t,t=void 0),t=t||""):(a=t=e,e=!1,_(t)&&(a=t,t=void 0),t=t||"");var n,r=ht(),d=e?r._week.dow:0;if(null!=a)return Ta(t,(a+d)%7,s,"day");var i=[];for(n=0;n<7;n++)i[n]=Ta(t,(n+d)%7,s,"day");return i}Da.calendar=function(e,t,a){var s=this._calendar[e]||this._calendar.sameElse;return j(s)?s.call(t,a):s},Da.longDateFormat=function(e){var t=this._longDateFormat[e],a=this._longDateFormat[e.toUpperCase()];return t||!a?t:(this._longDateFormat[e]=a.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},Da.invalidDate=function(){return this._invalidDate},Da.ordinal=function(e){return this._ordinal.replace("%d",e)},Da.preparse=ka,Da.postformat=ka,Da.relativeTime=function(e,t,a,s){var n=this._relativeTime[a];return j(n)?n(e,t,a,s):n.replace(/%d/i,e)},Da.pastFuture=function(e,t){var a=this._relativeTime[e>0?"future":"past"];return j(a)?a(t):a.replace(/%s/i,t)},Da.set=function(e){var t,a;for(a in e)j(t=e[a])?this[a]=t:this["_"+a]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},Da.months=function(e,t){return e?r(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||Ae).test(t)?"format":"standalone"][e.month()]:r(this._months)?this._months:this._months.standalone},Da.monthsShort=function(e,t){return e?r(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[Ae.test(t)?"format":"standalone"][e.month()]:r(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},Da.monthsParse=function(e,t,a){var s,n,r;if(this._monthsParseExact)return function(e,t,a){var s,n,r,d=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=M([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return a?"MMM"===t?-1!==(n=be.call(this._shortMonthsParse,d))?n:null:-1!==(n=be.call(this._longMonthsParse,d))?n:null:"MMM"===t?-1!==(n=be.call(this._shortMonthsParse,d))?n:-1!==(n=be.call(this._longMonthsParse,d))?n:null:-1!==(n=be.call(this._longMonthsParse,d))?n:-1!==(n=be.call(this._shortMonthsParse,d))?n:null}.call(this,e,t,a);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(n=M([2e3,s]),a&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),a||this._monthsParse[s]||(r="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),a&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(a&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!a&&this._monthsParse[s].test(e))return s}},Da.monthsRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ce.call(this),e?this._monthsStrictRegex:this._monthsRegex):(m(this,"_monthsRegex")||(this._monthsRegex=Ne),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},Da.monthsShortRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ce.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(m(this,"_monthsShortRegex")||(this._monthsShortRegex=Je),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},Da.week=function(e){return Ve(e,this._week.dow,this._week.doy).week},Da.firstDayOfYear=function(){return this._week.doy},Da.firstDayOfWeek=function(){return this._week.dow},Da.weekdays=function(e,t){var a=r(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?Ze(a,this._week.dow):e?a[e.day()]:a},Da.weekdaysMin=function(e){return!0===e?Ze(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},Da.weekdaysShort=function(e){return!0===e?Ze(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},Da.weekdaysParse=function(e,t,a){var s,n,r;if(this._weekdaysParseExact)return function(e,t,a){var s,n,r,d=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=M([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return a?"dddd"===t?-1!==(n=be.call(this._weekdaysParse,d))?n:null:"ddd"===t?-1!==(n=be.call(this._shortWeekdaysParse,d))?n:null:-1!==(n=be.call(this._minWeekdaysParse,d))?n:null:"dddd"===t?-1!==(n=be.call(this._weekdaysParse,d))?n:-1!==(n=be.call(this._shortWeekdaysParse,d))?n:-1!==(n=be.call(this._minWeekdaysParse,d))?n:null:"ddd"===t?-1!==(n=be.call(this._shortWeekdaysParse,d))?n:-1!==(n=be.call(this._weekdaysParse,d))?n:-1!==(n=be.call(this._minWeekdaysParse,d))?n:null:-1!==(n=be.call(this._minWeekdaysParse,d))?n:-1!==(n=be.call(this._weekdaysParse,d))?n:-1!==(n=be.call(this._shortWeekdaysParse,d))?n:null}.call(this,e,t,a);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(n=M([2e3,1]).day(s),a&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(n,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(n,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(n,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),a&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(a&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(a&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!a&&this._weekdaysParse[s].test(e))return s}},Da.weekdaysRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||tt.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(m(this,"_weekdaysRegex")||(this._weekdaysRegex=Qe),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},Da.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||tt.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(m(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Xe),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},Da.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||tt.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(m(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=et),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},Da.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},Da.meridiem=function(e,t,a){return e>11?a?"pm":"PM":a?"am":"AM"},lt("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,a=1===T(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a}}),n.lang=v("moment.lang is deprecated. Use moment.locale instead.",lt),n.langData=v("moment.langData is deprecated. Use moment.localeData instead.",ht);var va=Math.abs;function Sa(e,t,a,s){var n=Zt(t,a);return e._milliseconds+=s*n._milliseconds,e._days+=s*n._days,e._months+=s*n._months,e._bubble()}function Ha(e){return e<0?Math.floor(e):Math.ceil(e)}function ba(e){return 4800*e/146097}function ja(e){return 146097*e/4800}function xa(e){return function(){return this.as(e)}}var Oa=xa("ms"),Pa=xa("s"),Wa=xa("m"),Aa=xa("h"),Ea=xa("d"),Fa=xa("w"),Ra=xa("M"),za=xa("Q"),Ja=xa("y");function Na(e){return function(){return this.isValid()?this._data[e]:NaN}}var Ca=Na("milliseconds"),Ia=Na("seconds"),Ua=Na("minutes"),Ga=Na("hours"),Va=Na("days"),Ka=Na("months"),Za=Na("years"),Ba=Math.round,$a={ss:44,s:45,m:45,h:22,d:26,M:11},qa=Math.abs;function Qa(e){return(e>0)-(e<0)||+e}function Xa(){if(!this.isValid())return this.localeData().invalidDate();var e,t,a=qa(this._milliseconds)/1e3,s=qa(this._days),n=qa(this._months);e=D(a/60),t=D(e/60),a%=60,e%=60;var r=D(n/12),d=n%=12,i=s,_=t,o=e,u=a?a.toFixed(3).replace(/\.?0+$/,""):"",m=this.asSeconds();if(!m)return"P0D";var l=m<0?"-":"",M=Qa(this._months)!==Qa(m)?"-":"",h=Qa(this._days)!==Qa(m)?"-":"",c=Qa(this._milliseconds)!==Qa(m)?"-":"";return l+"P"+(r?M+r+"Y":"")+(d?M+d+"M":"")+(i?h+i+"D":"")+(_||o||u?"T":"")+(_?c+_+"H":"")+(o?c+o+"M":"")+(u?c+u+"S":"")}var es=Ft.prototype;return es.isValid=function(){return this._isValid},es.abs=function(){var e=this._data;return this._milliseconds=va(this._milliseconds),this._days=va(this._days),this._months=va(this._months),e.milliseconds=va(e.milliseconds),e.seconds=va(e.seconds),e.minutes=va(e.minutes),e.hours=va(e.hours),e.months=va(e.months),e.years=va(e.years),this},es.add=function(e,t){return Sa(this,e,t,1)},es.subtract=function(e,t){return Sa(this,e,t,-1)},es.as=function(e){if(!this.isValid())return NaN;var t,a,s=this._milliseconds;if("month"===(e=A(e))||"quarter"===e||"year"===e)switch(t=this._days+s/864e5,a=this._months+ba(t),e){case"month":return a;case"quarter":return a/3;case"year":return a/12}else switch(t=this._days+Math.round(ja(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},es.asMilliseconds=Oa,es.asSeconds=Pa,es.asMinutes=Wa,es.asHours=Aa,es.asDays=Ea,es.asWeeks=Fa,es.asMonths=Ra,es.asQuarters=za,es.asYears=Ja,es.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*T(this._months/12):NaN},es._bubble=function(){var e,t,a,s,n,r=this._milliseconds,d=this._days,i=this._months,_=this._data;return r>=0&&d>=0&&i>=0||r<=0&&d<=0&&i<=0||(r+=864e5*Ha(ja(i)+d),d=0,i=0),_.milliseconds=r%1e3,e=D(r/1e3),_.seconds=e%60,t=D(e/60),_.minutes=t%60,a=D(t/60),_.hours=a%24,d+=D(a/24),n=D(ba(d)),i+=n,d-=Ha(ja(n)),s=D(i/12),i%=12,_.days=d,_.months=i,_.years=s,this},es.clone=function(){return Zt(this)},es.get=function(e){return e=A(e),this.isValid()?this[e+"s"]():NaN},es.milliseconds=Ca,es.seconds=Ia,es.minutes=Ua,es.hours=Ga,es.days=Va,es.weeks=function(){return D(this.days()/7)},es.months=Ka,es.years=Za,es.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t=this.localeData(),a=function(e,t,a){var s=Zt(e).abs(),n=Ba(s.as("s")),r=Ba(s.as("m")),d=Ba(s.as("h")),i=Ba(s.as("d")),_=Ba(s.as("M")),o=Ba(s.as("y")),u=n<=$a.ss&&["s",n]||n<$a.s&&["ss",n]||r<=1&&["m"]||r<$a.m&&["mm",r]||d<=1&&["h"]||d<$a.h&&["hh",d]||i<=1&&["d"]||i<$a.d&&["dd",i]||_<=1&&["M"]||_<$a.M&&["MM",_]||o<=1&&["y"]||["yy",o];return u[2]=t,u[3]=+e>0,u[4]=a,function(e,t,a,s,n){return n.relativeTime(t||1,!!a,e,s)}.apply(null,u)}(this,!e,t);return e&&(a=t.pastFuture(+this,a)),t.postformat(a)},es.toISOString=Xa,es.toString=Xa,es.toJSON=Xa,es.locale=aa,es.localeData=na,es.toIsoString=v("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Xa),es.lang=sa,U("X",0,0,"unix"),U("x",0,0,"valueOf"),me("x",de),me("X",/[+-]?\d+(\.\d{1,3})?/),ce("X",function(e,t,a){a._d=new Date(1e3*parseFloat(e,10))}),ce("x",function(e,t,a){a._d=new Date(T(e))}),n.version="2.24.0",function(e){t=e}(Ot),n.fn=pa,n.min=function(){return At("isBefore",[].slice.call(arguments,0))},n.max=function(){return At("isAfter",[].slice.call(arguments,0))},n.now=function(){return Date.now?Date.now():+new Date},n.utc=M,n.unix=function(e){return Ot(1e3*e)},n.months=function(e,t){return wa(e,t,"months")},n.isDate=o,n.locale=lt,n.invalid=L,n.duration=Zt,n.isMoment=k,n.weekdays=function(e,t,a){return ga(e,t,a,"weekdays")},n.parseZone=function(){return Ot.apply(null,arguments).parseZone()},n.localeData=ht,n.isDuration=Rt,n.monthsShort=function(e,t){return wa(e,t,"monthsShort")},n.weekdaysMin=function(e,t,a){return ga(e,t,a,"weekdaysMin")},n.defineLocale=Mt,n.updateLocale=function(e,t){if(null!=t){var a,s,n=it;null!=(s=mt(e))&&(n=s._config),t=x(n,t),(a=new O(t)).parentLocale=_t[e],_t[e]=a,lt(e)}else null!=_t[e]&&(null!=_t[e].parentLocale?_t[e]=_t[e].parentLocale:null!=_t[e]&&delete _t[e]);return _t[e]},n.locales=function(){return S(_t)},n.weekdaysShort=function(e,t,a){return ga(e,t,a,"weekdaysShort")},n.normalizeUnits=A,n.relativeTimeRounding=function(e){return void 0===e?Ba:"function"==typeof e&&(Ba=e,!0)},n.relativeTimeThreshold=function(e,t){return void 0!==$a[e]&&(void 0===t?$a[e]:($a[e]=t,"s"===e&&($a.ss=t-1),!0))},n.calendarFormat=function(e,t){var a=e.diff(t,"days",!0);return a<-6?"sameElse":a<-1?"lastWeek":a<0?"lastDay":a<1?"sameDay":a<2?"nextDay":a<7?"nextWeek":"sameElse"},n.prototype=pa,n.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},n}()}).call(this,a("YuTi")(e))},x6pH:function(e,t,a){!function(e){"use strict";e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,a){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?a?'לפנה"צ':"לפני הצהריים":e<18?a?'אחה"צ':"אחרי הצהריים":"בערב"}})}(a("wd/R"))},yPMs:function(e,t,a){!function(e){"use strict";e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,a){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},z1FC:function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return s?n[a][0]:t?n[a][0]:n[a][1]}e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,a){return e>11?a?"d'o":"D'O":a?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},z3Vd:function(e,t,a){!function(e){"use strict";var t="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function a(e,a,s,n){var r=function(e){var a=Math.floor(e%1e3/100),s=Math.floor(e%100/10),n=e%10,r="";return a>0&&(r+=t[a]+"vatlh"),s>0&&(r+=(""!==r?" ":"")+t[s]+"maH"),n>0&&(r+=(""!==r?" ":"")+t[n]),""===r?"pagh":r}(e);switch(s){case"ss":return r+" lup";case"mm":return r+" tup";case"hh":return r+" rep";case"dd":return r+" jaj";case"MM":return r+" jar";case"yy":return r+" DIS"}}e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var t=e;return t=-1!==e.indexOf("jaj")?t.slice(0,-3)+"leS":-1!==e.indexOf("jar")?t.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?t.slice(0,-3)+"nem":t+" pIq"},past:function(e){var t=e;return t=-1!==e.indexOf("jaj")?t.slice(0,-3)+"Hu’":-1!==e.indexOf("jar")?t.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?t.slice(0,-3)+"ben":t+" ret"},s:"puS lup",ss:a,m:"wa’ tup",mm:a,h:"wa’ rep",hh:a,d:"wa’ jaj",dd:a,M:"wa’ jar",MM:a,y:"wa’ DIS",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},zavE:function(e,t,a){!function(e){"use strict";e.defineLocale("en-SG",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},zx6S:function(e,t,a){!function(e){"use strict";var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,a,s){var n=t.words[s];return 1===s.length?a?n[0]:n[1]:e+" "+t.correctGrammaticalCase(e,n)}};e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(a("wd/R"))}}]); -//# sourceMappingURL=chunk-df62.6c5105a6.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-df62.6c5105a6.js.map b/priv/static/adminfe/static/js/chunk-df62.6c5105a6.js.map deleted file mode 100644 index a2380c4cd..000000000 --- a/priv/static/adminfe/static/js/chunk-df62.6c5105a6.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/se.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ku.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/it-ch.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/en-SG.js","webpack:///./node_modules/moment/locale/sr.js"],"names":["moment","monthsShortWithDots","split","monthsShortWithoutDots","monthsParse","monthsRegex","defineLocale","months","monthsShort","m","format","test","month","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","weekdays","weekdaysShort","weekdaysMin","weekdaysParseExact","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","s","ss","mm","h","hh","d","dd","M","MM","y","yy","dayOfMonthOrdinalParse","ordinal","number","week","dow","doy","factory","__webpack_require__","monthsParseExact","b","output","symbolMap","1","2","3","4","5","6","7","8","9","0","numberMap","༡","༢","༣","༤","༥","༦","༧","༨","༩","༠","preparse","string","replace","match","postformat","meridiemParse","meridiemHour","hour","meridiem","minute","isLower","this","day","standalone","isPM","input","period","isFormat","ll","lll","llll","hours","१","२","३","४","५","६","७","८","९","०","૧","૨","૩","૪","૫","૬","૭","૮","૯","૦","minutes","១","២","៣","៤","៥","៦","៧","៨","៩","០","processRelativeTime","withoutSuffix","key","isFuture","੧","੨","੩","੪","੫","੬","੭","੮","੯","੦","affix","exec","l","now","plural","n","translate","result","monthsShortDot","suffixes","70","80","20","50","100","10","30","60","90","a","c","translator","words","correctGrammaticalCase","wordKey","length","relativeTimeWithPlural","word","num","forms","pluralForm","plurals","pluralize","u","f","str","token","isUpper","١","٢","٣","٤","٥","٦","٧","٨","٩","٠","units","translateSingular","special","relativeTimeMr","12","13","40","௧","௨","௩","௪","௫","௬","௭","௮","௯","௦","೧","೨","೩","೪","೫","೬","೭","೮","೯","೦","eifelerRegelAppliesToNumber","parseInt","isNaN","lastDigit","firstDigit","substr","indexOf","hm","days","weekEndings","charAt","toLowerCase","call","relativeTimeWithMutation","text","mutationTable","undefined","substring","softMutation","mutation","lastNumber","last2Digits","numbersPast","numbersFuture","verbalNumber","၁","၂","၃","၄","၅","၆","၇","၈","၉","၀","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","Function","Object","prototype","toString","isFunction","apply","monthsNominative","monthsSubjective","۱","۲","۳","۴","۵","۶","۷","۸","۹","۰","১","২","৩","৪","৫","৬","৭","৮","৯","০","separator","processHoursFunction","nominative","accusative","genitive","slice","concat","nounCase","relativeTimeWithSingular","module","exports","hookCallback","some","hooks","arguments","isArray","Array","isObject","isUndefined","isNumber","isDate","Date","map","arr","fn","i","res","push","hasOwnProp","hasOwnProperty","extend","valueOf","createUTC","locale","strict","createLocalOrUTC","utc","getParsingFlags","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","t","len","momentProperties","copyConfig","to","from","prop","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","updateInProgress","Moment","config","updateOffset","isMoment","obj","absFloor","Math","ceil","floor","toInt","argumentForCoercion","coercedNumber","value","isFinite","compareArrays","array1","array2","dontConvert","min","lengthDiff","abs","diffs","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","args","join","Error","stack","keys","deprecations","deprecateSimple","name","mergeConfigs","parentConfig","childConfig","Locale","set","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","zeroFill","targetLength","forceSign","absNumber","zerosToFill","sign","pow","max","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","callback","func","localeData","removeFormattingTokens","formatMoment","expandFormat","array","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","lastIndex","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","regexes","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","RegExp","regexEscape","matched","p1","p2","p3","p4","unescapeFormat","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","year","isLeapYear","parseTwoDigitYear","getSetYear","makeGetSet","keepTime","set$1","get","date","daysInMonth","modMonth","x","mod","o","MONTHS_IN_FORMAT","defaultLocaleMonths","defaultLocaleMonthsShort","setMonth","dayOfMonth","getSetMonth","defaultMonthsShortRegex","defaultMonthsRegex","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","fwd","fwdlw","getUTCDay","dayOfYearFromWeeks","weekday","resYear","resDayOfYear","localWeekday","weekOffset","dayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","lowercase","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","_meridiem","pos","pos1","pos2","globalLocale","getSetHour","baseConfig","locales","localeFamilies","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","e","values","data","getLocale","abbr","_config","parentLocale","forEach","names","j","next","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","defaults","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","getUTCMonth","getUTCDate","getFullYear","getMonth","getDate","currentDateArray","w","weekYear","temp","weekdayOverflow","GG","W","E","createLocal","_week","curWeek","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ms","setFullYear","getDay","setUTCMinutes","getUTCMinutes","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromRFC2822","preprocessRFC2822","parsedArray","weekdayStr","parsedInput","weekdayProvided","weekdayActual","checkWeekday","obsOffset","militaryOffset","numOffset","calculateOffset","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","isPm","meridiemFixWrap","prepareConfig","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromStringAndArray","createFromInputFallback","configFromString","second","millisecond","configFromObject","configFromInput","isUTC","getOwnPropertyNames","k","isObjectEmpty","add","createFromConfig","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","years","quarters","quarter","weeks","isoWeek","milliseconds","unitHasDecimal","parseFloat","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","offset","utcOffset","offsetFromString","chunkOffset","matcher","matches","chunk","parts","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","parseIso","base","isBefore","positiveMomentsDifference","momentsDifference","inp","isAfter","createAdder","direction","tmp","addSubtract","isAdding","invalid","subtract","monthDiff","anchor2","adjust","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","dayOfYearData","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","getSetMillisecond","proto","preParsePostFormat","time","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","toArray","toObject","toDate","toISOString","keepOffset","inspect","zone","isLocal","prefix","suffix","toJSON","unix","creationData","isoWeeks","weekInfo","isoWeeksInYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","toUpperCase","_invalidDate","_ordinal","_relativeTime","pastFuture","source","_monthsShort","monthName","_monthsParseExact","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","weekdayName","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","abs$1","toISOString$1","Y","D","toFixed","total","totalSign","ymSign","daysSign","hmsSign","proto$2","monthsFromDays","withSuffix","posNegDuration","relativeTime$1","toIsoString","version","setHookCallback","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","numbersNouns","numberNoun","hundred","ten","one","numberAsNoun"],"mappings":"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","file":"static/js/chunk-df62.6c5105a6.js","sourcesContent":["//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\n var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\n var monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n\n weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'over %s',\n past : '%s geleden',\n s : 'een paar seconden',\n ss : '%d seconden',\n m : 'één minuut',\n mm : '%d minuten',\n h : 'één uur',\n hh : '%d uur',\n d : 'één dag',\n dd : '%d dagen',\n M : 'één maand',\n MM : '%d maanden',\n y : 'één jaar',\n yy : '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var se = moment.defineLocale('se', {\n months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),\n monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\n weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin : 's_v_m_g_d_b_L'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'MMMM D. [b.] YYYY',\n LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'\n },\n calendar : {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s geažes',\n past : 'maŋit %s',\n s : 'moadde sekunddat',\n ss: '%d sekunddat',\n m : 'okta minuhta',\n mm : '%d minuhtat',\n h : 'okta diimmu',\n hh : '%d diimmut',\n d : 'okta beaivi',\n dd : '%d beaivvit',\n M : 'okta mánnu',\n MM : '%d mánut',\n y : 'okta jahki',\n yy : '%d jagit'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),\n monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\n monthsParseExact : true,\n weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),\n weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[T~ódá~ý át] LT',\n nextDay : '[T~ómó~rró~w át] LT',\n nextWeek : 'dddd [át] LT',\n lastDay : '[Ý~ést~érdá~ý át] LT',\n lastWeek : '[L~ást] dddd [át] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'í~ñ %s',\n past : '%s á~gó',\n s : 'á ~féw ~sécó~ñds',\n ss : '%d s~écóñ~ds',\n m : 'á ~míñ~úté',\n mm : '%d m~íñú~tés',\n h : 'á~ñ hó~úr',\n hh : '%d h~óúrs',\n d : 'á ~dáý',\n dd : '%d d~áýs',\n M : 'á ~móñ~th',\n MM : '%d m~óñt~hs',\n y : 'á ~ýéár',\n yy : '%d ý~éárs'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '༡',\n '2': '༢',\n '3': '༣',\n '4': '༤',\n '5': '༥',\n '6': '༦',\n '7': '༧',\n '8': '༨',\n '9': '༩',\n '0': '༠'\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0'\n };\n\n var bo = moment.defineLocale('bo', {\n months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),\n weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm',\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar : {\n sameDay : '[དི་རིང] LT',\n nextDay : '[སང་ཉིན] LT',\n nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay : '[ཁ་སང] LT',\n lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ལ་',\n past : '%s སྔན་ལ',\n s : 'ལམ་སང',\n ss : '%d སྐར་ཆ།',\n m : 'སྐར་མ་གཅིག',\n mm : '%d སྐར་མ',\n h : 'ཆུ་ཚོད་གཅིག',\n hh : '%d ཆུ་ཚོད',\n d : 'ཉིན་གཅིག',\n dd : '%d ཉིན་',\n M : 'ཟླ་བ་གཅིག',\n MM : '%d ཟླ་བ',\n y : 'ལོ་གཅིག',\n yy : '%d ལོ'\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if ((meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ptBr = moment.defineLocale('pt-br', {\n months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n },\n calendar : {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return (this.day() === 0 || this.day() === 6) ?\n '[Último] dddd [às] LT' : // Saturday + Sunday\n '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'em %s',\n past : 'há %s',\n s : 'poucos segundos',\n ss : '%d segundos',\n m : 'um minuto',\n mm : '%d minutos',\n h : 'uma hora',\n hh : '%d horas',\n d : 'um dia',\n dd : '%d dias',\n M : 'um mês',\n MM : '%d meses',\n y : 'um ano',\n yy : '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal : '%dº'\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var hyAm = moment.defineLocale('hy-am', {\n months : {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')\n },\n monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),\n weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY թ.',\n LLL : 'D MMMM YYYY թ., HH:mm',\n LLLL : 'dddd, D MMMM YYYY թ., HH:mm'\n },\n calendar : {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s հետո',\n past : '%s առաջ',\n s : 'մի քանի վայրկյան',\n ss : '%d վայրկյան',\n m : 'րոպե',\n mm : '%d րոպե',\n h : 'ժամ',\n hh : '%d ժամ',\n d : 'օր',\n dd : '%d օր',\n M : 'ամիս',\n MM : '%d ամիս',\n y : 'տարի',\n yy : '%d տարի'\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem : function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ca = moment.defineLocale('ca', {\n months : {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n format: 'de gener_de febrer_de març_d\\'abril_de maig_de juny_de juliol_d\\'agost_de setembre_d\\'octubre_de novembre_de desembre'.split('_'),\n isFormat: /D[oD]?(\\s)+MMMM/\n },\n monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),\n monthsParseExact : true,\n weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin : 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM [de] YYYY',\n ll : 'D MMM YYYY',\n LLL : 'D MMMM [de] YYYY [a les] H:mm',\n lll : 'D MMM YYYY, H:mm',\n LLLL : 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll : 'ddd D MMM YYYY, H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n nextDay : function () {\n return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n lastDay : function () {\n return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'd\\'aquí %s',\n past : 'fa %s',\n s : 'uns segons',\n ss : '%d segons',\n m : 'un minut',\n mm : '%d minuts',\n h : 'una hora',\n hh : '%d hores',\n d : 'un dia',\n dd : '%d dies',\n M : 'un mes',\n MM : '%d mesos',\n y : 'un any',\n yy : '%d anys'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal : function (number, period) {\n var output = (number === 1) ? 'r' :\n (number === 2) ? 'n' :\n (number === 3) ? 'r' :\n (number === 4) ? 't' : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var frCa = moment.defineLocale('fr-ca', {\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact : true,\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Aujourd’hui à] LT',\n nextDay : '[Demain à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[Hier à] LT',\n lastWeek : 'dddd [dernier à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dans %s',\n past : 'il y a %s',\n s : 'quelques secondes',\n ss : '%d secondes',\n m : 'une minute',\n mm : '%d minutes',\n h : 'une heure',\n hh : '%d heures',\n d : 'un jour',\n dd : '%d jours',\n M : 'un mois',\n MM : '%d mois',\n y : 'un an',\n yy : '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal : function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n }\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\n var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\n var monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n\n weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'over %s',\n past : '%s geleden',\n s : 'een paar seconden',\n ss : '%d seconden',\n m : 'één minuut',\n mm : '%d minuten',\n h : 'één uur',\n hh : '%d uur',\n d : 'één dag',\n dd : '%d dagen',\n M : 'één maand',\n MM : '%d maanden',\n y : 'één jaar',\n yy : '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n\n var hi = moment.defineLocale('hi', {\n months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\n monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n monthsParseExact: true,\n weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat : {\n LT : 'A h:mm बजे',\n LTS : 'A h:mm:ss बजे',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm बजे',\n LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'\n },\n calendar : {\n sameDay : '[आज] LT',\n nextDay : '[कल] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[कल] LT',\n lastWeek : '[पिछले] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s में',\n past : '%s पहले',\n s : 'कुछ ही क्षण',\n ss : '%d सेकंड',\n m : 'एक मिनट',\n mm : '%d मिनट',\n h : 'एक घंटा',\n hh : '%d घंटे',\n d : 'एक दिन',\n dd : '%d दिन',\n M : 'एक महीने',\n MM : '%d महीने',\n y : 'एक वर्ष',\n yy : '%d वर्ष'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '૧',\n '2': '૨',\n '3': '૩',\n '4': '૪',\n '5': '૫',\n '6': '૬',\n '7': '૭',\n '8': '૮',\n '9': '૯',\n '0': '૦'\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0'\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે'\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પેહલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ'\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enIe = moment.defineLocale('en-ie', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ms = moment.defineLocale('ms', {\n months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Esok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kelmarin pukul] LT',\n lastWeek : 'dddd [lepas pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lepas',\n s : 'beberapa saat',\n ss : '%d saat',\n m : 'seminit',\n mm : '%d minit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '១',\n '2': '២',\n '3': '៣',\n '4': '៤',\n '5': '៥',\n '6': '៦',\n '7': '៧',\n '8': '៨',\n '9': '៩',\n '0': '០'\n }, numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0'\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ'\n },\n dayOfMonthOrdinalParse : /ទី\\d{1,2}/,\n ordinal : 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n 'ss': [number + 'sekundi', number + 'sekundit'],\n 'm' : ['ühe minuti', 'üks minut'],\n 'mm': [number + ' minuti', number + ' minutit'],\n 'h' : ['ühe tunni', 'tund aega', 'üks tund'],\n 'hh': [number + ' tunni', number + ' tundi'],\n 'd' : ['ühe päeva', 'üks päev'],\n 'M' : ['kuu aja', 'kuu aega', 'üks kuu'],\n 'MM': [number + ' kuu', number + ' kuud'],\n 'y' : ['ühe aasta', 'aasta', 'üks aasta'],\n 'yy': [number + ' aasta', number + ' aastat']\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin : 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[Täna,] LT',\n nextDay : '[Homme,] LT',\n nextWeek : '[Järgmine] dddd LT',\n lastDay : '[Eile,] LT',\n lastWeek : '[Eelmine] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s pärast',\n past : '%s tagasi',\n s : processRelativeTime,\n ss : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : '%d päeva',\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),\n monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),\n weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),\n weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'a h:mm',\n LTS : 'a h:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY MMMM D',\n LLL : 'YYYY MMMM D, a h:mm',\n LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'\n },\n calendar : {\n sameDay : '[අද] LT[ට]',\n nextDay : '[හෙට] LT[ට]',\n nextWeek : 'dddd LT[ට]',\n lastDay : '[ඊයේ] LT[ට]',\n lastWeek : '[පසුගිය] dddd LT[ට]',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%sකින්',\n past : '%sකට පෙර',\n s : 'තත්පර කිහිපය',\n ss : 'තත්පර %d',\n m : 'මිනිත්තුව',\n mm : 'මිනිත්තු %d',\n h : 'පැය',\n hh : 'පැය %d',\n d : 'දිනය',\n dd : 'දින %d',\n M : 'මාසය',\n MM : 'මාස %d',\n y : 'වසර',\n yy : 'වසර %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal : function (number) {\n return number + ' වැනි';\n },\n meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM : function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n }\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '੧',\n '2': '੨',\n '3': '੩',\n '4': '੪',\n '5': '੫',\n '6': '੬',\n '7': '੭',\n '8': '੮',\n '9': '੯',\n '0': '੦'\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0'\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),\n weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm ਵਜੇ',\n LTS : 'A h:mm:ss ਵਜੇ',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'\n },\n calendar : {\n sameDay : '[ਅਜ] LT',\n nextDay : '[ਕਲ] LT',\n nextWeek : '[ਅਗਲਾ] dddd, LT',\n lastDay : '[ਕਲ] LT',\n lastWeek : '[ਪਿਛਲੇ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ਵਿੱਚ',\n past : '%s ਪਿਛਲੇ',\n s : 'ਕੁਝ ਸਕਿੰਟ',\n ss : '%d ਸਕਿੰਟ',\n m : 'ਇਕ ਮਿੰਟ',\n mm : '%d ਮਿੰਟ',\n h : 'ਇੱਕ ਘੰਟਾ',\n hh : '%d ਘੰਟੇ',\n d : 'ਇੱਕ ਦਿਨ',\n dd : '%d ਦਿਨ',\n M : 'ਇੱਕ ਮਹੀਨਾ',\n MM : '%d ਮਹੀਨੇ',\n y : 'ਇੱਕ ਸਾਲ',\n yy : '%d ਸਾਲ'\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var pt = moment.defineLocale('pt', {\n months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY HH:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return (this.day() === 0 || this.day() === 6) ?\n '[Último] dddd [às] LT' : // Saturday + Sunday\n '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'em %s',\n past : 'há %s',\n s : 'segundos',\n ss : '%d segundos',\n m : 'um minuto',\n mm : '%d minutos',\n h : 'uma hora',\n hh : '%d horas',\n d : 'um dia',\n dd : '%d dias',\n M : 'um mês',\n MM : '%d meses',\n y : 'um ano',\n yy : '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var months = [\n 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'\n ];\n\n var monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];\n\n var weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];\n\n var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];\n\n var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months : months,\n monthsShort : monthsShort,\n monthsParseExact : true,\n weekdays : weekdays,\n weekdaysShort : weekdaysShort,\n weekdaysMin : weekdaysMin,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[An-diugh aig] LT',\n nextDay : '[A-màireach aig] LT',\n nextWeek : 'dddd [aig] LT',\n lastDay : '[An-dè aig] LT',\n lastWeek : 'dddd [seo chaidh] [aig] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ann an %s',\n past : 'bho chionn %s',\n s : 'beagan diogan',\n ss : '%d diogan',\n m : 'mionaid',\n mm : '%d mionaidean',\n h : 'uair',\n hh : '%d uairean',\n d : 'latha',\n dd : '%d latha',\n M : 'mìos',\n MM : '%d mìosan',\n y : 'bliadhna',\n yy : '%d bliadhna'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}(d|na|mh)/,\n ordinal : function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var cv = moment.defineLocale('cv', {\n months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),\n monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),\n weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'\n },\n calendar : {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L'\n },\n relativeTime : {\n future : function (output) {\n var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';\n return output + affix;\n },\n past : '%s каялла',\n s : 'пӗр-ик ҫеккунт',\n ss : '%d ҫеккунт',\n m : 'пӗр минут',\n mm : '%d минут',\n h : 'пӗр сехет',\n hh : '%d сехет',\n d : 'пӗр кун',\n dd : '%d кун',\n M : 'пӗр уйӑх',\n MM : '%d уйӑх',\n y : 'пӗр ҫул',\n yy : '%d ҫул'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal : '%d-мӗш',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),\n monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),\n weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'D MMMM YYYY, dddd HH:mm'\n },\n calendar : {\n sameDay : '[Bugun soat] LT [da]',\n nextDay : '[Ertaga] LT [da]',\n nextWeek : 'dddd [kuni soat] LT [da]',\n lastDay : '[Kecha soat] LT [da]',\n lastWeek : '[O\\'tgan] dddd [kuni soat] LT [da]',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'Yaqin %s ichida',\n past : 'Bir necha %s oldin',\n s : 'soniya',\n ss : '%d soniya',\n m : 'bir daqiqa',\n mm : '%d daqiqa',\n h : 'bir soat',\n hh : '%d soat',\n d : 'bir kun',\n dd : '%d kun',\n M : 'bir oy',\n MM : '%d oy',\n y : 'bir yil',\n yy : '%d yil'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ml = moment.defineLocale('ml', {\n months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),\n monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),\n monthsParseExact : true,\n weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),\n weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm -നു',\n LTS : 'A h:mm:ss -നു',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm -നു',\n LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'\n },\n calendar : {\n sameDay : '[ഇന്ന്] LT',\n nextDay : '[നാളെ] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[ഇന്നലെ] LT',\n lastWeek : '[കഴിഞ്ഞ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s കഴിഞ്ഞ്',\n past : '%s മുൻപ്',\n s : 'അൽപ നിമിഷങ്ങൾ',\n ss : '%d സെക്കൻഡ്',\n m : 'ഒരു മിനിറ്റ്',\n mm : '%d മിനിറ്റ്',\n h : 'ഒരു മണിക്കൂർ',\n hh : '%d മണിക്കൂർ',\n d : 'ഒരു ദിവസം',\n dd : '%d ദിവസം',\n M : 'ഒരു മാസം',\n MM : '%d മാസം',\n y : 'ഒരു വർഷം',\n yy : '%d വർഷം'\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if ((meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n }\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ja = moment.defineLocale('ja', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort : '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin : '日_月_火_水_木_金_土'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY年M月D日',\n LLL : 'YYYY年M月D日 HH:mm',\n LLLL : 'YYYY年M月D日 dddd HH:mm',\n l : 'YYYY/MM/DD',\n ll : 'YYYY年M月D日',\n lll : 'YYYY年M月D日 HH:mm',\n llll : 'YYYY年M月D日(ddd) HH:mm'\n },\n meridiemParse: /午前|午後/i,\n isPM : function (input) {\n return input === '午後';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar : {\n sameDay : '[今日] LT',\n nextDay : '[明日] LT',\n nextWeek : function (now) {\n if (now.week() < this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay : '[昨日] LT',\n lastWeek : function (now) {\n if (this.week() < now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}日/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime : {\n future : '%s後',\n past : '%s前',\n s : '数秒',\n ss : '%d秒',\n m : '1分',\n mm : '%d分',\n h : '1時間',\n hh : '%d時間',\n d : '1日',\n dd : '%d日',\n M : '1ヶ月',\n MM : '%dヶ月',\n y : '1年',\n yy : '%d年'\n }\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum');\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),\n weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY [kl.] H:mm',\n LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'\n },\n calendar : {\n sameDay : '[í dag kl.] LT',\n nextDay : '[á morgun kl.] LT',\n nextWeek : 'dddd [kl.] LT',\n lastDay : '[í gær kl.] LT',\n lastWeek : '[síðasta] dddd [kl.] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'eftir %s',\n past : 'fyrir %s síðan',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : 'klukkustund',\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var fo = moment.defineLocale('fo', {\n months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),\n weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D. MMMM, YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Í dag kl.] LT',\n nextDay : '[Í morgin kl.] LT',\n nextWeek : 'dddd [kl.] LT',\n lastDay : '[Í gjár kl.] LT',\n lastWeek : '[síðstu] dddd [kl] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'um %s',\n past : '%s síðani',\n s : 'fá sekund',\n ss : '%d sekundir',\n m : 'ein minuttur',\n mm : '%d minuttir',\n h : 'ein tími',\n hh : '%d tímar',\n d : 'ein dagur',\n dd : '%d dagar',\n M : 'ein mánaður',\n MM : '%d mánaðir',\n y : 'eitt ár',\n yy : '%d ár'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY h:mm A',\n LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar : {\n sameDay : function () {\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextDay : function () {\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastDay : function () {\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'en %s',\n past : 'hace %s',\n s : 'unos segundos',\n ss : '%d segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'una hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un año',\n yy : '%d años'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var arMa = moment.defineLocale('ar-ma', {\n months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n ss : '%d ثانية',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var eu = moment.defineLocale('eu', {\n months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),\n monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),\n monthsParseExact : true,\n weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),\n weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'YYYY[ko] MMMM[ren] D[a]',\n LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l : 'YYYY-M-D',\n ll : 'YYYY[ko] MMM D[a]',\n lll : 'YYYY[ko] MMM D[a] HH:mm',\n llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'\n },\n calendar : {\n sameDay : '[gaur] LT[etan]',\n nextDay : '[bihar] LT[etan]',\n nextWeek : 'dddd LT[etan]',\n lastDay : '[atzo] LT[etan]',\n lastWeek : '[aurreko] dddd LT[etan]',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s barru',\n past : 'duela %s',\n s : 'segundo batzuk',\n ss : '%d segundo',\n m : 'minutu bat',\n mm : '%d minutu',\n h : 'ordu bat',\n hh : '%d ordu',\n d : 'egun bat',\n dd : '%d egun',\n M : 'hilabete bat',\n MM : '%d hilabete',\n y : 'urte bat',\n yy : '%d urte'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 's': ['thodde secondanim', 'thodde second'],\n 'ss': [number + ' secondanim', number + ' second'],\n 'm': ['eka mintan', 'ek minute'],\n 'mm': [number + ' mintanim', number + ' mintam'],\n 'h': ['eka voran', 'ek vor'],\n 'hh': [number + ' voranim', number + ' voram'],\n 'd': ['eka disan', 'ek dis'],\n 'dd': [number + ' disanim', number + ' dis'],\n 'M': ['eka mhoinean', 'ek mhoino'],\n 'MM': [number + ' mhoineanim', number + ' mhoine'],\n 'y': ['eka vorsan', 'ek voros'],\n 'yy': [number + ' vorsanim', number + ' vorsam']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),\n monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\\'var'.split('_'),\n weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'A h:mm [vazta]',\n LTS : 'A h:mm:ss [vazta]',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY A h:mm [vazta]',\n LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]'\n },\n calendar : {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Ieta to] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fatlo] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s',\n past : '%s adim',\n s : processRelativeTime,\n ss : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse : /\\d{1,2}(er)/,\n ordinal : function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /rati|sokalli|donparam|sanje/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokalli') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokalli';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n }\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var frCh = moment.defineLocale('fr-ch', {\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact : true,\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Aujourd’hui à] LT',\n nextDay : '[Demain à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[Hier à] LT',\n lastWeek : 'dddd [dernier à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dans %s',\n past : 'il y a %s',\n s : 'quelques secondes',\n ss : '%d secondes',\n m : 'une minute',\n mm : '%d minutes',\n h : 'une heure',\n hh : '%d heures',\n d : 'un jour',\n dd : '%d jours',\n M : 'un mois',\n MM : '%d mois',\n y : 'un an',\n yy : '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal : function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enAu = moment.defineLocale('en-au', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enAu;\n\n})));\n","\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n var suffixes = {\n 1: '\\'inci',\n 5: '\\'inci',\n 8: '\\'inci',\n 70: '\\'inci',\n 80: '\\'inci',\n 2: '\\'nci',\n 7: '\\'nci',\n 20: '\\'nci',\n 50: '\\'nci',\n 3: '\\'üncü',\n 4: '\\'üncü',\n 100: '\\'üncü',\n 6: '\\'ncı',\n 9: '\\'uncu',\n 10: '\\'uncu',\n 30: '\\'uncu',\n 60: '\\'ıncı',\n 90: '\\'ıncı'\n };\n\n var tr = moment.defineLocale('tr', {\n months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\n weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[bugün saat] LT',\n nextDay : '[yarın saat] LT',\n nextWeek : '[gelecek] dddd [saat] LT',\n lastDay : '[dün] LT',\n lastWeek : '[geçen] dddd [saat] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s sonra',\n past : '%s önce',\n s : 'birkaç saniye',\n ss : '%d saniye',\n m : 'bir dakika',\n mm : '%d dakika',\n h : 'bir saat',\n hh : '%d saat',\n d : 'bir gün',\n dd : '%d gün',\n M : 'bir ay',\n MM : '%d ay',\n y : 'bir yıl',\n yy : '%d yıl'\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) { // special case for zero\n return number + '\\'ıncı';\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var da = moment.defineLocale('da', {\n months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay : '[i dag kl.] LT',\n nextDay : '[i morgen kl.] LT',\n nextWeek : 'på dddd [kl.] LT',\n lastDay : '[i går kl.] LT',\n lastWeek : '[i] dddd[s kl.] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s siden',\n s : 'få sekunder',\n ss : '%d sekunder',\n m : 'et minut',\n mm : '%d minutter',\n h : 'en time',\n hh : '%d timer',\n d : 'en dag',\n dd : '%d dage',\n M : 'en måned',\n MM : '%d måneder',\n y : 'et år',\n yy : '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var tlPh = moment.defineLocale('tl-ph', {\n months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'MM/D/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY HH:mm',\n LLLL : 'dddd, MMMM DD, YYYY HH:mm'\n },\n calendar : {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'sa loob ng %s',\n past : '%s ang nakalipas',\n s : 'ilang segundo',\n ss : '%d segundo',\n m : 'isang minuto',\n mm : '%d minuto',\n h : 'isang oras',\n hh : '%d oras',\n d : 'isang araw',\n dd : '%d araw',\n M : 'isang buwan',\n MM : '%d buwan',\n y : 'isang taon',\n yy : '%d taon'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal : function (number) {\n return number;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var translator = {\n words: { //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay : '[јуче у] LT',\n lastWeek : function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT'\n ];\n return lastWeekDays[this.day()];\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'за %s',\n past : 'пре %s',\n s : 'неколико секунди',\n ss : translator.translate,\n m : translator.translate,\n mm : translator.translate,\n h : translator.translate,\n hh : translator.translate,\n d : 'дан',\n dd : translator.translate,\n M : 'месец',\n MM : translator.translate,\n y : 'годину',\n yy : translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var th = moment.defineLocale('th', {\n months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY เวลา H:mm',\n LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar : {\n sameDay : '[วันนี้ เวลา] LT',\n nextDay : '[พรุ่งนี้ เวลา] LT',\n nextWeek : 'dddd[หน้า เวลา] LT',\n lastDay : '[เมื่อวานนี้ เวลา] LT',\n lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'อีก %s',\n past : '%sที่แล้ว',\n s : 'ไม่กี่วินาที',\n ss : '%d วินาที',\n m : '1 นาที',\n mm : '%d นาที',\n h : '1 ชั่วโมง',\n hh : '%d ชั่วโมง',\n d : '1 วัน',\n dd : '%d วัน',\n M : '1 เดือน',\n MM : '%d เดือน',\n y : '1 ปี',\n yy : '%d ปี'\n }\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var mt = moment.defineLocale('mt', {\n months : 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'),\n monthsShort : 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays : 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'),\n weekdaysShort : 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin : 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Illum fil-]LT',\n nextDay : '[Għada fil-]LT',\n nextWeek : 'dddd [fil-]LT',\n lastDay : '[Il-bieraħ fil-]LT',\n lastWeek : 'dddd [li għadda] [fil-]LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'f’ %s',\n past : '%s ilu',\n s : 'ftit sekondi',\n ss : '%d sekondi',\n m : 'minuta',\n mm : '%d minuti',\n h : 'siegħa',\n hh : '%d siegħat',\n d : 'ġurnata',\n dd : '%d ġranet',\n M : 'xahar',\n MM : '%d xhur',\n y : 'sena',\n yy : '%d sni'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n 'dd': 'дзень_дні_дзён',\n 'MM': 'месяц_месяцы_месяцаў',\n 'yy': 'год_гады_гадоў'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n }\n else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n }\n else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months : {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')\n },\n monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays : {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/\n },\n weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY г.',\n LLL : 'D MMMM YYYY г., HH:mm',\n LLLL : 'dddd, D MMMM YYYY г., HH:mm'\n },\n calendar : {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'праз %s',\n past : '%s таму',\n s : 'некалькі секунд',\n m : relativeTimeWithPlural,\n mm : relativeTimeWithPlural,\n h : relativeTimeWithPlural,\n hh : relativeTimeWithPlural,\n d : 'дзень',\n dd : relativeTimeWithPlural,\n M : 'месяц',\n MM : relativeTimeWithPlural,\n y : 'год',\n yy : relativeTimeWithPlural\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM : function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '0': '0'\n }, pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n }, plurals = {\n s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n }, pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n }, months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر'\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months : months,\n monthsShort : months,\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'D/\\u200FM/\\u200FYYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM : function (input) {\n return 'م' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar : {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'بعد %s',\n past : 'منذ %s',\n s : pluralize('s'),\n ss : pluralize('s'),\n m : pluralize('m'),\n mm : pluralize('m'),\n h : pluralize('h'),\n hh : pluralize('h'),\n d : pluralize('d'),\n dd : pluralize('d'),\n M : pluralize('M'),\n MM : pluralize('M'),\n y : pluralize('y'),\n yy : pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ka = moment.defineLocale('ka', {\n months : {\n standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),\n format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')\n },\n monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays : {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),\n isFormat: /(წინა|შემდეგ)/\n },\n weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[დღეს] LT[-ზე]',\n nextDay : '[ხვალ] LT[-ზე]',\n lastDay : '[გუშინ] LT[-ზე]',\n nextWeek : '[შემდეგ] dddd LT[-ზე]',\n lastWeek : '[წინა] dddd LT-ზე',\n sameElse : 'L'\n },\n relativeTime : {\n future : function (s) {\n return (/(წამი|წუთი|საათი|წელი)/).test(s) ?\n s.replace(/ი$/, 'ში') :\n s + 'ში';\n },\n past : function (s) {\n if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if ((/წელი/).test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n },\n s : 'რამდენიმე წამი',\n ss : '%d წამი',\n m : 'წუთი',\n mm : '%d წუთი',\n h : 'საათი',\n hh : '%d საათი',\n d : 'დღე',\n dd : '%d დღე',\n M : 'თვე',\n MM : '%d თვე',\n y : 'წელი',\n yy : '%d წელი'\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal : function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week : {\n dow : 1,\n doy : 7\n }\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ko = moment.defineLocale('ko', {\n months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort : '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin : '일_월_화_수_목_금_토'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'YYYY.MM.DD.',\n LL : 'YYYY년 MMMM D일',\n LLL : 'YYYY년 MMMM D일 A h:mm',\n LLLL : 'YYYY년 MMMM D일 dddd A h:mm',\n l : 'YYYY.MM.DD.',\n ll : 'YYYY년 MMMM D일',\n lll : 'YYYY년 MMMM D일 A h:mm',\n llll : 'YYYY년 MMMM D일 dddd A h:mm'\n },\n calendar : {\n sameDay : '오늘 LT',\n nextDay : '내일 LT',\n nextWeek : 'dddd LT',\n lastDay : '어제 LT',\n lastWeek : '지난주 dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s 후',\n past : '%s 전',\n s : '몇 초',\n ss : '%d초',\n m : '1분',\n mm : '%d분',\n h : '한 시간',\n hh : '%d시간',\n d : '하루',\n dd : '%d일',\n M : '한 달',\n MM : '%d달',\n y : '일 년',\n yy : '%d년'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}(일|월|주)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse : /오전|오후/,\n isPM : function (token) {\n return token === '오후';\n },\n meridiem : function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n }\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠'\n }, numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم'\n ];\n\n\n var ku = moment.defineLocale('ku', {\n months : months,\n monthsShort : months,\n weekdays : 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysShort : 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysMin : 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar : {\n sameDay : '[ئه‌مرۆ كاتژمێر] LT',\n nextDay : '[به‌یانی كاتژمێر] LT',\n nextWeek : 'dddd [كاتژمێر] LT',\n lastDay : '[دوێنێ كاتژمێر] LT',\n lastWeek : 'dddd [كاتژمێر] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'له‌ %s',\n past : '%s',\n s : 'چه‌ند چركه‌یه‌ك',\n ss : 'چركه‌ %d',\n m : 'یه‌ك خوله‌ك',\n mm : '%d خوله‌ك',\n h : 'یه‌ك كاتژمێر',\n hh : '%d كاتژمێر',\n d : 'یه‌ك ڕۆژ',\n dd : '%d ڕۆژ',\n M : 'یه‌ك مانگ',\n MM : '%d مانگ',\n y : 'یه‌ك ساڵ',\n yy : '%d ساڵ'\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[danas u] LT',\n nextDay : '[sutra u] LT',\n nextWeek : function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[jučer u] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'prije %s',\n s : 'par sekundi',\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : 'dan',\n dd : translate,\n M : 'mjesec',\n MM : translate,\n y : 'godinu',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var units = {\n 'ss' : 'sekundė_sekundžių_sekundes',\n 'm' : 'minutė_minutės_minutę',\n 'mm': 'minutės_minučių_minutes',\n 'h' : 'valanda_valandos_valandą',\n 'hh': 'valandos_valandų_valandas',\n 'd' : 'diena_dienos_dieną',\n 'dd': 'dienos_dienų_dienas',\n 'M' : 'mėnuo_mėnesio_mėnesį',\n 'MM': 'mėnesiai_mėnesių_mėnesius',\n 'y' : 'metai_metų_metus',\n 'yy': 'metai_metų_metus'\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return result + translateSingular(number, withoutSuffix, key[0], isFuture);\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months : {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\n },\n monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays : {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\n isFormat: /dddd HH:mm/\n },\n weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'YYYY [m.] MMMM D [d.]',\n LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l : 'YYYY-MM-DD',\n ll : 'YYYY [m.] MMMM D [d.]',\n lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n },\n calendar : {\n sameDay : '[Šiandien] LT',\n nextDay : '[Rytoj] LT',\n nextWeek : 'dddd LT',\n lastDay : '[Vakar] LT',\n lastWeek : '[Praėjusį] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'po %s',\n past : 'prieš %s',\n s : translateSeconds,\n ss : translate,\n m : translateSingular,\n mm : translate,\n h : translateSingular,\n hh : translate,\n d : translateSingular,\n dd : translate,\n M : translateSingular,\n MM : translate,\n y : translateSingular,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal : function (number) {\n return number + '-oji';\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var af = moment.defineLocale('af', {\n months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),\n weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM : function (input) {\n return /^nm$/i.test(input);\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Vandag om] LT',\n nextDay : '[Môre om] LT',\n nextWeek : 'dddd [om] LT',\n lastDay : '[Gister om] LT',\n lastWeek : '[Laas] dddd [om] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'oor %s',\n past : '%s gelede',\n s : '\\'n paar sekondes',\n ss : '%d sekondes',\n m : '\\'n minuut',\n mm : '%d minute',\n h : '\\'n uur',\n hh : '%d ure',\n d : '\\'n dag',\n dd : '%d dae',\n M : '\\'n maand',\n MM : '%d maande',\n y : '\\'n jaar',\n yy : '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week : {\n dow : 1, // Maandag is die eerste dag van die week.\n doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n }\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var vi = moment.defineLocale('vi', {\n months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\n monthsParseExact : true,\n weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\n weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact : true,\n meridiemParse: /sa|ch/i,\n isPM : function (input) {\n return /^ch$/i.test(input);\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM [năm] YYYY',\n LLL : 'D MMMM [năm] YYYY HH:mm',\n LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',\n l : 'DD/M/YYYY',\n ll : 'D MMM YYYY',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd, D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần rồi lúc] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s tới',\n past : '%s trước',\n s : 'vài giây',\n ss : '%d giây' ,\n m : 'một phút',\n mm : '%d phút',\n h : 'một giờ',\n hh : '%d giờ',\n d : 'một ngày',\n dd : '%d ngày',\n M : 'một tháng',\n MM : '%d tháng',\n y : 'một năm',\n yy : '%d năm'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal : function (number) {\n return number;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var translator = {\n words: { //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact : true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[juče u] LT',\n lastWeek : function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT'\n ];\n return lastWeekDays[this.day()];\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'prije %s',\n s : 'nekoliko sekundi',\n ss : translator.translate,\n m : translator.translate,\n mm : translator.translate,\n h : translator.translate,\n hh : translator.translate,\n d : 'dan',\n dd : translator.translate,\n M : 'mjesec',\n MM : translator.translate,\n y : 'godinu',\n yy : translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var uz = moment.defineLocale('uz', {\n months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'D MMMM YYYY, dddd HH:mm'\n },\n calendar : {\n sameDay : '[Бугун соат] LT [да]',\n nextDay : '[Эртага] LT [да]',\n nextWeek : 'dddd [куни соат] LT [да]',\n lastDay : '[Кеча соат] LT [да]',\n lastWeek : '[Утган] dddd [куни соат] LT [да]',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'Якин %s ичида',\n past : 'Бир неча %s олдин',\n s : 'фурсат',\n ss : '%d фурсат',\n m : 'бир дакика',\n mm : '%d дакика',\n h : 'бир соат',\n hh : '%d соат',\n d : 'бир кун',\n dd : '%d кун',\n M : 'бир ой',\n MM : '%d ой',\n y : 'бир йил',\n yy : '%d йил'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enCa = moment.defineLocale('en-ca', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'YYYY-MM-DD',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enGb = moment.defineLocale('en-gb', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture)\n {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's': output = 'काही सेकंद'; break;\n case 'ss': output = '%d सेकंद'; break;\n case 'm': output = 'एक मिनिट'; break;\n case 'mm': output = '%d मिनिटे'; break;\n case 'h': output = 'एक तास'; break;\n case 'hh': output = '%d तास'; break;\n case 'd': output = 'एक दिवस'; break;\n case 'dd': output = '%d दिवस'; break;\n case 'M': output = 'एक महिना'; break;\n case 'MM': output = '%d महिने'; break;\n case 'y': output = 'एक वर्ष'; break;\n case 'yy': output = '%d वर्षे'; break;\n }\n }\n else {\n switch (string) {\n case 's': output = 'काही सेकंदां'; break;\n case 'ss': output = '%d सेकंदां'; break;\n case 'm': output = 'एका मिनिटा'; break;\n case 'mm': output = '%d मिनिटां'; break;\n case 'h': output = 'एका तासा'; break;\n case 'hh': output = '%d तासां'; break;\n case 'd': output = 'एका दिवसा'; break;\n case 'dd': output = '%d दिवसां'; break;\n case 'M': output = 'एका महिन्या'; break;\n case 'MM': output = '%d महिन्यां'; break;\n case 'y': output = 'एका वर्षा'; break;\n case 'yy': output = '%d वर्षां'; break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),\n monthsParseExact : true,\n weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat : {\n LT : 'A h:mm वाजता',\n LTS : 'A h:mm:ss वाजता',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm वाजता',\n LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'\n },\n calendar : {\n sameDay : '[आज] LT',\n nextDay : '[उद्या] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात्री') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळी') {\n return hour;\n } else if (meridiem === 'दुपारी') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'सायंकाळी') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात्री';\n } else if (hour < 10) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n\n var ne = moment.defineLocale('ne', {\n months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),\n monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),\n monthsParseExact : true,\n weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),\n weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'Aको h:mm बजे',\n LTS : 'Aको h:mm:ss बजे',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, Aको h:mm बजे',\n LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar : {\n sameDay : '[आज] LT',\n nextDay : '[भोलि] LT',\n nextWeek : '[आउँदो] dddd[,] LT',\n lastDay : '[हिजो] LT',\n lastWeek : '[गएको] dddd[,] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%sमा',\n past : '%s अगाडि',\n s : 'केही क्षण',\n ss : '%d सेकेण्ड',\n m : 'एक मिनेट',\n mm : '%d मिनेट',\n h : 'एक घण्टा',\n hh : '%d घण्टा',\n d : 'एक दिन',\n dd : '%d दिन',\n M : 'एक महिना',\n MM : '%d महिना',\n y : 'एक बर्ष',\n yy : '%d बर्ष'\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум'\n };\n\n var tg = moment.defineLocale('tg', {\n months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays : 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),\n weekdaysShort : 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin : 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Имрӯз соати] LT',\n nextDay : '[Пагоҳ соати] LT',\n lastDay : '[Дирӯз соати] LT',\n nextWeek : 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek : 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'баъди %s',\n past : '%s пеш',\n s : 'якчанд сония',\n m : 'як дақиқа',\n mm : '%d дақиқа',\n h : 'як соат',\n hh : '%d соат',\n d : 'як рӯз',\n dd : '%d рӯз',\n M : 'як моҳ',\n MM : '%d моҳ',\n y : 'як сол',\n yy : '%d сол'\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1th is the first week of the year.\n }\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');\n\n var monthsParse = [/^led/i, /^úno/i, /^bře/i, /^dub/i, /^kvě/i, /^(čvn|červen$|června)/i, /^(čvc|červenec|července)/i, /^srp/i, /^zář/i, /^říj/i, /^lis/i, /^pro/i];\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n var monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return (n > 1) && (n < 5) && (~~(n / 10) !== 1);\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n break;\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n break;\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n break;\n case 'd': // a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n break;\n case 'M': // a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n break;\n case 'y': // a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n break;\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months : months,\n monthsShort : monthsShort,\n monthsRegex : monthsRegex,\n monthsShortRegex : monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex : /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex : /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat : {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd D. MMMM YYYY H:mm',\n l : 'D. M. YYYY'\n },\n calendar : {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'před %s',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse : /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '௧',\n '2': '௨',\n '3': '௩',\n '4': '௪',\n '5': '௫',\n '6': '௬',\n '7': '௭',\n '8': '௮',\n '9': '௯',\n '0': '௦'\n }, numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0'\n };\n\n var ta = moment.defineLocale('ta', {\n months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),\n weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),\n weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, HH:mm',\n LLLL : 'dddd, D MMMM YYYY, HH:mm'\n },\n calendar : {\n sameDay : '[இன்று] LT',\n nextDay : '[நாளை] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[நேற்று] LT',\n lastWeek : '[கடந்த வாரம்] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s இல்',\n past : '%s முன்',\n s : 'ஒரு சில விநாடிகள்',\n ss : '%d விநாடிகள்',\n m : 'ஒரு நிமிடம்',\n mm : '%d நிமிடங்கள்',\n h : 'ஒரு மணி நேரம்',\n hh : '%d மணி நேரம்',\n d : 'ஒரு நாள்',\n dd : '%d நாட்கள்',\n M : 'ஒரு மாதம்',\n MM : '%d மாதங்கள்',\n y : 'ஒரு வருடம்',\n yy : '%d ஆண்டுகள்'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal : function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem : function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '೧',\n '2': '೨',\n '3': '೩',\n '4': '೪',\n '5': '೫',\n '6': '೬',\n '7': '೭',\n '8': '೮',\n '9': '೯',\n '0': '೦'\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0'\n };\n\n var kn = moment.defineLocale('kn', {\n months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),\n monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),\n monthsParseExact: true,\n weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),\n weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm',\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar : {\n sameDay : '[ಇಂದು] LT',\n nextDay : '[ನಾಳೆ] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[ನಿನ್ನೆ] LT',\n lastWeek : '[ಕೊನೆಯ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ನಂತರ',\n past : '%s ಹಿಂದೆ',\n s : 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss : '%d ಸೆಕೆಂಡುಗಳು',\n m : 'ಒಂದು ನಿಮಿಷ',\n mm : '%d ನಿಮಿಷ',\n h : 'ಒಂದು ಗಂಟೆ',\n hh : '%d ಗಂಟೆ',\n d : 'ಒಂದು ದಿನ',\n dd : '%d ದಿನ',\n M : 'ಒಂದು ತಿಂಗಳು',\n MM : '%d ತಿಂಗಳು',\n y : 'ಒಂದು ವರ್ಷ',\n yy : '%d ವರ್ಷ'\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal : function (number) {\n return number + 'ನೇ';\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var arKw = moment.defineLocale('ar-kw', {\n months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n ss : '%d ثانية',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eng Minutt', 'enger Minutt'],\n 'h': ['eng Stonn', 'enger Stonn'],\n 'd': ['een Dag', 'engem Dag'],\n 'M': ['ee Mount', 'engem Mount'],\n 'y': ['ee Joer', 'engem Joer']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10, firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n }\n },\n relativeTime : {\n future : processFutureTime,\n past : processPastTime,\n s : 'e puer Sekonnen',\n ss : '%d Sekonnen',\n m : processRelativeTime,\n mm : '%d Minutten',\n h : processRelativeTime,\n hh : '%d Stonnen',\n d : processRelativeTime,\n dd : '%d Deeg',\n M : processRelativeTime,\n MM : '%d Méint',\n y : processRelativeTime,\n yy : '%d Joer'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months : {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')\n },\n monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),\n monthsParseExact: true,\n weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[danas u] LT',\n nextDay : '[sutra u] LT',\n nextWeek : function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[jučer u] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'prije %s',\n s : 'par sekundi',\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : 'dan',\n dd : translate,\n M : 'mjesec',\n MM : translate,\n y : 'godinu',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı'\n };\n\n var az = moment.defineLocale('az', {\n months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),\n monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),\n weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[bugün saat] LT',\n nextDay : '[sabah saat] LT',\n nextWeek : '[gələn həftə] dddd [saat] LT',\n lastDay : '[dünən] LT',\n lastWeek : '[keçən həftə] dddd [saat] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s sonra',\n past : '%s əvvəl',\n s : 'birneçə saniyə',\n ss : '%d saniyə',\n m : 'bir dəqiqə',\n mm : '%d dəqiqə',\n h : 'bir saat',\n hh : '%d saat',\n d : 'bir gün',\n dd : '%d gün',\n M : 'bir ay',\n MM : '%d ay',\n y : 'bir il',\n yy : '%d il'\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM : function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal : function (number) {\n if (number === 0) { // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var zhHk = moment.defineLocale('zh-hk', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY年M月D日',\n LLL : 'YYYY年M月D日 HH:mm',\n LLLL : 'YYYY年M月D日dddd HH:mm',\n l : 'YYYY/M/D',\n ll : 'YYYY年M月D日',\n lll : 'YYYY年M月D日 HH:mm',\n llll : 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar : {\n sameDay : '[今天]LT',\n nextDay : '[明天]LT',\n nextWeek : '[下]ddddLT',\n lastDay : '[昨天]LT',\n lastWeek : '[上]ddddLT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd' :\n case 'D' :\n case 'DDD' :\n return number + '日';\n case 'M' :\n return number + '月';\n case 'w' :\n case 'W' :\n return number + '週';\n default :\n return number;\n }\n },\n relativeTime : {\n future : '%s內',\n past : '%s前',\n s : '幾秒',\n ss : '%d 秒',\n m : '1 分鐘',\n mm : '%d 分鐘',\n h : '1 小時',\n hh : '%d 小時',\n d : '1 天',\n dd : '%d 天',\n M : '1 個月',\n MM : '%d 個月',\n y : '1 年',\n yy : '%d 年'\n }\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var id = moment.defineLocale('id', {\n months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Besok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kemarin pukul] LT',\n lastWeek : 'dddd [lalu pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lalu',\n s : 'beberapa detik',\n ss : '%d detik',\n m : 'semenit',\n mm : '%d menit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n\n var months = [\n 'Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Méitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deaireadh Fómhair', 'Samhain', 'Nollaig'\n ];\n\n var monthsShort = ['Eaná', 'Feab', 'Márt', 'Aibr', 'Beal', 'Méit', 'Iúil', 'Lúna', 'Meán', 'Deai', 'Samh', 'Noll'];\n\n var weekdays = ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Satharn'];\n\n var weekdaysShort = ['Dom', 'Lua', 'Mái', 'Céa', 'Déa', 'hAo', 'Sat'];\n\n var weekdaysMin = ['Do', 'Lu', 'Má', 'Ce', 'Dé', 'hA', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné aig] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d mí',\n y: 'bliain',\n yy: '%d bliain'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر'\n ];\n var days = [\n 'اتوار',\n 'پیر',\n 'منگل',\n 'بدھ',\n 'جمعرات',\n 'جمعہ',\n 'ہفتہ'\n ];\n\n var ur = moment.defineLocale('ur', {\n months : months,\n monthsShort : months,\n weekdays : days,\n weekdaysShort : days,\n weekdaysMin : days,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd، D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبح|شام/,\n isPM : function (input) {\n return 'شام' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar : {\n sameDay : '[آج بوقت] LT',\n nextDay : '[کل بوقت] LT',\n nextWeek : 'dddd [بوقت] LT',\n lastDay : '[گذشتہ روز بوقت] LT',\n lastWeek : '[گذشتہ] dddd [بوقت] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s بعد',\n past : '%s قبل',\n s : 'چند سیکنڈ',\n ss : '%d سیکنڈ',\n m : 'ایک منٹ',\n mm : '%d منٹ',\n h : 'ایک گھنٹہ',\n hh : '%d گھنٹے',\n d : 'ایک دن',\n dd : '%d دن',\n M : 'ایک ماہ',\n MM : '%d ماہ',\n y : 'ایک سال',\n yy : '%d سال'\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ss = moment.defineLocale('ss', {\n months : \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split('_'),\n monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\n weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Namuhla nga] LT',\n nextDay : '[Kusasa nga] LT',\n nextWeek : 'dddd [nga] LT',\n lastDay : '[Itolo nga] LT',\n lastWeek : 'dddd [leliphelile] [nga] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'nga %s',\n past : 'wenteka nga %s',\n s : 'emizuzwana lomcane',\n ss : '%d mzuzwana',\n m : 'umzuzu',\n mm : '%d emizuzu',\n h : 'lihora',\n hh : '%d emahora',\n d : 'lilanga',\n dd : '%d emalanga',\n M : 'inyanga',\n MM : '%d tinyanga',\n y : 'umnyaka',\n yy : '%d iminyaka'\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal : '%d',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var tet = moment.defineLocale('tet', {\n months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin : 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'iha %s',\n past : '%s liuba',\n s : 'minutu balun',\n ss : 'minutu %d',\n m : 'minutu ida',\n mm : 'minutu %d',\n h : 'oras ida',\n hh : 'oras %d',\n d : 'loron ida',\n dd : 'loron %d',\n M : 'fulan ida',\n MM : 'fulan %d',\n y : 'tinan ida',\n yy : 'tinan %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'MM/DD/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY h:mm A',\n LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar : {\n sameDay : function () {\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextDay : function () {\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastDay : function () {\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'en %s',\n past : 'hace %s',\n s : 'unos segundos',\n ss : '%d segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'una hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un año',\n yy : '%d años'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު'\n ], weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު'\n ];\n\n var dv = moment.defineLocale('dv', {\n months : months,\n monthsShort : months,\n weekdays : weekdays,\n weekdaysShort : weekdays,\n weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat : {\n\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'D/M/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /މކ|މފ/,\n isPM : function (input) {\n return 'މފ' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar : {\n sameDay : '[މިއަދު] LT',\n nextDay : '[މާދަމާ] LT',\n nextWeek : 'dddd LT',\n lastDay : '[އިއްޔެ] LT',\n lastWeek : '[ފާއިތުވި] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ތެރޭގައި %s',\n past : 'ކުރިން %s',\n s : 'ސިކުންތުކޮޅެއް',\n ss : 'd% ސިކުންތު',\n m : 'މިނިޓެއް',\n mm : 'މިނިޓު %d',\n h : 'ގަޑިއިރެއް',\n hh : 'ގަޑިއިރު %d',\n d : 'ދުވަހެއް',\n dd : 'ދުވަސް %d',\n M : 'މަހެއް',\n MM : 'މަސް %d',\n y : 'އަހަރެއް',\n yy : 'އަހަރު %d'\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week : {\n dow : 7, // Sunday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';\n }\n\n var hu = moment.defineLocale('hu', {\n months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),\n weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'YYYY.MM.DD.',\n LL : 'YYYY. MMMM D.',\n LLL : 'YYYY. MMMM D. H:mm',\n LLLL : 'YYYY. MMMM D., dddd H:mm'\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar : {\n sameDay : '[ma] LT[-kor]',\n nextDay : '[holnap] LT[-kor]',\n nextWeek : function () {\n return week.call(this, true);\n },\n lastDay : '[tegnap] LT[-kor]',\n lastWeek : function () {\n return week.call(this, false);\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s múlva',\n past : '%s',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var sv = moment.defineLocale('sv', {\n months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [kl.] HH:mm',\n LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : 'för %s sedan',\n s : 'några sekunder',\n ss : '%d sekunder',\n m : 'en minut',\n mm : '%d minuter',\n h : 'en timme',\n hh : '%d timmar',\n d : 'en dag',\n dd : '%d dagar',\n M : 'en månad',\n MM : '%d månader',\n y : 'ett år',\n yy : '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(e|a)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'e' :\n (b === 1) ? 'a' :\n (b === 2) ? 'a' :\n (b === 3) ? 'e' : 'e';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var zhCn = moment.defineLocale('zh-cn', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY年M月D日',\n LLL : 'YYYY年M月D日Ah点mm分',\n LLLL : 'YYYY年M月D日ddddAh点mm分',\n l : 'YYYY/M/D',\n ll : 'YYYY年M月D日',\n lll : 'YYYY年M月D日 HH:mm',\n llll : 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' ||\n meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar : {\n sameDay : '[今天]LT',\n nextDay : '[明天]LT',\n nextWeek : '[下]ddddLT',\n lastDay : '[昨天]LT',\n lastWeek : '[上]ddddLT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime : {\n future : '%s内',\n past : '%s前',\n s : '几秒',\n ss : '%d 秒',\n m : '1 分钟',\n mm : '%d 分钟',\n h : '1 小时',\n hh : '%d 小时',\n d : '1 天',\n dd : '%d 天',\n M : '1 个月',\n MM : '%d 个月',\n y : '1 年',\n yy : '%d 年'\n },\n week : {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var te = moment.defineLocale('te', {\n months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),\n monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),\n monthsParseExact : true,\n weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),\n weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm',\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar : {\n sameDay : '[నేడు] LT',\n nextDay : '[రేపు] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[నిన్న] LT',\n lastWeek : '[గత] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s లో',\n past : '%s క్రితం',\n s : 'కొన్ని క్షణాలు',\n ss : '%d సెకన్లు',\n m : 'ఒక నిమిషం',\n mm : '%d నిమిషాలు',\n h : 'ఒక గంట',\n hh : '%d గంటలు',\n d : 'ఒక రోజు',\n dd : '%d రోజులు',\n M : 'ఒక నెల',\n MM : '%d నెలలు',\n y : 'ఒక సంవత్సరం',\n yy : '%d సంవత్సరాలు'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}వ/,\n ordinal : '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return te;\n\n})));\n","//! moment.js language configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm'\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل'\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر'\n ];\n var days = [\n 'آچر',\n 'سومر',\n 'اڱارو',\n 'اربع',\n 'خميس',\n 'جمع',\n 'ڇنڇر'\n ];\n\n var sd = moment.defineLocale('sd', {\n months : months,\n monthsShort : months,\n weekdays : days,\n weekdaysShort : days,\n weekdaysMin : days,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd، D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبح|شام/,\n isPM : function (input) {\n return 'شام' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar : {\n sameDay : '[اڄ] LT',\n nextDay : '[سڀاڻي] LT',\n nextWeek : 'dddd [اڳين هفتي تي] LT',\n lastDay : '[ڪالهه] LT',\n lastWeek : '[گزريل هفتي] dddd [تي] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s پوء',\n past : '%s اڳ',\n s : 'چند سيڪنڊ',\n ss : '%d سيڪنڊ',\n m : 'هڪ منٽ',\n mm : '%d منٽ',\n h : 'هڪ ڪلاڪ',\n hh : '%d ڪلاڪ',\n d : 'هڪ ڏينهن',\n dd : '%d ڏينهن',\n M : 'هڪ مهينو',\n MM : '%d مهينا',\n y : 'هڪ سال',\n yy : '%d سال'\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var msMy = moment.defineLocale('ms-my', {\n months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Esok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kelmarin pukul] LT',\n lastWeek : 'dddd [lepas pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lepas',\n s : 'beberapa saat',\n ss : '%d saat',\n m : 'seminit',\n mm : '%d minit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var eo = moment.defineLocale('eo', {\n months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),\n weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'D[-a de] MMMM, YYYY',\n LLL : 'D[-a de] MMMM, YYYY HH:mm',\n LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar : {\n sameDay : '[Hodiaŭ je] LT',\n nextDay : '[Morgaŭ je] LT',\n nextWeek : 'dddd [je] LT',\n lastDay : '[Hieraŭ je] LT',\n lastWeek : '[pasinta] dddd [je] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'post %s',\n past : 'antaŭ %s',\n s : 'sekundoj',\n ss : '%d sekundoj',\n m : 'minuto',\n mm : '%d minutoj',\n h : 'horo',\n hh : '%d horoj',\n d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo\n dd : '%d tagoj',\n M : 'monato',\n MM : '%d monatoj',\n y : 'jaro',\n yy : '%d jaroj'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal : '%da',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n 'mm': 'munutenn',\n 'MM': 'miz',\n 'dd': 'devezh'\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n 'm': 'v',\n 'b': 'v',\n 'd': 'z'\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var br = moment.defineLocale('br', {\n months : 'Genver_C\\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),\n monthsShort : 'Gen_C\\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays : 'Sul_Lun_Meurzh_Merc\\'her_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h[e]mm A',\n LTS : 'h[e]mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D [a viz] MMMM YYYY',\n LLL : 'D [a viz] MMMM YYYY h[e]mm A',\n LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'\n },\n calendar : {\n sameDay : '[Hiziv da] LT',\n nextDay : '[Warc\\'hoazh da] LT',\n nextWeek : 'dddd [da] LT',\n lastDay : '[Dec\\'h da] LT',\n lastWeek : 'dddd [paset da] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'a-benn %s',\n past : '%s \\'zo',\n s : 'un nebeud segondennoù',\n ss : '%d eilenn',\n m : 'ur vunutenn',\n mm : relativeTimeWithMutation,\n h : 'un eur',\n hh : '%d eur',\n d : 'un devezh',\n dd : relativeTimeWithMutation,\n M : 'ur miz',\n MM : relativeTimeWithMutation,\n y : 'ur bloaz',\n yy : specialMutationForYears\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal : function (number) {\n var output = (number === 1) ? 'añ' : 'vet';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm'\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var mk = moment.defineLocale('mk', {\n months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),\n weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'D.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd, D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[Денес во] LT',\n nextDay : '[Утре во] LT',\n nextWeek : '[Во] dddd [во] LT',\n lastDay : '[Вчера во] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'после %s',\n past : 'пред %s',\n s : 'неколку секунди',\n ss : '%d секунди',\n m : 'минута',\n mm : '%d минути',\n h : 'час',\n hh : '%d часа',\n d : 'ден',\n dd : '%d дена',\n M : 'месец',\n MM : '%d месеци',\n y : 'година',\n yy : '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal : function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enNz = moment.defineLocale('en-nz', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var nb = moment.defineLocale('nb', {\n months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact : true,\n weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY [kl.] HH:mm',\n LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s siden',\n s : 'noen sekunder',\n ss : '%d sekunder',\n m : 'ett minutt',\n mm : '%d minutter',\n h : 'en time',\n hh : '%d timer',\n d : 'en dag',\n dd : '%d dager',\n M : 'en måned',\n MM : '%d måneder',\n y : 'ett år',\n yy : '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші'\n };\n\n var kk = moment.defineLocale('kk', {\n months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\n monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),\n weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Бүгін сағат] LT',\n nextDay : '[Ертең сағат] LT',\n nextWeek : 'dddd [сағат] LT',\n lastDay : '[Кеше сағат] LT',\n lastWeek : '[Өткен аптаның] dddd [сағат] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ішінде',\n past : '%s бұрын',\n s : 'бірнеше секунд',\n ss : '%d секунд',\n m : 'бір минут',\n mm : '%d минут',\n h : 'бір сағат',\n hh : '%d сағат',\n d : 'бір күн',\n dd : '%d күн',\n M : 'бір ай',\n MM : '%d ай',\n y : 'бір жыл',\n yy : '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal : function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss : '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var it = moment.defineLocale('it', {\n months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : function (s) {\n return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past : '%s fa',\n s : 'alcuni secondi',\n ss : '%d secondi',\n m : 'un minuto',\n mm : '%d minuti',\n h : 'un\\'ora',\n hh : '%d ore',\n d : 'un giorno',\n dd : '%d giorni',\n M : 'un mese',\n MM : '%d mesi',\n y : 'un anno',\n yy : '%d anni'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var itCh = moment.defineLocale('it-ch', {\n months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : function (s) {\n return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past : '%s fa',\n s : 'alcuni secondi',\n ss : '%d secondi',\n m : 'un minuto',\n mm : '%d minuti',\n h : 'un\\'ora',\n hh : '%d ore',\n d : 'un giorno',\n dd : '%d giorni',\n M : 'un mese',\n MM : '%d mesi',\n y : 'un anno',\n yy : '%d anni'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n var fy = moment.defineLocale('fy', {\n months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact : true,\n weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),\n weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'oer %s',\n past : '%s lyn',\n s : 'in pear sekonden',\n ss : '%d sekonden',\n m : 'ien minút',\n mm : '%d minuten',\n h : 'ien oere',\n hh : '%d oeren',\n d : 'ien dei',\n dd : '%d dagen',\n M : 'ien moanne',\n MM : '%d moannen',\n y : 'ien jier',\n yy : '%d jierren'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enIl = moment.defineLocale('en-il', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var sw = moment.defineLocale('sw', {\n months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\n weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[leo saa] LT',\n nextDay : '[kesho saa] LT',\n nextWeek : '[wiki ijayo] dddd [saat] LT',\n lastDay : '[jana] LT',\n lastWeek : '[wiki iliyopita] dddd [saat] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s baadaye',\n past : 'tokea %s',\n s : 'hivi punde',\n ss : 'sekunde %d',\n m : 'dakika moja',\n mm : 'dakika %d',\n h : 'saa limoja',\n hh : 'masaa %d',\n d : 'siku moja',\n dd : 'masiku %d',\n M : 'mwezi mmoja',\n MM : 'miezi %d',\n y : 'mwaka mmoja',\n yy : 'miaka %d'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return (n > 1) && (n < 5);\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n break;\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n break;\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n break;\n case 'd': // a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n break;\n case 'M': // a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n break;\n case 'y': // a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n break;\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months : months,\n monthsShort : monthsShort,\n weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat : {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'pred %s',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var yo = moment.defineLocale('yo', {\n months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),\n monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Ònì ni] LT',\n nextDay : '[Ọ̀la ni] LT',\n nextWeek : 'dddd [Ọsẹ̀ tón\\'bọ] [ni] LT',\n lastDay : '[Àna ni] LT',\n lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ní %s',\n past : '%s kọjá',\n s : 'ìsẹjú aayá die',\n ss :'aayá %d',\n m : 'ìsẹjú kan',\n mm : 'ìsẹjú %d',\n h : 'wákati kan',\n hh : 'wákati %d',\n d : 'ọjọ́ kan',\n dd : 'ọjọ́ %d',\n M : 'osù kan',\n MM : 'osù %d',\n y : 'ọdún kan',\n yy : 'ọdún %d'\n },\n dayOfMonthOrdinalParse : /ọjọ́\\s\\d{1,2}/,\n ordinal : 'ọjọ́ %d',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[danes ob] LT',\n nextDay : '[jutri ob] LT',\n\n nextWeek : function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay : '[včeraj ob] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'čez %s',\n past : 'pred %s',\n s : processRelativeTime,\n ss : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),\n numbersFuture = [\n 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',\n numbersPast[7], numbersPast[8], numbersPast[9]\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n return isFuture ? 'sekunnin' : 'sekuntia';\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD.MM.YYYY',\n LL : 'Do MMMM[ta] YYYY',\n LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l : 'D.M.YYYY',\n ll : 'Do MMM YYYY',\n lll : 'Do MMM YYYY, [klo] HH.mm',\n llll : 'ddd, Do MMM YYYY, [klo] HH.mm'\n },\n calendar : {\n sameDay : '[tänään] [klo] LT',\n nextDay : '[huomenna] [klo] LT',\n nextWeek : 'dddd [klo] LT',\n lastDay : '[eilen] [klo] LT',\n lastWeek : '[viime] dddd[na] [klo] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s päästä',\n past : '%s sitten',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠'\n }, numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM : function (input) {\n return 'م' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n ss : '%d ثانية',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var bg = moment.defineLocale('bg', {\n months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\n weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'D.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd, D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[Днес в] LT',\n nextDay : '[Утре в] LT',\n nextWeek : 'dddd [в] LT',\n lastDay : '[Вчера в] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[В изминалата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[В изминалия] dddd [в] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'след %s',\n past : 'преди %s',\n s : 'няколко секунди',\n ss : '%d секунди',\n m : 'минута',\n mm : '%d минути',\n h : 'час',\n hh : '%d часа',\n d : 'ден',\n dd : '%d дни',\n M : 'месец',\n MM : '%d месеца',\n y : 'година',\n yy : '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal : function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '၁',\n '2': '၂',\n '3': '၃',\n '4': '၄',\n '5': '၅',\n '6': '၆',\n '7': '၇',\n '8': '၈',\n '9': '၉',\n '0': '၀'\n }, numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0'\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss : '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်'\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var gl = moment.defineLocale('gl', {\n months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY H:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n },\n nextDay : function () {\n return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n },\n lastDay : function () {\n return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';\n },\n lastWeek : function () {\n return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past : 'hai %s',\n s : 'uns segundos',\n ss : '%d segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'unha hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un ano',\n yy : '%d anos'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex : monthsRegex,\n monthsShortRegex : monthsRegex,\n monthsStrictRegex : /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex : /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY H:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextDay : function () {\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastDay : function () {\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'en %s',\n past : 'hace %s',\n s : 'unos segundos',\n ss : '%d segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'una hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un año',\n yy : '%d años'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),\n monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),\n months : function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),\n weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM : function (input) {\n return ((input + '').toLowerCase()[0] === 'μ');\n },\n meridiemParse : /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendarEl : {\n sameDay : '[Σήμερα {}] LT',\n nextDay : '[Αύριο {}] LT',\n nextWeek : 'dddd [{}] LT',\n lastDay : '[Χθες {}] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse : 'L'\n },\n calendar : function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));\n },\n relativeTime : {\n future : 'σε %s',\n past : '%s πριν',\n s : 'λίγα δευτερόλεπτα',\n ss : '%d δευτερόλεπτα',\n m : 'ένα λεπτό',\n mm : '%d λεπτά',\n h : 'μία ώρα',\n hh : '%d ώρες',\n d : 'μία μέρα',\n dd : '%d μέρες',\n M : 'ένας μήνας',\n MM : '%d μήνες',\n y : 'ένας χρόνος',\n yy : '%d χρόνια'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4st is the first week of the year.\n }\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');\n function plural(n) {\n return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months : function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (format === '') {\n // Hack: if format empty we know this is used to generate\n // RegExp by moment. Give then back both valid forms of months\n // in RegExp ready format.\n return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : '%s temu',\n s : 'kilka sekund',\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : '1 dzień',\n dd : '%d dni',\n M : 'miesiąc',\n MM : translate,\n y : 'rok',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '۱',\n '2': '۲',\n '3': '۳',\n '4': '۴',\n '5': '۵',\n '6': '۶',\n '7': '۷',\n '8': '۸',\n '9': '۹',\n '0': '۰'\n }, numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0'\n };\n\n var fa = moment.defineLocale('fa', {\n months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n weekdays : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysShort : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar : {\n sameDay : '[امروز ساعت] LT',\n nextDay : '[فردا ساعت] LT',\n nextWeek : 'dddd [ساعت] LT',\n lastDay : '[دیروز ساعت] LT',\n lastWeek : 'dddd [پیش] [ساعت] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'در %s',\n past : '%s پیش',\n s : 'چند ثانیه',\n ss : 'ثانیه d%',\n m : 'یک دقیقه',\n mm : '%d دقیقه',\n h : 'یک ساعت',\n hh : '%d ساعت',\n d : 'یک روز',\n dd : '%d روز',\n M : 'یک ماه',\n MM : '%d ماه',\n y : 'یک سال',\n yy : '%d سال'\n },\n preparse: function (string) {\n return string.replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal : '%dم',\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠'\n }, numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n }, pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n }, plurals = {\n s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n }, pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n }, months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر'\n ];\n\n var ar = moment.defineLocale('ar', {\n months : months,\n monthsShort : months,\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'D/\\u200FM/\\u200FYYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM : function (input) {\n return 'م' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar : {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'بعد %s',\n past : 'منذ %s',\n s : pluralize('s'),\n ss : pluralize('s'),\n m : pluralize('m'),\n mm : pluralize('m'),\n h : pluralize('h'),\n hh : pluralize('h'),\n d : pluralize('d'),\n dd : pluralize('d'),\n M : pluralize('M'),\n MM : pluralize('M'),\n y : pluralize('y'),\n yy : pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '১',\n '2': '২',\n '3': '৩',\n '4': '৪',\n '5': '৫',\n '6': '৬',\n '7': '৭',\n '8': '৮',\n '9': '৯',\n '0': '০'\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0'\n };\n\n var bn = moment.defineLocale('bn', {\n months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),\n monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),\n weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),\n weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),\n longDateFormat : {\n LT : 'A h:mm সময়',\n LTS : 'A h:mm:ss সময়',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm সময়',\n LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'\n },\n calendar : {\n sameDay : '[আজ] LT',\n nextDay : '[আগামীকাল] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[গতকাল] LT',\n lastWeek : '[গত] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s পরে',\n past : '%s আগে',\n s : 'কয়েক সেকেন্ড',\n ss : '%d সেকেন্ড',\n m : 'এক মিনিট',\n mm : '%d মিনিট',\n h : 'এক ঘন্টা',\n hh : '%d ঘন্টা',\n d : 'এক দিন',\n dd : '%d দিন',\n M : 'এক মাস',\n MM : '%d মাস',\n y : 'এক বছর',\n yy : '%d বছর'\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if ((meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var zhTw = moment.defineLocale('zh-tw', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY年M月D日',\n LLL : 'YYYY年M月D日 HH:mm',\n LLLL : 'YYYY年M月D日dddd HH:mm',\n l : 'YYYY/M/D',\n ll : 'YYYY年M月D日',\n lll : 'YYYY年M月D日 HH:mm',\n llll : 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar : {\n sameDay : '[今天] LT',\n nextDay : '[明天] LT',\n nextWeek : '[下]dddd LT',\n lastDay : '[昨天] LT',\n lastWeek : '[上]dddd LT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd' :\n case 'D' :\n case 'DDD' :\n return number + '日';\n case 'M' :\n return number + '月';\n case 'w' :\n case 'W' :\n return number + '週';\n default :\n return number;\n }\n },\n relativeTime : {\n future : '%s內',\n past : '%s前',\n s : '幾秒',\n ss : '%d 秒',\n m : '1 分鐘',\n mm : '%d 分鐘',\n h : '1 小時',\n hh : '%d 小時',\n d : '1 天',\n dd : '%d 天',\n M : '1 個月',\n MM : '%d 個月',\n y : '1 年',\n yy : '%d 年'\n }\n });\n\n return zhTw;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact : true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS : 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed\n 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n 'hh': 'час_часа_часов',\n 'dd': 'день_дня_дней',\n 'MM': 'месяц_месяца_месяцев',\n 'yy': 'год_года_лет'\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n }\n else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months : {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\n },\n monthsShort : {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\n },\n weekdays : {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/\n },\n weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соотвествует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY г.',\n LLL : 'D MMMM YYYY г., H:mm',\n LLLL : 'dddd, D MMMM YYYY г., H:mm'\n },\n calendar : {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'через %s',\n past : '%s назад',\n s : 'несколько секунд',\n ss : relativeTimeWithPlural,\n m : relativeTimeWithPlural,\n mm : relativeTimeWithPlural,\n h : 'час',\n hh : relativeTimeWithPlural,\n d : 'день',\n dd : relativeTimeWithPlural,\n M : 'месяц',\n MM : relativeTimeWithPlural,\n y : 'год',\n yy : relativeTimeWithPlural\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM : function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months : 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),\n monthsShort : '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),\n monthsParseExact : true,\n weekdays : 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort : 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin : 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'YYYY оны MMMMын D',\n LLL : 'YYYY оны MMMMын D HH:mm',\n LLLL : 'dddd, YYYY оны MMMMын D HH:mm'\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM : function (input) {\n return input === 'ҮХ';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar : {\n sameDay : '[Өнөөдөр] LT',\n nextDay : '[Маргааш] LT',\n nextWeek : '[Ирэх] dddd LT',\n lastDay : '[Өчигдөр] LT',\n lastWeek : '[Өнгөрсөн] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s дараа',\n past : '%s өмнө',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n }\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү'\n };\n\n var ky = moment.defineLocale('ky', {\n months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),\n monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),\n weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),\n weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Бүгүн саат] LT',\n nextDay : '[Эртең саат] LT',\n nextWeek : 'dddd [саат] LT',\n lastDay : '[Кечээ саат] LT',\n lastWeek : '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ичинде',\n past : '%s мурун',\n s : 'бирнече секунд',\n ss : '%d секунд',\n m : 'бир мүнөт',\n mm : '%d мүнөт',\n h : 'бир саат',\n hh : '%d саат',\n d : 'бир күн',\n dd : '%d күн',\n M : 'бир ай',\n MM : '%d ай',\n y : 'бир жыл',\n yy : '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal : function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'ss': 'secunde',\n 'mm': 'minute',\n 'hh': 'ore',\n 'dd': 'zile',\n 'MM': 'luni',\n 'yy': 'ani'\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd, D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'peste %s',\n past : '%s în urmă',\n s : 'câteva secunde',\n ss : relativeTimeWithPlural,\n m : 'un minut',\n mm : relativeTimeWithPlural,\n h : 'o oră',\n hh : relativeTimeWithPlural,\n d : 'o zi',\n dd : relativeTimeWithPlural,\n M : 'o lună',\n MM : relativeTimeWithPlural,\n y : 'un an',\n yy : relativeTimeWithPlural\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var fr = moment.defineLocale('fr', {\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact : true,\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Aujourd’hui à] LT',\n nextDay : '[Demain à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[Hier à] LT',\n lastWeek : 'dddd [dernier à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dans %s',\n past : 'il y a %s',\n s : 'quelques secondes',\n ss : '%d secondes',\n m : 'une minute',\n mm : '%d minutes',\n h : 'une heure',\n hh : '%d heures',\n d : 'un jour',\n dd : '%d jours',\n M : 'un mois',\n MM : '%d mois',\n y : 'un an',\n yy : '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal : function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var arDz = moment.defineLocale('ar-dz', {\n months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n ss : '%d ثانية',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var bm = moment.defineLocale('bm', {\n months : 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),\n monthsShort : 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays : 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort : 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin : 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'MMMM [tile] D [san] YYYY',\n LLL : 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL : 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'\n },\n calendar : {\n sameDay : '[Bi lɛrɛ] LT',\n nextDay : '[Sini lɛrɛ] LT',\n nextWeek : 'dddd [don lɛrɛ] LT',\n lastDay : '[Kunu lɛrɛ] LT',\n lastWeek : 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s kɔnɔ',\n past : 'a bɛ %s bɔ',\n s : 'sanga dama dama',\n ss : 'sekondi %d',\n m : 'miniti kelen',\n mm : 'miniti %d',\n h : 'lɛrɛ kelen',\n hh : 'lɛrɛ %d',\n d : 'tile kelen',\n dd : 'tile %d',\n M : 'kalo kelen',\n MM : 'kalo %d',\n y : 'san kelen',\n yy : 'san %d'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'ss': withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n 'dd': 'день_дні_днів',\n 'MM': 'місяць_місяці_місяців',\n 'yy': 'рік_роки_років'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n }\n else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n }\n else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\n 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\n 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\n };\n\n if (m === true) {\n return weekdays['nominative'].slice(1, 7).concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n var nounCase = (/(\\[[ВвУу]\\]) ?dddd/).test(format) ?\n 'accusative' :\n ((/\\[?(?:минулої|наступної)? ?\\] ?dddd/).test(format) ?\n 'genitive' :\n 'nominative');\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months : {\n 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\n 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\n },\n monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\n weekdays : weekdaysCaseReplace,\n weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY р.',\n LLL : 'D MMMM YYYY р., HH:mm',\n LLLL : 'dddd, D MMMM YYYY р., HH:mm'\n },\n calendar : {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'за %s',\n past : '%s тому',\n s : 'декілька секунд',\n ss : relativeTimeWithPlural,\n m : relativeTimeWithPlural,\n mm : relativeTimeWithPlural,\n h : 'годину',\n hh : relativeTimeWithPlural,\n d : 'день',\n dd : relativeTimeWithPlural,\n M : 'місяць',\n MM : relativeTimeWithPlural,\n y : 'рік',\n yy : relativeTimeWithPlural\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n ss : '%d Sekunden',\n m : processRelativeTime,\n mm : '%d Minuten',\n h : processRelativeTime,\n hh : '%d Stunden',\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var lo = moment.defineLocale('lo', {\n months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'ວັນdddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar : {\n sameDay : '[ມື້ນີ້ເວລາ] LT',\n nextDay : '[ມື້ອື່ນເວລາ] LT',\n nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay : '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ອີກ %s',\n past : '%sຜ່ານມາ',\n s : 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss : '%d ວິນາທີ' ,\n m : '1 ນາທີ',\n mm : '%d ນາທີ',\n h : '1 ຊົ່ວໂມງ',\n hh : '%d ຊົ່ວໂມງ',\n d : '1 ມື້',\n dd : '%d ມື້',\n M : '1 ເດືອນ',\n MM : '%d ເດືອນ',\n y : '1 ປີ',\n yy : '%d ປີ'\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal : function (number) {\n return 'ທີ່' + number;\n }\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n ss : '%d Sekunden',\n m : processRelativeTime,\n mm : '%d Minuten',\n h : processRelativeTime,\n hh : '%d Stunden',\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'dadkh s yan %s',\n past : 'yan %s',\n s : 'imik',\n ss : '%d imik',\n m : 'minuḍ',\n mm : '%d minuḍ',\n h : 'saɛa',\n hh : '%d tassaɛin',\n d : 'ass',\n dd : '%d ossan',\n M : 'ayowr',\n MM : '%d iyyirn',\n y : 'asgas',\n yy : '%d isgasn'\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var jv = moment.defineLocale('jv', {\n months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar : {\n sameDay : '[Dinten puniko pukul] LT',\n nextDay : '[Mbenjang pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kala wingi pukul] LT',\n lastWeek : 'dddd [kepengker pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'wonten ing %s',\n past : '%s ingkang kepengker',\n s : 'sawetawis detik',\n ss : '%d detik',\n m : 'setunggal menit',\n mm : '%d menit',\n h : 'setunggal jam',\n hh : '%d jam',\n d : 'sedinten',\n dd : '%d dinten',\n M : 'sewulan',\n MM : '%d wulan',\n y : 'setaun',\n yy : '%d taun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n ss : '%d Sekunden',\n m : processRelativeTime,\n mm : '%d Minuten',\n h : processRelativeTime,\n hh : '%d Stunden',\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var nn = moment.defineLocale('nn', {\n months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),\n weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY [kl.] H:mm',\n LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s sidan',\n s : 'nokre sekund',\n ss : '%d sekund',\n m : 'eit minutt',\n mm : '%d minutt',\n h : 'ein time',\n hh : '%d timar',\n d : 'ein dag',\n dd : '%d dagar',\n M : 'ein månad',\n MM : '%d månader',\n y : 'eit år',\n yy : '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var units = {\n 'ss': 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n 'h': 'stundas_stundām_stunda_stundas'.split('_'),\n 'hh': 'stundas_stundām_stunda_stundas'.split('_'),\n 'd': 'dienas_dienām_diena_dienas'.split('_'),\n 'dd': 'dienas_dienām_diena_dienas'.split('_'),\n 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n 'y': 'gada_gadiem_gads_gadi'.split('_'),\n 'yy': 'gada_gadiem_gads_gadi'.split('_')\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),\n monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),\n weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY.',\n LL : 'YYYY. [gada] D. MMMM',\n LLL : 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'\n },\n calendar : {\n sameDay : '[Šodien pulksten] LT',\n nextDay : '[Rīt pulksten] LT',\n nextWeek : 'dddd [pulksten] LT',\n lastDay : '[Vakar pulksten] LT',\n lastWeek : '[Pagājušā] dddd [pulksten] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'pēc %s',\n past : 'pirms %s',\n s : relativeSeconds,\n ss : relativeTimeWithPlural,\n m : relativeTimeWithSingular,\n mm : relativeTimeWithPlural,\n h : relativeTimeWithSingular,\n hh : relativeTimeWithPlural,\n d : relativeTimeWithSingular,\n dd : relativeTimeWithPlural,\n M : relativeTimeWithSingular,\n MM : relativeTimeWithPlural,\n y : relativeTimeWithSingular,\n yy : relativeTimeWithPlural\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var tzm = moment.defineLocale('tzm', {\n months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past : 'ⵢⴰⵏ %s',\n s : 'ⵉⵎⵉⴽ',\n ss : '%d ⵉⵎⵉⴽ',\n m : 'ⵎⵉⵏⵓⴺ',\n mm : '%d ⵎⵉⵏⵓⴺ',\n h : 'ⵙⴰⵄⴰ',\n hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d : 'ⴰⵙⵙ',\n dd : '%d oⵙⵙⴰⵏ',\n M : 'ⴰⵢoⵓⵔ',\n MM : '%d ⵉⵢⵢⵉⵔⵏ',\n y : 'ⴰⵙⴳⴰⵙ',\n yy : '%d ⵉⵙⴳⴰⵙⵏ'\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return tzm;\n\n})));\n","//! moment.js\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n } else {\n var k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1 (mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n }\n else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate (y) {\n var date;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n var args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays (ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n var weekdays = isArray(this._weekdays) ? this._weekdays :\n this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone'];\n return (m === true) ? shiftWeekdays(weekdays, this._week.dow)\n : (m) ? weekdays[m.day()] : weekdays;\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n else {\n if ((typeof console !== 'undefined') && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var locale, parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, tmpLocale, parentConfig = baseConfig;\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n var obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10);\n var m = hm % 100, h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year': output = monthDiff(this, that) / 12; break;\n case 'month': output = monthDiff(this, that); break;\n case 'quarter': output = monthDiff(this, that) / 3; break;\n case 'second': output = (this - that) / 1e3; break; // 1000\n case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default: output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000;\n var MS_PER_MINUTE = 60 * MS_PER_SECOND;\n var MS_PER_HOUR = 60 * MS_PER_MINUTE;\n var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return (dividend % divisor + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf (units) {\n var time;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf (units) {\n var time;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2 () {\n return isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix (input) {\n return createLocal(input * 1000);\n }\n\n function createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month': return months;\n case 'quarter': return months / 3;\n case 'year': return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asQuarters = makeAs('Q');\n var asYears = makeAs('y');\n\n function clone$1 () {\n return createDuration(this);\n }\n\n function get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return ((x > 0) - (x < 0)) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return totalSign + 'P' +\n (Y ? ymSign + Y + 'Y' : '') +\n (M ? ymSign + M + 'M' : '') +\n (D ? daysSign + D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? hmsSign + h + 'H' : '') +\n (m ? hmsSign + m + 'M' : '') +\n (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n hooks.version = '2.24.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM' // \n };\n\n return hooks;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var he = moment.defineLocale('he', {\n months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\n monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [ב]MMMM YYYY',\n LLL : 'D [ב]MMMM YYYY HH:mm',\n LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',\n l : 'D/M/YYYY',\n ll : 'D MMM YYYY',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd, D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[היום ב־]LT',\n nextDay : '[מחר ב־]LT',\n nextWeek : 'dddd [בשעה] LT',\n lastDay : '[אתמול ב־]LT',\n lastWeek : '[ביום] dddd [האחרון בשעה] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'בעוד %s',\n past : 'לפני %s',\n s : 'מספר שניות',\n ss : '%d שניות',\n m : 'דקה',\n mm : '%d דקות',\n h : 'שעה',\n hh : function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d : 'יום',\n dd : function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M : 'חודש',\n MM : function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y : 'שנה',\n yy : function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n }\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM : function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n }\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var sq = moment.defineLocale('sq', {\n months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact : true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem : function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Sot në] LT',\n nextDay : '[Nesër në] LT',\n nextWeek : 'dddd [në] LT',\n lastDay : '[Dje në] LT',\n lastWeek : 'dddd [e kaluar në] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'në %s',\n past : '%s më parë',\n s : 'disa sekonda',\n ss : '%d sekonda',\n m : 'një minutë',\n mm : '%d minuta',\n h : 'një orë',\n hh : '%d orë',\n d : 'një ditë',\n dd : '%d ditë',\n M : 'një muaj',\n MM : '%d muaj',\n y : 'një vit',\n yy : '%d vite'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM [dallas] YYYY',\n LLL : 'D. MMMM [dallas] YYYY HH.mm',\n LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM : function (input) {\n return 'd\\'o' === input.toLowerCase();\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'd\\'o' : 'D\\'O';\n } else {\n return isLower ? 'd\\'a' : 'D\\'A';\n }\n },\n calendar : {\n sameDay : '[oxhi à] LT',\n nextDay : '[demà à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[ieiri à] LT',\n lastWeek : '[sür el] dddd [lasteu à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'osprei %s',\n past : 'ja%s',\n s : processRelativeTime,\n ss : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 's': ['viensas secunds', '\\'iensas secunds'],\n 'ss': [number + ' secunds', '' + number + ' secunds'],\n 'm': ['\\'n míut', '\\'iens míut'],\n 'mm': [number + ' míuts', '' + number + ' míuts'],\n 'h': ['\\'n þora', '\\'iensa þora'],\n 'hh': [number + ' þoras', '' + number + ' þoras'],\n 'd': ['\\'n ziua', '\\'iensa ziua'],\n 'dd': [number + ' ziuas', '' + number + ' ziuas'],\n 'M': ['\\'n mes', '\\'iens mes'],\n 'MM': [number + ' mesen', '' + number + ' mesen'],\n 'y': ['\\'n ar', '\\'iens ar'],\n 'yy': [number + ' ars', '' + number + ' ars']\n };\n return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time = (output.indexOf('jaj') !== -1) ?\n time.slice(0, -3) + 'leS' :\n (output.indexOf('jar') !== -1) ?\n time.slice(0, -3) + 'waQ' :\n (output.indexOf('DIS') !== -1) ?\n time.slice(0, -3) + 'nem' :\n time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time = (output.indexOf('jaj') !== -1) ?\n time.slice(0, -3) + 'Hu’' :\n (output.indexOf('jar') !== -1) ?\n time.slice(0, -3) + 'wen' :\n (output.indexOf('DIS') !== -1) ?\n time.slice(0, -3) + 'ben' :\n time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += ((word !== '') ? ' ' : '') + numbersNouns[one];\n }\n return (word === '') ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),\n monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),\n monthsParseExact : true,\n weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L'\n },\n relativeTime : {\n future : translateFuture,\n past : translatePast,\n s : 'puS lup',\n ss : translate,\n m : 'wa’ tup',\n mm : translate,\n h : 'wa’ rep',\n hh : translate,\n d : 'wa’ jaj',\n dd : translate,\n M : 'wa’ jar',\n MM : translate,\n y : 'wa’ DIS',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enSG = moment.defineLocale('en-SG', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enSG;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var translator = {\n words: { //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[juče u] LT',\n lastWeek : function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT'\n ];\n return lastWeekDays[this.day()];\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'pre %s',\n s : 'nekoliko sekundi',\n ss : translator.translate,\n m : translator.translate,\n mm : translator.translate,\n h : translator.translate,\n hh : translator.translate,\n d : 'dan',\n dd : translator.translate,\n M : 'mesec',\n MM : translator.translate,\n y : 'godinu',\n yy : translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return sr;\n\n})));\n"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-elementUI.21957ec8.js b/priv/static/adminfe/static/js/chunk-elementUI.21957ec8.js new file mode 100644 index 000000000..65462dc89 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-elementUI.21957ec8.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-elementUI"],{"05c+":function(e,t,i){"use strict";t.__esModule=!0,t.isDef=function(e){return void 0!==e&&null!==e},t.isKorean=function(e){return/([(\uAC00-\uD7AF)|(\u3130-\u318F)])+/gi.test(e)}},"0BDH":function(e,t,i){"use strict";t.__esModule=!0,t.default={methods:{dispatch:function(e,t,i){for(var n=this.$parent||this.$root,s=n.$options.componentName;n&&(!s||s!==e);)(n=n.$parent)&&(s=n.$options.componentName);n&&n.$emit.apply(n,[t].concat(i))},broadcast:function(e,t,i){(function e(t,i,n){this.$children.forEach(function(s){s.$options.componentName===t?s.$emit.apply(s,[i].concat(n)):e.apply(s,[t,i].concat([n]))})}).call(this,e,t,i)}}}},"19FS":function(e,t,i){"use strict";var n;!function(s){var r={},o=/d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,a="[^\\s]+",l=/\[([^]*?)\]/gm,c=function(){};function u(e,t){for(var i=[],n=0,s=e.length;n3?0:(e-e%10!=10)*e%10]}};var g={D:function(e){return e.getDay()},DD:function(e){return d(e.getDay())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return e.getDate()},dd:function(e){return d(e.getDate())},ddd:function(e,t){return t.dayNamesShort[e.getDay()]},dddd:function(e,t){return t.dayNames[e.getDay()]},M:function(e){return e.getMonth()+1},MM:function(e){return d(e.getMonth()+1)},MMM:function(e,t){return t.monthNamesShort[e.getMonth()]},MMMM:function(e,t){return t.monthNames[e.getMonth()]},yy:function(e){return d(String(e.getFullYear()),4).substr(2)},yyyy:function(e){return d(e.getFullYear(),4)},h:function(e){return e.getHours()%12||12},hh:function(e){return d(e.getHours()%12||12)},H:function(e){return e.getHours()},HH:function(e){return d(e.getHours())},m:function(e){return e.getMinutes()},mm:function(e){return d(e.getMinutes())},s:function(e){return e.getSeconds()},ss:function(e){return d(e.getSeconds())},S:function(e){return Math.round(e.getMilliseconds()/100)},SS:function(e){return d(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return d(e.getMilliseconds(),3)},a:function(e,t){return e.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(e,t){return e.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+d(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},b={d:["\\d\\d?",function(e,t){e.day=t}],Do:["\\d\\d?"+a,function(e,t){e.day=parseInt(t,10)}],M:["\\d\\d?",function(e,t){e.month=t-1}],yy:["\\d\\d?",function(e,t){var i=+(""+(new Date).getFullYear()).substr(0,2);e.year=""+(t>68?i-1:i)+t}],h:["\\d\\d?",function(e,t){e.hour=t}],m:["\\d\\d?",function(e,t){e.minute=t}],s:["\\d\\d?",function(e,t){e.second=t}],yyyy:["\\d{4}",function(e,t){e.year=t}],S:["\\d",function(e,t){e.millisecond=100*t}],SS:["\\d{2}",function(e,t){e.millisecond=10*t}],SSS:["\\d{3}",function(e,t){e.millisecond=t}],D:["\\d\\d?",c],ddd:[a,c],MMM:[a,h("monthNamesShort")],MMMM:[a,h("monthNames")],a:[a,function(e,t,i){var n=t.toLowerCase();n===i.amPm[0]?e.isPm=!1:n===i.amPm[1]&&(e.isPm=!0)}],ZZ:["[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z",function(e,t){var i,n=(t+"").match(/([+-]|\d\d)/gi);n&&(i=60*n[1]+parseInt(n[2],10),e.timezoneOffset="+"===n[0]?i:-i)}]};b.dd=b.d,b.dddd=b.ddd,b.DD=b.D,b.mm=b.m,b.hh=b.H=b.HH=b.h,b.MM=b.M,b.ss=b.s,b.A=b.a,r.masks={default:"ddd MMM dd yyyy HH:mm:ss",shortDate:"M/D/yy",mediumDate:"MMM d, yyyy",longDate:"MMMM d, yyyy",fullDate:"dddd, MMMM d, yyyy",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},r.format=function(e,t,i){var n=i||r.i18n;if("number"==typeof e&&(e=new Date(e)),"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw new Error("Invalid Date in fecha.format");var s=[];return(t=(t=(t=r.masks[t]||t||r.masks.default).replace(l,function(e,t){return s.push(t),"@@@"})).replace(o,function(t){return t in g?g[t](e,n):t.slice(1,t.length-1)})).replace(/@@@/g,function(){return s.shift()})},r.parse=function(e,t,i){var n=i||r.i18n;if("string"!=typeof t)throw new Error("Invalid format in fecha.parse");if(t=r.masks[t]||t,e.length>1e3)return null;var s={},a=[],c=[],u=function(e){return e.replace(/[|\\{()[^$+*?.-]/g,"\\$&")}(t=t.replace(l,function(e,t){return c.push(t),"@@@"})).replace(o,function(e){if(b[e]){var t=b[e];return a.push(t[1]),"("+t[0]+")"}return e});u=u.replace(/@@@/g,function(){return c.shift()});var h=e.match(new RegExp(u,"i"));if(!h)return null;for(var d=1;d1&&void 0!==arguments[1]?arguments[1]:1;return new Date(e.getFullYear(),e.getMonth(),e.getDate()-t)});t.nextDate=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Date(e.getFullYear(),e.getMonth(),e.getDate()+t)},t.getStartDateOfMonth=function(e,t){var i=new Date(e,t,1),n=i.getDay();return d(i,0===n?7:n)},t.getWeekNumber=function(e){if(!c(e))return null;var t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);var i=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-i.getTime())/864e5-3+(i.getDay()+6)%7)/7)},t.getRangeHours=function(e){var t=[],i=[];if((e||[]).forEach(function(e){var t=e.map(function(e){return e.getHours()});i=i.concat(function(e,t){for(var i=[],n=e;n<=t;n++)i.push(n);return i}(t[0],t[1]))}),i.length)for(var n=0;n<24;n++)t[n]=-1===i.indexOf(n);else for(var s=0;s<24;s++)t[s]=!1;return t},t.getPrevMonthLastDays=function(e,t){if(t<=0)return[];var i=new Date(e.getTime());i.setDate(0);var n=i.getDate();return f(t).map(function(e,i){return n-(t-i-1)})},t.getMonthDays=function(e){var t=new Date(e.getFullYear(),e.getMonth()+1,0).getDate();return f(t).map(function(e,t){return t+1})};function p(e,t,i,n){for(var s=t;s0?e.forEach(function(e){var n=e[0],s=e[1],r=n.getHours(),o=n.getMinutes(),a=s.getHours(),l=s.getMinutes();r===t&&a!==t?p(i,o,60,!0):r===t&&a===t?p(i,o,l+1,!0):r!==t&&a===t?p(i,0,l+1,!0):rt&&p(i,0,60,!0)}):p(i,0,60,!0),i};var f=t.range=function(e){return Array.apply(null,{length:e}).map(function(e,t){return t})},m=t.modifyDate=function(e,t,i,n){return new Date(t,i,n,e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())},v=t.modifyTime=function(e,t,i,n){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),t,i,n,e.getMilliseconds())},g=(t.modifyWithTimeString=function(e,t){return null!=e&&t?(t=u(t,"HH:mm:ss"),v(e,t.getHours(),t.getMinutes(),t.getSeconds())):e},t.clearTime=function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())},t.clearMilliseconds=function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),0)},t.limitTimeRange=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"HH:mm:ss";if(0===t.length)return e;var s=function(e){return n.default.parse(n.default.format(e,i),i)},r=s(e),o=t.map(function(e){return e.map(s)});if(o.some(function(e){return r>=e[0]&&r<=e[1]}))return e;var a=o[0][0],l=o[0][0];return o.forEach(function(e){a=new Date(Math.min(e[0],a)),l=new Date(Math.max(e[1],a))}),m(r1&&void 0!==arguments[1]?arguments[1]:1,i=e.getFullYear(),n=e.getMonth();return b(e,i-t,n)},t.nextYear=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=e.getFullYear(),n=e.getMonth();return b(e,i+t,n)},t.extractDateFormat=function(e){return e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim()},t.extractTimeFormat=function(e){return e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?y{2,4}/g,"").trim()},t.validateRangeInOneMonth=function(e,t){return e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()}},"3Nwd":function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=83)}({0:function(e,t,i){"use strict";function n(e,t,i,n,s,r,o,a){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),o?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},c._ssrRegister=l):s&&(l=a?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",function(){return n})},4:function(e,t){e.exports=i("0BDH")},83:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-checkbox",class:[e.border&&e.checkboxSize?"el-checkbox--"+e.checkboxSize:"",{"is-disabled":e.isDisabled},{"is-bordered":e.border},{"is-checked":e.isChecked}],attrs:{id:e.id}},[i("span",{staticClass:"el-checkbox__input",class:{"is-disabled":e.isDisabled,"is-checked":e.isChecked,"is-indeterminate":e.indeterminate,"is-focus":e.focus},attrs:{tabindex:!!e.indeterminate&&0,role:!!e.indeterminate&&"checkbox","aria-checked":!!e.indeterminate&&"mixed"}},[i("span",{staticClass:"el-checkbox__inner"}),e.trueLabel||e.falseLabel?i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":e.indeterminate?"true":"false",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,s=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var r=e._i(i,null);n.checked?r<0&&(e.model=i.concat([null])):r>-1&&(e.model=i.slice(0,r).concat(i.slice(r+1)))}else e.model=s},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":e.indeterminate?"true":"false",disabled:e.isDisabled,name:e.name},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,s=!!n.checked;if(Array.isArray(i)){var r=e.label,o=e._i(i,r);n.checked?o<0&&(e.model=i.concat([r])):o>-1&&(e.model=i.slice(0,o).concat(i.slice(o+1)))}else e.model=s},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}})]),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox__label"},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2):e._e()])};n._withStripped=!0;var s=i(4),r={name:"ElCheckbox",mixins:[i.n(s).a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElCheckbox",data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},computed:{model:{get:function(){return this.isGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this.isGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.lengththis._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):(this.$emit("input",e),this.selfModel=e)}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},isGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return this._checkboxGroup=e,!0;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this.isGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._checkboxGroup.checkboxGroupSize||e}},props:{value:{},label:{},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number],id:String,controls:String,border:Boolean,size:String},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick(function(){t.isGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()},mounted:function(){this.indeterminate&&this.$el.setAttribute("aria-controls",this.controls)},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}}},o=i(0),a=Object(o.a)(r,n,[],!1,null,null,null);a.options.__file="packages/checkbox/src/checkbox.vue";var l=a.exports;l.install=function(e){e.component(l.name,l)};t.default=l}})},"53J1":function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=53)}({0:function(e,t,i){"use strict";function n(e,t,i,n,s,r,o,a){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),o?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},c._ssrRegister=l):s&&(l=a?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",function(){return n})},3:function(e,t){e.exports=i("gSIQ")},34:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[i("span",[e._v(e._s(e.currentLabel))])])],2)};n._withStripped=!0;var s=i(4),r=i.n(s),o=i(3),a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l={mixins:[r.a],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var i=this.select,n=i.remote,s=i.valueKey;if(!this.created&&!n){if(s&&"object"===(void 0===e?"undefined":a(e))&&"object"===(void 0===t?"undefined":a(t))&&e[s]===t[s])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var i=this.select.valueKey;return Object(o.getValueByPath)(e,i)===Object(o.getValueByPath)(t,i)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var i=this.select.valueKey;return e&&e.some(function(e){return Object(o.getValueByPath)(e,i)===Object(o.getValueByPath)(t,i)})}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(o.escapeRegexpString)(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){var e=this.select,t=e.selected,i=e.multiple?t:[t],n=this.select.cachedOptions.indexOf(this),s=i.indexOf(this);n>-1&&s<0&&this.select.cachedOptions.splice(n,1),this.select.onOptionDestroy(this.select.options.indexOf(this))}},c=i(0),u=Object(c.a)(l,n,[],!1,null,null,null);u.options.__file="packages/select/src/option.vue";t.a=u.exports},4:function(e,t){e.exports=i("0BDH")},53:function(e,t,i){"use strict";i.r(t);var n=i(34);n.a.install=function(e){e.component(n.a.name,n.a)},t.default=n.a}})},"5FBR":function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=114)}({0:function(e,t,i){"use strict";function n(e,t,i,n,s,r,o,a){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),o?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},c._ssrRegister=l):s&&(l=a?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",function(){return n})},10:function(e,t){e.exports=i("8606")},114:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["el-input-number",e.inputNumberSize?"el-input-number--"+e.inputNumberSize:"",{"is-disabled":e.inputNumberDisabled},{"is-without-controls":!e.controls},{"is-controls-right":e.controlsAtRight}],on:{dragstart:function(e){e.preventDefault()}}},[e.controls?i("span",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-input-number__decrease",class:{"is-disabled":e.minDisabled},attrs:{role:"button"},on:{keydown:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.decrease(t):null}}},[i("i",{class:"el-icon-"+(e.controlsAtRight?"arrow-down":"minus")})]):e._e(),e.controls?i("span",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-input-number__increase",class:{"is-disabled":e.maxDisabled},attrs:{role:"button"},on:{keydown:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.increase(t):null}}},[i("i",{class:"el-icon-"+(e.controlsAtRight?"arrow-up":"plus")})]):e._e(),i("el-input",{ref:"input",attrs:{value:e.displayValue,placeholder:e.placeholder,disabled:e.inputNumberDisabled,size:e.inputNumberSize,max:e.max,min:e.min,name:e.name,label:e.label},on:{blur:e.handleBlur,focus:e.handleFocus,input:e.handleInput,change:e.handleInputChange},nativeOn:{keydown:[function(t){return"button"in t||!e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?(t.preventDefault(),e.increase(t)):null},function(t){return"button"in t||!e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?(t.preventDefault(),e.decrease(t)):null}]}})],1)};n._withStripped=!0;var s=i(10),r=i.n(s),o=i(22),a=i.n(o),l=i(30),c={name:"ElInputNumber",mixins:[a()("input")],inject:{elForm:{default:""},elFormItem:{default:""}},directives:{repeatClick:l.a},components:{ElInput:r.a},props:{step:{type:Number,default:1},stepStrictly:{type:Boolean,default:!1},max:{type:Number,default:1/0},min:{type:Number,default:-1/0},value:{},disabled:Boolean,size:String,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:""},name:String,label:String,placeholder:String,precision:{type:Number,validator:function(e){return e>=0&&e===parseInt(e,10)}}},data:function(){return{currentValue:0,userInput:null}},watch:{value:{immediate:!0,handler:function(e){var t=void 0===e?e:Number(e);if(void 0!==t){if(isNaN(t))return;if(this.stepStrictly){var i=this.getPrecision(this.step),n=Math.pow(10,i);t=Math.round(t/this.step)*n*this.step/n}void 0!==this.precision&&(t=this.toPrecision(t,this.precision))}t>=this.max&&(t=this.max),t<=this.min&&(t=this.min),this.currentValue=t,this.userInput=null,this.$emit("input",t)}}},computed:{minDisabled:function(){return this._decrease(this.value,this.step)this.max},numPrecision:function(){var e=this.value,t=this.step,i=this.getPrecision,n=this.precision,s=i(t);return void 0!==n?(s>n&&console.warn("[Element Warn][InputNumber]precision should not be less than the decimal places of step"),n):Math.max(i(e),s)},controlsAtRight:function(){return this.controls&&"right"===this.controlsPosition},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},inputNumberSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputNumberDisabled:function(){return this.disabled||!!(this.elForm||{}).disabled},displayValue:function(){if(null!==this.userInput)return this.userInput;var e=this.currentValue;if("number"==typeof e){if(this.stepStrictly){var t=this.getPrecision(this.step),i=Math.pow(10,t);e=Math.round(e/this.step)*i*this.step/i}void 0!==this.precision&&(e=e.toFixed(this.precision))}return e}},methods:{toPrecision:function(e,t){return void 0===t&&(t=this.numPrecision),parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t))},getPrecision:function(e){if(void 0===e)return 0;var t=e.toString(),i=t.indexOf("."),n=0;return-1!==i&&(n=t.length-i-1),n},_increase:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e+i*t)/i)},_decrease:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e-i*t)/i)},increase:function(){if(!this.inputNumberDisabled&&!this.maxDisabled){var e=this.value||0,t=this._increase(e,this.step);this.setCurrentValue(t)}},decrease:function(){if(!this.inputNumberDisabled&&!this.minDisabled){var e=this.value||0,t=this._decrease(e,this.step);this.setCurrentValue(t)}},handleBlur:function(e){this.$emit("blur",e)},handleFocus:function(e){this.$emit("focus",e)},setCurrentValue:function(e){var t=this.currentValue;"number"==typeof e&&void 0!==this.precision&&(e=this.toPrecision(e,this.precision)),e>=this.max&&(e=this.max),e<=this.min&&(e=this.min),t!==e&&(this.userInput=null,this.$emit("input",e),this.$emit("change",e,t),this.currentValue=e)},handleInput:function(e){this.userInput=e},handleInputChange:function(e){var t=""===e?void 0:Number(e);isNaN(t)&&""!==e||this.setCurrentValue(t),this.userInput=null},select:function(){this.$refs.input.select()}},mounted:function(){var e=this.$refs.input.$refs.input;e.setAttribute("role","spinbutton"),e.setAttribute("aria-valuemax",this.max),e.setAttribute("aria-valuemin",this.min),e.setAttribute("aria-valuenow",this.currentValue),e.setAttribute("aria-disabled",this.inputNumberDisabled)},updated:function(){this.$refs&&this.$refs.input&&this.$refs.input.$refs.input.setAttribute("aria-valuenow",this.currentValue)}},u=i(0),h=Object(u.a)(c,n,[],!1,null,null,null);h.options.__file="packages/input-number/src/input-number.vue";var d=h.exports;d.install=function(e){e.component(d.name,d)};t.default=d},2:function(e,t){e.exports=i("WST1")},22:function(e,t){e.exports=i("EvI9")},30:function(e,t,i){"use strict";var n=i(2);t.a={bind:function(e,t,i){var s=null,r=void 0,o=function(){return i.context[t.expression].apply()},a=function(){Date.now()-r<100&&o(),clearInterval(s),s=null};Object(n.on)(e,"mousedown",function(e){0===e.button&&(r=Date.now(),Object(n.once)(document,"mouseup",a),clearInterval(s),s=setInterval(o,100))})}}}})},"5FLJ":function(e,t,i){"use strict";t.__esModule=!0;var n=n||{};n.Utils=n.Utils||{},n.Utils.focusFirstDescendant=function(e){for(var t=0;t=0;t--){var i=e.childNodes[t];if(n.Utils.attemptFocus(i)||n.Utils.focusLastDescendant(i))return!0}return!1},n.Utils.attemptFocus=function(e){if(!n.Utils.isFocusable(e))return!1;n.Utils.IgnoreUtilFocusChanges=!0;try{e.focus()}catch(e){}return n.Utils.IgnoreUtilFocusChanges=!1,document.activeElement===e},n.Utils.isFocusable=function(e){if(e.tabIndex>0||0===e.tabIndex&&null!==e.getAttribute("tabIndex"))return!0;if(e.disabled)return!1;switch(e.nodeName){case"A":return!!e.href&&"ignore"!==e.rel;case"INPUT":return"hidden"!==e.type&&"file"!==e.type;case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},n.Utils.triggerEvent=function(e,t){var i=void 0;i=/^mouse|click/.test(t)?"MouseEvents":/^key/.test(t)?"KeyboardEvent":"HTMLEvents";for(var n=document.createEvent(i),s=arguments.length,r=Array(s>2?s-2:0),o=2;o-1?"center "+t:t+" center"}},appendArrow:function(e){var t=void 0;if(!this.appended){for(var i in this.appended=!0,e.attributes)if(/^_v-/.test(e.attributes[i].name)){t=e.attributes[i].name;break}var n=document.createElement("div");t&&n.setAttribute(t,""),n.setAttribute("x-arrow",""),n.className="popper__arrow",e.appendChild(n)}}},beforeDestroy:function(){this.doDestroy(!0),this.popperElm&&this.popperElm.parentNode===document.body&&(this.popperElm.removeEventListener("click",o),document.body.removeChild(this.popperElm))},deactivated:function(){this.$options.beforeDestroy[0].call(this)}}},"7t/g":function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=97)}({0:function(e,t,i){"use strict";function n(e,t,i,n,s,r,o,a){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),o?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},c._ssrRegister=l):s&&(l=a?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",function(){return n})},97:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("button",{staticClass:"el-button",class:[e.type?"el-button--"+e.type:"",e.buttonSize?"el-button--"+e.buttonSize:"",{"is-disabled":e.buttonDisabled,"is-loading":e.loading,"is-plain":e.plain,"is-round":e.round,"is-circle":e.circle}],attrs:{disabled:e.buttonDisabled||e.loading,autofocus:e.autofocus,type:e.nativeType},on:{click:e.handleClick}},[e.loading?i("i",{staticClass:"el-icon-loading"}):e._e(),e.icon&&!e.loading?i("i",{class:e.icon}):e._e(),e.$slots.default?i("span",[e._t("default")],2):e._e()])};n._withStripped=!0;var s={name:"ElButton",inject:{elForm:{default:""},elFormItem:{default:""}},props:{type:{type:String,default:"default"},size:String,icon:{type:String,default:""},nativeType:{type:String,default:"button"},loading:Boolean,disabled:Boolean,plain:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},buttonSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},buttonDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},methods:{handleClick:function(e){this.$emit("click",e)}}},r=i(0),o=Object(r.a)(s,n,[],!1,null,null,null);o.options.__file="packages/button/src/button.vue";var a=o.exports;a.install=function(e){e.component(a.name,a)};t.default=a}})},8606:function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=76)}({0:function(e,t,i){"use strict";function n(e,t,i,n,s,r,o,a){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),o?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},c._ssrRegister=l):s&&(l=a?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",function(){return n})},11:function(e,t){e.exports=i("K7XR")},21:function(e,t){e.exports=i("05c+")},4:function(e,t){e.exports=i("0BDH")},76:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["textarea"===e.type?"el-textarea":"el-input",e.inputSize?"el-input--"+e.inputSize:"",{"is-disabled":e.inputDisabled,"is-exceed":e.inputExceed,"el-input-group":e.$slots.prepend||e.$slots.append,"el-input-group--append":e.$slots.append,"el-input-group--prepend":e.$slots.prepend,"el-input--prefix":e.$slots.prefix||e.prefixIcon,"el-input--suffix":e.$slots.suffix||e.suffixIcon||e.clearable||e.showPassword}],on:{mouseenter:function(t){e.hovering=!0},mouseleave:function(t){e.hovering=!1}}},["textarea"!==e.type?[e.$slots.prepend?i("div",{staticClass:"el-input-group__prepend"},[e._t("prepend")],2):e._e(),"textarea"!==e.type?i("input",e._b({ref:"input",staticClass:"el-input__inner",attrs:{tabindex:e.tabindex,type:e.showPassword?e.passwordVisible?"text":"password":e.type,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"input",e.$attrs,!1)):e._e(),e.$slots.prefix||e.prefixIcon?i("span",{staticClass:"el-input__prefix"},[e._t("prefix"),e.prefixIcon?i("i",{staticClass:"el-input__icon",class:e.prefixIcon}):e._e()],2):e._e(),e.getSuffixVisible()?i("span",{staticClass:"el-input__suffix"},[i("span",{staticClass:"el-input__suffix-inner"},[e.showClear&&e.showPwdVisible&&e.isWordLimitVisible?e._e():[e._t("suffix"),e.suffixIcon?i("i",{staticClass:"el-input__icon",class:e.suffixIcon}):e._e()],e.showClear?i("i",{staticClass:"el-input__icon el-icon-circle-close el-input__clear",on:{mousedown:function(e){e.preventDefault()},click:e.clear}}):e._e(),e.showPwdVisible?i("i",{staticClass:"el-input__icon el-icon-view el-input__clear",on:{click:e.handlePasswordVisible}}):e._e(),e.isWordLimitVisible?i("span",{staticClass:"el-input__count"},[i("span",{staticClass:"el-input__count-inner"},[e._v("\n "+e._s(e.textLength)+"/"+e._s(e.upperLimit)+"\n ")])]):e._e()],2),e.validateState?i("i",{staticClass:"el-input__icon",class:["el-input__validateIcon",e.validateIcon]}):e._e()]):e._e(),e.$slots.append?i("div",{staticClass:"el-input-group__append"},[e._t("append")],2):e._e()]:i("textarea",e._b({ref:"textarea",staticClass:"el-textarea__inner",style:e.textareaStyle,attrs:{tabindex:e.tabindex,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"textarea",e.$attrs,!1)),e.isWordLimitVisible&&"textarea"===e.type?i("span",{staticClass:"el-input__count"},[e._v(e._s(e.textLength)+"/"+e._s(e.upperLimit))]):e._e()],2)};n._withStripped=!0;var s=i(4),r=i.n(s),o=i(11),a=i.n(o),l=void 0,c="\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n",u=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function h(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;l||(l=document.createElement("textarea"),document.body.appendChild(l));var n=function(e){var t=window.getComputedStyle(e),i=t.getPropertyValue("box-sizing"),n=parseFloat(t.getPropertyValue("padding-bottom"))+parseFloat(t.getPropertyValue("padding-top")),s=parseFloat(t.getPropertyValue("border-bottom-width"))+parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:u.map(function(e){return e+":"+t.getPropertyValue(e)}).join(";"),paddingSize:n,borderSize:s,boxSizing:i}}(e),s=n.paddingSize,r=n.borderSize,o=n.boxSizing,a=n.contextStyle;l.setAttribute("style",a+";"+c),l.value=e.value||e.placeholder||"";var h=l.scrollHeight,d={};"border-box"===o?h+=r:"content-box"===o&&(h-=s),l.value="";var p=l.scrollHeight-s;if(null!==t){var f=p*t;"border-box"===o&&(f=f+s+r),h=Math.max(f,h),d.minHeight=f+"px"}if(null!==i){var m=p*i;"border-box"===o&&(m=m+s+r),h=Math.min(m,h)}return d.height=h+"px",l.parentNode&&l.parentNode.removeChild(l),l=null,d}var d=i(9),p=i.n(d),f=i(21),m={name:"ElInput",componentName:"ElInput",mixins:[r.a,a.a],inheritAttrs:!1,inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{textareaCalcStyle:{},hovering:!1,focused:!1,isComposing:!1,passwordVisible:!1}},props:{value:[String,Number],size:String,resize:String,form:String,disabled:Boolean,readonly:Boolean,type:{type:String,default:"text"},autosize:{type:[Boolean,Object],default:!1},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},validateEvent:{type:Boolean,default:!0},suffixIcon:String,prefixIcon:String,label:String,clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},tabindex:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},validateState:function(){return this.elFormItem?this.elFormItem.validateState:""},needStatusIcon:function(){return!!this.elForm&&this.elForm.statusIcon},validateIcon:function(){return{validating:"el-icon-loading",success:"el-icon-circle-check",error:"el-icon-circle-close"}[this.validateState]},textareaStyle:function(){return p()({},this.textareaCalcStyle,{resize:this.resize})},inputSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputDisabled:function(){return this.disabled||(this.elForm||{}).disabled},nativeInputValue:function(){return null===this.value||void 0===this.value?"":String(this.value)},showClear:function(){return this.clearable&&!this.inputDisabled&&!this.readonly&&this.nativeInputValue&&(this.focused||this.hovering)},showPwdVisible:function(){return this.showPassword&&!this.inputDisabled&&!this.readonly&&(!!this.nativeInputValue||this.focused)},isWordLimitVisible:function(){return this.showWordLimit&&this.$attrs.maxlength&&("text"===this.type||"textarea"===this.type)&&!this.inputDisabled&&!this.readonly&&!this.showPassword},upperLimit:function(){return this.$attrs.maxlength},textLength:function(){return"number"==typeof this.value?String(this.value).length:(this.value||"").length},inputExceed:function(){return this.isWordLimitVisible&&this.textLength>this.upperLimit}},watch:{value:function(e){this.$nextTick(this.resizeTextarea),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[e])},nativeInputValue:function(){this.setNativeInputValue()},type:function(){var e=this;this.$nextTick(function(){e.setNativeInputValue(),e.resizeTextarea(),e.updateIconOffset()})}},methods:{focus:function(){this.getInput().focus()},blur:function(){this.getInput().blur()},getMigratingConfig:function(){return{props:{icon:"icon is removed, use suffix-icon / prefix-icon instead.","on-icon-click":"on-icon-click is removed."},events:{click:"click is removed."}}},handleBlur:function(e){this.focused=!1,this.$emit("blur",e),this.validateEvent&&this.dispatch("ElFormItem","el.form.blur",[this.value])},select:function(){this.getInput().select()},resizeTextarea:function(){if(!this.$isServer){var e=this.autosize;if("textarea"===this.type)if(e){var t=e.minRows,i=e.maxRows;this.textareaCalcStyle=h(this.$refs.textarea,t,i)}else this.textareaCalcStyle={minHeight:h(this.$refs.textarea).minHeight}}},setNativeInputValue:function(){var e=this.getInput();e&&e.value!==this.nativeInputValue&&(e.value=this.nativeInputValue)},handleFocus:function(e){this.focused=!0,this.$emit("focus",e)},handleCompositionStart:function(){this.isComposing=!0},handleCompositionUpdate:function(e){var t=e.target.value,i=t[t.length-1]||"";this.isComposing=!Object(f.isKorean)(i)},handleCompositionEnd:function(e){this.isComposing&&(this.isComposing=!1,this.handleInput(e))},handleInput:function(e){this.isComposing||e.target.value!==this.nativeInputValue&&(this.$emit("input",e.target.value),this.$nextTick(this.setNativeInputValue))},handleChange:function(e){this.$emit("change",e.target.value)},calcIconOffset:function(e){var t=[].slice.call(this.$el.querySelectorAll(".el-input__"+e)||[]);if(t.length){for(var i=null,n=0;n0&&(this.timeoutPending=setTimeout(function(){e.showPopper=!1},this.hideAfter)))},handleClosePopper:function(){this.enterable&&this.expectedState||this.manual||(clearTimeout(this.timeout),this.timeoutPending&&clearTimeout(this.timeoutPending),this.showPopper=!1,this.disabled&&this.doDestroy())},setExpectedState:function(e){!1===e&&clearTimeout(this.timeoutPending),this.expectedState=e},getFirstElement:function(){var e=this.$slots.default;if(!Array.isArray(e))return null;for(var t=null,i=0;il&&(e.scrollTop=o-e.clientHeight)};var n=function(e){return e&&e.__esModule?e:{default:e}}(i("Kw5r"))},PtZe:function(e,t,i){"use strict";t.__esModule=!0,t.default={el:{colorpicker:{confirm:"Confirmar",clear:"Despejar"},datepicker:{now:"Ahora",today:"Hoy",cancel:"Cancelar",clear:"Despejar",confirm:"Confirmar",selectDate:"Seleccionar fecha",selectTime:"Seleccionar hora",startDate:"Fecha Incial",startTime:"Hora Inicial",endDate:"Fecha Final",endTime:"Hora Final",prevYear:"Año Anterior",nextYear:"Próximo Año",prevMonth:"Mes Anterior",nextMonth:"Próximo Mes",year:"",month1:"enero",month2:"febrero",month3:"marzo",month4:"abril",month5:"mayo",month6:"junio",month7:"julio",month8:"agosto",month9:"septiembre",month10:"octubre",month11:"noviembre",month12:"diciembre",weeks:{sun:"dom",mon:"lun",tue:"mar",wed:"mié",thu:"jue",fri:"vie",sat:"sáb"},months:{jan:"ene",feb:"feb",mar:"mar",apr:"abr",may:"may",jun:"jun",jul:"jul",aug:"ago",sep:"sep",oct:"oct",nov:"nov",dec:"dic"}},select:{loading:"Cargando",noMatch:"No hay datos que coincidan",noData:"Sin datos",placeholder:"Seleccionar"},cascader:{noMatch:"No hay datos que coincidan",loading:"Cargando",placeholder:"Seleccionar",noData:"Sin datos"},pagination:{goto:"Ir a",pagesize:"/página",total:"Total {total}",pageClassifier:""},messagebox:{confirm:"Aceptar",cancel:"Cancelar",error:"Entrada inválida"},upload:{deleteTip:"Pulse Eliminar para retirar",delete:"Eliminar",preview:"Vista Previa",continue:"Continuar"},table:{emptyText:"Sin Datos",confirmFilter:"Confirmar",resetFilter:"Reiniciar",clearFilter:"Despejar",sumText:"Suma"},tree:{emptyText:"Sin Datos"},transfer:{noMatch:"No hay datos que coincidan",noData:"Sin datos",titles:["Lista 1","Lista 2"],filterPlaceholder:"Ingresar palabra clave",noCheckedFormat:"{total} artículos",hasCheckedFormat:"{checked}/{total} revisados"},image:{error:"HA FALLADO"},pageHeader:{title:"Volver"},popconfirm:{confirmButtonText:"Si",cancelButtonText:"No"}}}},QBBo:function(e,t,i){"use strict";t.__esModule=!0,t.removeResizeListener=t.addResizeListener=void 0;var n=function(e){return e&&e.__esModule?e:{default:e}}(i("bdgK"));var s="undefined"==typeof window,r=function(e){var t=e,i=Array.isArray(t),n=0;for(t=i?t:t[Symbol.iterator]();;){var s;if(i){if(n>=t.length)break;s=t[n++]}else{if((n=t.next()).done)break;s=n.value}var r=s.target.__resizeListeners__||[];r.length&&r.forEach(function(e){e()})}};t.addResizeListener=function(e,t){s||(e.__resizeListeners__||(e.__resizeListeners__=[],e.__ro__=new n.default(r),e.__ro__.observe(e)),e.__resizeListeners__.push(t))},t.removeResizeListener=function(e,t){e&&e.__resizeListeners__&&(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),e.__resizeListeners__.length||e.__ro__.disconnect())}},"QX/b":function(e,t,i){"use strict";t.__esModule=!0;var n=function(e){return e&&e.__esModule?e:{default:e}}(i("Kw5r")),s=i("WST1");var r=[],o="@@clickoutsideContext",a=void 0,l=0;function c(e,t,i){return function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!(i&&i.context&&n.target&&s.target)||e.contains(n.target)||e.contains(s.target)||e===n.target||i.context.popperElm&&(i.context.popperElm.contains(n.target)||i.context.popperElm.contains(s.target))||(t.expression&&e[o].methodName&&i.context[e[o].methodName]?i.context[e[o].methodName]():e[o].bindingFn&&e[o].bindingFn())}}!n.default.prototype.$isServer&&(0,s.on)(document,"mousedown",function(e){return a=e}),!n.default.prototype.$isServer&&(0,s.on)(document,"mouseup",function(e){r.forEach(function(t){return t[o].documentHandler(e,a)})}),t.default={bind:function(e,t,i){r.push(e);var n=l++;e[o]={id:n,documentHandler:c(e,t,i),methodName:t.expression,bindingFn:t.value}},update:function(e,t,i){e[o].documentHandler=c(e,t,i),e[o].methodName=t.expression,e[o].bindingFn=t.value},unbind:function(e){for(var t=r.length,i=0;i\n \n '}else i||(this.hoverTimer=setTimeout(this.clearHoverZone,this.panel.config.hoverThreshold))},clearHoverZone:function(){var e=this.$refs.hoverZone;e&&(e.innerHTML="")},renderEmptyText:function(e){return e("div",{class:"el-cascader-menu__empty-text"},[this.t("el.cascader.noData")])},renderNodeList:function(e){var t=this.menuId,i=this.panel.isHoverMenu,n={on:{}};i&&(n.on.expand=this.handleExpand);var s=this.nodes.map(function(i,s){var o=i.hasChildren;return e("cascader-node",r()([{key:i.uid,attrs:{node:i,"node-id":t+"-"+s,"aria-haspopup":o,"aria-owns":o?t:null}},n]))});return[].concat(s,[i?e("svg",{ref:"hoverZone",class:"el-cascader-menu__hover-zone"}):null])}},render:function(e){var t=this.isEmpty,i=this.menuId,n={nativeOn:{}};return this.panel.isHoverMenu&&(n.nativeOn.mousemove=this.handleMouseMove),e("el-scrollbar",r()([{attrs:{tag:"ul",role:"menu",id:i,"wrap-class":"el-cascader-menu__wrap","view-class":{"el-cascader-menu__list":!0,"is-empty":t}},class:"el-cascader-menu"},n]),[t?this.renderEmptyText(e):this.renderNodeList(e)])}},_=Object(m.a)(y,void 0,void 0,!1,null,null,null);_.options.__file="packages/cascader-panel/src/cascader-menu.vue";var x=_.exports,C=i(21),w=function(){function e(e,t){for(var i=0;i1?t-1:0),n=1;n1?n-1:0),r=1;r0},e.prototype.syncCheckState=function(e){var t=this.getValueByOption(),i=this.isSameNode(e,t);this.doCheck(i)},e.prototype.doCheck=function(e){this.checked!==e&&(this.config.checkStrictly?this.checked=e:(this.broadcast("check",e),this.setCheckState(e),this.emit("check")))},w(e,[{key:"isDisabled",get:function(){var e=this.data,t=this.parent,i=this.config,n=i.disabled,s=i.checkStrictly;return e[n]||!s&&t&&t.isDisabled}},{key:"isLeaf",get:function(){var e=this.data,t=this.loaded,i=this.hasChildren,n=this.children,s=this.config,r=s.lazy,o=s.leaf;if(r){var a=Object(C.isDef)(e[o])?e[o]:!!t&&!n.length;return this.hasChildren=!a,a}return!i}}]),e}();var D=function(){function e(t,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.config=i,this.initNodes(t)}return e.prototype.initNodes=function(e){var t=this;e=Object(d.coerceTruthyValueToArray)(e),this.nodes=e.map(function(e){return new S(e,t.config)}),this.flattedNodes=this.getFlattedNodes(!1,!1),this.leafNodes=this.getFlattedNodes(!0,!1)},e.prototype.appendNode=function(e,t){var i=new S(e,this.config,t);(t?t.children:this.nodes).push(i)},e.prototype.appendNodes=function(e,t){var i=this;(e=Object(d.coerceTruthyValueToArray)(e)).forEach(function(e){return i.appendNode(e,t)})},e.prototype.getNodes=function(){return this.nodes},e.prototype.getFlattedNodes=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=e?this.leafNodes:this.flattedNodes;return t?i:function e(t,i){return t.reduce(function(t,n){return n.isLeaf?t.push(n):(!i&&t.push(n),t=t.concat(e(n.children,i))),t},[])}(this.nodes,e)},e.prototype.getNodeByValue=function(e){if(e){var t=this.getFlattedNodes(!1,!this.config.lazy).filter(function(t){return Object(d.valueEquals)(t.path,e)||t.value===e});return t&&t.length?t[0]:null}return null},e}(),$=i(9),O=i.n($),E=i(32),T=i.n(E),P=i(31),M=i.n(P),I=Object.assign||function(e){for(var t=1;t0){var l=i.store.getNodeByValue(r);l.data[a]||i.lazyLoad(l,function(){i.handleExpand(l)}),i.loadCount===i.checkedValue.length&&i.$parent.computePresentText()}}t&&t(n)})},calculateMultiCheckedValue:function(){this.checkedValue=this.getCheckedNodes(this.leafOnly).map(function(e){return e.getValueByOption()})},scrollIntoView:function(){this.$isServer||(this.$refs.menu||[]).forEach(function(e){var t=e.$el;if(t){var i=t.querySelector(".el-scrollbar__wrap"),n=t.querySelector(".el-cascader-node.is-active")||t.querySelector(".el-cascader-node.in-active-path");M()(i,n)}})},getNodeByValue:function(e){return this.store.getNodeByValue(e)},getFlattedNodes:function(e){var t=!this.config.lazy;return this.store.getFlattedNodes(e,t)},getCheckedNodes:function(e){var t=this.checkedValue;return this.multiple?this.getFlattedNodes(e).filter(function(e){return e.checked}):Object(d.isEmpty)(t)?[]:[this.getNodeByValue(t)]},clearCheckedNodes:function(){var e=this.config,t=this.leafOnly,i=e.multiple,n=e.emitPath;i?(this.getCheckedNodes(t).filter(function(e){return!e.isDisabled}).forEach(function(e){return e.doCheck(!1)}),this.calculateMultiCheckedValue()):this.checkedValue=n?[]:null}}},z=Object(m.a)(B,n,[],!1,null,null,null);z.options.__file="packages/cascader-panel/src/cascader-panel.vue";var R=z.exports;R.install=function(e){e.component(R.name,R)};t.default=R},6:function(e,t){e.exports=i("a3zo")},9:function(e,t){e.exports=i("f03z")}})},SJdT:function(e,t,i){"use strict";t.__esModule=!0,t.i18n=t.use=t.t=void 0;var n=o(i("8NkQ")),s=o(i("Kw5r")),r=o(i("mvxv"));function o(e){return e&&e.__esModule?e:{default:e}}var a=(0,o(i("nX6K")).default)(s.default),l=n.default,c=!1,u=function(){var e=Object.getPrototypeOf(this||s.default).$t;if("function"==typeof e&&s.default.locale)return c||(c=!0,s.default.locale(s.default.config.lang,(0,r.default)(l,s.default.locale(s.default.config.lang)||{},{clone:!0}))),e.apply(this,arguments)},h=t.t=function(e,t){var i=u.apply(this,arguments);if(null!==i&&void 0!==i)return i;for(var n=e.split("."),s=l,r=0,o=n.length;r0){var n=t[t.length-1];if(n.id===e){if(n.modalClass)n.modalClass.trim().split(/\s+/).forEach(function(e){return(0,s.removeClass)(i,e)});t.pop(),t.length>0&&(i.style.zIndex=t[t.length-1].zIndex)}else for(var r=t.length-1;r>=0;r--)if(t[r].id===e){t.splice(r,1);break}}0===t.length&&(this.modalFade&&(0,s.addClass)(i,"v-modal-leave"),setTimeout(function(){0===t.length&&(i.parentNode&&i.parentNode.removeChild(i),i.style.display="none",u.modalDom=void 0),(0,s.removeClass)(i,"v-modal-leave")},200))}};Object.defineProperty(u,"zIndex",{configurable:!0,get:function(){return o||(a=a||(n.default.prototype.$ELEMENT||{}).zIndex||2e3,o=!0),a},set:function(e){a=e}});n.default.prototype.$isServer||window.addEventListener("keydown",function(e){if(27===e.keyCode){var t=function(){if(!n.default.prototype.$isServer&&u.modalStack.length>0){var e=u.modalStack[u.modalStack.length-1];if(!e)return;return u.getInstance(e.id)}}();t&&t.closeOnPressEscape&&(t.handleClose?t.handleClose():t.handleAction?t.handleAction("cancel"):t.close())}}),t.default=u},TkuN:function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=61)}([function(e,t,i){"use strict";function n(e,t,i,n,s,r,o,a){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),o?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},c._ssrRegister=l):s&&(l=a?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",function(){return n})},,,function(e,t){e.exports=i("gSIQ")},function(e,t){e.exports=i("0BDH")},function(e,t){e.exports=i("6XTx")},function(e,t){e.exports=i("a3zo")},,,,function(e,t){e.exports=i("8606")},,function(e,t){e.exports=i("QX/b")},,function(e,t){e.exports=i("FOnU")},,function(e,t){e.exports=i("QBBo")},function(e,t){e.exports=i("DhVD")},,function(e,t){e.exports=i("SJdT")},,function(e,t){e.exports=i("05c+")},function(e,t){e.exports=i("EvI9")},,,,,,,,,function(e,t){e.exports=i("Kl55")},,,function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[i("span",[e._v(e._s(e.currentLabel))])])],2)};n._withStripped=!0;var s=i(4),r=i.n(s),o=i(3),a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l={mixins:[r.a],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var i=this.select,n=i.remote,s=i.valueKey;if(!this.created&&!n){if(s&&"object"===(void 0===e?"undefined":a(e))&&"object"===(void 0===t?"undefined":a(t))&&e[s]===t[s])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var i=this.select.valueKey;return Object(o.getValueByPath)(e,i)===Object(o.getValueByPath)(t,i)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var i=this.select.valueKey;return e&&e.some(function(e){return Object(o.getValueByPath)(e,i)===Object(o.getValueByPath)(t,i)})}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(o.escapeRegexpString)(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){var e=this.select,t=e.selected,i=e.multiple?t:[t],n=this.select.cachedOptions.indexOf(this),s=i.indexOf(this);n>-1&&s<0&&this.select.cachedOptions.splice(n,1),this.select.onOptionDestroy(this.select.options.indexOf(this))}},c=i(0),u=Object(c.a)(l,n,[],!1,null,null,null);u.options.__file="packages/select/src/option.vue";t.a=u.exports},,,,function(e,t){e.exports=i("i7wE")},,,,,,,,,,,,,,,,,,,,,,,function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleClose,expression:"handleClose"}],staticClass:"el-select",class:[e.selectSize?"el-select--"+e.selectSize:""],on:{click:function(t){return t.stopPropagation(),e.toggleMenu(t)}}},[e.multiple?i("div",{ref:"tags",staticClass:"el-select__tags",style:{"max-width":e.inputWidth-32+"px",width:"100%"}},[e.collapseTags&&e.selected.length?i("span",[i("el-tag",{attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:e.selected[0].hitState,type:"info","disable-transitions":""},on:{close:function(t){e.deleteTag(t,e.selected[0])}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(e.selected[0].currentLabel))])]),e.selected.length>1?i("el-tag",{attrs:{closable:!1,size:e.collapseTagSize,type:"info","disable-transitions":""}},[i("span",{staticClass:"el-select__tags-text"},[e._v("+ "+e._s(e.selected.length-1))])]):e._e()],1):e._e(),e.collapseTags?e._e():i("transition-group",{on:{"after-leave":e.resetInputHeight}},e._l(e.selected,function(t){return i("el-tag",{key:e.getValueKey(t),attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:t.hitState,type:"info","disable-transitions":""},on:{close:function(i){e.deleteTag(i,t)}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(t.currentLabel))])])}),1),e.filterable?i("input",{directives:[{name:"model",rawName:"v-model",value:e.query,expression:"query"}],ref:"input",staticClass:"el-select__input",class:[e.selectSize?"is-"+e.selectSize:""],style:{"flex-grow":"1",width:e.inputLength/(e.inputWidth-32)+"%","max-width":e.inputWidth-42+"px"},attrs:{type:"text",disabled:e.selectDisabled,autocomplete:e.autoComplete||e.autocomplete},domProps:{value:e.query},on:{focus:e.handleFocus,blur:function(t){e.softFocus=!1},keyup:e.managePlaceholder,keydown:[e.resetInputState,function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){return"button"in t||!e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?e.deletePrevTag(t):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],compositionstart:e.handleComposition,compositionupdate:e.handleComposition,compositionend:e.handleComposition,input:[function(t){t.target.composing||(e.query=t.target.value)},e.debouncedQueryChange]}}):e._e()],1):e._e(),i("el-input",{ref:"reference",class:{"is-focus":e.visible},attrs:{type:"text",placeholder:e.currentPlaceholder,name:e.name,id:e.id,autocomplete:e.autoComplete||e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,"validate-event":!1,tabindex:e.multiple&&e.filterable?"-1":null},on:{focus:e.handleFocus,blur:e.handleBlur},nativeOn:{keyup:function(t){return e.debouncedOnInputChange(t)},keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],paste:function(t){return e.debouncedOnInputChange(t)},mouseenter:function(t){e.inputHovering=!0},mouseleave:function(t){e.inputHovering=!1}},model:{value:e.selectedLabel,callback:function(t){e.selectedLabel=t},expression:"selectedLabel"}},[e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),i("template",{slot:"suffix"},[i("i",{directives:[{name:"show",rawName:"v-show",value:!e.showClose,expression:"!showClose"}],class:["el-select__caret","el-input__icon","el-icon-"+e.iconClass]}),e.showClose?i("i",{staticClass:"el-select__caret el-input__icon el-icon-circle-close",on:{click:e.handleClearClick}}):e._e()])],2),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":e.doDestroy}},[i("el-select-menu",{directives:[{name:"show",rawName:"v-show",value:e.visible&&!1!==e.emptyText,expression:"visible && emptyText !== false"}],ref:"popper",attrs:{"append-to-body":e.popperAppendToBody}},[i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.options.length>0&&!e.loading,expression:"options.length > 0 && !loading"}],ref:"scrollbar",class:{"is-empty":!e.allowCreate&&e.query&&0===e.filteredOptionsCount},attrs:{tag:"ul","wrap-class":"el-select-dropdown__wrap","view-class":"el-select-dropdown__list"}},[e.showNewOption?i("el-option",{attrs:{value:e.query,created:""}}):e._e(),e._t("default")],2),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&0===e.options.length)?[e.$slots.empty?e._t("empty"):i("p",{staticClass:"el-select-dropdown__empty"},[e._v("\n "+e._s(e.emptyText)+"\n ")])]:e._e()],2)],1)],1)};n._withStripped=!0;var s=i(4),r=i.n(s),o=i(22),a=i.n(o),l=i(6),c=i.n(l),u=i(10),h=i.n(u),d=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-select-dropdown el-popper",class:[{"is-multiple":this.$parent.multiple},this.popperClass],style:{minWidth:this.minWidth}},[this._t("default")],2)};d._withStripped=!0;var p=i(5),f={name:"ElSelectDropdown",componentName:"ElSelectDropdown",mixins:[i.n(p).a],props:{placement:{default:"bottom-start"},boundariesPadding:{default:0},popperOptions:{default:function(){return{gpuAcceleration:!1}}},visibleArrow:{default:!0},appendToBody:{type:Boolean,default:!0}},data:function(){return{minWidth:""}},computed:{popperClass:function(){return this.$parent.popperClass}},watch:{"$parent.inputWidth":function(){this.minWidth=this.$parent.$el.getBoundingClientRect().width+"px"}},mounted:function(){var e=this;this.referenceElm=this.$parent.$refs.reference.$el,this.$parent.popperElm=this.popperElm=this.$el,this.$on("updatePopper",function(){e.$parent.visible&&e.updatePopper()}),this.$on("destroyPopper",this.destroyPopper)}},m=i(0),v=Object(m.a)(f,d,[],!1,null,null,null);v.options.__file="packages/select/src/select-dropdown.vue";var g=v.exports,b=i(34),y=i(38),_=i.n(y),x=i(14),C=i.n(x),w=i(17),k=i.n(w),S=i(12),D=i.n(S),$=i(16),O=i(19),E=i(31),T=i.n(E),P=i(3),M=i(21),I={mixins:[r.a,c.a,a()("reference"),{data:function(){return{hoverOption:-1}},computed:{optionsAllDisabled:function(){return this.options.filter(function(e){return e.visible}).every(function(e){return e.disabled})}},watch:{hoverIndex:function(e){var t=this;"number"==typeof e&&e>-1&&(this.hoverOption=this.options[e]||{}),this.options.forEach(function(e){e.hover=t.hoverOption===e})}},methods:{navigateOptions:function(e){var t=this;if(this.visible){if(0!==this.options.length&&0!==this.filteredOptionsCount&&!this.optionsAllDisabled){"next"===e?(this.hoverIndex++,this.hoverIndex===this.options.length&&(this.hoverIndex=0)):"prev"===e&&(this.hoverIndex--,this.hoverIndex<0&&(this.hoverIndex=this.options.length-1));var i=this.options[this.hoverIndex];!0!==i.disabled&&!0!==i.groupDisabled&&i.visible||this.navigateOptions(e),this.$nextTick(function(){return t.scrollToOption(t.hoverOption)})}}else this.visible=!0}}}],name:"ElSelect",componentName:"ElSelect",inject:{elForm:{default:""},elFormItem:{default:""}},provide:function(){return{select:this}},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},readonly:function(){return!this.filterable||this.multiple||!Object(P.isIE)()&&!Object(P.isEdge)()&&!this.visible},showClose:function(){var e=this.multiple?Array.isArray(this.value)&&this.value.length>0:void 0!==this.value&&null!==this.value&&""!==this.value;return this.clearable&&!this.selectDisabled&&this.inputHovering&&e},iconClass:function(){return this.remote&&this.filterable?"":this.visible?"arrow-up is-reverse":"arrow-up"},debounce:function(){return this.remote?300:0},emptyText:function(){return this.loading?this.loadingText||this.t("el.select.loading"):(!this.remote||""!==this.query||0!==this.options.length)&&(this.filterable&&this.query&&this.options.length>0&&0===this.filteredOptionsCount?this.noMatchText||this.t("el.select.noMatch"):0===this.options.length?this.noDataText||this.t("el.select.noData"):null)},showNewOption:function(){var e=this,t=this.options.filter(function(e){return!e.created}).some(function(t){return t.currentLabel===e.query});return this.filterable&&this.allowCreate&&""!==this.query&&!t},selectSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},selectDisabled:function(){return this.disabled||(this.elForm||{}).disabled},collapseTagSize:function(){return["small","mini"].indexOf(this.selectSize)>-1?"mini":"small"}},components:{ElInput:h.a,ElSelectMenu:g,ElOption:b.a,ElTag:_.a,ElScrollbar:C.a},directives:{Clickoutside:D.a},props:{name:String,id:String,value:{required:!0},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},automaticDropdown:Boolean,size:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:String,remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String,default:function(){return Object(O.t)("el.select.placeholder")}},defaultFirstOption:Boolean,reserveKeyword:Boolean,valueKey:{type:String,default:"value"},collapseTags:Boolean,popperAppendToBody:{type:Boolean,default:!0}},data:function(){return{options:[],cachedOptions:[],createdLabel:null,createdSelected:!1,selected:this.multiple?[]:{},inputLength:20,inputWidth:0,initialInputHeight:0,cachedPlaceHolder:"",optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:"",hoverIndex:-1,query:"",previousQuery:null,inputHovering:!1,currentPlaceholder:"",menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1}},watch:{selectDisabled:function(){var e=this;this.$nextTick(function(){e.resetInputHeight()})},placeholder:function(e){this.cachedPlaceHolder=this.currentPlaceholder=e},value:function(e,t){this.multiple&&(this.resetInputHeight(),e&&e.length>0||this.$refs.input&&""!==this.query?this.currentPlaceholder="":this.currentPlaceholder=this.cachedPlaceHolder,this.filterable&&!this.reserveKeyword&&(this.query="",this.handleQueryChange(this.query))),this.setSelected(),this.filterable&&!this.multiple&&(this.inputLength=20),Object(P.valueEquals)(e,t)||this.dispatch("ElFormItem","el.form.change",e)},visible:function(e){var t=this;e?(this.broadcast("ElSelectDropdown","updatePopper"),this.filterable&&(this.query=this.remote?"":this.selectedLabel,this.handleQueryChange(this.query),this.multiple?this.$refs.input.focus():(this.remote||(this.broadcast("ElOption","queryChange",""),this.broadcast("ElOptionGroup","queryChange")),this.selectedLabel&&(this.currentPlaceholder=this.selectedLabel,this.selectedLabel="")))):(this.broadcast("ElSelectDropdown","destroyPopper"),this.$refs.input&&this.$refs.input.blur(),this.query="",this.previousQuery=null,this.selectedLabel="",this.inputLength=20,this.menuVisibleOnFocus=!1,this.resetHoverIndex(),this.$nextTick(function(){t.$refs.input&&""===t.$refs.input.value&&0===t.selected.length&&(t.currentPlaceholder=t.cachedPlaceHolder)}),this.multiple||(this.selected&&(this.filterable&&this.allowCreate&&this.createdSelected&&this.createdLabel?this.selectedLabel=this.createdLabel:this.selectedLabel=this.selected.currentLabel,this.filterable&&(this.query=this.selectedLabel)),this.filterable&&(this.currentPlaceholder=this.cachedPlaceHolder))),this.$emit("visible-change",e)},options:function(){var e=this;if(!this.$isServer){this.$nextTick(function(){e.broadcast("ElSelectDropdown","updatePopper")}),this.multiple&&this.resetInputHeight();var t=this.$el.querySelectorAll("input");-1===[].indexOf.call(t,document.activeElement)&&this.setSelected(),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()}}},methods:{handleComposition:function(e){var t=this,i=e.target.value;if("compositionend"===e.type)this.isOnComposition=!1,this.$nextTick(function(e){return t.handleQueryChange(i)});else{var n=i[i.length-1]||"";this.isOnComposition=!Object(M.isKorean)(n)}},handleQueryChange:function(e){var t=this;this.previousQuery===e||this.isOnComposition||(null!==this.previousQuery||"function"!=typeof this.filterMethod&&"function"!=typeof this.remoteMethod?(this.previousQuery=e,this.$nextTick(function(){t.visible&&t.broadcast("ElSelectDropdown","updatePopper")}),this.hoverIndex=-1,this.multiple&&this.filterable&&this.$nextTick(function(){var e=15*t.$refs.input.value.length+20;t.inputLength=t.collapseTags?Math.min(50,e):e,t.managePlaceholder(),t.resetInputHeight()}),this.remote&&"function"==typeof this.remoteMethod?(this.hoverIndex=-1,this.remoteMethod(e)):"function"==typeof this.filterMethod?(this.filterMethod(e),this.broadcast("ElOptionGroup","queryChange")):(this.filteredOptionsCount=this.optionsCount,this.broadcast("ElOption","queryChange",e),this.broadcast("ElOptionGroup","queryChange")),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()):this.previousQuery=e)},scrollToOption:function(e){var t=Array.isArray(e)&&e[0]?e[0].$el:e.$el;if(this.$refs.popper&&t){var i=this.$refs.popper.$el.querySelector(".el-select-dropdown__wrap");T()(i,t)}this.$refs.scrollbar&&this.$refs.scrollbar.handleScroll()},handleMenuEnter:function(){var e=this;this.$nextTick(function(){return e.scrollToOption(e.selected)})},emitChange:function(e){Object(P.valueEquals)(this.value,e)||this.$emit("change",e)},getOption:function(e){for(var t=void 0,i="[object object]"===Object.prototype.toString.call(e).toLowerCase(),n="[object null]"===Object.prototype.toString.call(e).toLowerCase(),s="[object undefined]"===Object.prototype.toString.call(e).toLowerCase(),r=this.cachedOptions.length-1;r>=0;r--){var o=this.cachedOptions[r];if(i?Object(P.getValueByPath)(o.value,this.valueKey)===Object(P.getValueByPath)(e,this.valueKey):o.value===e){t=o;break}}if(t)return t;var a={value:e,currentLabel:i||n||s?"":e};return this.multiple&&(a.hitState=!1),a},setSelected:function(){var e=this;if(!this.multiple){var t=this.getOption(this.value);return t.created?(this.createdLabel=t.currentLabel,this.createdSelected=!0):this.createdSelected=!1,this.selectedLabel=t.currentLabel,this.selected=t,void(this.filterable&&(this.query=this.selectedLabel))}var i=[];Array.isArray(this.value)&&this.value.forEach(function(t){i.push(e.getOption(t))}),this.selected=i,this.$nextTick(function(){e.resetInputHeight()})},handleFocus:function(e){this.softFocus?this.softFocus=!1:((this.automaticDropdown||this.filterable)&&(this.visible=!0,this.filterable&&(this.menuVisibleOnFocus=!0)),this.$emit("focus",e))},blur:function(){this.visible=!1,this.$refs.reference.blur()},handleBlur:function(e){var t=this;setTimeout(function(){t.isSilentBlur?t.isSilentBlur=!1:t.$emit("blur",e)},50),this.softFocus=!1},handleClearClick:function(e){this.deleteSelected(e)},doDestroy:function(){this.$refs.popper&&this.$refs.popper.doDestroy()},handleClose:function(){this.visible=!1},toggleLastOptionHitState:function(e){if(Array.isArray(this.selected)){var t=this.selected[this.selected.length-1];if(t)return!0===e||!1===e?(t.hitState=e,e):(t.hitState=!t.hitState,t.hitState)}},deletePrevTag:function(e){if(e.target.value.length<=0&&!this.toggleLastOptionHitState()){var t=this.value.slice();t.pop(),this.$emit("input",t),this.emitChange(t)}},managePlaceholder:function(){""!==this.currentPlaceholder&&(this.currentPlaceholder=this.$refs.input.value?"":this.cachedPlaceHolder)},resetInputState:function(e){8!==e.keyCode&&this.toggleLastOptionHitState(!1),this.inputLength=15*this.$refs.input.value.length+20,this.resetInputHeight()},resetInputHeight:function(){var e=this;this.collapseTags&&!this.filterable||this.$nextTick(function(){if(e.$refs.reference){var t=e.$refs.reference.$el.childNodes,i=[].filter.call(t,function(e){return"INPUT"===e.tagName})[0],n=e.$refs.tags,s=e.initialInputHeight||40;i.style.height=0===e.selected.length?s+"px":Math.max(n?n.clientHeight+(n.clientHeight>s?6:0):0,s)+"px",e.visible&&!1!==e.emptyText&&e.broadcast("ElSelectDropdown","updatePopper")}})},resetHoverIndex:function(){var e=this;setTimeout(function(){e.multiple?e.selected.length>0?e.hoverIndex=Math.min.apply(null,e.selected.map(function(t){return e.options.indexOf(t)})):e.hoverIndex=-1:e.hoverIndex=e.options.indexOf(e.selected)},300)},handleOptionSelect:function(e,t){var i=this;if(this.multiple){var n=(this.value||[]).slice(),s=this.getValueIndex(n,e.value);s>-1?n.splice(s,1):(this.multipleLimit<=0||n.length0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if("[object object]"===Object.prototype.toString.call(t).toLowerCase()){var i=this.valueKey,n=-1;return e.some(function(e,s){return Object(P.getValueByPath)(e,i)===Object(P.getValueByPath)(t,i)&&(n=s,!0)}),n}return e.indexOf(t)},toggleMenu:function(){this.selectDisabled||(this.menuVisibleOnFocus?this.menuVisibleOnFocus=!1:this.visible=!this.visible,this.visible&&(this.$refs.input||this.$refs.reference).focus())},selectOption:function(){this.visible?this.options[this.hoverIndex]&&this.handleOptionSelect(this.options[this.hoverIndex]):this.toggleMenu()},deleteSelected:function(e){e.stopPropagation();var t=this.multiple?[]:"";this.$emit("input",t),this.emitChange(t),this.visible=!1,this.$emit("clear")},deleteTag:function(e,t){var i=this.selected.indexOf(t);if(i>-1&&!this.selectDisabled){var n=this.value.slice();n.splice(i,1),this.$emit("input",n),this.emitChange(n),this.$emit("remove-tag",t.value)}e.stopPropagation()},onInputChange:function(){this.filterable&&this.query!==this.selectedLabel&&(this.query=this.selectedLabel,this.handleQueryChange(this.query))},onOptionDestroy:function(e){e>-1&&(this.optionsCount--,this.filteredOptionsCount--,this.options.splice(e,1))},resetInputWidth:function(){this.inputWidth=this.$refs.reference.$el.getBoundingClientRect().width},handleResize:function(){this.resetInputWidth(),this.multiple&&this.resetInputHeight()},checkDefaultFirstOption:function(){this.hoverIndex=-1;for(var e=!1,t=this.options.length-1;t>=0;t--)if(this.options[t].created){e=!0,this.hoverIndex=t;break}if(!e)for(var i=0;i!==this.options.length;++i){var n=this.options[i];if(this.query){if(!n.disabled&&!n.groupDisabled&&n.visible){this.hoverIndex=i;break}}else if(n.itemSelected){this.hoverIndex=i;break}}},getValueKey:function(e){return"[object object]"!==Object.prototype.toString.call(e.value).toLowerCase()?e.value:Object(P.getValueByPath)(e.value,this.valueKey)}},created:function(){var e=this;this.cachedPlaceHolder=this.currentPlaceholder=this.placeholder,this.multiple&&!Array.isArray(this.value)&&this.$emit("input",[]),!this.multiple&&Array.isArray(this.value)&&this.$emit("input",""),this.debouncedOnInputChange=k()(this.debounce,function(){e.onInputChange()}),this.debouncedQueryChange=k()(this.debounce,function(t){e.handleQueryChange(t.target.value)}),this.$on("handleOptionClick",this.handleOptionSelect),this.$on("setSelected",this.setSelected)},mounted:function(){var e=this;this.multiple&&Array.isArray(this.value)&&this.value.length>0&&(this.currentPlaceholder=""),Object($.addResizeListener)(this.$el,this.handleResize);var t=this.$refs.reference;if(t&&t.$el){var i=t.$el.querySelector("input");this.initialInputHeight=i.getBoundingClientRect().height||{medium:36,small:32,mini:28}[this.selectSize]}this.remote&&this.multiple&&this.resetInputHeight(),this.$nextTick(function(){t&&t.$el&&(e.inputWidth=t.$el.getBoundingClientRect().width)}),this.setSelected()},beforeDestroy:function(){this.$el&&this.handleResize&&Object($.removeResizeListener)(this.$el,this.handleResize)}},N=Object(m.a)(I,n,[],!1,null,null,null);N.options.__file="packages/select/src/select.vue";var j=N.exports;j.install=function(e){e.component(j.name,j)};t.default=j}])},UShQ:function(e,t,i){"use strict";t.__esModule=!0,t.PopupManager=void 0;var n=l(i("Kw5r")),s=l(i("f03z")),r=l(i("Syab")),o=l(i("5i1c")),a=i("WST1");function l(e){return e&&e.__esModule?e:{default:e}}var c=1,u=void 0;t.default={props:{visible:{type:Boolean,default:!1},openDelay:{},closeDelay:{},zIndex:{},modal:{type:Boolean,default:!1},modalFade:{type:Boolean,default:!0},modalClass:{},modalAppendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!1},closeOnClickModal:{type:Boolean,default:!1}},beforeMount:function(){this._popupId="popup-"+c++,r.default.register(this._popupId,this)},beforeDestroy:function(){r.default.deregister(this._popupId),r.default.closeModal(this._popupId),this.restoreBodyStyle()},data:function(){return{opened:!1,bodyPaddingRight:null,computedBodyPaddingRight:0,withoutHiddenClass:!0,rendered:!1}},watch:{visible:function(e){var t=this;if(e){if(this._opening)return;this.rendered?this.open():(this.rendered=!0,n.default.nextTick(function(){t.open()}))}else this.close()}},methods:{open:function(e){var t=this;this.rendered||(this.rendered=!0);var i=(0,s.default)({},this.$props||this,e);this._closeTimer&&(clearTimeout(this._closeTimer),this._closeTimer=null),clearTimeout(this._openTimer);var n=Number(i.openDelay);n>0?this._openTimer=setTimeout(function(){t._openTimer=null,t.doOpen(i)},n):this.doOpen(i)},doOpen:function(e){if(!this.$isServer&&(!this.willOpen||this.willOpen())&&!this.opened){this._opening=!0;var t=this.$el,i=e.modal,n=e.zIndex;if(n&&(r.default.zIndex=n),i&&(this._closing&&(r.default.closeModal(this._popupId),this._closing=!1),r.default.openModal(this._popupId,r.default.nextZIndex(),this.modalAppendToBody?void 0:t,e.modalClass,e.modalFade),e.lockScroll)){this.withoutHiddenClass=!(0,a.hasClass)(document.body,"el-popup-parent--hidden"),this.withoutHiddenClass&&(this.bodyPaddingRight=document.body.style.paddingRight,this.computedBodyPaddingRight=parseInt((0,a.getStyle)(document.body,"paddingRight"),10)),u=(0,o.default)();var s=document.documentElement.clientHeight0&&(s||"scroll"===l)&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.computedBodyPaddingRight+u+"px"),(0,a.addClass)(document.body,"el-popup-parent--hidden")}"static"===getComputedStyle(t).position&&(t.style.position="absolute"),t.style.zIndex=r.default.nextZIndex(),this.opened=!0,this.onOpen&&this.onOpen(),this.doAfterOpen()}},doAfterOpen:function(){this._opening=!1},close:function(){var e=this;if(!this.willClose||this.willClose()){null!==this._openTimer&&(clearTimeout(this._openTimer),this._openTimer=null),clearTimeout(this._closeTimer);var t=Number(this.closeDelay);t>0?this._closeTimer=setTimeout(function(){e._closeTimer=null,e.doClose()},t):this.doClose()}},doClose:function(){this._closing=!0,this.onClose&&this.onClose(),this.lockScroll&&setTimeout(this.restoreBodyStyle,200),this.opened=!1,this.doAfterClose()},doAfterClose:function(){r.default.closeModal(this._popupId),this._closing=!1},restoreBodyStyle:function(){this.modal&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.bodyPaddingRight,(0,a.removeClass)(document.body,"el-popup-parent--hidden")),this.withoutHiddenClass=!0}}},t.PopupManager=r.default},VIiR:function(e,t,i){"use strict";t.__esModule=!0;var n=i("WST1");var s=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.prototype.beforeEnter=function(e){(0,n.addClass)(e,"collapse-transition"),e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.style.height="0",e.style.paddingTop=0,e.style.paddingBottom=0},e.prototype.enter=function(e){e.dataset.oldOverflow=e.style.overflow,0!==e.scrollHeight?(e.style.height=e.scrollHeight+"px",e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom):(e.style.height="",e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom),e.style.overflow="hidden"},e.prototype.afterEnter=function(e){(0,n.removeClass)(e,"collapse-transition"),e.style.height="",e.style.overflow=e.dataset.oldOverflow},e.prototype.beforeLeave=function(e){e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.dataset.oldOverflow=e.style.overflow,e.style.height=e.scrollHeight+"px",e.style.overflow="hidden"},e.prototype.leave=function(e){0!==e.scrollHeight&&((0,n.addClass)(e,"collapse-transition"),e.style.height=0,e.style.paddingTop=0,e.style.paddingBottom=0)},e.prototype.afterLeave=function(e){(0,n.removeClass)(e,"collapse-transition"),e.style.height="",e.style.overflow=e.dataset.oldOverflow,e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom},e}();t.default={name:"ElCollapseTransition",functional:!0,render:function(e,t){var i=t.children;return e("transition",{on:new s},i)}}},WST1:function(e,t,i){"use strict";t.__esModule=!0,t.isInContainer=t.getScrollContainer=t.isScroll=t.getStyle=t.once=t.off=t.on=void 0;var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.hasClass=d,t.addClass=function(e,t){if(!e)return;for(var i=e.className,n=(t||"").split(" "),s=0,r=n.length;s-1}var p=t.getStyle=a<9?function(e,t){if(!s){if(!e||!t)return null;"float"===(t=c(t))&&(t="styleFloat");try{switch(t){case"opacity":try{return e.filters.item("alpha").opacity/100}catch(e){return 1}default:return e.style[t]||e.currentStyle?e.currentStyle[t]:null}}catch(i){return e.style[t]}}}:function(e,t){if(!s){if(!e||!t)return null;"float"===(t=c(t))&&(t="cssFloat");try{var i=document.defaultView.getComputedStyle(e,"");return e.style[t]||i?i[t]:null}catch(i){return e.style[t]}}};var f=t.isScroll=function(e,t){if(!s)return p(e,null!==t||void 0!==t?t?"overflow-y":"overflow-x":"overflow").match(/(scroll|auto)/)};t.getScrollContainer=function(e,t){if(!s){for(var i=e;i;){if([window,document,document.documentElement].includes(i))return window;if(f(i,t))return i;i=i.parentNode}return i}},t.isInContainer=function(e,t){if(s||!e||!t)return!1;var i=e.getBoundingClientRect(),n=void 0;return n=[window,document,document.documentElement,null,void 0].includes(t)?{top:0,right:window.innerWidth,bottom:window.innerHeight,left:0}:t.getBoundingClientRect(),i.topn.top&&i.right>n.left&&i.left0?i("li",{staticClass:"number",class:{active:1===e.currentPage,disabled:e.disabled}},[e._v("1")]):e._e(),e.showPrevMore?i("li",{staticClass:"el-icon more btn-quickprev",class:[e.quickprevIconClass,{disabled:e.disabled}],on:{mouseenter:function(t){e.onMouseenter("left")},mouseleave:function(t){e.quickprevIconClass="el-icon-more"}}}):e._e(),e._l(e.pagers,function(t){return i("li",{key:t,staticClass:"number",class:{active:e.currentPage===t,disabled:e.disabled}},[e._v(e._s(t))])}),e.showNextMore?i("li",{staticClass:"el-icon more btn-quicknext",class:[e.quicknextIconClass,{disabled:e.disabled}],on:{mouseenter:function(t){e.onMouseenter("right")},mouseleave:function(t){e.quicknextIconClass="el-icon-more"}}}):e._e(),e.pageCount>1?i("li",{staticClass:"number",class:{active:e.currentPage===e.pageCount,disabled:e.disabled}},[e._v(e._s(e.pageCount))]):e._e()],2)};function s(e,t,i,n,s,r,o,a){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),o?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},c._ssrRegister=l):s&&(l=a?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}n._withStripped=!0;var r=s({name:"ElPager",props:{currentPage:Number,pageCount:Number,pagerCount:Number,disabled:Boolean},watch:{showPrevMore:function(e){e||(this.quickprevIconClass="el-icon-more")},showNextMore:function(e){e||(this.quicknextIconClass="el-icon-more")}},methods:{onPagerClick:function(e){var t=e.target;if("UL"!==t.tagName&&!this.disabled){var i=Number(e.target.textContent),n=this.pageCount,s=this.currentPage,r=this.pagerCount-2;-1!==t.className.indexOf("more")&&(-1!==t.className.indexOf("quickprev")?i=s-r:-1!==t.className.indexOf("quicknext")&&(i=s+r)),isNaN(i)||(i<1&&(i=1),i>n&&(i=n)),i!==s&&this.$emit("change",i)}},onMouseenter:function(e){this.disabled||("left"===e?this.quickprevIconClass="el-icon-d-arrow-left":this.quicknextIconClass="el-icon-d-arrow-right")}},computed:{pagers:function(){var e=this.pagerCount,t=(e-1)/2,i=Number(this.currentPage),n=Number(this.pageCount),s=!1,r=!1;n>e&&(i>e-t&&(s=!0),i4&&e<22&&e%2==1},default:7},currentPage:{type:Number,default:1},layout:{default:"prev, pager, next, jumper, ->, total"},pageSizes:{type:Array,default:function(){return[10,20,30,40,50,100]}},popperClass:String,prevText:String,nextText:String,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean},data:function(){return{internalCurrentPage:1,internalPageSize:0,lastEmittedPage:-1,userChangePageSize:!1}},render:function(e){var t=this.layout;if(!t)return null;if(this.hideOnSinglePage&&(!this.internalPageCount||1===this.internalPageCount))return null;var i=e("div",{class:["el-pagination",{"is-background":this.background,"el-pagination--small":this.small}]}),n={prev:e("prev"),jumper:e("jumper"),pager:e("pager",{attrs:{currentPage:this.internalCurrentPage,pageCount:this.internalPageCount,pagerCount:this.pagerCount,disabled:this.disabled},on:{change:this.handleCurrentChange}}),next:e("next"),sizes:e("sizes",{attrs:{pageSizes:this.pageSizes}}),slot:e("slot",[this.$slots.default?this.$slots.default:""]),total:e("total")},s=t.split(",").map(function(e){return e.trim()}),r=e("div",{class:"el-pagination__rightwrapper"}),o=!1;return i.children=i.children||[],r.children=r.children||[],s.forEach(function(e){"->"!==e?o?r.children.push(n[e]):i.children.push(n[e]):o=!0}),o&&i.children.unshift(r),i},components:{Prev:{render:function(e){return e("button",{attrs:{type:"button",disabled:this.$parent.disabled||this.$parent.internalCurrentPage<=1},class:"btn-prev",on:{click:this.$parent.prev}},[this.$parent.prevText?e("span",[this.$parent.prevText]):e("i",{class:"el-icon el-icon-arrow-left"})])}},Next:{render:function(e){return e("button",{attrs:{type:"button",disabled:this.$parent.disabled||this.$parent.internalCurrentPage===this.$parent.internalPageCount||0===this.$parent.internalPageCount},class:"btn-next",on:{click:this.$parent.next}},[this.$parent.nextText?e("span",[this.$parent.nextText]):e("i",{class:"el-icon el-icon-arrow-right"})])}},Sizes:{mixins:[f.a],props:{pageSizes:Array},watch:{pageSizes:{immediate:!0,handler:function(e,t){Object(m.valueEquals)(e,t)||Array.isArray(e)&&(this.$parent.internalPageSize=e.indexOf(this.$parent.pageSize)>-1?this.$parent.pageSize:this.pageSizes[0])}}},render:function(e){var t=this;return e("span",{class:"el-pagination__sizes"},[e("el-select",{attrs:{value:this.$parent.internalPageSize,popperClass:this.$parent.popperClass||"",size:"mini",disabled:this.$parent.disabled},on:{input:this.handleChange}},[this.pageSizes.map(function(i){return e("el-option",{attrs:{value:i,label:i+t.t("el.pagination.pagesize")}})})])])},components:{ElSelect:l.a,ElOption:u.a},methods:{handleChange:function(e){e!==this.$parent.internalPageSize&&(this.$parent.internalPageSize=e=parseInt(e,10),this.$parent.userChangePageSize=!0,this.$parent.$emit("update:pageSize",e),this.$parent.$emit("size-change",e))}}},Jumper:{mixins:[f.a],components:{ElInput:d.a},data:function(){return{userInput:null}},watch:{"$parent.internalCurrentPage":function(){this.userInput=null}},methods:{handleKeyup:function(e){var t=e.keyCode,i=e.target;13===t&&this.handleChange(i.value)},handleInput:function(e){this.userInput=e},handleChange:function(e){this.$parent.internalCurrentPage=this.$parent.getValidCurrentPage(e),this.$parent.emitChange(),this.userInput=null}},render:function(e){return e("span",{class:"el-pagination__jump"},[this.t("el.pagination.goto"),e("el-input",{class:"el-pagination__editor is-in-pagination",attrs:{min:1,max:this.$parent.internalPageCount,value:null!==this.userInput?this.userInput:this.$parent.internalCurrentPage,type:"number",disabled:this.$parent.disabled},nativeOn:{keyup:this.handleKeyup},on:{input:this.handleInput,change:this.handleChange}}),this.t("el.pagination.pageClassifier")])}},Total:{mixins:[f.a],render:function(e){return"number"==typeof this.$parent.total?e("span",{class:"el-pagination__total"},[this.t("el.pagination.total",{total:this.$parent.total})]):""}},Pager:o},methods:{handleCurrentChange:function(e){this.internalCurrentPage=this.getValidCurrentPage(e),this.userChangePageSize=!0,this.emitChange()},prev:function(){if(!this.disabled){var e=this.internalCurrentPage-1;this.internalCurrentPage=this.getValidCurrentPage(e),this.$emit("prev-click",this.internalCurrentPage),this.emitChange()}},next:function(){if(!this.disabled){var e=this.internalCurrentPage+1;this.internalCurrentPage=this.getValidCurrentPage(e),this.$emit("next-click",this.internalCurrentPage),this.emitChange()}},getValidCurrentPage:function(e){e=parseInt(e,10);var t=void 0;return"number"==typeof this.internalPageCount?e<1?t=1:e>this.internalPageCount&&(t=this.internalPageCount):(isNaN(e)||e<1)&&(t=1),void 0===t&&isNaN(e)?t=1:0===t&&(t=1),void 0===t?e:t},emitChange:function(){var e=this;this.$nextTick(function(){(e.internalCurrentPage!==e.lastEmittedPage||e.userChangePageSize)&&(e.$emit("current-change",e.internalCurrentPage),e.lastEmittedPage=e.internalCurrentPage,e.userChangePageSize=!1)})}},computed:{internalPageCount:function(){return"number"==typeof this.total?Math.max(1,Math.ceil(this.total/this.internalPageSize)):"number"==typeof this.pageCount?Math.max(1,this.pageCount):null}},watch:{currentPage:{immediate:!0,handler:function(e){this.internalCurrentPage=this.getValidCurrentPage(e)}},pageSize:{immediate:!0,handler:function(e){this.internalPageSize=isNaN(e)?10:e}},internalCurrentPage:{immediate:!0,handler:function(e){this.$emit("update:currentPage",e),this.lastEmittedPage=-1}},internalPageCount:function(e){var t=this.internalCurrentPage;e>0&&0===t?this.internalCurrentPage=1:t>e&&(this.internalCurrentPage=0===e?1:e,this.userChangePageSize&&this.emitChange()),this.userChangePageSize=!1}},install:function(e){e.component(v.name,v)}},g=v,b=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"dialog-fade"},on:{"after-enter":e.afterEnter,"after-leave":e.afterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-dialog__wrapper",on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[i("div",{key:e.key,ref:"dialog",class:["el-dialog",{"is-fullscreen":e.fullscreen,"el-dialog--center":e.center},e.customClass],style:e.style,attrs:{role:"dialog","aria-modal":"true","aria-label":e.title||"dialog"}},[i("div",{staticClass:"el-dialog__header"},[e._t("title",[i("span",{staticClass:"el-dialog__title"},[e._v(e._s(e.title))])]),e.showClose?i("button",{staticClass:"el-dialog__headerbtn",attrs:{type:"button","aria-label":"Close"},on:{click:e.handleClose}},[i("i",{staticClass:"el-dialog__close el-icon el-icon-close"})]):e._e()],2),e.rendered?i("div",{staticClass:"el-dialog__body"},[e._t("default")],2):e._e(),e.$slots.footer?i("div",{staticClass:"el-dialog__footer"},[e._t("footer")],2):e._e()])])])};b._withStripped=!0;var y=i(14),_=i.n(y),x=i(9),C=i.n(x),w=i(3),k=i.n(w),S=s({name:"ElDialog",mixins:[_.a,k.a,C.a],props:{title:{type:String,default:""},modal:{type:Boolean,default:!0},modalAppendToBody:{type:Boolean,default:!0},appendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},width:String,fullscreen:Boolean,customClass:{type:String,default:""},top:{type:String,default:"15vh"},beforeClose:Function,center:{type:Boolean,default:!1},destroyOnClose:Boolean},data:function(){return{closed:!1,key:0}},watch:{visible:function(e){var t=this;e?(this.closed=!1,this.$emit("open"),this.$el.addEventListener("scroll",this.updatePopper),this.$nextTick(function(){t.$refs.dialog.scrollTop=0}),this.appendToBody&&document.body.appendChild(this.$el)):(this.$el.removeEventListener("scroll",this.updatePopper),this.closed||this.$emit("close"),this.destroyOnClose&&this.$nextTick(function(){t.key++}))}},computed:{style:function(){var e={};return this.fullscreen||(e.marginTop=this.top,this.width&&(e.width=this.width)),e}},methods:{getMigratingConfig:function(){return{props:{size:"size is removed."}}},handleWrapperClick:function(){this.closeOnClickModal&&this.handleClose()},handleClose:function(){"function"==typeof this.beforeClose?this.beforeClose(this.hide):this.hide()},hide:function(e){!1!==e&&(this.$emit("update:visible",!1),this.$emit("close"),this.closed=!0)},updatePopper:function(){this.broadcast("ElSelectDropdown","updatePopper"),this.broadcast("ElDropdownMenu","updatePopper")},afterEnter:function(){this.$emit("opened")},afterLeave:function(){this.$emit("closed")}},mounted:function(){this.visible&&(this.rendered=!0,this.open(),this.appendToBody&&document.body.appendChild(this.$el))},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},b,[],!1,null,null,null);S.options.__file="packages/dialog/src/component.vue";var D=S.exports;D.install=function(e){e.component(D.name,D)};var $=D,O=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.close,expression:"close"}],staticClass:"el-autocomplete",attrs:{"aria-haspopup":"listbox",role:"combobox","aria-expanded":e.suggestionVisible,"aria-owns":e.id}},[i("el-input",e._b({ref:"input",on:{input:e.handleInput,change:e.handleChange,focus:e.handleFocus,blur:e.handleBlur,clear:e.handleClear},nativeOn:{keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.highlight(e.highlightedIndex-1)},function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.highlight(e.highlightedIndex+1)},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.handleKeyEnter(t):null},function(t){return"button"in t||!e._k(t.keyCode,"tab",9,t.key,"Tab")?e.close(t):null}]}},"el-input",[e.$props,e.$attrs],!1),[e.$slots.prepend?i("template",{slot:"prepend"},[e._t("prepend")],2):e._e(),e.$slots.append?i("template",{slot:"append"},[e._t("append")],2):e._e(),e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),e.$slots.suffix?i("template",{slot:"suffix"},[e._t("suffix")],2):e._e()],2),i("el-autocomplete-suggestions",{ref:"suggestions",class:[e.popperClass?e.popperClass:""],attrs:{"visible-arrow":"","popper-options":e.popperOptions,"append-to-body":e.popperAppendToBody,placement:e.placement,id:e.id}},e._l(e.suggestions,function(t,n){return i("li",{key:n,class:{highlighted:e.highlightedIndex===n},attrs:{id:e.id+"-item-"+n,role:"option","aria-selected":e.highlightedIndex===n},on:{click:function(i){e.select(t)}}},[e._t("default",[e._v("\n "+e._s(t[e.valueKey])+"\n ")],{item:t})],2)}),0)],1)};O._withStripped=!0;var E=i(15),T=i.n(E),P=i(10),M=i.n(P),I=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.doDestroy}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-autocomplete-suggestion el-popper",class:{"is-loading":!e.parent.hideLoading&&e.parent.loading},style:{width:e.dropdownWidth},attrs:{role:"region"}},[i("el-scrollbar",{attrs:{tag:"ul","wrap-class":"el-autocomplete-suggestion__wrap","view-class":"el-autocomplete-suggestion__list"}},[!e.parent.hideLoading&&e.parent.loading?i("li",[i("i",{staticClass:"el-icon-loading"})]):e._t("default")],2)],1)])};I._withStripped=!0;var N=i(5),j=i.n(N),F=i(17),L=i.n(F),A=s({components:{ElScrollbar:L.a},mixins:[j.a,k.a],componentName:"ElAutocompleteSuggestions",data:function(){return{parent:this.$parent,dropdownWidth:""}},props:{options:{default:function(){return{gpuAcceleration:!1}}},id:String},methods:{select:function(e){this.dispatch("ElAutocomplete","item-click",e)}},updated:function(){var e=this;this.$nextTick(function(t){e.popperJS&&e.updatePopper()})},mounted:function(){this.$parent.popperElm=this.popperElm=this.$el,this.referenceElm=this.$parent.$refs.input.$refs.input||this.$parent.$refs.input.$refs.textarea,this.referenceList=this.$el.querySelector(".el-autocomplete-suggestion__list"),this.referenceList.setAttribute("role","listbox"),this.referenceList.setAttribute("id",this.id)},created:function(){var e=this;this.$on("visible",function(t,i){e.dropdownWidth=i+"px",e.showPopper=t})}},I,[],!1,null,null,null);A.options.__file="packages/autocomplete/src/autocomplete-suggestions.vue";var V=A.exports,B=i(22),z=i.n(B),R=s({name:"ElAutocomplete",mixins:[k.a,z()("input"),C.a],inheritAttrs:!1,componentName:"ElAutocomplete",components:{ElInput:d.a,ElAutocompleteSuggestions:V},directives:{Clickoutside:M.a},props:{valueKey:{type:String,default:"value"},popperClass:String,popperOptions:Object,placeholder:String,clearable:{type:Boolean,default:!1},disabled:Boolean,name:String,size:String,value:String,maxlength:Number,minlength:Number,autofocus:Boolean,fetchSuggestions:Function,triggerOnFocus:{type:Boolean,default:!0},customItem:String,selectWhenUnmatched:{type:Boolean,default:!1},prefixIcon:String,suffixIcon:String,label:String,debounce:{type:Number,default:300},placement:{type:String,default:"bottom-start"},hideLoading:Boolean,popperAppendToBody:{type:Boolean,default:!0},highlightFirstItem:{type:Boolean,default:!1}},data:function(){return{activated:!1,suggestions:[],loading:!1,highlightedIndex:-1,suggestionDisabled:!1}},computed:{suggestionVisible:function(){var e=this.suggestions;return(Array.isArray(e)&&e.length>0||this.loading)&&this.activated},id:function(){return"el-autocomplete-"+Object(m.generateId)()}},watch:{suggestionVisible:function(e){var t=this.getInput();t&&this.broadcast("ElAutocompleteSuggestions","visible",[e,t.offsetWidth])}},methods:{getMigratingConfig:function(){return{props:{"custom-item":"custom-item is removed, use scoped slot instead.",props:"props is removed, use value-key instead."}}},getData:function(e){var t=this;this.suggestionDisabled||(this.loading=!0,this.fetchSuggestions(e,function(e){t.loading=!1,t.suggestionDisabled||(Array.isArray(e)?(t.suggestions=e,t.highlightedIndex=t.highlightFirstItem?0:-1):console.error("[Element Error][Autocomplete]autocomplete suggestions must be an array"))}))},handleInput:function(e){if(this.$emit("input",e),this.suggestionDisabled=!1,!this.triggerOnFocus&&!e)return this.suggestionDisabled=!0,void(this.suggestions=[]);this.debouncedGetData(e)},handleChange:function(e){this.$emit("change",e)},handleFocus:function(e){this.activated=!0,this.$emit("focus",e),this.triggerOnFocus&&this.debouncedGetData(this.value)},handleBlur:function(e){this.$emit("blur",e)},handleClear:function(){this.activated=!1,this.$emit("clear")},close:function(e){this.activated=!1},handleKeyEnter:function(e){var t=this;this.suggestionVisible&&this.highlightedIndex>=0&&this.highlightedIndex=this.suggestions.length&&(e=this.suggestions.length-1);var t=this.$refs.suggestions.$el.querySelector(".el-autocomplete-suggestion__wrap"),i=t.querySelectorAll(".el-autocomplete-suggestion__list li")[e],n=t.scrollTop,s=i.offsetTop;s+i.scrollHeight>n+t.clientHeight&&(t.scrollTop+=i.scrollHeight),s=0&&this.resetTabindex(this.triggerElm),clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.visible=!1},"click"===this.trigger?0:this.hideTimeout))},handleClick:function(){this.triggerElm.disabled||(this.visible?this.hide():this.show())},handleTriggerKeyDown:function(e){var t=e.keyCode;[38,40].indexOf(t)>-1?(this.removeTabindex(),this.resetTabindex(this.menuItems[0]),this.menuItems[0].focus(),e.preventDefault(),e.stopPropagation()):13===t?this.handleClick():[9,27].indexOf(t)>-1&&this.hide()},handleItemKeyDown:function(e){var t=e.keyCode,i=e.target,n=this.menuItemsArray.indexOf(i),s=this.menuItemsArray.length-1,r=void 0;[38,40].indexOf(t)>-1?(r=38===t?0!==n?n-1:0:n-1&&(this.hide(),this.triggerElmFocus())},resetTabindex:function(e){this.removeTabindex(),e.setAttribute("tabindex","0")},removeTabindex:function(){this.triggerElm.setAttribute("tabindex","-1"),this.menuItemsArray.forEach(function(e){e.setAttribute("tabindex","-1")})},initAria:function(){this.dropdownElm.setAttribute("id",this.listId),this.triggerElm.setAttribute("aria-haspopup","list"),this.triggerElm.setAttribute("aria-controls",this.listId),this.splitButton||(this.triggerElm.setAttribute("role","button"),this.triggerElm.setAttribute("tabindex",this.tabindex),this.triggerElm.setAttribute("class",(this.triggerElm.getAttribute("class")||"")+" el-dropdown-selfdefine"))},initEvent:function(){var e=this,t=this.trigger,i=this.show,n=this.hide,s=this.handleClick,r=this.splitButton,o=this.handleTriggerKeyDown,a=this.handleItemKeyDown;this.triggerElm=r?this.$refs.trigger.$el:this.$slots.default[0].elm;var l=this.dropdownElm;this.triggerElm.addEventListener("keydown",o),l.addEventListener("keydown",a,!0),r||(this.triggerElm.addEventListener("focus",function(){e.focusing=!0}),this.triggerElm.addEventListener("blur",function(){e.focusing=!1}),this.triggerElm.addEventListener("click",function(){e.focusing=!1})),"hover"===t?(this.triggerElm.addEventListener("mouseenter",i),this.triggerElm.addEventListener("mouseleave",n),l.addEventListener("mouseenter",i),l.addEventListener("mouseleave",n)):"click"===t&&this.triggerElm.addEventListener("click",s)},handleMenuItemClick:function(e,t){this.hideOnClick&&(this.visible=!1),this.$emit("command",e,t)},triggerElmFocus:function(){this.triggerElm.focus&&this.triggerElm.focus()},initDomOperation:function(){this.dropdownElm=this.popperElm,this.menuItems=this.dropdownElm.querySelectorAll("[tabindex='-1']"),this.menuItemsArray=[].slice.call(this.menuItems),this.initEvent(),this.initAria()}},render:function(e){var t=this,i=this.hide,n=this.splitButton,s=this.type,r=this.dropdownSize,o=n?e("el-button-group",[e("el-button",{attrs:{type:s,size:r},nativeOn:{click:function(e){t.$emit("click",e),i()}}},[this.$slots.default]),e("el-button",{ref:"trigger",attrs:{type:s,size:r},class:"el-dropdown__caret-button"},[e("i",{class:"el-dropdown__icon el-icon-arrow-down"})])]):this.$slots.default;return e("div",{class:"el-dropdown",directives:[{name:"clickoutside",value:i}]},[o,this.$slots.dropdown])}},void 0,void 0,!1,null,null,null);G.options.__file="packages/dropdown/src/dropdown.vue";var X=G.exports;X.install=function(e){e.component(X.name,X)};var Q=X,J=function(){var e=this.$createElement,t=this._self._c||e;return t("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":this.doDestroy}},[t("ul",{directives:[{name:"show",rawName:"v-show",value:this.showPopper,expression:"showPopper"}],staticClass:"el-dropdown-menu el-popper",class:[this.size&&"el-dropdown-menu--"+this.size]},[this._t("default")],2)])};J._withStripped=!0;var Z=s({name:"ElDropdownMenu",componentName:"ElDropdownMenu",mixins:[j.a],props:{visibleArrow:{type:Boolean,default:!0},arrowOffset:{type:Number,default:0}},data:function(){return{size:this.dropdown.dropdownSize}},inject:["dropdown"],created:function(){var e=this;this.$on("updatePopper",function(){e.showPopper&&e.updatePopper()}),this.$on("visible",function(t){e.showPopper=t})},mounted:function(){this.dropdown.popperElm=this.popperElm=this.$el,this.referenceElm=this.dropdown.$el,this.dropdown.initDomOperation()},watch:{"dropdown.placement":{immediate:!0,handler:function(e){this.currentPlacement=e}}}},J,[],!1,null,null,null);Z.options.__file="packages/dropdown/src/dropdown-menu.vue";var ee=Z.exports;ee.install=function(e){e.component(ee.name,ee)};var te=ee,ie=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-dropdown-menu__item",class:{"is-disabled":e.disabled,"el-dropdown-menu__item--divided":e.divided},attrs:{"aria-disabled":e.disabled,tabindex:e.disabled?null:-1},on:{click:e.handleClick}},[e.icon?i("i",{class:e.icon}):e._e(),e._t("default")],2)};ie._withStripped=!0;var ne=s({name:"ElDropdownItem",mixins:[k.a],props:{command:{},disabled:Boolean,divided:Boolean,icon:String},methods:{handleClick:function(e){this.dispatch("ElDropdown","menu-item-click",[this.command,this])}}},ie,[],!1,null,null,null);ne.options.__file="packages/dropdown/src/dropdown-item.vue";var se=ne.exports;se.install=function(e){e.component(se.name,se)};var re=se,oe=oe||{};oe.Utils=oe.Utils||{},oe.Utils.focusFirstDescendant=function(e){for(var t=0;t=0;t--){var i=e.childNodes[t];if(oe.Utils.attemptFocus(i)||oe.Utils.focusLastDescendant(i))return!0}return!1},oe.Utils.attemptFocus=function(e){if(!oe.Utils.isFocusable(e))return!1;oe.Utils.IgnoreUtilFocusChanges=!0;try{e.focus()}catch(e){}return oe.Utils.IgnoreUtilFocusChanges=!1,document.activeElement===e},oe.Utils.isFocusable=function(e){if(e.tabIndex>0||0===e.tabIndex&&null!==e.getAttribute("tabIndex"))return!0;if(e.disabled)return!1;switch(e.nodeName){case"A":return!!e.href&&"ignore"!==e.rel;case"INPUT":return"hidden"!==e.type&&"file"!==e.type;case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},oe.Utils.triggerEvent=function(e,t){var i=void 0;i=/^mouse|click/.test(t)?"MouseEvents":/^key/.test(t)?"KeyboardEvent":"HTMLEvents";for(var n=document.createEvent(i),s=arguments.length,r=Array(s>2?s-2:0),o=2;o=0;t--)e.splice(t,0,e[t]);e=e.join("")}return/^[0-9a-fA-F]{6}$/.test(e)?{red:parseInt(e.slice(0,2),16),green:parseInt(e.slice(2,4),16),blue:parseInt(e.slice(4,6),16)}:{red:255,green:255,blue:255}},mixColor:function(e,t){var i=this.getColorChannels(e),n=i.red,s=i.green,r=i.blue;return t>0?(n*=1-t,s*=1-t,r*=1-t):(n+=(255-n)*t,s+=(255-s)*t,r+=(255-r)*t),"rgb("+Math.round(n)+", "+Math.round(s)+", "+Math.round(r)+")"},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},openMenu:function(e,t){var i=this.openedMenus;-1===i.indexOf(e)&&(this.uniqueOpened&&(this.openedMenus=i.filter(function(e){return-1!==t.indexOf(e)})),this.openedMenus.push(e))},closeMenu:function(e){var t=this.openedMenus.indexOf(e);-1!==t&&this.openedMenus.splice(t,1)},handleSubmenuClick:function(e){var t=e.index,i=e.indexPath;-1!==this.openedMenus.indexOf(t)?(this.closeMenu(t),this.$emit("close",t,i)):(this.openMenu(t,i),this.$emit("open",t,i))},handleItemClick:function(e){var t=this,i=e.index,n=e.indexPath,s=this.activeIndex,r=null!==e.index;r&&(this.activeIndex=e.index),this.$emit("select",i,n,e),("horizontal"===this.mode||this.collapse)&&(this.openedMenus=[]),this.router&&r&&this.routeToItem(e,function(e){if(t.activeIndex=s,e){if("NavigationDuplicated"===e.name)return;console.error(e)}})},initOpenedMenu:function(){var e=this,t=this.activeIndex,i=this.items[t];i&&"horizontal"!==this.mode&&!this.collapse&&i.indexPath.forEach(function(t){var i=e.submenus[t];i&&e.openMenu(t,i.indexPath)})},routeToItem:function(e,t){var i=e.route||e.index;try{this.$router.push(i,function(){},t)}catch(e){console.error(e)}},open:function(e){var t=this,i=this.submenus[e.toString()].indexPath;i.forEach(function(e){return t.openMenu(e,i)})},close:function(e){this.closeMenu(e)}},mounted:function(){this.initOpenedMenu(),this.$on("item-click",this.handleItemClick),this.$on("submenu-click",this.handleSubmenuClick),"horizontal"===this.mode&&new pe(this.$el),this.$watch("items",this.updateActiveIndex)}},void 0,void 0,!1,null,null,null);me.options.__file="packages/menu/src/menu.vue";var ve=me.exports;ve.install=function(e){e.component(ve.name,ve)};var ge=ve,be=i(21),ye=i.n(be),_e={inject:["rootMenu"],computed:{indexPath:function(){for(var e=[this.index],t=this.$parent;"ElMenu"!==t.$options.componentName;)t.index&&e.unshift(t.index),t=t.$parent;return e},parentMenu:function(){for(var e=this.$parent;e&&-1===["ElMenu","ElSubmenu"].indexOf(e.$options.componentName);)e=e.$parent;return e},paddingStyle:function(){if("vertical"!==this.rootMenu.mode)return{};var e=20,t=this.$parent;if(this.rootMenu.collapse)e=20;else for(;t&&"ElMenu"!==t.$options.componentName;)"ElSubmenu"===t.$options.componentName&&(e+=20),t=t.$parent;return{paddingLeft:e+"px"}}}},xe={props:{transformOrigin:{type:[Boolean,String],default:!1},offset:j.a.props.offset,boundariesPadding:j.a.props.boundariesPadding,popperOptions:j.a.props.popperOptions},data:j.a.data,methods:j.a.methods,beforeDestroy:j.a.beforeDestroy,deactivated:j.a.deactivated},Ce=s({name:"ElSubmenu",componentName:"ElSubmenu",mixins:[_e,k.a,xe],components:{ElCollapseTransition:ye.a},props:{index:{type:String,required:!0},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0}},data:function(){return{popperJS:null,timeout:null,items:{},submenus:{},mouseInChild:!1}},watch:{opened:function(e){var t=this;this.isMenuPopup&&this.$nextTick(function(e){t.updatePopper()})}},computed:{appendToBody:function(){return void 0===this.popperAppendToBody?this.isFirstLevel:this.popperAppendToBody},menuTransitionName:function(){return this.rootMenu.collapse?"el-zoom-in-left":"el-zoom-in-top"},opened:function(){return this.rootMenu.openedMenus.indexOf(this.index)>-1},active:function(){var e=!1,t=this.submenus,i=this.items;return Object.keys(i).forEach(function(t){i[t].active&&(e=!0)}),Object.keys(t).forEach(function(i){t[i].active&&(e=!0)}),e},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||""},activeTextColor:function(){return this.rootMenu.activeTextColor||""},textColor:function(){return this.rootMenu.textColor||""},mode:function(){return this.rootMenu.mode},isMenuPopup:function(){return this.rootMenu.isMenuPopup},titleStyle:function(){return"horizontal"!==this.mode?{color:this.textColor}:{borderBottomColor:this.active?this.rootMenu.activeTextColor?this.activeTextColor:"":"transparent",color:this.active?this.activeTextColor:this.textColor}},isFirstLevel:function(){for(var e=!0,t=this.$parent;t&&t!==this.rootMenu;){if(["ElSubmenu","ElMenuItemGroup"].indexOf(t.$options.componentName)>-1){e=!1;break}t=t.$parent}return e}},methods:{handleCollapseToggle:function(e){e?this.initPopper():this.doDestroy()},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},handleClick:function(){var e=this.rootMenu,t=this.disabled;"hover"===e.menuTrigger&&"horizontal"===e.mode||e.collapse&&"vertical"===e.mode||t||this.dispatch("ElMenu","submenu-click",this)},handleMouseenter:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.showTimeout;if("ActiveXObject"in window||"focus"!==e.type||e.relatedTarget){var n=this.rootMenu,s=this.disabled;"click"===n.menuTrigger&&"horizontal"===n.mode||!n.collapse&&"vertical"===n.mode||s||(this.dispatch("ElSubmenu","mouse-enter-child"),clearTimeout(this.timeout),this.timeout=setTimeout(function(){t.rootMenu.openMenu(t.index,t.indexPath)},i),this.appendToBody&&this.$parent.$el.dispatchEvent(new MouseEvent("mouseenter")))}},handleMouseleave:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.rootMenu;"click"===i.menuTrigger&&"horizontal"===i.mode||!i.collapse&&"vertical"===i.mode||(this.dispatch("ElSubmenu","mouse-leave-child"),clearTimeout(this.timeout),this.timeout=setTimeout(function(){!e.mouseInChild&&e.rootMenu.closeMenu(e.index)},this.hideTimeout),this.appendToBody&&t&&"ElSubmenu"===this.$parent.$options.name&&this.$parent.handleMouseleave(!0))},handleTitleMouseenter:function(){if("horizontal"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs["submenu-title"];e&&(e.style.backgroundColor=this.rootMenu.hoverBackground)}},handleTitleMouseleave:function(){if("horizontal"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs["submenu-title"];e&&(e.style.backgroundColor=this.rootMenu.backgroundColor||"")}},updatePlacement:function(){this.currentPlacement="horizontal"===this.mode&&this.isFirstLevel?"bottom-start":"right-start"},initPopper:function(){this.referenceElm=this.$el,this.popperElm=this.$refs.menu,this.updatePlacement()}},created:function(){var e=this;this.$on("toggle-collapse",this.handleCollapseToggle),this.$on("mouse-enter-child",function(){e.mouseInChild=!0,clearTimeout(e.timeout)}),this.$on("mouse-leave-child",function(){e.mouseInChild=!1,clearTimeout(e.timeout)})},mounted:function(){this.parentMenu.addSubmenu(this),this.rootMenu.addSubmenu(this),this.initPopper()},beforeDestroy:function(){this.parentMenu.removeSubmenu(this),this.rootMenu.removeSubmenu(this)},render:function(e){var t=this,i=this.active,n=this.opened,s=this.paddingStyle,r=this.titleStyle,o=this.backgroundColor,a=this.rootMenu,l=this.currentPlacement,c=this.menuTransitionName,u=this.mode,h=this.disabled,d=this.popperClass,p=this.$slots,f=this.isFirstLevel,m=e("transition",{attrs:{name:c}},[e("div",{ref:"menu",directives:[{name:"show",value:n}],class:["el-menu--"+u,d],on:{mouseenter:function(e){return t.handleMouseenter(e,100)},mouseleave:function(){return t.handleMouseleave(!0)},focus:function(e){return t.handleMouseenter(e,100)}}},[e("ul",{attrs:{role:"menu"},class:["el-menu el-menu--popup","el-menu--popup-"+l],style:{backgroundColor:a.backgroundColor||""}},[p.default])])]),v=e("el-collapse-transition",[e("ul",{attrs:{role:"menu"},class:"el-menu el-menu--inline",directives:[{name:"show",value:n}],style:{backgroundColor:a.backgroundColor||""}},[p.default])]),g="horizontal"===a.mode&&f||"vertical"===a.mode&&!a.collapse?"el-icon-arrow-down":"el-icon-arrow-right";return e("li",{class:{"el-submenu":!0,"is-active":i,"is-opened":n,"is-disabled":h},attrs:{role:"menuitem","aria-haspopup":"true","aria-expanded":n},on:{mouseenter:this.handleMouseenter,mouseleave:function(){return t.handleMouseleave(!1)},focus:this.handleMouseenter}},[e("div",{class:"el-submenu__title",ref:"submenu-title",on:{click:this.handleClick,mouseenter:this.handleTitleMouseenter,mouseleave:this.handleTitleMouseleave},style:[s,r,{backgroundColor:o}]},[p.title,e("i",{class:["el-submenu__icon-arrow",g]})]),this.isMenuPopup?m:v])}},void 0,void 0,!1,null,null,null);Ce.options.__file="packages/menu/src/submenu.vue";var we=Ce.exports;we.install=function(e){e.component(we.name,we)};var ke=we,Se=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-menu-item",class:{"is-active":e.active,"is-disabled":e.disabled},style:[e.paddingStyle,e.itemStyle,{backgroundColor:e.backgroundColor}],attrs:{role:"menuitem",tabindex:"-1"},on:{click:e.handleClick,mouseenter:e.onMouseEnter,focus:e.onMouseEnter,blur:e.onMouseLeave,mouseleave:e.onMouseLeave}},["ElMenu"===e.parentMenu.$options.componentName&&e.rootMenu.collapse&&e.$slots.title?i("el-tooltip",{attrs:{effect:"dark",placement:"right"}},[i("div",{attrs:{slot:"content"},slot:"content"},[e._t("title")],2),i("div",{staticStyle:{position:"absolute",left:"0",top:"0",height:"100%",width:"100%",display:"inline-block","box-sizing":"border-box",padding:"0 20px"}},[e._t("default")],2)]):[e._t("default"),e._t("title")]],2)};Se._withStripped=!0;var De=i(26),$e=i.n(De),Oe=s({name:"ElMenuItem",componentName:"ElMenuItem",mixins:[_e,k.a],components:{ElTooltip:$e.a},props:{index:{default:null,validator:function(e){return"string"==typeof e||null===e}},route:[String,Object],disabled:Boolean},computed:{active:function(){return this.index===this.rootMenu.activeIndex},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||""},activeTextColor:function(){return this.rootMenu.activeTextColor||""},textColor:function(){return this.rootMenu.textColor||""},mode:function(){return this.rootMenu.mode},itemStyle:function(){var e={color:this.active?this.activeTextColor:this.textColor};return"horizontal"!==this.mode||this.isNested||(e.borderBottomColor=this.active?this.rootMenu.activeTextColor?this.activeTextColor:"":"transparent"),e},isNested:function(){return this.parentMenu!==this.rootMenu}},methods:{onMouseEnter:function(){("horizontal"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.hoverBackground)},onMouseLeave:function(){("horizontal"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.backgroundColor)},handleClick:function(){this.disabled||(this.dispatch("ElMenu","item-click",this),this.$emit("click",this))}},mounted:function(){this.parentMenu.addItem(this),this.rootMenu.addItem(this)},beforeDestroy:function(){this.parentMenu.removeItem(this),this.rootMenu.removeItem(this)}},Se,[],!1,null,null,null);Oe.options.__file="packages/menu/src/menu-item.vue";var Ee=Oe.exports;Ee.install=function(e){e.component(Ee.name,Ee)};var Te=Ee,Pe=function(){var e=this.$createElement,t=this._self._c||e;return t("li",{staticClass:"el-menu-item-group"},[t("div",{staticClass:"el-menu-item-group__title",style:{paddingLeft:this.levelPadding+"px"}},[this.$slots.title?this._t("title"):[this._v(this._s(this.title))]],2),t("ul",[this._t("default")],2)])};Pe._withStripped=!0;var Me=s({name:"ElMenuItemGroup",componentName:"ElMenuItemGroup",inject:["rootMenu"],props:{title:{type:String}},data:function(){return{paddingLeft:20}},computed:{levelPadding:function(){var e=20,t=this.$parent;if(this.rootMenu.collapse)return 20;for(;t&&"ElMenu"!==t.$options.componentName;)"ElSubmenu"===t.$options.componentName&&(e+=20),t=t.$parent;return e}}},Pe,[],!1,null,null,null);Me.options.__file="packages/menu/src/menu-item-group.vue";var Ie=Me.exports;Ie.install=function(e){e.component(Ie.name,Ie)};var Ne=Ie,je=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["textarea"===e.type?"el-textarea":"el-input",e.inputSize?"el-input--"+e.inputSize:"",{"is-disabled":e.inputDisabled,"is-exceed":e.inputExceed,"el-input-group":e.$slots.prepend||e.$slots.append,"el-input-group--append":e.$slots.append,"el-input-group--prepend":e.$slots.prepend,"el-input--prefix":e.$slots.prefix||e.prefixIcon,"el-input--suffix":e.$slots.suffix||e.suffixIcon||e.clearable||e.showPassword}],on:{mouseenter:function(t){e.hovering=!0},mouseleave:function(t){e.hovering=!1}}},["textarea"!==e.type?[e.$slots.prepend?i("div",{staticClass:"el-input-group__prepend"},[e._t("prepend")],2):e._e(),"textarea"!==e.type?i("input",e._b({ref:"input",staticClass:"el-input__inner",attrs:{tabindex:e.tabindex,type:e.showPassword?e.passwordVisible?"text":"password":e.type,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"input",e.$attrs,!1)):e._e(),e.$slots.prefix||e.prefixIcon?i("span",{staticClass:"el-input__prefix"},[e._t("prefix"),e.prefixIcon?i("i",{staticClass:"el-input__icon",class:e.prefixIcon}):e._e()],2):e._e(),e.getSuffixVisible()?i("span",{staticClass:"el-input__suffix"},[i("span",{staticClass:"el-input__suffix-inner"},[e.showClear&&e.showPwdVisible&&e.isWordLimitVisible?e._e():[e._t("suffix"),e.suffixIcon?i("i",{staticClass:"el-input__icon",class:e.suffixIcon}):e._e()],e.showClear?i("i",{staticClass:"el-input__icon el-icon-circle-close el-input__clear",on:{mousedown:function(e){e.preventDefault()},click:e.clear}}):e._e(),e.showPwdVisible?i("i",{staticClass:"el-input__icon el-icon-view el-input__clear",on:{click:e.handlePasswordVisible}}):e._e(),e.isWordLimitVisible?i("span",{staticClass:"el-input__count"},[i("span",{staticClass:"el-input__count-inner"},[e._v("\n "+e._s(e.textLength)+"/"+e._s(e.upperLimit)+"\n ")])]):e._e()],2),e.validateState?i("i",{staticClass:"el-input__icon",class:["el-input__validateIcon",e.validateIcon]}):e._e()]):e._e(),e.$slots.append?i("div",{staticClass:"el-input-group__append"},[e._t("append")],2):e._e()]:i("textarea",e._b({ref:"textarea",staticClass:"el-textarea__inner",style:e.textareaStyle,attrs:{tabindex:e.tabindex,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"textarea",e.$attrs,!1)),e.isWordLimitVisible&&"textarea"===e.type?i("span",{staticClass:"el-input__count"},[e._v(e._s(e.textLength)+"/"+e._s(e.upperLimit))]):e._e()],2)};je._withStripped=!0;var Fe=void 0,Le="\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n",Ae=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function Ve(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;Fe||(Fe=document.createElement("textarea"),document.body.appendChild(Fe));var n=function(e){var t=window.getComputedStyle(e),i=t.getPropertyValue("box-sizing"),n=parseFloat(t.getPropertyValue("padding-bottom"))+parseFloat(t.getPropertyValue("padding-top")),s=parseFloat(t.getPropertyValue("border-bottom-width"))+parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:Ae.map(function(e){return e+":"+t.getPropertyValue(e)}).join(";"),paddingSize:n,borderSize:s,boxSizing:i}}(e),s=n.paddingSize,r=n.borderSize,o=n.boxSizing,a=n.contextStyle;Fe.setAttribute("style",a+";"+Le),Fe.value=e.value||e.placeholder||"";var l=Fe.scrollHeight,c={};"border-box"===o?l+=r:"content-box"===o&&(l-=s),Fe.value="";var u=Fe.scrollHeight-s;if(null!==t){var h=u*t;"border-box"===o&&(h=h+s+r),l=Math.max(h,l),c.minHeight=h+"px"}if(null!==i){var d=u*i;"border-box"===o&&(d=d+s+r),l=Math.min(d,l)}return c.height=l+"px",Fe.parentNode&&Fe.parentNode.removeChild(Fe),Fe=null,c}var Be=i(7),ze=i.n(Be),Re=i(19),He=s({name:"ElInput",componentName:"ElInput",mixins:[k.a,C.a],inheritAttrs:!1,inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{textareaCalcStyle:{},hovering:!1,focused:!1,isComposing:!1,passwordVisible:!1}},props:{value:[String,Number],size:String,resize:String,form:String,disabled:Boolean,readonly:Boolean,type:{type:String,default:"text"},autosize:{type:[Boolean,Object],default:!1},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},validateEvent:{type:Boolean,default:!0},suffixIcon:String,prefixIcon:String,label:String,clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},tabindex:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},validateState:function(){return this.elFormItem?this.elFormItem.validateState:""},needStatusIcon:function(){return!!this.elForm&&this.elForm.statusIcon},validateIcon:function(){return{validating:"el-icon-loading",success:"el-icon-circle-check",error:"el-icon-circle-close"}[this.validateState]},textareaStyle:function(){return ze()({},this.textareaCalcStyle,{resize:this.resize})},inputSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputDisabled:function(){return this.disabled||(this.elForm||{}).disabled},nativeInputValue:function(){return null===this.value||void 0===this.value?"":String(this.value)},showClear:function(){return this.clearable&&!this.inputDisabled&&!this.readonly&&this.nativeInputValue&&(this.focused||this.hovering)},showPwdVisible:function(){return this.showPassword&&!this.inputDisabled&&!this.readonly&&(!!this.nativeInputValue||this.focused)},isWordLimitVisible:function(){return this.showWordLimit&&this.$attrs.maxlength&&("text"===this.type||"textarea"===this.type)&&!this.inputDisabled&&!this.readonly&&!this.showPassword},upperLimit:function(){return this.$attrs.maxlength},textLength:function(){return"number"==typeof this.value?String(this.value).length:(this.value||"").length},inputExceed:function(){return this.isWordLimitVisible&&this.textLength>this.upperLimit}},watch:{value:function(e){this.$nextTick(this.resizeTextarea),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[e])},nativeInputValue:function(){this.setNativeInputValue()},type:function(){var e=this;this.$nextTick(function(){e.setNativeInputValue(),e.resizeTextarea(),e.updateIconOffset()})}},methods:{focus:function(){this.getInput().focus()},blur:function(){this.getInput().blur()},getMigratingConfig:function(){return{props:{icon:"icon is removed, use suffix-icon / prefix-icon instead.","on-icon-click":"on-icon-click is removed."},events:{click:"click is removed."}}},handleBlur:function(e){this.focused=!1,this.$emit("blur",e),this.validateEvent&&this.dispatch("ElFormItem","el.form.blur",[this.value])},select:function(){this.getInput().select()},resizeTextarea:function(){if(!this.$isServer){var e=this.autosize;if("textarea"===this.type)if(e){var t=e.minRows,i=e.maxRows;this.textareaCalcStyle=Ve(this.$refs.textarea,t,i)}else this.textareaCalcStyle={minHeight:Ve(this.$refs.textarea).minHeight}}},setNativeInputValue:function(){var e=this.getInput();e&&e.value!==this.nativeInputValue&&(e.value=this.nativeInputValue)},handleFocus:function(e){this.focused=!0,this.$emit("focus",e)},handleCompositionStart:function(){this.isComposing=!0},handleCompositionUpdate:function(e){var t=e.target.value,i=t[t.length-1]||"";this.isComposing=!Object(Re.isKorean)(i)},handleCompositionEnd:function(e){this.isComposing&&(this.isComposing=!1,this.handleInput(e))},handleInput:function(e){this.isComposing||e.target.value!==this.nativeInputValue&&(this.$emit("input",e.target.value),this.$nextTick(this.setNativeInputValue))},handleChange:function(e){this.$emit("change",e.target.value)},calcIconOffset:function(e){var t=[].slice.call(this.$el.querySelectorAll(".el-input__"+e)||[]);if(t.length){for(var i=null,n=0;n=0&&e===parseInt(e,10)}}},data:function(){return{currentValue:0,userInput:null}},watch:{value:{immediate:!0,handler:function(e){var t=void 0===e?e:Number(e);if(void 0!==t){if(isNaN(t))return;if(this.stepStrictly){var i=this.getPrecision(this.step),n=Math.pow(10,i);t=Math.round(t/this.step)*n*this.step/n}void 0!==this.precision&&(t=this.toPrecision(t,this.precision))}t>=this.max&&(t=this.max),t<=this.min&&(t=this.min),this.currentValue=t,this.userInput=null,this.$emit("input",t)}}},computed:{minDisabled:function(){return this._decrease(this.value,this.step)this.max},numPrecision:function(){var e=this.value,t=this.step,i=this.getPrecision,n=this.precision,s=i(t);return void 0!==n?(s>n&&console.warn("[Element Warn][InputNumber]precision should not be less than the decimal places of step"),n):Math.max(i(e),s)},controlsAtRight:function(){return this.controls&&"right"===this.controlsPosition},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},inputNumberSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputNumberDisabled:function(){return this.disabled||!!(this.elForm||{}).disabled},displayValue:function(){if(null!==this.userInput)return this.userInput;var e=this.currentValue;if("number"==typeof e){if(this.stepStrictly){var t=this.getPrecision(this.step),i=Math.pow(10,t);e=Math.round(e/this.step)*i*this.step/i}void 0!==this.precision&&(e=e.toFixed(this.precision))}return e}},methods:{toPrecision:function(e,t){return void 0===t&&(t=this.numPrecision),parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t))},getPrecision:function(e){if(void 0===e)return 0;var t=e.toString(),i=t.indexOf("."),n=0;return-1!==i&&(n=t.length-i-1),n},_increase:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e+i*t)/i)},_decrease:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e-i*t)/i)},increase:function(){if(!this.inputNumberDisabled&&!this.maxDisabled){var e=this.value||0,t=this._increase(e,this.step);this.setCurrentValue(t)}},decrease:function(){if(!this.inputNumberDisabled&&!this.minDisabled){var e=this.value||0,t=this._decrease(e,this.step);this.setCurrentValue(t)}},handleBlur:function(e){this.$emit("blur",e)},handleFocus:function(e){this.$emit("focus",e)},setCurrentValue:function(e){var t=this.currentValue;"number"==typeof e&&void 0!==this.precision&&(e=this.toPrecision(e,this.precision)),e>=this.max&&(e=this.max),e<=this.min&&(e=this.min),t!==e&&(this.userInput=null,this.$emit("input",e),this.$emit("change",e,t),this.currentValue=e)},handleInput:function(e){this.userInput=e},handleInputChange:function(e){var t=""===e?void 0:Number(e);isNaN(t)&&""!==e||this.setCurrentValue(t),this.userInput=null},select:function(){this.$refs.input.select()}},mounted:function(){var e=this.$refs.input.$refs.input;e.setAttribute("role","spinbutton"),e.setAttribute("aria-valuemax",this.max),e.setAttribute("aria-valuemin",this.min),e.setAttribute("aria-valuenow",this.currentValue),e.setAttribute("aria-disabled",this.inputNumberDisabled)},updated:function(){this.$refs&&this.$refs.input&&this.$refs.input.$refs.input.setAttribute("aria-valuenow",this.currentValue)}},Ye,[],!1,null,null,null);Ue.options.__file="packages/input-number/src/input-number.vue";var Ge=Ue.exports;Ge.install=function(e){e.component(Ge.name,Ge)};var Xe=Ge,Qe=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-radio",class:[e.border&&e.radioSize?"el-radio--"+e.radioSize:"",{"is-disabled":e.isDisabled},{"is-focus":e.focus},{"is-bordered":e.border},{"is-checked":e.model===e.label}],attrs:{role:"radio","aria-checked":e.model===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.model=e.isDisabled?e.model:e.label}}},[i("span",{staticClass:"el-radio__input",class:{"is-disabled":e.isDisabled,"is-checked":e.model===e.label}},[i("span",{staticClass:"el-radio__inner"}),i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],ref:"radio",staticClass:"el-radio__original",attrs:{type:"radio","aria-hidden":"true",name:e.name,disabled:e.isDisabled,tabindex:"-1"},domProps:{value:e.label,checked:e._q(e.model,e.label)},on:{focus:function(t){e.focus=!0},blur:function(t){e.focus=!1},change:[function(t){e.model=e.label},e.handleChange]}})]),i("span",{staticClass:"el-radio__label",on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};Qe._withStripped=!0;var Je=s({name:"ElRadio",mixins:[k.a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElRadio",props:{value:{},label:{},disabled:Boolean,name:String,border:Boolean,size:String},data:function(){return{focus:!1}},computed:{isGroup:function(){for(var e=this.$parent;e;){if("ElRadioGroup"===e.$options.componentName)return this._radioGroup=e,!0;e=e.$parent}return!1},model:{get:function(){return this.isGroup?this._radioGroup.value:this.value},set:function(e){this.isGroup?this.dispatch("ElRadioGroup","input",[e]):this.$emit("input",e),this.$refs.radio&&(this.$refs.radio.checked=this.model===this.label)}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},radioSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._radioGroup.radioGroupSize||e},isDisabled:function(){return this.isGroup?this._radioGroup.disabled||this.disabled||(this.elForm||{}).disabled:this.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this.isGroup&&this.model!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick(function(){e.$emit("change",e.model),e.isGroup&&e.dispatch("ElRadioGroup","handleChange",e.model)})}}},Qe,[],!1,null,null,null);Je.options.__file="packages/radio/src/radio.vue";var Ze=Je.exports;Ze.install=function(e){e.component(Ze.name,Ze)};var et=Ze,tt=function(){var e=this.$createElement;return(this._self._c||e)(this._elTag,{tag:"component",staticClass:"el-radio-group",attrs:{role:"radiogroup"},on:{keydown:this.handleKeydown}},[this._t("default")],2)};tt._withStripped=!0;var it=Object.freeze({LEFT:37,UP:38,RIGHT:39,DOWN:40}),nt=s({name:"ElRadioGroup",componentName:"ElRadioGroup",inject:{elFormItem:{default:""}},mixins:[k.a],props:{value:{},size:String,fill:String,textColor:String,disabled:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},_elTag:function(){return(this.$vnode.data||{}).tag||"div"},radioGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},created:function(){var e=this;this.$on("handleChange",function(t){e.$emit("change",t)})},mounted:function(){var e=this.$el.querySelectorAll("[type=radio]"),t=this.$el.querySelectorAll("[role=radio]")[0];![].some.call(e,function(e){return e.checked})&&t&&(t.tabIndex=0)},methods:{handleKeydown:function(e){var t=e.target,i="INPUT"===t.nodeName?"[type=radio]":"[role=radio]",n=this.$el.querySelectorAll(i),s=n.length,r=[].indexOf.call(n,t),o=this.$el.querySelectorAll("[role=radio]");switch(e.keyCode){case it.LEFT:case it.UP:e.stopPropagation(),e.preventDefault(),0===r?(o[s-1].click(),o[s-1].focus()):(o[r-1].click(),o[r-1].focus());break;case it.RIGHT:case it.DOWN:r===s-1?(e.stopPropagation(),e.preventDefault(),o[0].click(),o[0].focus()):(o[r+1].click(),o[r+1].focus())}}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",[this.value])}}},tt,[],!1,null,null,null);nt.options.__file="packages/radio/src/radio-group.vue";var st=nt.exports;st.install=function(e){e.component(st.name,st)};var rt=st,ot=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-radio-button",class:[e.size?"el-radio-button--"+e.size:"",{"is-active":e.value===e.label},{"is-disabled":e.isDisabled},{"is-focus":e.focus}],attrs:{role:"radio","aria-checked":e.value===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.value=e.isDisabled?e.value:e.label}}},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.value,expression:"value"}],staticClass:"el-radio-button__orig-radio",attrs:{type:"radio",name:e.name,disabled:e.isDisabled,tabindex:"-1"},domProps:{value:e.label,checked:e._q(e.value,e.label)},on:{change:[function(t){e.value=e.label},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}),i("span",{staticClass:"el-radio-button__inner",style:e.value===e.label?e.activeStyle:null,on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};ot._withStripped=!0;var at=s({name:"ElRadioButton",mixins:[k.a],inject:{elForm:{default:""},elFormItem:{default:""}},props:{label:{},disabled:Boolean,name:String},data:function(){return{focus:!1}},computed:{value:{get:function(){return this._radioGroup.value},set:function(e){this._radioGroup.$emit("input",e)}},_radioGroup:function(){for(var e=this.$parent;e;){if("ElRadioGroup"===e.$options.componentName)return e;e=e.$parent}return!1},activeStyle:function(){return{backgroundColor:this._radioGroup.fill||"",borderColor:this._radioGroup.fill||"",boxShadow:this._radioGroup.fill?"-1px 0 0 0 "+this._radioGroup.fill:"",color:this._radioGroup.textColor||""}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},size:function(){return this._radioGroup.radioGroupSize||this._elFormItemSize||(this.$ELEMENT||{}).size},isDisabled:function(){return this.disabled||this._radioGroup.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this._radioGroup&&this.value!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick(function(){e.dispatch("ElRadioGroup","handleChange",e.value)})}}},ot,[],!1,null,null,null);at.options.__file="packages/radio/src/radio-button.vue";var lt=at.exports;lt.install=function(e){e.component(lt.name,lt)};var ct=lt,ut=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-checkbox",class:[e.border&&e.checkboxSize?"el-checkbox--"+e.checkboxSize:"",{"is-disabled":e.isDisabled},{"is-bordered":e.border},{"is-checked":e.isChecked}],attrs:{id:e.id}},[i("span",{staticClass:"el-checkbox__input",class:{"is-disabled":e.isDisabled,"is-checked":e.isChecked,"is-indeterminate":e.indeterminate,"is-focus":e.focus},attrs:{tabindex:!!e.indeterminate&&0,role:!!e.indeterminate&&"checkbox","aria-checked":!!e.indeterminate&&"mixed"}},[i("span",{staticClass:"el-checkbox__inner"}),e.trueLabel||e.falseLabel?i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":e.indeterminate?"true":"false",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,s=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var r=e._i(i,null);n.checked?r<0&&(e.model=i.concat([null])):r>-1&&(e.model=i.slice(0,r).concat(i.slice(r+1)))}else e.model=s},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":e.indeterminate?"true":"false",disabled:e.isDisabled,name:e.name},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,s=!!n.checked;if(Array.isArray(i)){var r=e.label,o=e._i(i,r);n.checked?o<0&&(e.model=i.concat([r])):o>-1&&(e.model=i.slice(0,o).concat(i.slice(o+1)))}else e.model=s},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}})]),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox__label"},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2):e._e()])};ut._withStripped=!0;var ht=s({name:"ElCheckbox",mixins:[k.a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElCheckbox",data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},computed:{model:{get:function(){return this.isGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this.isGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.lengththis._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):(this.$emit("input",e),this.selfModel=e)}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},isGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return this._checkboxGroup=e,!0;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this.isGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._checkboxGroup.checkboxGroupSize||e}},props:{value:{},label:{},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number],id:String,controls:String,border:Boolean,size:String},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick(function(){t.isGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()},mounted:function(){this.indeterminate&&this.$el.setAttribute("aria-controls",this.controls)},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}}},ut,[],!1,null,null,null);ht.options.__file="packages/checkbox/src/checkbox.vue";var dt=ht.exports;dt.install=function(e){e.component(dt.name,dt)};var pt=dt,ft=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-checkbox-button",class:[e.size?"el-checkbox-button--"+e.size:"",{"is-disabled":e.isDisabled},{"is-checked":e.isChecked},{"is-focus":e.focus}],attrs:{role:"checkbox","aria-checked":e.isChecked,"aria-disabled":e.isDisabled}},[e.trueLabel||e.falseLabel?i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox-button__original",attrs:{type:"checkbox",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,s=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var r=e._i(i,null);n.checked?r<0&&(e.model=i.concat([null])):r>-1&&(e.model=i.slice(0,r).concat(i.slice(r+1)))}else e.model=s},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox-button__original",attrs:{type:"checkbox",name:e.name,disabled:e.isDisabled},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,s=!!n.checked;if(Array.isArray(i)){var r=e.label,o=e._i(i,r);n.checked?o<0&&(e.model=i.concat([r])):o>-1&&(e.model=i.slice(0,o).concat(i.slice(o+1)))}else e.model=s},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox-button__inner",style:e.isChecked?e.activeStyle:null},[e._t("default",[e._v(e._s(e.label))])],2):e._e()])};ft._withStripped=!0;var mt=s({name:"ElCheckboxButton",mixins:[k.a],inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},props:{value:{},label:{},disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number]},computed:{model:{get:function(){return this._checkboxGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this._checkboxGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.lengththis._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):void 0!==this.value?this.$emit("input",e):this.selfModel=e}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},_checkboxGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return e;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},activeStyle:function(){return{backgroundColor:this._checkboxGroup.fill||"",borderColor:this._checkboxGroup.fill||"",color:this._checkboxGroup.textColor||"","box-shadow":"-1px 0 0 0 "+this._checkboxGroup.fill}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},size:function(){return this._checkboxGroup.checkboxGroupSize||this._elFormItemSize||(this.$ELEMENT||{}).size},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this._checkboxGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled}},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick(function(){t._checkboxGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()}},ft,[],!1,null,null,null);mt.options.__file="packages/checkbox/src/checkbox-button.vue";var vt=mt.exports;vt.install=function(e){e.component(vt.name,vt)};var gt=vt,bt=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-checkbox-group",attrs:{role:"group","aria-label":"checkbox-group"}},[this._t("default")],2)};bt._withStripped=!0;var yt=s({name:"ElCheckboxGroup",componentName:"ElCheckboxGroup",mixins:[k.a],inject:{elFormItem:{default:""}},props:{value:{},disabled:Boolean,min:Number,max:Number,size:String,fill:String,textColor:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",[e])}}},bt,[],!1,null,null,null);yt.options.__file="packages/checkbox/src/checkbox-group.vue";var _t=yt.exports;_t.install=function(e){e.component(_t.name,_t)};var xt=_t,Ct=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-switch",class:{"is-disabled":e.switchDisabled,"is-checked":e.checked},attrs:{role:"switch","aria-checked":e.checked,"aria-disabled":e.switchDisabled},on:{click:function(t){return t.preventDefault(),e.switchValue(t)}}},[i("input",{ref:"input",staticClass:"el-switch__input",attrs:{type:"checkbox",id:e.id,name:e.name,"true-value":e.activeValue,"false-value":e.inactiveValue,disabled:e.switchDisabled},on:{change:e.handleChange,keydown:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.switchValue(t):null}}}),e.inactiveIconClass||e.inactiveText?i("span",{class:["el-switch__label","el-switch__label--left",e.checked?"":"is-active"]},[e.inactiveIconClass?i("i",{class:[e.inactiveIconClass]}):e._e(),!e.inactiveIconClass&&e.inactiveText?i("span",{attrs:{"aria-hidden":e.checked}},[e._v(e._s(e.inactiveText))]):e._e()]):e._e(),i("span",{ref:"core",staticClass:"el-switch__core",style:{width:e.coreWidth+"px"}}),e.activeIconClass||e.activeText?i("span",{class:["el-switch__label","el-switch__label--right",e.checked?"is-active":""]},[e.activeIconClass?i("i",{class:[e.activeIconClass]}):e._e(),!e.activeIconClass&&e.activeText?i("span",{attrs:{"aria-hidden":!e.checked}},[e._v(e._s(e.activeText))]):e._e()]):e._e()])};Ct._withStripped=!0;var wt=s({name:"ElSwitch",mixins:[z()("input"),C.a,k.a],inject:{elForm:{default:""}},props:{value:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:!1},width:{type:Number,default:40},activeIconClass:{type:String,default:""},inactiveIconClass:{type:String,default:""},activeText:String,inactiveText:String,activeColor:{type:String,default:""},inactiveColor:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},id:String},data:function(){return{coreWidth:this.width}},created:function(){~[this.activeValue,this.inactiveValue].indexOf(this.value)||this.$emit("input",this.inactiveValue)},computed:{checked:function(){return this.value===this.activeValue},switchDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{checked:function(){this.$refs.input.checked=this.checked,(this.activeColor||this.inactiveColor)&&this.setBackgroundColor(),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[this.value])}},methods:{handleChange:function(e){var t=this,i=this.checked?this.inactiveValue:this.activeValue;this.$emit("input",i),this.$emit("change",i),this.$nextTick(function(){t.$refs.input.checked=t.checked})},setBackgroundColor:function(){var e=this.checked?this.activeColor:this.inactiveColor;this.$refs.core.style.borderColor=e,this.$refs.core.style.backgroundColor=e},switchValue:function(){!this.switchDisabled&&this.handleChange()},getMigratingConfig:function(){return{props:{"on-color":"on-color is renamed to active-color.","off-color":"off-color is renamed to inactive-color.","on-text":"on-text is renamed to active-text.","off-text":"off-text is renamed to inactive-text.","on-value":"on-value is renamed to active-value.","off-value":"off-value is renamed to inactive-value.","on-icon-class":"on-icon-class is renamed to active-icon-class.","off-icon-class":"off-icon-class is renamed to inactive-icon-class."}}}},mounted:function(){this.coreWidth=this.width||40,(this.activeColor||this.inactiveColor)&&this.setBackgroundColor(),this.$refs.input.checked=this.checked}},Ct,[],!1,null,null,null);wt.options.__file="packages/switch/src/component.vue";var kt=wt.exports;kt.install=function(e){e.component(kt.name,kt)};var St=kt,Dt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleClose,expression:"handleClose"}],staticClass:"el-select",class:[e.selectSize?"el-select--"+e.selectSize:""],on:{click:function(t){return t.stopPropagation(),e.toggleMenu(t)}}},[e.multiple?i("div",{ref:"tags",staticClass:"el-select__tags",style:{"max-width":e.inputWidth-32+"px",width:"100%"}},[e.collapseTags&&e.selected.length?i("span",[i("el-tag",{attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:e.selected[0].hitState,type:"info","disable-transitions":""},on:{close:function(t){e.deleteTag(t,e.selected[0])}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(e.selected[0].currentLabel))])]),e.selected.length>1?i("el-tag",{attrs:{closable:!1,size:e.collapseTagSize,type:"info","disable-transitions":""}},[i("span",{staticClass:"el-select__tags-text"},[e._v("+ "+e._s(e.selected.length-1))])]):e._e()],1):e._e(),e.collapseTags?e._e():i("transition-group",{on:{"after-leave":e.resetInputHeight}},e._l(e.selected,function(t){return i("el-tag",{key:e.getValueKey(t),attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:t.hitState,type:"info","disable-transitions":""},on:{close:function(i){e.deleteTag(i,t)}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(t.currentLabel))])])}),1),e.filterable?i("input",{directives:[{name:"model",rawName:"v-model",value:e.query,expression:"query"}],ref:"input",staticClass:"el-select__input",class:[e.selectSize?"is-"+e.selectSize:""],style:{"flex-grow":"1",width:e.inputLength/(e.inputWidth-32)+"%","max-width":e.inputWidth-42+"px"},attrs:{type:"text",disabled:e.selectDisabled,autocomplete:e.autoComplete||e.autocomplete},domProps:{value:e.query},on:{focus:e.handleFocus,blur:function(t){e.softFocus=!1},keyup:e.managePlaceholder,keydown:[e.resetInputState,function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){return"button"in t||!e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?e.deletePrevTag(t):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],compositionstart:e.handleComposition,compositionupdate:e.handleComposition,compositionend:e.handleComposition,input:[function(t){t.target.composing||(e.query=t.target.value)},e.debouncedQueryChange]}}):e._e()],1):e._e(),i("el-input",{ref:"reference",class:{"is-focus":e.visible},attrs:{type:"text",placeholder:e.currentPlaceholder,name:e.name,id:e.id,autocomplete:e.autoComplete||e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,"validate-event":!1,tabindex:e.multiple&&e.filterable?"-1":null},on:{focus:e.handleFocus,blur:e.handleBlur},nativeOn:{keyup:function(t){return e.debouncedOnInputChange(t)},keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],paste:function(t){return e.debouncedOnInputChange(t)},mouseenter:function(t){e.inputHovering=!0},mouseleave:function(t){e.inputHovering=!1}},model:{value:e.selectedLabel,callback:function(t){e.selectedLabel=t},expression:"selectedLabel"}},[e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),i("template",{slot:"suffix"},[i("i",{directives:[{name:"show",rawName:"v-show",value:!e.showClose,expression:"!showClose"}],class:["el-select__caret","el-input__icon","el-icon-"+e.iconClass]}),e.showClose?i("i",{staticClass:"el-select__caret el-input__icon el-icon-circle-close",on:{click:e.handleClearClick}}):e._e()])],2),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":e.doDestroy}},[i("el-select-menu",{directives:[{name:"show",rawName:"v-show",value:e.visible&&!1!==e.emptyText,expression:"visible && emptyText !== false"}],ref:"popper",attrs:{"append-to-body":e.popperAppendToBody}},[i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.options.length>0&&!e.loading,expression:"options.length > 0 && !loading"}],ref:"scrollbar",class:{"is-empty":!e.allowCreate&&e.query&&0===e.filteredOptionsCount},attrs:{tag:"ul","wrap-class":"el-select-dropdown__wrap","view-class":"el-select-dropdown__list"}},[e.showNewOption?i("el-option",{attrs:{value:e.query,created:""}}):e._e(),e._t("default")],2),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&0===e.options.length)?[e.$slots.empty?e._t("empty"):i("p",{staticClass:"el-select-dropdown__empty"},[e._v("\n "+e._s(e.emptyText)+"\n ")])]:e._e()],2)],1)],1)};Dt._withStripped=!0;var $t=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-select-dropdown el-popper",class:[{"is-multiple":this.$parent.multiple},this.popperClass],style:{minWidth:this.minWidth}},[this._t("default")],2)};$t._withStripped=!0;var Ot=s({name:"ElSelectDropdown",componentName:"ElSelectDropdown",mixins:[j.a],props:{placement:{default:"bottom-start"},boundariesPadding:{default:0},popperOptions:{default:function(){return{gpuAcceleration:!1}}},visibleArrow:{default:!0},appendToBody:{type:Boolean,default:!0}},data:function(){return{minWidth:""}},computed:{popperClass:function(){return this.$parent.popperClass}},watch:{"$parent.inputWidth":function(){this.minWidth=this.$parent.$el.getBoundingClientRect().width+"px"}},mounted:function(){var e=this;this.referenceElm=this.$parent.$refs.reference.$el,this.$parent.popperElm=this.popperElm=this.$el,this.$on("updatePopper",function(){e.$parent.visible&&e.updatePopper()}),this.$on("destroyPopper",this.destroyPopper)}},$t,[],!1,null,null,null);Ot.options.__file="packages/select/src/select-dropdown.vue";var Et=Ot.exports,Tt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[i("span",[e._v(e._s(e.currentLabel))])])],2)};Tt._withStripped=!0;var Pt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Mt=s({mixins:[k.a],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var i=this.select,n=i.remote,s=i.valueKey;if(!this.created&&!n){if(s&&"object"===(void 0===e?"undefined":Pt(e))&&"object"===(void 0===t?"undefined":Pt(t))&&e[s]===t[s])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var i=this.select.valueKey;return Object(m.getValueByPath)(e,i)===Object(m.getValueByPath)(t,i)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var i=this.select.valueKey;return e&&e.some(function(e){return Object(m.getValueByPath)(e,i)===Object(m.getValueByPath)(t,i)})}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(m.escapeRegexpString)(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){var e=this.select,t=e.selected,i=e.multiple?t:[t],n=this.select.cachedOptions.indexOf(this),s=i.indexOf(this);n>-1&&s<0&&this.select.cachedOptions.splice(n,1),this.select.onOptionDestroy(this.select.options.indexOf(this))}},Tt,[],!1,null,null,null);Mt.options.__file="packages/select/src/option.vue";var It=Mt.exports,Nt=i(30),jt=i.n(Nt),Ft=i(13),Lt=i(11),At=i.n(Lt),Vt=i(27),Bt=i.n(Vt),zt=s({mixins:[k.a,f.a,z()("reference"),{data:function(){return{hoverOption:-1}},computed:{optionsAllDisabled:function(){return this.options.filter(function(e){return e.visible}).every(function(e){return e.disabled})}},watch:{hoverIndex:function(e){var t=this;"number"==typeof e&&e>-1&&(this.hoverOption=this.options[e]||{}),this.options.forEach(function(e){e.hover=t.hoverOption===e})}},methods:{navigateOptions:function(e){var t=this;if(this.visible){if(0!==this.options.length&&0!==this.filteredOptionsCount&&!this.optionsAllDisabled){"next"===e?(this.hoverIndex++,this.hoverIndex===this.options.length&&(this.hoverIndex=0)):"prev"===e&&(this.hoverIndex--,this.hoverIndex<0&&(this.hoverIndex=this.options.length-1));var i=this.options[this.hoverIndex];!0!==i.disabled&&!0!==i.groupDisabled&&i.visible||this.navigateOptions(e),this.$nextTick(function(){return t.scrollToOption(t.hoverOption)})}}else this.visible=!0}}}],name:"ElSelect",componentName:"ElSelect",inject:{elForm:{default:""},elFormItem:{default:""}},provide:function(){return{select:this}},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},readonly:function(){return!this.filterable||this.multiple||!Object(m.isIE)()&&!Object(m.isEdge)()&&!this.visible},showClose:function(){var e=this.multiple?Array.isArray(this.value)&&this.value.length>0:void 0!==this.value&&null!==this.value&&""!==this.value;return this.clearable&&!this.selectDisabled&&this.inputHovering&&e},iconClass:function(){return this.remote&&this.filterable?"":this.visible?"arrow-up is-reverse":"arrow-up"},debounce:function(){return this.remote?300:0},emptyText:function(){return this.loading?this.loadingText||this.t("el.select.loading"):(!this.remote||""!==this.query||0!==this.options.length)&&(this.filterable&&this.query&&this.options.length>0&&0===this.filteredOptionsCount?this.noMatchText||this.t("el.select.noMatch"):0===this.options.length?this.noDataText||this.t("el.select.noData"):null)},showNewOption:function(){var e=this,t=this.options.filter(function(e){return!e.created}).some(function(t){return t.currentLabel===e.query});return this.filterable&&this.allowCreate&&""!==this.query&&!t},selectSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},selectDisabled:function(){return this.disabled||(this.elForm||{}).disabled},collapseTagSize:function(){return["small","mini"].indexOf(this.selectSize)>-1?"mini":"small"}},components:{ElInput:d.a,ElSelectMenu:Et,ElOption:It,ElTag:jt.a,ElScrollbar:L.a},directives:{Clickoutside:M.a},props:{name:String,id:String,value:{required:!0},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},automaticDropdown:Boolean,size:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:String,remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String,default:function(){return Object(Lt.t)("el.select.placeholder")}},defaultFirstOption:Boolean,reserveKeyword:Boolean,valueKey:{type:String,default:"value"},collapseTags:Boolean,popperAppendToBody:{type:Boolean,default:!0}},data:function(){return{options:[],cachedOptions:[],createdLabel:null,createdSelected:!1,selected:this.multiple?[]:{},inputLength:20,inputWidth:0,initialInputHeight:0,cachedPlaceHolder:"",optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:"",hoverIndex:-1,query:"",previousQuery:null,inputHovering:!1,currentPlaceholder:"",menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1}},watch:{selectDisabled:function(){var e=this;this.$nextTick(function(){e.resetInputHeight()})},placeholder:function(e){this.cachedPlaceHolder=this.currentPlaceholder=e},value:function(e,t){this.multiple&&(this.resetInputHeight(),e&&e.length>0||this.$refs.input&&""!==this.query?this.currentPlaceholder="":this.currentPlaceholder=this.cachedPlaceHolder,this.filterable&&!this.reserveKeyword&&(this.query="",this.handleQueryChange(this.query))),this.setSelected(),this.filterable&&!this.multiple&&(this.inputLength=20),Object(m.valueEquals)(e,t)||this.dispatch("ElFormItem","el.form.change",e)},visible:function(e){var t=this;e?(this.broadcast("ElSelectDropdown","updatePopper"),this.filterable&&(this.query=this.remote?"":this.selectedLabel,this.handleQueryChange(this.query),this.multiple?this.$refs.input.focus():(this.remote||(this.broadcast("ElOption","queryChange",""),this.broadcast("ElOptionGroup","queryChange")),this.selectedLabel&&(this.currentPlaceholder=this.selectedLabel,this.selectedLabel="")))):(this.broadcast("ElSelectDropdown","destroyPopper"),this.$refs.input&&this.$refs.input.blur(),this.query="",this.previousQuery=null,this.selectedLabel="",this.inputLength=20,this.menuVisibleOnFocus=!1,this.resetHoverIndex(),this.$nextTick(function(){t.$refs.input&&""===t.$refs.input.value&&0===t.selected.length&&(t.currentPlaceholder=t.cachedPlaceHolder)}),this.multiple||(this.selected&&(this.filterable&&this.allowCreate&&this.createdSelected&&this.createdLabel?this.selectedLabel=this.createdLabel:this.selectedLabel=this.selected.currentLabel,this.filterable&&(this.query=this.selectedLabel)),this.filterable&&(this.currentPlaceholder=this.cachedPlaceHolder))),this.$emit("visible-change",e)},options:function(){var e=this;if(!this.$isServer){this.$nextTick(function(){e.broadcast("ElSelectDropdown","updatePopper")}),this.multiple&&this.resetInputHeight();var t=this.$el.querySelectorAll("input");-1===[].indexOf.call(t,document.activeElement)&&this.setSelected(),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()}}},methods:{handleComposition:function(e){var t=this,i=e.target.value;if("compositionend"===e.type)this.isOnComposition=!1,this.$nextTick(function(e){return t.handleQueryChange(i)});else{var n=i[i.length-1]||"";this.isOnComposition=!Object(Re.isKorean)(n)}},handleQueryChange:function(e){var t=this;this.previousQuery===e||this.isOnComposition||(null!==this.previousQuery||"function"!=typeof this.filterMethod&&"function"!=typeof this.remoteMethod?(this.previousQuery=e,this.$nextTick(function(){t.visible&&t.broadcast("ElSelectDropdown","updatePopper")}),this.hoverIndex=-1,this.multiple&&this.filterable&&this.$nextTick(function(){var e=15*t.$refs.input.value.length+20;t.inputLength=t.collapseTags?Math.min(50,e):e,t.managePlaceholder(),t.resetInputHeight()}),this.remote&&"function"==typeof this.remoteMethod?(this.hoverIndex=-1,this.remoteMethod(e)):"function"==typeof this.filterMethod?(this.filterMethod(e),this.broadcast("ElOptionGroup","queryChange")):(this.filteredOptionsCount=this.optionsCount,this.broadcast("ElOption","queryChange",e),this.broadcast("ElOptionGroup","queryChange")),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()):this.previousQuery=e)},scrollToOption:function(e){var t=Array.isArray(e)&&e[0]?e[0].$el:e.$el;if(this.$refs.popper&&t){var i=this.$refs.popper.$el.querySelector(".el-select-dropdown__wrap");Bt()(i,t)}this.$refs.scrollbar&&this.$refs.scrollbar.handleScroll()},handleMenuEnter:function(){var e=this;this.$nextTick(function(){return e.scrollToOption(e.selected)})},emitChange:function(e){Object(m.valueEquals)(this.value,e)||this.$emit("change",e)},getOption:function(e){for(var t=void 0,i="[object object]"===Object.prototype.toString.call(e).toLowerCase(),n="[object null]"===Object.prototype.toString.call(e).toLowerCase(),s="[object undefined]"===Object.prototype.toString.call(e).toLowerCase(),r=this.cachedOptions.length-1;r>=0;r--){var o=this.cachedOptions[r];if(i?Object(m.getValueByPath)(o.value,this.valueKey)===Object(m.getValueByPath)(e,this.valueKey):o.value===e){t=o;break}}if(t)return t;var a={value:e,currentLabel:i||n||s?"":e};return this.multiple&&(a.hitState=!1),a},setSelected:function(){var e=this;if(!this.multiple){var t=this.getOption(this.value);return t.created?(this.createdLabel=t.currentLabel,this.createdSelected=!0):this.createdSelected=!1,this.selectedLabel=t.currentLabel,this.selected=t,void(this.filterable&&(this.query=this.selectedLabel))}var i=[];Array.isArray(this.value)&&this.value.forEach(function(t){i.push(e.getOption(t))}),this.selected=i,this.$nextTick(function(){e.resetInputHeight()})},handleFocus:function(e){this.softFocus?this.softFocus=!1:((this.automaticDropdown||this.filterable)&&(this.visible=!0,this.filterable&&(this.menuVisibleOnFocus=!0)),this.$emit("focus",e))},blur:function(){this.visible=!1,this.$refs.reference.blur()},handleBlur:function(e){var t=this;setTimeout(function(){t.isSilentBlur?t.isSilentBlur=!1:t.$emit("blur",e)},50),this.softFocus=!1},handleClearClick:function(e){this.deleteSelected(e)},doDestroy:function(){this.$refs.popper&&this.$refs.popper.doDestroy()},handleClose:function(){this.visible=!1},toggleLastOptionHitState:function(e){if(Array.isArray(this.selected)){var t=this.selected[this.selected.length-1];if(t)return!0===e||!1===e?(t.hitState=e,e):(t.hitState=!t.hitState,t.hitState)}},deletePrevTag:function(e){if(e.target.value.length<=0&&!this.toggleLastOptionHitState()){var t=this.value.slice();t.pop(),this.$emit("input",t),this.emitChange(t)}},managePlaceholder:function(){""!==this.currentPlaceholder&&(this.currentPlaceholder=this.$refs.input.value?"":this.cachedPlaceHolder)},resetInputState:function(e){8!==e.keyCode&&this.toggleLastOptionHitState(!1),this.inputLength=15*this.$refs.input.value.length+20,this.resetInputHeight()},resetInputHeight:function(){var e=this;this.collapseTags&&!this.filterable||this.$nextTick(function(){if(e.$refs.reference){var t=e.$refs.reference.$el.childNodes,i=[].filter.call(t,function(e){return"INPUT"===e.tagName})[0],n=e.$refs.tags,s=e.initialInputHeight||40;i.style.height=0===e.selected.length?s+"px":Math.max(n?n.clientHeight+(n.clientHeight>s?6:0):0,s)+"px",e.visible&&!1!==e.emptyText&&e.broadcast("ElSelectDropdown","updatePopper")}})},resetHoverIndex:function(){var e=this;setTimeout(function(){e.multiple?e.selected.length>0?e.hoverIndex=Math.min.apply(null,e.selected.map(function(t){return e.options.indexOf(t)})):e.hoverIndex=-1:e.hoverIndex=e.options.indexOf(e.selected)},300)},handleOptionSelect:function(e,t){var i=this;if(this.multiple){var n=(this.value||[]).slice(),s=this.getValueIndex(n,e.value);s>-1?n.splice(s,1):(this.multipleLimit<=0||n.length0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if("[object object]"===Object.prototype.toString.call(t).toLowerCase()){var i=this.valueKey,n=-1;return e.some(function(e,s){return Object(m.getValueByPath)(e,i)===Object(m.getValueByPath)(t,i)&&(n=s,!0)}),n}return e.indexOf(t)},toggleMenu:function(){this.selectDisabled||(this.menuVisibleOnFocus?this.menuVisibleOnFocus=!1:this.visible=!this.visible,this.visible&&(this.$refs.input||this.$refs.reference).focus())},selectOption:function(){this.visible?this.options[this.hoverIndex]&&this.handleOptionSelect(this.options[this.hoverIndex]):this.toggleMenu()},deleteSelected:function(e){e.stopPropagation();var t=this.multiple?[]:"";this.$emit("input",t),this.emitChange(t),this.visible=!1,this.$emit("clear")},deleteTag:function(e,t){var i=this.selected.indexOf(t);if(i>-1&&!this.selectDisabled){var n=this.value.slice();n.splice(i,1),this.$emit("input",n),this.emitChange(n),this.$emit("remove-tag",t.value)}e.stopPropagation()},onInputChange:function(){this.filterable&&this.query!==this.selectedLabel&&(this.query=this.selectedLabel,this.handleQueryChange(this.query))},onOptionDestroy:function(e){e>-1&&(this.optionsCount--,this.filteredOptionsCount--,this.options.splice(e,1))},resetInputWidth:function(){this.inputWidth=this.$refs.reference.$el.getBoundingClientRect().width},handleResize:function(){this.resetInputWidth(),this.multiple&&this.resetInputHeight()},checkDefaultFirstOption:function(){this.hoverIndex=-1;for(var e=!1,t=this.options.length-1;t>=0;t--)if(this.options[t].created){e=!0,this.hoverIndex=t;break}if(!e)for(var i=0;i!==this.options.length;++i){var n=this.options[i];if(this.query){if(!n.disabled&&!n.groupDisabled&&n.visible){this.hoverIndex=i;break}}else if(n.itemSelected){this.hoverIndex=i;break}}},getValueKey:function(e){return"[object object]"!==Object.prototype.toString.call(e.value).toLowerCase()?e.value:Object(m.getValueByPath)(e.value,this.valueKey)}},created:function(){var e=this;this.cachedPlaceHolder=this.currentPlaceholder=this.placeholder,this.multiple&&!Array.isArray(this.value)&&this.$emit("input",[]),!this.multiple&&Array.isArray(this.value)&&this.$emit("input",""),this.debouncedOnInputChange=T()(this.debounce,function(){e.onInputChange()}),this.debouncedQueryChange=T()(this.debounce,function(t){e.handleQueryChange(t.target.value)}),this.$on("handleOptionClick",this.handleOptionSelect),this.$on("setSelected",this.setSelected)},mounted:function(){var e=this;this.multiple&&Array.isArray(this.value)&&this.value.length>0&&(this.currentPlaceholder=""),Object(Ft.addResizeListener)(this.$el,this.handleResize);var t=this.$refs.reference;if(t&&t.$el){var i=t.$el.querySelector("input");this.initialInputHeight=i.getBoundingClientRect().height||{medium:36,small:32,mini:28}[this.selectSize]}this.remote&&this.multiple&&this.resetInputHeight(),this.$nextTick(function(){t&&t.$el&&(e.inputWidth=t.$el.getBoundingClientRect().width)}),this.setSelected()},beforeDestroy:function(){this.$el&&this.handleResize&&Object(Ft.removeResizeListener)(this.$el,this.handleResize)}},Dt,[],!1,null,null,null);zt.options.__file="packages/select/src/select.vue";var Rt=zt.exports;Rt.install=function(e){e.component(Rt.name,Rt)};var Ht=Rt;It.install=function(e){e.component(It.name,It)};var Wt=It,qt=function(){var e=this.$createElement,t=this._self._c||e;return t("ul",{directives:[{name:"show",rawName:"v-show",value:this.visible,expression:"visible"}],staticClass:"el-select-group__wrap"},[t("li",{staticClass:"el-select-group__title"},[this._v(this._s(this.label))]),t("li",[t("ul",{staticClass:"el-select-group"},[this._t("default")],2)])])};qt._withStripped=!0;var Yt=s({mixins:[k.a],name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:{type:Boolean,default:!1}},data:function(){return{visible:!0}},watch:{disabled:function(e){this.broadcast("ElOption","handleGroupDisabled",e)}},methods:{queryChange:function(){this.visible=this.$children&&Array.isArray(this.$children)&&this.$children.some(function(e){return!0===e.visible})}},created:function(){this.$on("queryChange",this.queryChange)},mounted:function(){this.disabled&&this.broadcast("ElOption","handleGroupDisabled",this.disabled)}},qt,[],!1,null,null,null);Yt.options.__file="packages/select/src/option-group.vue";var Kt=Yt.exports;Kt.install=function(e){e.component(Kt.name,Kt)};var Ut=Kt,Gt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("button",{staticClass:"el-button",class:[e.type?"el-button--"+e.type:"",e.buttonSize?"el-button--"+e.buttonSize:"",{"is-disabled":e.buttonDisabled,"is-loading":e.loading,"is-plain":e.plain,"is-round":e.round,"is-circle":e.circle}],attrs:{disabled:e.buttonDisabled||e.loading,autofocus:e.autofocus,type:e.nativeType},on:{click:e.handleClick}},[e.loading?i("i",{staticClass:"el-icon-loading"}):e._e(),e.icon&&!e.loading?i("i",{class:e.icon}):e._e(),e.$slots.default?i("span",[e._t("default")],2):e._e()])};Gt._withStripped=!0;var Xt=s({name:"ElButton",inject:{elForm:{default:""},elFormItem:{default:""}},props:{type:{type:String,default:"default"},size:String,icon:{type:String,default:""},nativeType:{type:String,default:"button"},loading:Boolean,disabled:Boolean,plain:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},buttonSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},buttonDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},methods:{handleClick:function(e){this.$emit("click",e)}}},Gt,[],!1,null,null,null);Xt.options.__file="packages/button/src/button.vue";var Qt=Xt.exports;Qt.install=function(e){e.component(Qt.name,Qt)};var Jt=Qt,Zt=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-button-group"},[this._t("default")],2)};Zt._withStripped=!0;var ei=s({name:"ElButtonGroup"},Zt,[],!1,null,null,null);ei.options.__file="packages/button/src/button-group.vue";var ti=ei.exports;ti.install=function(e){e.component(ti.name,ti)};var ii=ti,ni=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-table",class:[{"el-table--fit":e.fit,"el-table--striped":e.stripe,"el-table--border":e.border||e.isGroup,"el-table--hidden":e.isHidden,"el-table--group":e.isGroup,"el-table--fluid-height":e.maxHeight,"el-table--scrollable-x":e.layout.scrollX,"el-table--scrollable-y":e.layout.scrollY,"el-table--enable-row-hover":!e.store.states.isComplex,"el-table--enable-row-transition":0!==(e.store.states.data||[]).length&&(e.store.states.data||[]).length<100},e.tableSize?"el-table--"+e.tableSize:""],on:{mouseleave:function(t){e.handleMouseLeave(t)}}},[i("div",{ref:"hiddenColumns",staticClass:"hidden-columns"},[e._t("default")],2),e.showHeader?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleHeaderFooterMousewheel,expression:"handleHeaderFooterMousewheel"}],ref:"headerWrapper",staticClass:"el-table__header-wrapper"},[i("table-header",{ref:"tableHeader",style:{width:e.layout.bodyWidth?e.layout.bodyWidth+"px":""},attrs:{store:e.store,border:e.border,"default-sort":e.defaultSort}})],1):e._e(),i("div",{ref:"bodyWrapper",staticClass:"el-table__body-wrapper",class:[e.layout.scrollX?"is-scrolling-"+e.scrollPosition:"is-scrolling-none"],style:[e.bodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{context:e.context,store:e.store,stripe:e.stripe,"row-class-name":e.rowClassName,"row-style":e.rowStyle,highlight:e.highlightCurrentRow}}),e.data&&0!==e.data.length?e._e():i("div",{ref:"emptyBlock",staticClass:"el-table__empty-block",style:e.emptyBlockStyle},[i("span",{staticClass:"el-table__empty-text"},[e._t("empty",[e._v(e._s(e.emptyText||e.t("el.table.emptyText")))])],2)]),e.$slots.append?i("div",{ref:"appendWrapper",staticClass:"el-table__append-wrapper"},[e._t("append")],2):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"},{name:"mousewheel",rawName:"v-mousewheel",value:e.handleHeaderFooterMousewheel,expression:"handleHeaderFooterMousewheel"}],ref:"footerWrapper",staticClass:"el-table__footer-wrapper"},[i("table-footer",{style:{width:e.layout.bodyWidth?e.layout.bodyWidth+"px":""},attrs:{store:e.store,border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,"default-sort":e.defaultSort}})],1):e._e(),e.fixedColumns.length>0?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleFixedMousewheel,expression:"handleFixedMousewheel"}],ref:"fixedWrapper",staticClass:"el-table__fixed",style:[{width:e.layout.fixedWidth?e.layout.fixedWidth+"px":""},e.fixedHeight]},[e.showHeader?i("div",{ref:"fixedHeaderWrapper",staticClass:"el-table__fixed-header-wrapper"},[i("table-header",{ref:"fixedTableHeader",style:{width:e.bodyWidth},attrs:{fixed:"left",border:e.border,store:e.store}})],1):e._e(),i("div",{ref:"fixedBodyWrapper",staticClass:"el-table__fixed-body-wrapper",style:[{top:e.layout.headerHeight+"px"},e.fixedBodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{fixed:"left",store:e.store,stripe:e.stripe,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"row-style":e.rowStyle}}),e.$slots.append?i("div",{staticClass:"el-table__append-gutter",style:{height:e.layout.appendHeight+"px"}}):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"}],ref:"fixedFooterWrapper",staticClass:"el-table__fixed-footer-wrapper"},[i("table-footer",{style:{width:e.bodyWidth},attrs:{fixed:"left",border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,store:e.store}})],1):e._e()]):e._e(),e.rightFixedColumns.length>0?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleFixedMousewheel,expression:"handleFixedMousewheel"}],ref:"rightFixedWrapper",staticClass:"el-table__fixed-right",style:[{width:e.layout.rightFixedWidth?e.layout.rightFixedWidth+"px":"",right:e.layout.scrollY?(e.border?e.layout.gutterWidth:e.layout.gutterWidth||0)+"px":""},e.fixedHeight]},[e.showHeader?i("div",{ref:"rightFixedHeaderWrapper",staticClass:"el-table__fixed-header-wrapper"},[i("table-header",{ref:"rightFixedTableHeader",style:{width:e.bodyWidth},attrs:{fixed:"right",border:e.border,store:e.store}})],1):e._e(),i("div",{ref:"rightFixedBodyWrapper",staticClass:"el-table__fixed-body-wrapper",style:[{top:e.layout.headerHeight+"px"},e.fixedBodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{fixed:"right",store:e.store,stripe:e.stripe,"row-class-name":e.rowClassName,"row-style":e.rowStyle,highlight:e.highlightCurrentRow}}),e.$slots.append?i("div",{staticClass:"el-table__append-gutter",style:{height:e.layout.appendHeight+"px"}}):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"}],ref:"rightFixedFooterWrapper",staticClass:"el-table__fixed-footer-wrapper"},[i("table-footer",{style:{width:e.bodyWidth},attrs:{fixed:"right",border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,store:e.store}})],1):e._e()]):e._e(),e.rightFixedColumns.length>0?i("div",{ref:"rightFixedPatch",staticClass:"el-table__fixed-right-patch",style:{width:e.layout.scrollY?e.layout.gutterWidth+"px":"0",height:e.layout.headerHeight+"px"}}):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:e.resizeProxyVisible,expression:"resizeProxyVisible"}],ref:"resizeProxy",staticClass:"el-table__column-resize-proxy"})])};ni._withStripped=!0;var si=i(16),ri=i.n(si),oi=i(35),ai=i(38),li=i.n(ai),ci="undefined"!=typeof navigator&&navigator.userAgent.toLowerCase().indexOf("firefox")>-1,ui={bind:function(e,t){!function(e,t){e&&e.addEventListener&&e.addEventListener(ci?"DOMMouseScroll":"mousewheel",function(e){var i=li()(e);t&&t.apply(this,[e,i])})}(e,t.value)}},hi=i(6),di=i.n(hi),pi="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},fi=function(e){for(var t=e.target;t&&"HTML"!==t.tagName.toUpperCase();){if("TD"===t.tagName.toUpperCase())return t;t=t.parentNode}return null},mi=function(e){return null!==e&&"object"===(void 0===e?"undefined":pi(e))},vi=function(e,t,i,n,s){if(!t&&!n&&(!s||Array.isArray(s)&&!s.length))return e;i="string"==typeof i?"descending"===i?-1:1:i&&i<0?-1:1;var r=n?null:function(i,n){return s?(Array.isArray(s)||(s=[s]),s.map(function(t){return"string"==typeof t?Object(m.getValueByPath)(i,t):t(i,n,e)})):("$key"!==t&&mi(i)&&"$value"in i&&(i=i.$value),[mi(i)?Object(m.getValueByPath)(i,t):i])};return e.map(function(e,t){return{value:e,index:t,key:r?r(e,t):null}}).sort(function(e,t){var s=function(e,t){if(n)return n(e.value,t.value);for(var i=0,s=e.key.length;it.key[i])return 1}return 0}(e,t);return s||(s=e.index-t.index),s*i}).map(function(e){return e.value})},gi=function(e,t){var i=null;return e.columns.forEach(function(e){e.id===t&&(i=e)}),i},bi=function(e,t){var i=(t.className||"").match(/el-table_[^\s]+/gm);return i?gi(e,i[0]):null},yi=function(e,t){if(!e)throw new Error("row is required when get row identity");if("string"==typeof t){if(t.indexOf(".")<0)return e[t];for(var i=t.split("."),n=e,s=0;s2&&void 0!==arguments[2]?arguments[2]:"children",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"hasChildren",s=function(e){return!(Array.isArray(e)&&e.length)};e.forEach(function(e){if(e[n])t(e,null,0);else{var r=e[i];s(r)||function e(r,o,a){t(r,o,a),o.forEach(function(r){if(r[n])t(r,null,a+1);else{var o=r[i];s(o)||e(r,o,a+1)}})}(e,r,0)}})}var Di={data:function(){return{states:{defaultExpandAll:!1,expandRows:[]}}},methods:{updateExpandRows:function(){var e=this.states,t=e.data,i=void 0===t?[]:t,n=e.rowKey,s=e.defaultExpandAll,r=e.expandRows;if(s)this.states.expandRows=i.slice();else if(n){var o=_i(r,n);this.states.expandRows=i.reduce(function(e,t){var i=yi(t,n);return o[i]&&e.push(t),e},[])}else this.states.expandRows=[]},toggleRowExpansion:function(e,t){ki(this.states.expandRows,e,t)&&(this.table.$emit("expand-change",e,this.states.expandRows.slice()),this.scheduleLayout())},setExpandRowKeys:function(e){this.assertRowKey();var t=this.states,i=t.data,n=t.rowKey,s=_i(i,n);this.states.expandRows=e.reduce(function(e,t){var i=s[t];return i&&e.push(i.row),e},[])},isRowExpanded:function(e){var t=this.states,i=t.expandRows,n=void 0===i?[]:i,s=t.rowKey;return s?!!_i(n,s)[yi(e,s)]:-1!==n.indexOf(e)}}},$i={data:function(){return{states:{_currentRowKey:null,currentRow:null}}},methods:{setCurrentRowKey:function(e){this.assertRowKey(),this.states._currentRowKey=e,this.setCurrentRowByKey(e)},restoreCurrentRowKey:function(){this.states._currentRowKey=null},setCurrentRowByKey:function(e){var t=this.states,i=t.data,n=void 0===i?[]:i,s=t.rowKey,r=null;s&&(r=Object(m.arrayFind)(n,function(t){return yi(t,s)===e})),t.currentRow=r},updateCurrentRow:function(e){var t=this.states,i=this.table,n=t.currentRow;if(e&&e!==n)return t.currentRow=e,void i.$emit("current-change",e,n);!e&&n&&(t.currentRow=null,i.$emit("current-change",null,n))},updateCurrentRowData:function(){var e=this.states,t=this.table,i=e.rowKey,n=e._currentRowKey,s=e.data||[],r=e.currentRow;if(-1===s.indexOf(r)&&r){if(i){var o=yi(r,i);this.setCurrentRowByKey(o)}else e.currentRow=null;null===e.currentRow&&t.$emit("current-change",null,r)}else n&&(this.setCurrentRowByKey(n),this.restoreCurrentRowKey())}}},Oi=Object.assign||function(e){for(var t=1;t0&&t[0]&&"selection"===t[0].type&&!t[0].fixed&&(t[0].fixed=!0,e.fixedColumns.unshift(t[0]));var i=t.filter(function(e){return!e.fixed});e.originColumns=[].concat(e.fixedColumns).concat(i).concat(e.rightFixedColumns);var n=Ti(i),s=Ti(e.fixedColumns),r=Ti(e.rightFixedColumns);e.leafColumnsLength=n.length,e.fixedLeafColumnsLength=s.length,e.rightFixedLeafColumnsLength=r.length,e.columns=[].concat(s).concat(n).concat(r),e.isComplex=e.fixedColumns.length>0||e.rightFixedColumns.length>0},scheduleLayout:function(e){e&&this.updateColumns(),this.table.debouncedUpdateLayout()},isSelected:function(e){var t=this.states.selection;return(void 0===t?[]:t).indexOf(e)>-1},clearSelection:function(){var e=this.states;e.isAllSelected=!1,e.selection.length&&(e.selection=[],this.table.$emit("selection-change",[]))},cleanSelection:function(){var e=this.states,t=e.data,i=e.rowKey,n=e.selection,s=void 0;if(i){s=[];var r=_i(n,i),o=_i(t,i);for(var a in r)r.hasOwnProperty(a)&&!o[a]&&s.push(r[a].row)}else s=n.filter(function(e){return-1===t.indexOf(e)});if(s.length){var l=n.filter(function(e){return-1===s.indexOf(e)});e.selection=l,this.table.$emit("selection-change",l.slice())}},toggleRowSelection:function(e,t){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(ki(this.states.selection,e,t)){var n=(this.states.selection||[]).slice();i&&this.table.$emit("select",n,e),this.table.$emit("selection-change",n)}},_toggleAllSelection:function(){var e=this.states,t=e.data,i=void 0===t?[]:t,n=e.selection,s=e.selectOnIndeterminate?!e.isAllSelected:!(e.isAllSelected||n.length);e.isAllSelected=s;var r=!1;i.forEach(function(t,i){e.selectable?e.selectable.call(null,t,i)&&ki(n,t,s)&&(r=!0):ki(n,t,s)&&(r=!0)}),r&&this.table.$emit("selection-change",n?n.slice():[]),this.table.$emit("select-all",n)},updateSelectionByRowKey:function(){var e=this.states,t=e.selection,i=e.rowKey,n=e.data,s=_i(t,i);n.forEach(function(e){var n=yi(e,i),r=s[n];r&&(t[r.index]=e)})},updateAllSelected:function(){var e=this.states,t=e.selection,i=e.rowKey,n=e.selectable,s=e.data||[];if(0!==s.length){var r=void 0;i&&(r=_i(t,i));for(var o=function(e){return r?!!r[yi(e,i)]:-1!==t.indexOf(e)},a=!0,l=0,c=0,u=s.length;c1?i-1:0),s=1;sthis.bodyHeight;return this.scrollY=n,i!==n}return!1},e.prototype.setHeight=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"height";if(!di.a.prototype.$isServer){var n=this.table.$el;if(e=wi(e),this.height=e,!n&&(e||0===e))return di.a.nextTick(function(){return t.setHeight(e,i)});"number"==typeof e?(n.style[i]=e+"px",this.updateElsHeight()):"string"==typeof e&&(n.style[i]=e,this.updateElsHeight())}},e.prototype.setMaxHeight=function(e){this.setHeight(e,"max-height")},e.prototype.getFlattenColumns=function(){var e=[];return this.table.columns.forEach(function(t){t.isColumnGroup?e.push.apply(e,t.columns):e.push(t)}),e},e.prototype.updateElsHeight=function(){var e=this;if(!this.table.$ready)return di.a.nextTick(function(){return e.updateElsHeight()});var t=this.table.$refs,i=t.headerWrapper,n=t.appendWrapper,s=t.footerWrapper;if(this.appendHeight=n?n.offsetHeight:0,!this.showHeader||i){var r=i?i.querySelector(".el-table__header tr"):null,o=this.headerDisplayNone(r),a=this.headerHeight=this.showHeader?i.offsetHeight:0;if(this.showHeader&&!o&&i.offsetWidth>0&&(this.table.columns||[]).length>0&&a<2)return di.a.nextTick(function(){return e.updateElsHeight()});var l=this.tableHeight=this.table.$el.clientHeight,c=this.footerHeight=s?s.offsetHeight:0;null!==this.height&&(this.bodyHeight=l-a-c+(s?1:0)),this.fixedBodyHeight=this.scrollX?this.bodyHeight-this.gutterWidth:this.bodyHeight;var u=!(this.store.states.data&&this.store.states.data.length);this.viewportHeight=this.scrollX?l-(u?0:this.gutterWidth):l,this.updateScrollY(),this.notifyObservers("scrollable")}},e.prototype.headerDisplayNone=function(e){if(!e)return!0;for(var t=e;"DIV"!==t.tagName;){if("none"===getComputedStyle(t).display)return!0;t=t.parentElement}return!1},e.prototype.updateColumnsWidth=function(){if(!di.a.prototype.$isServer){var e=this.fit,t=this.table.$el.clientWidth,i=0,n=this.getFlattenColumns(),s=n.filter(function(e){return"number"!=typeof e.width});if(n.forEach(function(e){"number"==typeof e.width&&e.realWidth&&(e.realWidth=null)}),s.length>0&&e){n.forEach(function(e){i+=e.width||e.minWidth||80});var r=this.scrollY?this.gutterWidth:0;if(i<=t-r){this.scrollX=!1;var o=t-r-i;if(1===s.length)s[0].realWidth=(s[0].minWidth||80)+o;else{var a=o/s.reduce(function(e,t){return e+(t.minWidth||80)},0),l=0;s.forEach(function(e,t){if(0!==t){var i=Math.floor((e.minWidth||80)*a);l+=i,e.realWidth=(e.minWidth||80)+i}}),s[0].realWidth=(s[0].minWidth||80)+o-l}}else this.scrollX=!0,s.forEach(function(e){e.realWidth=e.minWidth});this.bodyWidth=Math.max(i,t),this.table.resizeState.width=this.bodyWidth}else n.forEach(function(e){e.width||e.minWidth?e.realWidth=e.width||e.minWidth:e.realWidth=80,i+=e.realWidth}),this.scrollX=i>t,this.bodyWidth=i;var c=this.store.states.fixedColumns;if(c.length>0){var u=0;c.forEach(function(e){u+=e.realWidth||e.width}),this.fixedWidth=u}var h=this.store.states.rightFixedColumns;if(h.length>0){var d=0;h.forEach(function(e){d+=e.realWidth||e.width}),this.rightFixedWidth=d}this.notifyObservers("columns")}},e.prototype.addObserver=function(e){this.observers.push(e)},e.prototype.removeObserver=function(e){var t=this.observers.indexOf(e);-1!==t&&this.observers.splice(t,1)},e.prototype.notifyObservers=function(e){var t=this;this.observers.forEach(function(i){switch(e){case"columns":i.onColumnsChange(t);break;case"scrollable":i.onScrollableChange(t);break;default:throw new Error("Table Layout don't have event "+e+".")}})},e}(),Li={created:function(){this.tableLayout.addObserver(this)},destroyed:function(){this.tableLayout.removeObserver(this)},computed:{tableLayout:function(){var e=this.layout;if(!e&&this.table&&(e=this.table.layout),!e)throw new Error("Can not find table layout.");return e}},mounted:function(){this.onColumnsChange(this.tableLayout),this.onScrollableChange(this.tableLayout)},updated:function(){this.__updated__||(this.onColumnsChange(this.tableLayout),this.onScrollableChange(this.tableLayout),this.__updated__=!0)},methods:{onColumnsChange:function(e){var t=this.$el.querySelectorAll("colgroup > col");if(t.length){var i={};e.getFlattenColumns().forEach(function(e){i[e.id]=e});for(var n=0,s=t.length;n col[name=gutter]"),i=0,n=t.length;i=this.leftFixedLeafCount:"right"===this.fixed?e=this.columnsCount-this.rightFixedLeafCount},getSpan:function(e,t,i,n){var s=1,r=1,o=this.table.spanMethod;if("function"==typeof o){var a=o({row:e,column:t,rowIndex:i,columnIndex:n});Array.isArray(a)?(s=a[0],r=a[1]):"object"===(void 0===a?"undefined":Ai(a))&&(s=a.rowspan,r=a.colspan)}return{rowspan:s,colspan:r}},getRowStyle:function(e,t){var i=this.table.rowStyle;return"function"==typeof i?i.call(null,{row:e,rowIndex:t}):i||null},getRowClass:function(e,t){var i=["el-table__row"];this.table.highlightCurrentRow&&e===this.store.states.currentRow&&i.push("current-row"),this.stripe&&t%2==1&&i.push("el-table__row--striped");var n=this.table.rowClassName;return"string"==typeof n?i.push(n):"function"==typeof n&&i.push(n.call(null,{row:e,rowIndex:t})),this.store.states.expandRows.indexOf(e)>-1&&i.push("expanded"),i},getCellStyle:function(e,t,i,n){var s=this.table.cellStyle;return"function"==typeof s?s.call(null,{rowIndex:e,columnIndex:t,row:i,column:n}):s},getCellClass:function(e,t,i,n){var s=[n.id,n.align,n.className];this.isColumnHidden(t)&&s.push("is-hidden");var r=this.table.cellClassName;return"string"==typeof r?s.push(r):"function"==typeof r&&s.push(r.call(null,{rowIndex:e,columnIndex:t,row:i,column:n})),s.join(" ")},getColspanRealWidth:function(e,t,i){return t<1?e[i].realWidth:e.map(function(e){return e.realWidth}).slice(i,i+t).reduce(function(e,t){return e+t},-1)},handleCellMouseEnter:function(e,t){var i=this.table,n=fi(e);if(n){var s=bi(i,n),r=i.hoverState={cell:n,column:s,row:t};i.$emit("cell-mouse-enter",r.row,r.column,r.cell,e)}var o=e.target.querySelector(".cell");if(Object(fe.hasClass)(o,"el-tooltip")&&o.childNodes.length){var a=document.createRange();if(a.setStart(o,0),a.setEnd(o,o.childNodes.length),(a.getBoundingClientRect().width+((parseInt(Object(fe.getStyle)(o,"paddingLeft"),10)||0)+(parseInt(Object(fe.getStyle)(o,"paddingRight"),10)||0))>o.offsetWidth||o.scrollWidth>o.offsetWidth)&&this.$refs.tooltip){var l=this.$refs.tooltip;this.tooltipContent=n.innerText||n.textContent,l.referenceElm=n,l.$refs.popper&&(l.$refs.popper.style.display="none"),l.doDestroy(),l.setExpectedState(!0),this.activateTooltip(l)}}},handleCellMouseLeave:function(e){var t=this.$refs.tooltip;if(t&&(t.setExpectedState(!1),t.handleClosePopper()),fi(e)){var i=this.table.hoverState||{};this.table.$emit("cell-mouse-leave",i.row,i.column,i.cell,e)}},handleMouseEnter:T()(30,function(e){this.store.commit("setHoverRow",e)}),handleMouseLeave:T()(30,function(){this.store.commit("setHoverRow",null)}),handleContextMenu:function(e,t){this.handleEvent(e,t,"contextmenu")},handleDoubleClick:function(e,t){this.handleEvent(e,t,"dblclick")},handleClick:function(e,t){this.store.commit("setCurrentRow",t),this.handleEvent(e,t,"click")},handleEvent:function(e,t,i){var n=this.table,s=fi(e),r=void 0;s&&(r=bi(n,s))&&n.$emit("cell-"+i,t,r,s,e),n.$emit("row-"+i,t,r,e)},rowRender:function(e,t,i){var n=this,s=this.$createElement,r=this.treeIndent,o=this.columns,a=this.firstDefaultColumnIndex,l=o.map(function(e,t){return n.isColumnHidden(t)}),c=this.getRowClass(e,t),u=!0;return i&&(c.push("el-table__row--level-"+i.level),u=i.display),s("tr",{style:[u?null:{display:"none"},this.getRowStyle(e,t)],class:c,key:this.getKeyOfRow(e,t),on:{dblclick:function(t){return n.handleDoubleClick(t,e)},click:function(t){return n.handleClick(t,e)},contextmenu:function(t){return n.handleContextMenu(t,e)},mouseenter:function(e){return n.handleMouseEnter(t)},mouseleave:this.handleMouseLeave}},[o.map(function(c,u){var h=n.getSpan(e,c,t,u),d=h.rowspan,p=h.colspan;if(!d||!p)return null;var f=Vi({},c);f.realWidth=n.getColspanRealWidth(o,p,u);var m={store:n.store,_self:n.context||n.table.$vnode.context,column:f,row:e,$index:t};return u===a&&i&&(m.treeNode={indent:i.level*r,level:i.level},"boolean"==typeof i.expanded&&(m.treeNode.expanded=i.expanded,"loading"in i&&(m.treeNode.loading=i.loading),"noLazyChildren"in i&&(m.treeNode.noLazyChildren=i.noLazyChildren))),s("td",{style:n.getCellStyle(t,u,e,c),class:n.getCellClass(t,u,e,c),attrs:{rowspan:d,colspan:p},on:{mouseenter:function(t){return n.handleCellMouseEnter(t,e)},mouseleave:n.handleCellMouseLeave}},[c.renderCell.call(n._renderProxy,n.$createElement,m,l[u])])})])},wrappedRowRender:function(e,t){var i=this,n=this.$createElement,s=this.store,r=s.isRowExpanded,o=s.assertRowKey,a=s.states,l=a.treeData,c=a.lazyTreeNodeMap,u=a.childrenColumnName,h=a.rowKey;if(this.hasExpandColumn&&r(e)){var d=this.table.renderExpanded,p=this.rowRender(e,t);return d?[[p,n("tr",{key:"expanded-row__"+p.key},[n("td",{attrs:{colspan:this.columnsCount},class:"el-table__expanded-cell"},[d(this.$createElement,{row:e,$index:t,store:this.store})])])]]:(console.error("[Element Error]renderExpanded is required."),p)}if(Object.keys(l).length){o();var f=yi(e,h),m=l[f],v=null;m&&(v={expanded:m.expanded,level:m.level,display:!0},"boolean"==typeof m.lazy&&("boolean"==typeof m.loaded&&m.loaded&&(v.noLazyChildren=!(m.children&&m.children.length)),v.loading=m.loading));var g=[this.rowRender(e,t,v)];if(m){var b=0;m.display=!0,function e(n,s){n&&n.length&&s&&n.forEach(function(n){var r={display:s.display&&s.expanded,level:s.level+1},o=yi(n,h);if(void 0===o||null===o)throw new Error("for nested data item, row-key is required.");if((m=Vi({},l[o]))&&(r.expanded=m.expanded,m.level=m.level||r.level,m.display=!(!m.expanded||!r.display),"boolean"==typeof m.lazy&&("boolean"==typeof m.loaded&&m.loaded&&(r.noLazyChildren=!(m.children&&m.children.length)),r.loading=m.loading)),b++,g.push(i.rowRender(n,t+b,r)),m){var a=c[o]||n[u];e(a,m)}})}(c[f]||e[u],m)}return g}return this.rowRender(e,t)}}},zi=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"}},[e.multiple?i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleOutsideClick,expression:"handleOutsideClick"},{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-table-filter"},[i("div",{staticClass:"el-table-filter__content"},[i("el-scrollbar",{attrs:{"wrap-class":"el-table-filter__wrap"}},[i("el-checkbox-group",{staticClass:"el-table-filter__checkbox-group",model:{value:e.filteredValue,callback:function(t){e.filteredValue=t},expression:"filteredValue"}},e._l(e.filters,function(t){return i("el-checkbox",{key:t.value,attrs:{label:t.value}},[e._v(e._s(t.text))])}),1)],1)],1),i("div",{staticClass:"el-table-filter__bottom"},[i("button",{class:{"is-disabled":0===e.filteredValue.length},attrs:{disabled:0===e.filteredValue.length},on:{click:e.handleConfirm}},[e._v(e._s(e.t("el.table.confirmFilter")))]),i("button",{on:{click:e.handleReset}},[e._v(e._s(e.t("el.table.resetFilter")))])])]):i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleOutsideClick,expression:"handleOutsideClick"},{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-table-filter"},[i("ul",{staticClass:"el-table-filter__list"},[i("li",{staticClass:"el-table-filter__list-item",class:{"is-active":void 0===e.filterValue||null===e.filterValue},on:{click:function(t){e.handleSelect(null)}}},[e._v(e._s(e.t("el.table.clearFilter")))]),e._l(e.filters,function(t){return i("li",{key:t.value,staticClass:"el-table-filter__list-item",class:{"is-active":e.isActive(t)},attrs:{label:t.value},on:{click:function(i){e.handleSelect(t.value)}}},[e._v(e._s(t.text))])})],2)])])};zi._withStripped=!0;var Ri=[];!di.a.prototype.$isServer&&document.addEventListener("click",function(e){Ri.forEach(function(t){var i=e.target;t&&t.$el&&(i===t.$el||t.$el.contains(i)||t.handleOutsideClick&&t.handleOutsideClick(e))})});var Hi=function(e){e&&Ri.push(e)},Wi=function(e){-1!==Ri.indexOf(e)&&Ri.splice(e,1)},qi=i(32),Yi=i.n(qi),Ki=s({name:"ElTableFilterPanel",mixins:[j.a,f.a],directives:{Clickoutside:M.a},components:{ElCheckbox:ri.a,ElCheckboxGroup:Yi.a,ElScrollbar:L.a},props:{placement:{type:String,default:"bottom-end"}},methods:{isActive:function(e){return e.value===this.filterValue},handleOutsideClick:function(){var e=this;setTimeout(function(){e.showPopper=!1},16)},handleConfirm:function(){this.confirmFilter(this.filteredValue),this.handleOutsideClick()},handleReset:function(){this.filteredValue=[],this.confirmFilter(this.filteredValue),this.handleOutsideClick()},handleSelect:function(e){this.filterValue=e,void 0!==e&&null!==e?this.confirmFilter(this.filteredValue):this.confirmFilter([]),this.handleOutsideClick()},confirmFilter:function(e){this.table.store.commit("filterChange",{column:this.column,values:e}),this.table.store.updateAllSelected()}},data:function(){return{table:null,cell:null,column:null}},computed:{filters:function(){return this.column&&this.column.filters},filterValue:{get:function(){return(this.column.filteredValue||[])[0]},set:function(e){this.filteredValue&&(void 0!==e&&null!==e?this.filteredValue.splice(0,1,e):this.filteredValue.splice(0,1))}},filteredValue:{get:function(){return this.column&&this.column.filteredValue||[]},set:function(e){this.column&&(this.column.filteredValue=e)}},multiple:function(){return!this.column||this.column.filterMultiple}},mounted:function(){var e=this;this.popperElm=this.$el,this.referenceElm=this.cell,this.table.bodyWrapper.addEventListener("scroll",function(){e.updatePopper()}),this.$watch("showPopper",function(t){e.column&&(e.column.filterOpened=t),t?Hi(e):Wi(e)})},watch:{showPopper:function(e){!0===e&&parseInt(this.popperJS._popper.style.zIndex,10)1;return s&&(this.$parent.isGroup=!0),e("table",{class:"el-table__header",attrs:{cellspacing:"0",cellpadding:"0",border:"0"}},[e("colgroup",[this.columns.map(function(t){return e("col",{attrs:{name:t.id},key:t.id})}),this.hasGutter?e("col",{attrs:{name:"gutter"}}):""]),e("thead",{class:[{"is-group":s,"has-gutter":this.hasGutter}]},[this._l(n,function(i,n){return e("tr",{style:t.getHeaderRowStyle(n),class:t.getHeaderRowClass(n)},[i.map(function(s,r){return e("th",{attrs:{colspan:s.colSpan,rowspan:s.rowSpan},on:{mousemove:function(e){return t.handleMouseMove(e,s)},mouseout:t.handleMouseOut,mousedown:function(e){return t.handleMouseDown(e,s)},click:function(e){return t.handleHeaderClick(e,s)},contextmenu:function(e){return t.handleHeaderContextMenu(e,s)}},style:t.getHeaderCellStyle(n,r,i,s),class:t.getHeaderCellClass(n,r,i,s),key:s.id},[e("div",{class:["cell",s.filteredValue&&s.filteredValue.length>0?"highlight":"",s.labelClassName]},[s.renderHeader?s.renderHeader.call(t._renderProxy,e,{column:s,$index:r,store:t.store,_self:t.$parent.$vnode.context}):s.label,s.sortable?e("span",{class:"caret-wrapper",on:{click:function(e){return t.handleSortClick(e,s)}}},[e("i",{class:"sort-caret ascending",on:{click:function(e){return t.handleSortClick(e,s,"ascending")}}}),e("i",{class:"sort-caret descending",on:{click:function(e){return t.handleSortClick(e,s,"descending")}}})]):"",s.filterable?e("span",{class:"el-table__column-filter-trigger",on:{click:function(e){return t.handleFilterClick(e,s)}}},[e("i",{class:["el-icon-arrow-down",s.filterOpened?"el-icon-arrow-up":""]})]):""])])}),t.hasGutter?e("th",{class:"gutter"}):""])})])])},props:{fixed:String,store:{required:!0},border:Boolean,defaultSort:{type:Object,default:function(){return{prop:"",order:""}}}},components:{ElCheckbox:ri.a},computed:Gi({table:function(){return this.$parent},hasGutter:function(){return!this.fixed&&this.tableLayout.gutterWidth}},Ii({columns:"columns",isAllSelected:"isAllSelected",leftFixedLeafCount:"fixedLeafColumnsLength",rightFixedLeafCount:"rightFixedLeafColumnsLength",columnsCount:function(e){return e.columns.length},leftFixedCount:function(e){return e.fixedColumns.length},rightFixedCount:function(e){return e.rightFixedColumns.length}})),created:function(){this.filterPanels={}},mounted:function(){var e=this;this.$nextTick(function(){var t=e.defaultSort,i=t.prop,n=t.order;e.store.commit("sort",{prop:i,order:n,init:!0})})},beforeDestroy:function(){var e=this.filterPanels;for(var t in e)e.hasOwnProperty(t)&&e[t]&&e[t].$destroy(!0)},methods:{isCellHidden:function(e,t){for(var i=0,n=0;n=this.leftFixedLeafCount:"right"===this.fixed?i=this.columnsCount-this.rightFixedLeafCount},getHeaderRowStyle:function(e){var t=this.table.headerRowStyle;return"function"==typeof t?t.call(null,{rowIndex:e}):t},getHeaderRowClass:function(e){var t=[],i=this.table.headerRowClassName;return"string"==typeof i?t.push(i):"function"==typeof i&&t.push(i.call(null,{rowIndex:e})),t.join(" ")},getHeaderCellStyle:function(e,t,i,n){var s=this.table.headerCellStyle;return"function"==typeof s?s.call(null,{rowIndex:e,columnIndex:t,row:i,column:n}):s},getHeaderCellClass:function(e,t,i,n){var s=[n.id,n.order,n.headerAlign,n.className,n.labelClassName];0===e&&this.isCellHidden(t,i)&&s.push("is-hidden"),n.children||s.push("is-leaf"),n.sortable&&s.push("is-sortable");var r=this.table.headerCellClassName;return"string"==typeof r?s.push(r):"function"==typeof r&&s.push(r.call(null,{rowIndex:e,columnIndex:t,row:i,column:n})),s.join(" ")},toggleAllSelection:function(e){e.stopPropagation(),this.store.commit("toggleAllSelection")},handleFilterClick:function(e,t){e.stopPropagation();var i=e.target,n="TH"===i.tagName?i:i.parentNode;if(!Object(fe.hasClass)(n,"noclick")){n=n.querySelector(".el-table__column-filter-trigger")||n;var s=this.$parent,r=this.filterPanels[t.id];r&&t.filterOpened?r.showPopper=!1:(r||(r=new di.a(Ui),this.filterPanels[t.id]=r,t.filterPlacement&&(r.placement=t.filterPlacement),r.table=s,r.cell=n,r.column=t,!this.$isServer&&r.$mount(document.createElement("div"))),setTimeout(function(){r.showPopper=!0},16))}},handleHeaderClick:function(e,t){!t.filters&&t.sortable?this.handleSortClick(e,t):t.filterable&&!t.sortable&&this.handleFilterClick(e,t),this.$parent.$emit("header-click",t,e)},handleHeaderContextMenu:function(e,t){this.$parent.$emit("header-contextmenu",t,e)},handleMouseDown:function(e,t){var i=this;if(!this.$isServer&&!(t.children&&t.children.length>0)&&this.draggingColumn&&this.border){this.dragging=!0,this.$parent.resizeProxyVisible=!0;var n=this.$parent,s=n.$el.getBoundingClientRect().left,r=this.$el.querySelector("th."+t.id),o=r.getBoundingClientRect(),a=o.left-s+30;Object(fe.addClass)(r,"noclick"),this.dragState={startMouseLeft:e.clientX,startLeft:o.right-s,startColumnLeft:o.left-s,tableLeft:s};var l=n.$refs.resizeProxy;l.style.left=this.dragState.startLeft+"px",document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};var c=function(e){var t=e.clientX-i.dragState.startMouseLeft,n=i.dragState.startLeft+t;l.style.left=Math.max(a,n)+"px"};document.addEventListener("mousemove",c),document.addEventListener("mouseup",function s(){if(i.dragging){var o=i.dragState,a=o.startColumnLeft,u=o.startLeft,h=parseInt(l.style.left,10)-a;t.width=t.realWidth=h,n.$emit("header-dragend",t.width,u-a,t,e),i.store.scheduleLayout(),document.body.style.cursor="",i.dragging=!1,i.draggingColumn=null,i.dragState={},n.resizeProxyVisible=!1}document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",s),document.onselectstart=null,document.ondragstart=null,setTimeout(function(){Object(fe.removeClass)(r,"noclick")},0)})}},handleMouseMove:function(e,t){if(!(t.children&&t.children.length>0)){for(var i=e.target;i&&"TH"!==i.tagName;)i=i.parentNode;if(t&&t.resizable&&!this.dragging&&this.border){var n=i.getBoundingClientRect(),s=document.body.style;n.width>12&&n.right-e.pageX<8?(s.cursor="col-resize",Object(fe.hasClass)(i,"is-sortable")&&(i.style.cursor="col-resize"),this.draggingColumn=t):this.dragging||(s.cursor="",Object(fe.hasClass)(i,"is-sortable")&&(i.style.cursor="pointer"),this.draggingColumn=null)}}},handleMouseOut:function(){this.$isServer||(document.body.style.cursor="")},toggleOrder:function(e){var t=e.order,i=e.sortOrders;if(""===t)return i[0];var n=i.indexOf(t||null);return i[n>i.length-2?0:n+1]},handleSortClick:function(e,t,i){e.stopPropagation();for(var n=t.order===i?null:i||this.toggleOrder(t),s=e.target;s&&"TH"!==s.tagName;)s=s.parentNode;if(s&&"TH"===s.tagName&&Object(fe.hasClass)(s,"noclick"))Object(fe.removeClass)(s,"noclick");else if(t.sortable){var r=this.store.states,o=r.sortProp,a=void 0,l=r.sortingColumn;(l!==t||l===t&&null===l.order)&&(l&&(l.order=null),r.sortingColumn=t,o=t.property),a=t.order=n||null,r.sortProp=o,r.sortOrder=a,this.store.commit("changeSortCondition")}}},data:function(){return{draggingColumn:null,dragging:!1,dragState:{}}}},Ji=Object.assign||function(e){for(var t=1;t=this.leftFixedLeafCount;if("right"===this.fixed){for(var n=0,s=0;s=this.columnsCount-this.rightFixedCount)},getRowClasses:function(e,t){var i=[e.id,e.align,e.labelClassName];return e.className&&i.push(e.className),this.isCellHidden(t,this.columns,e)&&i.push("is-hidden"),e.children||i.push("is-leaf"),i}}},en=Object.assign||function(e){for(var t=1;t0){var n=i.scrollTop;t.pixelY<0&&0!==n&&e.preventDefault(),t.pixelY>0&&i.scrollHeight-i.clientHeight>n&&e.preventDefault(),i.scrollTop+=Math.ceil(t.pixelY/5)}else i.scrollLeft+=Math.ceil(t.pixelX/5)},handleHeaderFooterMousewheel:function(e,t){var i=t.pixelX,n=t.pixelY;Math.abs(i)>=Math.abs(n)&&(this.bodyWrapper.scrollLeft+=t.pixelX/5)},syncPostion:Object(oi.throttle)(20,function(){var e=this.bodyWrapper,t=e.scrollLeft,i=e.scrollTop,n=e.offsetWidth,s=e.scrollWidth,r=this.$refs,o=r.headerWrapper,a=r.footerWrapper,l=r.fixedBodyWrapper,c=r.rightFixedBodyWrapper;o&&(o.scrollLeft=t),a&&(a.scrollLeft=t),l&&(l.scrollTop=i),c&&(c.scrollTop=i);var u=s-n-1;this.scrollPosition=t>=u?"right":0===t?"left":"middle"}),bindEvents:function(){this.bodyWrapper.addEventListener("scroll",this.syncPostion,{passive:!0}),this.fit&&Object(Ft.addResizeListener)(this.$el,this.resizeListener)},unbindEvents:function(){this.bodyWrapper.removeEventListener("scroll",this.syncPostion,{passive:!0}),this.fit&&Object(Ft.removeResizeListener)(this.$el,this.resizeListener)},resizeListener:function(){if(this.$ready){var e=!1,t=this.$el,i=this.resizeState,n=i.width,s=i.height,r=t.offsetWidth;n!==r&&(e=!0);var o=t.offsetHeight;(this.height||this.shouldUpdateHeight)&&s!==o&&(e=!0),e&&(this.resizeState.width=r,this.resizeState.height=o,this.doLayout())}},doLayout:function(){this.shouldUpdateHeight&&this.layout.updateElsHeight(),this.layout.updateColumnsWidth()},sort:function(e,t){this.store.commit("sort",{prop:e,order:t})},toggleAllSelection:function(){this.store.commit("toggleAllSelection")}},computed:en({tableSize:function(){return this.size||(this.$ELEMENT||{}).size},bodyWrapper:function(){return this.$refs.bodyWrapper},shouldUpdateHeight:function(){return this.height||this.maxHeight||this.fixedColumns.length>0||this.rightFixedColumns.length>0},bodyWidth:function(){var e=this.layout,t=e.bodyWidth,i=e.scrollY,n=e.gutterWidth;return t?t-(i?n:0)+"px":""},bodyHeight:function(){var e=this.layout,t=e.headerHeight,i=void 0===t?0:t,n=e.bodyHeight,s=e.footerHeight,r=void 0===s?0:s;if(this.height)return{height:n?n+"px":""};if(this.maxHeight){var o=wi(this.maxHeight);if("number"==typeof o)return{"max-height":o-r-(this.showHeader?i:0)+"px"}}return{}},fixedBodyHeight:function(){if(this.height)return{height:this.layout.fixedBodyHeight?this.layout.fixedBodyHeight+"px":""};if(this.maxHeight){var e=wi(this.maxHeight);if("number"==typeof e)return e=this.layout.scrollX?e-this.layout.gutterWidth:e,this.showHeader&&(e-=this.layout.headerHeight),{"max-height":(e-=this.layout.footerHeight)+"px"}}return{}},fixedHeight:function(){return this.maxHeight?this.showSummary?{bottom:0}:{bottom:this.layout.scrollX&&this.data.length?this.layout.gutterWidth+"px":""}:this.showSummary?{height:this.layout.tableHeight?this.layout.tableHeight+"px":""}:{height:this.layout.viewportHeight?this.layout.viewportHeight+"px":""}},emptyBlockStyle:function(){if(this.data&&this.data.length)return null;var e="100%";return this.layout.appendHeight&&(e="calc(100% - "+this.layout.appendHeight+"px)"),{width:this.bodyWidth,height:e}}},Ii({selection:"selection",columns:"columns",tableData:"data",fixedColumns:"fixedColumns",rightFixedColumns:"rightFixedColumns"})),watch:{height:{immediate:!0,handler:function(e){this.layout.setHeight(e)}},maxHeight:{immediate:!0,handler:function(e){this.layout.setMaxHeight(e)}},currentRowKey:{immediate:!0,handler:function(e){this.rowKey&&this.store.setCurrentRowKey(e)}},data:{immediate:!0,handler:function(e){this.store.commit("setData",e)}},expandRowKeys:{immediate:!0,handler:function(e){e&&this.store.setExpandRowKeysAdapter(e)}}},created:function(){var e=this;this.tableId="el-table_"+tn++,this.debouncedUpdateLayout=Object(oi.debounce)(50,function(){return e.doLayout()})},mounted:function(){var e=this;this.bindEvents(),this.store.updateColumns(),this.doLayout(),this.resizeState={width:this.$el.offsetWidth,height:this.$el.offsetHeight},this.store.states.columns.forEach(function(t){t.filteredValue&&t.filteredValue.length&&e.store.commit("filterChange",{column:t,values:t.filteredValue,silent:!0})}),this.$ready=!0},destroyed:function(){this.unbindEvents()},data:function(){var e=this.treeProps,t=e.hasChildren,i=void 0===t?"hasChildren":t,n=e.children,s=void 0===n?"children":n;return this.store=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)throw new Error("Table is required.");var i=new Mi;return i.table=e,i.toggleAllSelection=T()(10,i._toggleAllSelection),Object.keys(t).forEach(function(e){i.states[e]=t[e]}),i}(this,{rowKey:this.rowKey,defaultExpandAll:this.defaultExpandAll,selectOnIndeterminate:this.selectOnIndeterminate,indent:this.indent,lazy:this.lazy,lazyColumnIdentifier:i,childrenColumnName:s}),{layout:new Fi({store:this.store,table:this,fit:this.fit,showHeader:this.showHeader}),isHidden:!1,renderExpanded:null,resizeProxyVisible:!1,resizeState:{width:null,height:null},isGroup:!1,scrollPosition:"left"}}},ni,[],!1,null,null,null);nn.options.__file="packages/table/src/table.vue";var sn=nn.exports;sn.install=function(e){e.component(sn.name,sn)};var rn=sn,on={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:"",className:"el-table-column--selection"},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},an={selection:{renderHeader:function(e,t){var i=t.store;return e("el-checkbox",{attrs:{disabled:i.states.data&&0===i.states.data.length,indeterminate:i.states.selection.length>0&&!this.isAllSelected,value:this.isAllSelected},nativeOn:{click:this.toggleAllSelection}})},renderCell:function(e,t){var i=t.row,n=t.column,s=t.store,r=t.$index;return e("el-checkbox",{nativeOn:{click:function(e){return e.stopPropagation()}},attrs:{value:s.isSelected(i),disabled:!!n.selectable&&!n.selectable.call(null,i,r)},on:{input:function(){s.commit("rowSelectedChanged",i)}}})},sortable:!1,resizable:!1},index:{renderHeader:function(e,t){return t.column.label||"#"},renderCell:function(e,t){var i=t.$index,n=i+1,s=t.column.index;return"number"==typeof s?n=i+s:"function"==typeof s&&(n=s(i)),e("div",[n])},sortable:!1},expand:{renderHeader:function(e,t){return t.column.label||""},renderCell:function(e,t){var i=t.row,n=t.store,s=["el-table__expand-icon"];n.states.expandRows.indexOf(i)>-1&&s.push("el-table__expand-icon--expanded");return e("div",{class:s,on:{click:function(e){e.stopPropagation(),n.toggleRowExpansion(i)}}},[e("i",{class:"el-icon el-icon-arrow-right"})])},sortable:!1,resizable:!1,className:"el-table__expand-column"}};function ln(e,t){var i=t.row,n=t.column,s=t.$index,r=n.property,o=r&&Object(m.getPropByPath)(i,r).v;return n&&n.formatter?n.formatter(i,n,o,s):o}var cn=Object.assign||function(e){for(var t=1;t-1})}}},data:function(){return{isSubColumn:!1,columns:[]}},computed:{owner:function(){for(var e=this.$parent;e&&!e.tableId;)e=e.$parent;return e},columnOrTableParent:function(){for(var e=this.$parent;e&&!e.tableId&&!e.columnId;)e=e.$parent;return e},realWidth:function(){return Ci(this.width)},realMinWidth:function(){return function(e){return void 0!==e&&(e=Ci(e),isNaN(e)&&(e=80)),e}(this.minWidth)},realAlign:function(){return this.align?"is-"+this.align:null},realHeaderAlign:function(){return this.headerAlign?"is-"+this.headerAlign:this.realAlign}},methods:{getPropsData:function(){for(var e=this,t=arguments.length,i=Array(t),n=0;n3&&void 0!==arguments[3]?arguments[3]:"-";return e?(0,(Cn[i]||Cn.default).parser)(e,t||vn[i],n):null},Sn=function(e,t,i){return e?(0,(Cn[i]||Cn.default).formatter)(e,t||vn[i]):null},Dn=function(e,t){var i=function(e,t){var i=e instanceof Date,n=t instanceof Date;return i&&n?e.getTime()===t.getTime():!i&&!n&&e===t},n=e instanceof Array,s=t instanceof Array;return n&&s?e.length===t.length&&e.every(function(e,n){return i(e,t[n])}):!n&&!s&&i(e,t)},$n=function(e){return"string"==typeof e||e instanceof String},On=function(e){return null===e||void 0===e||$n(e)||Array.isArray(e)&&2===e.length&&e.every($n)},En=s({mixins:[k.a,mn],inject:{elForm:{default:""},elFormItem:{default:""}},props:{size:String,format:String,valueFormat:String,readonly:Boolean,placeholder:String,startPlaceholder:String,endPlaceholder:String,prefixIcon:String,clearIcon:{type:String,default:"el-icon-circle-close"},name:{default:"",validator:On},disabled:Boolean,clearable:{type:Boolean,default:!0},id:{default:"",validator:On},popperClass:String,editable:{type:Boolean,default:!0},align:{type:String,default:"left"},value:{},defaultValue:{},defaultTime:{},rangeSeparator:{default:"-"},pickerOptions:{},unlinkPanels:Boolean,validateEvent:{type:Boolean,default:!0}},components:{ElInput:d.a},directives:{Clickoutside:M.a},data:function(){return{pickerVisible:!1,showClose:!1,userInput:null,valueOnOpen:null,unwatchPickerOptions:null}},watch:{pickerVisible:function(e){this.readonly||this.pickerDisabled||(e?(this.showPicker(),this.valueOnOpen=Array.isArray(this.value)?[].concat(this.value):this.value):(this.hidePicker(),this.emitChange(this.value),this.userInput=null,this.validateEvent&&this.dispatch("ElFormItem","el.form.blur"),this.$emit("blur",this),this.blur()))},parsedValue:{immediate:!0,handler:function(e){this.picker&&(this.picker.value=e)}},defaultValue:function(e){this.picker&&(this.picker.defaultValue=e)},value:function(e,t){Dn(e,t)||this.pickerVisible||!this.validateEvent||this.dispatch("ElFormItem","el.form.change",e)}},computed:{ranged:function(){return this.type.indexOf("range")>-1},reference:function(){var e=this.$refs.reference;return e.$el||e},refInput:function(){return this.reference?[].slice.call(this.reference.querySelectorAll("input")):[]},valueIsEmpty:function(){var e=this.value;if(Array.isArray(e)){for(var t=0,i=e.length;t0&&void 0!==arguments[0]?arguments[0]:"",i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.userInput=null,e.pickerVisible=e.picker.visible=i,e.emitInput(t),e.picker.resetView&&e.picker.resetView()}),this.picker.$on("select-range",function(t,i,n){0!==e.refInput.length&&(n&&"min"!==n?"max"===n&&(e.refInput[1].setSelectionRange(t,i),e.refInput[1].focus()):(e.refInput[0].setSelectionRange(t,i),e.refInput[0].focus()))})},unmountPicker:function(){this.picker&&(this.picker.$destroy(),this.picker.$off(),"function"==typeof this.unwatchPickerOptions&&this.unwatchPickerOptions(),this.picker.$el.parentNode.removeChild(this.picker.$el))},emitChange:function(e){Dn(e,this.valueOnOpen)||(this.$emit("change",e),this.valueOnOpen=e,this.validateEvent&&this.dispatch("ElFormItem","el.form.change",e))},emitInput:function(e){var t=this.formatToValue(e);Dn(this.value,t)||this.$emit("input",t)},isValidValue:function(e){return this.picker||this.mountPicker(),!this.picker.isValidValue||e&&this.picker.isValidValue(e)}}},pn,[],!1,null,null,null);En.options.__file="packages/date-picker/src/picker.vue";var Tn=En.exports,Pn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-enter":e.handleEnter,"after-leave":e.handleLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts,"has-time":e.showTime},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[e.showTime?i("div",{staticClass:"el-date-picker__time-header"},[i("span",{staticClass:"el-date-picker__editor-wrap"},[i("el-input",{attrs:{placeholder:e.t("el.datepicker.selectDate"),value:e.visibleDate,size:"small"},on:{input:function(t){return e.userInputDate=t},change:e.handleVisibleDateChange}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleTimePickClose,expression:"handleTimePickClose"}],staticClass:"el-date-picker__editor-wrap"},[i("el-input",{ref:"input",attrs:{placeholder:e.t("el.datepicker.selectTime"),value:e.visibleTime,size:"small"},on:{focus:function(t){e.timePickerVisible=!0},input:function(t){return e.userInputTime=t},change:e.handleVisibleTimeChange}}),i("time-picker",{ref:"timepicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.timePickerVisible},on:{pick:e.handleTimePick,mounted:e.proxyTimePickerDataProperties}})],1)]):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:"time"!==e.currentView,expression:"currentView !== 'time'"}],staticClass:"el-date-picker__header",class:{"el-date-picker__header--bordered":"year"===e.currentView||"month"===e.currentView}},[i("button",{staticClass:"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-d-arrow-left",attrs:{type:"button","aria-label":e.t("el.datepicker.prevYear")},on:{click:e.prevYear}}),i("button",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-arrow-left",attrs:{type:"button","aria-label":e.t("el.datepicker.prevMonth")},on:{click:e.prevMonth}}),i("span",{staticClass:"el-date-picker__header-label",attrs:{role:"button"},on:{click:e.showYearPicker}},[e._v(e._s(e.yearLabel))]),i("span",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-date-picker__header-label",class:{active:"month"===e.currentView},attrs:{role:"button"},on:{click:e.showMonthPicker}},[e._v(e._s(e.t("el.datepicker.month"+(e.month+1))))]),i("button",{staticClass:"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-d-arrow-right",attrs:{type:"button","aria-label":e.t("el.datepicker.nextYear")},on:{click:e.nextYear}}),i("button",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-arrow-right",attrs:{type:"button","aria-label":e.t("el.datepicker.nextMonth")},on:{click:e.nextMonth}})]),i("div",{staticClass:"el-picker-panel__content"},[i("date-table",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],attrs:{"selection-mode":e.selectionMode,"first-day-of-week":e.firstDayOfWeek,value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"cell-class-name":e.cellClassName,"disabled-date":e.disabledDate},on:{pick:e.handleDatePick}}),i("year-table",{directives:[{name:"show",rawName:"v-show",value:"year"===e.currentView,expression:"currentView === 'year'"}],attrs:{value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleYearPick}}),i("month-table",{directives:[{name:"show",rawName:"v-show",value:"month"===e.currentView,expression:"currentView === 'month'"}],attrs:{value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleMonthPick}})],1)])],2),i("div",{directives:[{name:"show",rawName:"v-show",value:e.footerVisible&&"date"===e.currentView,expression:"footerVisible && currentView === 'date'"}],staticClass:"el-picker-panel__footer"},[i("el-button",{directives:[{name:"show",rawName:"v-show",value:"dates"!==e.selectionMode,expression:"selectionMode !== 'dates'"}],staticClass:"el-picker-panel__link-btn",attrs:{size:"mini",type:"text"},on:{click:e.changeToNow}},[e._v("\n "+e._s(e.t("el.datepicker.now"))+"\n ")]),i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{plain:"",size:"mini"},on:{click:e.confirm}},[e._v("\n "+e._s(e.t("el.datepicker.confirm"))+"\n ")])],1)])])};Pn._withStripped=!0;var Mn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-time-panel el-popper",class:e.popperClass},[i("div",{staticClass:"el-time-panel__content",class:{"has-seconds":e.showSeconds}},[i("time-spinner",{ref:"spinner",attrs:{"arrow-control":e.useArrow,"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,date:e.date},on:{change:e.handleChange,"select-range":e.setSelectionRange}})],1),i("div",{staticClass:"el-time-panel__footer"},[i("button",{staticClass:"el-time-panel__btn cancel",attrs:{type:"button"},on:{click:e.handleCancel}},[e._v(e._s(e.t("el.datepicker.cancel")))]),i("button",{staticClass:"el-time-panel__btn",class:{confirm:!e.disabled},attrs:{type:"button"},on:{click:function(t){e.handleConfirm()}}},[e._v(e._s(e.t("el.datepicker.confirm")))])])])])};Mn._withStripped=!0;var In=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-time-spinner",class:{"has-seconds":e.showSeconds}},[e.arrowControl?e._e():[i("el-scrollbar",{ref:"hours",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("hours")},mousemove:function(t){e.adjustCurrentSpinner("hours")}}},e._l(e.hoursList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.hours,disabled:t},on:{click:function(i){e.handleClick("hours",{value:n,disabled:t})}}},[e._v(e._s(("0"+(e.amPmMode?n%12||12:n)).slice(-2))+e._s(e.amPm(n)))])}),0),i("el-scrollbar",{ref:"minutes",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("minutes")},mousemove:function(t){e.adjustCurrentSpinner("minutes")}}},e._l(e.minutesList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.minutes,disabled:!t},on:{click:function(t){e.handleClick("minutes",{value:n,disabled:!1})}}},[e._v(e._s(("0"+n).slice(-2)))])}),0),i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.showSeconds,expression:"showSeconds"}],ref:"seconds",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("seconds")},mousemove:function(t){e.adjustCurrentSpinner("seconds")}}},e._l(60,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.seconds},on:{click:function(t){e.handleClick("seconds",{value:n,disabled:!1})}}},[e._v(e._s(("0"+n).slice(-2)))])}),0)],e.arrowControl?[i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("hours")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"hours",staticClass:"el-time-spinner__list"},e._l(e.arrowHourList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.hours,disabled:e.hoursList[t]}},[e._v(e._s(void 0===t?"":("0"+(e.amPmMode?t%12||12:t)).slice(-2)+e.amPm(t)))])}),0)]),i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("minutes")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"minutes",staticClass:"el-time-spinner__list"},e._l(e.arrowMinuteList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.minutes}},[e._v("\n "+e._s(void 0===t?"":("0"+t).slice(-2))+"\n ")])}),0)]),e.showSeconds?i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("seconds")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"seconds",staticClass:"el-time-spinner__list"},e._l(e.arrowSecondList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.seconds}},[e._v("\n "+e._s(void 0===t?"":("0"+t).slice(-2))+"\n ")])}),0)]):e._e()]:e._e()],2)};In._withStripped=!0;var Nn=s({components:{ElScrollbar:L.a},directives:{repeatClick:Ke},props:{date:{},defaultValue:{},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:String,default:""}},computed:{hours:function(){return this.date.getHours()},minutes:function(){return this.date.getMinutes()},seconds:function(){return this.date.getSeconds()},hoursList:function(){return Object(fn.getRangeHours)(this.selectableRange)},minutesList:function(){return Object(fn.getRangeMinutes)(this.selectableRange,this.hours)},arrowHourList:function(){var e=this.hours;return[e>0?e-1:void 0,e,e<23?e+1:void 0]},arrowMinuteList:function(){var e=this.minutes;return[e>0?e-1:void 0,e,e<59?e+1:void 0]},arrowSecondList:function(){var e=this.seconds;return[e>0?e-1:void 0,e,e<59?e+1:void 0]}},data:function(){return{selectableRange:[],currentScrollbar:null}},mounted:function(){var e=this;this.$nextTick(function(){!e.arrowControl&&e.bindScrollEvent()})},methods:{increase:function(){this.scrollDown(1)},decrease:function(){this.scrollDown(-1)},modifyDateField:function(e,t){switch(e){case"hours":this.$emit("change",Object(fn.modifyTime)(this.date,t,this.minutes,this.seconds));break;case"minutes":this.$emit("change",Object(fn.modifyTime)(this.date,this.hours,t,this.seconds));break;case"seconds":this.$emit("change",Object(fn.modifyTime)(this.date,this.hours,this.minutes,t))}},handleClick:function(e,t){var i=t.value;t.disabled||(this.modifyDateField(e,i),this.emitSelectRange(e),this.adjustSpinner(e,i))},emitSelectRange:function(e){"hours"===e?this.$emit("select-range",0,2):"minutes"===e?this.$emit("select-range",3,5):"seconds"===e&&this.$emit("select-range",6,8),this.currentScrollbar=e},bindScrollEvent:function(){var e=this,t=function(t){e.$refs[t].wrap.onscroll=function(i){e.handleScroll(t,i)}};t("hours"),t("minutes"),t("seconds")},handleScroll:function(e){var t=Math.min(Math.round((this.$refs[e].wrap.scrollTop-(.5*this.scrollBarHeight(e)-10)/this.typeItemHeight(e)+3)/this.typeItemHeight(e)),"hours"===e?23:59);this.modifyDateField(e,t)},adjustSpinners:function(){this.adjustSpinner("hours",this.hours),this.adjustSpinner("minutes",this.minutes),this.adjustSpinner("seconds",this.seconds)},adjustCurrentSpinner:function(e){this.adjustSpinner(e,this[e])},adjustSpinner:function(e,t){if(!this.arrowControl){var i=this.$refs[e].wrap;i&&(i.scrollTop=Math.max(0,t*this.typeItemHeight(e)))}},scrollDown:function(e){var t=this;this.currentScrollbar||this.emitSelectRange("hours");var i=this.currentScrollbar,n=this.hoursList,s=this[i];if("hours"===this.currentScrollbar){var r=Math.abs(e);e=e>0?1:-1;for(var o=n.length;o--&&r;)n[s=(s+e+n.length)%n.length]||r--;if(n[s])return}else s=(s+e+60)%60;this.modifyDateField(i,s),this.adjustSpinner(i,s),this.$nextTick(function(){return t.emitSelectRange(t.currentScrollbar)})},amPm:function(e){if(!("a"===this.amPmMode.toLowerCase()))return"";var t="A"===this.amPmMode,i=e<12?" am":" pm";return t&&(i=i.toUpperCase()),i},typeItemHeight:function(e){return this.$refs[e].$el.querySelector("li").offsetHeight},scrollBarHeight:function(e){return this.$refs[e].$el.offsetHeight}}},In,[],!1,null,null,null);Nn.options.__file="packages/date-picker/src/basic/time-spinner.vue";var jn=Nn.exports,Fn=s({mixins:[f.a],components:{TimeSpinner:jn},props:{visible:Boolean,timeArrowControl:Boolean},watch:{visible:function(e){var t=this;e?(this.oldValue=this.value,this.$nextTick(function(){return t.$refs.spinner.emitSelectRange("hours")})):this.needInitAdjust=!0},value:function(e){var t=this,i=void 0;e instanceof Date?i=Object(fn.limitTimeRange)(e,this.selectableRange,this.format):e||(i=this.defaultValue?new Date(this.defaultValue):new Date),this.date=i,this.visible&&this.needInitAdjust&&(this.$nextTick(function(e){return t.adjustSpinners()}),this.needInitAdjust=!1)},selectableRange:function(e){this.$refs.spinner.selectableRange=e},defaultValue:function(e){Object(fn.isDate)(this.value)||(this.date=e?new Date(e):new Date)}},data:function(){return{popperClass:"",format:"HH:mm:ss",value:"",defaultValue:null,date:new Date,oldValue:new Date,selectableRange:[],selectionRange:[0,2],disabled:!1,arrowControl:!1,needInitAdjust:!0}},computed:{showSeconds:function(){return-1!==(this.format||"").indexOf("ss")},useArrow:function(){return this.arrowControl||this.timeArrowControl||!1},amPmMode:function(){return-1!==(this.format||"").indexOf("A")?"A":-1!==(this.format||"").indexOf("a")?"a":""}},methods:{handleCancel:function(){this.$emit("pick",this.oldValue,!1)},handleChange:function(e){this.visible&&(this.date=Object(fn.clearMilliseconds)(e),this.isValidValue(this.date)&&this.$emit("pick",this.date,!0))},setSelectionRange:function(e,t){this.$emit("select-range",e,t),this.selectionRange=[e,t]},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments[1];if(!t){var i=Object(fn.clearMilliseconds)(Object(fn.limitTimeRange)(this.date,this.selectableRange,this.format));this.$emit("pick",i,e,t)}},handleKeydown:function(e){var t=e.keyCode,i={38:-1,40:1,37:-1,39:1};if(37===t||39===t){var n=i[t];return this.changeSelectionRange(n),void e.preventDefault()}if(38===t||40===t){var s=i[t];return this.$refs.spinner.scrollDown(s),void e.preventDefault()}},isValidValue:function(e){return Object(fn.timeWithinRange)(e,this.selectableRange,this.format)},adjustSpinners:function(){return this.$refs.spinner.adjustSpinners()},changeSelectionRange:function(e){var t=[0,3].concat(this.showSeconds?[6]:[]),i=["hours","minutes"].concat(this.showSeconds?["seconds"]:[]),n=(t.indexOf(this.selectionRange[0])+e+t.length)%t.length;this.$refs.spinner.emitSelectRange(i[n])}},mounted:function(){var e=this;this.$nextTick(function(){return e.handleConfirm(!0,!0)}),this.$emit("mounted")}},Mn,[],!1,null,null,null);Fn.options.__file="packages/date-picker/src/panel/time.vue";var Ln=Fn.exports,An=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-year-table",on:{click:e.handleYearTableClick}},[i("tbody",[i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+0)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+1)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+1))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+2)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+2))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+3)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+3))])])]),i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+4)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+4))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+5)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+5))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+6)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+6))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+7)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+7))])])]),i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+8)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+8))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+9)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+9))])]),i("td"),i("td")])])])};An._withStripped=!0;var Vn=s({props:{disabledDate:{},value:{},defaultValue:{validator:function(e){return null===e||e instanceof Date&&Object(fn.isDate)(e)}},date:{}},computed:{startYear:function(){return 10*Math.floor(this.date.getFullYear()/10)}},methods:{getCellStyle:function(e){var t={},i=new Date;return t.disabled="function"==typeof this.disabledDate&&function(e){var t=Object(fn.getDayCountOfYear)(e),i=new Date(e,0,1);return Object(fn.range)(t).map(function(e){return Object(fn.nextDate)(i,e)})}(e).every(this.disabledDate),t.current=Object(m.arrayFindIndex)(Object(m.coerceTruthyValueToArray)(this.value),function(t){return t.getFullYear()===e})>=0,t.today=i.getFullYear()===e,t.default=this.defaultValue&&this.defaultValue.getFullYear()===e,t},handleYearTableClick:function(e){var t=e.target;if("A"===t.tagName){if(Object(fe.hasClass)(t.parentNode,"disabled"))return;var i=t.textContent||t.innerText;this.$emit("pick",Number(i))}}}},An,[],!1,null,null,null);Vn.options.__file="packages/date-picker/src/basic/year-table.vue";var Bn=Vn.exports,zn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-month-table",on:{click:e.handleMonthTableClick,mousemove:e.handleMouseMove}},[i("tbody",e._l(e.rows,function(t,n){return i("tr",{key:n},e._l(t,function(t,n){return i("td",{key:n,class:e.getCellStyle(t)},[i("div",[i("a",{staticClass:"cell"},[e._v(e._s(e.t("el.datepicker.months."+e.months[t.text])))])])])}),0)}),0)])};zn._withStripped=!0;var Rn=function(e){return new Date(e.getFullYear(),e.getMonth())},Hn=function(e){return"number"==typeof e||"string"==typeof e?Rn(new Date(e)).getTime():e instanceof Date?Rn(e).getTime():NaN},Wn=s({props:{disabledDate:{},value:{},selectionMode:{default:"month"},minDate:{},maxDate:{},defaultValue:{validator:function(e){return null===e||Object(fn.isDate)(e)||Array.isArray(e)&&e.every(fn.isDate)}},date:{},rangeState:{default:function(){return{endDate:null,selecting:!1}}}},mixins:[f.a],watch:{"rangeState.endDate":function(e){this.markRange(this.minDate,e)},minDate:function(e,t){Hn(e)!==Hn(t)&&this.markRange(this.minDate,this.maxDate)},maxDate:function(e,t){Hn(e)!==Hn(t)&&this.markRange(this.minDate,this.maxDate)}},data:function(){return{months:["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],tableRows:[[],[],[]],lastRow:null,lastColumn:null}},methods:{cellMatchesDate:function(e,t){var i=new Date(t);return this.date.getFullYear()===i.getFullYear()&&Number(e.text)===i.getMonth()},getCellStyle:function(e){var t=this,i={},n=this.date.getFullYear(),s=new Date,r=e.text,o=this.defaultValue?Array.isArray(this.defaultValue)?this.defaultValue:[this.defaultValue]:[];return i.disabled="function"==typeof this.disabledDate&&function(e,t){var i=Object(fn.getDayCountOfMonth)(e,t),n=new Date(e,t,1);return Object(fn.range)(i).map(function(e){return Object(fn.nextDate)(n,e)})}(n,r).every(this.disabledDate),i.current=Object(m.arrayFindIndex)(Object(m.coerceTruthyValueToArray)(this.value),function(e){return e.getFullYear()===n&&e.getMonth()===r})>=0,i.today=s.getFullYear()===n&&s.getMonth()===r,i.default=o.some(function(i){return t.cellMatchesDate(e,i)}),e.inRange&&(i["in-range"]=!0,e.start&&(i["start-date"]=!0),e.end&&(i["end-date"]=!0)),i},getMonthOfCell:function(e){var t=this.date.getFullYear();return new Date(t,e,1)},markRange:function(e,t){e=Hn(e),t=Hn(t)||e;var i=[Math.min(e,t),Math.max(e,t)];e=i[0],t=i[1];for(var n=this.rows,s=0,r=n.length;s=e&&h<=t,c.start=e&&h===e,c.end=t&&h===t}},handleMouseMove:function(e){if(this.rangeState.selecting){var t=e.target;if("A"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex,n=t.cellIndex;this.rows[i][n].disabled||i===this.lastRow&&n===this.lastColumn||(this.lastRow=i,this.lastColumn=n,this.$emit("changerange",{minDate:this.minDate,maxDate:this.maxDate,rangeState:{selecting:!0,endDate:this.getMonthOfCell(4*i+n)}}))}}},handleMonthTableClick:function(e){var t=e.target;if("A"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName&&!Object(fe.hasClass)(t,"disabled")){var i=t.cellIndex,n=4*t.parentNode.rowIndex+i,s=this.getMonthOfCell(n);"range"===this.selectionMode?this.rangeState.selecting?(s>=this.minDate?this.$emit("pick",{minDate:this.minDate,maxDate:s}):this.$emit("pick",{minDate:s,maxDate:this.minDate}),this.rangeState.selecting=!1):(this.$emit("pick",{minDate:s,maxDate:null}),this.rangeState.selecting=!0):this.$emit("pick",n)}}},computed:{rows:function(){for(var e=this,t=this.tableRows,i=this.disabledDate,n=[],s=Hn(new Date),r=0;r<3;r++)for(var o=t[r],a=function(t){var a=o[t];a||(a={row:r,column:t,type:"normal",inRange:!1,start:!1,end:!1}),a.type="normal";var l=4*r+t,c=new Date(e.date.getFullYear(),l).getTime();a.inRange=c>=Hn(e.minDate)&&c<=Hn(e.maxDate),a.start=e.minDate&&c===Hn(e.minDate),a.end=e.maxDate&&c===Hn(e.maxDate),c===s&&(a.type="today"),a.text=l;var u=new Date(c);a.disabled="function"==typeof i&&i(u),a.selected=Object(m.arrayFind)(n,function(e){return e.getTime()===u.getTime()}),e.$set(o,t,a)},l=0;l<4;l++)a(l);return t}}},zn,[],!1,null,null,null);Wn.options.__file="packages/date-picker/src/basic/month-table.vue";var qn=Wn.exports,Yn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-date-table",class:{"is-week-mode":"week"===e.selectionMode},attrs:{cellspacing:"0",cellpadding:"0"},on:{click:e.handleClick,mousemove:e.handleMouseMove}},[i("tbody",[i("tr",[e.showWeekNumber?i("th",[e._v(e._s(e.t("el.datepicker.week")))]):e._e(),e._l(e.WEEKS,function(t,n){return i("th",{key:n},[e._v(e._s(e.t("el.datepicker.weeks."+t)))])})],2),e._l(e.rows,function(t,n){return i("tr",{key:n,staticClass:"el-date-table__row",class:{current:e.isWeekActive(t[1])}},e._l(t,function(t,n){return i("td",{key:n,class:e.getCellClasses(t)},[i("div",[i("span",[e._v("\n "+e._s(t.text)+"\n ")])])])}),0)})],2)])};Yn._withStripped=!0;var Kn=["sun","mon","tue","wed","thu","fri","sat"],Un=function(e){return"number"==typeof e||"string"==typeof e?Object(fn.clearTime)(new Date(e)).getTime():e instanceof Date?Object(fn.clearTime)(e).getTime():NaN},Gn=s({mixins:[f.a],props:{firstDayOfWeek:{default:7,type:Number,validator:function(e){return e>=1&&e<=7}},value:{},defaultValue:{validator:function(e){return null===e||Object(fn.isDate)(e)||Array.isArray(e)&&e.every(fn.isDate)}},date:{},selectionMode:{default:"day"},showWeekNumber:{type:Boolean,default:!1},disabledDate:{},cellClassName:{},minDate:{},maxDate:{},rangeState:{default:function(){return{endDate:null,selecting:!1}}}},computed:{offsetDay:function(){var e=this.firstDayOfWeek;return e>3?7-e:-e},WEEKS:function(){var e=this.firstDayOfWeek;return Kn.concat(Kn).slice(e,e+7)},year:function(){return this.date.getFullYear()},month:function(){return this.date.getMonth()},startDate:function(){return Object(fn.getStartDateOfMonth)(this.year,this.month)},rows:function(){var e=this,t=new Date(this.year,this.month,1),i=Object(fn.getFirstDayOfMonth)(t),n=Object(fn.getDayCountOfMonth)(t.getFullYear(),t.getMonth()),s=Object(fn.getDayCountOfMonth)(t.getFullYear(),0===t.getMonth()?11:t.getMonth()-1);i=0===i?7:i;for(var r=this.offsetDay,o=this.tableRows,a=1,l=this.startDate,c=this.disabledDate,u=this.cellClassName,h="dates"===this.selectionMode?Object(m.coerceTruthyValueToArray)(this.value):[],d=Un(new Date),p=0;p<6;p++){var f=o[p];this.showWeekNumber&&(f[0]||(f[0]={type:"week",text:Object(fn.getWeekNumber)(Object(fn.nextDate)(l,7*p+1))}));for(var v=function(t){var o=f[e.showWeekNumber?t+1:t];o||(o={row:p,column:t,type:"normal",inRange:!1,start:!1,end:!1}),o.type="normal";var v=7*p+t,g=Object(fn.nextDate)(l,v-r).getTime();if(o.inRange=g>=Un(e.minDate)&&g<=Un(e.maxDate),o.start=e.minDate&&g===Un(e.minDate),o.end=e.maxDate&&g===Un(e.maxDate),g===d&&(o.type="today"),p>=0&&p<=1){var b=i+r<0?7+i+r:i+r;t+7*p>=b?o.text=a++:(o.text=s-(b-t%7)+1+7*p,o.type="prev-month")}else a<=n?o.text=a++:(o.text=a++-n,o.type="next-month");var y=new Date(g);o.disabled="function"==typeof c&&c(y),o.selected=Object(m.arrayFind)(h,function(e){return e.getTime()===y.getTime()}),o.customClass="function"==typeof u&&u(y),e.$set(f,e.showWeekNumber?t+1:t,o)},g=0;g<7;g++)v(g);if("week"===this.selectionMode){var b=this.showWeekNumber?1:0,y=this.showWeekNumber?7:6,_=this.isWeekActive(f[b+1]);f[b].inRange=_,f[b].start=_,f[y].inRange=_,f[y].end=_}}return o}},watch:{"rangeState.endDate":function(e){this.markRange(this.minDate,e)},minDate:function(e,t){Un(e)!==Un(t)&&this.markRange(this.minDate,this.maxDate)},maxDate:function(e,t){Un(e)!==Un(t)&&this.markRange(this.minDate,this.maxDate)}},data:function(){return{tableRows:[[],[],[],[],[],[]],lastRow:null,lastColumn:null}},methods:{cellMatchesDate:function(e,t){var i=new Date(t);return this.year===i.getFullYear()&&this.month===i.getMonth()&&Number(e.text)===i.getDate()},getCellClasses:function(e){var t=this,i=this.selectionMode,n=this.defaultValue?Array.isArray(this.defaultValue)?this.defaultValue:[this.defaultValue]:[],s=[];return"normal"!==e.type&&"today"!==e.type||e.disabled?s.push(e.type):(s.push("available"),"today"===e.type&&s.push("today")),"normal"===e.type&&n.some(function(i){return t.cellMatchesDate(e,i)})&&s.push("default"),"day"!==i||"normal"!==e.type&&"today"!==e.type||!this.cellMatchesDate(e,this.value)||s.push("current"),!e.inRange||"normal"!==e.type&&"today"!==e.type&&"week"!==this.selectionMode||(s.push("in-range"),e.start&&s.push("start-date"),e.end&&s.push("end-date")),e.disabled&&s.push("disabled"),e.selected&&s.push("selected"),e.customClass&&s.push(e.customClass),s.join(" ")},getDateOfCell:function(e,t){var i=7*e+(t-(this.showWeekNumber?1:0))-this.offsetDay;return Object(fn.nextDate)(this.startDate,i)},isWeekActive:function(e){if("week"!==this.selectionMode)return!1;var t=new Date(this.year,this.month,1),i=t.getFullYear(),n=t.getMonth();if("prev-month"===e.type&&(t.setMonth(0===n?11:n-1),t.setFullYear(0===n?i-1:i)),"next-month"===e.type&&(t.setMonth(11===n?0:n+1),t.setFullYear(11===n?i+1:i)),t.setDate(parseInt(e.text,10)),Object(fn.isDate)(this.value)){var s=(this.value.getDay()-this.firstDayOfWeek+7)%7-1;return Object(fn.prevDate)(this.value,s).getTime()===t.getTime()}return!1},markRange:function(e,t){e=Un(e),t=Un(t)||e;var i=[Math.min(e,t),Math.max(e,t)];e=i[0],t=i[1];for(var n=this.startDate,s=this.rows,r=0,o=s.length;r=e&&d<=t,u.start=e&&d===e,u.end=t&&d===t}},handleMouseMove:function(e){if(this.rangeState.selecting){var t=e.target;if("SPAN"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex-1,n=t.cellIndex;this.rows[i][n].disabled||i===this.lastRow&&n===this.lastColumn||(this.lastRow=i,this.lastColumn=n,this.$emit("changerange",{minDate:this.minDate,maxDate:this.maxDate,rangeState:{selecting:!0,endDate:this.getDateOfCell(i,n)}}))}}},handleClick:function(e){var t=e.target;if("SPAN"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex-1,n="week"===this.selectionMode?1:t.cellIndex,s=this.rows[i][n];if(!s.disabled&&"week"!==s.type){var r=this.getDateOfCell(i,n);if("range"===this.selectionMode)this.rangeState.selecting?(r>=this.minDate?this.$emit("pick",{minDate:this.minDate,maxDate:r}):this.$emit("pick",{minDate:r,maxDate:this.minDate}),this.rangeState.selecting=!1):(this.$emit("pick",{minDate:r,maxDate:null}),this.rangeState.selecting=!0);else if("day"===this.selectionMode)this.$emit("pick",r);else if("week"===this.selectionMode){var o=Object(fn.getWeekNumber)(r),a=r.getFullYear()+"w"+o;this.$emit("pick",{year:r.getFullYear(),week:o,value:a,date:r})}else if("dates"===this.selectionMode){var l=this.value||[],c=s.selected?function(e,t){var i="function"==typeof t?Object(m.arrayFindIndex)(e,t):e.indexOf(t);return i>=0?[].concat(e.slice(0,i),e.slice(i+1)):e}(l,function(e){return e.getTime()===r.getTime()}):[].concat(l,[r]);this.$emit("pick",c)}}}}}},Yn,[],!1,null,null,null);Gn.options.__file="packages/date-picker/src/basic/date-table.vue";var Xn=Gn.exports,Qn=s({mixins:[f.a],directives:{Clickoutside:M.a},watch:{showTime:function(e){var t=this;e&&this.$nextTick(function(e){var i=t.$refs.input.$el;i&&(t.pickerWidth=i.getBoundingClientRect().width+10)})},value:function(e){"dates"===this.selectionMode&&this.value||(Object(fn.isDate)(e)?this.date=new Date(e):this.date=this.getDefaultValue())},defaultValue:function(e){Object(fn.isDate)(this.value)||(this.date=e?new Date(e):new Date)},timePickerVisible:function(e){var t=this;e&&this.$nextTick(function(){return t.$refs.timepicker.adjustSpinners()})},selectionMode:function(e){"month"===e?"year"===this.currentView&&"month"===this.currentView||(this.currentView="month"):"dates"===e&&(this.currentView="date")}},methods:{proxyTimePickerDataProperties:function(){var e=this,t=function(t){e.$refs.timepicker.value=t},i=function(t){e.$refs.timepicker.date=t},n=function(t){e.$refs.timepicker.selectableRange=t};this.$watch("value",t),this.$watch("date",i),this.$watch("selectableRange",n),function(t){e.$refs.timepicker.format=t}(this.timeFormat),t(this.value),i(this.date),n(this.selectableRange)},handleClear:function(){this.date=this.getDefaultValue(),this.$emit("pick",null)},emit:function(e){for(var t=this,i=arguments.length,n=Array(i>1?i-1:0),s=1;s0)||Object(fn.timeWithinRange)(e,this.selectableRange,this.format||"HH:mm:ss")}},components:{TimePicker:Ln,YearTable:Bn,MonthTable:qn,DateTable:Xn,ElInput:d.a,ElButton:Y.a},data:function(){return{popperClass:"",date:new Date,value:"",defaultValue:null,defaultTime:null,showTime:!1,selectionMode:"day",shortcuts:"",visible:!1,currentView:"date",disabledDate:"",cellClassName:"",selectableRange:[],firstDayOfWeek:7,showWeekNumber:!1,timePickerVisible:!1,format:"",arrowControl:!1,userInputDate:null,userInputTime:null}},computed:{year:function(){return this.date.getFullYear()},month:function(){return this.date.getMonth()},week:function(){return Object(fn.getWeekNumber)(this.date)},monthDate:function(){return this.date.getDate()},footerVisible:function(){return this.showTime||"dates"===this.selectionMode},visibleTime:function(){return null!==this.userInputTime?this.userInputTime:Object(fn.formatDate)(this.value||this.defaultValue,this.timeFormat)},visibleDate:function(){return null!==this.userInputDate?this.userInputDate:Object(fn.formatDate)(this.value||this.defaultValue,this.dateFormat)},yearLabel:function(){var e=this.t("el.datepicker.year");if("year"===this.currentView){var t=10*Math.floor(this.year/10);return e?t+" "+e+" - "+(t+9)+" "+e:t+" - "+(t+9)}return this.year+" "+e},timeFormat:function(){return this.format?Object(fn.extractTimeFormat)(this.format):"HH:mm:ss"},dateFormat:function(){return this.format?Object(fn.extractDateFormat)(this.format):"yyyy-MM-dd"}}},Pn,[],!1,null,null,null);Qn.options.__file="packages/date-picker/src/panel/date.vue";var Jn=Qn.exports,Zn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-range-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts,"has-time":e.showTime},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[e.showTime?i("div",{staticClass:"el-date-range-picker__time-header"},[i("span",{staticClass:"el-date-range-picker__editors-wrap"},[i("span",{staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{ref:"minInput",staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startDate"),value:e.minVisibleDate},on:{input:function(t){return e.handleDateInput(t,"min")},change:function(t){return e.handleDateChange(t,"min")}}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleMinTimeClose,expression:"handleMinTimeClose"}],staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startTime"),value:e.minVisibleTime},on:{focus:function(t){e.minTimePickerVisible=!0},input:function(t){return e.handleTimeInput(t,"min")},change:function(t){return e.handleTimeChange(t,"min")}}}),i("time-picker",{ref:"minTimePicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.minTimePickerVisible},on:{pick:e.handleMinTimePick,mounted:function(t){e.$refs.minTimePicker.format=e.timeFormat}}})],1)]),i("span",{staticClass:"el-icon-arrow-right"}),i("span",{staticClass:"el-date-range-picker__editors-wrap is-right"},[i("span",{staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endDate"),value:e.maxVisibleDate,readonly:!e.minDate},on:{input:function(t){return e.handleDateInput(t,"max")},change:function(t){return e.handleDateChange(t,"max")}}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleMaxTimeClose,expression:"handleMaxTimeClose"}],staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endTime"),value:e.maxVisibleTime,readonly:!e.minDate},on:{focus:function(t){e.minDate&&(e.maxTimePickerVisible=!0)},input:function(t){return e.handleTimeInput(t,"max")},change:function(t){return e.handleTimeChange(t,"max")}}}),i("time-picker",{ref:"maxTimePicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.maxTimePickerVisible},on:{pick:e.handleMaxTimePick,mounted:function(t){e.$refs.maxTimePicker.format=e.timeFormat}}})],1)])]):e._e(),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-left"},[i("div",{staticClass:"el-date-range-picker__header"},[i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevYear}}),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevMonth}}),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.leftNextYear}}):e._e(),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-right",class:{"is-disabled":!e.enableMonthArrow},attrs:{type:"button",disabled:!e.enableMonthArrow},on:{click:e.leftNextMonth}}):e._e(),i("div",[e._v(e._s(e.leftLabel))])]),i("date-table",{attrs:{"selection-mode":"range",date:e.leftDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"cell-class-name":e.cellClassName,"first-day-of-week":e.firstDayOfWeek},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-right"},[i("div",{staticClass:"el-date-range-picker__header"},[e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.rightPrevYear}}):e._e(),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-left",class:{"is-disabled":!e.enableMonthArrow},attrs:{type:"button",disabled:!e.enableMonthArrow},on:{click:e.rightPrevMonth}}):e._e(),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",attrs:{type:"button"},on:{click:e.rightNextYear}}),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-right",attrs:{type:"button"},on:{click:e.rightNextMonth}}),i("div",[e._v(e._s(e.rightLabel))])]),i("date-table",{attrs:{"selection-mode":"range",date:e.rightDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"cell-class-name":e.cellClassName,"first-day-of-week":e.firstDayOfWeek},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1)])],2),e.showTime?i("div",{staticClass:"el-picker-panel__footer"},[i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{size:"mini",type:"text"},on:{click:e.handleClear}},[e._v("\n "+e._s(e.t("el.datepicker.clear"))+"\n ")]),i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{plain:"",size:"mini",disabled:e.btnDisabled},on:{click:function(t){e.handleConfirm(!1)}}},[e._v("\n "+e._s(e.t("el.datepicker.confirm"))+"\n ")])],1):e._e()])])};Zn._withStripped=!0;var es=function(e){return Array.isArray(e)?[new Date(e[0]),new Date(e[1])]:e?[new Date(e),Object(fn.nextDate)(new Date(e),1)]:[new Date,Object(fn.nextDate)(new Date,1)]},ts=s({mixins:[f.a],directives:{Clickoutside:M.a},computed:{btnDisabled:function(){return!(this.minDate&&this.maxDate&&!this.selecting&&this.isValidValue([this.minDate,this.maxDate]))},leftLabel:function(){return this.leftDate.getFullYear()+" "+this.t("el.datepicker.year")+" "+this.t("el.datepicker.month"+(this.leftDate.getMonth()+1))},rightLabel:function(){return this.rightDate.getFullYear()+" "+this.t("el.datepicker.year")+" "+this.t("el.datepicker.month"+(this.rightDate.getMonth()+1))},leftYear:function(){return this.leftDate.getFullYear()},leftMonth:function(){return this.leftDate.getMonth()},leftMonthDate:function(){return this.leftDate.getDate()},rightYear:function(){return this.rightDate.getFullYear()},rightMonth:function(){return this.rightDate.getMonth()},rightMonthDate:function(){return this.rightDate.getDate()},minVisibleDate:function(){return null!==this.dateUserInput.min?this.dateUserInput.min:this.minDate?Object(fn.formatDate)(this.minDate,this.dateFormat):""},maxVisibleDate:function(){return null!==this.dateUserInput.max?this.dateUserInput.max:this.maxDate||this.minDate?Object(fn.formatDate)(this.maxDate||this.minDate,this.dateFormat):""},minVisibleTime:function(){return null!==this.timeUserInput.min?this.timeUserInput.min:this.minDate?Object(fn.formatDate)(this.minDate,this.timeFormat):""},maxVisibleTime:function(){return null!==this.timeUserInput.max?this.timeUserInput.max:this.maxDate||this.minDate?Object(fn.formatDate)(this.maxDate||this.minDate,this.timeFormat):""},timeFormat:function(){return this.format?Object(fn.extractTimeFormat)(this.format):"HH:mm:ss"},dateFormat:function(){return this.format?Object(fn.extractDateFormat)(this.format):"yyyy-MM-dd"},enableMonthArrow:function(){var e=(this.leftMonth+1)%12,t=this.leftMonth+1>=12?1:0;return this.unlinkPanels&&new Date(this.leftYear+t,e)=12}},data:function(){return{popperClass:"",value:[],defaultValue:null,defaultTime:null,minDate:"",maxDate:"",leftDate:new Date,rightDate:Object(fn.nextMonth)(new Date),rangeState:{endDate:null,selecting:!1,row:null,column:null},showTime:!1,shortcuts:"",visible:"",disabledDate:"",cellClassName:"",firstDayOfWeek:7,minTimePickerVisible:!1,maxTimePickerVisible:!1,format:"",arrowControl:!1,unlinkPanels:!1,dateUserInput:{min:null,max:null},timeUserInput:{min:null,max:null}}},watch:{minDate:function(e){var t=this;this.dateUserInput.min=null,this.timeUserInput.min=null,this.$nextTick(function(){if(t.$refs.maxTimePicker&&t.maxDate&&t.maxDatethis.maxDate&&(this.maxDate=this.minDate)):(this.maxDate=Object(fn.modifyDate)(this.maxDate,i.getFullYear(),i.getMonth(),i.getDate()),this.maxDatethis.maxDate&&(this.maxDate=this.minDate),this.$refs.minTimePicker.value=this.minDate,this.minTimePickerVisible=!1):(this.maxDate=Object(fn.modifyTime)(this.maxDate,i.getHours(),i.getMinutes(),i.getSeconds()),this.maxDate1&&void 0!==arguments[1])||arguments[1],n=this.defaultTime||[],s=Object(fn.modifyWithTimeString)(e.minDate,n[0]),r=Object(fn.modifyWithTimeString)(e.maxDate,n[1]);this.maxDate===r&&this.minDate===s||(this.onPick&&this.onPick(e),this.maxDate=r,this.minDate=s,setTimeout(function(){t.maxDate=r,t.minDate=s},10),i&&!this.showTime&&this.handleConfirm())},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},handleMinTimePick:function(e,t,i){this.minDate=this.minDate||new Date,e&&(this.minDate=Object(fn.modifyTime)(this.minDate,e.getHours(),e.getMinutes(),e.getSeconds())),i||(this.minTimePickerVisible=t),(!this.maxDate||this.maxDate&&this.maxDate.getTime()this.maxDate.getTime()&&(this.minDate=new Date(this.maxDate))},handleMaxTimeClose:function(){this.maxTimePickerVisible=!1},leftPrevYear:function(){this.leftDate=Object(fn.prevYear)(this.leftDate),this.unlinkPanels||(this.rightDate=Object(fn.nextMonth)(this.leftDate))},leftPrevMonth:function(){this.leftDate=Object(fn.prevMonth)(this.leftDate),this.unlinkPanels||(this.rightDate=Object(fn.nextMonth)(this.leftDate))},rightNextYear:function(){this.unlinkPanels?this.rightDate=Object(fn.nextYear)(this.rightDate):(this.leftDate=Object(fn.nextYear)(this.leftDate),this.rightDate=Object(fn.nextMonth)(this.leftDate))},rightNextMonth:function(){this.unlinkPanels?this.rightDate=Object(fn.nextMonth)(this.rightDate):(this.leftDate=Object(fn.nextMonth)(this.leftDate),this.rightDate=Object(fn.nextMonth)(this.leftDate))},leftNextYear:function(){this.leftDate=Object(fn.nextYear)(this.leftDate)},leftNextMonth:function(){this.leftDate=Object(fn.nextMonth)(this.leftDate)},rightPrevYear:function(){this.rightDate=Object(fn.prevYear)(this.rightDate)},rightPrevMonth:function(){this.rightDate=Object(fn.prevMonth)(this.rightDate)},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isValidValue([this.minDate,this.maxDate])&&this.$emit("pick",[this.minDate,this.maxDate],e)},isValidValue:function(e){return Array.isArray(e)&&e&&e[0]&&e[1]&&Object(fn.isDate)(e[0])&&Object(fn.isDate)(e[1])&&e[0].getTime()<=e[1].getTime()&&("function"!=typeof this.disabledDate||!this.disabledDate(e[0])&&!this.disabledDate(e[1]))},resetView:function(){this.minDate&&null==this.maxDate&&(this.rangeState.selecting=!1),this.minDate=this.value&&Object(fn.isDate)(this.value[0])?new Date(this.value[0]):null,this.maxDate=this.value&&Object(fn.isDate)(this.value[0])?new Date(this.value[1]):null}},components:{TimePicker:Ln,DateTable:Xn,ElInput:d.a,ElButton:Y.a}},Zn,[],!1,null,null,null);ts.options.__file="packages/date-picker/src/panel/date-range.vue";var is=ts.exports,ns=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-range-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-left"},[i("div",{staticClass:"el-date-range-picker__header"},[i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevYear}}),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.leftNextYear}}):e._e(),i("div",[e._v(e._s(e.leftLabel))])]),i("month-table",{attrs:{"selection-mode":"range",date:e.leftDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-right"},[i("div",{staticClass:"el-date-range-picker__header"},[e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.rightPrevYear}}):e._e(),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",attrs:{type:"button"},on:{click:e.rightNextYear}}),i("div",[e._v(e._s(e.rightLabel))])]),i("month-table",{attrs:{"selection-mode":"range",date:e.rightDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1)])],2)])])};ns._withStripped=!0;var ss=function(e){return Array.isArray(e)?[new Date(e[0]),new Date(e[1])]:e?[new Date(e),Object(fn.nextMonth)(new Date(e))]:[new Date,Object(fn.nextMonth)(new Date)]},rs=s({mixins:[f.a],directives:{Clickoutside:M.a},computed:{btnDisabled:function(){return!(this.minDate&&this.maxDate&&!this.selecting&&this.isValidValue([this.minDate,this.maxDate]))},leftLabel:function(){return this.leftDate.getFullYear()+" "+this.t("el.datepicker.year")},rightLabel:function(){return this.rightDate.getFullYear()+" "+this.t("el.datepicker.year")},leftYear:function(){return this.leftDate.getFullYear()},rightYear:function(){return this.rightDate.getFullYear()===this.leftDate.getFullYear()?this.leftDate.getFullYear()+1:this.rightDate.getFullYear()},enableYearArrow:function(){return this.unlinkPanels&&this.rightYear>this.leftYear+1}},data:function(){return{popperClass:"",value:[],defaultValue:null,defaultTime:null,minDate:"",maxDate:"",leftDate:new Date,rightDate:Object(fn.nextYear)(new Date),rangeState:{endDate:null,selecting:!1,row:null,column:null},shortcuts:"",visible:"",disabledDate:"",format:"",arrowControl:!1,unlinkPanels:!1}},watch:{value:function(e){if(e){if(Array.isArray(e))if(this.minDate=Object(fn.isDate)(e[0])?new Date(e[0]):null,this.maxDate=Object(fn.isDate)(e[1])?new Date(e[1]):null,this.minDate)if(this.leftDate=this.minDate,this.unlinkPanels&&this.maxDate){var t=this.minDate.getFullYear(),i=this.maxDate.getFullYear();this.rightDate=t===i?Object(fn.nextYear)(this.maxDate):this.maxDate}else this.rightDate=Object(fn.nextYear)(this.leftDate);else this.leftDate=ss(this.defaultValue)[0],this.rightDate=Object(fn.nextYear)(this.leftDate)}else this.minDate=null,this.maxDate=null},defaultValue:function(e){if(!Array.isArray(this.value)){var t=ss(e),i=t[0],n=t[1];this.leftDate=i,this.rightDate=e&&e[1]&&i.getFullYear()!==n.getFullYear()&&this.unlinkPanels?n:Object(fn.nextYear)(this.leftDate)}}},methods:{handleClear:function(){this.minDate=null,this.maxDate=null,this.leftDate=ss(this.defaultValue)[0],this.rightDate=Object(fn.nextYear)(this.leftDate),this.$emit("pick",null)},handleChangeRange:function(e){this.minDate=e.minDate,this.maxDate=e.maxDate,this.rangeState=e.rangeState},handleRangePick:function(e){var t=this,i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.defaultTime||[],s=Object(fn.modifyWithTimeString)(e.minDate,n[0]),r=Object(fn.modifyWithTimeString)(e.maxDate,n[1]);this.maxDate===r&&this.minDate===s||(this.onPick&&this.onPick(e),this.maxDate=r,this.minDate=s,setTimeout(function(){t.maxDate=r,t.minDate=s},10),i&&this.handleConfirm())},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},leftPrevYear:function(){this.leftDate=Object(fn.prevYear)(this.leftDate),this.unlinkPanels||(this.rightDate=Object(fn.prevYear)(this.rightDate))},rightNextYear:function(){this.unlinkPanels||(this.leftDate=Object(fn.nextYear)(this.leftDate)),this.rightDate=Object(fn.nextYear)(this.rightDate)},leftNextYear:function(){this.leftDate=Object(fn.nextYear)(this.leftDate)},rightPrevYear:function(){this.rightDate=Object(fn.prevYear)(this.rightDate)},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isValidValue([this.minDate,this.maxDate])&&this.$emit("pick",[this.minDate,this.maxDate],e)},isValidValue:function(e){return Array.isArray(e)&&e&&e[0]&&e[1]&&Object(fn.isDate)(e[0])&&Object(fn.isDate)(e[1])&&e[0].getTime()<=e[1].getTime()&&("function"!=typeof this.disabledDate||!this.disabledDate(e[0])&&!this.disabledDate(e[1]))},resetView:function(){this.minDate=this.value&&Object(fn.isDate)(this.value[0])?new Date(this.value[0]):null,this.maxDate=this.value&&Object(fn.isDate)(this.value[0])?new Date(this.value[1]):null}},components:{MonthTable:qn,ElInput:d.a,ElButton:Y.a}},ns,[],!1,null,null,null);rs.options.__file="packages/date-picker/src/panel/month-range.vue";var os=rs.exports,as=function(e){return"daterange"===e||"datetimerange"===e?is:"monthrange"===e?os:Jn},ls={mixins:[Tn],name:"ElDatePicker",props:{type:{type:String,default:"date"},timeArrowControl:Boolean},watch:{type:function(e){this.picker?(this.unmountPicker(),this.panel=as(e),this.mountPicker()):this.panel=as(e)}},created:function(){this.panel=as(this.type)},install:function(e){e.component(ls.name,ls)}},cs=ls,us=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],ref:"popper",staticClass:"el-picker-panel time-select el-popper",class:e.popperClass,style:{width:e.width+"px"}},[i("el-scrollbar",{attrs:{noresize:"","wrap-class":"el-picker-panel__content"}},e._l(e.items,function(t){return i("div",{key:t.value,staticClass:"time-select-item",class:{selected:e.value===t.value,disabled:t.disabled,default:t.value===e.defaultValue},attrs:{disabled:t.disabled},on:{click:function(i){e.handleClick(t)}}},[e._v(e._s(t.value))])}),0)],1)])};us._withStripped=!0;var hs=function(e){var t=(e||"").split(":");return t.length>=2?{hours:parseInt(t[0],10),minutes:parseInt(t[1],10)}:null},ds=function(e,t){var i=hs(e),n=hs(t),s=i.minutes+60*i.hours,r=n.minutes+60*n.hours;return s===r?0:s>r?1:-1},ps=function(e,t){var i=hs(e),n=hs(t),s={hours:i.hours,minutes:i.minutes};return s.minutes+=n.minutes,s.hours+=n.hours,s.hours+=Math.floor(s.minutes/60),s.minutes=s.minutes%60,function(e){return(e.hours<10?"0"+e.hours:e.hours)+":"+(e.minutes<10?"0"+e.minutes:e.minutes)}(s)},fs=s({components:{ElScrollbar:L.a},watch:{value:function(e){var t=this;e&&this.$nextTick(function(){return t.scrollToOption()})}},methods:{handleClick:function(e){e.disabled||this.$emit("pick",e.value)},handleClear:function(){this.$emit("pick",null)},scrollToOption:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:".selected",t=this.$refs.popper.querySelector(".el-picker-panel__content");Bt()(t,t.querySelector(e))},handleMenuEnter:function(){var e=this,t=-1!==this.items.map(function(e){return e.value}).indexOf(this.value),i=-1!==this.items.map(function(e){return e.value}).indexOf(this.defaultValue),n=(t?".selected":i&&".default")||".time-select-item:not(.disabled)";this.$nextTick(function(){return e.scrollToOption(n)})},scrollDown:function(e){for(var t=this.items,i=t.length,n=t.length,s=t.map(function(e){return e.value}).indexOf(this.value);n--;)if(!t[s=(s+e+i)%i].disabled)return void this.$emit("pick",t[s].value,!0)},isValidValue:function(e){return-1!==this.items.filter(function(e){return!e.disabled}).map(function(e){return e.value}).indexOf(e)},handleKeydown:function(e){var t=e.keyCode;if(38===t||40===t){var i={40:1,38:-1}[t.toString()];return this.scrollDown(i),void e.stopPropagation()}}},data:function(){return{popperClass:"",start:"09:00",end:"18:00",step:"00:30",value:"",defaultValue:"",visible:!1,minTime:"",maxTime:"",width:0}},computed:{items:function(){var e=this.start,t=this.end,i=this.step,n=[];if(e&&t&&i)for(var s=e;ds(s,t)<=0;)n.push({value:s,disabled:ds(s,this.minTime||"-1:-1")<=0||ds(s,this.maxTime||"100:100")>=0}),s=ps(s,i);return n}}},us,[],!1,null,null,null);fs.options.__file="packages/date-picker/src/panel/time-select.vue";var ms=fs.exports,vs={mixins:[Tn],name:"ElTimeSelect",componentName:"ElTimeSelect",props:{type:{type:String,default:"time-select"}},beforeCreate:function(){this.panel=ms},install:function(e){e.component(vs.name,vs)}},gs=vs,bs=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-time-range-picker el-picker-panel el-popper",class:e.popperClass},[i("div",{staticClass:"el-time-range-picker__content"},[i("div",{staticClass:"el-time-range-picker__cell"},[i("div",{staticClass:"el-time-range-picker__header"},[e._v(e._s(e.t("el.datepicker.startTime")))]),i("div",{staticClass:"el-time-range-picker__body el-time-panel__content",class:{"has-seconds":e.showSeconds,"is-arrow":e.arrowControl}},[i("time-spinner",{ref:"minSpinner",attrs:{"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,date:e.minDate},on:{change:e.handleMinChange,"select-range":e.setMinSelectionRange}})],1)]),i("div",{staticClass:"el-time-range-picker__cell"},[i("div",{staticClass:"el-time-range-picker__header"},[e._v(e._s(e.t("el.datepicker.endTime")))]),i("div",{staticClass:"el-time-range-picker__body el-time-panel__content",class:{"has-seconds":e.showSeconds,"is-arrow":e.arrowControl}},[i("time-spinner",{ref:"maxSpinner",attrs:{"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,date:e.maxDate},on:{change:e.handleMaxChange,"select-range":e.setMaxSelectionRange}})],1)])]),i("div",{staticClass:"el-time-panel__footer"},[i("button",{staticClass:"el-time-panel__btn cancel",attrs:{type:"button"},on:{click:function(t){e.handleCancel()}}},[e._v(e._s(e.t("el.datepicker.cancel")))]),i("button",{staticClass:"el-time-panel__btn confirm",attrs:{type:"button",disabled:e.btnDisabled},on:{click:function(t){e.handleConfirm()}}},[e._v(e._s(e.t("el.datepicker.confirm")))])])])])};bs._withStripped=!0;var ys=Object(fn.parseDate)("00:00:00","HH:mm:ss"),_s=Object(fn.parseDate)("23:59:59","HH:mm:ss"),xs=function(e){return Object(fn.modifyDate)(_s,e.getFullYear(),e.getMonth(),e.getDate())},Cs=function(e,t){return new Date(Math.min(e.getTime()+t,xs(e).getTime()))},ws=s({mixins:[f.a],components:{TimeSpinner:jn},computed:{showSeconds:function(){return-1!==(this.format||"").indexOf("ss")},offset:function(){return this.showSeconds?11:8},spinner:function(){return this.selectionRange[0]this.maxDate.getTime()},amPmMode:function(){return-1!==(this.format||"").indexOf("A")?"A":-1!==(this.format||"").indexOf("a")?"a":""}},data:function(){return{popperClass:"",minDate:new Date,maxDate:new Date,value:[],oldValue:[new Date,new Date],defaultValue:null,format:"HH:mm:ss",visible:!1,selectionRange:[0,2],arrowControl:!1}},watch:{value:function(e){Array.isArray(e)?(this.minDate=new Date(e[0]),this.maxDate=new Date(e[1])):Array.isArray(this.defaultValue)?(this.minDate=new Date(this.defaultValue[0]),this.maxDate=new Date(this.defaultValue[1])):this.defaultValue?(this.minDate=new Date(this.defaultValue),this.maxDate=Cs(new Date(this.defaultValue),36e5)):(this.minDate=new Date,this.maxDate=Cs(new Date,36e5))},visible:function(e){var t=this;e&&(this.oldValue=this.value,this.$nextTick(function(){return t.$refs.minSpinner.emitSelectRange("hours")}))}},methods:{handleClear:function(){this.$emit("pick",null)},handleCancel:function(){this.$emit("pick",this.oldValue)},handleMinChange:function(e){this.minDate=Object(fn.clearMilliseconds)(e),this.handleChange()},handleMaxChange:function(e){this.maxDate=Object(fn.clearMilliseconds)(e),this.handleChange()},handleChange:function(){this.isValidValue([this.minDate,this.maxDate])&&(this.$refs.minSpinner.selectableRange=[[function(e){return Object(fn.modifyDate)(ys,e.getFullYear(),e.getMonth(),e.getDate())}(this.minDate),this.maxDate]],this.$refs.maxSpinner.selectableRange=[[this.minDate,xs(this.maxDate)]],this.$emit("pick",[this.minDate,this.maxDate],!0))},setMinSelectionRange:function(e,t){this.$emit("select-range",e,t,"min"),this.selectionRange=[e,t]},setMaxSelectionRange:function(e,t){this.$emit("select-range",e,t,"max"),this.selectionRange=[e+this.offset,t+this.offset]},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.$refs.minSpinner.selectableRange,i=this.$refs.maxSpinner.selectableRange;this.minDate=Object(fn.limitTimeRange)(this.minDate,t,this.format),this.maxDate=Object(fn.limitTimeRange)(this.maxDate,i,this.format),this.$emit("pick",[this.minDate,this.maxDate],e)},adjustSpinners:function(){this.$refs.minSpinner.adjustSpinners(),this.$refs.maxSpinner.adjustSpinners()},changeSelectionRange:function(e){var t=this.showSeconds?[0,3,6,11,14,17]:[0,3,8,11],i=["hours","minutes"].concat(this.showSeconds?["seconds"]:[]),n=(t.indexOf(this.selectionRange[0])+e+t.length)%t.length,s=t.length/2;n-1}},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:200},title:String,disabled:Boolean,content:String,reference:{},popperClass:String,width:{},visibleArrow:{default:!0},arrowOffset:{type:Number,default:0},transition:{type:String,default:"fade-in-linear"},tabindex:{type:Number,default:0}},computed:{tooltipId:function(){return"el-popover-"+Object(m.generateId)()}},watch:{showPopper:function(e){this.disabled||(e?this.$emit("show"):this.$emit("hide"))}},mounted:function(){var e=this,t=this.referenceElm=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$slots.reference&&this.$slots.reference[0]&&(t=this.referenceElm=this.$slots.reference[0].elm),t&&(Object(fe.addClass)(t,"el-popover__reference"),t.setAttribute("aria-describedby",this.tooltipId),t.setAttribute("tabindex",this.tabindex),i.setAttribute("tabindex",0),"click"!==this.trigger&&(Object(fe.on)(t,"focusin",function(){e.handleFocus();var i=t.__vue__;i&&"function"==typeof i.focus&&i.focus()}),Object(fe.on)(i,"focusin",this.handleFocus),Object(fe.on)(t,"focusout",this.handleBlur),Object(fe.on)(i,"focusout",this.handleBlur)),Object(fe.on)(t,"keydown",this.handleKeydown),Object(fe.on)(t,"click",this.handleClick)),"click"===this.trigger?(Object(fe.on)(t,"click",this.doToggle),Object(fe.on)(document,"click",this.handleDocumentClick)):"hover"===this.trigger?(Object(fe.on)(t,"mouseenter",this.handleMouseEnter),Object(fe.on)(i,"mouseenter",this.handleMouseEnter),Object(fe.on)(t,"mouseleave",this.handleMouseLeave),Object(fe.on)(i,"mouseleave",this.handleMouseLeave)):"focus"===this.trigger&&(this.tabindex<0&&console.warn("[Element Warn][Popover]a negative taindex means that the element cannot be focused by tab key"),t.querySelector("input, textarea")?(Object(fe.on)(t,"focusin",this.doShow),Object(fe.on)(t,"focusout",this.doClose)):(Object(fe.on)(t,"mousedown",this.doShow),Object(fe.on)(t,"mouseup",this.doClose)))},beforeDestroy:function(){this.cleanup()},deactivated:function(){this.cleanup()},methods:{doToggle:function(){this.showPopper=!this.showPopper},doShow:function(){this.showPopper=!0},doClose:function(){this.showPopper=!1},handleFocus:function(){Object(fe.addClass)(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!0)},handleClick:function(){Object(fe.removeClass)(this.referenceElm,"focusing")},handleBlur:function(){Object(fe.removeClass)(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!1)},handleMouseEnter:function(){var e=this;clearTimeout(this._timer),this.openDelay?this._timer=setTimeout(function(){e.showPopper=!0},this.openDelay):this.showPopper=!0},handleKeydown:function(e){27===e.keyCode&&"manual"!==this.trigger&&this.doClose()},handleMouseLeave:function(){var e=this;clearTimeout(this._timer),this.closeDelay?this._timer=setTimeout(function(){e.showPopper=!1},this.closeDelay):this.showPopper=!1},handleDocumentClick:function(e){var t=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$slots.reference&&this.$slots.reference[0]&&(t=this.referenceElm=this.$slots.reference[0].elm),this.$el&&t&&!this.$el.contains(e.target)&&!t.contains(e.target)&&i&&!i.contains(e.target)&&(this.showPopper=!1)},handleAfterEnter:function(){this.$emit("after-enter")},handleAfterLeave:function(){this.$emit("after-leave"),this.doDestroy()},cleanup:function(){(this.openDelay||this.closeDelay)&&clearTimeout(this._timer)}},destroyed:function(){var e=this.reference;Object(fe.off)(e,"click",this.doToggle),Object(fe.off)(e,"mouseup",this.doClose),Object(fe.off)(e,"mousedown",this.doShow),Object(fe.off)(e,"focusin",this.doShow),Object(fe.off)(e,"focusout",this.doClose),Object(fe.off)(e,"mousedown",this.doShow),Object(fe.off)(e,"mouseup",this.doClose),Object(fe.off)(e,"mouseleave",this.handleMouseLeave),Object(fe.off)(e,"mouseenter",this.handleMouseEnter),Object(fe.off)(document,"click",this.handleDocumentClick)}},$s,[],!1,null,null,null);Os.options.__file="packages/popover/src/main.vue";var Es=Os.exports,Ts=function(e,t,i){var n=t.expression?t.value:t.arg,s=i.context.$refs[n];s&&(Array.isArray(s)?s[0].$refs.reference=e:s.$refs.reference=e)},Ps={bind:function(e,t,i){Ts(e,t,i)},inserted:function(e,t,i){Ts(e,t,i)}};di.a.directive("popover",Ps),Es.install=function(e){e.directive("popover",Ps),e.component(Es.name,Es)},Es.directive=Ps;var Ms=Es,Is={name:"ElTooltip",mixins:[j.a],props:{openDelay:{type:Number,default:0},disabled:Boolean,manual:Boolean,effect:{type:String,default:"dark"},arrowOffset:{type:Number,default:0},popperClass:String,content:String,visibleArrow:{default:!0},transition:{type:String,default:"el-fade-in-linear"},popperOptions:{default:function(){return{boundariesPadding:10,gpuAcceleration:!1}}},enterable:{type:Boolean,default:!0},hideAfter:{type:Number,default:0},tabindex:{type:Number,default:0}},data:function(){return{tooltipId:"el-tooltip-"+Object(m.generateId)(),timeoutPending:null,focusing:!1}},beforeCreate:function(){var e=this;this.$isServer||(this.popperVM=new di.a({data:{node:""},render:function(e){return this.node}}).$mount(),this.debounceClose=T()(200,function(){return e.handleClosePopper()}))},render:function(e){var t=this;this.popperVM&&(this.popperVM.node=e("transition",{attrs:{name:this.transition},on:{afterLeave:this.doDestroy}},[e("div",{on:{mouseleave:function(){t.setExpectedState(!1),t.debounceClose()},mouseenter:function(){t.setExpectedState(!0)}},ref:"popper",attrs:{role:"tooltip",id:this.tooltipId,"aria-hidden":this.disabled||!this.showPopper?"true":"false"},directives:[{name:"show",value:!this.disabled&&this.showPopper}],class:["el-tooltip__popper","is-"+this.effect,this.popperClass]},[this.$slots.content||this.content])]));var i=this.getFirstElement();if(!i)return null;var n=i.data=i.data||{};return n.staticClass=this.addTooltipClass(n.staticClass),i},mounted:function(){var e=this;this.referenceElm=this.$el,1===this.$el.nodeType&&(this.$el.setAttribute("aria-describedby",this.tooltipId),this.$el.setAttribute("tabindex",this.tabindex),Object(fe.on)(this.referenceElm,"mouseenter",this.show),Object(fe.on)(this.referenceElm,"mouseleave",this.hide),Object(fe.on)(this.referenceElm,"focus",function(){if(e.$slots.default&&e.$slots.default.length){var t=e.$slots.default[0].componentInstance;t&&t.focus?t.focus():e.handleFocus()}else e.handleFocus()}),Object(fe.on)(this.referenceElm,"blur",this.handleBlur),Object(fe.on)(this.referenceElm,"click",this.removeFocusing)),this.value&&this.popperVM&&this.popperVM.$nextTick(function(){e.value&&e.updatePopper()})},watch:{focusing:function(e){e?Object(fe.addClass)(this.referenceElm,"focusing"):Object(fe.removeClass)(this.referenceElm,"focusing")}},methods:{show:function(){this.setExpectedState(!0),this.handleShowPopper()},hide:function(){this.setExpectedState(!1),this.debounceClose()},handleFocus:function(){this.focusing=!0,this.show()},handleBlur:function(){this.focusing=!1,this.hide()},removeFocusing:function(){this.focusing=!1},addTooltipClass:function(e){return e?"el-tooltip "+e.replace("el-tooltip",""):"el-tooltip"},handleShowPopper:function(){var e=this;this.expectedState&&!this.manual&&(clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.showPopper=!0},this.openDelay),this.hideAfter>0&&(this.timeoutPending=setTimeout(function(){e.showPopper=!1},this.hideAfter)))},handleClosePopper:function(){this.enterable&&this.expectedState||this.manual||(clearTimeout(this.timeout),this.timeoutPending&&clearTimeout(this.timeoutPending),this.showPopper=!1,this.disabled&&this.doDestroy())},setExpectedState:function(e){!1===e&&clearTimeout(this.timeoutPending),this.expectedState=e},getFirstElement:function(){var e=this.$slots.default;if(!Array.isArray(e))return null;for(var t=null,i=0;i0){var t=(Ys=Us.shift()).options;for(var i in t)t.hasOwnProperty(i)&&(Ks[i]=t[i]);void 0===t.callback&&(Ks.callback=Gs);var n=Ks.callback;Ks.callback=function(t,i){n(t,i),e()},Object(Rs.isVNode)(Ks.message)?(Ks.$slots.default=[Ks.message],Ks.message=null):delete Ks.$slots.default,["modal","showClose","closeOnClickModal","closeOnPressEscape","closeOnHashChange"].forEach(function(e){void 0===Ks[e]&&(Ks[e]=!0)}),document.body.appendChild(Ks.$el),di.a.nextTick(function(){Ks.visible=!0})}},Qs=function e(t,i){if(!di.a.prototype.$isServer){if("string"==typeof t||Object(Rs.isVNode)(t)?(t={message:t},"string"==typeof arguments[1]&&(t.title=arguments[1])):t.callback&&!i&&(i=t.callback),"undefined"!=typeof Promise)return new Promise(function(n,s){Us.push({options:ze()({},Ws,e.defaults,t),callback:i,resolve:n,reject:s}),Xs()});Us.push({options:ze()({},Ws,e.defaults,t),callback:i}),Xs()}};Qs.setDefaults=function(e){Qs.defaults=e},Qs.alert=function(e,t,i){return"object"===(void 0===t?"undefined":Hs(t))?(i=t,t=""):void 0===t&&(t=""),Qs(ze()({title:t,message:e,$type:"alert",closeOnPressEscape:!1,closeOnClickModal:!1},i))},Qs.confirm=function(e,t,i){return"object"===(void 0===t?"undefined":Hs(t))?(i=t,t=""):void 0===t&&(t=""),Qs(ze()({title:t,message:e,$type:"confirm",showCancelButton:!0},i))},Qs.prompt=function(e,t,i){return"object"===(void 0===t?"undefined":Hs(t))?(i=t,t=""):void 0===t&&(t=""),Qs(ze()({title:t,message:e,showCancelButton:!0,showInput:!0,$type:"prompt"},i))},Qs.close=function(){Ks.doClose(),Ks.visible=!1,Us=[],Ys=null};var Js=Qs,Zs=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-breadcrumb",attrs:{"aria-label":"Breadcrumb",role:"navigation"}},[this._t("default")],2)};Zs._withStripped=!0;var er=s({name:"ElBreadcrumb",props:{separator:{type:String,default:"/"},separatorClass:{type:String,default:""}},provide:function(){return{elBreadcrumb:this}},mounted:function(){var e=this.$el.querySelectorAll(".el-breadcrumb__item");e.length&&e[e.length-1].setAttribute("aria-current","page")}},Zs,[],!1,null,null,null);er.options.__file="packages/breadcrumb/src/breadcrumb.vue";var tr=er.exports;tr.install=function(e){e.component(tr.name,tr)};var ir=tr,nr=function(){var e=this.$createElement,t=this._self._c||e;return t("span",{staticClass:"el-breadcrumb__item"},[t("span",{ref:"link",class:["el-breadcrumb__inner",this.to?"is-link":""],attrs:{role:"link"}},[this._t("default")],2),this.separatorClass?t("i",{staticClass:"el-breadcrumb__separator",class:this.separatorClass}):t("span",{staticClass:"el-breadcrumb__separator",attrs:{role:"presentation"}},[this._v(this._s(this.separator))])])};nr._withStripped=!0;var sr=s({name:"ElBreadcrumbItem",props:{to:{},replace:Boolean},data:function(){return{separator:"",separatorClass:""}},inject:["elBreadcrumb"],mounted:function(){var e=this;this.separator=this.elBreadcrumb.separator,this.separatorClass=this.elBreadcrumb.separatorClass;var t=this.$refs.link;t.setAttribute("role","link"),t.addEventListener("click",function(t){var i=e.to,n=e.$router;i&&n&&(e.replace?n.replace(i):n.push(i))})}},nr,[],!1,null,null,null);sr.options.__file="packages/breadcrumb/src/breadcrumb-item.vue";var rr=sr.exports;rr.install=function(e){e.component(rr.name,rr)};var or=rr,ar=function(){var e=this.$createElement;return(this._self._c||e)("form",{staticClass:"el-form",class:[this.labelPosition?"el-form--label-"+this.labelPosition:"",{"el-form--inline":this.inline}]},[this._t("default")],2)};ar._withStripped=!0;var lr=s({name:"ElForm",componentName:"ElForm",provide:function(){return{elForm:this}},props:{model:Object,rules:Object,labelPosition:String,labelWidth:String,labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},size:String,disabled:Boolean,validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:{type:Boolean,default:!1}},watch:{rules:function(){this.fields.forEach(function(e){e.removeValidateEvents(),e.addValidateEvents()}),this.validateOnRuleChange&&this.validate(function(){})}},computed:{autoLabelWidth:function(){if(!this.potentialLabelWidthArr.length)return 0;var e=Math.max.apply(Math,this.potentialLabelWidthArr);return e?e+"px":""}},data:function(){return{fields:[],potentialLabelWidthArr:[]}},created:function(){var e=this;this.$on("el.form.addField",function(t){t&&e.fields.push(t)}),this.$on("el.form.removeField",function(t){t.prop&&e.fields.splice(e.fields.indexOf(t),1)})},methods:{resetFields:function(){this.model?this.fields.forEach(function(e){e.resetField()}):console.warn("[Element Warn][Form]model is required for resetFields to work.")},clearValidate:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];(e.length?"string"==typeof e?this.fields.filter(function(t){return e===t.prop}):this.fields.filter(function(t){return e.indexOf(t.prop)>-1}):this.fields).forEach(function(e){e.clearValidate()})},validate:function(e){var t=this;if(this.model){var i=void 0;"function"!=typeof e&&window.Promise&&(i=new window.Promise(function(t,i){e=function(e){e?t(e):i(e)}}));var n=!0,s=0;0===this.fields.length&&e&&e(!0);var r={};return this.fields.forEach(function(i){i.validate("",function(i,o){i&&(n=!1),r=ze()({},r,o),"function"==typeof e&&++s===t.fields.length&&e(n,r)})}),i||void 0}console.warn("[Element Warn][Form]model is required for validate to work!")},validateField:function(e,t){e=[].concat(e);var i=this.fields.filter(function(t){return-1!==e.indexOf(t.prop)});i.length?i.forEach(function(e){e.validate("",t)}):console.warn("[Element Warn]please pass correct props!")},getLabelWidthIndex:function(e){var t=this.potentialLabelWidthArr.indexOf(e);if(-1===t)throw new Error("[ElementForm]unpected width ",e);return t},registerLabelWidth:function(e,t){if(e&&t){var i=this.getLabelWidthIndex(t);this.potentialLabelWidthArr.splice(i,1,e)}else e&&this.potentialLabelWidthArr.push(e)},deregisterLabelWidth:function(e){var t=this.getLabelWidthIndex(e);this.potentialLabelWidthArr.splice(t,1)}}},ar,[],!1,null,null,null);lr.options.__file="packages/form/src/form.vue";var cr=lr.exports;cr.install=function(e){e.component(cr.name,cr)};var ur=cr,hr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-form-item",class:[{"el-form-item--feedback":e.elForm&&e.elForm.statusIcon,"is-error":"error"===e.validateState,"is-validating":"validating"===e.validateState,"is-success":"success"===e.validateState,"is-required":e.isRequired||e.required,"is-no-asterisk":e.elForm&&e.elForm.hideRequiredAsterisk},e.sizeClass?"el-form-item--"+e.sizeClass:""]},[i("label-wrap",{attrs:{"is-auto-width":e.labelStyle&&"auto"===e.labelStyle.width,"update-all":"auto"===e.form.labelWidth}},[e.label||e.$slots.label?i("label",{staticClass:"el-form-item__label",style:e.labelStyle,attrs:{for:e.labelFor}},[e._t("label",[e._v(e._s(e.label+e.form.labelSuffix))])],2):e._e()]),i("div",{staticClass:"el-form-item__content",style:e.contentStyle},[e._t("default"),i("transition",{attrs:{name:"el-zoom-in-top"}},["error"===e.validateState&&e.showMessage&&e.form.showMessage?e._t("error",[i("div",{staticClass:"el-form-item__error",class:{"el-form-item__error--inline":"boolean"==typeof e.inlineMessage?e.inlineMessage:e.elForm&&e.elForm.inlineMessage||!1}},[e._v("\n "+e._s(e.validateMessage)+"\n ")])],{error:e.validateMessage}):e._e()],2)],2)],1)};hr._withStripped=!0;var dr=i(40),pr=i.n(dr),fr=s({props:{isAutoWidth:Boolean,updateAll:Boolean},inject:["elForm","elFormItem"],render:function(){var e=arguments[0],t=this.$slots.default;if(!t)return null;if(this.isAutoWidth){var i=this.elForm.autoLabelWidth,n={};if(i&&"auto"!==i){var s=parseInt(i,10)-this.computedWidth;s&&(n.marginLeft=s+"px")}return e("div",{class:"el-form-item__label-wrap",style:n},[t])}return t[0]},methods:{getLabelWidth:function(){if(this.$el&&this.$el.firstElementChild){var e=window.getComputedStyle(this.$el.firstElementChild).width;return Math.ceil(parseFloat(e))}return 0},updateLabelWidth:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"update";this.$slots.default&&this.isAutoWidth&&this.$el.firstElementChild&&("update"===e?this.computedWidth=this.getLabelWidth():"remove"===e&&this.elForm.deregisterLabelWidth(this.computedWidth))}},watch:{computedWidth:function(e,t){this.updateAll&&(this.elForm.registerLabelWidth(e,t),this.elFormItem.updateComputedLabelWidth(e))}},data:function(){return{computedWidth:0}},mounted:function(){this.updateLabelWidth("update")},updated:function(){this.updateLabelWidth("update")},beforeDestroy:function(){this.updateLabelWidth("remove")}},void 0,void 0,!1,null,null,null);fr.options.__file="packages/form/src/label-wrap.vue";var mr=fr.exports,vr=s({name:"ElFormItem",componentName:"ElFormItem",mixins:[k.a],provide:function(){return{elFormItem:this}},inject:["elForm"],props:{label:String,labelWidth:String,prop:String,required:{type:Boolean,default:void 0},rules:[Object,Array],error:String,validateStatus:String,for:String,inlineMessage:{type:[String,Boolean],default:""},showMessage:{type:Boolean,default:!0},size:String},components:{LabelWrap:mr},watch:{error:{immediate:!0,handler:function(e){this.validateMessage=e,this.validateState=e?"error":""}},validateStatus:function(e){this.validateState=e}},computed:{labelFor:function(){return this.for||this.prop},labelStyle:function(){var e={};if("top"===this.form.labelPosition)return e;var t=this.labelWidth||this.form.labelWidth;return t&&(e.width=t),e},contentStyle:function(){var e={},t=this.label;if("top"===this.form.labelPosition||this.form.inline)return e;if(!t&&!this.labelWidth&&this.isNested)return e;var i=this.labelWidth||this.form.labelWidth;return"auto"===i?"auto"===this.labelWidth?e.marginLeft=this.computedLabelWidth:"auto"===this.form.labelWidth&&(e.marginLeft=this.elForm.autoLabelWidth):e.marginLeft=i,e},form:function(){for(var e=this.$parent,t=e.$options.componentName;"ElForm"!==t;)"ElFormItem"===t&&(this.isNested=!0),t=(e=e.$parent).$options.componentName;return e},fieldValue:function(){var e=this.form.model;if(e&&this.prop){var t=this.prop;return-1!==t.indexOf(":")&&(t=t.replace(/:/,".")),Object(m.getPropByPath)(e,t,!0).v}},isRequired:function(){var e=this.getRules(),t=!1;return e&&e.length&&e.every(function(e){return!e.required||(t=!0,!1)}),t},_formSize:function(){return this.elForm.size},elFormItemSize:function(){return this.size||this._formSize},sizeClass:function(){return this.elFormItemSize||(this.$ELEMENT||{}).size}},data:function(){return{validateState:"",validateMessage:"",validateDisabled:!1,validator:{},isNested:!1,computedLabelWidth:""}},methods:{validate:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:m.noop;this.validateDisabled=!1;var n=this.getFilteredRule(e);if((!n||0===n.length)&&void 0===this.required)return i(),!0;this.validateState="validating";var s={};n&&n.length>0&&n.forEach(function(e){delete e.trigger}),s[this.prop]=n;var r=new pr.a(s),o={};o[this.prop]=this.fieldValue,r.validate(o,{firstFields:!0},function(e,n){t.validateState=e?"error":"success",t.validateMessage=e?e[0].message:"",i(t.validateMessage,n),t.elForm&&t.elForm.$emit("validate",t.prop,!e,t.validateMessage||null)})},clearValidate:function(){this.validateState="",this.validateMessage="",this.validateDisabled=!1},resetField:function(){var e=this;this.validateState="",this.validateMessage="";var t=this.form.model,i=this.fieldValue,n=this.prop;-1!==n.indexOf(":")&&(n=n.replace(/:/,"."));var s=Object(m.getPropByPath)(t,n,!0);this.validateDisabled=!0,Array.isArray(i)?s.o[s.k]=[].concat(this.initialValue):s.o[s.k]=this.initialValue,this.$nextTick(function(){e.validateDisabled=!1}),this.broadcast("ElTimeSelect","fieldReset",this.initialValue)},getRules:function(){var e=this.form.rules,t=this.rules,i=void 0!==this.required?{required:!!this.required}:[],n=Object(m.getPropByPath)(e,this.prop||"");return e=e?n.o[this.prop||""]||n.v:[],[].concat(t||e||[]).concat(i)},getFilteredRule:function(e){return this.getRules().filter(function(t){return!t.trigger||""===e||(Array.isArray(t.trigger)?t.trigger.indexOf(e)>-1:t.trigger===e)}).map(function(e){return ze()({},e)})},onFieldBlur:function(){this.validate("blur")},onFieldChange:function(){this.validateDisabled?this.validateDisabled=!1:this.validate("change")},updateComputedLabelWidth:function(e){this.computedLabelWidth=e?e+"px":""},addValidateEvents:function(){(this.getRules().length||void 0!==this.required)&&(this.$on("el.form.blur",this.onFieldBlur),this.$on("el.form.change",this.onFieldChange))},removeValidateEvents:function(){this.$off()}},mounted:function(){if(this.prop){this.dispatch("ElForm","el.form.addField",[this]);var e=this.fieldValue;Array.isArray(e)&&(e=[].concat(e)),Object.defineProperty(this,"initialValue",{value:e}),this.addValidateEvents()}},beforeDestroy:function(){this.dispatch("ElForm","el.form.removeField",[this])}},hr,[],!1,null,null,null);vr.options.__file="packages/form/src/form-item.vue";var gr=vr.exports;gr.install=function(e){e.component(gr.name,gr)};var br=gr,yr=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-tabs__active-bar",class:"is-"+this.rootTabs.tabPosition,style:this.barStyle})};yr._withStripped=!0;var _r=s({name:"TabBar",props:{tabs:Array},inject:["rootTabs"],computed:{barStyle:{get:function(){var e=this,t={},i=0,n=0,s=-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"width":"height",r="width"===s?"x":"y",o=function(e){return e.toLowerCase().replace(/( |^)[a-z]/g,function(e){return e.toUpperCase()})};this.tabs.every(function(t,r){var a=Object(m.arrayFind)(e.$parent.$refs.tabs||[],function(e){return e.id.replace("tab-","")===t.paneName});if(!a)return!1;if(t.active){n=a["client"+o(s)];var l=window.getComputedStyle(a);return"width"===s&&e.tabs.length>1&&(n-=parseFloat(l.paddingLeft)+parseFloat(l.paddingRight)),"width"===s&&(i+=parseFloat(l.paddingLeft)),!1}return i+=a["client"+o(s)],!0});var a="translate"+o(r)+"("+i+"px)";return t[s]=n+"px",t.transform=a,t.msTransform=a,t.webkitTransform=a,t}}}},yr,[],!1,null,null,null);function xr(){}_r.options.__file="packages/tabs/src/tab-bar.vue";var Cr=function(e){return e.toLowerCase().replace(/( |^)[a-z]/g,function(e){return e.toUpperCase()})},wr=s({name:"TabNav",components:{TabBar:_r.exports},inject:["rootTabs"],props:{panes:Array,currentName:String,editable:Boolean,onTabClick:{type:Function,default:xr},onTabRemove:{type:Function,default:xr},type:String,stretch:Boolean},data:function(){return{scrollable:!1,navOffset:0,isFocus:!1,focusable:!0}},computed:{navStyle:function(){return{transform:"translate"+(-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"X":"Y")+"(-"+this.navOffset+"px)"}},sizeName:function(){return-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"width":"height"}},methods:{scrollPrev:function(){var e=this.$refs.navScroll["offset"+Cr(this.sizeName)],t=this.navOffset;if(t){var i=t>e?t-e:0;this.navOffset=i}},scrollNext:function(){var e=this.$refs.nav["offset"+Cr(this.sizeName)],t=this.$refs.navScroll["offset"+Cr(this.sizeName)],i=this.navOffset;if(!(e-i<=t)){var n=e-i>2*t?i+t:e-t;this.navOffset=n}},scrollToActiveTab:function(){if(this.scrollable){var e=this.$refs.nav,t=this.$el.querySelector(".is-active");if(t){var i=this.$refs.navScroll,n=-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition),s=t.getBoundingClientRect(),r=i.getBoundingClientRect(),o=n?e.offsetWidth-r.width:e.offsetHeight-r.height,a=this.navOffset,l=a;n?(s.leftr.right&&(l=a+s.right-r.right)):(s.topr.bottom&&(l=a+(s.bottom-r.bottom))),l=Math.max(l,0),this.navOffset=Math.min(l,o)}}},update:function(){if(this.$refs.nav){var e=this.sizeName,t=this.$refs.nav["offset"+Cr(e)],i=this.$refs.navScroll["offset"+Cr(e)],n=this.navOffset;if(i0&&(this.navOffset=0)}},changeTab:function(e){var t=e.keyCode,i=void 0,n=void 0,s=void 0;-1!==[37,38,39,40].indexOf(t)&&(s=e.currentTarget.querySelectorAll("[role=tab]"),n=Array.prototype.indexOf.call(s,e.target),s[i=37===t||38===t?0===n?s.length-1:n-1:n0&&void 0!==arguments[0]&&arguments[0];if(this.$slots.default){var i=this.$slots.default.filter(function(e){return e.tag&&e.componentOptions&&"ElTabPane"===e.componentOptions.Ctor.options.name}).map(function(e){return e.componentInstance}),n=!(i.length===this.panes.length&&i.every(function(t,i){return t===e.panes[i]}));(t||n)&&(this.panes=i)}else 0!==this.panes.length&&(this.panes=[])},handleTabClick:function(e,t,i){e.disabled||(this.setCurrentName(t),this.$emit("tab-click",e,i))},handleTabRemove:function(e,t){e.disabled||(t.stopPropagation(),this.$emit("edit",e.name,"remove"),this.$emit("tab-remove",e.name))},handleTabAdd:function(){this.$emit("edit",null,"add"),this.$emit("tab-add")},setCurrentName:function(e){var t=this,i=function(){t.currentName=e,t.$emit("input",e)};if(this.currentName!==e&&this.beforeLeave){var n=this.beforeLeave(e,this.currentName);n&&n.then?n.then(function(){i(),t.$refs.nav&&t.$refs.nav.removeFocus()},function(){}):!1!==n&&i()}else i()}},render:function(e){var t,i=this.type,n=this.handleTabClick,s=this.handleTabRemove,r=this.handleTabAdd,o=this.currentName,a=this.panes,l=this.editable,c=this.addable,u=this.tabPosition,h=this.stretch,d=e("div",{class:["el-tabs__header","is-"+u]},[l||c?e("span",{class:"el-tabs__new-tab",on:{click:r,keydown:function(e){13===e.keyCode&&r()}},attrs:{tabindex:"0"}},[e("i",{class:"el-icon-plus"})]):null,e("tab-nav",{props:{currentName:o,onTabClick:n,onTabRemove:s,editable:l,type:i,panes:a,stretch:h},ref:"nav"})]),p=e("div",{class:"el-tabs__content"},[this.$slots.default]);return e("div",{class:(t={"el-tabs":!0,"el-tabs--card":"card"===i},t["el-tabs--"+u]=!0,t["el-tabs--border-card"]="border-card"===i,t)},["bottom"!==u?[d,p]:[p,d]])},created:function(){this.currentName||this.setCurrentName("0"),this.$on("tab-nav-update",this.calcPaneInstances.bind(null,!0))},mounted:function(){this.calcPaneInstances()},updated:function(){this.calcPaneInstances()}},void 0,void 0,!1,null,null,null);kr.options.__file="packages/tabs/src/tabs.vue";var Sr=kr.exports;Sr.install=function(e){e.component(Sr.name,Sr)};var Dr=Sr,$r=function(){var e=this,t=e.$createElement,i=e._self._c||t;return!e.lazy||e.loaded||e.active?i("div",{directives:[{name:"show",rawName:"v-show",value:e.active,expression:"active"}],staticClass:"el-tab-pane",attrs:{role:"tabpanel","aria-hidden":!e.active,id:"pane-"+e.paneName,"aria-labelledby":"tab-"+e.paneName}},[e._t("default")],2):e._e()};$r._withStripped=!0;var Or=s({name:"ElTabPane",componentName:"ElTabPane",props:{label:String,labelContent:Function,name:String,closable:Boolean,disabled:Boolean,lazy:Boolean},data:function(){return{index:null,loaded:!1}},computed:{isClosable:function(){return this.closable||this.$parent.closable},active:function(){var e=this.$parent.currentName===(this.name||this.index);return e&&(this.loaded=!0),e},paneName:function(){return this.name||this.index}},updated:function(){this.$parent.$emit("tab-nav-update")}},$r,[],!1,null,null,null);Or.options.__file="packages/tabs/src/tab-pane.vue";var Er=Or.exports;Er.install=function(e){e.component(Er.name,Er)};var Tr=Er,Pr=s({name:"ElTag",props:{text:String,closable:Boolean,type:String,hit:Boolean,disableTransitions:Boolean,color:String,size:String,effect:{type:String,default:"light",validator:function(e){return-1!==["dark","light","plain"].indexOf(e)}}},methods:{handleClose:function(e){e.stopPropagation(),this.$emit("close",e)},handleClick:function(e){this.$emit("click",e)}},computed:{tagSize:function(){return this.size||(this.$ELEMENT||{}).size}},render:function(e){var t=this.type,i=this.tagSize,n=this.hit,s=this.effect,r=e("span",{class:["el-tag",t?"el-tag--"+t:"",i?"el-tag--"+i:"",s?"el-tag--"+s:"",n&&"is-hit"],style:{backgroundColor:this.color},on:{click:this.handleClick}},[this.$slots.default,this.closable&&e("i",{class:"el-tag__close el-icon-close",on:{click:this.handleClose}})]);return this.disableTransitions?r:e("transition",{attrs:{name:"el-zoom-in-center"}},[r])}},void 0,void 0,!1,null,null,null);Pr.options.__file="packages/tag/src/tag.vue";var Mr=Pr.exports;Mr.install=function(e){e.component(Mr.name,Mr)};var Ir=Mr,Nr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-tree",class:{"el-tree--highlight-current":e.highlightCurrent,"is-dragging":!!e.dragState.draggingNode,"is-drop-not-allow":!e.dragState.allowDrop,"is-drop-inner":"inner"===e.dragState.dropType},attrs:{role:"tree"}},[e._l(e.root.childNodes,function(t){return i("el-tree-node",{key:e.getNodeKey(t),attrs:{node:t,props:e.props,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,"render-content":e.renderContent},on:{"node-expand":e.handleNodeExpand}})}),e.isEmpty?i("div",{staticClass:"el-tree__empty-block"},[i("span",{staticClass:"el-tree__empty-text"},[e._v(e._s(e.emptyText))])]):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:e.dragState.showDropIndicator,expression:"dragState.showDropIndicator"}],ref:"dropIndicator",staticClass:"el-tree__drop-indicator"})],2)};Nr._withStripped=!0;var jr="$treeNodeId",Fr=function(e,t){t&&!t[jr]&&Object.defineProperty(t,jr,{value:e.id,enumerable:!1,configurable:!1,writable:!1})},Lr=function(e,t){return e?t[e]:t[jr]},Ar=function(){function e(e,t){for(var i=0;i0&&n.lazy&&n.defaultExpandAll&&this.expand(),Array.isArray(this.data)||Fr(this,this.data),this.data){var o=n.defaultExpandedKeys,a=n.key;a&&o&&-1!==o.indexOf(this.key)&&this.expand(null,n.autoExpandParent),a&&void 0!==n.currentNodeKey&&this.key===n.currentNodeKey&&(n.currentNode=this,n.currentNode.isCurrent=!0),n.lazy&&n._initDefaultCheckedNode(this),this.updateLeafState()}}return e.prototype.setData=function(e){Array.isArray(e)||Fr(this,e),this.data=e,this.childNodes=[];for(var t=void 0,i=0,n=(t=0===this.level&&this.data instanceof Array?this.data:zr(this,"children")||[]).length;i1&&void 0!==arguments[1])||arguments[1];return function i(n){for(var s=n.childNodes||[],r=!1,o=0,a=s.length;o-1&&t.splice(i,1);var n=this.childNodes.indexOf(e);n>-1&&(this.store&&this.store.deregisterNode(e),e.parent=null,this.childNodes.splice(n,1)),this.updateLeafState()},e.prototype.removeChildByData=function(e){for(var t=null,i=0;i0;)n.expanded=!0,n=n.parent;i.expanded=!0,e&&e()};this.shouldLoadData()?this.loadData(function(e){e instanceof Array&&(i.checked?i.setChecked(!0,!0):i.store.checkStrictly||Br(i),n())}):n()},e.prototype.doCreateChildren=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.forEach(function(e){t.insertChild(ze()({data:e},i),void 0,!0)})},e.prototype.collapse=function(){this.expanded=!1},e.prototype.shouldLoadData=function(){return!0===this.store.lazy&&this.store.load&&!this.loaded},e.prototype.updateLeafState=function(){if(!0!==this.store.lazy||!0===this.loaded||void 0===this.isLeafByUser){var e=this.childNodes;!this.store.lazy||!0===this.store.lazy&&!0===this.loaded?this.isLeaf=!e||0===e.length:this.isLeaf=!1}else this.isLeaf=this.isLeafByUser},e.prototype.setChecked=function(e,t,i,n){var s=this;if(this.indeterminate="half"===e,this.checked=!0===e,!this.store.checkStrictly){if(!this.shouldLoadData()||this.store.checkDescendants){var r=Vr(this.childNodes),o=r.all,a=r.allWithoutDisable;this.isLeaf||o||!a||(this.checked=!1,e=!1);var l=function(){if(t){for(var i=s.childNodes,r=0,o=i.length;r0&&void 0!==arguments[0]&&arguments[0];if(0===this.level)return this.data;var t=this.data;if(!t)return null;var i=this.store.props,n="children";return i&&(n=i.children||"children"),void 0===t[n]&&(t[n]=null),e&&!t[n]&&(t[n]=[]),t[n]},e.prototype.updateChildren=function(){var e=this,t=this.getChildren()||[],i=this.childNodes.map(function(e){return e.data}),n={},s=[];t.forEach(function(e,t){var r=e[jr];!!r&&Object(m.arrayFindIndex)(i,function(e){return e[jr]===r})>=0?n[r]={index:t,data:e}:s.push({index:t,data:e})}),this.store.lazy||i.forEach(function(t){n[t[jr]]||e.removeChildByData(t)}),s.forEach(function(t){var i=t.index,n=t.data;e.insertChild({data:n},i)}),this.updateLeafState()},e.prototype.loadData=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!0!==this.store.lazy||!this.store.load||this.loaded||this.loading&&!Object.keys(i).length)e&&e.call(this);else{this.loading=!0;this.store.load(this,function(n){t.loaded=!0,t.loading=!1,t.childNodes=[],t.doCreateChildren(n,i),t.updateLeafState(),e&&e.call(t,n)})}},Ar(e,[{key:"label",get:function(){return zr(this,"label")}},{key:"key",get:function(){var e=this.store.key;return this.data?this.data[e]:null}},{key:"disabled",get:function(){return zr(this,"disabled")}},{key:"nextSibling",get:function(){var e=this.parent;if(e){var t=e.childNodes.indexOf(this);if(t>-1)return e.childNodes[t+1]}return null}},{key:"previousSibling",get:function(){var e=this.parent;if(e){var t=e.childNodes.indexOf(this);if(t>-1)return t>0?e.childNodes[t-1]:null}return null}}]),e}(),Wr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var qr=function(){function e(t){var i=this;for(var n in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.currentNode=null,this.currentNodeKey=null,t)t.hasOwnProperty(n)&&(this[n]=t[n]);(this.nodesMap={},this.root=new Hr({data:this.data,store:this}),this.lazy&&this.load)?(0,this.load)(this.root,function(e){i.root.doCreateChildren(e),i._initDefaultCheckedNodes()}):this._initDefaultCheckedNodes()}return e.prototype.filter=function(e){var t=this.filterNodeMethod,i=this.lazy;!function n(s){var r=s.root?s.root.childNodes:s.childNodes;if(r.forEach(function(i){i.visible=t.call(i,e,i.data,i),n(i)}),!s.visible&&r.length){var o;o=!r.some(function(e){return e.visible}),s.root?s.root.visible=!1===o:s.visible=!1===o}e&&(!s.visible||s.isLeaf||i||s.expand())}(this)},e.prototype.setData=function(e){e!==this.root.data?(this.root.setData(e),this._initDefaultCheckedNodes()):this.root.updateChildren()},e.prototype.getNode=function(e){if(e instanceof Hr)return e;var t="object"!==(void 0===e?"undefined":Wr(e))?e:Lr(this.key,e);return this.nodesMap[t]||null},e.prototype.insertBefore=function(e,t){var i=this.getNode(t);i.parent.insertBefore({data:e},i)},e.prototype.insertAfter=function(e,t){var i=this.getNode(t);i.parent.insertAfter({data:e},i)},e.prototype.remove=function(e){var t=this.getNode(e);t&&t.parent&&(t===this.currentNode&&(this.currentNode=null),t.parent.removeChild(t))},e.prototype.append=function(e,t){var i=t?this.getNode(t):this.root;i&&i.insertChild({data:e})},e.prototype._initDefaultCheckedNodes=function(){var e=this,t=this.defaultCheckedKeys||[],i=this.nodesMap;t.forEach(function(t){var n=i[t];n&&n.setChecked(!0,!e.checkStrictly)})},e.prototype._initDefaultCheckedNode=function(e){-1!==(this.defaultCheckedKeys||[]).indexOf(e.key)&&e.setChecked(!0,!this.checkStrictly)},e.prototype.setDefaultCheckedKey=function(e){e!==this.defaultCheckedKeys&&(this.defaultCheckedKeys=e,this._initDefaultCheckedNodes())},e.prototype.registerNode=function(e){this.key&&e&&e.data&&(void 0!==e.key&&(this.nodesMap[e.key]=e))},e.prototype.deregisterNode=function(e){var t=this;this.key&&e&&e.data&&(e.childNodes.forEach(function(e){t.deregisterNode(e)}),delete this.nodesMap[e.key])},e.prototype.getCheckedNodes=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=[];return function n(s){(s.root?s.root.childNodes:s.childNodes).forEach(function(s){(s.checked||t&&s.indeterminate)&&(!e||e&&s.isLeaf)&&i.push(s.data),n(s)})}(this),i},e.prototype.getCheckedKeys=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.getCheckedNodes(t).map(function(t){return(t||{})[e.key]})},e.prototype.getHalfCheckedNodes=function(){var e=[];return function t(i){(i.root?i.root.childNodes:i.childNodes).forEach(function(i){i.indeterminate&&e.push(i.data),t(i)})}(this),e},e.prototype.getHalfCheckedKeys=function(){var e=this;return this.getHalfCheckedNodes().map(function(t){return(t||{})[e.key]})},e.prototype._getAllNodes=function(){var e=[],t=this.nodesMap;for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.prototype.updateChildren=function(e,t){var i=this.nodesMap[e];if(i){for(var n=i.childNodes,s=n.length-1;s>=0;s--){var r=n[s];this.remove(r.data)}for(var o=0,a=t.length;o1&&void 0!==arguments[1]&&arguments[1],i=arguments[2],n=this._getAllNodes().sort(function(e,t){return t.level-e.level}),s=Object.create(null),r=Object.keys(i);n.forEach(function(e){return e.setChecked(!1,!1)});for(var o=0,a=n.length;o-1){for(var u=l.parent;u&&u.level>0;)s[u.data[e]]=!0,u=u.parent;l.isLeaf||this.checkStrictly?l.setChecked(!0,!1):(l.setChecked(!0,!0),t&&function(){l.setChecked(!1,!1);!function e(t){t.childNodes.forEach(function(t){t.isLeaf||t.setChecked(!1,!1),e(t)})}(l)}())}else l.checked&&!s[c]&&l.setChecked(!1,!1)}},e.prototype.setCheckedNodes=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.key,n={};e.forEach(function(e){n[(e||{})[i]]=!0}),this._setCheckedKeys(i,t,n)},e.prototype.setCheckedKeys=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.defaultCheckedKeys=e;var i=this.key,n={};e.forEach(function(e){n[e]=!0}),this._setCheckedKeys(i,t,n)},e.prototype.setDefaultExpandedKeys=function(e){var t=this;e=e||[],this.defaultExpandedKeys=e,e.forEach(function(e){var i=t.getNode(e);i&&i.expand(null,t.autoExpandParent)})},e.prototype.setChecked=function(e,t,i){var n=this.getNode(e);n&&n.setChecked(!!t,i)},e.prototype.getCurrentNode=function(){return this.currentNode},e.prototype.setCurrentNode=function(e){var t=this.currentNode;t&&(t.isCurrent=!1),this.currentNode=e,this.currentNode.isCurrent=!0},e.prototype.setUserCurrentNode=function(e){var t=e[this.key],i=this.nodesMap[t];this.setCurrentNode(i)},e.prototype.setCurrentNodeKey=function(e){if(null===e||void 0===e)return this.currentNode&&(this.currentNode.isCurrent=!1),void(this.currentNode=null);var t=this.getNode(e);t&&this.setCurrentNode(t)},e}(),Yr=function(){var e=this,t=this,i=t.$createElement,n=t._self._c||i;return n("div",{directives:[{name:"show",rawName:"v-show",value:t.node.visible,expression:"node.visible"}],ref:"node",staticClass:"el-tree-node",class:{"is-expanded":t.expanded,"is-current":t.node.isCurrent,"is-hidden":!t.node.visible,"is-focusable":!t.node.disabled,"is-checked":!t.node.disabled&&t.node.checked},attrs:{role:"treeitem",tabindex:"-1","aria-expanded":t.expanded,"aria-disabled":t.node.disabled,"aria-checked":t.node.checked,draggable:t.tree.draggable},on:{click:function(e){return e.stopPropagation(),t.handleClick(e)},contextmenu:function(t){return e.handleContextMenu(t)},dragstart:function(e){return e.stopPropagation(),t.handleDragStart(e)},dragover:function(e){return e.stopPropagation(),t.handleDragOver(e)},dragend:function(e){return e.stopPropagation(),t.handleDragEnd(e)},drop:function(e){return e.stopPropagation(),t.handleDrop(e)}}},[n("div",{staticClass:"el-tree-node__content",style:{"padding-left":(t.node.level-1)*t.tree.indent+"px"}},[n("span",{class:[{"is-leaf":t.node.isLeaf,expanded:!t.node.isLeaf&&t.expanded},"el-tree-node__expand-icon",t.tree.iconClass?t.tree.iconClass:"el-icon-caret-right"],on:{click:function(e){return e.stopPropagation(),t.handleExpandIconClick(e)}}}),t.showCheckbox?n("el-checkbox",{attrs:{indeterminate:t.node.indeterminate,disabled:!!t.node.disabled},on:{change:t.handleCheckChange},nativeOn:{click:function(e){e.stopPropagation()}},model:{value:t.node.checked,callback:function(e){t.$set(t.node,"checked",e)},expression:"node.checked"}}):t._e(),t.node.loading?n("span",{staticClass:"el-tree-node__loading-icon el-icon-loading"}):t._e(),n("node-content",{attrs:{node:t.node}})],1),n("el-collapse-transition",[!t.renderAfterExpand||t.childNodeRendered?n("div",{directives:[{name:"show",rawName:"v-show",value:t.expanded,expression:"expanded"}],staticClass:"el-tree-node__children",attrs:{role:"group","aria-expanded":t.expanded}},t._l(t.node.childNodes,function(e){return n("el-tree-node",{key:t.getNodeKey(e),attrs:{"render-content":t.renderContent,"render-after-expand":t.renderAfterExpand,"show-checkbox":t.showCheckbox,node:e},on:{"node-expand":t.handleChildNodeExpand}})}),1):t._e()])],1)};Yr._withStripped=!0;var Kr=s({name:"ElTreeNode",componentName:"ElTreeNode",mixins:[k.a],props:{node:{default:function(){return{}}},props:{},renderContent:Function,renderAfterExpand:{type:Boolean,default:!0},showCheckbox:{type:Boolean,default:!1}},components:{ElCollapseTransition:ye.a,ElCheckbox:ri.a,NodeContent:{props:{node:{required:!0}},render:function(e){var t=this.$parent,i=t.tree,n=this.node,s=n.data,r=n.store;return t.renderContent?t.renderContent.call(t._renderProxy,e,{_self:i.$vnode.context,node:n,data:s,store:r}):i.$scopedSlots.default?i.$scopedSlots.default({node:n,data:s}):e("span",{class:"el-tree-node__label"},[n.label])}}},data:function(){return{tree:null,expanded:!1,childNodeRendered:!1,oldChecked:null,oldIndeterminate:null}},watch:{"node.indeterminate":function(e){this.handleSelectChange(this.node.checked,e)},"node.checked":function(e){this.handleSelectChange(e,this.node.indeterminate)},"node.expanded":function(e){var t=this;this.$nextTick(function(){return t.expanded=e}),e&&(this.childNodeRendered=!0)}},methods:{getNodeKey:function(e){return Lr(this.tree.nodeKey,e.data)},handleSelectChange:function(e,t){this.oldChecked!==e&&this.oldIndeterminate!==t&&this.tree.$emit("check-change",this.node.data,e,t),this.oldChecked=e,this.indeterminate=t},handleClick:function(){var e=this.tree.store;e.setCurrentNode(this.node),this.tree.$emit("current-change",e.currentNode?e.currentNode.data:null,e.currentNode),this.tree.currentNode=this,this.tree.expandOnClickNode&&this.handleExpandIconClick(),this.tree.checkOnClickNode&&!this.node.disabled&&this.handleCheckChange(null,{target:{checked:!this.node.checked}}),this.tree.$emit("node-click",this.node.data,this.node,this)},handleContextMenu:function(e){this.tree._events["node-contextmenu"]&&this.tree._events["node-contextmenu"].length>0&&(e.stopPropagation(),e.preventDefault()),this.tree.$emit("node-contextmenu",e,this.node.data,this.node,this)},handleExpandIconClick:function(){this.node.isLeaf||(this.expanded?(this.tree.$emit("node-collapse",this.node.data,this.node,this),this.node.collapse()):(this.node.expand(),this.$emit("node-expand",this.node.data,this.node,this)))},handleCheckChange:function(e,t){var i=this;this.node.setChecked(t.target.checked,!this.tree.checkStrictly),this.$nextTick(function(){var e=i.tree.store;i.tree.$emit("check",i.node.data,{checkedNodes:e.getCheckedNodes(),checkedKeys:e.getCheckedKeys(),halfCheckedNodes:e.getHalfCheckedNodes(),halfCheckedKeys:e.getHalfCheckedKeys()})})},handleChildNodeExpand:function(e,t,i){this.broadcast("ElTreeNode","tree-node-expand",t),this.tree.$emit("node-expand",e,t,i)},handleDragStart:function(e){this.tree.draggable&&this.tree.$emit("tree-node-drag-start",e,this)},handleDragOver:function(e){this.tree.draggable&&(this.tree.$emit("tree-node-drag-over",e,this),e.preventDefault())},handleDrop:function(e){e.preventDefault()},handleDragEnd:function(e){this.tree.draggable&&this.tree.$emit("tree-node-drag-end",e,this)}},created:function(){var e=this,t=this.$parent;t.isTree?this.tree=t:this.tree=t.tree;var i=this.tree;i||console.warn("Can not find node's tree.");var n=(i.props||{}).children||"children";this.$watch("node.data."+n,function(){e.node.updateChildren()}),this.node.expanded&&(this.expanded=!0,this.childNodeRendered=!0),this.tree.accordion&&this.$on("tree-node-expand",function(t){e.node!==t&&e.node.collapse()})}},Yr,[],!1,null,null,null);Kr.options.__file="packages/tree/src/tree-node.vue";var Ur=Kr.exports,Gr=s({name:"ElTree",mixins:[k.a],components:{ElTreeNode:Ur},data:function(){return{store:null,root:null,currentNode:null,treeItems:null,checkboxItems:[],dragState:{showDropIndicator:!1,draggingNode:null,dropNode:null,allowDrop:!0}}},props:{data:{type:Array},emptyText:{type:String,default:function(){return Object(Lt.t)("el.tree.emptyText")}},renderAfterExpand:{type:Boolean,default:!0},nodeKey:String,checkStrictly:Boolean,defaultExpandAll:Boolean,expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkDescendants:{type:Boolean,default:!1},autoExpandParent:{type:Boolean,default:!0},defaultCheckedKeys:Array,defaultExpandedKeys:Array,currentNodeKey:[String,Number],renderContent:Function,showCheckbox:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},allowDrag:Function,allowDrop:Function,props:{default:function(){return{children:"children",label:"label",disabled:"disabled"}}},lazy:{type:Boolean,default:!1},highlightCurrent:Boolean,load:Function,filterNodeMethod:Function,accordion:Boolean,indent:{type:Number,default:18},iconClass:String},computed:{children:{set:function(e){this.data=e},get:function(){return this.data}},treeItemArray:function(){return Array.prototype.slice.call(this.treeItems)},isEmpty:function(){var e=this.root.childNodes;return!e||0===e.length||e.every(function(e){return!e.visible})}},watch:{defaultCheckedKeys:function(e){this.store.setDefaultCheckedKey(e)},defaultExpandedKeys:function(e){this.store.defaultExpandedKeys=e,this.store.setDefaultExpandedKeys(e)},data:function(e){this.store.setData(e)},checkboxItems:function(e){Array.prototype.forEach.call(e,function(e){e.setAttribute("tabindex",-1)})},checkStrictly:function(e){this.store.checkStrictly=e}},methods:{filter:function(e){if(!this.filterNodeMethod)throw new Error("[Tree] filterNodeMethod is required when filter");this.store.filter(e)},getNodeKey:function(e){return Lr(this.nodeKey,e.data)},getNodePath:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in getNodePath");var t=this.store.getNode(e);if(!t)return[];for(var i=[t.data],n=t.parent;n&&n!==this.root;)i.push(n.data),n=n.parent;return i.reverse()},getCheckedNodes:function(e,t){return this.store.getCheckedNodes(e,t)},getCheckedKeys:function(e){return this.store.getCheckedKeys(e)},getCurrentNode:function(){var e=this.store.getCurrentNode();return e?e.data:null},getCurrentKey:function(){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in getCurrentKey");var e=this.getCurrentNode();return e?e[this.nodeKey]:null},setCheckedNodes:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedNodes");this.store.setCheckedNodes(e,t)},setCheckedKeys:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedKeys");this.store.setCheckedKeys(e,t)},setChecked:function(e,t,i){this.store.setChecked(e,t,i)},getHalfCheckedNodes:function(){return this.store.getHalfCheckedNodes()},getHalfCheckedKeys:function(){return this.store.getHalfCheckedKeys()},setCurrentNode:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentNode");this.store.setUserCurrentNode(e)},setCurrentKey:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentKey");this.store.setCurrentNodeKey(e)},getNode:function(e){return this.store.getNode(e)},remove:function(e){this.store.remove(e)},append:function(e,t){this.store.append(e,t)},insertBefore:function(e,t){this.store.insertBefore(e,t)},insertAfter:function(e,t){this.store.insertAfter(e,t)},handleNodeExpand:function(e,t,i){this.broadcast("ElTreeNode","tree-node-expand",t),this.$emit("node-expand",e,t,i)},updateKeyChildren:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in updateKeyChild");this.store.updateChildren(e,t)},initTabIndex:function(){this.treeItems=this.$el.querySelectorAll(".is-focusable[role=treeitem]"),this.checkboxItems=this.$el.querySelectorAll("input[type=checkbox]");var e=this.$el.querySelectorAll(".is-checked[role=treeitem]");e.length?e[0].setAttribute("tabindex",0):this.treeItems[0]&&this.treeItems[0].setAttribute("tabindex",0)},handleKeydown:function(e){var t=e.target;if(-1!==t.className.indexOf("el-tree-node")){var i=e.keyCode;this.treeItems=this.$el.querySelectorAll(".is-focusable[role=treeitem]");var n=this.treeItemArray.indexOf(t),s=void 0;[38,40].indexOf(i)>-1&&(e.preventDefault(),s=38===i?0!==n?n-1:0:n-1&&(e.preventDefault(),t.click());var r=t.querySelector('[type="checkbox"]');[13,32].indexOf(i)>-1&&r&&(e.preventDefault(),r.click())}}},created:function(){var e=this;this.isTree=!0,this.store=new qr({key:this.nodeKey,data:this.data,lazy:this.lazy,props:this.props,load:this.load,currentNodeKey:this.currentNodeKey,checkStrictly:this.checkStrictly,checkDescendants:this.checkDescendants,defaultCheckedKeys:this.defaultCheckedKeys,defaultExpandedKeys:this.defaultExpandedKeys,autoExpandParent:this.autoExpandParent,defaultExpandAll:this.defaultExpandAll,filterNodeMethod:this.filterNodeMethod}),this.root=this.store.root;var t=this.dragState;this.$on("tree-node-drag-start",function(i,n){if("function"==typeof e.allowDrag&&!e.allowDrag(n.node))return i.preventDefault(),!1;i.dataTransfer.effectAllowed="move";try{i.dataTransfer.setData("text/plain","")}catch(e){}t.draggingNode=n,e.$emit("node-drag-start",n.node,i)}),this.$on("tree-node-drag-over",function(i,n){var s=function(e,t){for(var i=e;i&&"BODY"!==i.tagName;){if(i.__vue__&&i.__vue__.$options.name===t)return i.__vue__;i=i.parentNode}return null}(i.target,"ElTreeNode"),r=t.dropNode;r&&r!==s&&Object(fe.removeClass)(r.$el,"is-drop-inner");var o=t.draggingNode;if(o&&s){var a=!0,l=!0,c=!0,u=!0;"function"==typeof e.allowDrop&&(a=e.allowDrop(o.node,s.node,"prev"),u=l=e.allowDrop(o.node,s.node,"inner"),c=e.allowDrop(o.node,s.node,"next")),i.dataTransfer.dropEffect=l?"move":"none",(a||l||c)&&r!==s&&(r&&e.$emit("node-drag-leave",o.node,r.node,i),e.$emit("node-drag-enter",o.node,s.node,i)),(a||l||c)&&(t.dropNode=s),s.node.nextSibling===o.node&&(c=!1),s.node.previousSibling===o.node&&(a=!1),s.node.contains(o.node,!1)&&(l=!1),(o.node===s.node||o.node.contains(s.node))&&(a=!1,l=!1,c=!1);var h=s.$el.getBoundingClientRect(),d=e.$el.getBoundingClientRect(),p=void 0,f=a?l?.25:c?.45:1:-1,m=c?l?.75:a?.55:0:1,v=-9999,g=i.clientY-h.top;p=gh.height*m?"after":l?"inner":"none";var b=s.$el.querySelector(".el-tree-node__expand-icon").getBoundingClientRect(),y=e.$refs.dropIndicator;"before"===p?v=b.top-d.top:"after"===p&&(v=b.bottom-d.top),y.style.top=v+"px",y.style.left=b.right-d.left+"px","inner"===p?Object(fe.addClass)(s.$el,"is-drop-inner"):Object(fe.removeClass)(s.$el,"is-drop-inner"),t.showDropIndicator="before"===p||"after"===p,t.allowDrop=t.showDropIndicator||u,t.dropType=p,e.$emit("node-drag-over",o.node,s.node,i)}}),this.$on("tree-node-drag-end",function(i){var n=t.draggingNode,s=t.dropType,r=t.dropNode;if(i.preventDefault(),i.dataTransfer.dropEffect="move",n&&r){var o={data:n.node.data};"none"!==s&&n.node.remove(),"before"===s?r.node.parent.insertBefore(o,r.node):"after"===s?r.node.parent.insertAfter(o,r.node):"inner"===s&&r.node.insertChild(o),"none"!==s&&e.store.registerNode(o),Object(fe.removeClass)(r.$el,"is-drop-inner"),e.$emit("node-drag-end",n.node,r.node,s,i),"none"!==s&&e.$emit("node-drop",n.node,r.node,s,i)}n&&!r&&e.$emit("node-drag-end",n.node,null,s,i),t.showDropIndicator=!1,t.draggingNode=null,t.dropNode=null,t.allowDrop=!0})},mounted:function(){this.initTabIndex(),this.$el.addEventListener("keydown",this.handleKeydown)},updated:function(){this.treeItems=this.$el.querySelectorAll("[role=treeitem]"),this.checkboxItems=this.$el.querySelectorAll("input[type=checkbox]")}},Nr,[],!1,null,null,null);Gr.options.__file="packages/tree/src/tree.vue";var Xr=Gr.exports;Xr.install=function(e){e.component(Xr.name,Xr)};var Qr=Xr,Jr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-alert-fade"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-alert",class:[e.typeClass,e.center?"is-center":"","is-"+e.effect],attrs:{role:"alert"}},[e.showIcon?i("i",{staticClass:"el-alert__icon",class:[e.iconClass,e.isBigIcon]}):e._e(),i("div",{staticClass:"el-alert__content"},[e.title||e.$slots.title?i("span",{staticClass:"el-alert__title",class:[e.isBoldTitle]},[e._t("title",[e._v(e._s(e.title))])],2):e._e(),e.$slots.default&&!e.description?i("p",{staticClass:"el-alert__description"},[e._t("default")],2):e._e(),e.description&&!e.$slots.default?i("p",{staticClass:"el-alert__description"},[e._v(e._s(e.description))]):e._e(),i("i",{directives:[{name:"show",rawName:"v-show",value:e.closable,expression:"closable"}],staticClass:"el-alert__closebtn",class:{"is-customed":""!==e.closeText,"el-icon-close":""===e.closeText},on:{click:function(t){e.close()}}},[e._v(e._s(e.closeText))])])])])};Jr._withStripped=!0;var Zr={success:"el-icon-success",warning:"el-icon-warning",error:"el-icon-error"},eo=s({name:"ElAlert",props:{title:{type:String,default:""},description:{type:String,default:""},type:{type:String,default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,default:"light",validator:function(e){return-1!==["light","dark"].indexOf(e)}}},data:function(){return{visible:!0}},methods:{close:function(){this.visible=!1,this.$emit("close")}},computed:{typeClass:function(){return"el-alert--"+this.type},iconClass:function(){return Zr[this.type]||"el-icon-info"},isBigIcon:function(){return this.description||this.$slots.default?"is-big":""},isBoldTitle:function(){return this.description||this.$slots.default?"is-bold":""}}},Jr,[],!1,null,null,null);eo.options.__file="packages/alert/src/main.vue";var to=eo.exports;to.install=function(e){e.component(to.name,to)};var io=to,no=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-notification-fade"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],class:["el-notification",e.customClass,e.horizontalClass],style:e.positionStyle,attrs:{role:"alert"},on:{mouseenter:function(t){e.clearTimer()},mouseleave:function(t){e.startTimer()},click:e.click}},[e.type||e.iconClass?i("i",{staticClass:"el-notification__icon",class:[e.typeClass,e.iconClass]}):e._e(),i("div",{staticClass:"el-notification__group",class:{"is-with-icon":e.typeClass||e.iconClass}},[i("h2",{staticClass:"el-notification__title",domProps:{textContent:e._s(e.title)}}),i("div",{directives:[{name:"show",rawName:"v-show",value:e.message,expression:"message"}],staticClass:"el-notification__content"},[e._t("default",[e.dangerouslyUseHTMLString?i("p",{domProps:{innerHTML:e._s(e.message)}}):i("p",[e._v(e._s(e.message))])])],2),e.showClose?i("div",{staticClass:"el-notification__closeBtn el-icon-close",on:{click:function(t){return t.stopPropagation(),e.close(t)}}}):e._e()])])])};no._withStripped=!0;var so={success:"success",info:"info",warning:"warning",error:"error"},ro=s({data:function(){return{visible:!1,title:"",message:"",duration:4500,type:"",showClose:!0,customClass:"",iconClass:"",onClose:null,onClick:null,closed:!1,verticalOffset:0,timer:null,dangerouslyUseHTMLString:!1,position:"top-right"}},computed:{typeClass:function(){return this.type&&so[this.type]?"el-icon-"+so[this.type]:""},horizontalClass:function(){return this.position.indexOf("right")>-1?"right":"left"},verticalProperty:function(){return/^top-/.test(this.position)?"top":"bottom"},positionStyle:function(){var e;return(e={})[this.verticalProperty]=this.verticalOffset+"px",e}},watch:{closed:function(e){e&&(this.visible=!1,this.$el.addEventListener("transitionend",this.destroyElement))}},methods:{destroyElement:function(){this.$el.removeEventListener("transitionend",this.destroyElement),this.$destroy(!0),this.$el.parentNode.removeChild(this.$el)},click:function(){"function"==typeof this.onClick&&this.onClick()},close:function(){this.closed=!0,"function"==typeof this.onClose&&this.onClose()},clearTimer:function(){clearTimeout(this.timer)},startTimer:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration))},keydown:function(e){46===e.keyCode||8===e.keyCode?this.clearTimer():27===e.keyCode?this.closed||this.close():this.startTimer()}},mounted:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration)),document.addEventListener("keydown",this.keydown)},beforeDestroy:function(){document.removeEventListener("keydown",this.keydown)}},no,[],!1,null,null,null);ro.options.__file="packages/notification/src/main.vue";var oo=ro.exports,ao=di.a.extend(oo),lo=void 0,co=[],uo=1,ho=function e(t){if(!di.a.prototype.$isServer){var i=(t=ze()({},t)).onClose,n="notification_"+uo++,s=t.position||"top-right";t.onClose=function(){e.close(n,i)},lo=new ao({data:t}),Object(Rs.isVNode)(t.message)&&(lo.$slots.default=[t.message],t.message="REPLACED_BY_VNODE"),lo.id=n,lo.$mount(),document.body.appendChild(lo.$el),lo.visible=!0,lo.dom=lo.$el,lo.dom.style.zIndex=y.PopupManager.nextZIndex();var r=t.offset||0;return co.filter(function(e){return e.position===s}).forEach(function(e){r+=e.$el.offsetHeight+16}),r+=16,lo.verticalOffset=r,co.push(lo),lo}};["success","warning","info","error"].forEach(function(e){ho[e]=function(t){return("string"==typeof t||Object(Rs.isVNode)(t))&&(t={message:t}),t.type=e,ho(t)}}),ho.close=function(e,t){var i=-1,n=co.length,s=co.filter(function(t,n){return t.id===e&&(i=n,!0)})[0];if(s&&("function"==typeof t&&t(s),co.splice(i,1),!(n<=1)))for(var r=s.position,o=s.dom.offsetHeight,a=i;a=0;e--)co[e].close()};var po=ho,fo=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-slider",class:{"is-vertical":e.vertical,"el-slider--with-input":e.showInput},attrs:{role:"slider","aria-valuemin":e.min,"aria-valuemax":e.max,"aria-orientation":e.vertical?"vertical":"horizontal","aria-disabled":e.sliderDisabled}},[e.showInput&&!e.range?i("el-input-number",{ref:"input",staticClass:"el-slider__input",attrs:{step:e.step,disabled:e.sliderDisabled,controls:e.showInputControls,min:e.min,max:e.max,debounce:e.debounce,size:e.inputSize},on:{change:e.emitChange},model:{value:e.firstValue,callback:function(t){e.firstValue=t},expression:"firstValue"}}):e._e(),i("div",{ref:"slider",staticClass:"el-slider__runway",class:{"show-input":e.showInput,disabled:e.sliderDisabled},style:e.runwayStyle,on:{click:e.onSliderClick}},[i("div",{staticClass:"el-slider__bar",style:e.barStyle}),i("slider-button",{ref:"button1",attrs:{vertical:e.vertical,"tooltip-class":e.tooltipClass},model:{value:e.firstValue,callback:function(t){e.firstValue=t},expression:"firstValue"}}),e.range?i("slider-button",{ref:"button2",attrs:{vertical:e.vertical,"tooltip-class":e.tooltipClass},model:{value:e.secondValue,callback:function(t){e.secondValue=t},expression:"secondValue"}}):e._e(),e._l(e.stops,function(t,n){return e.showStops?i("div",{key:n,staticClass:"el-slider__stop",style:e.getStopStyle(t)}):e._e()}),e.markList.length>0?[i("div",e._l(e.markList,function(t,n){return i("div",{key:n,staticClass:"el-slider__stop el-slider__marks-stop",style:e.getStopStyle(t.position)})}),0),i("div",{staticClass:"el-slider__marks"},e._l(e.markList,function(t,n){return i("slider-marker",{key:n,style:e.getStopStyle(t.position),attrs:{mark:t.mark}})}),1)]:e._e()],2)],1)};fo._withStripped=!0;var mo=i(41),vo=i.n(mo),go=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{ref:"button",staticClass:"el-slider__button-wrapper",class:{hover:e.hovering,dragging:e.dragging},style:e.wrapperStyle,attrs:{tabindex:"0"},on:{mouseenter:e.handleMouseEnter,mouseleave:e.handleMouseLeave,mousedown:e.onButtonDown,touchstart:e.onButtonDown,focus:e.handleMouseEnter,blur:e.handleMouseLeave,keydown:[function(t){return"button"in t||!e._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])?"button"in t&&0!==t.button?null:e.onLeftKeyDown(t):null},function(t){return"button"in t||!e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])?"button"in t&&2!==t.button?null:e.onRightKeyDown(t):null},function(t){return"button"in t||!e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?(t.preventDefault(),e.onLeftKeyDown(t)):null},function(t){return"button"in t||!e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?(t.preventDefault(),e.onRightKeyDown(t)):null}]}},[i("el-tooltip",{ref:"tooltip",attrs:{placement:"top","popper-class":e.tooltipClass,disabled:!e.showTooltip}},[i("span",{attrs:{slot:"content"},slot:"content"},[e._v(e._s(e.formatValue))]),i("div",{staticClass:"el-slider__button",class:{hover:e.hovering,dragging:e.dragging}})])],1)};go._withStripped=!0;var bo=s({name:"ElSliderButton",components:{ElTooltip:$e.a},props:{value:{type:Number,default:0},vertical:{type:Boolean,default:!1},tooltipClass:String},data:function(){return{hovering:!1,dragging:!1,isClick:!1,startX:0,currentX:0,startY:0,currentY:0,startPosition:0,newPosition:null,oldValue:this.value}},computed:{disabled:function(){return this.$parent.sliderDisabled},max:function(){return this.$parent.max},min:function(){return this.$parent.min},step:function(){return this.$parent.step},showTooltip:function(){return this.$parent.showTooltip},precision:function(){return this.$parent.precision},currentPosition:function(){return(this.value-this.min)/(this.max-this.min)*100+"%"},enableFormat:function(){return this.$parent.formatTooltip instanceof Function},formatValue:function(){return this.enableFormat&&this.$parent.formatTooltip(this.value)||this.value},wrapperStyle:function(){return this.vertical?{bottom:this.currentPosition}:{left:this.currentPosition}}},watch:{dragging:function(e){this.$parent.dragging=e}},methods:{displayTooltip:function(){this.$refs.tooltip&&(this.$refs.tooltip.showPopper=!0)},hideTooltip:function(){this.$refs.tooltip&&(this.$refs.tooltip.showPopper=!1)},handleMouseEnter:function(){this.hovering=!0,this.displayTooltip()},handleMouseLeave:function(){this.hovering=!1,this.hideTooltip()},onButtonDown:function(e){this.disabled||(e.preventDefault(),this.onDragStart(e),window.addEventListener("mousemove",this.onDragging),window.addEventListener("touchmove",this.onDragging),window.addEventListener("mouseup",this.onDragEnd),window.addEventListener("touchend",this.onDragEnd),window.addEventListener("contextmenu",this.onDragEnd))},onLeftKeyDown:function(){this.disabled||(this.newPosition=parseFloat(this.currentPosition)-this.step/(this.max-this.min)*100,this.setPosition(this.newPosition),this.$parent.emitChange())},onRightKeyDown:function(){this.disabled||(this.newPosition=parseFloat(this.currentPosition)+this.step/(this.max-this.min)*100,this.setPosition(this.newPosition),this.$parent.emitChange())},onDragStart:function(e){this.dragging=!0,this.isClick=!0,"touchstart"===e.type&&(e.clientY=e.touches[0].clientY,e.clientX=e.touches[0].clientX),this.vertical?this.startY=e.clientY:this.startX=e.clientX,this.startPosition=parseFloat(this.currentPosition),this.newPosition=this.startPosition},onDragging:function(e){if(this.dragging){this.isClick=!1,this.displayTooltip(),this.$parent.resetSize();var t=0;"touchmove"===e.type&&(e.clientY=e.touches[0].clientY,e.clientX=e.touches[0].clientX),this.vertical?(this.currentY=e.clientY,t=(this.startY-this.currentY)/this.$parent.sliderSize*100):(this.currentX=e.clientX,t=(this.currentX-this.startX)/this.$parent.sliderSize*100),this.newPosition=this.startPosition+t,this.setPosition(this.newPosition)}},onDragEnd:function(){var e=this;this.dragging&&(setTimeout(function(){e.dragging=!1,e.hideTooltip(),e.isClick||(e.setPosition(e.newPosition),e.$parent.emitChange())},0),window.removeEventListener("mousemove",this.onDragging),window.removeEventListener("touchmove",this.onDragging),window.removeEventListener("mouseup",this.onDragEnd),window.removeEventListener("touchend",this.onDragEnd),window.removeEventListener("contextmenu",this.onDragEnd))},setPosition:function(e){var t=this;if(null!==e&&!isNaN(e)){e<0?e=0:e>100&&(e=100);var i=100/((this.max-this.min)/this.step),n=Math.round(e/i)*i*(this.max-this.min)*.01+this.min;n=parseFloat(n.toFixed(this.precision)),this.$emit("input",n),this.$nextTick(function(){t.displayTooltip(),t.$refs.tooltip&&t.$refs.tooltip.updatePopper()}),this.dragging||this.value===this.oldValue||(this.oldValue=this.value)}}}},go,[],!1,null,null,null);bo.options.__file="packages/slider/src/button.vue";var yo=bo.exports,_o={name:"ElMarker",props:{mark:{type:[String,Object]}},render:function(){var e=arguments[0],t="string"==typeof this.mark?this.mark:this.mark.label;return e("div",{class:"el-slider__marks-text",style:this.mark.style||{}},[t])}},xo=s({name:"ElSlider",mixins:[k.a],inject:{elForm:{default:""}},props:{min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},value:{type:[Number,Array],default:0},showInput:{type:Boolean,default:!1},showInputControls:{type:Boolean,default:!0},inputSize:{type:String,default:"small"},showStops:{type:Boolean,default:!1},showTooltip:{type:Boolean,default:!0},formatTooltip:Function,disabled:{type:Boolean,default:!1},range:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},height:{type:String},debounce:{type:Number,default:300},label:{type:String},tooltipClass:String,marks:Object},components:{ElInputNumber:vo.a,SliderButton:yo,SliderMarker:_o},data:function(){return{firstValue:null,secondValue:null,oldValue:null,dragging:!1,sliderSize:1}},watch:{value:function(e,t){this.dragging||Array.isArray(e)&&Array.isArray(t)&&e.every(function(e,i){return e===t[i]})||this.setValues()},dragging:function(e){e||this.setValues()},firstValue:function(e){this.range?this.$emit("input",[this.minValue,this.maxValue]):this.$emit("input",e)},secondValue:function(){this.range&&this.$emit("input",[this.minValue,this.maxValue])},min:function(){this.setValues()},max:function(){this.setValues()}},methods:{valueChanged:function(){var e=this;return this.range?![this.minValue,this.maxValue].every(function(t,i){return t===e.oldValue[i]}):this.value!==this.oldValue},setValues:function(){if(this.min>this.max)console.error("[Element Error][Slider]min should not be greater than max.");else{var e=this.value;this.range&&Array.isArray(e)?e[1]this.max?this.$emit("input",[this.max,this.max]):e[0]this.max?this.$emit("input",[e[0],this.max]):(this.firstValue=e[0],this.secondValue=e[1],this.valueChanged()&&(this.dispatch("ElFormItem","el.form.change",[this.minValue,this.maxValue]),this.oldValue=e.slice())):this.range||"number"!=typeof e||isNaN(e)||(ethis.max?this.$emit("input",this.max):(this.firstValue=e,this.valueChanged()&&(this.dispatch("ElFormItem","el.form.change",e),this.oldValue=e)))}},setPosition:function(e){var t=this.min+e*(this.max-this.min)/100;if(this.range){var i=void 0;i=Math.abs(this.minValue-t)this.secondValue?"button1":"button2",this.$refs[i].setPosition(e)}else this.$refs.button1.setPosition(e)},onSliderClick:function(e){if(!this.sliderDisabled&&!this.dragging){if(this.resetSize(),this.vertical){var t=this.$refs.slider.getBoundingClientRect().bottom;this.setPosition((t-e.clientY)/this.sliderSize*100)}else{var i=this.$refs.slider.getBoundingClientRect().left;this.setPosition((e.clientX-i)/this.sliderSize*100)}this.emitChange()}},resetSize:function(){this.$refs.slider&&(this.sliderSize=this.$refs.slider["client"+(this.vertical?"Height":"Width")])},emitChange:function(){var e=this;this.$nextTick(function(){e.$emit("change",e.range?[e.minValue,e.maxValue]:e.value)})},getStopStyle:function(e){return this.vertical?{bottom:e+"%"}:{left:e+"%"}}},computed:{stops:function(){var e=this;if(!this.showStops||this.min>this.max)return[];if(0===this.step)return[];for(var t=(this.max-this.min)/this.step,i=100*this.step/(this.max-this.min),n=[],s=1;s100*(e.maxValue-e.min)/(e.max-e.min)}):n.filter(function(t){return t>100*(e.firstValue-e.min)/(e.max-e.min)})},markList:function(){var e=this;return this.marks?Object.keys(this.marks).map(parseFloat).sort(function(e,t){return e-t}).filter(function(t){return t<=e.max&&t>=e.min}).map(function(t){return{point:t,position:100*(t-e.min)/(e.max-e.min),mark:e.marks[t]}}):[]},minValue:function(){return Math.min(this.firstValue,this.secondValue)},maxValue:function(){return Math.max(this.firstValue,this.secondValue)},barSize:function(){return this.range?100*(this.maxValue-this.minValue)/(this.max-this.min)+"%":100*(this.firstValue-this.min)/(this.max-this.min)+"%"},barStart:function(){return this.range?100*(this.minValue-this.min)/(this.max-this.min)+"%":"0%"},precision:function(){var e=[this.min,this.max,this.step].map(function(e){var t=(""+e).split(".")[1];return t?t.length:0});return Math.max.apply(null,e)},runwayStyle:function(){return this.vertical?{height:this.height}:{}},barStyle:function(){return this.vertical?{height:this.barSize,bottom:this.barStart}:{width:this.barSize,left:this.barStart}},sliderDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},mounted:function(){var e=void 0;this.range?(Array.isArray(this.value)?(this.firstValue=Math.max(this.min,this.value[0]),this.secondValue=Math.min(this.max,this.value[1])):(this.firstValue=this.min,this.secondValue=this.max),this.oldValue=[this.firstValue,this.secondValue],e=this.firstValue+"-"+this.secondValue):("number"!=typeof this.value||isNaN(this.value)?this.firstValue=this.min:this.firstValue=Math.min(this.max,Math.max(this.min,this.value)),this.oldValue=this.firstValue,e=this.firstValue),this.$el.setAttribute("aria-valuetext",e),this.$el.setAttribute("aria-label",this.label?this.label:"slider between "+this.min+" and "+this.max),this.resetSize(),window.addEventListener("resize",this.resetSize)},beforeDestroy:function(){window.removeEventListener("resize",this.resetSize)}},fo,[],!1,null,null,null);xo.options.__file="packages/slider/src/main.vue";var Co=xo.exports;Co.install=function(e){e.component(Co.name,Co)};var wo=Co,ko=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-loading-fade"},on:{"after-leave":e.handleAfterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-loading-mask",class:[e.customClass,{"is-fullscreen":e.fullscreen}],style:{backgroundColor:e.background||""}},[i("div",{staticClass:"el-loading-spinner"},[e.spinner?i("i",{class:e.spinner}):i("svg",{staticClass:"circular",attrs:{viewBox:"25 25 50 50"}},[i("circle",{staticClass:"path",attrs:{cx:"50",cy:"50",r:"20",fill:"none"}})]),e.text?i("p",{staticClass:"el-loading-text"},[e._v(e._s(e.text))]):e._e()])])])};ko._withStripped=!0;var So=s({data:function(){return{text:null,spinner:null,background:null,fullscreen:!0,visible:!1,customClass:""}},methods:{handleAfterLeave:function(){this.$emit("after-leave")},setText:function(e){this.text=e}}},ko,[],!1,null,null,null);So.options.__file="packages/loading/src/loading.vue";var Do=So.exports,$o=i(33),Oo=i.n($o),Eo=di.a.extend(Do),To={install:function(e){if(!e.prototype.$isServer){var t=function(t,n){n.value?e.nextTick(function(){n.modifiers.fullscreen?(t.originalPosition=Object(fe.getStyle)(document.body,"position"),t.originalOverflow=Object(fe.getStyle)(document.body,"overflow"),t.maskStyle.zIndex=y.PopupManager.nextZIndex(),Object(fe.addClass)(t.mask,"is-fullscreen"),i(document.body,t,n)):(Object(fe.removeClass)(t.mask,"is-fullscreen"),n.modifiers.body?(t.originalPosition=Object(fe.getStyle)(document.body,"position"),["top","left"].forEach(function(e){var i="top"===e?"scrollTop":"scrollLeft";t.maskStyle[e]=t.getBoundingClientRect()[e]+document.body[i]+document.documentElement[i]-parseInt(Object(fe.getStyle)(document.body,"margin-"+e),10)+"px"}),["height","width"].forEach(function(e){t.maskStyle[e]=t.getBoundingClientRect()[e]+"px"}),i(document.body,t,n)):(t.originalPosition=Object(fe.getStyle)(t,"position"),i(t,t,n)))}):(Oo()(t.instance,function(e){if(t.instance.hiding){t.domVisible=!1;var i=n.modifiers.fullscreen||n.modifiers.body?document.body:t;Object(fe.removeClass)(i,"el-loading-parent--relative"),Object(fe.removeClass)(i,"el-loading-parent--hidden"),t.instance.hiding=!1}},300,!0),t.instance.visible=!1,t.instance.hiding=!0)},i=function(t,i,n){i.domVisible||"none"===Object(fe.getStyle)(i,"display")||"hidden"===Object(fe.getStyle)(i,"visibility")?i.domVisible&&!0===i.instance.hiding&&(i.instance.visible=!0,i.instance.hiding=!1):(Object.keys(i.maskStyle).forEach(function(e){i.mask.style[e]=i.maskStyle[e]}),"absolute"!==i.originalPosition&&"fixed"!==i.originalPosition&&Object(fe.addClass)(t,"el-loading-parent--relative"),n.modifiers.fullscreen&&n.modifiers.lock&&Object(fe.addClass)(t,"el-loading-parent--hidden"),i.domVisible=!0,t.appendChild(i.mask),e.nextTick(function(){i.instance.hiding?i.instance.$emit("after-leave"):i.instance.visible=!0}),i.domInserted=!0)};e.directive("loading",{bind:function(e,i,n){var s=e.getAttribute("element-loading-text"),r=e.getAttribute("element-loading-spinner"),o=e.getAttribute("element-loading-background"),a=e.getAttribute("element-loading-custom-class"),l=n.context,c=new Eo({el:document.createElement("div"),data:{text:l&&l[s]||s,spinner:l&&l[r]||r,background:l&&l[o]||o,customClass:l&&l[a]||a,fullscreen:!!i.modifiers.fullscreen}});e.instance=c,e.mask=c.$el,e.maskStyle={},i.value&&t(e,i)},update:function(e,i){e.instance.setText(e.getAttribute("element-loading-text")),i.oldValue!==i.value&&t(e,i)},unbind:function(e,i){e.domInserted&&(e.mask&&e.mask.parentNode&&e.mask.parentNode.removeChild(e.mask),t(e,{value:!1,modifiers:i.modifiers})),e.instance&&e.instance.$destroy()}})}}},Po=To,Mo=di.a.extend(Do),Io={text:null,fullscreen:!0,body:!1,lock:!1,customClass:""},No=void 0;Mo.prototype.originalPosition="",Mo.prototype.originalOverflow="",Mo.prototype.close=function(){var e=this;this.fullscreen&&(No=void 0),Oo()(this,function(t){var i=e.fullscreen||e.body?document.body:e.target;Object(fe.removeClass)(i,"el-loading-parent--relative"),Object(fe.removeClass)(i,"el-loading-parent--hidden"),e.$el&&e.$el.parentNode&&e.$el.parentNode.removeChild(e.$el),e.$destroy()},300),this.visible=!1};var jo=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!di.a.prototype.$isServer){if("string"==typeof(e=ze()({},Io,e)).target&&(e.target=document.querySelector(e.target)),e.target=e.target||document.body,e.target!==document.body?e.fullscreen=!1:e.body=!0,e.fullscreen&&No)return No;var t=e.body?document.body:e.target,i=new Mo({el:document.createElement("div"),data:e});return function(e,t,i){var n={};e.fullscreen?(i.originalPosition=Object(fe.getStyle)(document.body,"position"),i.originalOverflow=Object(fe.getStyle)(document.body,"overflow"),n.zIndex=y.PopupManager.nextZIndex()):e.body?(i.originalPosition=Object(fe.getStyle)(document.body,"position"),["top","left"].forEach(function(t){var i="top"===t?"scrollTop":"scrollLeft";n[t]=e.target.getBoundingClientRect()[t]+document.body[i]+document.documentElement[i]+"px"}),["height","width"].forEach(function(t){n[t]=e.target.getBoundingClientRect()[t]+"px"})):i.originalPosition=Object(fe.getStyle)(t,"position"),Object.keys(n).forEach(function(e){i.$el.style[e]=n[e]})}(e,t,i),"absolute"!==i.originalPosition&&"fixed"!==i.originalPosition&&Object(fe.addClass)(t,"el-loading-parent--relative"),e.fullscreen&&e.lock&&Object(fe.addClass)(t,"el-loading-parent--hidden"),t.appendChild(i.$el),di.a.nextTick(function(){i.visible=!0}),e.fullscreen&&(No=i),i}},Fo={install:function(e){e.use(Po),e.prototype.$loading=jo},directive:Po,service:jo},Lo=function(){var e=this.$createElement;return(this._self._c||e)("i",{class:"el-icon-"+this.name})};Lo._withStripped=!0;var Ao=s({name:"ElIcon",props:{name:String}},Lo,[],!1,null,null,null);Ao.options.__file="packages/icon/src/icon.vue";var Vo=Ao.exports;Vo.install=function(e){e.component(Vo.name,Vo)};var Bo=Vo,zo={name:"ElRow",componentName:"ElRow",props:{tag:{type:String,default:"div"},gutter:Number,type:String,justify:{type:String,default:"start"},align:{type:String,default:"top"}},computed:{style:function(){var e={};return this.gutter&&(e.marginLeft="-"+this.gutter/2+"px",e.marginRight=e.marginLeft),e}},render:function(e){return e(this.tag,{class:["el-row","start"!==this.justify?"is-justify-"+this.justify:"","top"!==this.align?"is-align-"+this.align:"",{"el-row--flex":"flex"===this.type}],style:this.style},this.$slots.default)},install:function(e){e.component(zo.name,zo)}},Ro=zo,Ho="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Wo={name:"ElCol",props:{span:{type:Number,default:24},tag:{type:String,default:"div"},offset:Number,pull:Number,push:Number,xs:[Number,Object],sm:[Number,Object],md:[Number,Object],lg:[Number,Object],xl:[Number,Object]},computed:{gutter:function(){for(var e=this.$parent;e&&"ElRow"!==e.$options.componentName;)e=e.$parent;return e?e.gutter:0}},render:function(e){var t=this,i=[],n={};return this.gutter&&(n.paddingLeft=this.gutter/2+"px",n.paddingRight=n.paddingLeft),["span","offset","pull","push"].forEach(function(e){(t[e]||0===t[e])&&i.push("span"!==e?"el-col-"+e+"-"+t[e]:"el-col-"+t[e])}),["xs","sm","md","lg","xl"].forEach(function(e){if("number"==typeof t[e])i.push("el-col-"+e+"-"+t[e]);else if("object"===Ho(t[e])){var n=t[e];Object.keys(n).forEach(function(t){i.push("span"!==t?"el-col-"+e+"-"+t+"-"+n[t]:"el-col-"+e+"-"+n[t])})}}),e(this.tag,{class:["el-col",i],style:n},this.$slots.default)},install:function(e){e.component(Wo.name,Wo)}},qo=Wo,Yo=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition-group",{class:["el-upload-list","el-upload-list--"+e.listType,{"is-disabled":e.disabled}],attrs:{tag:"ul",name:"el-list"}},e._l(e.files,function(t){return i("li",{key:t.uid,class:["el-upload-list__item","is-"+t.status,e.focusing?"focusing":""],attrs:{tabindex:"0"},on:{keydown:function(i){if(!("button"in i)&&e._k(i.keyCode,"delete",[8,46],i.key,["Backspace","Delete","Del"]))return null;!e.disabled&&e.$emit("remove",t)},focus:function(t){e.focusing=!0},blur:function(t){e.focusing=!1},click:function(t){e.focusing=!1}}},[e._t("default",["uploading"!==t.status&&["picture-card","picture"].indexOf(e.listType)>-1?i("img",{staticClass:"el-upload-list__item-thumbnail",attrs:{src:t.url,alt:""}}):e._e(),i("a",{staticClass:"el-upload-list__item-name",on:{click:function(i){e.handleClick(t)}}},[i("i",{staticClass:"el-icon-document"}),e._v(e._s(t.name)+"\n ")]),i("label",{staticClass:"el-upload-list__item-status-label"},[i("i",{class:{"el-icon-upload-success":!0,"el-icon-circle-check":"text"===e.listType,"el-icon-check":["picture-card","picture"].indexOf(e.listType)>-1}})]),e.disabled?e._e():i("i",{staticClass:"el-icon-close",on:{click:function(i){e.$emit("remove",t)}}}),e.disabled?e._e():i("i",{staticClass:"el-icon-close-tip"},[e._v(e._s(e.t("el.upload.deleteTip")))]),"uploading"===t.status?i("el-progress",{attrs:{type:"picture-card"===e.listType?"circle":"line","stroke-width":"picture-card"===e.listType?6:2,percentage:e.parsePercentage(t.percentage)}}):e._e(),"picture-card"===e.listType?i("span",{staticClass:"el-upload-list__item-actions"},[e.handlePreview&&"picture-card"===e.listType?i("span",{staticClass:"el-upload-list__item-preview",on:{click:function(i){e.handlePreview(t)}}},[i("i",{staticClass:"el-icon-zoom-in"})]):e._e(),e.disabled?e._e():i("span",{staticClass:"el-upload-list__item-delete",on:{click:function(i){e.$emit("remove",t)}}},[i("i",{staticClass:"el-icon-delete"})])]):e._e()],{file:t})],2)}),0)};Yo._withStripped=!0;var Ko=i(34),Uo=i.n(Ko),Go=s({name:"ElUploadList",mixins:[f.a],data:function(){return{focusing:!1}},components:{ElProgress:Uo.a},props:{files:{type:Array,default:function(){return[]}},disabled:{type:Boolean,default:!1},handlePreview:Function,listType:String},methods:{parsePercentage:function(e){return parseInt(e,10)},handleClick:function(e){this.handlePreview&&this.handlePreview(e)}}},Yo,[],!1,null,null,null);Go.options.__file="packages/upload/src/upload-list.vue";var Xo=Go.exports,Qo=i(24),Jo=i.n(Qo);var Zo=function(){var e=this,t=e.$createElement;return(e._self._c||t)("div",{staticClass:"el-upload-dragger",class:{"is-dragover":e.dragover},on:{drop:function(t){return t.preventDefault(),e.onDrop(t)},dragover:function(t){return t.preventDefault(),e.onDragover(t)},dragleave:function(t){t.preventDefault(),e.dragover=!1}}},[e._t("default")],2)};Zo._withStripped=!0;var ea=s({name:"ElUploadDrag",props:{disabled:Boolean},inject:{uploader:{default:""}},data:function(){return{dragover:!1}},methods:{onDragover:function(){this.disabled||(this.dragover=!0)},onDrop:function(e){if(!this.disabled&&this.uploader){var t=this.uploader.accept;this.dragover=!1,t?this.$emit("file",[].slice.call(e.dataTransfer.files).filter(function(e){var i=e.type,n=e.name,s=n.indexOf(".")>-1?"."+n.split(".").pop():"",r=i.replace(/\/.*$/,"");return t.split(",").map(function(e){return e.trim()}).filter(function(e){return e}).some(function(e){return/\..+$/.test(e)?s===e:/\/\*$/.test(e)?r===e.replace(/\/\*$/,""):!!/^[^\/]+\/[^\/]+$/.test(e)&&i===e})})):this.$emit("file",e.dataTransfer.files)}}}},Zo,[],!1,null,null,null);ea.options.__file="packages/upload/src/upload-dragger.vue";var ta=s({inject:["uploader"],components:{UploadDragger:ea.exports},props:{type:String,action:{type:String,required:!0},name:{type:String,default:"file"},data:Object,headers:Object,withCredentials:Boolean,multiple:Boolean,accept:String,onStart:Function,onProgress:Function,onSuccess:Function,onError:Function,beforeUpload:Function,drag:Boolean,onPreview:{type:Function,default:function(){}},onRemove:{type:Function,default:function(){}},fileList:Array,autoUpload:Boolean,listType:String,httpRequest:{type:Function,default:function(e){if("undefined"!=typeof XMLHttpRequest){var t=new XMLHttpRequest,i=e.action;t.upload&&(t.upload.onprogress=function(t){t.total>0&&(t.percent=t.loaded/t.total*100),e.onProgress(t)});var n=new FormData;e.data&&Object.keys(e.data).forEach(function(t){n.append(t,e.data[t])}),n.append(e.filename,e.file,e.file.name),t.onerror=function(t){e.onError(t)},t.onload=function(){if(t.status<200||t.status>=300)return e.onError(function(e,t,i){var n=void 0;n=i.response?""+(i.response.error||i.response):i.responseText?""+i.responseText:"fail to post "+e+" "+i.status;var s=new Error(n);return s.status=i.status,s.method="post",s.url=e,s}(i,0,t));e.onSuccess(function(e){var t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch(e){return t}}(t))},t.open("post",i,!0),e.withCredentials&&"withCredentials"in t&&(t.withCredentials=!0);var s=e.headers||{};for(var r in s)s.hasOwnProperty(r)&&null!==s[r]&&t.setRequestHeader(r,s[r]);return t.send(n),t}}},disabled:Boolean,limit:Number,onExceed:Function},data:function(){return{mouseover:!1,reqs:{}}},methods:{isImage:function(e){return-1!==e.indexOf("image")},handleChange:function(e){var t=e.target.files;t&&this.uploadFiles(t)},uploadFiles:function(e){var t=this;if(this.limit&&this.fileList.length+e.length>this.limit)this.onExceed&&this.onExceed(e,this.fileList);else{var i=Array.prototype.slice.call(e);this.multiple||(i=i.slice(0,1)),0!==i.length&&i.forEach(function(e){t.onStart(e),t.autoUpload&&t.upload(e)})}},upload:function(e){var t=this;if(this.$refs.input.value=null,!this.beforeUpload)return this.post(e);var i=this.beforeUpload(e);i&&i.then?i.then(function(i){var n=Object.prototype.toString.call(i);if("[object File]"===n||"[object Blob]"===n){for(var s in"[object Blob]"===n&&(i=new File([i],e.name,{type:e.type})),e)e.hasOwnProperty(s)&&(i[s]=e[s]);t.post(i)}else t.post(e)},function(){t.onRemove(null,e)}):!1!==i?this.post(e):this.onRemove(null,e)},abort:function(e){var t=this.reqs;if(e){var i=e;e.uid&&(i=e.uid),t[i]&&t[i].abort()}else Object.keys(t).forEach(function(e){t[e]&&t[e].abort(),delete t[e]})},post:function(e){var t=this,i=e.uid,n={headers:this.headers,withCredentials:this.withCredentials,file:e,data:this.data,filename:this.name,action:this.action,onProgress:function(i){t.onProgress(i,e)},onSuccess:function(n){t.onSuccess(n,e),delete t.reqs[i]},onError:function(n){t.onError(n,e),delete t.reqs[i]}},s=this.httpRequest(n);this.reqs[i]=s,s&&s.then&&s.then(n.onSuccess,n.onError)},handleClick:function(){this.disabled||(this.$refs.input.value=null,this.$refs.input.click())},handleKeydown:function(e){e.target===e.currentTarget&&(13!==e.keyCode&&32!==e.keyCode||this.handleClick())}},render:function(e){var t=this.handleClick,i=this.drag,n=this.name,s=this.handleChange,r=this.multiple,o=this.accept,a=this.listType,l=this.uploadFiles,c=this.disabled,u={class:{"el-upload":!0},on:{click:t,keydown:this.handleKeydown}};return u.class["el-upload--"+a]=!0,e("div",Jo()([u,{attrs:{tabindex:"0"}}]),[i?e("upload-dragger",{attrs:{disabled:c},on:{file:l}},[this.$slots.default]):this.$slots.default,e("input",{class:"el-upload__input",attrs:{type:"file",name:n,multiple:r,accept:o},ref:"input",on:{change:s}})])}},void 0,void 0,!1,null,null,null);ta.options.__file="packages/upload/src/upload.vue";var ia=ta.exports;function na(){}var sa=s({name:"ElUpload",mixins:[C.a],components:{ElProgress:Uo.a,UploadList:Xo,Upload:ia},provide:function(){return{uploader:this}},inject:{elForm:{default:""}},props:{action:{type:String,required:!0},headers:{type:Object,default:function(){return{}}},data:Object,multiple:Boolean,name:{type:String,default:"file"},drag:Boolean,dragger:Boolean,withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:String,type:{type:String,default:"select"},beforeUpload:Function,beforeRemove:Function,onRemove:{type:Function,default:na},onChange:{type:Function,default:na},onPreview:{type:Function},onSuccess:{type:Function,default:na},onProgress:{type:Function,default:na},onError:{type:Function,default:na},fileList:{type:Array,default:function(){return[]}},autoUpload:{type:Boolean,default:!0},listType:{type:String,default:"text"},httpRequest:Function,disabled:Boolean,limit:Number,onExceed:{type:Function,default:na}},data:function(){return{uploadFiles:[],dragOver:!1,draging:!1,tempIndex:1}},computed:{uploadDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{listType:function(e){"picture-card"!==e&&"picture"!==e||(this.uploadFiles=this.uploadFiles.map(function(e){if(!e.url&&e.raw)try{e.url=URL.createObjectURL(e.raw)}catch(e){console.error("[Element Error][Upload]",e)}return e}))},fileList:{immediate:!0,handler:function(e){var t=this;this.uploadFiles=e.map(function(e){return e.uid=e.uid||Date.now()+t.tempIndex++,e.status=e.status||"success",e})}}},methods:{handleStart:function(e){e.uid=Date.now()+this.tempIndex++;var t={status:"ready",name:e.name,size:e.size,percentage:0,uid:e.uid,raw:e};if("picture-card"===this.listType||"picture"===this.listType)try{t.url=URL.createObjectURL(e)}catch(e){return void console.error("[Element Error][Upload]",e)}this.uploadFiles.push(t),this.onChange(t,this.uploadFiles)},handleProgress:function(e,t){var i=this.getFile(t);this.onProgress(e,i,this.uploadFiles),i.status="uploading",i.percentage=e.percent||0},handleSuccess:function(e,t){var i=this.getFile(t);i&&(i.status="success",i.response=e,this.onSuccess(e,i,this.uploadFiles),this.onChange(i,this.uploadFiles))},handleError:function(e,t){var i=this.getFile(t),n=this.uploadFiles;i.status="fail",n.splice(n.indexOf(i),1),this.onError(e,i,this.uploadFiles),this.onChange(i,this.uploadFiles)},handleRemove:function(e,t){var i=this;t&&(e=this.getFile(t));var n=function(){i.abort(e);var t=i.uploadFiles;t.splice(t.indexOf(e),1),i.onRemove(e,t)};if(this.beforeRemove){if("function"==typeof this.beforeRemove){var s=this.beforeRemove(e,this.uploadFiles);s&&s.then?s.then(function(){n()},na):!1!==s&&n()}}else n()},getFile:function(e){var t=void 0;return this.uploadFiles.every(function(i){return!(t=e.uid===i.uid?i:null)}),t},abort:function(e){this.$refs["upload-inner"].abort(e)},clearFiles:function(){this.uploadFiles=[]},submit:function(){var e=this;this.uploadFiles.filter(function(e){return"ready"===e.status}).forEach(function(t){e.$refs["upload-inner"].upload(t.raw)})},getMigratingConfig:function(){return{props:{"default-file-list":"default-file-list is renamed to file-list.","show-upload-list":"show-upload-list is renamed to show-file-list.","thumbnail-mode":"thumbnail-mode has been deprecated, you can implement the same effect according to this case: http://element.eleme.io/#/zh-CN/component/upload#yong-hu-tou-xiang-shang-chuan"}}}},beforeDestroy:function(){this.uploadFiles.forEach(function(e){e.url&&0===e.url.indexOf("blob:")&&URL.revokeObjectURL(e.url)})},render:function(e){var t=this,i=void 0;this.showFileList&&(i=e(Xo,{attrs:{disabled:this.uploadDisabled,listType:this.listType,files:this.uploadFiles,handlePreview:this.onPreview},on:{remove:this.handleRemove}},[function(e){if(t.$scopedSlots.file)return t.$scopedSlots.file({file:e.file})}]));var n=e("upload",{props:{type:this.type,drag:this.drag,action:this.action,multiple:this.multiple,"before-upload":this.beforeUpload,"with-credentials":this.withCredentials,headers:this.headers,name:this.name,data:this.data,accept:this.accept,fileList:this.uploadFiles,autoUpload:this.autoUpload,listType:this.listType,disabled:this.uploadDisabled,limit:this.limit,"on-exceed":this.onExceed,"on-start":this.handleStart,"on-progress":this.handleProgress,"on-success":this.handleSuccess,"on-error":this.handleError,"on-preview":this.onPreview,"on-remove":this.handleRemove,"http-request":this.httpRequest},ref:"upload-inner"},[this.$slots.trigger||this.$slots.default]);return e("div",["picture-card"===this.listType?i:"",this.$slots.trigger?[n,this.$slots.default]:n,this.$slots.tip,"picture-card"!==this.listType?i:""])}},void 0,void 0,!1,null,null,null);sa.options.__file="packages/upload/src/index.vue";var ra=sa.exports;ra.install=function(e){e.component(ra.name,ra)};var oa=ra,aa=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-progress",class:["el-progress--"+e.type,e.status?"is-"+e.status:"",{"el-progress--without-text":!e.showText,"el-progress--text-inside":e.textInside}],attrs:{role:"progressbar","aria-valuenow":e.percentage,"aria-valuemin":"0","aria-valuemax":"100"}},["line"===e.type?i("div",{staticClass:"el-progress-bar"},[i("div",{staticClass:"el-progress-bar__outer",style:{height:e.strokeWidth+"px"}},[i("div",{staticClass:"el-progress-bar__inner",style:e.barStyle},[e.showText&&e.textInside?i("div",{staticClass:"el-progress-bar__innerText"},[e._v(e._s(e.content))]):e._e()])])]):i("div",{staticClass:"el-progress-circle",style:{height:e.width+"px",width:e.width+"px"}},[i("svg",{attrs:{viewBox:"0 0 100 100"}},[i("path",{staticClass:"el-progress-circle__track",style:e.trailPathStyle,attrs:{d:e.trackPath,stroke:"#e5e9f2","stroke-width":e.relativeStrokeWidth,fill:"none"}}),i("path",{staticClass:"el-progress-circle__path",style:e.circlePathStyle,attrs:{d:e.trackPath,stroke:e.stroke,fill:"none","stroke-linecap":e.strokeLinecap,"stroke-width":e.percentage?e.relativeStrokeWidth:0}})])]),e.showText&&!e.textInside?i("div",{staticClass:"el-progress__text",style:{fontSize:e.progressTextSize+"px"}},[e.status?i("i",{class:e.iconClass}):[e._v(e._s(e.content))]],2):e._e()])};aa._withStripped=!0;var la=s({name:"ElProgress",props:{type:{type:String,default:"line",validator:function(e){return["line","circle","dashboard"].indexOf(e)>-1}},percentage:{type:Number,default:0,required:!0,validator:function(e){return e>=0&&e<=100}},status:{type:String,validator:function(e){return["success","exception","warning"].indexOf(e)>-1}},strokeWidth:{type:Number,default:6},strokeLinecap:{type:String,default:"round"},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:[String,Array,Function],default:""},format:Function},computed:{barStyle:function(){var e={};return e.width=this.percentage+"%",e.backgroundColor=this.getCurrentColor(this.percentage),e},relativeStrokeWidth:function(){return(this.strokeWidth/this.width*100).toFixed(1)},radius:function(){return"circle"===this.type||"dashboard"===this.type?parseInt(50-parseFloat(this.relativeStrokeWidth)/2,10):0},trackPath:function(){var e=this.radius,t="dashboard"===this.type;return"\n M 50 50\n m 0 "+(t?"":"-")+e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"-":"")+2*e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"":"-")+2*e+"\n "},perimeter:function(){return 2*Math.PI*this.radius},rate:function(){return"dashboard"===this.type?.75:1},strokeDashoffset:function(){return-1*this.perimeter*(1-this.rate)/2+"px"},trailPathStyle:function(){return{strokeDasharray:this.perimeter*this.rate+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset}},circlePathStyle:function(){return{strokeDasharray:this.perimeter*this.rate*(this.percentage/100)+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease"}},stroke:function(){var e=void 0;if(this.color)e=this.getCurrentColor(this.percentage);else switch(this.status){case"success":e="#13ce66";break;case"exception":e="#ff4949";break;case"warning":e="#e6a23c";break;default:e="#20a0ff"}return e},iconClass:function(){return"warning"===this.status?"el-icon-warning":"line"===this.type?"success"===this.status?"el-icon-circle-check":"el-icon-circle-close":"success"===this.status?"el-icon-check":"el-icon-close"},progressTextSize:function(){return"line"===this.type?12+.4*this.strokeWidth:.111111*this.width+2},content:function(){return"function"==typeof this.format?this.format(this.percentage)||"":this.percentage+"%"}},methods:{getCurrentColor:function(e){return"function"==typeof this.color?this.color(e):"string"==typeof this.color?this.color:this.getLevelColor(e)},getLevelColor:function(e){for(var t=this.getColorArray().sort(function(e,t){return e.percentage-t.percentage}),i=0;ie)return t[i].color;return t[t.length-1].color},getColorArray:function(){var e=this.color,t=100/e.length;return e.map(function(e,i){return"string"==typeof e?{color:e,progress:(i+1)*t}:e})}}},aa,[],!1,null,null,null);la.options.__file="packages/progress/src/progress.vue";var ca=la.exports;ca.install=function(e){e.component(ca.name,ca)};var ua=ca,ha=function(){var e=this.$createElement,t=this._self._c||e;return t("span",{staticClass:"el-spinner"},[t("svg",{staticClass:"el-spinner-inner",style:{width:this.radius/2+"px",height:this.radius/2+"px"},attrs:{viewBox:"0 0 50 50"}},[t("circle",{staticClass:"path",attrs:{cx:"25",cy:"25",r:"20",fill:"none",stroke:this.strokeColor,"stroke-width":this.strokeWidth}})])])};ha._withStripped=!0;var da=s({name:"ElSpinner",props:{type:String,radius:{type:Number,default:100},strokeWidth:{type:Number,default:5},strokeColor:{type:String,default:"#efefef"}}},ha,[],!1,null,null,null);da.options.__file="packages/spinner/src/spinner.vue";var pa=da.exports;pa.install=function(e){e.component(pa.name,pa)};var fa=pa,ma=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-message-fade"},on:{"after-leave":e.handleAfterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],class:["el-message",e.type&&!e.iconClass?"el-message--"+e.type:"",e.center?"is-center":"",e.showClose?"is-closable":"",e.customClass],style:e.positionStyle,attrs:{role:"alert"},on:{mouseenter:e.clearTimer,mouseleave:e.startTimer}},[e.iconClass?i("i",{class:e.iconClass}):i("i",{class:e.typeClass}),e._t("default",[e.dangerouslyUseHTMLString?i("p",{staticClass:"el-message__content",domProps:{innerHTML:e._s(e.message)}}):i("p",{staticClass:"el-message__content"},[e._v(e._s(e.message))])]),e.showClose?i("i",{staticClass:"el-message__closeBtn el-icon-close",on:{click:e.close}}):e._e()],2)])};ma._withStripped=!0;var va={success:"success",info:"info",warning:"warning",error:"error"},ga=s({data:function(){return{visible:!1,message:"",duration:3e3,type:"info",iconClass:"",customClass:"",onClose:null,showClose:!1,closed:!1,verticalOffset:20,timer:null,dangerouslyUseHTMLString:!1,center:!1}},computed:{typeClass:function(){return this.type&&!this.iconClass?"el-message__icon el-icon-"+va[this.type]:""},positionStyle:function(){return{top:this.verticalOffset+"px"}}},watch:{closed:function(e){e&&(this.visible=!1)}},methods:{handleAfterLeave:function(){this.$destroy(!0),this.$el.parentNode.removeChild(this.$el)},close:function(){this.closed=!0,"function"==typeof this.onClose&&this.onClose(this)},clearTimer:function(){clearTimeout(this.timer)},startTimer:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration))},keydown:function(e){27===e.keyCode&&(this.closed||this.close())}},mounted:function(){this.startTimer(),document.addEventListener("keydown",this.keydown)},beforeDestroy:function(){document.removeEventListener("keydown",this.keydown)}},ma,[],!1,null,null,null);ga.options.__file="packages/message/src/main.vue";var ba=ga.exports,ya=di.a.extend(ba),_a=void 0,xa=[],Ca=1,wa=function e(t){if(!di.a.prototype.$isServer){"string"==typeof(t=t||{})&&(t={message:t});var i=t.onClose,n="message_"+Ca++;t.onClose=function(){e.close(n,i)},(_a=new ya({data:t})).id=n,Object(Rs.isVNode)(_a.message)&&(_a.$slots.default=[_a.message],_a.message=null),_a.$mount(),document.body.appendChild(_a.$el);var s=t.offset||20;return xa.forEach(function(e){s+=e.$el.offsetHeight+16}),_a.verticalOffset=s,_a.visible=!0,_a.$el.style.zIndex=y.PopupManager.nextZIndex(),xa.push(_a),_a}};["success","warning","info","error"].forEach(function(e){wa[e]=function(t){return"string"==typeof t&&(t={message:t}),t.type=e,wa(t)}}),wa.close=function(e,t){for(var i=xa.length,n=-1,s=void 0,r=0;rxa.length-1))for(var o=n;o=0;e--)xa[e].close()};var ka=wa,Sa=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-badge"},[e._t("default"),i("transition",{attrs:{name:"el-zoom-in-center"}},[i("sup",{directives:[{name:"show",rawName:"v-show",value:!e.hidden&&(e.content||0===e.content||e.isDot),expression:"!hidden && (content || content === 0 || isDot)"}],staticClass:"el-badge__content",class:["el-badge__content--"+e.type,{"is-fixed":e.$slots.default,"is-dot":e.isDot}],domProps:{textContent:e._s(e.content)}})])],2)};Sa._withStripped=!0;var Da=s({name:"ElBadge",props:{value:[String,Number],max:Number,isDot:Boolean,hidden:Boolean,type:{type:String,validator:function(e){return["primary","success","warning","info","danger"].indexOf(e)>-1}}},computed:{content:function(){if(!this.isDot){var e=this.value,t=this.max;return"number"==typeof e&&"number"==typeof t&&t0&&e-1this.value,i=this.allowHalf&&this.pointerAtLeftHalf&&e-.5<=this.currentValue&&e>this.currentValue;return t||i},getIconStyle:function(e){var t=this.rateDisabled?this.disabledVoidColor:this.voidColor;return{color:e<=this.currentValue?this.activeColor:t}},selectValue:function(e){this.rateDisabled||(this.allowHalf&&this.pointerAtLeftHalf?(this.$emit("input",this.currentValue),this.$emit("change",this.currentValue)):(this.$emit("input",e),this.$emit("change",e)))},handleKey:function(e){if(!this.rateDisabled){var t=this.currentValue,i=e.keyCode;38===i||39===i?(this.allowHalf?t+=.5:t+=1,e.stopPropagation(),e.preventDefault()):37!==i&&40!==i||(this.allowHalf?t-=.5:t-=1,e.stopPropagation(),e.preventDefault()),t=(t=t<0?0:t)>this.max?this.max:t,this.$emit("input",t),this.$emit("change",t)}},setCurrentValue:function(e,t){if(!this.rateDisabled){if(this.allowHalf){var i=t.target;Object(fe.hasClass)(i,"el-rate__item")&&(i=i.querySelector(".el-rate__icon")),Object(fe.hasClass)(i,"el-rate__decimal")&&(i=i.parentNode),this.pointerAtLeftHalf=2*t.offsetX<=i.clientWidth,this.currentValue=this.pointerAtLeftHalf?e-.5:e}else this.currentValue=e;this.hoverIndex=e}},resetCurrentValue:function(){this.rateDisabled||(this.allowHalf&&(this.pointerAtLeftHalf=this.value!==Math.floor(this.value)),this.currentValue=this.value,this.hoverIndex=-1)}},created:function(){this.value||this.$emit("input",0)}},Ia,[],!1,null,null,null);ja.options.__file="packages/rate/src/main.vue";var Fa=ja.exports;Fa.install=function(e){e.component(Fa.name,Fa)};var La=Fa,Aa=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-steps",class:[!this.simple&&"el-steps--"+this.direction,this.simple&&"el-steps--simple"]},[this._t("default")],2)};Aa._withStripped=!0;var Va=s({name:"ElSteps",mixins:[C.a],props:{space:[Number,String],active:Number,direction:{type:String,default:"horizontal"},alignCenter:Boolean,simple:Boolean,finishStatus:{type:String,default:"finish"},processStatus:{type:String,default:"process"}},data:function(){return{steps:[],stepOffset:0}},methods:{getMigratingConfig:function(){return{props:{center:"center is removed."}}}},watch:{active:function(e,t){this.$emit("change",e,t)},steps:function(e){e.forEach(function(e,t){e.index=t})}}},Aa,[],!1,null,null,null);Va.options.__file="packages/steps/src/steps.vue";var Ba=Va.exports;Ba.install=function(e){e.component(Ba.name,Ba)};var za=Ba,Ra=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-step",class:[!e.isSimple&&"is-"+e.$parent.direction,e.isSimple&&"is-simple",e.isLast&&!e.space&&!e.isCenter&&"is-flex",e.isCenter&&!e.isVertical&&!e.isSimple&&"is-center"],style:e.style},[i("div",{staticClass:"el-step__head",class:"is-"+e.currentStatus},[i("div",{staticClass:"el-step__line",style:e.isLast?"":{marginRight:e.$parent.stepOffset+"px"}},[i("i",{staticClass:"el-step__line-inner",style:e.lineStyle})]),i("div",{staticClass:"el-step__icon",class:"is-"+(e.icon?"icon":"text")},["success"!==e.currentStatus&&"error"!==e.currentStatus?e._t("icon",[e.icon?i("i",{staticClass:"el-step__icon-inner",class:[e.icon]}):e._e(),e.icon||e.isSimple?e._e():i("div",{staticClass:"el-step__icon-inner"},[e._v(e._s(e.index+1))])]):i("i",{staticClass:"el-step__icon-inner is-status",class:["el-icon-"+("success"===e.currentStatus?"check":"close")]})],2)]),i("div",{staticClass:"el-step__main"},[i("div",{ref:"title",staticClass:"el-step__title",class:["is-"+e.currentStatus]},[e._t("title",[e._v(e._s(e.title))])],2),e.isSimple?i("div",{staticClass:"el-step__arrow"}):i("div",{staticClass:"el-step__description",class:["is-"+e.currentStatus]},[e._t("description",[e._v(e._s(e.description))])],2)])])};Ra._withStripped=!0;var Ha=s({name:"ElStep",props:{title:String,icon:String,description:String,status:String},data:function(){return{index:-1,lineStyle:{},internalStatus:""}},beforeCreate:function(){this.$parent.steps.push(this)},beforeDestroy:function(){var e=this.$parent.steps,t=e.indexOf(this);t>=0&&e.splice(t,1)},computed:{currentStatus:function(){return this.status||this.internalStatus},prevStatus:function(){var e=this.$parent.steps[this.index-1];return e?e.currentStatus:"wait"},isCenter:function(){return this.$parent.alignCenter},isVertical:function(){return"vertical"===this.$parent.direction},isSimple:function(){return this.$parent.simple},isLast:function(){var e=this.$parent;return e.steps[e.steps.length-1]===this},stepsCount:function(){return this.$parent.steps.length},space:function(){var e=this.isSimple,t=this.$parent.space;return e?"":t},style:function(){var e={},t=this.$parent.steps.length,i="number"==typeof this.space?this.space+"px":this.space?this.space:100/(t-(this.isCenter?0:1))+"%";return e.flexBasis=i,this.isVertical?e:(this.isLast?e.maxWidth=100/this.stepsCount+"%":e.marginRight=-this.$parent.stepOffset+"px",e)}},methods:{updateStatus:function(e){var t=this.$parent.$children[this.index-1];e>this.index?this.internalStatus=this.$parent.finishStatus:e===this.index&&"error"!==this.prevStatus?this.internalStatus=this.$parent.processStatus:this.internalStatus="wait",t&&t.calcProgress(this.internalStatus)},calcProgress:function(e){var t=100,i={};i.transitionDelay=150*this.index+"ms",e===this.$parent.processStatus?(this.currentStatus,t=0):"wait"===e&&(t=0,i.transitionDelay=-150*this.index+"ms"),i.borderWidth=t&&!this.isSimple?"1px":0,"vertical"===this.$parent.direction?i.height=t+"%":i.width=t+"%",this.lineStyle=i}},mounted:function(){var e=this,t=this.$watch("index",function(i){e.$watch("$parent.active",e.updateStatus,{immediate:!0}),e.$watch("$parent.processStatus",function(){var t=e.$parent.active;e.updateStatus(t)},{immediate:!0}),t()})}},Ra,[],!1,null,null,null);Ha.options.__file="packages/steps/src/step.vue";var Wa=Ha.exports;Wa.install=function(e){e.component(Wa.name,Wa)};var qa=Wa,Ya=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:e.carouselClasses,on:{mouseenter:function(t){return t.stopPropagation(),e.handleMouseEnter(t)},mouseleave:function(t){return t.stopPropagation(),e.handleMouseLeave(t)}}},[i("div",{staticClass:"el-carousel__container",style:{height:e.height}},[e.arrowDisplay?i("transition",{attrs:{name:"carousel-arrow-left"}},[i("button",{directives:[{name:"show",rawName:"v-show",value:("always"===e.arrow||e.hover)&&(e.loop||e.activeIndex>0),expression:"(arrow === 'always' || hover) && (loop || activeIndex > 0)"}],staticClass:"el-carousel__arrow el-carousel__arrow--left",attrs:{type:"button"},on:{mouseenter:function(t){e.handleButtonEnter("left")},mouseleave:e.handleButtonLeave,click:function(t){t.stopPropagation(),e.throttledArrowClick(e.activeIndex-1)}}},[i("i",{staticClass:"el-icon-arrow-left"})])]):e._e(),e.arrowDisplay?i("transition",{attrs:{name:"carousel-arrow-right"}},[i("button",{directives:[{name:"show",rawName:"v-show",value:("always"===e.arrow||e.hover)&&(e.loop||e.activeIndex0})},carouselClasses:function(){var e=["el-carousel","el-carousel--"+this.direction];return"card"===this.type&&e.push("el-carousel--card"),e},indicatorsClasses:function(){var e=["el-carousel__indicators","el-carousel__indicators--"+this.direction];return this.hasLabel&&e.push("el-carousel__indicators--labels"),"outside"!==this.indicatorPosition&&"card"!==this.type||e.push("el-carousel__indicators--outside"),e}},watch:{items:function(e){e.length>0&&this.setActiveItem(this.initialIndex)},activeIndex:function(e,t){this.resetItemPosition(t),t>-1&&this.$emit("change",e,t)},autoplay:function(e){e?this.startTimer():this.pauseTimer()},loop:function(){this.setActiveItem(this.activeIndex)}},methods:{handleMouseEnter:function(){this.hover=!0,this.pauseTimer()},handleMouseLeave:function(){this.hover=!1,this.startTimer()},itemInStage:function(e,t){var i=this.items.length;return t===i-1&&e.inStage&&this.items[0].active||e.inStage&&this.items[t+1]&&this.items[t+1].active?"left":!!(0===t&&e.inStage&&this.items[i-1].active||e.inStage&&this.items[t-1]&&this.items[t-1].active)&&"right"},handleButtonEnter:function(e){var t=this;"vertical"!==this.direction&&this.items.forEach(function(i,n){e===t.itemInStage(i,n)&&(i.hover=!0)})},handleButtonLeave:function(){"vertical"!==this.direction&&this.items.forEach(function(e){e.hover=!1})},updateItems:function(){this.items=this.$children.filter(function(e){return"ElCarouselItem"===e.$options.name})},resetItemPosition:function(e){var t=this;this.items.forEach(function(i,n){i.translateItem(n,t.activeIndex,e)})},playSlides:function(){this.activeIndex0&&(e=this.items.indexOf(t[0]))}if(e=Number(e),isNaN(e)||e!==Math.floor(e))console.warn("[Element Warn][Carousel]index must be an integer.");else{var i=this.items.length,n=this.activeIndex;this.activeIndex=e<0?this.loop?i-1:0:e>=i?this.loop?0:i-1:e,n===this.activeIndex&&this.resetItemPosition(n)}},prev:function(){this.setActiveItem(this.activeIndex-1)},next:function(){this.setActiveItem(this.activeIndex+1)},handleIndicatorClick:function(e){this.activeIndex=e},handleIndicatorHover:function(e){"hover"===this.trigger&&e!==this.activeIndex&&(this.activeIndex=e)}},created:function(){var e=this;this.throttledArrowClick=Ua()(300,!0,function(t){e.setActiveItem(t)}),this.throttledIndicatorHover=Ua()(300,function(t){e.handleIndicatorHover(t)})},mounted:function(){var e=this;this.updateItems(),this.$nextTick(function(){Object(Ft.addResizeListener)(e.$el,e.resetItemPosition),e.initialIndex=0&&(e.activeIndex=e.initialIndex),e.startTimer()})},beforeDestroy:function(){this.$el&&Object(Ft.removeResizeListener)(this.$el,this.resetItemPosition),this.pauseTimer()}},Ya,[],!1,null,null,null);Ga.options.__file="packages/carousel/src/main.vue";var Xa=Ga.exports;Xa.install=function(e){e.component(Xa.name,Xa)};var Qa=Xa,Ja={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}};var Za={name:"Bar",props:{vertical:Boolean,size:String,move:Number},computed:{bar:function(){return Ja[this.vertical?"vertical":"horizontal"]},wrap:function(){return this.$parent.wrap}},render:function(e){var t=this.size,i=this.move,n=this.bar;return e("div",{class:["el-scrollbar__bar","is-"+n.key],on:{mousedown:this.clickTrackHandler}},[e("div",{ref:"thumb",class:"el-scrollbar__thumb",on:{mousedown:this.clickThumbHandler},style:function(e){var t=e.move,i=e.size,n=e.bar,s={},r="translate"+n.axis+"("+t+"%)";return s[n.size]=i,s.transform=r,s.msTransform=r,s.webkitTransform=r,s}({size:t,move:i,bar:n})})])},methods:{clickThumbHandler:function(e){e.ctrlKey||2===e.button||(this.startDrag(e),this[this.bar.axis]=e.currentTarget[this.bar.offset]-(e[this.bar.client]-e.currentTarget.getBoundingClientRect()[this.bar.direction]))},clickTrackHandler:function(e){var t=100*(Math.abs(e.target.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-this.$refs.thumb[this.bar.offset]/2)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=t*this.wrap[this.bar.scrollSize]/100},startDrag:function(e){e.stopImmediatePropagation(),this.cursorDown=!0,Object(fe.on)(document,"mousemove",this.mouseMoveDocumentHandler),Object(fe.on)(document,"mouseup",this.mouseUpDocumentHandler),document.onselectstart=function(){return!1}},mouseMoveDocumentHandler:function(e){if(!1!==this.cursorDown){var t=this[this.bar.axis];if(t){var i=100*(-1*(this.$el.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-(this.$refs.thumb[this.bar.offset]-t))/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=i*this.wrap[this.bar.scrollSize]/100}}},mouseUpDocumentHandler:function(e){this.cursorDown=!1,this[this.bar.axis]=0,Object(fe.off)(document,"mousemove",this.mouseMoveDocumentHandler),document.onselectstart=null}},destroyed:function(){Object(fe.off)(document,"mouseup",this.mouseUpDocumentHandler)}},el={name:"ElScrollbar",components:{Bar:Za},props:{native:Boolean,wrapStyle:{},wrapClass:{},viewClass:{},viewStyle:{},noresize:Boolean,tag:{type:String,default:"div"}},data:function(){return{sizeWidth:"0",sizeHeight:"0",moveX:0,moveY:0}},computed:{wrap:function(){return this.$refs.wrap}},render:function(e){var t=ji()(),i=this.wrapStyle;if(t){var n="-"+t+"px",s="margin-bottom: "+n+"; margin-right: "+n+";";Array.isArray(this.wrapStyle)?(i=Object(m.toObject)(this.wrapStyle)).marginRight=i.marginBottom=n:"string"==typeof this.wrapStyle?i+=s:i=s}var r=e(this.tag,{class:["el-scrollbar__view",this.viewClass],style:this.viewStyle,ref:"resize"},this.$slots.default),o=e("div",{ref:"wrap",style:i,on:{scroll:this.handleScroll},class:[this.wrapClass,"el-scrollbar__wrap",t?"":"el-scrollbar__wrap--hidden-default"]},[[r]]);return e("div",{class:"el-scrollbar"},this.native?[e("div",{ref:"wrap",class:[this.wrapClass,"el-scrollbar__wrap"],style:i},[[r]])]:[o,e(Za,{attrs:{move:this.moveX,size:this.sizeWidth}}),e(Za,{attrs:{vertical:!0,move:this.moveY,size:this.sizeHeight}})])},methods:{handleScroll:function(){var e=this.wrap;this.moveY=100*e.scrollTop/e.clientHeight,this.moveX=100*e.scrollLeft/e.clientWidth},update:function(){var e,t,i=this.wrap;i&&(e=100*i.clientHeight/i.scrollHeight,t=100*i.clientWidth/i.scrollWidth,this.sizeHeight=e<100?e+"%":"",this.sizeWidth=t<100?t+"%":"")}},mounted:function(){this.native||(this.$nextTick(this.update),!this.noresize&&Object(Ft.addResizeListener)(this.$refs.resize,this.update))},beforeDestroy:function(){this.native||!this.noresize&&Object(Ft.removeResizeListener)(this.$refs.resize,this.update)},install:function(e){e.component(el.name,el)}},tl=el,il=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"show",rawName:"v-show",value:e.ready,expression:"ready"}],staticClass:"el-carousel__item",class:{"is-active":e.active,"el-carousel__item--card":"card"===e.$parent.type,"is-in-stage":e.inStage,"is-hover":e.hover,"is-animating":e.animating},style:e.itemStyle,on:{click:e.handleItemClick}},["card"===e.$parent.type?i("div",{directives:[{name:"show",rawName:"v-show",value:!e.active,expression:"!active"}],staticClass:"el-carousel__mask"}):e._e(),e._t("default")],2)};il._withStripped=!0;var nl=s({name:"ElCarouselItem",props:{name:String,label:{type:[String,Number],default:""}},data:function(){return{hover:!1,translate:0,scale:1,active:!1,ready:!1,inStage:!1,animating:!1}},methods:{processIndex:function(e,t,i){return 0===t&&e===i-1?-1:t===i-1&&0===e?i:e=i/2?i+1:e>t+1&&e-t>=i/2?-2:e},calcCardTranslate:function(e,t){var i=this.$parent.$el.offsetWidth;return this.inStage?i*(1.17*(e-t)+1)/4:e2&&this.$parent.loop&&(e=this.processIndex(e,t,r)),"card"===n)"vertical"===s&&console.warn("[Element Warn][Carousel]vertical direction is not supported in card mode"),this.inStage=Math.round(Math.abs(e-t))<=1,this.active=e===t,this.translate=this.calcCardTranslate(e,t),this.scale=this.active?1:.83;else{this.active=e===t;var o="vertical"===s;this.translate=this.calcTranslate(e,t,o)}this.ready=!0},handleItemClick:function(){var e=this.$parent;if(e&&"card"===e.type){var t=e.items.indexOf(this);e.setActiveItem(t)}}},computed:{parentDirection:function(){return this.$parent.direction},itemStyle:function(){var e={transform:("vertical"===this.parentDirection?"translateY":"translateX")+"("+this.translate+"px) scale("+this.scale+")"};return Object(m.autoprefixer)(e)}},created:function(){this.$parent&&this.$parent.updateItems()},destroyed:function(){this.$parent&&this.$parent.updateItems()}},il,[],!1,null,null,null);nl.options.__file="packages/carousel/src/item.vue";var sl=nl.exports;sl.install=function(e){e.component(sl.name,sl)};var rl=sl,ol=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-collapse",attrs:{role:"tablist","aria-multiselectable":"true"}},[this._t("default")],2)};ol._withStripped=!0;var al=s({name:"ElCollapse",componentName:"ElCollapse",props:{accordion:Boolean,value:{type:[Array,String,Number],default:function(){return[]}}},data:function(){return{activeNames:[].concat(this.value)}},provide:function(){return{collapse:this}},watch:{value:function(e){this.activeNames=[].concat(e)}},methods:{setActiveNames:function(e){e=[].concat(e);var t=this.accordion?e[0]:e;this.activeNames=e,this.$emit("input",t),this.$emit("change",t)},handleItemClick:function(e){if(this.accordion)this.setActiveNames(!this.activeNames[0]&&0!==this.activeNames[0]||this.activeNames[0]!==e.name?e.name:"");else{var t=this.activeNames.slice(0),i=t.indexOf(e.name);i>-1?t.splice(i,1):t.push(e.name),this.setActiveNames(t)}}},created:function(){this.$on("item-click",this.handleItemClick)}},ol,[],!1,null,null,null);al.options.__file="packages/collapse/src/collapse.vue";var ll=al.exports;ll.install=function(e){e.component(ll.name,ll)};var cl=ll,ul=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-collapse-item",class:{"is-active":e.isActive,"is-disabled":e.disabled}},[i("div",{attrs:{role:"tab","aria-expanded":e.isActive,"aria-controls":"el-collapse-content-"+e.id,"aria-describedby":"el-collapse-content-"+e.id}},[i("div",{staticClass:"el-collapse-item__header",class:{focusing:e.focusing,"is-active":e.isActive},attrs:{role:"button",id:"el-collapse-head-"+e.id,tabindex:e.disabled?void 0:0},on:{click:e.handleHeaderClick,keyup:function(t){return"button"in t||!e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"])||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.stopPropagation(),e.handleEnterClick(t)):null},focus:e.handleFocus,blur:function(t){e.focusing=!1}}},[e._t("title",[e._v(e._s(e.title))]),i("i",{staticClass:"el-collapse-item__arrow el-icon-arrow-right",class:{"is-active":e.isActive}})],2)]),i("el-collapse-transition",[i("div",{directives:[{name:"show",rawName:"v-show",value:e.isActive,expression:"isActive"}],staticClass:"el-collapse-item__wrap",attrs:{role:"tabpanel","aria-hidden":!e.isActive,"aria-labelledby":"el-collapse-head-"+e.id,id:"el-collapse-content-"+e.id}},[i("div",{staticClass:"el-collapse-item__content"},[e._t("default")],2)])])],1)};ul._withStripped=!0;var hl=s({name:"ElCollapseItem",componentName:"ElCollapseItem",mixins:[k.a],components:{ElCollapseTransition:ye.a},data:function(){return{contentWrapStyle:{height:"auto",display:"block"},contentHeight:0,focusing:!1,isClick:!1,id:Object(m.generateId)()}},inject:["collapse"],props:{title:String,name:{type:[String,Number],default:function(){return this._uid}},disabled:Boolean},computed:{isActive:function(){return this.collapse.activeNames.indexOf(this.name)>-1}},methods:{handleFocus:function(){var e=this;setTimeout(function(){e.isClick?e.isClick=!1:e.focusing=!0},50)},handleHeaderClick:function(){this.disabled||(this.dispatch("ElCollapse","item-click",this),this.focusing=!1,this.isClick=!0)},handleEnterClick:function(){this.dispatch("ElCollapse","item-click",this)}}},ul,[],!1,null,null,null);hl.options.__file="packages/collapse/src/collapse-item.vue";var dl=hl.exports;dl.install=function(e){e.component(dl.name,dl)};var pl=dl,fl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:function(){return e.toggleDropDownVisible(!1)},expression:"() => toggleDropDownVisible(false)"}],ref:"reference",class:["el-cascader",e.realSize&&"el-cascader--"+e.realSize,{"is-disabled":e.isDisabled}],on:{mouseenter:function(t){e.inputHover=!0},mouseleave:function(t){e.inputHover=!1},click:function(){return e.toggleDropDownVisible(!e.readonly||void 0)},keydown:e.handleKeyDown}},[i("el-input",{ref:"input",class:{"is-focus":e.dropDownVisible},attrs:{size:e.realSize,placeholder:e.placeholder,readonly:e.readonly,disabled:e.isDisabled,"validate-event":!1},on:{focus:e.handleFocus,blur:e.handleBlur,input:e.handleInput},model:{value:e.multiple?e.presentText:e.inputValue,callback:function(t){e.multiple?e.presentText:e.inputValue=t},expression:"multiple ? presentText : inputValue"}},[i("template",{slot:"suffix"},[e.clearBtnVisible?i("i",{key:"clear",staticClass:"el-input__icon el-icon-circle-close",on:{click:function(t){return t.stopPropagation(),e.handleClear(t)}}}):i("i",{key:"arrow-down",class:["el-input__icon","el-icon-arrow-down",e.dropDownVisible&&"is-reverse"],on:{click:function(t){t.stopPropagation(),e.toggleDropDownVisible()}}})])],2),e.multiple?i("div",{staticClass:"el-cascader__tags"},[e._l(e.presentTags,function(t,n){return i("el-tag",{key:t.key,attrs:{type:"info",size:e.tagSize,hit:t.hitState,closable:t.closable,"disable-transitions":""},on:{close:function(t){e.deleteTag(n)}}},[i("span",[e._v(e._s(t.text))])])}),e.filterable&&!e.isDisabled?i("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.inputValue,expression:"inputValue",modifiers:{trim:!0}}],staticClass:"el-cascader__search-input",attrs:{type:"text",placeholder:e.presentTags.length?"":e.placeholder},domProps:{value:e.inputValue},on:{input:[function(t){t.target.composing||(e.inputValue=t.target.value.trim())},function(t){return e.handleInput(e.inputValue,t)}],click:function(t){t.stopPropagation(),e.toggleDropDownVisible(!0)},keydown:function(t){return"button"in t||!e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?e.handleDelete(t):null},blur:function(t){e.$forceUpdate()}}}):e._e()],2):e._e(),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.handleDropdownLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.dropDownVisible,expression:"dropDownVisible"}],ref:"popper",class:["el-popper","el-cascader__dropdown",e.popperClass]},[i("el-cascader-panel",{directives:[{name:"show",rawName:"v-show",value:!e.filtering,expression:"!filtering"}],ref:"panel",attrs:{options:e.options,props:e.config,border:!1,"render-label":e.$scopedSlots.default},on:{"expand-change":e.handleExpandChange,close:function(t){e.toggleDropDownVisible(!1)}},model:{value:e.checkedValue,callback:function(t){e.checkedValue=t},expression:"checkedValue"}}),e.filterable?i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.filtering,expression:"filtering"}],ref:"suggestionPanel",staticClass:"el-cascader__suggestion-panel",attrs:{tag:"ul","view-class":"el-cascader__suggestion-list"},nativeOn:{keydown:function(t){return e.handleSuggestionKeyDown(t)}}},[e.suggestions.length?e._l(e.suggestions,function(t,n){return i("li",{key:t.uid,class:["el-cascader__suggestion-item",t.checked&&"is-checked"],attrs:{tabindex:-1},on:{click:function(t){e.handleSuggestionClick(n)}}},[i("span",[e._v(e._s(t.text))]),t.checked?i("i",{staticClass:"el-icon-check"}):e._e()])}):e._t("empty",[i("li",{staticClass:"el-cascader__empty-text"},[e._v(e._s(e.t("el.cascader.noMatch")))])])],2):e._e()],1)])],1)};fl._withStripped=!0;var ml=i(42),vl=i.n(ml),gl=i(28),bl=i.n(gl),yl=bl.a.keys,_l={expandTrigger:{newProp:"expandTrigger",type:String},changeOnSelect:{newProp:"checkStrictly",type:Boolean},hoverThreshold:{newProp:"hoverThreshold",type:Number}},xl={props:{placement:{type:String,default:"bottom-start"},appendToBody:j.a.props.appendToBody,visibleArrow:{type:Boolean,default:!0},arrowOffset:j.a.props.arrowOffset,offset:j.a.props.offset,boundariesPadding:j.a.props.boundariesPadding,popperOptions:j.a.props.popperOptions},methods:j.a.methods,data:j.a.data,beforeDestroy:j.a.beforeDestroy},Cl={medium:36,small:32,mini:28},wl=s({name:"ElCascader",directives:{Clickoutside:M.a},mixins:[xl,k.a,f.a,C.a],inject:{elForm:{default:""},elFormItem:{default:""}},components:{ElInput:d.a,ElTag:jt.a,ElScrollbar:L.a,ElCascaderPanel:vl.a},props:{value:{},options:Array,props:Object,size:String,placeholder:{type:String,default:function(){return Object(Lt.t)("el.cascader.placeholder")}},disabled:Boolean,clearable:Boolean,filterable:Boolean,filterMethod:Function,separator:{type:String,default:" / "},showAllLevels:{type:Boolean,default:!0},collapseTags:Boolean,debounce:{type:Number,default:300},beforeFilter:{type:Function,default:function(){return function(){}}},popperClass:String},data:function(){return{dropDownVisible:!1,checkedValue:this.value||null,inputHover:!1,inputValue:null,presentText:null,presentTags:[],checkedNodes:[],filtering:!1,suggestions:[],inputInitialHeight:0,pressDeleteCount:0}},computed:{realSize:function(){var e=(this.elFormItem||{}).elFormItemSize;return this.size||e||(this.$ELEMENT||{}).size},tagSize:function(){return["small","mini"].indexOf(this.realSize)>-1?"mini":"small"},isDisabled:function(){return this.disabled||(this.elForm||{}).disabled},config:function(){var e=this.props||{},t=this.$attrs;return Object.keys(_l).forEach(function(i){var n=_l[i],s=n.newProp,r=n.type,o=t[i]||t[Object(m.kebabCase)(i)];Object(Re.isDef)(i)&&!Object(Re.isDef)(e[s])&&(r===Boolean&&""===o&&(o=!0),e[s]=o)}),e},multiple:function(){return this.config.multiple},leafOnly:function(){return!this.config.checkStrictly},readonly:function(){return!this.filterable||this.multiple},clearBtnVisible:function(){return!(!this.clearable||this.isDisabled||this.filtering||!this.inputHover)&&(this.multiple?!!this.checkedNodes.filter(function(e){return!e.isDisabled}).length:!!this.presentText)},panel:function(){return this.$refs.panel}},watch:{disabled:function(){this.computePresentContent()},value:function(e){Object(m.isEqual)(e,this.checkedValue)||(this.checkedValue=e,this.computePresentContent())},checkedValue:function(e){var t=this.value,i=this.dropDownVisible,n=this.config,s=n.checkStrictly,r=n.multiple;Object(m.isEqual)(e,t)&&!Object(Na.isUndefined)(t)||(this.computePresentContent(),r||s||!i||this.toggleDropDownVisible(!1),this.$emit("input",e),this.$emit("change",e),this.dispatch("ElFormItem","el.form.change",[e]))},options:{handler:function(){this.$nextTick(this.computePresentContent)},deep:!0},presentText:function(e){this.inputValue=e},presentTags:function(e,t){this.multiple&&(e.length||t.length)&&this.$nextTick(this.updateStyle)},filtering:function(e){this.$nextTick(this.updatePopper)}},mounted:function(){var e=this,t=this.$refs.input;t&&t.$el&&(this.inputInitialHeight=t.$el.offsetHeight||Cl[this.realSize]||40),Object(m.isEmpty)(this.value)||this.computePresentContent(),this.filterHandler=T()(this.debounce,function(){var t=e.inputValue;if(t){var i=e.beforeFilter(t);i&&i.then?i.then(e.getSuggestions):!1!==i?e.getSuggestions():e.filtering=!1}else e.filtering=!1}),Object(Ft.addResizeListener)(this.$el,this.updateStyle)},beforeDestroy:function(){Object(Ft.removeResizeListener)(this.$el,this.updateStyle)},methods:{getMigratingConfig:function(){return{props:{"expand-trigger":"expand-trigger is removed, use `props.expandTrigger` instead.","change-on-select":"change-on-select is removed, use `props.checkStrictly` instead.","hover-threshold":"hover-threshold is removed, use `props.hoverThreshold` instead"},events:{"active-item-change":"active-item-change is renamed to expand-change"}}},toggleDropDownVisible:function(e){var t=this;if(!this.isDisabled){var i=this.dropDownVisible,n=this.$refs.input;(e=Object(Re.isDef)(e)?e:!i)!==i&&(this.dropDownVisible=e,e&&this.$nextTick(function(){t.updatePopper(),t.panel.scrollIntoView()}),n.$refs.input.setAttribute("aria-expanded",e),this.$emit("visible-change",e))}},handleDropdownLeave:function(){this.filtering=!1,this.inputValue=this.presentText},handleKeyDown:function(e){switch(e.keyCode){case yl.enter:this.toggleDropDownVisible();break;case yl.down:this.toggleDropDownVisible(!0),this.focusFirstNode(),e.preventDefault();break;case yl.esc:case yl.tab:this.toggleDropDownVisible(!1)}},handleFocus:function(e){this.$emit("focus",e)},handleBlur:function(e){this.$emit("blur",e)},handleInput:function(e,t){!this.dropDownVisible&&this.toggleDropDownVisible(!0),t&&t.isComposing||(e?this.filterHandler():this.filtering=!1)},handleClear:function(){this.presentText="",this.panel.clearCheckedNodes()},handleExpandChange:function(e){this.$nextTick(this.updatePopper.bind(this)),this.$emit("expand-change",e),this.$emit("active-item-change",e)},focusFirstNode:function(){var e=this;this.$nextTick(function(){var t=e.filtering,i=e.$refs,n=i.popper,s=i.suggestionPanel,r=null;t&&s?r=s.$el.querySelector(".el-cascader__suggestion-item"):r=n.querySelector(".el-cascader-menu").querySelector('.el-cascader-node[tabindex="-1"]');r&&(r.focus(),!t&&r.click())})},computePresentContent:function(){var e=this;this.$nextTick(function(){e.config.multiple?(e.computePresentTags(),e.presentText=e.presentTags.length?" ":null):e.computePresentText()})},computePresentText:function(){var e=this.checkedValue,t=this.config;if(!Object(m.isEmpty)(e)){var i=this.panel.getNodeByValue(e);if(i&&(t.checkStrictly||i.isLeaf))return void(this.presentText=i.getText(this.showAllLevels,this.separator))}this.presentText=null},computePresentTags:function(){var e=this.isDisabled,t=this.leafOnly,i=this.showAllLevels,n=this.separator,s=this.collapseTags,r=this.getCheckedNodes(t),o=[],a=function(t){return{node:t,key:t.uid,text:t.getText(i,n),hitState:!1,closable:!e&&!t.isDisabled}};if(r.length){var l=r[0],c=r.slice(1),u=c.length;o.push(a(l)),u&&(s?o.push({key:-1,text:"+ "+u,closable:!1}):c.forEach(function(e){return o.push(a(e))}))}this.checkedNodes=r,this.presentTags=o},getSuggestions:function(){var e=this,t=this.filterMethod;Object(Na.isFunction)(t)||(t=function(e,t){return e.text.includes(t)});var i=this.panel.getFlattedNodes(this.leafOnly).filter(function(i){return!i.isDisabled&&(i.text=i.getText(e.showAllLevels,e.separator)||"",t(i,e.inputValue))});this.multiple?this.presentTags.forEach(function(e){e.hitState=!1}):i.forEach(function(t){t.checked=Object(m.isEqual)(e.checkedValue,t.getValueByOption())}),this.filtering=!0,this.suggestions=i,this.$nextTick(this.updatePopper)},handleSuggestionKeyDown:function(e){var t=e.keyCode,i=e.target;switch(t){case yl.enter:i.click();break;case yl.up:var n=i.previousElementSibling;n&&n.focus();break;case yl.down:var s=i.nextElementSibling;s&&s.focus();break;case yl.esc:case yl.tab:this.toggleDropDownVisible(!1)}},handleDelete:function(){var e=this.inputValue,t=this.pressDeleteCount,i=this.presentTags,n=i.length-1,s=i[n];this.pressDeleteCount=e?0:t+1,s&&this.pressDeleteCount&&(s.hitState?this.deleteTag(n):s.hitState=!0)},handleSuggestionClick:function(e){var t=this.multiple,i=this.suggestions[e];if(t){var n=i.checked;i.doCheck(!n),this.panel.calculateMultiCheckedValue()}else this.checkedValue=i.getValueByOption(),this.toggleDropDownVisible(!1)},deleteTag:function(e){var t=this.checkedValue,i=t[e];this.checkedValue=t.filter(function(t,i){return i!==e}),this.$emit("remove-tag",i)},updateStyle:function(){var e=this.$el,t=this.inputInitialHeight;if(!this.$isServer&&e){var i=this.$refs.suggestionPanel,n=e.querySelector(".el-input__inner");if(n){var s=e.querySelector(".el-cascader__tags"),r=null;if(i&&(r=i.$el))r.querySelector(".el-cascader__suggestion-list").style.minWidth=n.offsetWidth+"px";if(s){var o=s.offsetHeight,a=Math.max(o+6,t)+"px";n.style.height=a,this.updatePopper()}}}},getCheckedNodes:function(e){return this.panel.getCheckedNodes(e)}}},fl,[],!1,null,null,null);wl.options.__file="packages/cascader/src/cascader.vue";var kl=wl.exports;kl.install=function(e){e.component(kl.name,kl)};var Sl=kl,Dl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.hide,expression:"hide"}],class:["el-color-picker",e.colorDisabled?"is-disabled":"",e.colorSize?"el-color-picker--"+e.colorSize:""]},[e.colorDisabled?i("div",{staticClass:"el-color-picker__mask"}):e._e(),i("div",{staticClass:"el-color-picker__trigger",on:{click:e.handleTrigger}},[i("span",{staticClass:"el-color-picker__color",class:{"is-alpha":e.showAlpha}},[i("span",{staticClass:"el-color-picker__color-inner",style:{backgroundColor:e.displayedColor}}),e.value||e.showPanelColor?e._e():i("span",{staticClass:"el-color-picker__empty el-icon-close"})]),i("span",{directives:[{name:"show",rawName:"v-show",value:e.value||e.showPanelColor,expression:"value || showPanelColor"}],staticClass:"el-color-picker__icon el-icon-arrow-down"})]),i("picker-dropdown",{ref:"dropdown",class:["el-color-picker__panel",e.popperClass||""],attrs:{color:e.color,"show-alpha":e.showAlpha,predefine:e.predefine},on:{pick:e.confirmValue,clear:e.clearValue},model:{value:e.showPicker,callback:function(t){e.showPicker=t},expression:"showPicker"}})],1)};Dl._withStripped=!0;var $l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var Ol=function(e,t,i){return[e,t*i/((e=(2-t)*i)<1?e:2-e)||0,e/2]},El=function(e,t){(function(e){return"string"==typeof e&&-1!==e.indexOf(".")&&1===parseFloat(e)})(e)&&(e="100%");var i=function(e){return"string"==typeof e&&-1!==e.indexOf("%")}(e);return e=Math.min(t,Math.max(0,parseFloat(e))),i&&(e=parseInt(e*t,10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)},Tl={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"},Pl={A:10,B:11,C:12,D:13,E:14,F:15},Ml=function(e){return 2===e.length?16*(Pl[e[0].toUpperCase()]||+e[0])+(Pl[e[1].toUpperCase()]||+e[1]):Pl[e[1].toUpperCase()]||+e[1]},Il=function(e,t,i){e=El(e,255),t=El(t,255),i=El(i,255);var n,s=Math.max(e,t,i),r=Math.min(e,t,i),o=void 0,a=s,l=s-r;if(n=0===s?0:l/s,s===r)o=0;else{switch(s){case e:o=(t-i)/l+(t2?parseFloat(e):parseInt(e,10)});if(4===n.length?this._alpha=Math.floor(100*parseFloat(n[3])):3===n.length&&(this._alpha=100),n.length>=3){var s=function(e,t,i){i/=100;var n=t/=100,s=Math.max(i,.01);return t*=(i*=2)<=1?i:2-i,n*=s<=1?s:2-s,{h:e,s:100*(0===i?2*n/(s+n):2*t/(i+t)),v:(i+t)/2*100}}(n[0],n[1],n[2]);i(s.h,s.s,s.v)}}else if(-1!==e.indexOf("hsv")){var r=e.replace(/hsva|hsv|\(|\)/gm,"").split(/\s|,/g).filter(function(e){return""!==e}).map(function(e,t){return t>2?parseFloat(e):parseInt(e,10)});4===r.length?this._alpha=Math.floor(100*parseFloat(r[3])):3===r.length&&(this._alpha=100),r.length>=3&&i(r[0],r[1],r[2])}else if(-1!==e.indexOf("rgb")){var o=e.replace(/rgba|rgb|\(|\)/gm,"").split(/\s|,/g).filter(function(e){return""!==e}).map(function(e,t){return t>2?parseFloat(e):parseInt(e,10)});if(4===o.length?this._alpha=Math.floor(100*parseFloat(o[3])):3===o.length&&(this._alpha=100),o.length>=3){var a=Il(o[0],o[1],o[2]);i(a.h,a.s,a.v)}}else if(-1!==e.indexOf("#")){var l=e.replace("#","").trim();if(!/^(?:[0-9a-fA-F]{3}){1,2}$/.test(l))return;var c=void 0,u=void 0,h=void 0;3===l.length?(c=Ml(l[0]+l[0]),u=Ml(l[1]+l[1]),h=Ml(l[2]+l[2])):6!==l.length&&8!==l.length||(c=Ml(l.substring(0,2)),u=Ml(l.substring(2,4)),h=Ml(l.substring(4,6))),8===l.length?this._alpha=Math.floor(Ml(l.substring(6))/255*100):3!==l.length&&6!==l.length||(this._alpha=100);var d=Il(c,u,h);i(d.h,d.s,d.v)}},e.prototype.compare=function(e){return Math.abs(e._hue-this._hue)<2&&Math.abs(e._saturation-this._saturation)<1&&Math.abs(e._value-this._value)<1&&Math.abs(e._alpha-this._alpha)<1},e.prototype.doOnChange=function(){var e=this._hue,t=this._saturation,i=this._value,n=this._alpha,s=this.format;if(this.enableAlpha)switch(s){case"hsl":var r=Ol(e,t/100,i/100);this.value="hsla("+e+", "+Math.round(100*r[1])+"%, "+Math.round(100*r[2])+"%, "+n/100+")";break;case"hsv":this.value="hsva("+e+", "+Math.round(t)+"%, "+Math.round(i)+"%, "+n/100+")";break;default:var o=Nl(e,t,i),a=o.r,l=o.g,c=o.b;this.value="rgba("+a+", "+l+", "+c+", "+n/100+")"}else switch(s){case"hsl":var u=Ol(e,t/100,i/100);this.value="hsl("+e+", "+Math.round(100*u[1])+"%, "+Math.round(100*u[2])+"%)";break;case"hsv":this.value="hsv("+e+", "+Math.round(t)+"%, "+Math.round(i)+"%)";break;case"rgb":var h=Nl(e,t,i),d=h.r,p=h.g,f=h.b;this.value="rgb("+d+", "+p+", "+f+")";break;default:this.value=function(e){var t=e.r,i=e.g,n=e.b,s=function(e){e=Math.min(Math.round(e),255);var t=Math.floor(e/16),i=e%16;return""+(Tl[t]||t)+(Tl[i]||i)};return isNaN(t)||isNaN(i)||isNaN(n)?"":"#"+s(t)+s(i)+s(n)}(Nl(e,t,i))}},e}(),Fl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.doDestroy}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-color-dropdown"},[i("div",{staticClass:"el-color-dropdown__main-wrapper"},[i("hue-slider",{ref:"hue",staticStyle:{float:"right"},attrs:{color:e.color,vertical:""}}),i("sv-panel",{ref:"sl",attrs:{color:e.color}})],1),e.showAlpha?i("alpha-slider",{ref:"alpha",attrs:{color:e.color}}):e._e(),e.predefine?i("predefine",{attrs:{color:e.color,colors:e.predefine}}):e._e(),i("div",{staticClass:"el-color-dropdown__btns"},[i("span",{staticClass:"el-color-dropdown__value"},[i("el-input",{attrs:{"validate-event":!1,size:"mini"},on:{blur:e.handleConfirm},nativeOn:{keyup:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.handleConfirm(t):null}},model:{value:e.customInput,callback:function(t){e.customInput=t},expression:"customInput"}})],1),i("el-button",{staticClass:"el-color-dropdown__link-btn",attrs:{size:"mini",type:"text"},on:{click:function(t){e.$emit("clear")}}},[e._v("\n "+e._s(e.t("el.colorpicker.clear"))+"\n ")]),i("el-button",{staticClass:"el-color-dropdown__btn",attrs:{plain:"",size:"mini"},on:{click:e.confirmValue}},[e._v("\n "+e._s(e.t("el.colorpicker.confirm"))+"\n ")])],1)],1)])};Fl._withStripped=!0;var Ll=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-svpanel",style:{backgroundColor:this.background}},[t("div",{staticClass:"el-color-svpanel__white"}),t("div",{staticClass:"el-color-svpanel__black"}),t("div",{staticClass:"el-color-svpanel__cursor",style:{top:this.cursorTop+"px",left:this.cursorLeft+"px"}},[t("div")])])};Ll._withStripped=!0;var Al=!1,Vl=function(e,t){if(!di.a.prototype.$isServer){var i=function(e){t.drag&&t.drag(e)},n=function e(n){document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",e),document.onselectstart=null,document.ondragstart=null,Al=!1,t.end&&t.end(n)};e.addEventListener("mousedown",function(e){Al||(document.onselectstart=function(){return!1},document.ondragstart=function(){return!1},document.addEventListener("mousemove",i),document.addEventListener("mouseup",n),Al=!0,t.start&&t.start(e))})}},Bl=s({name:"el-sl-panel",props:{color:{required:!0}},computed:{colorValue:function(){return{hue:this.color.get("hue"),value:this.color.get("value")}}},watch:{colorValue:function(){this.update()}},methods:{update:function(){var e=this.color.get("saturation"),t=this.color.get("value"),i=this.$el,n=i.clientWidth,s=i.clientHeight;this.cursorLeft=e*n/100,this.cursorTop=(100-t)*s/100,this.background="hsl("+this.color.get("hue")+", 100%, 50%)"},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=e.clientX-t.left,n=e.clientY-t.top;i=Math.max(0,i),i=Math.min(i,t.width),n=Math.max(0,n),n=Math.min(n,t.height),this.cursorLeft=i,this.cursorTop=n,this.color.set({saturation:i/t.width*100,value:100-n/t.height*100})}},mounted:function(){var e=this;Vl(this.$el,{drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}}),this.update()},data:function(){return{cursorTop:0,cursorLeft:0,background:"hsl(0, 100%, 50%)"}}},Ll,[],!1,null,null,null);Bl.options.__file="packages/color-picker/src/components/sv-panel.vue";var zl=Bl.exports,Rl=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-hue-slider",class:{"is-vertical":this.vertical}},[t("div",{ref:"bar",staticClass:"el-color-hue-slider__bar",on:{click:this.handleClick}}),t("div",{ref:"thumb",staticClass:"el-color-hue-slider__thumb",style:{left:this.thumbLeft+"px",top:this.thumbTop+"px"}})])};Rl._withStripped=!0;var Hl=s({name:"el-color-hue-slider",props:{color:{required:!0},vertical:Boolean},data:function(){return{thumbLeft:0,thumbTop:0}},computed:{hueValue:function(){return this.color.get("hue")}},watch:{hueValue:function(){this.update()}},methods:{handleClick:function(e){var t=this.$refs.thumb;e.target!==t&&this.handleDrag(e)},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=this.$refs.thumb,n=void 0;if(this.vertical){var s=e.clientY-t.top;s=Math.min(s,t.height-i.offsetHeight/2),s=Math.max(i.offsetHeight/2,s),n=Math.round((s-i.offsetHeight/2)/(t.height-i.offsetHeight)*360)}else{var r=e.clientX-t.left;r=Math.min(r,t.width-i.offsetWidth/2),r=Math.max(i.offsetWidth/2,r),n=Math.round((r-i.offsetWidth/2)/(t.width-i.offsetWidth)*360)}this.color.set("hue",n)},getThumbLeft:function(){if(this.vertical)return 0;var e=this.$el,t=this.color.get("hue");if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetWidth-i.offsetWidth/2)/360)},getThumbTop:function(){if(!this.vertical)return 0;var e=this.$el,t=this.color.get("hue");if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetHeight-i.offsetHeight/2)/360)},update:function(){this.thumbLeft=this.getThumbLeft(),this.thumbTop=this.getThumbTop()}},mounted:function(){var e=this,t=this.$refs,i=t.bar,n=t.thumb,s={drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}};Vl(i,s),Vl(n,s),this.update()}},Rl,[],!1,null,null,null);Hl.options.__file="packages/color-picker/src/components/hue-slider.vue";var Wl=Hl.exports,ql=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-alpha-slider",class:{"is-vertical":this.vertical}},[t("div",{ref:"bar",staticClass:"el-color-alpha-slider__bar",style:{background:this.background},on:{click:this.handleClick}}),t("div",{ref:"thumb",staticClass:"el-color-alpha-slider__thumb",style:{left:this.thumbLeft+"px",top:this.thumbTop+"px"}})])};ql._withStripped=!0;var Yl=s({name:"el-color-alpha-slider",props:{color:{required:!0},vertical:Boolean},watch:{"color._alpha":function(){this.update()},"color.value":function(){this.update()}},methods:{handleClick:function(e){var t=this.$refs.thumb;e.target!==t&&this.handleDrag(e)},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=this.$refs.thumb;if(this.vertical){var n=e.clientY-t.top;n=Math.max(i.offsetHeight/2,n),n=Math.min(n,t.height-i.offsetHeight/2),this.color.set("alpha",Math.round((n-i.offsetHeight/2)/(t.height-i.offsetHeight)*100))}else{var s=e.clientX-t.left;s=Math.max(i.offsetWidth/2,s),s=Math.min(s,t.width-i.offsetWidth/2),this.color.set("alpha",Math.round((s-i.offsetWidth/2)/(t.width-i.offsetWidth)*100))}},getThumbLeft:function(){if(this.vertical)return 0;var e=this.$el,t=this.color._alpha;if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetWidth-i.offsetWidth/2)/100)},getThumbTop:function(){if(!this.vertical)return 0;var e=this.$el,t=this.color._alpha;if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetHeight-i.offsetHeight/2)/100)},getBackground:function(){if(this.color&&this.color.value){var e=this.color.toRgb(),t=e.r,i=e.g,n=e.b;return"linear-gradient(to right, rgba("+t+", "+i+", "+n+", 0) 0%, rgba("+t+", "+i+", "+n+", 1) 100%)"}return null},update:function(){this.thumbLeft=this.getThumbLeft(),this.thumbTop=this.getThumbTop(),this.background=this.getBackground()}},data:function(){return{thumbLeft:0,thumbTop:0,background:null}},mounted:function(){var e=this,t=this.$refs,i=t.bar,n=t.thumb,s={drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}};Vl(i,s),Vl(n,s),this.update()}},ql,[],!1,null,null,null);Yl.options.__file="packages/color-picker/src/components/alpha-slider.vue";var Kl=Yl.exports,Ul=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-color-predefine"},[i("div",{staticClass:"el-color-predefine__colors"},e._l(e.rgbaColors,function(t,n){return i("div",{key:e.colors[n],staticClass:"el-color-predefine__color-selector",class:{selected:t.selected,"is-alpha":t._alpha<100},on:{click:function(t){e.handleSelect(n)}}},[i("div",{style:{"background-color":t.value}})])}),0)])};Ul._withStripped=!0;var Gl=s({props:{colors:{type:Array,required:!0},color:{required:!0}},data:function(){return{rgbaColors:this.parseColors(this.colors,this.color)}},methods:{handleSelect:function(e){this.color.fromString(this.colors[e])},parseColors:function(e,t){return e.map(function(e){var i=new jl;return i.enableAlpha=!0,i.format="rgba",i.fromString(e),i.selected=i.value===t.value,i})}},watch:{"$parent.currentColor":function(e){var t=new jl;t.fromString(e),this.rgbaColors.forEach(function(e){e.selected=t.compare(e)})},colors:function(e){this.rgbaColors=this.parseColors(e,this.color)},color:function(e){this.rgbaColors=this.parseColors(this.colors,e)}}},Ul,[],!1,null,null,null);Gl.options.__file="packages/color-picker/src/components/predefine.vue";var Xl=Gl.exports,Ql=s({name:"el-color-picker-dropdown",mixins:[j.a,f.a],components:{SvPanel:zl,HueSlider:Wl,AlphaSlider:Kl,ElInput:d.a,ElButton:Y.a,Predefine:Xl},props:{color:{required:!0},showAlpha:Boolean,predefine:Array},data:function(){return{customInput:""}},computed:{currentColor:function(){var e=this.$parent;return e.value||e.showPanelColor?e.color.value:""}},methods:{confirmValue:function(){this.$emit("pick")},handleConfirm:function(){this.color.fromString(this.customInput)}},mounted:function(){this.$parent.popperElm=this.popperElm=this.$el,this.referenceElm=this.$parent.$el},watch:{showPopper:function(e){var t=this;!0===e&&this.$nextTick(function(){var e=t.$refs,i=e.sl,n=e.hue,s=e.alpha;i&&i.update(),n&&n.update(),s&&s.update()})},currentColor:{immediate:!0,handler:function(e){this.customInput=e}}}},Fl,[],!1,null,null,null);Ql.options.__file="packages/color-picker/src/components/picker-dropdown.vue";var Jl=Ql.exports,Zl=s({name:"ElColorPicker",mixins:[k.a],props:{value:String,showAlpha:Boolean,colorFormat:String,disabled:Boolean,size:String,popperClass:String,predefine:Array},inject:{elForm:{default:""},elFormItem:{default:""}},directives:{Clickoutside:M.a},computed:{displayedColor:function(){return this.value||this.showPanelColor?this.displayedRgb(this.color,this.showAlpha):"transparent"},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},colorSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},colorDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{value:function(e){e?e&&e!==this.color.value&&this.color.fromString(e):this.showPanelColor=!1},color:{deep:!0,handler:function(){this.showPanelColor=!0}},displayedColor:function(e){if(this.showPicker){var t=new jl({enableAlpha:this.showAlpha,format:this.colorFormat});t.fromString(this.value),e!==this.displayedRgb(t,this.showAlpha)&&this.$emit("active-change",e)}}},methods:{handleTrigger:function(){this.colorDisabled||(this.showPicker=!this.showPicker)},confirmValue:function(){var e=this.color.value;this.$emit("input",e),this.$emit("change",e),this.dispatch("ElFormItem","el.form.change",e),this.showPicker=!1},clearValue:function(){this.$emit("input",null),this.$emit("change",null),null!==this.value&&this.dispatch("ElFormItem","el.form.change",null),this.showPanelColor=!1,this.showPicker=!1,this.resetColor()},hide:function(){this.showPicker=!1,this.resetColor()},resetColor:function(){var e=this;this.$nextTick(function(t){e.value?e.color.fromString(e.value):e.showPanelColor=!1})},displayedRgb:function(e,t){if(!(e instanceof jl))throw Error("color should be instance of Color Class");var i=e.toRgb(),n=i.r,s=i.g,r=i.b;return t?"rgba("+n+", "+s+", "+r+", "+e.get("alpha")/100+")":"rgb("+n+", "+s+", "+r+")"}},mounted:function(){var e=this.value;e&&this.color.fromString(e),this.popperElm=this.$refs.dropdown.$el},data:function(){return{color:new jl({enableAlpha:this.showAlpha,format:this.colorFormat}),showPicker:!1,showPanelColor:!1}},components:{PickerDropdown:Jl}},Dl,[],!1,null,null,null);Zl.options.__file="packages/color-picker/src/main.vue";var ec=Zl.exports;ec.install=function(e){e.component(ec.name,ec)};var tc=ec,ic=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-transfer"},[i("transfer-panel",e._b({ref:"leftPanel",attrs:{data:e.sourceData,title:e.titles[0]||e.t("el.transfer.titles.0"),"default-checked":e.leftDefaultChecked,placeholder:e.filterPlaceholder||e.t("el.transfer.filterPlaceholder")},on:{"checked-change":e.onSourceCheckedChange}},"transfer-panel",e.$props,!1),[e._t("left-footer")],2),i("div",{staticClass:"el-transfer__buttons"},[i("el-button",{class:["el-transfer__button",e.hasButtonTexts?"is-with-texts":""],attrs:{type:"primary",disabled:0===e.rightChecked.length},nativeOn:{click:function(t){return e.addToLeft(t)}}},[i("i",{staticClass:"el-icon-arrow-left"}),void 0!==e.buttonTexts[0]?i("span",[e._v(e._s(e.buttonTexts[0]))]):e._e()]),i("el-button",{class:["el-transfer__button",e.hasButtonTexts?"is-with-texts":""],attrs:{type:"primary",disabled:0===e.leftChecked.length},nativeOn:{click:function(t){return e.addToRight(t)}}},[void 0!==e.buttonTexts[1]?i("span",[e._v(e._s(e.buttonTexts[1]))]):e._e(),i("i",{staticClass:"el-icon-arrow-right"})])],1),i("transfer-panel",e._b({ref:"rightPanel",attrs:{data:e.targetData,title:e.titles[1]||e.t("el.transfer.titles.1"),"default-checked":e.rightDefaultChecked,placeholder:e.filterPlaceholder||e.t("el.transfer.filterPlaceholder")},on:{"checked-change":e.onTargetCheckedChange}},"transfer-panel",e.$props,!1),[e._t("right-footer")],2)],1)};ic._withStripped=!0;var nc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-transfer-panel"},[i("p",{staticClass:"el-transfer-panel__header"},[i("el-checkbox",{attrs:{indeterminate:e.isIndeterminate},on:{change:e.handleAllCheckedChange},model:{value:e.allChecked,callback:function(t){e.allChecked=t},expression:"allChecked"}},[e._v("\n "+e._s(e.title)+"\n "),i("span",[e._v(e._s(e.checkedSummary))])])],1),i("div",{class:["el-transfer-panel__body",e.hasFooter?"is-with-footer":""]},[e.filterable?i("el-input",{staticClass:"el-transfer-panel__filter",attrs:{size:"small",placeholder:e.placeholder},nativeOn:{mouseenter:function(t){e.inputHover=!0},mouseleave:function(t){e.inputHover=!1}},model:{value:e.query,callback:function(t){e.query=t},expression:"query"}},[i("i",{class:["el-input__icon","el-icon-"+e.inputIcon],attrs:{slot:"prefix"},on:{click:e.clearQuery},slot:"prefix"})]):e._e(),i("el-checkbox-group",{directives:[{name:"show",rawName:"v-show",value:!e.hasNoMatch&&e.data.length>0,expression:"!hasNoMatch && data.length > 0"}],staticClass:"el-transfer-panel__list",class:{"is-filterable":e.filterable},model:{value:e.checked,callback:function(t){e.checked=t},expression:"checked"}},e._l(e.filteredData,function(t){return i("el-checkbox",{key:t[e.keyProp],staticClass:"el-transfer-panel__item",attrs:{label:t[e.keyProp],disabled:t[e.disabledProp]}},[i("option-content",{attrs:{option:t}})],1)}),1),i("p",{directives:[{name:"show",rawName:"v-show",value:e.hasNoMatch,expression:"hasNoMatch"}],staticClass:"el-transfer-panel__empty"},[e._v(e._s(e.t("el.transfer.noMatch")))]),i("p",{directives:[{name:"show",rawName:"v-show",value:0===e.data.length&&!e.hasNoMatch,expression:"data.length === 0 && !hasNoMatch"}],staticClass:"el-transfer-panel__empty"},[e._v(e._s(e.t("el.transfer.noData")))])],1),e.hasFooter?i("p",{staticClass:"el-transfer-panel__footer"},[e._t("default")],2):e._e()])};nc._withStripped=!0;var sc=s({mixins:[f.a],name:"ElTransferPanel",componentName:"ElTransferPanel",components:{ElCheckboxGroup:Yi.a,ElCheckbox:ri.a,ElInput:d.a,OptionContent:{props:{option:Object},render:function(e){var t=function e(t){return"ElTransferPanel"===t.$options.componentName?t:t.$parent?e(t.$parent):t}(this),i=t.$parent||t;return t.renderContent?t.renderContent(e,this.option):i.$scopedSlots.default?i.$scopedSlots.default({option:this.option}):e("span",[this.option[t.labelProp]||this.option[t.keyProp]])}}},props:{data:{type:Array,default:function(){return[]}},renderContent:Function,placeholder:String,title:String,filterable:Boolean,format:Object,filterMethod:Function,defaultChecked:Array,props:Object},data:function(){return{checked:[],allChecked:!1,query:"",inputHover:!1,checkChangeByUser:!0}},watch:{checked:function(e,t){if(this.updateAllChecked(),this.checkChangeByUser){var i=e.concat(t).filter(function(i){return-1===e.indexOf(i)||-1===t.indexOf(i)});this.$emit("checked-change",e,i)}else this.$emit("checked-change",e),this.checkChangeByUser=!0},data:function(){var e=this,t=[],i=this.filteredData.map(function(t){return t[e.keyProp]});this.checked.forEach(function(e){i.indexOf(e)>-1&&t.push(e)}),this.checkChangeByUser=!1,this.checked=t},checkableData:function(){this.updateAllChecked()},defaultChecked:{immediate:!0,handler:function(e,t){var i=this;if(!t||e.length!==t.length||!e.every(function(e){return t.indexOf(e)>-1})){var n=[],s=this.checkableData.map(function(e){return e[i.keyProp]});e.forEach(function(e){s.indexOf(e)>-1&&n.push(e)}),this.checkChangeByUser=!1,this.checked=n}}}},computed:{filteredData:function(){var e=this;return this.data.filter(function(t){return"function"==typeof e.filterMethod?e.filterMethod(e.query,t):(t[e.labelProp]||t[e.keyProp].toString()).toLowerCase().indexOf(e.query.toLowerCase())>-1})},checkableData:function(){var e=this;return this.filteredData.filter(function(t){return!t[e.disabledProp]})},checkedSummary:function(){var e=this.checked.length,t=this.data.length,i=this.format,n=i.noChecked,s=i.hasChecked;return n&&s?e>0?s.replace(/\${checked}/g,e).replace(/\${total}/g,t):n.replace(/\${total}/g,t):e+"/"+t},isIndeterminate:function(){var e=this.checked.length;return e>0&&e0&&0===this.filteredData.length},inputIcon:function(){return this.query.length>0&&this.inputHover?"circle-close":"search"},labelProp:function(){return this.props.label||"label"},keyProp:function(){return this.props.key||"key"},disabledProp:function(){return this.props.disabled||"disabled"},hasFooter:function(){return!!this.$slots.default}},methods:{updateAllChecked:function(){var e=this,t=this.checkableData.map(function(t){return t[e.keyProp]});this.allChecked=t.length>0&&t.every(function(t){return e.checked.indexOf(t)>-1})},handleAllCheckedChange:function(e){var t=this;this.checked=e?this.checkableData.map(function(e){return e[t.keyProp]}):[]},clearQuery:function(){"circle-close"===this.inputIcon&&(this.query="")}}},nc,[],!1,null,null,null);sc.options.__file="packages/transfer/src/transfer-panel.vue";var rc=sc.exports,oc=s({name:"ElTransfer",mixins:[k.a,f.a,C.a],components:{TransferPanel:rc,ElButton:Y.a},props:{data:{type:Array,default:function(){return[]}},titles:{type:Array,default:function(){return[]}},buttonTexts:{type:Array,default:function(){return[]}},filterPlaceholder:{type:String,default:""},filterMethod:Function,leftDefaultChecked:{type:Array,default:function(){return[]}},rightDefaultChecked:{type:Array,default:function(){return[]}},renderContent:Function,value:{type:Array,default:function(){return[]}},format:{type:Object,default:function(){return{}}},filterable:Boolean,props:{type:Object,default:function(){return{label:"label",key:"key",disabled:"disabled"}}},targetOrder:{type:String,default:"original"}},data:function(){return{leftChecked:[],rightChecked:[]}},computed:{dataObj:function(){var e=this.props.key;return this.data.reduce(function(t,i){return(t[i[e]]=i)&&t},{})},sourceData:function(){var e=this;return this.data.filter(function(t){return-1===e.value.indexOf(t[e.props.key])})},targetData:function(){var e=this;return"original"===this.targetOrder?this.data.filter(function(t){return e.value.indexOf(t[e.props.key])>-1}):this.value.reduce(function(t,i){var n=e.dataObj[i];return n&&t.push(n),t},[])},hasButtonTexts:function(){return 2===this.buttonTexts.length}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}},methods:{getMigratingConfig:function(){return{props:{"footer-format":"footer-format is renamed to format."}}},onSourceCheckedChange:function(e,t){this.leftChecked=e,void 0!==t&&this.$emit("left-check-change",e,t)},onTargetCheckedChange:function(e,t){this.rightChecked=e,void 0!==t&&this.$emit("right-check-change",e,t)},addToLeft:function(){var e=this.value.slice();this.rightChecked.forEach(function(t){var i=e.indexOf(t);i>-1&&e.splice(i,1)}),this.$emit("input",e),this.$emit("change",e,"left",this.rightChecked)},addToRight:function(){var e=this,t=this.value.slice(),i=[],n=this.props.key;this.data.forEach(function(t){var s=t[n];e.leftChecked.indexOf(s)>-1&&-1===e.value.indexOf(s)&&i.push(s)}),t="unshift"===this.targetOrder?i.concat(t):t.concat(i),this.$emit("input",t),this.$emit("change",t,"right",this.leftChecked)},clearQuery:function(e){"left"===e?this.$refs.leftPanel.query="":"right"===e&&(this.$refs.rightPanel.query="")}}},ic,[],!1,null,null,null);oc.options.__file="packages/transfer/src/main.vue";var ac=oc.exports;ac.install=function(e){e.component(ac.name,ac)};var lc=ac,cc=function(){var e=this.$createElement;return(this._self._c||e)("section",{staticClass:"el-container",class:{"is-vertical":this.isVertical}},[this._t("default")],2)};cc._withStripped=!0;var uc=s({name:"ElContainer",componentName:"ElContainer",props:{direction:String},computed:{isVertical:function(){return"vertical"===this.direction||"horizontal"!==this.direction&&(!(!this.$slots||!this.$slots.default)&&this.$slots.default.some(function(e){var t=e.componentOptions&&e.componentOptions.tag;return"el-header"===t||"el-footer"===t}))}}},cc,[],!1,null,null,null);uc.options.__file="packages/container/src/main.vue";var hc=uc.exports;hc.install=function(e){e.component(hc.name,hc)};var dc=hc,pc=function(){var e=this.$createElement;return(this._self._c||e)("header",{staticClass:"el-header",style:{height:this.height}},[this._t("default")],2)};pc._withStripped=!0;var fc=s({name:"ElHeader",componentName:"ElHeader",props:{height:{type:String,default:"60px"}}},pc,[],!1,null,null,null);fc.options.__file="packages/header/src/main.vue";var mc=fc.exports;mc.install=function(e){e.component(mc.name,mc)};var vc=mc,gc=function(){var e=this.$createElement;return(this._self._c||e)("aside",{staticClass:"el-aside",style:{width:this.width}},[this._t("default")],2)};gc._withStripped=!0;var bc=s({name:"ElAside",componentName:"ElAside",props:{width:{type:String,default:"300px"}}},gc,[],!1,null,null,null);bc.options.__file="packages/aside/src/main.vue";var yc=bc.exports;yc.install=function(e){e.component(yc.name,yc)};var _c=yc,xc=function(){var e=this.$createElement;return(this._self._c||e)("main",{staticClass:"el-main"},[this._t("default")],2)};xc._withStripped=!0;var Cc=s({name:"ElMain",componentName:"ElMain"},xc,[],!1,null,null,null);Cc.options.__file="packages/main/src/main.vue";var wc=Cc.exports;wc.install=function(e){e.component(wc.name,wc)};var kc=wc,Sc=function(){var e=this.$createElement;return(this._self._c||e)("footer",{staticClass:"el-footer",style:{height:this.height}},[this._t("default")],2)};Sc._withStripped=!0;var Dc=s({name:"ElFooter",componentName:"ElFooter",props:{height:{type:String,default:"60px"}}},Sc,[],!1,null,null,null);Dc.options.__file="packages/footer/src/main.vue";var $c=Dc.exports;$c.install=function(e){e.component($c.name,$c)};var Oc=$c,Ec=s({name:"ElTimeline",props:{reverse:{type:Boolean,default:!1}},provide:function(){return{timeline:this}},render:function(){var e=arguments[0],t=this.reverse,i={"el-timeline":!0,"is-reverse":t},n=this.$slots.default||[];return t&&(n=n.reverse()),e("ul",{class:i},[n])}},void 0,void 0,!1,null,null,null);Ec.options.__file="packages/timeline/src/main.vue";var Tc=Ec.exports;Tc.install=function(e){e.component(Tc.name,Tc)};var Pc=Tc,Mc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-timeline-item"},[i("div",{staticClass:"el-timeline-item__tail"}),e.$slots.dot?e._e():i("div",{staticClass:"el-timeline-item__node",class:["el-timeline-item__node--"+(e.size||""),"el-timeline-item__node--"+(e.type||"")],style:{backgroundColor:e.color}},[e.icon?i("i",{staticClass:"el-timeline-item__icon",class:e.icon}):e._e()]),e.$slots.dot?i("div",{staticClass:"el-timeline-item__dot"},[e._t("dot")],2):e._e(),i("div",{staticClass:"el-timeline-item__wrapper"},[e.hideTimestamp||"top"!==e.placement?e._e():i("div",{staticClass:"el-timeline-item__timestamp is-top"},[e._v("\n "+e._s(e.timestamp)+"\n ")]),i("div",{staticClass:"el-timeline-item__content"},[e._t("default")],2),e.hideTimestamp||"bottom"!==e.placement?e._e():i("div",{staticClass:"el-timeline-item__timestamp is-bottom"},[e._v("\n "+e._s(e.timestamp)+"\n ")])])])};Mc._withStripped=!0;var Ic=s({name:"ElTimelineItem",inject:["timeline"],props:{timestamp:String,hideTimestamp:{type:Boolean,default:!1},placement:{type:String,default:"bottom"},type:String,color:String,size:{type:String,default:"normal"},icon:String}},Mc,[],!1,null,null,null);Ic.options.__file="packages/timeline/src/item.vue";var Nc=Ic.exports;Nc.install=function(e){e.component(Nc.name,Nc)};var jc=Nc,Fc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",e._b({class:["el-link",e.type?"el-link--"+e.type:"",e.disabled&&"is-disabled",e.underline&&!e.disabled&&"is-underline"],attrs:{href:e.disabled?null:e.href},on:{click:e.handleClick}},"a",e.$attrs,!1),[e.icon?i("i",{class:e.icon}):e._e(),e.$slots.default?i("span",{staticClass:"el-link--inner"},[e._t("default")],2):e._e(),e.$slots.icon?[e.$slots.icon?e._t("icon"):e._e()]:e._e()],2)};Fc._withStripped=!0;var Lc=s({name:"ElLink",props:{type:{type:String,default:"default"},underline:{type:Boolean,default:!0},disabled:Boolean,href:String,icon:String},methods:{handleClick:function(e){this.disabled||this.href||this.$emit("click",e)}}},Fc,[],!1,null,null,null);Lc.options.__file="packages/link/src/main.vue";var Ac=Lc.exports;Ac.install=function(e){e.component(Ac.name,Ac)};var Vc=Ac,Bc=function(e,t){var i=t._c;return i("div",t._g(t._b({class:[t.data.staticClass,"el-divider","el-divider--"+t.props.direction]},"div",t.data.attrs,!1),t.listeners),[t.slots().default&&"vertical"!==t.props.direction?i("div",{class:["el-divider__text","is-"+t.props.contentPosition]},[t._t("default")],2):t._e()])};Bc._withStripped=!0;var zc=s({name:"ElDivider",props:{direction:{type:String,default:"horizontal",validator:function(e){return-1!==["horizontal","vertical"].indexOf(e)}},contentPosition:{type:String,default:"center",validator:function(e){return-1!==["left","center","right"].indexOf(e)}}}},Bc,[],!0,null,null,null);zc.options.__file="packages/divider/src/main.vue";var Rc=zc.exports;Rc.install=function(e){e.component(Rc.name,Rc)};var Hc=Rc,Wc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-image"},[e.loading?e._t("placeholder",[i("div",{staticClass:"el-image__placeholder"})]):e.error?e._t("error",[i("div",{staticClass:"el-image__error"},[e._v(e._s(e.t("el.image.error")))])]):i("img",e._g(e._b({staticClass:"el-image__inner",class:{"el-image__inner--center":e.alignCenter,"el-image__preview":e.preview},style:e.imageStyle,attrs:{src:e.src},on:{click:e.clickHandler}},"img",e.$attrs,!1),e.$listeners)),e.preview?[e.showViewer?i("image-viewer",{attrs:{"z-index":e.zIndex,"initial-index":e.imageIndex,"on-close":e.closeViewer,"url-list":e.previewSrcList}}):e._e()]:e._e()],2)};Wc._withStripped=!0;var qc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"viewer-fade"}},[i("div",{ref:"el-image-viewer__wrapper",staticClass:"el-image-viewer__wrapper",style:{"z-index":e.zIndex},attrs:{tabindex:"-1"}},[i("div",{staticClass:"el-image-viewer__mask"}),i("span",{staticClass:"el-image-viewer__btn el-image-viewer__close",on:{click:e.hide}},[i("i",{staticClass:"el-icon-circle-close"})]),e.isSingle?e._e():[i("span",{staticClass:"el-image-viewer__btn el-image-viewer__prev",class:{"is-disabled":!e.infinite&&e.isFirst},on:{click:e.prev}},[i("i",{staticClass:"el-icon-arrow-left"})]),i("span",{staticClass:"el-image-viewer__btn el-image-viewer__next",class:{"is-disabled":!e.infinite&&e.isLast},on:{click:e.next}},[i("i",{staticClass:"el-icon-arrow-right"})])],i("div",{staticClass:"el-image-viewer__btn el-image-viewer__actions"},[i("div",{staticClass:"el-image-viewer__actions__inner"},[i("i",{staticClass:"el-icon-zoom-out",on:{click:function(t){e.handleActions("zoomOut")}}}),i("i",{staticClass:"el-icon-zoom-in",on:{click:function(t){e.handleActions("zoomIn")}}}),i("i",{staticClass:"el-image-viewer__actions__divider"}),i("i",{class:e.mode.icon,on:{click:e.toggleMode}}),i("i",{staticClass:"el-image-viewer__actions__divider"}),i("i",{staticClass:"el-icon-refresh-left",on:{click:function(t){e.handleActions("anticlocelise")}}}),i("i",{staticClass:"el-icon-refresh-right",on:{click:function(t){e.handleActions("clocelise")}}})])]),i("div",{staticClass:"el-image-viewer__canvas"},e._l(e.urlList,function(t,n){return n===e.index?i("img",{key:t,ref:"img",refInFor:!0,staticClass:"el-image-viewer__img",style:e.imgStyle,attrs:{src:e.currentImg},on:{load:e.handleImgLoad,error:e.handleImgError,mousedown:e.handleMouseDown}}):e._e()}),0)],2)])};qc._withStripped=!0;var Yc=Object.assign||function(e){for(var t=1;t0?e.handleActions("zoomIn",{zoomRate:.015,enableTransition:!1}):e.handleActions("zoomOut",{zoomRate:.015,enableTransition:!1})}),Object(fe.on)(document,"keydown",this._keyDownHandler),Object(fe.on)(document,Uc,this._mouseWheelHandler)},deviceSupportUninstall:function(){Object(fe.off)(document,"keydown",this._keyDownHandler),Object(fe.off)(document,Uc,this._mouseWheelHandler),this._keyDownHandler=null,this._mouseWheelHandler=null},handleImgLoad:function(e){this.loading=!1},handleImgError:function(e){this.loading=!1,e.target.alt="加载失败"},handleMouseDown:function(e){var t=this;if(!this.loading&&0===e.button){var i=this.transform,n=i.offsetX,s=i.offsetY,r=e.pageX,o=e.pageY;this._dragHandler=Object(m.rafThrottle)(function(e){t.transform.offsetX=n+e.pageX-r,t.transform.offsetY=s+e.pageY-o}),Object(fe.on)(document,"mousemove",this._dragHandler),Object(fe.on)(document,"mouseup",function(e){Object(fe.off)(document,"mousemove",t._dragHandler)}),e.preventDefault()}},reset:function(){this.transform={scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}},toggleMode:function(){if(!this.loading){var e=Object.keys(Kc),t=(Object.values(Kc).indexOf(this.mode)+1)%e.length;this.mode=Kc[e[t]],this.reset()}},prev:function(){if(!this.isFirst||this.infinite){var e=this.urlList.length;this.index=(this.index-1+e)%e}},next:function(){if(!this.isLast||this.infinite){var e=this.urlList.length;this.index=(this.index+1)%e}},handleActions:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.loading){var i=Yc({zoomRate:.2,rotateDeg:90,enableTransition:!0},t),n=i.zoomRate,s=i.rotateDeg,r=i.enableTransition,o=this.transform;switch(e){case"zoomOut":o.scale>.2&&(o.scale=parseFloat((o.scale-n).toFixed(3)));break;case"zoomIn":o.scale=parseFloat((o.scale+n).toFixed(3));break;case"clocelise":o.deg+=s;break;case"anticlocelise":o.deg-=s}o.enableTransition=r}}},mounted:function(){this.deviceSupportInstall(),this.$refs["el-image-viewer__wrapper"].focus()}},qc,[],!1,null,null,null);Gc.options.__file="packages/image/src/image-viewer.vue";var Xc=Gc.exports,Qc=function(){return void 0!==document.documentElement.style.objectFit},Jc="none",Zc="contain",eu="cover",tu="fill",iu="scale-down",nu="",su=s({name:"ElImage",mixins:[f.a],inheritAttrs:!1,components:{ImageViewer:Xc},props:{src:String,fit:String,lazy:Boolean,scrollContainer:{},previewSrcList:{type:Array,default:function(){return[]}},zIndex:{type:Number,default:2e3}},data:function(){return{loading:!0,error:!1,show:!this.lazy,imageWidth:0,imageHeight:0,showViewer:!1}},computed:{imageStyle:function(){var e=this.fit;return!this.$isServer&&e?Qc()?{"object-fit":e}:this.getImageStyle(e):{}},alignCenter:function(){return!this.$isServer&&!Qc()&&this.fit!==tu},preview:function(){var e=this.previewSrcList;return Array.isArray(e)&&e.length>0},imageIndex:function(){var e=0,t=this.previewSrcList.indexOf(this.src);return t>=0&&(e=t),e}},watch:{src:function(e){this.show&&this.loadImage()},show:function(e){e&&this.loadImage()}},mounted:function(){this.lazy?this.addLazyLoadListener():this.loadImage()},beforeDestroy:function(){this.lazy&&this.removeLazyLoadListener()},methods:{loadImage:function(){var e=this;if(!this.$isServer){this.loading=!0,this.error=!1;var t=new Image;t.onload=function(i){return e.handleLoad(i,t)},t.onerror=this.handleError.bind(this),Object.keys(this.$attrs).forEach(function(i){var n=e.$attrs[i];t.setAttribute(i,n)}),t.src=this.src}},handleLoad:function(e,t){this.imageWidth=t.width,this.imageHeight=t.height,this.loading=!1,this.error=!1},handleError:function(e){this.loading=!1,this.error=!0,this.$emit("error",e)},handleLazyLoad:function(){Object(fe.isInContainer)(this.$el,this._scrollContainer)&&(this.show=!0,this.removeLazyLoadListener())},addLazyLoadListener:function(){if(!this.$isServer){var e=this.scrollContainer,t=null;(t=Object(Na.isHtmlElement)(e)?e:Object(Na.isString)(e)?document.querySelector(e):Object(fe.getScrollContainer)(this.$el))&&(this._scrollContainer=t,this._lazyLoadHandler=Ua()(200,this.handleLazyLoad),Object(fe.on)(t,"scroll",this._lazyLoadHandler),this.handleLazyLoad())}},removeLazyLoadListener:function(){var e=this._scrollContainer,t=this._lazyLoadHandler;!this.$isServer&&e&&t&&(Object(fe.off)(e,"scroll",t),this._scrollContainer=null,this._lazyLoadHandler=null)},getImageStyle:function(e){var t=this.imageWidth,i=this.imageHeight,n=this.$el,s=n.clientWidth,r=n.clientHeight;if(!(t&&i&&s&&r))return{};var o=t/i<1;e===iu&&(e=ts)return console.warn("[ElementCalendar]end time should be greater than start time"),[];if(Object(fn.validateRangeInOneMonth)(n,s))return[[n,s]];var r=[],o=new Date(n.getFullYear(),n.getMonth()+1,1),a=this.toDate(o.getTime()-864e5);if(!Object(fn.validateRangeInOneMonth)(o,s))return console.warn("[ElementCalendar]start time and end time interval must not exceed two months"),[];r.push([n,a]);var l=this.realFirstDayOfWeek,c=o.getDay(),u=0;return c!==l&&(u=0===l?7-c:(u=l-c)>0?u:7+u),(o=this.toDate(o.getTime()+864e5*u)).getDate()6?0:Math.floor(this.firstDayOfWeek)}},data:function(){return{selectedDay:"",now:new Date}}},au,[],!1,null,null,null);fu.options.__file="packages/calendar/src/main.vue";var mu=fu.exports;mu.install=function(e){e.component(mu.name,mu)};var vu=mu,gu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-fade-in"}},[e.visible?i("div",{staticClass:"el-backtop",style:{right:e.styleRight,bottom:e.styleBottom},on:{click:function(t){return t.stopPropagation(),e.handleClick(t)}}},[e._t("default",[i("el-icon",{attrs:{name:"caret-top"}})])],2):e._e()])};gu._withStripped=!0;var bu=function(e){return Math.pow(e,3)},yu=s({name:"ElBacktop",props:{visibilityHeight:{type:Number,default:200},target:[String],right:{type:Number,default:40},bottom:{type:Number,default:40}},data:function(){return{el:null,container:null,visible:!1}},computed:{styleBottom:function(){return this.bottom+"px"},styleRight:function(){return this.right+"px"}},mounted:function(){this.init(),this.throttledScrollHandler=Ua()(300,this.onScroll),this.container.addEventListener("scroll",this.throttledScrollHandler)},methods:{init:function(){if(this.container=document,this.el=document.documentElement,this.target){if(this.el=document.querySelector(this.target),!this.el)throw new Error("target is not existed: "+this.target);this.container=this.el}},onScroll:function(){var e=this.el.scrollTop;this.visible=e>=this.visibilityHeight},handleClick:function(e){this.scrollToTop(),this.$emit("click",e)},scrollToTop:function(){var e=this.el,t=Date.now(),i=e.scrollTop,n=window.requestAnimationFrame||function(e){return setTimeout(e,16)};n(function s(){var r=(Date.now()-t)/500;r<1?(e.scrollTop=i*(1-function(e){return e<.5?bu(2*e)/2:1-bu(2*(1-e))/2}(r)),n(s)):e.scrollTop=0})}},beforeDestroy:function(){this.container.removeEventListener("scroll",this.throttledScrollHandler)}},gu,[],!1,null,null,null);yu.options.__file="packages/backtop/src/main.vue";var _u=yu.exports;_u.install=function(e){e.component(_u.name,_u)};var xu=_u,Cu=function(e,t){return e===window||e===document?document.documentElement[t]:e[t]},wu=function(e){return Cu(e,"offsetHeight")},ku="ElInfiniteScroll",Su={delay:{type:Number,default:200},distance:{type:Number,default:0},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},Du=function(e,t){return Object(Na.isHtmlElement)(e)?function(e){return Object.keys(e||{}).map(function(t){return[t,e[t]]})}(Su).reduce(function(i,n){var s=n[0],r=n[1],o=r.type,a=r.default,l=e.getAttribute("infinite-scroll-"+s);switch(l=Object(Na.isUndefined)(t[l])?l:t[l],o){case Number:l=Number(l),l=Number.isNaN(l)?a:l;break;case Boolean:l=Object(Na.isDefined)(l)?"false"!==l&&Boolean(l):a;break;default:l=o(l)}return i[s]=l,i},{}):{}},$u=function(e){return e.getBoundingClientRect().top},Ou=function(e){var t=this[ku],i=t.el,n=t.vm,s=t.container,r=t.observer,o=Du(i,n),a=o.distance;if(!o.disabled){var l=s.getBoundingClientRect();if(l.width||l.height){var c=!1;if(s===i){var u=s.scrollTop+function(e){return Cu(e,"clientHeight")}(s);c=s.scrollHeight-u<=a}else{c=wu(i)+$u(i)-$u(s)-wu(s)+Number.parseFloat(function(e,t){if(e===window&&(e=document.documentElement),1!==e.nodeType)return[];var i=window.getComputedStyle(e,null);return t?i[t]:i}(s,"borderBottomWidth"))<=a}c&&Object(Na.isFunction)(e)?e.call(n):r&&(r.disconnect(),this[ku].observer=null)}}},Eu={name:"InfiniteScroll",inserted:function(e,t,i){var n=t.value,s=i.context,r=Object(fe.getScrollContainer)(e,!0),o=Du(e,s),a=o.delay,l=o.immediate,c=T()(a,Ou.bind(e,n));(e[ku]={el:e,vm:s,container:r,onScroll:c},r)&&(r.addEventListener("scroll",c),l&&((e[ku].observer=new MutationObserver(c)).observe(r,{childList:!0,subtree:!0}),c()))},unbind:function(e){var t=e[ku],i=t.container,n=t.onScroll;i&&i.removeEventListener("scroll",n)},install:function(e){e.directive(Eu.name,Eu)}},Tu=Eu,Pu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-page-header"},[i("div",{staticClass:"el-page-header__left",on:{click:function(t){e.$emit("back")}}},[i("i",{staticClass:"el-icon-back"}),i("div",{staticClass:"el-page-header__title"},[e._t("title",[e._v(e._s(e.title))])],2)]),i("div",{staticClass:"el-page-header__content"},[e._t("content",[e._v(e._s(e.content))])],2)])};Pu._withStripped=!0;var Mu=s({name:"ElPageHeader",props:{title:{type:String,default:function(){return Object(Lt.t)("el.pageHeader.title")}},content:String}},Pu,[],!1,null,null,null);Mu.options.__file="packages/page-header/src/main.vue";var Iu=Mu.exports;Iu.install=function(e){e.component(Iu.name,Iu)};var Nu=Iu,ju=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{class:["el-cascader-panel",this.border&&"is-bordered"],on:{keydown:this.handleKeyDown}},this._l(this.menus,function(e,i){return t("cascader-menu",{key:i,ref:"menu",refInFor:!0,attrs:{index:i,nodes:e}})}),1)};ju._withStripped=!0;var Fu=i(43),Lu=i.n(Fu),Au=function(e){return e.stopPropagation()},Vu=s({inject:["panel"],components:{ElCheckbox:ri.a,ElRadio:Lu.a},props:{node:{required:!0},nodeId:String},computed:{config:function(){return this.panel.config},isLeaf:function(){return this.node.isLeaf},isDisabled:function(){return this.node.isDisabled},checkedValue:function(){return this.panel.checkedValue},isChecked:function(){return this.node.isSameNode(this.checkedValue)},inActivePath:function(){return this.isInPath(this.panel.activePath)},inCheckedPath:function(){var e=this;return!!this.config.checkStrictly&&this.panel.checkedNodePaths.some(function(t){return e.isInPath(t)})},value:function(){return this.node.getValueByOption()}},methods:{handleExpand:function(){var e=this,t=this.panel,i=this.node,n=this.isDisabled,s=this.config,r=s.multiple;!s.checkStrictly&&n||i.loading||(s.lazy&&!i.loaded?t.lazyLoad(i,function(){var t=e.isLeaf;if(t||e.handleExpand(),r){var n=!!t&&i.checked;e.handleMultiCheckChange(n)}}):t.handleExpand(i))},handleCheckChange:function(){var e=this.panel,t=this.value,i=this.node;e.handleCheckChange(t),e.handleExpand(i)},handleMultiCheckChange:function(e){this.node.doCheck(e),this.panel.calculateMultiCheckedValue()},isInPath:function(e){var t=this.node;return(e[t.level-1]||{}).uid===t.uid},renderPrefix:function(e){var t=this.isLeaf,i=this.isChecked,n=this.config,s=n.checkStrictly;return n.multiple?this.renderCheckbox(e):s?this.renderRadio(e):t&&i?this.renderCheckIcon(e):null},renderPostfix:function(e){var t=this.node,i=this.isLeaf;return t.loading?this.renderLoadingIcon(e):i?null:this.renderExpandIcon(e)},renderCheckbox:function(e){var t=this.node,i=this.config,n=this.isDisabled,s={on:{change:this.handleMultiCheckChange},nativeOn:{}};return i.checkStrictly&&(s.nativeOn.click=Au),e("el-checkbox",Jo()([{attrs:{value:t.checked,indeterminate:t.indeterminate,disabled:n}},s]))},renderRadio:function(e){var t=this.checkedValue,i=this.value,n=this.isDisabled;return Object(m.isEqual)(i,t)&&(i=t),e("el-radio",{attrs:{value:t,label:i,disabled:n},on:{change:this.handleCheckChange},nativeOn:{click:Au}},[e("span")])},renderCheckIcon:function(e){return e("i",{class:"el-icon-check el-cascader-node__prefix"})},renderLoadingIcon:function(e){return e("i",{class:"el-icon-loading el-cascader-node__postfix"})},renderExpandIcon:function(e){return e("i",{class:"el-icon-arrow-right el-cascader-node__postfix"})},renderContent:function(e){var t=this.panel,i=this.node,n=t.renderLabelFn;return e("span",{class:"el-cascader-node__label"},[(n?n({node:i,data:i.data}):null)||i.label])}},render:function(e){var t=this,i=this.inActivePath,n=this.inCheckedPath,s=this.isChecked,r=this.isLeaf,o=this.isDisabled,a=this.config,l=this.nodeId,c=a.expandTrigger,u=a.checkStrictly,h=a.multiple,d=!u&&o,p={on:{}};return"click"===c?p.on.click=this.handleExpand:(p.on.mouseenter=function(e){t.handleExpand(),t.$emit("expand",e)},p.on.focus=function(e){t.handleExpand(),t.$emit("expand",e)}),!r||o||u||h||(p.on.click=this.handleCheckChange),e("li",Jo()([{attrs:{role:"menuitem",id:l,"aria-expanded":i,tabindex:d?null:-1},class:{"el-cascader-node":!0,"is-selectable":u,"in-active-path":i,"in-checked-path":n,"is-active":s,"is-disabled":d}},p]),[this.renderPrefix(e),this.renderContent(e),this.renderPostfix(e)])}},void 0,void 0,!1,null,null,null);Vu.options.__file="packages/cascader-panel/src/cascader-node.vue";var Bu=Vu.exports,zu=s({name:"ElCascaderMenu",mixins:[f.a],inject:["panel"],components:{ElScrollbar:L.a,CascaderNode:Bu},props:{nodes:{type:Array,required:!0},index:Number},data:function(){return{activeNode:null,hoverTimer:null,id:Object(m.generateId)()}},computed:{isEmpty:function(){return!this.nodes.length},menuId:function(){return"cascader-menu-"+this.id+"-"+this.index}},methods:{handleExpand:function(e){this.activeNode=e.target},handleMouseMove:function(e){var t=this.activeNode,i=this.hoverTimer,n=this.$refs.hoverZone;if(t&&n)if(t.contains(e.target)){clearTimeout(i);var s=this.$el.getBoundingClientRect().left,r=e.clientX-s,o=this.$el,a=o.offsetWidth,l=o.offsetHeight,c=t.offsetTop,u=c+t.offsetHeight;n.innerHTML='\n \n \n '}else i||(this.hoverTimer=setTimeout(this.clearHoverZone,this.panel.config.hoverThreshold))},clearHoverZone:function(){var e=this.$refs.hoverZone;e&&(e.innerHTML="")},renderEmptyText:function(e){return e("div",{class:"el-cascader-menu__empty-text"},[this.t("el.cascader.noData")])},renderNodeList:function(e){var t=this.menuId,i=this.panel.isHoverMenu,n={on:{}};i&&(n.on.expand=this.handleExpand);var s=this.nodes.map(function(i,s){var r=i.hasChildren;return e("cascader-node",Jo()([{key:i.uid,attrs:{node:i,"node-id":t+"-"+s,"aria-haspopup":r,"aria-owns":r?t:null}},n]))});return[].concat(s,[i?e("svg",{ref:"hoverZone",class:"el-cascader-menu__hover-zone"}):null])}},render:function(e){var t=this.isEmpty,i=this.menuId,n={nativeOn:{}};return this.panel.isHoverMenu&&(n.nativeOn.mousemove=this.handleMouseMove),e("el-scrollbar",Jo()([{attrs:{tag:"ul",role:"menu",id:i,"wrap-class":"el-cascader-menu__wrap","view-class":{"el-cascader-menu__list":!0,"is-empty":t}},class:"el-cascader-menu"},n]),[t?this.renderEmptyText(e):this.renderNodeList(e)])}},void 0,void 0,!1,null,null,null);zu.options.__file="packages/cascader-panel/src/cascader-menu.vue";var Ru=zu.exports,Hu=function(){function e(e,t){for(var i=0;i1?t-1:0),n=1;n1?n-1:0),r=1;r0},e.prototype.syncCheckState=function(e){var t=this.getValueByOption(),i=this.isSameNode(e,t);this.doCheck(i)},e.prototype.doCheck=function(e){this.checked!==e&&(this.config.checkStrictly?this.checked=e:(this.broadcast("check",e),this.setCheckState(e),this.emit("check")))},Hu(e,[{key:"isDisabled",get:function(){var e=this.data,t=this.parent,i=this.config,n=i.disabled,s=i.checkStrictly;return e[n]||!s&&t&&t.isDisabled}},{key:"isLeaf",get:function(){var e=this.data,t=this.loaded,i=this.hasChildren,n=this.children,s=this.config,r=s.lazy,o=s.leaf;if(r){var a=Object(Re.isDef)(e[o])?e[o]:!!t&&!n.length;return this.hasChildren=!a,a}return!i}}]),e}();var Yu=function(){function e(t,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.config=i,this.initNodes(t)}return e.prototype.initNodes=function(e){var t=this;e=Object(m.coerceTruthyValueToArray)(e),this.nodes=e.map(function(e){return new qu(e,t.config)}),this.flattedNodes=this.getFlattedNodes(!1,!1),this.leafNodes=this.getFlattedNodes(!0,!1)},e.prototype.appendNode=function(e,t){var i=new qu(e,this.config,t);(t?t.children:this.nodes).push(i)},e.prototype.appendNodes=function(e,t){var i=this;(e=Object(m.coerceTruthyValueToArray)(e)).forEach(function(e){return i.appendNode(e,t)})},e.prototype.getNodes=function(){return this.nodes},e.prototype.getFlattedNodes=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=e?this.leafNodes:this.flattedNodes;return t?i:function e(t,i){return t.reduce(function(t,n){return n.isLeaf?t.push(n):(!i&&t.push(n),t=t.concat(e(n.children,i))),t},[])}(this.nodes,e)},e.prototype.getNodeByValue=function(e){if(e){var t=this.getFlattedNodes(!1,!this.config.lazy).filter(function(t){return Object(m.valueEquals)(t.path,e)||t.value===e});return t&&t.length?t[0]:null}return null},e}(),Ku=Object.assign||function(e){for(var t=1;t0){var l=i.store.getNodeByValue(r);l.data[a]||i.lazyLoad(l,function(){i.handleExpand(l)}),i.loadCount===i.checkedValue.length&&i.$parent.computePresentText()}}t&&t(n)})},calculateMultiCheckedValue:function(){this.checkedValue=this.getCheckedNodes(this.leafOnly).map(function(e){return e.getValueByOption()})},scrollIntoView:function(){this.$isServer||(this.$refs.menu||[]).forEach(function(e){var t=e.$el;if(t){var i=t.querySelector(".el-scrollbar__wrap"),n=t.querySelector(".el-cascader-node.is-active")||t.querySelector(".el-cascader-node.in-active-path");Bt()(i,n)}})},getNodeByValue:function(e){return this.store.getNodeByValue(e)},getFlattedNodes:function(e){var t=!this.config.lazy;return this.store.getFlattedNodes(e,t)},getCheckedNodes:function(e){var t=this.checkedValue;return this.multiple?this.getFlattedNodes(e).filter(function(e){return e.checked}):Object(m.isEmpty)(t)?[]:[this.getNodeByValue(t)]},clearCheckedNodes:function(){var e=this.config,t=this.leafOnly,i=e.multiple,n=e.emitPath;i?(this.getCheckedNodes(t).filter(function(e){return!e.isDisabled}).forEach(function(e){return e.doCheck(!1)}),this.calculateMultiCheckedValue()):this.checkedValue=n?[]:null}}},ju,[],!1,null,null,null);eh.options.__file="packages/cascader-panel/src/cascader-panel.vue";var th=eh.exports;th.install=function(e){e.component(th.name,th)};var ih=th,nh=s({name:"ElAvatar",props:{size:{type:[Number,String],validator:function(e){return"string"==typeof e?["large","medium","small"].includes(e):"number"==typeof e}},shape:{type:String,default:"circle",validator:function(e){return["circle","square"].includes(e)}},icon:String,src:String,alt:String,srcSet:String,error:Function,fit:{type:String,default:"cover"}},data:function(){return{isImageExist:!0}},computed:{avatarClass:function(){var e=this.size,t=this.icon,i=this.shape,n=["el-avatar"];return e&&"string"==typeof e&&n.push("el-avatar--"+e),t&&n.push("el-avatar--icon"),i&&n.push("el-avatar--"+i),n.join(" ")}},methods:{handleError:function(){var e=this.error;!1!==(e?e():void 0)&&(this.isImageExist=!1)},renderAvatar:function(){var e=this.$createElement,t=this.icon,i=this.src,n=this.alt,s=this.isImageExist,r=this.srcSet,o=this.fit;return s&&i?e("img",{attrs:{src:i,alt:n,srcSet:r},on:{error:this.handleError},style:{"object-fit":o}}):t?e("i",{class:t}):this.$slots.default}},render:function(){var e=arguments[0],t=this.avatarClass,i=this.size;return e("span",{class:t,style:"number"==typeof i?{height:i+"px",width:i+"px",lineHeight:i+"px"}:{}},[this.renderAvatar()])}},void 0,void 0,!1,null,null,null);nh.options.__file="packages/avatar/src/main.vue";var sh=nh.exports;sh.install=function(e){e.component(sh.name,sh)};var rh=sh,oh=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-drawer-fade"},on:{"after-enter":e.afterEnter,"after-leave":e.afterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-drawer__wrapper",attrs:{tabindex:"-1"}},[i("div",{staticClass:"el-drawer__container",class:e.visible&&"el-drawer__open",attrs:{role:"document",tabindex:"-1"},on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[i("div",{ref:"drawer",staticClass:"el-drawer",class:[e.direction,e.customClass],style:e.isHorizontal?"width: "+e.size:"height: "+e.size,attrs:{"aria-modal":"true","aria-labelledby":"el-drawer__title","aria-label":e.title,role:"dialog",tabindex:"-1"}},[e.withHeader?i("header",{staticClass:"el-drawer__header",attrs:{id:"el-drawer__title"}},[e._t("title",[i("span",{attrs:{role:"heading",tabindex:"0",title:e.title}},[e._v(e._s(e.title))])]),e.showClose?i("button",{staticClass:"el-drawer__close-btn",attrs:{"aria-label":"close "+(e.title||"drawer"),type:"button"},on:{click:e.closeDrawer}},[i("i",{staticClass:"el-dialog__close el-icon el-icon-close"})]):e._e()],2):e._e(),e.rendered?i("section",{staticClass:"el-drawer__body"},[e._t("default")],2):e._e()])])])])};oh._withStripped=!0;var ah=s({name:"ElDrawer",mixins:[_.a,k.a],props:{appendToBody:{type:Boolean,default:!1},beforeClose:{type:Function},customClass:{type:String,default:""},closeOnPressEscape:{type:Boolean,default:!0},destroyOnClose:{type:Boolean,default:!1},modal:{type:Boolean,default:!0},direction:{type:String,default:"rtl",validator:function(e){return-1!==["ltr","rtl","ttb","btt"].indexOf(e)}},modalAppendToBody:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},size:{type:String,default:"30%"},title:{type:String,default:""},visible:{type:Boolean},wrapperClosable:{type:Boolean,default:!0},withHeader:{type:Boolean,default:!0}},computed:{isHorizontal:function(){return"rtl"===this.direction||"ltr"===this.direction}},data:function(){return{closed:!1,prevActiveElement:null}},watch:{visible:function(e){var t=this;e?(this.closed=!1,this.$emit("open"),this.appendToBody&&document.body.appendChild(this.$el),this.prevActiveElement=document.activeElement,this.$nextTick(function(){bl.a.focusFirstDescendant(t.$refs.drawer)})):(this.closed||this.$emit("close"),this.$nextTick(function(){t.prevActiveElement&&t.prevActiveElement.focus()}))}},methods:{afterEnter:function(){this.$emit("opened")},afterLeave:function(){this.$emit("closed")},hide:function(e){!1!==e&&(this.$emit("update:visible",!1),this.$emit("close"),!0===this.destroyOnClose&&(this.rendered=!1),this.closed=!0)},handleWrapperClick:function(){this.wrapperClosable&&this.closeDrawer()},closeDrawer:function(){"function"==typeof this.beforeClose?this.beforeClose(this.hide):this.hide()},handleClose:function(){this.closeDrawer()}},mounted:function(){this.visible&&(this.rendered=!0,this.open())},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},oh,[],!1,null,null,null);ah.options.__file="packages/drawer/src/main.vue";var lh=ah.exports;lh.install=function(e){e.component(lh.name,lh)};var ch=lh,uh=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("el-popover",e._b({attrs:{trigger:"click"},model:{value:e.visible,callback:function(t){e.visible=t},expression:"visible"}},"el-popover",e.$attrs,!1),[i("div",{staticClass:"el-popconfirm"},[i("p",{staticClass:"el-popconfirm__main"},[e.hideIcon?e._e():i("i",{staticClass:"el-popconfirm__icon",class:e.icon,style:{color:e.iconColor}}),e._v("\n "+e._s(e.title)+"\n ")]),i("div",{staticClass:"el-popconfirm__action"},[i("el-button",{attrs:{size:"mini",type:e.cancelButtonType},on:{click:e.cancel}},[e._v("\n "+e._s(e.cancelButtonText)+"\n ")]),i("el-button",{attrs:{size:"mini",type:e.confirmButtonType},on:{click:e.confirm}},[e._v("\n "+e._s(e.confirmButtonText)+"\n ")])],1)]),e._t("reference",null,{slot:"reference"})],2)};uh._withStripped=!0;var hh=i(44),dh=i.n(hh),ph=s({name:"ElPopconfirm",props:{title:{type:String},confirmButtonText:{type:String,default:Object(Lt.t)("el.popconfirm.confirmButtonText")},cancelButtonText:{type:String,default:Object(Lt.t)("el.popconfirm.cancelButtonText")},confirmButtonType:{type:String,default:"primary"},cancelButtonType:{type:String,default:"text"},icon:{type:String,default:"el-icon-question"},iconColor:{type:String,default:"#f90"},hideIcon:{type:Boolean,default:!1}},components:{ElPopover:dh.a,ElButton:Y.a},data:function(){return{visible:!1}},methods:{confirm:function(){this.visible=!1,this.$emit("onConfirm")},cancel:function(){this.visible=!1,this.$emit("onCancel")}}},uh,[],!1,null,null,null);ph.options.__file="packages/popconfirm/src/main.vue";var fh=ph.exports;fh.install=function(e){e.component(fh.name,fh)};var mh=fh,vh=[g,$,W,Q,te,re,ge,ke,Te,Ne,qe,Xe,et,rt,ct,pt,gt,xt,St,Ht,Wt,Ut,Jt,ii,rn,dn,cs,gs,Ds,Ms,Ns,ir,or,ur,br,Dr,Tr,Ir,Qr,io,wo,Bo,Ro,qo,oa,ua,fa,Oa,Ma,La,za,qa,Qa,tl,rl,cl,pl,Sl,tc,lc,dc,vc,_c,kc,Oc,Pc,jc,Vc,Hc,ou,vu,xu,Nu,ih,rh,ch,mh,ye.a],gh=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};At.a.use(t.locale),At.a.i18n(t.i18n),vh.forEach(function(t){e.component(t.name,t)}),e.use(Tu),e.use(Fo.directive),e.prototype.$ELEMENT={size:t.size||"",zIndex:t.zIndex||2e3},e.prototype.$loading=Fo.service,e.prototype.$msgbox=Js,e.prototype.$alert=Js.alert,e.prototype.$confirm=Js.confirm,e.prototype.$prompt=Js.prompt,e.prototype.$notify=po,e.prototype.$message=ka};"undefined"!=typeof window&&window.Vue&&gh(window.Vue);t.default={version:"2.13.2",locale:At.a.use,i18n:At.a.i18n,install:gh,CollapseTransition:ye.a,Loading:Fo,Pagination:g,Dialog:$,Autocomplete:W,Dropdown:Q,DropdownMenu:te,DropdownItem:re,Menu:ge,Submenu:ke,MenuItem:Te,MenuItemGroup:Ne,Input:qe,InputNumber:Xe,Radio:et,RadioGroup:rt,RadioButton:ct,Checkbox:pt,CheckboxButton:gt,CheckboxGroup:xt,Switch:St,Select:Ht,Option:Wt,OptionGroup:Ut,Button:Jt,ButtonGroup:ii,Table:rn,TableColumn:dn,DatePicker:cs,TimeSelect:gs,TimePicker:Ds,Popover:Ms,Tooltip:Ns,MessageBox:Js,Breadcrumb:ir,BreadcrumbItem:or,Form:ur,FormItem:br,Tabs:Dr,TabPane:Tr,Tag:Ir,Tree:Qr,Alert:io,Notification:po,Slider:wo,Icon:Bo,Row:Ro,Col:qo,Upload:oa,Progress:ua,Spinner:fa,Message:ka,Badge:Oa,Card:Ma,Rate:La,Steps:za,Step:qa,Carousel:Qa,Scrollbar:tl,CarouselItem:rl,Collapse:cl,CollapseItem:pl,Cascader:Sl,ColorPicker:tc,Transfer:lc,Container:dc,Header:vc,Aside:_c,Main:kc,Footer:Oc,Timeline:Pc,TimelineItem:jc,Link:Vc,Divider:Hc,Image:ou,Calendar:vu,Backtop:xu,InfiniteScroll:Tu,PageHeader:Nu,CascaderPanel:ih,Avatar:rh,Drawer:ch,Popconfirm:mh}}]).default},YWdi:function(e,t,i){"use strict";var n,s;"function"==typeof Symbol&&Symbol.iterator;void 0===(s="function"==typeof(n=function(){var e=window,t={placement:"bottom",gpuAcceleration:!0,offset:0,boundariesElement:"viewport",boundariesPadding:5,preventOverflowOrder:["left","right","top","bottom"],flipBehavior:"flip",arrowElement:"[x-arrow]",arrowOffset:0,modifiers:["shift","offset","preventOverflow","keepTogether","arrow","flip","applyStyle"],modifiersIgnored:[],forceAbsolute:!1};function i(e,i,n){this._reference=e.jquery?e[0]:e,this.state={};var s=void 0===i||null===i,r=i&&"[object Object]"===Object.prototype.toString.call(i);return this._popper=s||r?this.parse(r?i:{}):i.jquery?i[0]:i,this._options=Object.assign({},t,n),this._options.modifiers=this._options.modifiers.map(function(e){if(-1===this._options.modifiersIgnored.indexOf(e))return"applyStyle"===e&&this._popper.setAttribute("x-placement",this._options.placement),this.modifiers[e]||e}.bind(this)),this.state.position=this._getPosition(this._popper,this._reference),u(this._popper,{position:this.state.position,top:0}),this.update(),this._setupEventListeners(),this}function n(t){var i=t.style.display,n=t.style.visibility;t.style.display="block",t.style.visibility="hidden",t.offsetWidth;var s=e.getComputedStyle(t),r=parseFloat(s.marginTop)+parseFloat(s.marginBottom),o=parseFloat(s.marginLeft)+parseFloat(s.marginRight),a={width:t.offsetWidth+o,height:t.offsetHeight+r};return t.style.display=i,t.style.visibility=n,a}function s(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function r(e){var t=Object.assign({},e);return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function o(e,t){var i,n=0;for(i in e){if(e[i]===t)return n;n++}return null}function a(t,i){var n=e.getComputedStyle(t,null);return n[i]}function l(t){var i=t.offsetParent;return i!==e.document.body&&i?i:e.document.documentElement}function c(t){var i=t.parentNode;return i?i===e.document?e.document.body.scrollTop||e.document.body.scrollLeft?e.document.body:e.document.documentElement:-1!==["scroll","auto"].indexOf(a(i,"overflow"))||-1!==["scroll","auto"].indexOf(a(i,"overflow-x"))||-1!==["scroll","auto"].indexOf(a(i,"overflow-y"))?i:c(t.parentNode):t}function u(e,t){Object.keys(t).forEach(function(i){var n="";-1!==["width","height","top","right","bottom","left"].indexOf(i)&&function(e){return""!==e&&!isNaN(parseFloat(e))&&isFinite(e)}(t[i])&&(n="px"),e.style[i]=t[i]+n})}function h(e){var t={width:e.offsetWidth,height:e.offsetHeight,left:e.offsetLeft,top:e.offsetTop};return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function d(e){var t=e.getBoundingClientRect(),i=-1!=navigator.userAgent.indexOf("MSIE"),n=i&&"HTML"===e.tagName?-e.scrollTop:t.top;return{left:t.left,top:n,right:t.right,bottom:t.bottom,width:t.right-t.left,height:t.bottom-n}}function p(t){for(var i=["","ms","webkit","moz","o"],n=0;n1&&console.warn("WARNING: the given `parent` query("+t.parent+") matched more than one element, the first one will be used"),0===o.length)throw"ERROR: the given `parent` doesn't exists!";o=o[0]}return o.length>1&&o instanceof Element==0&&(console.warn("WARNING: you have passed as parent a list of elements, the first one will be used"),o=o[0]),o.appendChild(s),s;function a(e,t){t.forEach(function(t){e.classList.add(t)})}function l(e,t){t.forEach(function(t){e.setAttribute(t.split(":")[0],t.split(":")[1]||"")})}},i.prototype._getPosition=function(t,i){return l(i),this._options.forceAbsolute?"absolute":function t(i){return i!==e.document.body&&("fixed"===a(i,"position")||(i.parentNode?t(i.parentNode):i))}(i)?"fixed":"absolute"},i.prototype._getOffsets=function(e,t,i){i=i.split("-")[0];var s={};s.position=this.state.position;var r="fixed"===s.position,o=function(e,t,i){var n=d(e),s=d(t);if(i){var r=c(t);s.top+=r.scrollTop,s.bottom+=r.scrollTop,s.left+=r.scrollLeft,s.right+=r.scrollLeft}return{top:n.top-s.top,left:n.left-s.left,bottom:n.top-s.top+n.height,right:n.left-s.left+n.width,width:n.width,height:n.height}}(t,l(e),r),a=n(e);return-1!==["right","left"].indexOf(i)?(s.top=o.top+o.height/2-a.height/2,s.left="left"===i?o.left-a.width:o.right):(s.left=o.left+o.width/2-a.width/2,s.top="top"===i?o.top-a.height:o.bottom),s.width=a.width,s.height=a.height,{popper:s,reference:o}},i.prototype._setupEventListeners=function(){if(this.state.updateBound=this.update.bind(this),e.addEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement){var t=c(this._reference);t!==e.document.body&&t!==e.document.documentElement||(t=e),t.addEventListener("scroll",this.state.updateBound),this.state.scrollTarget=t}},i.prototype._removeEventListeners=function(){e.removeEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement&&this.state.scrollTarget&&(this.state.scrollTarget.removeEventListener("scroll",this.state.updateBound),this.state.scrollTarget=null),this.state.updateBound=null},i.prototype._getBoundaries=function(t,i,n){var s,r={};if("window"===n){var o=e.document.body,a=e.document.documentElement;s=Math.max(o.scrollHeight,o.offsetHeight,a.clientHeight,a.scrollHeight,a.offsetHeight),r={top:0,right:Math.max(o.scrollWidth,o.offsetWidth,a.clientWidth,a.scrollWidth,a.offsetWidth),bottom:s,left:0}}else if("viewport"===n){var u=l(this._popper),d=c(this._popper),p=h(u),f="fixed"===t.offsets.popper.position?0:function(e){return e==document.body?Math.max(document.documentElement.scrollTop,document.body.scrollTop):e.scrollTop}(d),m="fixed"===t.offsets.popper.position?0:function(e){return e==document.body?Math.max(document.documentElement.scrollLeft,document.body.scrollLeft):e.scrollLeft}(d);r={top:0-(p.top-f),right:e.document.documentElement.clientWidth-(p.left-m),bottom:e.document.documentElement.clientHeight-(p.top-f),left:0-(p.left-m)}}else r=l(this._popper)===n?{top:0,left:0,right:n.clientWidth,bottom:n.clientHeight}:h(n);return r.left+=i,r.right-=i,r.top=r.top+i,r.bottom=r.bottom-i,r},i.prototype.runModifiers=function(e,t,i){var n=t.slice();return void 0!==i&&(n=this._options.modifiers.slice(0,o(this._options.modifiers,i))),n.forEach(function(t){(function(e){return e&&"[object Function]"==={}.toString.call(e)})(t)&&(e=t.call(this,e))}.bind(this)),e},i.prototype.isModifierRequired=function(e,t){var i=o(this._options.modifiers,e);return!!this._options.modifiers.slice(0,i).filter(function(e){return e===t}).length},i.prototype.modifiers={},i.prototype.modifiers.applyStyle=function(e){var t,i={position:e.offsets.popper.position},n=Math.round(e.offsets.popper.left),s=Math.round(e.offsets.popper.top);return this._options.gpuAcceleration&&(t=p("transform"))?(i[t]="translate3d("+n+"px, "+s+"px, 0)",i.top=0,i.left=0):(i.left=n,i.top=s),Object.assign(i,e.styles),u(this._popper,i),this._popper.setAttribute("x-placement",e.placement),this.isModifierRequired(this.modifiers.applyStyle,this.modifiers.arrow)&&e.offsets.arrow&&u(e.arrowElement,e.offsets.arrow),e},i.prototype.modifiers.shift=function(e){var t=e.placement,i=t.split("-")[0],n=t.split("-")[1];if(n){var s=e.offsets.reference,o=r(e.offsets.popper),a={y:{start:{top:s.top},end:{top:s.top+s.height-o.height}},x:{start:{left:s.left},end:{left:s.left+s.width-o.width}}},l=-1!==["bottom","top"].indexOf(i)?"x":"y";e.offsets.popper=Object.assign(o,a[l][n])}return e},i.prototype.modifiers.preventOverflow=function(e){var t=this._options.preventOverflowOrder,i=r(e.offsets.popper),n={left:function(){var t=i.left;return i.lefte.boundaries.right&&(t=Math.min(i.left,e.boundaries.right-i.width)),{left:t}},top:function(){var t=i.top;return i.tope.boundaries.bottom&&(t=Math.min(i.top,e.boundaries.bottom-i.height)),{top:t}}};return t.forEach(function(t){e.offsets.popper=Object.assign(i,n[t]())}),e},i.prototype.modifiers.keepTogether=function(e){var t=r(e.offsets.popper),i=e.offsets.reference,n=Math.floor;return t.rightn(i.right)&&(e.offsets.popper.left=n(i.right)),t.bottomn(i.bottom)&&(e.offsets.popper.top=n(i.bottom)),e},i.prototype.modifiers.flip=function(e){if(!this.isModifierRequired(this.modifiers.flip,this.modifiers.preventOverflow))return console.warn("WARNING: preventOverflow modifier is required by flip modifier in order to work, be sure to include it before flip!"),e;if(e.flipped&&e.placement===e._originalPlacement)return e;var t=e.placement.split("-")[0],i=s(t),n=e.placement.split("-")[1]||"",o=[];return(o="flip"===this._options.flipBehavior?[t,i]:this._options.flipBehavior).forEach(function(a,l){if(t===a&&o.length!==l+1){t=e.placement.split("-")[0],i=s(t);var c=r(e.offsets.popper),u=-1!==["right","bottom"].indexOf(t);(u&&Math.floor(e.offsets.reference[t])>Math.floor(c[i])||!u&&Math.floor(e.offsets.reference[t])a[p]&&(e.offsets.popper[h]+=l[h]+f-a[p]);var m=l[h]+(i||l[u]/2-f/2)-a[h];return m=Math.max(Math.min(a[u]-f-8,m),8),s[h]=m,s[d]="",e.offsets.arrow=s,e.arrowElement=t,e},Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(void 0===e||null===e)throw new TypeError("Cannot convert first argument to object");for(var t=Object(e),i=1;i-1}},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:200},title:String,disabled:Boolean,content:String,reference:{},popperClass:String,width:{},visibleArrow:{default:!0},arrowOffset:{type:Number,default:0},transition:{type:String,default:"fade-in-linear"},tabindex:{type:Number,default:0}},computed:{tooltipId:function(){return"el-popover-"+Object(a.generateId)()}},watch:{showPopper:function(e){this.disabled||(e?this.$emit("show"):this.$emit("hide"))}},mounted:function(){var e=this,t=this.referenceElm=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$slots.reference&&this.$slots.reference[0]&&(t=this.referenceElm=this.$slots.reference[0].elm),t&&(Object(o.addClass)(t,"el-popover__reference"),t.setAttribute("aria-describedby",this.tooltipId),t.setAttribute("tabindex",this.tabindex),i.setAttribute("tabindex",0),"click"!==this.trigger&&(Object(o.on)(t,"focusin",function(){e.handleFocus();var i=t.__vue__;i&&"function"==typeof i.focus&&i.focus()}),Object(o.on)(i,"focusin",this.handleFocus),Object(o.on)(t,"focusout",this.handleBlur),Object(o.on)(i,"focusout",this.handleBlur)),Object(o.on)(t,"keydown",this.handleKeydown),Object(o.on)(t,"click",this.handleClick)),"click"===this.trigger?(Object(o.on)(t,"click",this.doToggle),Object(o.on)(document,"click",this.handleDocumentClick)):"hover"===this.trigger?(Object(o.on)(t,"mouseenter",this.handleMouseEnter),Object(o.on)(i,"mouseenter",this.handleMouseEnter),Object(o.on)(t,"mouseleave",this.handleMouseLeave),Object(o.on)(i,"mouseleave",this.handleMouseLeave)):"focus"===this.trigger&&(this.tabindex<0&&console.warn("[Element Warn][Popover]a negative taindex means that the element cannot be focused by tab key"),t.querySelector("input, textarea")?(Object(o.on)(t,"focusin",this.doShow),Object(o.on)(t,"focusout",this.doClose)):(Object(o.on)(t,"mousedown",this.doShow),Object(o.on)(t,"mouseup",this.doClose)))},beforeDestroy:function(){this.cleanup()},deactivated:function(){this.cleanup()},methods:{doToggle:function(){this.showPopper=!this.showPopper},doShow:function(){this.showPopper=!0},doClose:function(){this.showPopper=!1},handleFocus:function(){Object(o.addClass)(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!0)},handleClick:function(){Object(o.removeClass)(this.referenceElm,"focusing")},handleBlur:function(){Object(o.removeClass)(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!1)},handleMouseEnter:function(){var e=this;clearTimeout(this._timer),this.openDelay?this._timer=setTimeout(function(){e.showPopper=!0},this.openDelay):this.showPopper=!0},handleKeydown:function(e){27===e.keyCode&&"manual"!==this.trigger&&this.doClose()},handleMouseLeave:function(){var e=this;clearTimeout(this._timer),this.closeDelay?this._timer=setTimeout(function(){e.showPopper=!1},this.closeDelay):this.showPopper=!1},handleDocumentClick:function(e){var t=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$slots.reference&&this.$slots.reference[0]&&(t=this.referenceElm=this.$slots.reference[0].elm),this.$el&&t&&!this.$el.contains(e.target)&&!t.contains(e.target)&&i&&!i.contains(e.target)&&(this.showPopper=!1)},handleAfterEnter:function(){this.$emit("after-enter")},handleAfterLeave:function(){this.$emit("after-leave"),this.doDestroy()},cleanup:function(){(this.openDelay||this.closeDelay)&&clearTimeout(this._timer)}},destroyed:function(){var e=this.reference;Object(o.off)(e,"click",this.doToggle),Object(o.off)(e,"mouseup",this.doClose),Object(o.off)(e,"mousedown",this.doShow),Object(o.off)(e,"focusin",this.doShow),Object(o.off)(e,"focusout",this.doClose),Object(o.off)(e,"mousedown",this.doShow),Object(o.off)(e,"mouseup",this.doClose),Object(o.off)(e,"mouseleave",this.handleMouseLeave),Object(o.off)(e,"mouseenter",this.handleMouseEnter),Object(o.off)(document,"click",this.handleDocumentClick)}},c=i(0),u=Object(c.a)(l,n,[],!1,null,null,null);u.options.__file="packages/popover/src/main.vue";var h=u.exports,d=function(e,t,i){var n=t.expression?t.value:t.arg,s=i.context.$refs[n];s&&(Array.isArray(s)?s[0].$refs.reference=e:s.$refs.reference=e)},p={bind:function(e,t,i){d(e,t,i)},inserted:function(e,t,i){d(e,t,i)}},f=i(7);i.n(f).a.directive("popover",p),h.install=function(e){e.directive("popover",p),e.component(h.name,h)},h.directive=p;t.default=h}})},ci9g:function(e,t,i){"use strict";t.__esModule=!0;var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s=function(e){return e&&e.__esModule?e:{default:e}}(i("5FLJ"));var r,o=o||{};o.Dialog=function(e,t,i){var o=this;if(this.dialogNode=e,null===this.dialogNode||"dialog"!==this.dialogNode.getAttribute("role"))throw new Error("Dialog() requires a DOM element with ARIA role of dialog.");"string"==typeof t?this.focusAfterClosed=document.getElementById(t):"object"===(void 0===t?"undefined":n(t))?this.focusAfterClosed=t:this.focusAfterClosed=null,"string"==typeof i?this.focusFirst=document.getElementById(i):"object"===(void 0===i?"undefined":n(i))?this.focusFirst=i:this.focusFirst=null,this.focusFirst?this.focusFirst.focus():s.default.focusFirstDescendant(this.dialogNode),this.lastFocus=document.activeElement,r=function(e){o.trapFocus(e)},this.addListeners()},o.Dialog.prototype.addListeners=function(){document.addEventListener("focus",r,!0)},o.Dialog.prototype.removeListeners=function(){document.removeEventListener("focus",r,!0)},o.Dialog.prototype.closeDialog=function(){var e=this;this.removeListeners(),this.focusAfterClosed&&setTimeout(function(){e.focusAfterClosed.focus()})},o.Dialog.prototype.trapFocus=function(e){s.default.IgnoreUtilFocusChanges||(this.dialogNode.contains(e.target)?this.lastFocus=e.target:(s.default.focusFirstDescendant(this.dialogNode),this.lastFocus===document.activeElement&&s.default.focusLastDescendant(this.dialogNode),this.lastFocus=document.activeElement))},t.default=o.Dialog},f03z:function(e,t,i){"use strict";t.__esModule=!0,t.default=function(e){for(var t=1,i=arguments.length;t0&&void 0!==arguments[0]?arguments[0]:"";return String(e).replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")};var l=t.arrayFindIndex=function(e,t){for(var i=0;i!==e.length;++i)if(t(e[i]))return i;return-1},c=(t.arrayFind=function(e,t){var i=l(e,t);return-1!==i?e[i]:void 0},t.coerceTruthyValueToArray=function(e){return Array.isArray(e)?e:e?[e]:[]},t.isIE=function(){return!s.default.prototype.$isServer&&!isNaN(Number(document.documentMode))},t.isEdge=function(){return!s.default.prototype.$isServer&&navigator.userAgent.indexOf("Edge")>-1},t.isFirefox=function(){return!s.default.prototype.$isServer&&!!window.navigator.userAgent.match(/firefox/i)},t.autoprefixer=function(e){if("object"!==(void 0===e?"undefined":n(e)))return e;var t=["ms-","webkit-"];return["transform","transition","animation"].forEach(function(i){var n=e[i];i&&n&&t.forEach(function(t){e[t+i]=n})}),e},t.kebabCase=function(e){var t=/([^-])([A-Z])/g;return e.replace(t,"$1-$2").replace(t,"$1-$2").toLowerCase()},t.capitalize=function(e){return(0,r.isString)(e)?e.charAt(0).toUpperCase()+e.slice(1):e},t.looseEqual=function(e,t){var i=(0,r.isObject)(e),n=(0,r.isObject)(t);return i&&n?JSON.stringify(e)===JSON.stringify(t):!i&&!n&&String(e)===String(t)}),u=t.arrayEquals=function(e,t){if(e=e||[],t=t||[],e.length!==t.length)return!1;for(var i=0;i1?t-1:0),o=1;o-1}},percentage:{type:Number,default:0,required:!0,validator:function(e){return e>=0&&e<=100}},status:{type:String,validator:function(e){return["success","exception","warning"].indexOf(e)>-1}},strokeWidth:{type:Number,default:6},strokeLinecap:{type:String,default:"round"},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:[String,Array,Function],default:""},format:Function},computed:{barStyle:function(){var e={};return e.width=this.percentage+"%",e.backgroundColor=this.getCurrentColor(this.percentage),e},relativeStrokeWidth:function(){return(this.strokeWidth/this.width*100).toFixed(1)},radius:function(){return"circle"===this.type||"dashboard"===this.type?parseInt(50-parseFloat(this.relativeStrokeWidth)/2,10):0},trackPath:function(){var e=this.radius,t="dashboard"===this.type;return"\n M 50 50\n m 0 "+(t?"":"-")+e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"-":"")+2*e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"":"-")+2*e+"\n "},perimeter:function(){return 2*Math.PI*this.radius},rate:function(){return"dashboard"===this.type?.75:1},strokeDashoffset:function(){return-1*this.perimeter*(1-this.rate)/2+"px"},trailPathStyle:function(){return{strokeDasharray:this.perimeter*this.rate+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset}},circlePathStyle:function(){return{strokeDasharray:this.perimeter*this.rate*(this.percentage/100)+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease"}},stroke:function(){var e=void 0;if(this.color)e=this.getCurrentColor(this.percentage);else switch(this.status){case"success":e="#13ce66";break;case"exception":e="#ff4949";break;case"warning":e="#e6a23c";break;default:e="#20a0ff"}return e},iconClass:function(){return"warning"===this.status?"el-icon-warning":"line"===this.type?"success"===this.status?"el-icon-circle-check":"el-icon-circle-close":"success"===this.status?"el-icon-check":"el-icon-close"},progressTextSize:function(){return"line"===this.type?12+.4*this.strokeWidth:.111111*this.width+2},content:function(){return"function"==typeof this.format?this.format(this.percentage)||"":this.percentage+"%"}},methods:{getCurrentColor:function(e){return"function"==typeof this.color?this.color(e):"string"==typeof this.color?this.color:this.getLevelColor(e)},getLevelColor:function(e){for(var t=this.getColorArray().sort(function(e,t){return e.percentage-t.percentage}),i=0;ie)return t[i].color;return t[t.length-1].color},getColorArray:function(){var e=this.color,t=100/e.length;return e.map(function(e,i){return"string"==typeof e?{color:e,progress:(i+1)*t}:e})}}},r=i(0),o=Object(r.a)(s,n,[],!1,null,null,null);o.options.__file="packages/progress/src/progress.vue";var a=o.exports;a.install=function(e){e.component(a.name,a)};t.default=a}})},xWqt:function(e,t,i){"use strict";t.__esModule=!0,t.default=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:300,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!e||!t)throw new Error("instance & callback is required");var s=!1,r=function(){s||(s=!0,t&&t.apply(null,arguments))};n?e.$once("after-leave",r):e.$on("after-leave",r),setTimeout(function(){r()},i+100)}}}]); +//# sourceMappingURL=chunk-elementUI.21957ec8.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-elementUI.21957ec8.js.map b/priv/static/adminfe/static/js/chunk-elementUI.21957ec8.js.map new file mode 100644 index 000000000..3381fd56a --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-elementUI.21957ec8.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/element-ui/lib/utils/shared.js","webpack:///./node_modules/element-ui/lib/mixins/emitter.js","webpack:///./node_modules/element-ui/lib/utils/date.js","webpack:///./node_modules/element-ui/lib/utils/date-util.js","webpack:///./node_modules/element-ui/lib/checkbox.js","webpack:///./node_modules/element-ui/lib/option.js","webpack:///./node_modules/element-ui/lib/input-number.js","webpack:///./node_modules/element-ui/lib/utils/aria-utils.js","webpack:///./node_modules/element-ui/lib/utils/scrollbar-width.js","webpack:///./node_modules/element-ui/lib/utils/vue-popper.js","webpack:///./node_modules/element-ui/lib/button.js","webpack:///./node_modules/element-ui/lib/input.js","webpack:///./node_modules/element-ui/lib/locale/lang/zh-CN.js","webpack:///./node_modules/element-ui/lib/radio.js","webpack:///./node_modules/element-ui/lib/mixins/focus.js","webpack:///./node_modules/element-ui/lib/scrollbar.js","webpack:///./node_modules/element-ui/lib/mixins/migrating.js","webpack:///./node_modules/element-ui/lib/tooltip.js","webpack:///./node_modules/element-ui/lib/utils/scroll-into-view.js","webpack:///./node_modules/element-ui/lib/locale/lang/es.js","webpack:///./node_modules/element-ui/lib/utils/resize-event.js","webpack:///./node_modules/element-ui/lib/utils/clickoutside.js","webpack:///./node_modules/element-ui/lib/utils/vdom.js","webpack:///./node_modules/element-ui/lib/cascader-panel.js","webpack:///./node_modules/element-ui/lib/locale/index.js","webpack:///./node_modules/element-ui/lib/utils/popup/popup-manager.js","webpack:///./node_modules/element-ui/lib/select.js","webpack:///./node_modules/element-ui/lib/utils/popup/index.js","webpack:///./node_modules/element-ui/lib/transitions/collapse-transition.js","webpack:///./node_modules/element-ui/lib/utils/dom.js","webpack:///./node_modules/element-ui/lib/element-ui.common.js","webpack:///./node_modules/element-ui/lib/utils/popper.js","webpack:///./node_modules/element-ui/lib/mixins/locale.js","webpack:///./node_modules/element-ui/lib/popover.js","webpack:///./node_modules/element-ui/lib/utils/aria-dialog.js","webpack:///./node_modules/element-ui/lib/utils/merge.js","webpack:///./node_modules/element-ui/lib/checkbox-group.js","webpack:///./node_modules/element-ui/lib/utils/util.js","webpack:///./node_modules/element-ui/lib/button-group.js","webpack:///./node_modules/element-ui/lib/tag.js","webpack:///./node_modules/element-ui/node_modules/deepmerge/dist/cjs.js","webpack:///./node_modules/element-ui/lib/locale/format.js","webpack:///./node_modules/element-ui/lib/utils/types.js","webpack:///./node_modules/element-ui/lib/locale/lang/en.js","webpack:///./node_modules/element-ui/lib/progress.js","webpack:///./node_modules/element-ui/lib/utils/after-leave.js"],"names":["exports","__esModule","isDef","val","undefined","isKorean","text","test","default","methods","dispatch","componentName","eventName","params","parent","this","$parent","$root","name","$options","$emit","apply","concat","broadcast","_broadcast","$children","forEach","child","call","__WEBPACK_AMD_DEFINE_RESULT__","main","fecha","token","word","literal","noop","shorten","arr","sLen","newArr","i","len","length","push","substr","monthUpdate","arrName","d","v","i18n","index","indexOf","charAt","toUpperCase","toLowerCase","month","pad","String","dayNames","monthNames","monthNamesShort","dayNamesShort","amPm","DoFn","D","formatFlags","dateObj","getDay","DD","Do","getDate","dd","ddd","dddd","M","getMonth","MM","MMM","MMMM","yy","getFullYear","yyyy","h","getHours","hh","H","HH","m","getMinutes","mm","s","getSeconds","ss","S","Math","round","getMilliseconds","SS","SSS","a","A","ZZ","o","getTimezoneOffset","floor","abs","parseFlags","day","parseInt","cent","Date","year","hour","minute","second","millisecond","isPm","minutes","parts","match","timezoneOffset","masks","shortDate","mediumDate","longDate","fullDate","shortTime","mediumTime","longTime","format","mask","i18nSettings","Object","prototype","toString","isNaN","getTime","Error","literals","replace","$0","$1","slice","shift","parse","dateStr","dateInfo","parseInfo","newFormat","str","regexEscape","info","matches","RegExp","date","today","UTC","module","__webpack_require__","validateRangeInOneMonth","extractTimeFormat","extractDateFormat","nextYear","prevYear","nextMonth","prevMonth","changeYearMonthAndClampDate","timeWithinRange","limitTimeRange","clearMilliseconds","clearTime","modifyWithTimeString","modifyTime","modifyDate","range","getRangeMinutes","getMonthDays","getPrevMonthLastDays","getRangeHours","getWeekNumber","getStartDateOfMonth","nextDate","prevDate","getFirstDayOfMonth","getDayCountOfYear","getDayCountOfMonth","parseDate","formatDate","isDateObject","isDate","toDate","getI18nSettings","_date2","obj","_interopRequireDefault","_locale","weeks","months","map","week","t","Array","isArray","string","temp","setDate","amount","arguments","result","src","setHours","week1","ranges","hours","disabledHours","value","start","end","newArray","_i","lastDay","_","days","setRangeData","startHour","startMinute","endHour","endMinute","n","y","time","normalizeDate","ndate","nranges","some","nrange","minDate","maxDate","min","max","selectableRange","monthDate","trim","modules","installedModules","moduleId","l","c","getter","defineProperty","enumerable","get","r","Symbol","toStringTag","mode","ns","create","key","bind","object","property","hasOwnProperty","p","0","__webpack_exports__","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","shadowRoot","_injectStyles","originalRender","existing","beforeCreate","4","83","_vm","_h","$createElement","_c","_self","staticClass","class","border","checkboxSize","is-disabled","isDisabled","is-bordered","is-checked","isChecked","attrs","id","is-indeterminate","indeterminate","is-focus","focus","tabindex","role","aria-checked","trueLabel","falseLabel","directives","rawName","model","expression","type","aria-hidden","disabled","true-value","false-value","domProps","checked","_q","on","change","$event","$$a","$$el","target","$$c","$$i","handleChange","blur","label","$$v","$slots","_t","_e","_v","_s","_withStripped","emitter_","src_checkboxvue_type_script_lang_js_","mixins","inject","elForm","elFormItem","data","selfModel","isLimitExceeded","computed","isGroup","store","set","_checkboxGroup","isLimitDisabled","_elFormItemSize","elFormItemSize","temCheckboxSize","size","$ELEMENT","checkboxGroupSize","props","Boolean","Number","controls","addToStore","ev","_this","$nextTick","created","mounted","$el","setAttribute","watch","_value","componentNormalizer","component","__file","src_checkbox","install","Vue","3","34","visible","selected","itemSelected","groupDisabled","limitReached","hover","mouseenter","hoverItem","click","stopPropagation","selectOptionClick","currentLabel","emitter_default","util_","_typeof","iterator","constructor","src_optionvue_type_script_lang_js_","required","hitState","isObject","currentValue","select","multiple","contains","isEqual","multipleLimit","remote","oldVal","_select","valueKey","b","item","handleGroupDisabled","hoverIndex","queryChange","query","filteredOptionsCount","cachedOptions","optionsCount","$on","beforeDestroy","_select2","selectedOptions","selectedIndex","splice","onOptionDestroy","53","_select_src_option__WEBPACK_IMPORTED_MODULE_0__","10","114","inputNumberSize","inputNumberDisabled","is-without-controls","is-controls-right","controlsAtRight","dragstart","preventDefault","decrease","minDisabled","keydown","_k","keyCode","increase","maxDisabled","ref","displayValue","placeholder","handleBlur","handleFocus","input","handleInput","handleInputChange","nativeOn","input_","input_default","focus_","focus_default","repeat_click","src_input_numbervue_type_script_lang_js_","repeatClick","components","ElInput","step","stepStrictly","Infinity","controlsPosition","precision","validator","userInput","immediate","handler","newVal","stepPrecision","getPrecision","precisionFactor","pow","toPrecision","_decrease","_increase","numPrecision","console","warn","toFixed","num","parseFloat","valueString","dotPosition","setCurrentValue","event","$refs","innerInput","updated","input_number","2","22","30","element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__","el","binding","vnode","interval","startTime","clear","now","clearInterval","e","button","document","setInterval","aria","Utils","focusFirstDescendant","element","childNodes","attemptFocus","focusLastDescendant","isFocusable","IgnoreUtilFocusChanges","activeElement","tabIndex","getAttribute","nodeName","href","rel","triggerEvent","elm","evt","createEvent","_len","opts","_key","initEvent","dispatchEvent","fireEvent","keys","tab","enter","space","left","up","right","down","esc","_vue2","$isServer","scrollBarWidth","outer","createElement","className","style","visibility","width","position","top","body","appendChild","widthNoScroll","offsetWidth","overflow","inner","widthWithScroll","parentNode","removeChild","_popup","PopperJS","stop","transformOrigin","placement","boundariesPadding","reference","popper","offset","visibleArrow","arrowOffset","appendToBody","popperOptions","gpuAcceleration","showPopper","currentPlacement","updatePopper","destroyPopper","createPopper","popperElm","referenceElm","appendArrow","popperJS","destroy","onCreate","resetTransformOrigin","onUpdate","_popper","zIndex","PopupManager","nextZIndex","addEventListener","update","doDestroy","forceDestroy","split","origin","bottom","hash","appended","attributes","arrow","removeEventListener","deactivated","97","buttonSize","buttonDisabled","is-loading","loading","is-plain","plain","is-round","is-circle","circle","autofocus","nativeType","handleClick","icon","src_buttonvue_type_script_lang_js_","src_button","11","21","76","inputSize","inputDisabled","is-exceed","inputExceed","el-input-group","prepend","append","el-input-group--append","el-input-group--prepend","el-input--prefix","prefix","prefixIcon","el-input--suffix","suffix","suffixIcon","clearable","showPassword","hovering","mouseleave","_b","passwordVisible","readonly","autocomplete","autoComplete","aria-label","compositionstart","handleCompositionStart","compositionupdate","handleCompositionUpdate","compositionend","handleCompositionEnd","$attrs","getSuffixVisible","showClear","showPwdVisible","isWordLimitVisible","mousedown","handlePasswordVisible","textLength","upperLimit","validateState","validateIcon","textareaStyle","migrating_","migrating_default","hiddenTextarea","HIDDEN_STYLE","CONTEXT_STYLE","calcTextareaHeight","targetElement","minRows","maxRows","_calculateNodeStyling","window","getComputedStyle","boxSizing","getPropertyValue","paddingSize","borderSize","contextStyle","join","calculateNodeStyling","height","scrollHeight","singleRowHeight","minHeight","maxHeight","merge_","merge_default","shared_","src_inputvue_type_script_lang_js_","inheritAttrs","textareaCalcStyle","focused","isComposing","resize","form","autosize","validateEvent","showWordLimit","needStatusIcon","statusIcon","validating","success","error","nativeInputValue","maxlength","resizeTextarea","setNativeInputValue","updateIconOffset","getInput","getMigratingConfig","on-icon-click","events","textarea","lastCharacter","calcIconOffset","place","elList","querySelectorAll","pendant","transform","querySelector","removeAttribute","9","colorpicker","confirm","datepicker","cancel","selectDate","selectTime","startDate","endDate","endTime","month1","month2","month3","month4","month5","month6","month7","month8","month9","month10","month11","month12","sun","mon","tue","wed","thu","fri","sat","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec","noMatch","noData","cascader","pagination","goto","pagesize","total","pageClassifier","messagebox","title","upload","deleteTip","delete","preview","continue","table","emptyText","confirmFilter","resetFilter","clearFilter","sumText","tree","transfer","titles","filterPlaceholder","noCheckedFormat","hasCheckedFormat","image","pageHeader","popconfirm","confirmButtonText","cancelButtonText","116","radioSize","aria-disabled","src_radiovue_type_script_lang_js_","_radioGroup","radio","temRadioSize","radioGroupSize","src_radio","127","resize_event_","scrollbar_width_","scrollbar_width_default","dom_","BAR_MAP","vertical","scroll","scrollSize","axis","client","direction","horizontal","src_bar","move","bar","wrap","clickTrackHandler","clickThumbHandler","_ref","translate","msTransform","webkitTransform","renderThumbStyle","ctrlKey","startDrag","currentTarget","getBoundingClientRect","thumbPositionPercentage","thumb","stopImmediatePropagation","cursorDown","mouseMoveDocumentHandler","mouseUpDocumentHandler","onselectstart","prevPage","destroyed","Bar","native","wrapStyle","wrapClass","viewClass","viewStyle","noresize","tag","sizeWidth","sizeHeight","moveX","moveY","gutter","gutterWith","gutterStyle","marginRight","marginBottom","view","handleScroll","scrollTop","clientHeight","scrollLeft","clientWidth","heightPercentage","widthPercentage","scrollWidth","16","39","131","vue_popper_","vue_popper_default","debounce_","debounce_default","external_vue_","external_vue_default","openDelay","manual","effect","popperClass","content","transition","enterable","hideAfter","tooltipId","timeoutPending","focusing","popperVM","node","$mount","debounceClose","handleClosePopper","_this2","afterLeave","setExpectedState","firstElement","getFirstElement","addTooltipClass","_this3","nodeType","show","hide","instance","componentInstance","removeFocusing","handleShowPopper","prev","_this4","expectedState","clearTimeout","timeout","setTimeout","slots","$destroy","17","5","7","container","offsetParents","pointer","offsetParent","offsetTop","reduce","curr","offsetHeight","viewRectTop","viewRectBottom","removeResizeListener","addResizeListener","_resizeObserverPolyfill2","isServer","resizeHandler","entries","_iterator","_isArray","next","done","listeners","__resizeListeners__","fn","__ro__","observe","disconnect","_dom","nodeList","ctx","startClick","seed","createDocumentHandler","mouseup","methodName","bindingFn","documentHandler","unbind","isVNode","_util","hasOwn","14","18","26","31","32","51","59","cascader_panelvue_type_template_id_34932346_render","handleKeyDown","_l","menus","menu","refInFor","nodes","external_babel_helper_vue_jsx_merge_props_","external_babel_helper_vue_jsx_merge_props_default","scrollbar_","scrollbar_default","checkbox_","checkbox_default","radio_","radio_default","src_cascader_nodevue_type_script_lang_js_","ElCheckbox","ElRadio","nodeId","config","panel","isLeaf","checkedValue","isSameNode","inActivePath","isInPath","activePath","inCheckedPath","checkStrictly","checkedNodePaths","checkedPath","getValueByOption","handleExpand","lazy","loaded","lazyLoad","handleMultiCheckChange","handleCheckChange","doCheck","calculateMultiCheckedValue","pathNodes","level","uid","renderPrefix","renderCheckbox","renderRadio","renderCheckIcon","renderPostfix","renderLoadingIcon","renderExpandIcon","renderContent","renderLabelFn","expandTrigger","aria-expanded","el-cascader-node","is-selectable","in-active-path","in-checked-path","is-active","cascader_node_render","cascader_node_staticRenderFns","cascader_node","locale_","src_cascader_menuvue_type_script_lang_js_","ElScrollbar","CascaderNode","activeNode","hoverTimer","isEmpty","menuId","handleMouseMove","hoverZone","startX","clientX","_$el","innerHTML","clearHoverZone","hoverThreshold","renderEmptyText","renderNodeList","isHoverMenu","expand","hasChildren","node-id","aria-haspopup","aria-owns","mousemove","wrap-class","view-class","el-cascader-menu__list","is-empty","cascader_menu_component","cascader_menu_render","cascader_menu_staticRenderFns","cascader_menu","_createClass","defineProperties","descriptor","configurable","writable","Constructor","protoProps","staticProps","src_node","Node","TypeError","_classCallCheck","initState","initChildren","_config","labelKey","calculatePathNodes","path","pathLabels","childrenKey","children","childrenData","unshift","getPath","getValue","emitPath","getText","allLevels","separator","args","handlerName","emit","_len2","_key2","onParentCheck","setCheckState","onChildCheck","validChildren","filter","every","totalNum","checkedNum","syncCheckState","disabledKey","_config2","leafKey","leaf","src_store","Store","store_classCallCheck","initNodes","nodeData","flattedNodes","getFlattedNodes","leafNodes","appendNode","appendNodes","nodeDataList","getNodes","leafOnly","cached","cachedNodes","flatNodes","res","getNodeByValue","aria_utils_","aria_utils_default","scroll_into_view_","scroll_into_view_default","_extends","assign","source","KeyCode","DefaultProps","cascader_panelvue_type_script_lang_js_isLeaf","getSibling","distance","siblings","getMenuIndex","pieces","focusNode","src_cascader_panelvue_type_script_lang_js_","CascaderMenu","renderLabel","Function","provide","loadCount","$scopedSlots","initStore","deep","syncCheckedValue","calculateCheckedNodePaths","syncMenuState","syncActivePath","syncMultiCheckState","scrollIntoView","_nodes","expandNodes","checkedValues","checkedNode","preMenu","expandedNode","nextMenu","firstNode","checkNode","silent","pathValues","activePathValues","onFullfiled","_this5","root","dataList","nodeValue","computePresentText","getCheckedNodes","menuElement","clearCheckedNodes","cascader_panel_component","cascader_panel","6","use","_zhCN2","_deepmerge2","lang","merged","i18nHandler","vuei18n","getPrototypeOf","$t","locale","clone","array","current","j","hasModal","hasInitZIndex","getModal","modalDom","doOnModalClick","instances","modalFade","getInstance","register","deregister","modalStack","topItem","closeOnClickModal","close","openModal","dom","modalClass","addClass","removeClass","display","closeModal","pop","topPopup","getTopPopup","closeOnPressEscape","handleClose","handleAction","selectSize","toggleMenu","max-width","inputWidth","collapseTags","closable","selectDisabled","collapseTagSize","hit","disable-transitions","deleteTag","after-leave","resetInputHeight","getValueKey","filterable","flex-grow","inputLength","softFocus","keyup","managePlaceholder","resetInputState","navigateOptions","selectOption","deletePrevTag","handleComposition","composing","debouncedQueryChange","currentPlaceholder","validate-event","debouncedOnInputChange","paste","inputHovering","selectedLabel","callback","slot","showClose","iconClass","handleClearClick","before-enter","handleMenuEnter","append-to-body","popperAppendToBody","allowCreate","showNewOption","empty","locale_default","select_dropdownvue_type_template_id_06828748_render","is-multiple","minWidth","src_select_dropdownvue_type_script_lang_js_","$parent.inputWidth","select_dropdown","src_option","tag_","tag_default","clickoutside_","clickoutside_default","lib_locale_","src_selectvue_type_script_lang_js_","hoverOption","optionsAllDisabled","option","scrollToOption","hasValue","debounce","loadingText","noMatchText","noDataText","hasExistingOption","ElSelectMenu","ElOption","ElTag","Clickoutside","automaticDropdown","remoteMethod","filterMethod","defaultFirstOption","reserveKeyword","createdLabel","createdSelected","initialInputHeight","cachedPlaceHolder","previousQuery","menuVisibleOnFocus","isOnComposition","isSilentBlur","handleQueryChange","setSelected","resetHoverIndex","inputs","checkDefaultFirstOption","_this6","scrollbar","_this7","emitChange","getOption","isNull","isUndefined","cachedOption","newOption","_this8","_this9","deleteSelected","toggleLastOptionHitState","_this10","inputChildNodes","tagName","tags","sizeInMap","_this11","handleOptionSelect","byClick","_this12","optionIndex","getValueIndex","setSoftFocus","onInputChange","resetInputWidth","handleResize","hasCreated","_this13","_this14","medium","small","mini","select_component","src_select","_merge2","_popupManager2","_scrollbarWidth2","idSeed","closeDelay","modal","modalAppendToBody","lockScroll","beforeMount","_popupId","restoreBodyStyle","opened","bodyPaddingRight","computedBodyPaddingRight","withoutHiddenClass","rendered","_opening","open","nextTick","$props","_closeTimer","_openTimer","doOpen","willOpen","_closing","hasClass","paddingRight","getStyle","bodyHasOverflow","documentElement","bodyOverflowY","onOpen","doAfterOpen","willClose","doClose","onClose","doAfterClose","Transition","beforeEnter","dataset","oldPaddingTop","paddingTop","oldPaddingBottom","paddingBottom","oldOverflow","afterEnter","beforeLeave","leave","isInContainer","getScrollContainer","isScroll","once","off","cls","curClass","classes","clsName","classList","remove","setStyle","styleName","prop","camelCase","ieVersion","SPECIAL_CHARS_REGEXP","MOZ_HACK_REGEXP","documentMode","letter","attachEvent","detachEvent","listener","filters","opacity","currentStyle","defaultView","includes","elRect","containerRect","innerWidth","innerHeight","pagervue_type_template_id_7274f267_render","onPagerClick","pageCount","active","currentPage","showPrevMore","quickprevIconClass","onMouseenter","pagers","pager","showNextMore","quicknextIconClass","pagerCount","newPage","textContent","pagerCountOffset","halfPagerCount","_i2","_i3","select_","select_default","option_","option_default","pageSize","layout","pageSizes","prevText","nextText","background","hideOnSinglePage","internalCurrentPage","internalPageSize","lastEmittedPage","userChangePageSize","internalPageCount","template","is-background","el-pagination--small","TEMPLATE_MAP","jumper","handleCurrentChange","sizes","rightWrapper","haveRightWrapper","compo","Prev","Next","Sizes","ElSelect","Jumper","$parent.internalCurrentPage","handleKeyup","getValidCurrentPage","Total","Pager","resetValue","ceil","oldPage","packages_pagination","componentvue_type_template_id_60140e62_render","after-enter","handleWrapperClick","is-fullscreen","fullscreen","el-dialog--center","center","customClass","aria-modal","footer","popup_","popup_default","component_component","beforeClose","destroyOnClose","closed","dialog","marginTop","src_component","autocompletevue_type_template_id_152f2ee6_render","suggestionVisible","handleClear","highlight","highlightedIndex","handleKeyEnter","visible-arrow","popper-options","suggestions","highlighted","aria-selected","autocomplete_suggestionsvue_type_template_id_cd10dcf0_render","hideLoading","dropdownWidth","autocomplete_suggestions_component","referenceList","autocomplete_suggestions","autocomplete_component","ElAutocompleteSuggestions","minlength","fetchSuggestions","triggerOnFocus","customItem","selectWhenUnmatched","highlightFirstItem","activated","suggestionDisabled","$input","custom-item","getData","queryString","debouncedGetData","suggestion","highlightItem","packages_autocomplete","button_","button_default","button_group_","button_group_default","dropdown_component","ElButton","ElButtonGroup","dropdown","trigger","splitButton","hideOnClick","showTimeout","hideTimeout","triggerElm","menuItems","menuItemsArray","dropdownElm","listId","dropdownSize","handleMenuItemClick","selfDefine","menu-align","removeTabindex","resetTabindex","handleTriggerKeyDown","handleItemKeyDown","currentIndex","nextIndex","triggerElmFocus","ele","initAria","command","initDomOperation","dropdown_render","dropdown_staticRenderFns","packages_dropdown","dropdown_menuvue_type_template_id_0da6b714_render","dropdown_menu_component","dropdown.placement","dropdown_menu","packages_dropdown_menu","dropdown_itemvue_type_template_id_6359102a_render","el-dropdown-menu__item--divided","divided","dropdown_item_component","dropdown_item","packages_dropdown_item","aria_utils","SubMenu","domNode","subMenuItems","subIndex","init","addListeners","gotoSubIndex","idx","prevDef","aria_submenu","MenuItem","submenu","menuChild","aria_menuitem","Menu","menuChildren","aria_menubar","menu_component","collapse","backgroundColor","el-menu--horizontal","el-menu--collapse","el-menu","collapseTransition","rootMenu","el-menu-collapse-transition","defaultActive","defaultOpeneds","uniqueOpened","router","menuTrigger","textColor","activeTextColor","activeIndex","openedMenus","items","submenus","hoverBackground","mixColor","isMenuPopup","updateActiveIndex","initOpenedMenu","theme","getColorChannels","color","red","green","blue","percent","_getColorChannels","addItem","$set","removeItem","addSubmenu","removeSubmenu","openMenu","indexPath","closeMenu","handleSubmenuClick","handleItemClick","oldActiveIndex","hasIndex","routeToItem","activeItem","onError","route","$router","$watch","menu_render","menu_staticRenderFns","src_menu","packages_menu","collapse_transition_","collapse_transition_default","menu_mixin","parentMenu","paddingStyle","padding","paddingLeft","poperMixins","submenu_component","ElCollapseTransition","mouseInChild","isFirstLevel","menuTransitionName","isActive","titleStyle","borderBottomColor","handleCollapseToggle","initPopper","handleMouseenter","relatedTarget","MouseEvent","handleMouseleave","deepDispatch","handleTitleMouseenter","handleTitleMouseleave","updatePlacement","popupMenu","inlineMenu","submenuTitleIcon","el-submenu","is-opened","submenu_render","submenu_staticRenderFns","packages_submenu","menu_itemvue_type_template_id_2a5dbfea_render","itemStyle","onMouseEnter","onMouseLeave","staticStyle","box-sizing","tooltip_","tooltip_default","menu_item_component","ElTooltip","isNested","menu_item","packages_menu_item","menu_item_groupvue_type_template_id_543b7bdc_render","levelPadding","menu_item_group_component","menu_item_group","packages_menu_item_group","inputvue_type_template_id_343dd774_render","input_component","src_input","packages_input","input_numbervue_type_template_id_42f8cf66_render","input_number_component","packages_input_number","radiovue_type_template_id_69cd6268_render","radio_component","packages_radio","radio_groupvue_type_template_id_818a704c_render","_elTag","handleKeydown","freeze","LEFT","UP","RIGHT","DOWN","radio_group_component","fill","radios","firstLabel","roleRadios","radio_group","packages_radio_group","radio_buttonvue_type_template_id_18a77a32_render","activeStyle","radio_button_component","borderColor","boxShadow","radio_button","packages_radio_button","checkboxvue_type_template_id_d0387074_render","checkbox_component","packages_checkbox","checkbox_buttonvue_type_template_id_478e906e_render","checkbox_button_component","box-shadow","_checkboxGroup2","checkbox_button","packages_checkbox_button","checkbox_groupvue_type_template_id_7289a290_render","checkbox_group_component","checkbox_group","packages_checkbox_group","componentvue_type_template_id_2dcd8fbb_render","switchDisabled","switchValue","activeValue","inactiveValue","inactiveIconClass","inactiveText","coreWidth","activeIconClass","activeText","src_component_component","activeColor","inactiveColor","setBackgroundColor","newColor","core","on-color","off-color","on-text","off-text","on-value","off-value","on-icon-class","off-icon-class","switch_src_component","packages_switch","selectvue_type_template_id_0e4aade6_render","select_dropdown_component","optionvue_type_template_id_7a44c642_render","option_component","lib_locale_default","packages_select","packages_option","option_groupvue_type_template_id_6685e5de_render","option_group_component","option_group","packages_option_group","buttonvue_type_template_id_ca859fb4_render","button_component","packages_button","button_groupvue_type_template_id_3d8661d0_render","button_group_component","button_group","packages_button_group","tablevue_type_template_id_493fe34e_render","el-table--fit","fit","el-table--striped","stripe","el-table--border","el-table--hidden","isHidden","el-table--group","el-table--fluid-height","el-table--scrollable-x","scrollX","el-table--scrollable-y","scrollY","el-table--enable-row-hover","states","isComplex","el-table--enable-row-transition","tableSize","handleMouseLeave","showHeader","handleHeaderFooterMousewheel","bodyWidth","default-sort","defaultSort","scrollPosition","bodyHeight","row-class-name","rowClassName","row-style","rowStyle","highlightCurrentRow","emptyBlockStyle","showSummary","sum-text","summary-method","summaryMethod","fixedColumns","handleFixedMousewheel","fixedWidth","fixedHeight","fixed","headerHeight","fixedBodyHeight","appendHeight","rightFixedColumns","rightFixedWidth","gutterWidth","resizeProxyVisible","external_throttle_debounce_","external_normalize_wheel_","external_normalize_wheel_default","isFirefox","navigator","userAgent","directives_mousewheel","normalized","mousewheel_mousewheel","util_typeof","getCell","cell","util_isObject","util_orderBy","sortKey","reverse","sortMethod","sortBy","getKey","by","$value","sort","order","compare","getColumnById","columnId","column","columns","getColumnByCell","getRowIdentity","row","rowKey","getKeysMap","arrayMap","parseWidth","parseHeight","toggleRowStatus","statusArr","changed","included","addRow","removeRow","walkTreeNode","cb","lazyKey","isNil","_walker","defaultExpandAll","expandRows","updateExpandRows","_states","_states$data","expandRowsMap","rowId","toggleRowExpansion","expanded","scheduleLayout","setExpandRowKeys","rowKeys","assertRowKey","_states2","keysMap","cur","isRowExpanded","_states3","_states3$expandRows","_currentRowKey","currentRow","setCurrentRowKey","setCurrentRowByKey","restoreCurrentRowKey","updateCurrentRow","oldCurrentRow","updateCurrentRowData","currentRowKey","expandRowKeys","treeData","indent","lazyTreeNodeMap","lazyColumnIdentifier","childrenColumnName","normalizedData","normalize","normalizedLazyNode","parentId","updateTreeData","nested","newTreeData","oldTreeData","rootLazyRowKeys","getExpanded","oldValue","newValue","_ref$loaded","_ref$loading","lazyKeys","lazyNodeChildren","_ref2","_ref2$loaded","_ref2$loading","updateTableScrollY","updateTreeExpandKeys","toggleTreeExpansion","_states4","oldExpanded","loadOrToggle","_states5","loadData","treeNode","load","_states6","doFlattenColumns","watcher","extend","_columns","originColumns","leafColumns","fixedLeafColumns","rightFixedLeafColumns","leafColumnsLength","fixedLeafColumnsLength","rightFixedLeafColumnsLength","isAllSelected","selection","reserveSelection","selectOnIndeterminate","selectable","filteredData","sortingColumn","sortProp","sortOrder","hoverRow","updateColumns","notFixedColumns","needUpdateColumns","debouncedUpdateLayout","isSelected","_states$selection","clearSelection","cleanSelection","deleted","selectedMap","dataMap","newSelection","toggleRowSelection","_toggleAllSelection","selectionChanged","updateSelectionByRowKey","rowInfo","updateAllSelected","selectedCount","isRowSelectable","updateFilters","values","col","columnKey","updateSort","execFilter","_data","execSort","sortable","watcher_sortData","execQuery","ignore","columnKeys","_table$$refs","tableHeader","fixedTableHeader","rightFixedTableHeader","panels","filterPanels","getColumnByKey","find","filteredValue","commit","multi","clearSort","setExpandRowKeysAdapter","toggleRowExpansionAdapter","mutations","setData","dataInstanceChanged","insertColumn","$ready","removeColumn","changeSortCondition","filterChange","newFilters","toggleAllSelection","rowSelectedChanged","setHoverRow","setCurrentRow","updateScrollY","mapStates","mapper","table_layout","TableLayout","observers","tableHeight","footerHeight","viewportHeight","bodyWrapper","prevScrollY","setHeight","updateElsHeight","setMaxHeight","getFlattenColumns","flattenColumns","isColumnGroup","headerWrapper","appendWrapper","footerWrapper","headerTrElm","noneHeader","headerDisplayNone","notifyObservers","headerChild","parentElement","updateColumnsWidth","bodyMinWidth","flexColumns","realWidth","scrollYWidth","totalFlexWidth","flexWidthPerPixel","noneFirstWidth","flexWidth","resizeState","addObserver","observer","removeObserver","onColumnsChange","onScrollableChange","layout_observer","tableLayout","__updated__","cols","columnsMap","ths","_j","th","table_body_typeof","table_body_extends","table_body","cellspacing","cellpadding","acc","wrappedRowRender","tooltipEffect","tooltipContent","treeIndent","leftFixedLeafCount","rightFixedLeafCount","columnsCount","leftFixedCount","rightFixedCount","hasExpandColumn","firstDefaultColumnIndex","store.states.hoverRow","raf","requestAnimationFrame","rows","oldRow","newRow","activateTooltip","tooltip","getKeyOfRow","isColumnHidden","getSpan","rowIndex","columnIndex","rowspan","colspan","spanMethod","getRowStyle","getRowClass","getCellStyle","cellStyle","getCellClass","align","cellClassName","getColspanRealWidth","_ref3","handleCellMouseEnter","hoverState","cellChild","createRange","setStart","setEnd","innerText","handleCellMouseLeave","oldHoverState","handleMouseEnter","handleContextMenu","handleEvent","handleDoubleClick","rowRender","$index","treeRowData","columnsHidden","rowClasses","dblclick","contextmenu","cellIndex","_getSpan","columnData","noLazyChildren","renderCell","_renderProxy","_store$states","renderExpanded","tr","tmp","traverse","innerTreeRowData","childKey","filter_panelvue_type_template_id_7f2c919f_render","handleOutsideClick","handleConfirm","handleReset","filterValue","handleSelect","dropdowns","src_dropdown","checkbox_group_","checkbox_group_default","filter_panel_component","ElCheckboxGroup","filterMultiple","filterOpened","filter_panel","table_header_extends","convertToRows","maxLevel","colSpan","subColumn","getAllColumns","rowSpan","table_header","columnRows","hasGutter","is-group","has-gutter","getHeaderRowStyle","getHeaderRowClass","mouseout","handleMouseOut","handleMouseDown","handleHeaderClick","handleHeaderContextMenu","getHeaderCellStyle","getHeaderCellClass","labelClassName","renderHeader","handleSortClick","handleFilterClick","_defaultSort","isCellHidden","after","headerRowStyle","headerRowClassName","headerCellStyle","headerAlign","headerCellClassName","filterPanel","filterPlacement","draggingColumn","dragging","tableLeft","columnEl","columnRect","minLeft","dragState","startMouseLeft","startLeft","startColumnLeft","resizeProxy","ondragstart","deltaLeft","proxyLeft","handleMouseUp","_dragState","columnWidth","cursor","resizable","rect","bodyStyle","pageX","toggleOrder","sortOrders","givenOrder","table_footer_extends","table_footer","sums","precisions","notNumber","decimal","getRowClasses","before","tablevue_type_script_lang_js_extends","tableIdSeed","table_component","Mousewheel","treeProps","TableHeader","TableFooter","TableBody","spinY","currentScrollTop","pixelY","pixelX","syncPostion","_bodyWrapper","_$refs","fixedBodyWrapper","rightFixedBodyWrapper","maxScrollLeftPosition","bindEvents","passive","resizeListener","unbindEvents","shouldUpdateLayout","_resizeState","oldWidth","oldHeight","shouldUpdateHeight","doLayout","_layout","_layout2","_layout2$headerHeight","_layout2$footerHeight","max-height","tableData","tableId","_treeProps","_treeProps$hasChildre","_treeProps$children","initialState","createStore","src_table","packages_table","cellStarts","cellForced","_ref4","_ref5","_ref6","defaultRenderCell","_ref7","formatter","table_column_extends","columnIdSeed","table_column","showTooltipWhenOverflow","showOverflowTooltip","isSubColumn","owner","columnOrTableParent","realMinWidth","parseMinWidth","realAlign","realHeaderAlign","getPropsData","getColumnElIndex","setColumnWidth","setColumnForcedProps","setColumnRenders","scope","header","originRenderCell","_ref8","padding-left","expandClasses","iconClasses","treeCellPrefix","registerNormalWatchers","aliases","allAliases","columnConfig","registerComplexWatchers","defaults","mergeOptions","funcs","arg","compose","chains","hiddenColumns","packages_table_column","pickervue_type_template_id_79ae069f_render","ranged","pickerSize","pickerDisabled","pickerVisible","handleRangeClick","triggerClass","startPlaceholder","editable","handleStartInput","handleStartChange","firstInputId","rangeSeparator","endPlaceholder","handleEndInput","handleEndChange","secondInputId","haveTrigger","clearIcon","handleClickIcon","date_util_","NewPopper","DEFAULT_FORMATS","datetime","timerange","daterange","monthrange","datetimerange","HAVE_TRIGGER_TYPES","pickervue_type_script_lang_js_DATE_FORMATTER","pickervue_type_script_lang_js_DATE_PARSER","RANGE_FORMATTER","RANGE_PARSER","range1","range2","TYPE_VALUE_RESOLVER_MAP","parser","trueDate","number","dates","PLACEMENT_MAP","parseAsFormatAndType","customFormat","formatAsFormatAndType","valueEquals","dateEquals","aIsDate","bIsDate","aIsArray","bIsArray","isString","pickervue_type_script_lang_js_validator","picker_component","valueFormat","defaultValue","defaultTime","pickerOptions","unlinkPanels","valueOnOpen","unwatchPickerOptions","showPicker","hidePicker","parsedValue","picker","refInput","valueIsEmpty","selectionMode","showTrigger","formattedValue","handleFieldReset","parseValue","isParsed","formatToValue","isFormattable","parseString","formatToString","isValidValue","emitInput","initialValue","resetView","mountPicker","adjustSpinners","showTime","arrowControl","timeArrowControl","updateOptions","pos","setSelectionRange","unmountPicker","$off","formatted","datevue_type_template_id_2440d4ea_render","handleEnter","handleLeave","has-sidebar","sidebar","shortcuts","has-time","shortcut","handleShortcutClick","visibleDate","userInputDate","handleVisibleDateChange","handleTimePickClose","visibleTime","timePickerVisible","userInputTime","handleVisibleTimeChange","time-arrow-control","pick","handleTimePick","proxyTimePickerDataProperties","currentView","el-date-picker__header--bordered","showYearPicker","yearLabel","showMonthPicker","selection-mode","first-day-of-week","firstDayOfWeek","default-value","cell-class-name","disabled-date","disabledDate","handleDatePick","handleYearPick","handleMonthPick","footerVisible","changeToNow","timevue_type_template_id_3d939089_render","has-seconds","showSeconds","arrow-control","useArrow","show-seconds","am-pm-mode","amPmMode","select-range","handleCancel","time_spinnervue_type_template_id_1facadeb_render","wrap-style","emitSelectRange","adjustCurrentSpinner","hoursList","minutesList","enabled","seconds","arrowHourList","arrowMinuteList","arrowSecondList","time_spinner_component","currentScrollbar","bindScrollEvent","scrollDown","modifyDateField","adjustSpinner","bindFuntion","onscroll","scrollBarHeight","typeItemHeight","isCapital","time_spinner","time_component","TimeSpinner","spinner","needInitAdjust","selectionRange","first","mapping","38","40","37","changeSelectionRange","_step","list","panel_time","year_tablevue_type_template_id_c86ab5e0_render","handleYearTableClick","startYear","year_table_component","numOfDays","firstDay","year_tablevue_type_script_lang_js_datesInYear","year_table","month_tablevue_type_template_id_654d4f42_render","handleMonthTableClick","clearDate","getMonthTimestamp","NaN","month_table_component","rangeState","selecting","rangeState.endDate","markRange","tableRows","lastRow","lastColumn","cellMatchesDate","month_tablevue_type_script_lang_js_datesInMonth","inRange","getMonthOfCell","k","newDate","selectedDate","_loop","cellDate","month_table","date_tablevue_type_template_id_5d1f3341_render","is-week-mode","showWeekNumber","WEEKS","isWeekActive","getCellClasses","_WEEKS","date_tablevue_type_script_lang_js_getDateTimestamp","date_table_component","offsetDay","dateCountOfMonth","dateCountOfLastMonth","count","numberOfDaysFromPreviousMonth","getDateOfCell","offsetFromStart","setMonth","setFullYear","dayOffset","_cell","weekNumber","pred","date_tablevue_type_script_lang_js_removeFromArray","date_table","date_component","inputElm","pickerWidth","getDefaultValue","timepicker","_date","_selectableRange","timeFormat","onClick","checkDateWithinRange","handleKeyControl","dateFormat","TimePicker","YearTable","MonthTable","DateTable","yearTranslation","panel_date","date_rangevue_type_template_id_2652849a_render","minVisibleDate","handleDateInput","handleDateChange","handleMinTimeClose","minVisibleTime","minTimePickerVisible","handleTimeInput","handleTimeChange","handleMinTimePick","minTimePicker","maxVisibleDate","handleMaxTimeClose","maxVisibleTime","maxTimePickerVisible","handleMaxTimePick","maxTimePicker","leftPrevYear","leftPrevMonth","enableYearArrow","leftNextYear","enableMonthArrow","leftNextMonth","leftLabel","leftDate","min-date","max-date","range-state","changerange","handleChangeRange","handleRangePick","rightPrevYear","rightPrevMonth","rightNextYear","rightNextMonth","rightLabel","rightDate","btnDisabled","date_rangevue_type_script_lang_js_calcDefaultValue","date_range_component","leftYear","leftMonth","leftMonthDate","rightYear","rightMonth","rightMonthDate","dateUserInput","timeUserInput","yearOffset","minDateYear","minDateMonth","maxDateYear","maxDateMonth","_calcDefaultValue","onPick","date_range","month_rangevue_type_template_id_f2645fb8_render","month_rangevue_type_script_lang_js_calcDefaultValue","month_range_component","month_range","date_picker_getPanel","date_picker","_type","packages_date_picker","time_selectvue_type_template_id_51ab9320_render","parseTime","compareTime","time1","time2","value1","value2","minutes1","minutes2","nextTime","timeValue","stepValue","formatTime","time_select_component","selector","hasDefault","minTime","maxTime","time_select","picker_time_select","packages_time_select","time_rangevue_type_template_id_fb28660e_render","is-arrow","handleMinChange","setMinSelectionRange","handleMaxChange","setMaxSelectionRange","MIN_TIME","MAX_TIME","time_rangevue_type_script_lang_js_maxTimeOfDay","advanceTime","time_range_component","minSpinner","maxSpinner","time_rangevue_type_script_lang_js_minTimeOfDay","minSelectableRange","maxSelectableRange","half","time_range","time_picker","isRange","_isRange","packages_time_picker","mainvue_type_template_id_52060272_render","handleAfterEnter","handleAfterLeave","main_component","__vue__","doToggle","handleDocumentClick","doShow","cleanup","_timer","getReference","directive","inserted","popover","src_main","packages_tooltip","mainvue_type_template_id_6b29b012_render","distinguishCancelAndClose","message","dangerouslyUseHTMLString","showInput","inputType","inputPlaceholder","handleInputEnter","inputValue","editorErrorMessage","showCancelButton","cancelButtonClasses","cancelButtonLoading","roundButton","showConfirmButton","confirmButtonClasses","confirmButtonLoading","aria_dialog_","aria_dialog_default","messageBox","typeMap","warning","src_main_component","closeOnHashChange","confirmButtonClass","cancelButtonClass","getSafeClose","currentId","closeDialog","action","$type","validate","inputPattern","inputErrorMessage","getInputElement","inputValidator","validateResult","getFirstFocus","btn","inputRefs","focusAfterClosed","confirmButtonDisabled","message_box_src_main","vdom_","main_typeof","main_defaults","confirmButtonPosition","confirmButtonHighlight","cancelButtonHighlight","MessageBoxConstructor","currentMsg","main_instance","msgQueue","defaultCallback","resolve","reject","main_showNextMsg","showNextMsg","closeTimer","oldCb","main_MessageBox","MessageBox","Promise","setDefaults","alert","prompt","message_box","breadcrumbvue_type_template_id_4b464c06_render","breadcrumb_component","separatorClass","elBreadcrumb","breadcrumb","packages_breadcrumb","breadcrumb_itemvue_type_template_id_fcf9eaac_render","to","breadcrumb_item_component","link","breadcrumb_item","packages_breadcrumb_item","formvue_type_template_id_a1b5ff34_render","labelPosition","el-form--inline","inline","form_component","rules","labelWidth","labelSuffix","inlineMessage","showMessage","validateOnRuleChange","hideRequiredAsterisk","fields","field","removeValidateEvents","addValidateEvents","autoLabelWidth","potentialLabelWidthArr","resetFields","resetField","clearValidate","promise","valid","invalidFields","validateField","getLabelWidthIndex","registerLabelWidth","deregisterLabelWidth","src_form","packages_form","form_itemvue_type_template_id_b6f3db6c_render","el-form-item--feedback","is-error","is-validating","is-success","is-required","isRequired","is-no-asterisk","sizeClass","is-auto-width","labelStyle","update-all","for","labelFor","contentStyle","el-form-item__error--inline","validateMessage","external_async_validator_","external_async_validator_default","label_wrap_component","isAutoWidth","updateAll","marginLeft","computedWidth","getLabelWidth","firstElementChild","updateLabelWidth","updateComputedLabelWidth","label_wrap_render","label_wrap_staticRenderFns","label_wrap","form_item_component","validateStatus","LabelWrap","ret","computedLabelWidth","parentName","fieldValue","getRules","rule","_formSize","validateDisabled","getFilteredRule","firstFields","errors","formRules","selfRules","requiredRule","onFieldBlur","onFieldChange","form_item","packages_form_item","tab_barvue_type_template_id_2031f33a_render","rootTabs","tabPosition","barStyle","tab_bar_component","tabs","tabSize","sizeName","sizeDir","firstUpperCase","L","paneName","tabStyles","tab_navvue_type_script_lang_js_firstUpperCase","tab_nav_component","TabBar","panes","currentName","onTabClick","onTabRemove","stretch","scrollable","navOffset","isFocus","focusable","navStyle","scrollPrev","containerSize","navScroll","currentOffset","newOffset","scrollNext","navSize","nav","scrollToActiveTab","activeTab","isHorizontal","activeTabBounding","navScrollBounding","maxOffset","_currentOffset","changeTab","tabList","setFocus","removeFocus","visibilityChangeHandler","visibilityState","windowBlurHandler","windowFocusHandler","scrollBtn","pane","tabName","isClosable","btnClose","tabLabelContent","el-tabs__item","aria-controls","tab_nav_render","tab_nav_staticRenderFns","tabs_component","TabNav","activeName","addable","setCurrentName","calcPaneInstances","isForceUpdate","componentOptions","Ctor","panesChanged","handleTabClick","handleTabRemove","handleTabAdd","changeCurrentName","then","el-tabs","el-tabs--card","tabs_render","tabs_staticRenderFns","packages_tabs","tab_panevue_type_template_id_9145a070_render","aria-labelledby","tab_pane_component","labelContent","tab_pane","packages_tab_pane","tag_component","disableTransitions","tagSize","tagEl","tag_render","tag_staticRenderFns","packages_tag","treevue_type_template_id_547575a6_render","el-tree--highlight-current","highlightCurrent","is-dragging","draggingNode","is-drop-not-allow","allowDrop","is-drop-inner","dropType","getNodeKey","render-after-expand","renderAfterExpand","show-checkbox","showCheckbox","render-content","node-expand","handleNodeExpand","showDropIndicator","NODE_KEY","markNodeData","util_getNodeKey","getChildState","all","none","allWithoutDisable","reInitChecked","_getChildState","getPropertyFromData","dataProp","nodeIdSeed","model_node","node_classCallCheck","isCurrent","registerNode","isLeafByUser","defaultExpandedKeys","autoExpandParent","currentNodeKey","currentNode","_initDefaultCheckedNode","updateLeafState","insertChild","walk","batch","getChildren","insertBefore","insertAfter","dataIndex","deregisterNode","removeChildByData","targetNode","expandParent","shouldLoadData","setChecked","doCreateChildren","defaultProps","recursion","passValue","checkDescendants","_getChildState2","handleDescendants","isCheck","_getChildState3","_all","forceInit","updateChildren","newData","oldData","newDataMap","newNodes","nodeKey","tree_store_typeof","tree_store","TreeStore","tree_store_classCallCheck","nodesMap","loadFn","_initDefaultCheckedNodes","filterNodeMethod","allHidden","getNode","refData","refNode","parentData","defaultCheckedKeys","checkedKey","setDefaultCheckedKey","includeHalfChecked","checkedNodes","getCheckedKeys","getHalfCheckedNodes","getHalfCheckedKeys","_getAllNodes","allNodes","_child","_setCheckedKeys","checkedKeys","cache","setCheckedNodes","setCheckedKeys","setDefaultExpandedKeys","getCurrentNode","setCurrentNode","prevCurrentNode","setUserCurrentNode","currNode","setCurrentNodeKey","tree_nodevue_type_template_id_3ba3ef0e_render","this$1","is-expanded","is-current","is-hidden","is-focusable","draggable","handleDragStart","dragover","handleDragOver","dragend","handleDragEnd","drop","handleDrop","is-leaf","handleExpandIconClick","childNodeRendered","handleChildNodeExpand","tree_node_component","NodeContent","oldChecked","oldIndeterminate","node.indeterminate","handleSelectChange","node.checked","node.expanded","expandOnClickNode","checkOnClickNode","_events","halfCheckedNodes","halfCheckedKeys","isTree","accordion","tree_node","tree_component","ElTreeNode","treeItems","checkboxItems","dropNode","allowDrag","treeItemArray","checkbox","getNodePath","getCurrentKey","setCurrentKey","updateKeyChildren","initTabIndex","checkedItem","currentItem","hasInput","dataTransfer","effectAllowed","findNearestComponent","oldDropNode","dropPrev","dropInner","dropNext","userAllowDropInner","dropEffect","nextSibling","previousSibling","targetPosition","treePosition","prevPercent","nextPercent","indicatorTop","clientY","iconPosition","dropIndicator","draggingNodeCopy","src_tree","packages_tree","mainvue_type_template_id_6e53341b_render","typeClass","showIcon","isBigIcon","isBoldTitle","description","is-customed","closeText","el-icon-close","TYPE_CLASSES_MAP","alert_src_main_component","alert_src_main","packages_alert","mainvue_type_template_id_43dbc3d8_render","horizontalClass","positionStyle","clearTimer","startTimer","is-with-icon","mainvue_type_script_lang_js_typeMap","notification_src_main_component","duration","verticalOffset","timer","verticalProperty","destroyElement","notification_src_main","NotificationConstructor","src_main_instance","main_Notification","Notification","userOnClose","removedHeight","closeAll","notification","mainvue_type_template_id_32708644_render","is-vertical","el-slider--with-input","aria-valuemin","aria-valuemax","aria-orientation","sliderDisabled","showInputControls","firstValue","show-input","runwayStyle","onSliderClick","tooltip-class","tooltipClass","secondValue","stops","showStops","getStopStyle","markList","mark","input_number_","input_number_default","buttonvue_type_template_id_e72d2ad2_render","wrapperStyle","onButtonDown","touchstart","onLeftKeyDown","onRightKeyDown","popper-class","showTooltip","formatValue","src_button_component","isClick","currentX","startY","currentY","startPosition","newPosition","currentPosition","enableFormat","formatTooltip","displayTooltip","hideTooltip","onDragStart","onDragging","onDragEnd","setPosition","touches","resetSize","diff","sliderSize","lengthPerStep","slider_src_button","marker","slider_src_main_component","marks","ElInputNumber","SliderButton","SliderMarker","setValues","minValue","maxValue","valueChanged","targetValue","button1","sliderOffsetBottom","slider","sliderOffsetLeft","stopCount","stepWidth","point","barSize","barStart","valuetext","slider_src_main","loadingvue_type_template_id_eee0a7ac_render","viewBox","cx","cy","loading_component","setText","after_leave_","after_leave_default","Mask","loadingDirective","toggleLoading","modifiers","originalPosition","originalOverflow","maskStyle","insertDom","hiding","domVisible","lock","domInserted","textExr","spinnerExr","backgroundExr","customClassExr","vm","src_directive","LoadingConstructor","src_defaults","fullscreenLoading","src_addStyle","packages_loading","$loading","service","iconvue_type_template_id_cb3fe7f4_render","icon_component","packages_icon","src_row","justify","el-row--flex","packages_row","col_typeof","span","pull","xs","sm","md","lg","xl","packages_col","upload_listvue_type_template_id_173fedf5_render","listType","files","file","status","url","alt","el-icon-upload-success","el-icon-circle-check","el-icon-check","stroke-width","percentage","parsePercentage","handlePreview","progress_","progress_default","upload_list_component","ElProgress","upload_list","upload_draggervue_type_template_id_7ebbf219_render","is-dragover","onDrop","onDragover","dragleave","upload_dragger_component","uploader","accept","extension","baseType","acceptedType","upload_component","UploadDragger","headers","withCredentials","onStart","onProgress","onSuccess","beforeUpload","drag","onPreview","onRemove","fileList","autoUpload","httpRequest","XMLHttpRequest","xhr","onprogress","formData","FormData","filename","onerror","onload","msg","response","responseText","err","method","getError","JSON","getBody","setRequestHeader","send","limit","onExceed","mouseover","reqs","isImage","uploadFiles","postFiles","rawFile","post","processedFile","fileType","File","abort","req","el-upload","upload_render","upload_staticRenderFns","src_upload","srcvue_type_script_lang_js_noop","upload_src_component","UploadList","Upload","dragger","showFileList","beforeRemove","onChange","dragOver","draging","tempIndex","uploadDisabled","raw","URL","createObjectURL","handleStart","handleProgress","getFile","handleSuccess","handleError","handleRemove","doRemove","clearFiles","submit","default-file-list","show-upload-list","thumbnail-mode","revokeObjectURL","uploadList","uploadComponent","before-upload","with-credentials","on-exceed","on-start","on-progress","on-success","on-error","on-preview","on-remove","http-request","tip","src_render","src_staticRenderFns","upload_src","packages_upload","progressvue_type_template_id_229ee406_render","el-progress--without-text","showText","el-progress--text-inside","textInside","aria-valuenow","strokeWidth","trailPathStyle","trackPath","stroke","relativeStrokeWidth","circlePathStyle","stroke-linecap","strokeLinecap","fontSize","progressTextSize","progress_component","getCurrentColor","radius","isDashboard","perimeter","PI","rate","strokeDashoffset","strokeDasharray","getLevelColor","colorArray","getColorArray","seriesColor","progress","packages_progress","spinnervue_type_template_id_697b8538_render","strokeColor","spinner_component","packages_spinner","mainvue_type_template_id_455b9f60_render","src_mainvue_type_script_lang_js_typeMap","message_src_main_component","message_src_main","MessageConstructor","message_src_main_instance","main_instances","main_seed","main_Message","Message","packages_message","mainvue_type_template_id_7ccb6598_render","hidden","isDot","is-fixed","is-dot","badge_src_main_component","badge_src_main","badge","mainvue_type_template_id_59a4a40f_render","shadow","card_src_main_component","card_src_main","card","mainvue_type_template_id_ada57782_render","aria-valuetext","handleKey","rateDisabled","resetCurrentValue","selectValue","getIconStyle","showDecimalIcon","decimalIconClass","decimalStyle","showScore","types_","rate_src_main_component","pointerAtLeftHalf","lowThreshold","highThreshold","colors","voidColor","disabledVoidColor","voidIconClass","disabledVoidIconClass","allowHalf","texts","scoreTemplate","valueDecimal","classMap","excluded","getValueFromMap","voidClass","activeClass","colorMap","threshold","text-template","matchedKeys","matchedValue","showWhenDisabled","showWhenAllowHalf","offsetX","rate_src_main","stepsvue_type_template_id_3c6b6dc0_render","simple","steps_component","alignCenter","finishStatus","processStatus","steps","stepOffset","_steps","packages_steps","stepvue_type_template_id_f414a87a_render","isSimple","isLast","isCenter","isVertical","currentStatus","lineStyle","step_component","internalStatus","prevStatus","prevStep","stepsCount","flexBasis","maxWidth","updateStatus","prevChild","calcProgress","transitionDelay","borderWidth","unwatch","packages_step","mainvue_type_template_id_5d5d1482_render","carouselClasses","arrowDisplay","loop","handleButtonEnter","handleButtonLeave","throttledArrowClick","indicatorPosition","indicatorsClasses","throttledIndicatorHover","handleIndicatorClick","hasLabel","throttle_","throttle_default","carousel_src_main_component","initialIndex","autoplay","indicator","containerWidth","setActiveItem","resetItemPosition","pauseTimer","itemInStage","inStage","updateItems","oldIndex","translateItem","playSlides","filteredItems","handleIndicatorHover","carousel_src_main","carousel","scrollbar_src_main","itemvue_type_template_id_1801ae19_render","ready","el-carousel__item--card","is-in-stage","is-hover","is-animating","animating","item_component","scale","processIndex","calcCardTranslate","parentWidth","calcTranslate","parentType","parentDirection","src_item","carousel_item","collapsevue_type_template_id_461d57f4_render","aria-multiselectable","collapse_component","activeNames","setActiveNames","packages_collapse","collapse_itemvue_type_template_id_2d05faac_render","aria-describedby","handleEnterClick","collapse_item_component","contentWrapStyle","contentHeight","_uid","collapse_item","packages_collapse_item","cascadervue_type_template_id_032537a6_render","toggleDropDownVisible","realSize","inputHover","dropDownVisible","presentText","clearBtnVisible","presentTags","handleDelete","$forceUpdate","handleDropdownLeave","filtering","render-label","expand-change","handleExpandChange","handleSuggestionKeyDown","handleSuggestionClick","cascader_panel_","cascader_panel_default","MigratingProps","newProp","changeOnSelect","PopperMixin","InputSizeMap","cascader_component","ElCascaderPanel","showAllLevels","beforeFilter","inputInitialHeight","pressDeleteCount","oldProp","_MigratingProps$oldPr","computePresentContent","updateStyle","filterHandler","getSuggestions","expand-trigger","change-on-select","hover-threshold","active-item-change","focusFirstNode","suggestionPanel","computePresentTags","genTag","rest","restCount","keyword","previousElementSibling","nextElementSibling","lastIndex","lastTag","inputInner","suggestionPanelEl","packages_cascader","mainvue_type_template_id_55c8ade7_render","colorDisabled","colorSize","handleTrigger","is-alpha","showAlpha","displayedColor","showPanelColor","show-alpha","predefine","confirmValue","clearValue","color_typeof","hsv2hsl","hue","bound01","isOnePointZero","processPercent","isPercentage","INT_HEX_MAP","12","13","15","HEX_INT_MAP","B","C","E","F","parseHexChannel","hex","rgb2hsv","g","hsv2rgb","f","q","mod","src_color","Color","color_classCallCheck","_hue","_saturation","_alpha","enableAlpha","doOnChange","toRgb","fromString","fromHSV","_hsl2hsv","light","smin","lmin","hsl2hsv","_parts","_parts2","_rgb2hsv","substring","_rgb2hsv2","hsl","_hsv2rgb","_hsl","_hsv2rgb2","_r","_g","hexOne","high","low","toHex","picker_dropdownvue_type_template_id_06601625_render","float","customInput","sv_panelvue_type_template_id_d8583596_render","cursorTop","cursorLeft","isDragging","moveFn","upFn","sv_panel_component","colorValue","saturation","handleDrag","sv_panel","hue_slidervue_type_template_id_5cdc43b1_render","thumbLeft","thumbTop","hue_slider_component","hueValue","getThumbLeft","getThumbTop","dragConfig","hue_slider","alpha_slidervue_type_template_id_068c66cb_render","alpha_slider_component","color._alpha","color.value","alpha","getBackground","_color$toRgb","alpha_slider","predefinevue_type_template_id_06e03093_render","rgbaColors","background-color","predefine_component","parseColors","$parent.currentColor","picker_dropdown_component","SvPanel","HueSlider","AlphaSlider","Predefine","currentColor","sl","picker_dropdown","color_picker_src_main_component","colorFormat","displayedRgb","currentValueColor","resetColor","PickerDropdown","color_picker_src_main","color_picker","mainvue_type_template_id_5c654dd8_render","sourceData","default-checked","leftDefaultChecked","checked-change","onSourceCheckedChange","hasButtonTexts","rightChecked","addToLeft","buttonTexts","leftChecked","addToRight","targetData","rightDefaultChecked","onTargetCheckedChange","transfer_panelvue_type_template_id_2ddab8bd_render","isIndeterminate","handleAllCheckedChange","allChecked","checkedSummary","hasFooter","inputIcon","clearQuery","hasNoMatch","is-filterable","keyProp","disabledProp","transfer_panel_component","OptionContent","getParent","labelProp","defaultChecked","checkChangeByUser","updateAllChecked","movedKeys","filteredDataKeys","checkableData","checkableDataKeys","checkedLength","dataLength","_format","noChecked","hasChecked","transfer_panel","transfer_src_main_component","TransferPanel","targetOrder","dataObj","footer-format","itemsToBeMoved","itemKey","which","leftPanel","rightPanel","transfer_src_main","mainvue_type_template_id_5bf181d4_render","container_src_main_component","container_src_main","packages_container","mainvue_type_template_id_2b296ab2_render","header_src_main_component","header_src_main","mainvue_type_template_id_03411dbf_render","aside_src_main_component","aside_src_main","aside","mainvue_type_template_id_2a3a7406_render","main_src_main_component","main_src_main","packages_main","mainvue_type_template_id_80210338_render","footer_src_main_component","footer_src_main","timeline_src_main_component","timeline","el-timeline","is-reverse","main_render","main_staticRenderFns","timeline_src_main","itemvue_type_template_id_61a69e50_render","dot","hideTimestamp","timestamp","src_item_component","timeline_src_item","timeline_item","mainvue_type_template_id_01cf3b65_render","underline","link_src_main_component","link_src_main","packages_link","mainvue_type_template_id_7fa02a7e_functional_true_render","contentPosition","divider_src_main_component","divider_src_main","divider","mainvue_type_template_id_44d84a7c_render","el-image__inner--center","el-image__preview","imageStyle","clickHandler","$listeners","showViewer","z-index","initial-index","imageIndex","on-close","closeViewer","url-list","previewSrcList","image_viewervue_type_template_id_5e73b307_render","isSingle","infinite","isFirst","handleActions","toggleMode","urlList","imgStyle","currentImg","handleImgLoad","handleImgError","image_viewervue_type_script_lang_js_extends","Mode","CONTAIN","ORIGINAL","mousewheelEventName","image_viewer_component","onSwitch","isShow","deg","offsetY","enableTransition","_transform","margin-left","margin-top","reset","img","complete","deviceSupportUninstall","deviceSupportInstall","_keyDownHandler","_mouseWheelHandler","wheelDelta","detail","zoomRate","_transform2","pageY","_dragHandler","modeNames","_zoomRate$rotateDeg$e","rotateDeg","image_viewer","isSupportObjectFit","objectFit","ObjectFit","prevOverflow","image_src_main_component","ImageViewer","scrollContainer","imageWidth","imageHeight","object-fit","getImageStyle","previewIndex","srcIndex","loadImage","addLazyLoadListener","removeLazyLoadListener","Image","handleLoad","handleLazyLoad","_scrollContainer","_lazyLoadHandler","containerHeight","image_src_main","packages_image","mainvue_type_template_id_6d9756be_render","i18nDate","validatedRange","selected-day","realSelectedDay","realFirstDayOfWeek","pickDay","hide-header","date_","date_default","src_date_table_component","selectedDay","hideHeader","WEEK_DAYS","toNestedArr","getFormateDate","curMonthDatePrefix","prevMonthDatePrefix","nextMonthDatePrefix","formatedToday","cellRenderProxy","elCalendar","dateCell","isInRange","_range","currentMonthRange","remaining","nextMonthRange","prevMonthDays","currentMonthDays","nextMonthDays","weekDays","thead","el-calendar-table","is-range","el-calendar-table__row","el-calendar-table__row--hide-border","date_table_render","date_table_staticRenderFns","src_date_table","validTypes","calendar_src_main_component","formatedDate","rangeValidator","isStart","expected","startDay","nextMontFirstDay","calendar_src_main","calendar","mainvue_type_template_id_257dd4a9_render","styleRight","styleBottom","cubic","backtop_src_main_component","visibilityHeight","throttledScrollHandler","onScroll","scrollToTop","beginTime","beginValue","rAF","func","frameFunc","easeInOutCubic","backtop_src_main","backtop","getPositionSize","getOffsetHeight","delay","main_getScrollOptions","getElementTop","main_handleScroll","_scope","_getScrollOptions","containerInfo","shouldTrigger","scrollBottom","getClientHeight","css","getStyleComputedProperty","infinite_scroll_src_main","_getScrollOptions2","MutationObserver","childList","subtree","_el$scope","infinite_scroll","mainvue_type_template_id_5070954c_render","page_header_src_main_component","page_header_src_main","page_header","cascader_node_component","node_createClass","src_node_classCallCheck","cascader_panel_src_store","cascader_panelvue_type_script_lang_js_extends","cascader_panelvue_type_script_lang_js_KeyCode","packages_cascader_panel","avatar_src_main_component","shape","srcSet","isImageExist","avatarClass","renderAvatar","lineHeight","src_main_render","src_main_staticRenderFns","avatar_src_main","avatar","mainvue_type_template_id_a4885264_render","withHeader","closeDrawer","drawer_src_main_component","wrapperClosable","prevActiveElement","drawer","drawer_src_main","mainvue_type_template_id_048de730_render","hideIcon","iconColor","cancelButtonType","confirmButtonType","popover_","popover_default","popconfirm_src_main_component","ElPopover","popconfirm_src_main","src_install","$msgbox","$alert","$confirm","$prompt","$notify","$message","version","CollapseTransition","Loading","Pagination","Dialog","Autocomplete","Dropdown","DropdownMenu","DropdownItem","Submenu","MenuItemGroup","Input","InputNumber","Radio","RadioGroup","RadioButton","Checkbox","CheckboxButton","CheckboxGroup","Switch","Select","Option","OptionGroup","Button","ButtonGroup","Table","TableColumn","DatePicker","TimeSelect","Popover","Tooltip","Breadcrumb","BreadcrumbItem","Form","FormItem","Tabs","TabPane","Tag","Tree","Alert","Slider","Icon","Row","Col","Progress","Spinner","Badge","Card","Rate","Steps","Step","Carousel","Scrollbar","CarouselItem","Collapse","CollapseItem","Cascader","ColorPicker","Transfer","Container","Header","Aside","Main","Footer","Timeline","TimelineItem","Link","Divider","Calendar","Backtop","InfiniteScroll","PageHeader","CascaderPanel","Avatar","Drawer","Popconfirm","__WEBPACK_AMD_DEFINE_FACTORY__","DEFAULTS","boundariesElement","preventOverflowOrder","flipBehavior","arrowElement","modifiersIgnored","forceAbsolute","Popper","_reference","jquery","state","isNotDefined","isConfig","_options","modifier","_getPosition","_setupEventListeners","getOuterSizes","_display","_visibility","styles","x","getOppositePlacement","matched","getPopperClientRect","popperOffsets","offsets","getArrayKeyIndex","keyToFind","getOffsetParent","getScrollParent","unit","isFinite","is_numeric","getOffsetRect","elementRect","offsetLeft","isIE","rectTop","getSupportedPropertyName","prefixes","toCheck","_removeEventListeners","removeOnDestroy","_originalPlacement","_getOffsets","boundaries","_getBoundaries","runModifiers","updateCallback","defaultConfig","classNames","contentType","arrowTagName","arrowClassNames","arrowAttributes","addClassNames","addAttributes","Element","attribute","isFixed","isParentFixed","referenceOffsets","parentRect","scrollParent","getOffsetRectRelativeToCustomParent","popperRect","updateBound","scrollTarget","html","offsetParentRect","getScrollTopValue","getScrollLeftValue","ends","modifiersToRun","functionToCheck","isFunction","isModifierRequired","requesting","requested","applyStyle","prefixedProperty","basePlacement","shiftVariation","shiftOffsets","preventOverflow","check","keepTogether","flip","flipped","placementOpposite","variation","flipOrder","_flip","arrowStyle","side","altSide","opSide","arrowSize","sideValue","nextSource","keysArray","nextKey","desc","getOwnPropertyDescriptor","74","src_mainvue_type_script_lang_js_","_ariaUtils2","tabEvent","focusFirst","dialogNode","getElementById","lastFocus","trapFocus","removeListeners","86","src_checkbox_groupvue_type_script_lang_js_","arrayEquals","looseEqual","capitalize","kebabCase","autoprefixer","isEdge","coerceTruthyValueToArray","arrayFind","arrayFindIndex","escapeRegexpString","generateId","getValueByPath","toObject","getPropByPath","strict","tempObj","keyArr","rafThrottle","locked","objToArray","_types","_from","paths","random","hyphenateRE","isObjectA","isObjectB","stringify","arrayA","arrayB","99","src_button_groupvue_type_script_lang_js_","124","src_tagvue_type_script_lang_js_","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","cloneIfNecessary","optionsArgument","deepmerge","emptyTarget","defaultArrayMerge","destination","sourceIsArray","arrayMerge","mergeObject","deepmerge_1","RE_NARGS","isHtmlElement","ELEMENT_NODE","isDefined","119","src_progressvue_type_script_lang_js_","speed","called","afterLeaveCallback","$once"],"mappings":"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7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,GAEA6J,EAAA7J,QAAiB8J,EAAQ,SAIzB,SAAAD,EAAA7J,G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","file":"static/js/chunk-elementUI.21957ec8.js","sourcesContent":["\"use strict\";\n\nexports.__esModule = true;\nexports.isDef = isDef;\nexports.isKorean = isKorean;\nfunction isDef(val) {\n return val !== undefined && val !== null;\n}\nfunction isKorean(text) {\n var reg = /([(\\uAC00-\\uD7AF)|(\\u3130-\\u318F)])+/gi;\n return reg.test(text);\n}","\"use strict\";\n\nexports.__esModule = true;\nfunction _broadcast(componentName, eventName, params) {\n this.$children.forEach(function (child) {\n var name = child.$options.componentName;\n\n if (name === componentName) {\n child.$emit.apply(child, [eventName].concat(params));\n } else {\n _broadcast.apply(child, [componentName, eventName].concat([params]));\n }\n });\n}\nexports.default = {\n methods: {\n dispatch: function dispatch(componentName, eventName, params) {\n var parent = this.$parent || this.$root;\n var name = parent.$options.componentName;\n\n while (parent && (!name || name !== componentName)) {\n parent = parent.$parent;\n\n if (parent) {\n name = parent.$options.componentName;\n }\n }\n if (parent) {\n parent.$emit.apply(parent, [eventName].concat(params));\n }\n },\n broadcast: function broadcast(componentName, eventName, params) {\n _broadcast.call(this, componentName, eventName, params);\n }\n }\n};","'use strict';\n\n/* Modified from https://github.com/taylorhakes/fecha\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2015 Taylor Hakes\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/*eslint-disable*/\n// 把 YYYY-MM-DD 改成了 yyyy-MM-dd\n(function (main) {\n 'use strict';\n\n /**\n * Parse or format dates\n * @class fecha\n */\n\n var fecha = {};\n var token = /d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g;\n var twoDigits = '\\\\d\\\\d?';\n var threeDigits = '\\\\d{3}';\n var fourDigits = '\\\\d{4}';\n var word = '[^\\\\s]+';\n var literal = /\\[([^]*?)\\]/gm;\n var noop = function noop() {};\n\n function regexEscape(str) {\n return str.replace(/[|\\\\{()[^$+*?.-]/g, '\\\\$&');\n }\n\n function shorten(arr, sLen) {\n var newArr = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n newArr.push(arr[i].substr(0, sLen));\n }\n return newArr;\n }\n\n function monthUpdate(arrName) {\n return function (d, v, i18n) {\n var index = i18n[arrName].indexOf(v.charAt(0).toUpperCase() + v.substr(1).toLowerCase());\n if (~index) {\n d.month = index;\n }\n };\n }\n\n function pad(val, len) {\n val = String(val);\n len = len || 2;\n while (val.length < len) {\n val = '0' + val;\n }\n return val;\n }\n\n var dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n var monthNamesShort = shorten(monthNames, 3);\n var dayNamesShort = shorten(dayNames, 3);\n fecha.i18n = {\n dayNamesShort: dayNamesShort,\n dayNames: dayNames,\n monthNamesShort: monthNamesShort,\n monthNames: monthNames,\n amPm: ['am', 'pm'],\n DoFn: function DoFn(D) {\n return D + ['th', 'st', 'nd', 'rd'][D % 10 > 3 ? 0 : (D - D % 10 !== 10) * D % 10];\n }\n };\n\n var formatFlags = {\n D: function D(dateObj) {\n return dateObj.getDay();\n },\n DD: function DD(dateObj) {\n return pad(dateObj.getDay());\n },\n Do: function Do(dateObj, i18n) {\n return i18n.DoFn(dateObj.getDate());\n },\n d: function d(dateObj) {\n return dateObj.getDate();\n },\n dd: function dd(dateObj) {\n return pad(dateObj.getDate());\n },\n ddd: function ddd(dateObj, i18n) {\n return i18n.dayNamesShort[dateObj.getDay()];\n },\n dddd: function dddd(dateObj, i18n) {\n return i18n.dayNames[dateObj.getDay()];\n },\n M: function M(dateObj) {\n return dateObj.getMonth() + 1;\n },\n MM: function MM(dateObj) {\n return pad(dateObj.getMonth() + 1);\n },\n MMM: function MMM(dateObj, i18n) {\n return i18n.monthNamesShort[dateObj.getMonth()];\n },\n MMMM: function MMMM(dateObj, i18n) {\n return i18n.monthNames[dateObj.getMonth()];\n },\n yy: function yy(dateObj) {\n return pad(String(dateObj.getFullYear()), 4).substr(2);\n },\n yyyy: function yyyy(dateObj) {\n return pad(dateObj.getFullYear(), 4);\n },\n h: function h(dateObj) {\n return dateObj.getHours() % 12 || 12;\n },\n hh: function hh(dateObj) {\n return pad(dateObj.getHours() % 12 || 12);\n },\n H: function H(dateObj) {\n return dateObj.getHours();\n },\n HH: function HH(dateObj) {\n return pad(dateObj.getHours());\n },\n m: function m(dateObj) {\n return dateObj.getMinutes();\n },\n mm: function mm(dateObj) {\n return pad(dateObj.getMinutes());\n },\n s: function s(dateObj) {\n return dateObj.getSeconds();\n },\n ss: function ss(dateObj) {\n return pad(dateObj.getSeconds());\n },\n S: function S(dateObj) {\n return Math.round(dateObj.getMilliseconds() / 100);\n },\n SS: function SS(dateObj) {\n return pad(Math.round(dateObj.getMilliseconds() / 10), 2);\n },\n SSS: function SSS(dateObj) {\n return pad(dateObj.getMilliseconds(), 3);\n },\n a: function a(dateObj, i18n) {\n return dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1];\n },\n A: function A(dateObj, i18n) {\n return dateObj.getHours() < 12 ? i18n.amPm[0].toUpperCase() : i18n.amPm[1].toUpperCase();\n },\n ZZ: function ZZ(dateObj) {\n var o = dateObj.getTimezoneOffset();\n return (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4);\n }\n };\n\n var parseFlags = {\n d: [twoDigits, function (d, v) {\n d.day = v;\n }],\n Do: [twoDigits + word, function (d, v) {\n d.day = parseInt(v, 10);\n }],\n M: [twoDigits, function (d, v) {\n d.month = v - 1;\n }],\n yy: [twoDigits, function (d, v) {\n var da = new Date(),\n cent = +('' + da.getFullYear()).substr(0, 2);\n d.year = '' + (v > 68 ? cent - 1 : cent) + v;\n }],\n h: [twoDigits, function (d, v) {\n d.hour = v;\n }],\n m: [twoDigits, function (d, v) {\n d.minute = v;\n }],\n s: [twoDigits, function (d, v) {\n d.second = v;\n }],\n yyyy: [fourDigits, function (d, v) {\n d.year = v;\n }],\n S: ['\\\\d', function (d, v) {\n d.millisecond = v * 100;\n }],\n SS: ['\\\\d{2}', function (d, v) {\n d.millisecond = v * 10;\n }],\n SSS: [threeDigits, function (d, v) {\n d.millisecond = v;\n }],\n D: [twoDigits, noop],\n ddd: [word, noop],\n MMM: [word, monthUpdate('monthNamesShort')],\n MMMM: [word, monthUpdate('monthNames')],\n a: [word, function (d, v, i18n) {\n var val = v.toLowerCase();\n if (val === i18n.amPm[0]) {\n d.isPm = false;\n } else if (val === i18n.amPm[1]) {\n d.isPm = true;\n }\n }],\n ZZ: ['[^\\\\s]*?[\\\\+\\\\-]\\\\d\\\\d:?\\\\d\\\\d|[^\\\\s]*?Z', function (d, v) {\n var parts = (v + '').match(/([+-]|\\d\\d)/gi),\n minutes;\n\n if (parts) {\n minutes = +(parts[1] * 60) + parseInt(parts[2], 10);\n d.timezoneOffset = parts[0] === '+' ? minutes : -minutes;\n }\n }]\n };\n parseFlags.dd = parseFlags.d;\n parseFlags.dddd = parseFlags.ddd;\n parseFlags.DD = parseFlags.D;\n parseFlags.mm = parseFlags.m;\n parseFlags.hh = parseFlags.H = parseFlags.HH = parseFlags.h;\n parseFlags.MM = parseFlags.M;\n parseFlags.ss = parseFlags.s;\n parseFlags.A = parseFlags.a;\n\n // Some common format strings\n fecha.masks = {\n default: 'ddd MMM dd yyyy HH:mm:ss',\n shortDate: 'M/D/yy',\n mediumDate: 'MMM d, yyyy',\n longDate: 'MMMM d, yyyy',\n fullDate: 'dddd, MMMM d, yyyy',\n shortTime: 'HH:mm',\n mediumTime: 'HH:mm:ss',\n longTime: 'HH:mm:ss.SSS'\n };\n\n /***\n * Format a date\n * @method format\n * @param {Date|number} dateObj\n * @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'\n */\n fecha.format = function (dateObj, mask, i18nSettings) {\n var i18n = i18nSettings || fecha.i18n;\n\n if (typeof dateObj === 'number') {\n dateObj = new Date(dateObj);\n }\n\n if (Object.prototype.toString.call(dateObj) !== '[object Date]' || isNaN(dateObj.getTime())) {\n throw new Error('Invalid Date in fecha.format');\n }\n\n mask = fecha.masks[mask] || mask || fecha.masks['default'];\n\n var literals = [];\n\n // Make literals inactive by replacing them with ??\n mask = mask.replace(literal, function ($0, $1) {\n literals.push($1);\n return '@@@';\n });\n // Apply formatting rules\n mask = mask.replace(token, function ($0) {\n return $0 in formatFlags ? formatFlags[$0](dateObj, i18n) : $0.slice(1, $0.length - 1);\n });\n // Inline literal values back into the formatted value\n return mask.replace(/@@@/g, function () {\n return literals.shift();\n });\n };\n\n /**\n * Parse a date string into an object, changes - into /\n * @method parse\n * @param {string} dateStr Date string\n * @param {string} format Date parse format\n * @returns {Date|boolean}\n */\n fecha.parse = function (dateStr, format, i18nSettings) {\n var i18n = i18nSettings || fecha.i18n;\n\n if (typeof format !== 'string') {\n throw new Error('Invalid format in fecha.parse');\n }\n\n format = fecha.masks[format] || format;\n\n // Avoid regular expression denial of service, fail early for really long strings\n // https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS\n if (dateStr.length > 1000) {\n return null;\n }\n\n var dateInfo = {};\n var parseInfo = [];\n var literals = [];\n format = format.replace(literal, function ($0, $1) {\n literals.push($1);\n return '@@@';\n });\n var newFormat = regexEscape(format).replace(token, function ($0) {\n if (parseFlags[$0]) {\n var info = parseFlags[$0];\n parseInfo.push(info[1]);\n return '(' + info[0] + ')';\n }\n\n return $0;\n });\n newFormat = newFormat.replace(/@@@/g, function () {\n return literals.shift();\n });\n var matches = dateStr.match(new RegExp(newFormat, 'i'));\n if (!matches) {\n return null;\n }\n\n for (var i = 1; i < matches.length; i++) {\n parseInfo[i - 1](dateInfo, matches[i], i18n);\n }\n\n var today = new Date();\n if (dateInfo.isPm === true && dateInfo.hour != null && +dateInfo.hour !== 12) {\n dateInfo.hour = +dateInfo.hour + 12;\n } else if (dateInfo.isPm === false && +dateInfo.hour === 12) {\n dateInfo.hour = 0;\n }\n\n var date;\n if (dateInfo.timezoneOffset != null) {\n dateInfo.minute = +(dateInfo.minute || 0) - +dateInfo.timezoneOffset;\n date = new Date(Date.UTC(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1, dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0));\n } else {\n date = new Date(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1, dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0);\n }\n return date;\n };\n\n /* istanbul ignore next */\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = fecha;\n } else if (typeof define === 'function' && define.amd) {\n define(function () {\n return fecha;\n });\n } else {\n main.fecha = fecha;\n }\n})(undefined);","'use strict';\n\nexports.__esModule = true;\nexports.validateRangeInOneMonth = exports.extractTimeFormat = exports.extractDateFormat = exports.nextYear = exports.prevYear = exports.nextMonth = exports.prevMonth = exports.changeYearMonthAndClampDate = exports.timeWithinRange = exports.limitTimeRange = exports.clearMilliseconds = exports.clearTime = exports.modifyWithTimeString = exports.modifyTime = exports.modifyDate = exports.range = exports.getRangeMinutes = exports.getMonthDays = exports.getPrevMonthLastDays = exports.getRangeHours = exports.getWeekNumber = exports.getStartDateOfMonth = exports.nextDate = exports.prevDate = exports.getFirstDayOfMonth = exports.getDayCountOfYear = exports.getDayCountOfMonth = exports.parseDate = exports.formatDate = exports.isDateObject = exports.isDate = exports.toDate = exports.getI18nSettings = undefined;\n\nvar _date = require('element-ui/lib/utils/date');\n\nvar _date2 = _interopRequireDefault(_date);\n\nvar _locale = require('element-ui/lib/locale');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar weeks = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nvar months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];\n\nvar newArray = function newArray(start, end) {\n var result = [];\n for (var i = start; i <= end; i++) {\n result.push(i);\n }\n return result;\n};\n\nvar getI18nSettings = exports.getI18nSettings = function getI18nSettings() {\n return {\n dayNamesShort: weeks.map(function (week) {\n return (0, _locale.t)('el.datepicker.weeks.' + week);\n }),\n dayNames: weeks.map(function (week) {\n return (0, _locale.t)('el.datepicker.weeks.' + week);\n }),\n monthNamesShort: months.map(function (month) {\n return (0, _locale.t)('el.datepicker.months.' + month);\n }),\n monthNames: months.map(function (month, index) {\n return (0, _locale.t)('el.datepicker.month' + (index + 1));\n }),\n amPm: ['am', 'pm']\n };\n};\n\nvar toDate = exports.toDate = function toDate(date) {\n return isDate(date) ? new Date(date) : null;\n};\n\nvar isDate = exports.isDate = function isDate(date) {\n if (date === null || date === undefined) return false;\n if (isNaN(new Date(date).getTime())) return false;\n if (Array.isArray(date)) return false; // deal with `new Date([ new Date() ]) -> new Date()`\n return true;\n};\n\nvar isDateObject = exports.isDateObject = function isDateObject(val) {\n return val instanceof Date;\n};\n\nvar formatDate = exports.formatDate = function formatDate(date, format) {\n date = toDate(date);\n if (!date) return '';\n return _date2.default.format(date, format || 'yyyy-MM-dd', getI18nSettings());\n};\n\nvar parseDate = exports.parseDate = function parseDate(string, format) {\n return _date2.default.parse(string, format || 'yyyy-MM-dd', getI18nSettings());\n};\n\nvar getDayCountOfMonth = exports.getDayCountOfMonth = function getDayCountOfMonth(year, month) {\n if (month === 3 || month === 5 || month === 8 || month === 10) {\n return 30;\n }\n\n if (month === 1) {\n if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {\n return 29;\n } else {\n return 28;\n }\n }\n\n return 31;\n};\n\nvar getDayCountOfYear = exports.getDayCountOfYear = function getDayCountOfYear(year) {\n var isLeapYear = year % 400 === 0 || year % 100 !== 0 && year % 4 === 0;\n return isLeapYear ? 366 : 365;\n};\n\nvar getFirstDayOfMonth = exports.getFirstDayOfMonth = function getFirstDayOfMonth(date) {\n var temp = new Date(date.getTime());\n temp.setDate(1);\n return temp.getDay();\n};\n\n// see: https://stackoverflow.com/questions/3674539/incrementing-a-date-in-javascript\n// {prev, next} Date should work for Daylight Saving Time\n// Adding 24 * 60 * 60 * 1000 does not work in the above scenario\nvar prevDate = exports.prevDate = function prevDate(date) {\n var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() - amount);\n};\n\nvar nextDate = exports.nextDate = function nextDate(date) {\n var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);\n};\n\nvar getStartDateOfMonth = exports.getStartDateOfMonth = function getStartDateOfMonth(year, month) {\n var result = new Date(year, month, 1);\n var day = result.getDay();\n\n if (day === 0) {\n return prevDate(result, 7);\n } else {\n return prevDate(result, day);\n }\n};\n\nvar getWeekNumber = exports.getWeekNumber = function getWeekNumber(src) {\n if (!isDate(src)) return null;\n var date = new Date(src.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week 1.\n // Rounding should be fine for Daylight Saving Time. Its shift should never be more than 12 hours.\n return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);\n};\n\nvar getRangeHours = exports.getRangeHours = function getRangeHours(ranges) {\n var hours = [];\n var disabledHours = [];\n\n (ranges || []).forEach(function (range) {\n var value = range.map(function (date) {\n return date.getHours();\n });\n\n disabledHours = disabledHours.concat(newArray(value[0], value[1]));\n });\n\n if (disabledHours.length) {\n for (var i = 0; i < 24; i++) {\n hours[i] = disabledHours.indexOf(i) === -1;\n }\n } else {\n for (var _i = 0; _i < 24; _i++) {\n hours[_i] = false;\n }\n }\n\n return hours;\n};\n\nvar getPrevMonthLastDays = exports.getPrevMonthLastDays = function getPrevMonthLastDays(date, amount) {\n if (amount <= 0) return [];\n var temp = new Date(date.getTime());\n temp.setDate(0);\n var lastDay = temp.getDate();\n return range(amount).map(function (_, index) {\n return lastDay - (amount - index - 1);\n });\n};\n\nvar getMonthDays = exports.getMonthDays = function getMonthDays(date) {\n var temp = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n var days = temp.getDate();\n return range(days).map(function (_, index) {\n return index + 1;\n });\n};\n\nfunction setRangeData(arr, start, end, value) {\n for (var i = start; i < end; i++) {\n arr[i] = value;\n }\n}\n\nvar getRangeMinutes = exports.getRangeMinutes = function getRangeMinutes(ranges, hour) {\n var minutes = new Array(60);\n\n if (ranges.length > 0) {\n ranges.forEach(function (range) {\n var start = range[0];\n var end = range[1];\n var startHour = start.getHours();\n var startMinute = start.getMinutes();\n var endHour = end.getHours();\n var endMinute = end.getMinutes();\n if (startHour === hour && endHour !== hour) {\n setRangeData(minutes, startMinute, 60, true);\n } else if (startHour === hour && endHour === hour) {\n setRangeData(minutes, startMinute, endMinute + 1, true);\n } else if (startHour !== hour && endHour === hour) {\n setRangeData(minutes, 0, endMinute + 1, true);\n } else if (startHour < hour && endHour > hour) {\n setRangeData(minutes, 0, 60, true);\n }\n });\n } else {\n setRangeData(minutes, 0, 60, true);\n }\n return minutes;\n};\n\nvar range = exports.range = function range(n) {\n // see https://stackoverflow.com/questions/3746725/create-a-javascript-array-containing-1-n\n return Array.apply(null, { length: n }).map(function (_, n) {\n return n;\n });\n};\n\nvar modifyDate = exports.modifyDate = function modifyDate(date, y, m, d) {\n return new Date(y, m, d, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n};\n\nvar modifyTime = exports.modifyTime = function modifyTime(date, h, m, s) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), h, m, s, date.getMilliseconds());\n};\n\nvar modifyWithTimeString = exports.modifyWithTimeString = function modifyWithTimeString(date, time) {\n if (date == null || !time) {\n return date;\n }\n time = parseDate(time, 'HH:mm:ss');\n return modifyTime(date, time.getHours(), time.getMinutes(), time.getSeconds());\n};\n\nvar clearTime = exports.clearTime = function clearTime(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n};\n\nvar clearMilliseconds = exports.clearMilliseconds = function clearMilliseconds(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), 0);\n};\n\nvar limitTimeRange = exports.limitTimeRange = function limitTimeRange(date, ranges) {\n var format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'HH:mm:ss';\n\n // TODO: refactory a more elegant solution\n if (ranges.length === 0) return date;\n var normalizeDate = function normalizeDate(date) {\n return _date2.default.parse(_date2.default.format(date, format), format);\n };\n var ndate = normalizeDate(date);\n var nranges = ranges.map(function (range) {\n return range.map(normalizeDate);\n });\n if (nranges.some(function (nrange) {\n return ndate >= nrange[0] && ndate <= nrange[1];\n })) return date;\n\n var minDate = nranges[0][0];\n var maxDate = nranges[0][0];\n\n nranges.forEach(function (nrange) {\n minDate = new Date(Math.min(nrange[0], minDate));\n maxDate = new Date(Math.max(nrange[1], minDate));\n });\n\n var ret = ndate < minDate ? minDate : maxDate;\n // preserve Year/Month/Date\n return modifyDate(ret, date.getFullYear(), date.getMonth(), date.getDate());\n};\n\nvar timeWithinRange = exports.timeWithinRange = function timeWithinRange(date, selectableRange, format) {\n var limitedDate = limitTimeRange(date, selectableRange, format);\n return limitedDate.getTime() === date.getTime();\n};\n\nvar changeYearMonthAndClampDate = exports.changeYearMonthAndClampDate = function changeYearMonthAndClampDate(date, year, month) {\n // clamp date to the number of days in `year`, `month`\n // eg: (2010-1-31, 2010, 2) => 2010-2-28\n var monthDate = Math.min(date.getDate(), getDayCountOfMonth(year, month));\n return modifyDate(date, year, month, monthDate);\n};\n\nvar prevMonth = exports.prevMonth = function prevMonth(date) {\n var year = date.getFullYear();\n var month = date.getMonth();\n return month === 0 ? changeYearMonthAndClampDate(date, year - 1, 11) : changeYearMonthAndClampDate(date, year, month - 1);\n};\n\nvar nextMonth = exports.nextMonth = function nextMonth(date) {\n var year = date.getFullYear();\n var month = date.getMonth();\n return month === 11 ? changeYearMonthAndClampDate(date, year + 1, 0) : changeYearMonthAndClampDate(date, year, month + 1);\n};\n\nvar prevYear = exports.prevYear = function prevYear(date) {\n var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n var year = date.getFullYear();\n var month = date.getMonth();\n return changeYearMonthAndClampDate(date, year - amount, month);\n};\n\nvar nextYear = exports.nextYear = function nextYear(date) {\n var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n var year = date.getFullYear();\n var month = date.getMonth();\n return changeYearMonthAndClampDate(date, year + amount, month);\n};\n\nvar extractDateFormat = exports.extractDateFormat = function extractDateFormat(format) {\n return format.replace(/\\W?m{1,2}|\\W?ZZ/g, '').replace(/\\W?h{1,2}|\\W?s{1,3}|\\W?a/gi, '').trim();\n};\n\nvar extractTimeFormat = exports.extractTimeFormat = function extractTimeFormat(format) {\n return format.replace(/\\W?D{1,2}|\\W?Do|\\W?d{1,4}|\\W?M{1,4}|\\W?y{2,4}/g, '').trim();\n};\n\nvar validateRangeInOneMonth = exports.validateRangeInOneMonth = function validateRangeInOneMonth(start, end) {\n return start.getMonth() === end.getMonth() && start.getFullYear() === end.getFullYear();\n};","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 83);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/emitter\");\n\n/***/ }),\n\n/***/ 83:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox.vue?vue&type=template&id=d0387074&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"label\",\n {\n staticClass: \"el-checkbox\",\n class: [\n _vm.border && _vm.checkboxSize\n ? \"el-checkbox--\" + _vm.checkboxSize\n : \"\",\n { \"is-disabled\": _vm.isDisabled },\n { \"is-bordered\": _vm.border },\n { \"is-checked\": _vm.isChecked }\n ],\n attrs: { id: _vm.id }\n },\n [\n _c(\n \"span\",\n {\n staticClass: \"el-checkbox__input\",\n class: {\n \"is-disabled\": _vm.isDisabled,\n \"is-checked\": _vm.isChecked,\n \"is-indeterminate\": _vm.indeterminate,\n \"is-focus\": _vm.focus\n },\n attrs: {\n tabindex: _vm.indeterminate ? 0 : false,\n role: _vm.indeterminate ? \"checkbox\" : false,\n \"aria-checked\": _vm.indeterminate ? \"mixed\" : false\n }\n },\n [\n _c(\"span\", { staticClass: \"el-checkbox__inner\" }),\n _vm.trueLabel || _vm.falseLabel\n ? _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.model,\n expression: \"model\"\n }\n ],\n staticClass: \"el-checkbox__original\",\n attrs: {\n type: \"checkbox\",\n \"aria-hidden\": _vm.indeterminate ? \"true\" : \"false\",\n name: _vm.name,\n disabled: _vm.isDisabled,\n \"true-value\": _vm.trueLabel,\n \"false-value\": _vm.falseLabel\n },\n domProps: {\n checked: Array.isArray(_vm.model)\n ? _vm._i(_vm.model, null) > -1\n : _vm._q(_vm.model, _vm.trueLabel)\n },\n on: {\n change: [\n function($event) {\n var $$a = _vm.model,\n $$el = $event.target,\n $$c = $$el.checked ? _vm.trueLabel : _vm.falseLabel\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.model = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.model = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.model = $$c\n }\n },\n _vm.handleChange\n ],\n focus: function($event) {\n _vm.focus = true\n },\n blur: function($event) {\n _vm.focus = false\n }\n }\n })\n : _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.model,\n expression: \"model\"\n }\n ],\n staticClass: \"el-checkbox__original\",\n attrs: {\n type: \"checkbox\",\n \"aria-hidden\": _vm.indeterminate ? \"true\" : \"false\",\n disabled: _vm.isDisabled,\n name: _vm.name\n },\n domProps: {\n value: _vm.label,\n checked: Array.isArray(_vm.model)\n ? _vm._i(_vm.model, _vm.label) > -1\n : _vm.model\n },\n on: {\n change: [\n function($event) {\n var $$a = _vm.model,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = _vm.label,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.model = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.model = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.model = $$c\n }\n },\n _vm.handleChange\n ],\n focus: function($event) {\n _vm.focus = true\n },\n blur: function($event) {\n _vm.focus = false\n }\n }\n })\n ]\n ),\n _vm.$slots.default || _vm.label\n ? _c(\n \"span\",\n { staticClass: \"el-checkbox__label\" },\n [\n _vm._t(\"default\"),\n !_vm.$slots.default ? [_vm._v(_vm._s(_vm.label))] : _vm._e()\n ],\n 2\n )\n : _vm._e()\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue?vue&type=template&id=d0387074&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __webpack_require__(4);\nvar emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var checkboxvue_type_script_lang_js_ = ({\n name: 'ElCheckbox',\n\n mixins: [emitter_default.a],\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n componentName: 'ElCheckbox',\n\n data: function data() {\n return {\n selfModel: false,\n focus: false,\n isLimitExceeded: false\n };\n },\n\n\n computed: {\n model: {\n get: function get() {\n return this.isGroup ? this.store : this.value !== undefined ? this.value : this.selfModel;\n },\n set: function set(val) {\n if (this.isGroup) {\n this.isLimitExceeded = false;\n this._checkboxGroup.min !== undefined && val.length < this._checkboxGroup.min && (this.isLimitExceeded = true);\n\n this._checkboxGroup.max !== undefined && val.length > this._checkboxGroup.max && (this.isLimitExceeded = true);\n\n this.isLimitExceeded === false && this.dispatch('ElCheckboxGroup', 'input', [val]);\n } else {\n this.$emit('input', val);\n this.selfModel = val;\n }\n }\n },\n\n isChecked: function isChecked() {\n if ({}.toString.call(this.model) === '[object Boolean]') {\n return this.model;\n } else if (Array.isArray(this.model)) {\n return this.model.indexOf(this.label) > -1;\n } else if (this.model !== null && this.model !== undefined) {\n return this.model === this.trueLabel;\n }\n },\n isGroup: function isGroup() {\n var parent = this.$parent;\n while (parent) {\n if (parent.$options.componentName !== 'ElCheckboxGroup') {\n parent = parent.$parent;\n } else {\n this._checkboxGroup = parent;\n return true;\n }\n }\n return false;\n },\n store: function store() {\n return this._checkboxGroup ? this._checkboxGroup.value : this.value;\n },\n\n\n /* used to make the isDisabled judgment under max/min props */\n isLimitDisabled: function isLimitDisabled() {\n var _checkboxGroup = this._checkboxGroup,\n max = _checkboxGroup.max,\n min = _checkboxGroup.min;\n\n return !!(max || min) && this.model.length >= max && !this.isChecked || this.model.length <= min && this.isChecked;\n },\n isDisabled: function isDisabled() {\n return this.isGroup ? this._checkboxGroup.disabled || this.disabled || (this.elForm || {}).disabled || this.isLimitDisabled : this.disabled || (this.elForm || {}).disabled;\n },\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n checkboxSize: function checkboxSize() {\n var temCheckboxSize = this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n return this.isGroup ? this._checkboxGroup.checkboxGroupSize || temCheckboxSize : temCheckboxSize;\n }\n },\n\n props: {\n value: {},\n label: {},\n indeterminate: Boolean,\n disabled: Boolean,\n checked: Boolean,\n name: String,\n trueLabel: [String, Number],\n falseLabel: [String, Number],\n id: String, /* 当indeterminate为真时,为controls提供相关连的checkbox的id,表明元素间的控制关系*/\n controls: String, /* 当indeterminate为真时,为controls提供相关连的checkbox的id,表明元素间的控制关系*/\n border: Boolean,\n size: String\n },\n\n methods: {\n addToStore: function addToStore() {\n if (Array.isArray(this.model) && this.model.indexOf(this.label) === -1) {\n this.model.push(this.label);\n } else {\n this.model = this.trueLabel || true;\n }\n },\n handleChange: function handleChange(ev) {\n var _this = this;\n\n if (this.isLimitExceeded) return;\n var value = void 0;\n if (ev.target.checked) {\n value = this.trueLabel === undefined ? true : this.trueLabel;\n } else {\n value = this.falseLabel === undefined ? false : this.falseLabel;\n }\n this.$emit('change', value, ev);\n this.$nextTick(function () {\n if (_this.isGroup) {\n _this.dispatch('ElCheckboxGroup', 'change', [_this._checkboxGroup.value]);\n }\n });\n }\n },\n\n created: function created() {\n this.checked && this.addToStore();\n },\n mounted: function mounted() {\n // 为indeterminate元素 添加aria-controls 属性\n if (this.indeterminate) {\n this.$el.setAttribute('aria-controls', this.controls);\n }\n },\n\n\n watch: {\n value: function value(_value) {\n this.dispatch('ElFormItem', 'el.form.change', _value);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_checkboxvue_type_script_lang_js_ = (checkboxvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_checkboxvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/checkbox/src/checkbox.vue\"\n/* harmony default export */ var src_checkbox = (component.exports);\n// CONCATENATED MODULE: ./packages/checkbox/index.js\n\n\n/* istanbul ignore next */\nsrc_checkbox.install = function (Vue) {\n Vue.component(src_checkbox.name, src_checkbox);\n};\n\n/* harmony default export */ var packages_checkbox = __webpack_exports__[\"default\"] = (src_checkbox);\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 53);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/util\");\n\n/***/ }),\n\n/***/ 34:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/option.vue?vue&type=template&id=7a44c642&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"li\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-select-dropdown__item\",\n class: {\n selected: _vm.itemSelected,\n \"is-disabled\": _vm.disabled || _vm.groupDisabled || _vm.limitReached,\n hover: _vm.hover\n },\n on: {\n mouseenter: _vm.hoverItem,\n click: function($event) {\n $event.stopPropagation()\n return _vm.selectOptionClick($event)\n }\n }\n },\n [_vm._t(\"default\", [_c(\"span\", [_vm._v(_vm._s(_vm.currentLabel))])])],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/select/src/option.vue?vue&type=template&id=7a44c642&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __webpack_require__(4);\nvar emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/util\"\nvar util_ = __webpack_require__(3);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/option.vue?vue&type=script&lang=js&\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ var optionvue_type_script_lang_js_ = ({\n mixins: [emitter_default.a],\n\n name: 'ElOption',\n\n componentName: 'ElOption',\n\n inject: ['select'],\n\n props: {\n value: {\n required: true\n },\n label: [String, Number],\n created: Boolean,\n disabled: {\n type: Boolean,\n default: false\n }\n },\n\n data: function data() {\n return {\n index: -1,\n groupDisabled: false,\n visible: true,\n hitState: false,\n hover: false\n };\n },\n\n\n computed: {\n isObject: function isObject() {\n return Object.prototype.toString.call(this.value).toLowerCase() === '[object object]';\n },\n currentLabel: function currentLabel() {\n return this.label || (this.isObject ? '' : this.value);\n },\n currentValue: function currentValue() {\n return this.value || this.label || '';\n },\n itemSelected: function itemSelected() {\n if (!this.select.multiple) {\n return this.isEqual(this.value, this.select.value);\n } else {\n return this.contains(this.select.value, this.value);\n }\n },\n limitReached: function limitReached() {\n if (this.select.multiple) {\n return !this.itemSelected && (this.select.value || []).length >= this.select.multipleLimit && this.select.multipleLimit > 0;\n } else {\n return false;\n }\n }\n },\n\n watch: {\n currentLabel: function currentLabel() {\n if (!this.created && !this.select.remote) this.dispatch('ElSelect', 'setSelected');\n },\n value: function value(val, oldVal) {\n var _select = this.select,\n remote = _select.remote,\n valueKey = _select.valueKey;\n\n if (!this.created && !remote) {\n if (valueKey && (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object' && (typeof oldVal === 'undefined' ? 'undefined' : _typeof(oldVal)) === 'object' && val[valueKey] === oldVal[valueKey]) {\n return;\n }\n this.dispatch('ElSelect', 'setSelected');\n }\n }\n },\n\n methods: {\n isEqual: function isEqual(a, b) {\n if (!this.isObject) {\n return a === b;\n } else {\n var valueKey = this.select.valueKey;\n return Object(util_[\"getValueByPath\"])(a, valueKey) === Object(util_[\"getValueByPath\"])(b, valueKey);\n }\n },\n contains: function contains() {\n var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var target = arguments[1];\n\n if (!this.isObject) {\n return arr && arr.indexOf(target) > -1;\n } else {\n var valueKey = this.select.valueKey;\n return arr && arr.some(function (item) {\n return Object(util_[\"getValueByPath\"])(item, valueKey) === Object(util_[\"getValueByPath\"])(target, valueKey);\n });\n }\n },\n handleGroupDisabled: function handleGroupDisabled(val) {\n this.groupDisabled = val;\n },\n hoverItem: function hoverItem() {\n if (!this.disabled && !this.groupDisabled) {\n this.select.hoverIndex = this.select.options.indexOf(this);\n }\n },\n selectOptionClick: function selectOptionClick() {\n if (this.disabled !== true && this.groupDisabled !== true) {\n this.dispatch('ElSelect', 'handleOptionClick', [this, true]);\n }\n },\n queryChange: function queryChange(query) {\n this.visible = new RegExp(Object(util_[\"escapeRegexpString\"])(query), 'i').test(this.currentLabel) || this.created;\n if (!this.visible) {\n this.select.filteredOptionsCount--;\n }\n }\n },\n\n created: function created() {\n this.select.options.push(this);\n this.select.cachedOptions.push(this);\n this.select.optionsCount++;\n this.select.filteredOptionsCount++;\n\n this.$on('queryChange', this.queryChange);\n this.$on('handleGroupDisabled', this.handleGroupDisabled);\n },\n beforeDestroy: function beforeDestroy() {\n var _select2 = this.select,\n selected = _select2.selected,\n multiple = _select2.multiple;\n\n var selectedOptions = multiple ? selected : [selected];\n var index = this.select.cachedOptions.indexOf(this);\n var selectedIndex = selectedOptions.indexOf(this);\n\n // if option is not selected, remove it from cache\n if (index > -1 && selectedIndex < 0) {\n this.select.cachedOptions.splice(index, 1);\n }\n this.select.onOptionDestroy(this.select.options.indexOf(this));\n }\n});\n// CONCATENATED MODULE: ./packages/select/src/option.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_optionvue_type_script_lang_js_ = (optionvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/select/src/option.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_optionvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/select/src/option.vue\"\n/* harmony default export */ var src_option = __webpack_exports__[\"a\"] = (component.exports);\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/emitter\");\n\n/***/ }),\n\n/***/ 53:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _select_src_option__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(34);\n\n\n/* istanbul ignore next */\n_select_src_option__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"].install = function (Vue) {\n Vue.component(_select_src_option__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"].name, _select_src_option__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"]);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_select_src_option__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"]);\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 114);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 10:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/input\");\n\n/***/ }),\n\n/***/ 114:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/input-number/src/input-number.vue?vue&type=template&id=42f8cf66&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n class: [\n \"el-input-number\",\n _vm.inputNumberSize ? \"el-input-number--\" + _vm.inputNumberSize : \"\",\n { \"is-disabled\": _vm.inputNumberDisabled },\n { \"is-without-controls\": !_vm.controls },\n { \"is-controls-right\": _vm.controlsAtRight }\n ],\n on: {\n dragstart: function($event) {\n $event.preventDefault()\n }\n }\n },\n [\n _vm.controls\n ? _c(\n \"span\",\n {\n directives: [\n {\n name: \"repeat-click\",\n rawName: \"v-repeat-click\",\n value: _vm.decrease,\n expression: \"decrease\"\n }\n ],\n staticClass: \"el-input-number__decrease\",\n class: { \"is-disabled\": _vm.minDisabled },\n attrs: { role: \"button\" },\n on: {\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.decrease($event)\n }\n }\n },\n [\n _c(\"i\", {\n class:\n \"el-icon-\" + (_vm.controlsAtRight ? \"arrow-down\" : \"minus\")\n })\n ]\n )\n : _vm._e(),\n _vm.controls\n ? _c(\n \"span\",\n {\n directives: [\n {\n name: \"repeat-click\",\n rawName: \"v-repeat-click\",\n value: _vm.increase,\n expression: \"increase\"\n }\n ],\n staticClass: \"el-input-number__increase\",\n class: { \"is-disabled\": _vm.maxDisabled },\n attrs: { role: \"button\" },\n on: {\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.increase($event)\n }\n }\n },\n [\n _c(\"i\", {\n class: \"el-icon-\" + (_vm.controlsAtRight ? \"arrow-up\" : \"plus\")\n })\n ]\n )\n : _vm._e(),\n _c(\"el-input\", {\n ref: \"input\",\n attrs: {\n value: _vm.displayValue,\n placeholder: _vm.placeholder,\n disabled: _vm.inputNumberDisabled,\n size: _vm.inputNumberSize,\n max: _vm.max,\n min: _vm.min,\n name: _vm.name,\n label: _vm.label\n },\n on: {\n blur: _vm.handleBlur,\n focus: _vm.handleFocus,\n input: _vm.handleInput,\n change: _vm.handleInputChange\n },\n nativeOn: {\n keydown: [\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\"Up\", \"ArrowUp\"])\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.increase($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.decrease($event)\n }\n ]\n }\n })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/input-number/src/input-number.vue?vue&type=template&id=42f8cf66&\n\n// EXTERNAL MODULE: external \"element-ui/lib/input\"\nvar input_ = __webpack_require__(10);\nvar input_default = /*#__PURE__*/__webpack_require__.n(input_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/focus\"\nvar focus_ = __webpack_require__(22);\nvar focus_default = /*#__PURE__*/__webpack_require__.n(focus_);\n\n// EXTERNAL MODULE: ./src/directives/repeat-click.js\nvar repeat_click = __webpack_require__(30);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/input-number/src/input-number.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var input_numbervue_type_script_lang_js_ = ({\n name: 'ElInputNumber',\n mixins: [focus_default()('input')],\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n directives: {\n repeatClick: repeat_click[\"a\" /* default */]\n },\n components: {\n ElInput: input_default.a\n },\n props: {\n step: {\n type: Number,\n default: 1\n },\n stepStrictly: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number,\n default: Infinity\n },\n min: {\n type: Number,\n default: -Infinity\n },\n value: {},\n disabled: Boolean,\n size: String,\n controls: {\n type: Boolean,\n default: true\n },\n controlsPosition: {\n type: String,\n default: ''\n },\n name: String,\n label: String,\n placeholder: String,\n precision: {\n type: Number,\n validator: function validator(val) {\n return val >= 0 && val === parseInt(val, 10);\n }\n }\n },\n data: function data() {\n return {\n currentValue: 0,\n userInput: null\n };\n },\n\n watch: {\n value: {\n immediate: true,\n handler: function handler(value) {\n var newVal = value === undefined ? value : Number(value);\n if (newVal !== undefined) {\n if (isNaN(newVal)) {\n return;\n }\n\n if (this.stepStrictly) {\n var stepPrecision = this.getPrecision(this.step);\n var precisionFactor = Math.pow(10, stepPrecision);\n newVal = Math.round(newVal / this.step) * precisionFactor * this.step / precisionFactor;\n }\n\n if (this.precision !== undefined) {\n newVal = this.toPrecision(newVal, this.precision);\n }\n }\n if (newVal >= this.max) newVal = this.max;\n if (newVal <= this.min) newVal = this.min;\n this.currentValue = newVal;\n this.userInput = null;\n this.$emit('input', newVal);\n }\n }\n },\n computed: {\n minDisabled: function minDisabled() {\n return this._decrease(this.value, this.step) < this.min;\n },\n maxDisabled: function maxDisabled() {\n return this._increase(this.value, this.step) > this.max;\n },\n numPrecision: function numPrecision() {\n var value = this.value,\n step = this.step,\n getPrecision = this.getPrecision,\n precision = this.precision;\n\n var stepPrecision = getPrecision(step);\n if (precision !== undefined) {\n if (stepPrecision > precision) {\n console.warn('[Element Warn][InputNumber]precision should not be less than the decimal places of step');\n }\n return precision;\n } else {\n return Math.max(getPrecision(value), stepPrecision);\n }\n },\n controlsAtRight: function controlsAtRight() {\n return this.controls && this.controlsPosition === 'right';\n },\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n inputNumberSize: function inputNumberSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n inputNumberDisabled: function inputNumberDisabled() {\n return this.disabled || !!(this.elForm || {}).disabled;\n },\n displayValue: function displayValue() {\n if (this.userInput !== null) {\n return this.userInput;\n }\n\n var currentValue = this.currentValue;\n\n if (typeof currentValue === 'number') {\n if (this.stepStrictly) {\n var stepPrecision = this.getPrecision(this.step);\n var precisionFactor = Math.pow(10, stepPrecision);\n currentValue = Math.round(currentValue / this.step) * precisionFactor * this.step / precisionFactor;\n }\n\n if (this.precision !== undefined) {\n currentValue = currentValue.toFixed(this.precision);\n }\n }\n\n return currentValue;\n }\n },\n methods: {\n toPrecision: function toPrecision(num, precision) {\n if (precision === undefined) precision = this.numPrecision;\n return parseFloat(Math.round(num * Math.pow(10, precision)) / Math.pow(10, precision));\n },\n getPrecision: function getPrecision(value) {\n if (value === undefined) return 0;\n var valueString = value.toString();\n var dotPosition = valueString.indexOf('.');\n var precision = 0;\n if (dotPosition !== -1) {\n precision = valueString.length - dotPosition - 1;\n }\n return precision;\n },\n _increase: function _increase(val, step) {\n if (typeof val !== 'number' && val !== undefined) return this.currentValue;\n\n var precisionFactor = Math.pow(10, this.numPrecision);\n // Solve the accuracy problem of JS decimal calculation by converting the value to integer.\n return this.toPrecision((precisionFactor * val + precisionFactor * step) / precisionFactor);\n },\n _decrease: function _decrease(val, step) {\n if (typeof val !== 'number' && val !== undefined) return this.currentValue;\n\n var precisionFactor = Math.pow(10, this.numPrecision);\n\n return this.toPrecision((precisionFactor * val - precisionFactor * step) / precisionFactor);\n },\n increase: function increase() {\n if (this.inputNumberDisabled || this.maxDisabled) return;\n var value = this.value || 0;\n var newVal = this._increase(value, this.step);\n this.setCurrentValue(newVal);\n },\n decrease: function decrease() {\n if (this.inputNumberDisabled || this.minDisabled) return;\n var value = this.value || 0;\n var newVal = this._decrease(value, this.step);\n this.setCurrentValue(newVal);\n },\n handleBlur: function handleBlur(event) {\n this.$emit('blur', event);\n },\n handleFocus: function handleFocus(event) {\n this.$emit('focus', event);\n },\n setCurrentValue: function setCurrentValue(newVal) {\n var oldVal = this.currentValue;\n if (typeof newVal === 'number' && this.precision !== undefined) {\n newVal = this.toPrecision(newVal, this.precision);\n }\n if (newVal >= this.max) newVal = this.max;\n if (newVal <= this.min) newVal = this.min;\n if (oldVal === newVal) return;\n this.userInput = null;\n this.$emit('input', newVal);\n this.$emit('change', newVal, oldVal);\n this.currentValue = newVal;\n },\n handleInput: function handleInput(value) {\n this.userInput = value;\n },\n handleInputChange: function handleInputChange(value) {\n var newVal = value === '' ? undefined : Number(value);\n if (!isNaN(newVal) || value === '') {\n this.setCurrentValue(newVal);\n }\n this.userInput = null;\n },\n select: function select() {\n this.$refs.input.select();\n }\n },\n mounted: function mounted() {\n var innerInput = this.$refs.input.$refs.input;\n innerInput.setAttribute('role', 'spinbutton');\n innerInput.setAttribute('aria-valuemax', this.max);\n innerInput.setAttribute('aria-valuemin', this.min);\n innerInput.setAttribute('aria-valuenow', this.currentValue);\n innerInput.setAttribute('aria-disabled', this.inputNumberDisabled);\n },\n updated: function updated() {\n if (!this.$refs || !this.$refs.input) return;\n var innerInput = this.$refs.input.$refs.input;\n innerInput.setAttribute('aria-valuenow', this.currentValue);\n }\n});\n// CONCATENATED MODULE: ./packages/input-number/src/input-number.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_input_numbervue_type_script_lang_js_ = (input_numbervue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/input-number/src/input-number.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_input_numbervue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/input-number/src/input-number.vue\"\n/* harmony default export */ var input_number = (component.exports);\n// CONCATENATED MODULE: ./packages/input-number/index.js\n\n\n/* istanbul ignore next */\ninput_number.install = function (Vue) {\n Vue.component(input_number.name, input_number);\n};\n\n/* harmony default export */ var packages_input_number = __webpack_exports__[\"default\"] = (input_number);\n\n/***/ }),\n\n/***/ 2:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/dom\");\n\n/***/ }),\n\n/***/ 22:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/focus\");\n\n/***/ }),\n\n/***/ 30:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\n/* harmony import */ var element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n bind: function bind(el, binding, vnode) {\n var interval = null;\n var startTime = void 0;\n var handler = function handler() {\n return vnode.context[binding.expression].apply();\n };\n var clear = function clear() {\n if (Date.now() - startTime < 100) {\n handler();\n }\n clearInterval(interval);\n interval = null;\n };\n\n Object(element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"on\"])(el, 'mousedown', function (e) {\n if (e.button !== 0) return;\n startTime = Date.now();\n Object(element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"once\"])(document, 'mouseup', clear);\n clearInterval(interval);\n interval = setInterval(handler, 100);\n });\n }\n});\n\n/***/ })\n\n/******/ });","'use strict';\n\nexports.__esModule = true;\nvar aria = aria || {};\n\naria.Utils = aria.Utils || {};\n\n/**\n * @desc Set focus on descendant nodes until the first focusable element is\n * found.\n * @param element\n * DOM node for which to find the first focusable descendant.\n * @returns\n * true if a focusable element is found and focus is set.\n */\naria.Utils.focusFirstDescendant = function (element) {\n for (var i = 0; i < element.childNodes.length; i++) {\n var child = element.childNodes[i];\n if (aria.Utils.attemptFocus(child) || aria.Utils.focusFirstDescendant(child)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @desc Find the last descendant node that is focusable.\n * @param element\n * DOM node for which to find the last focusable descendant.\n * @returns\n * true if a focusable element is found and focus is set.\n */\n\naria.Utils.focusLastDescendant = function (element) {\n for (var i = element.childNodes.length - 1; i >= 0; i--) {\n var child = element.childNodes[i];\n if (aria.Utils.attemptFocus(child) || aria.Utils.focusLastDescendant(child)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @desc Set Attempt to set focus on the current node.\n * @param element\n * The node to attempt to focus on.\n * @returns\n * true if element is focused.\n */\naria.Utils.attemptFocus = function (element) {\n if (!aria.Utils.isFocusable(element)) {\n return false;\n }\n aria.Utils.IgnoreUtilFocusChanges = true;\n try {\n element.focus();\n } catch (e) {}\n aria.Utils.IgnoreUtilFocusChanges = false;\n return document.activeElement === element;\n};\n\naria.Utils.isFocusable = function (element) {\n if (element.tabIndex > 0 || element.tabIndex === 0 && element.getAttribute('tabIndex') !== null) {\n return true;\n }\n\n if (element.disabled) {\n return false;\n }\n\n switch (element.nodeName) {\n case 'A':\n return !!element.href && element.rel !== 'ignore';\n case 'INPUT':\n return element.type !== 'hidden' && element.type !== 'file';\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n default:\n return false;\n }\n};\n\n/**\n * 触发一个事件\n * mouseenter, mouseleave, mouseover, keyup, change, click 等\n * @param {Element} elm\n * @param {String} name\n * @param {*} opts\n */\naria.Utils.triggerEvent = function (elm, name) {\n var eventName = void 0;\n\n if (/^mouse|click/.test(name)) {\n eventName = 'MouseEvents';\n } else if (/^key/.test(name)) {\n eventName = 'KeyboardEvent';\n } else {\n eventName = 'HTMLEvents';\n }\n var evt = document.createEvent(eventName);\n\n for (var _len = arguments.length, opts = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n opts[_key - 2] = arguments[_key];\n }\n\n evt.initEvent.apply(evt, [name].concat(opts));\n elm.dispatchEvent ? elm.dispatchEvent(evt) : elm.fireEvent('on' + name, evt);\n\n return elm;\n};\n\naria.Utils.keys = {\n tab: 9,\n enter: 13,\n space: 32,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n esc: 27\n};\n\nexports.default = aria.Utils;","'use strict';\n\nexports.__esModule = true;\n\nexports.default = function () {\n if (_vue2.default.prototype.$isServer) return 0;\n if (scrollBarWidth !== undefined) return scrollBarWidth;\n\n var outer = document.createElement('div');\n outer.className = 'el-scrollbar__wrap';\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.position = 'absolute';\n outer.style.top = '-9999px';\n document.body.appendChild(outer);\n\n var widthNoScroll = outer.offsetWidth;\n outer.style.overflow = 'scroll';\n\n var inner = document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n\n var widthWithScroll = inner.offsetWidth;\n outer.parentNode.removeChild(outer);\n scrollBarWidth = widthNoScroll - widthWithScroll;\n\n return scrollBarWidth;\n};\n\nvar _vue = require('vue');\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar scrollBarWidth = void 0;\n\n;","'use strict';\n\nexports.__esModule = true;\n\nvar _vue = require('vue');\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nvar _popup = require('element-ui/lib/utils/popup');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PopperJS = _vue2.default.prototype.$isServer ? function () {} : require('./popper');\nvar stop = function stop(e) {\n return e.stopPropagation();\n};\n\n/**\n * @param {HTMLElement} [reference=$refs.reference] - The reference element used to position the popper.\n * @param {HTMLElement} [popper=$refs.popper] - The HTML element used as popper, or a configuration used to generate the popper.\n * @param {String} [placement=button] - Placement of the popper accepted values: top(-start, -end), right(-start, -end), bottom(-start, -end), left(-start, -end)\n * @param {Number} [offset=0] - Amount of pixels the popper will be shifted (can be negative).\n * @param {Boolean} [visible=false] Visibility of the popup element.\n * @param {Boolean} [visible-arrow=false] Visibility of the arrow, no style.\n */\nexports.default = {\n props: {\n transformOrigin: {\n type: [Boolean, String],\n default: true\n },\n placement: {\n type: String,\n default: 'bottom'\n },\n boundariesPadding: {\n type: Number,\n default: 5\n },\n reference: {},\n popper: {},\n offset: {\n default: 0\n },\n value: Boolean,\n visibleArrow: Boolean,\n arrowOffset: {\n type: Number,\n default: 35\n },\n appendToBody: {\n type: Boolean,\n default: true\n },\n popperOptions: {\n type: Object,\n default: function _default() {\n return {\n gpuAcceleration: false\n };\n }\n }\n },\n\n data: function data() {\n return {\n showPopper: false,\n currentPlacement: ''\n };\n },\n\n\n watch: {\n value: {\n immediate: true,\n handler: function handler(val) {\n this.showPopper = val;\n this.$emit('input', val);\n }\n },\n\n showPopper: function showPopper(val) {\n if (this.disabled) return;\n val ? this.updatePopper() : this.destroyPopper();\n this.$emit('input', val);\n }\n },\n\n methods: {\n createPopper: function createPopper() {\n var _this = this;\n\n if (this.$isServer) return;\n this.currentPlacement = this.currentPlacement || this.placement;\n if (!/^(top|bottom|left|right)(-start|-end)?$/g.test(this.currentPlacement)) {\n return;\n }\n\n var options = this.popperOptions;\n var popper = this.popperElm = this.popperElm || this.popper || this.$refs.popper;\n var reference = this.referenceElm = this.referenceElm || this.reference || this.$refs.reference;\n\n if (!reference && this.$slots.reference && this.$slots.reference[0]) {\n reference = this.referenceElm = this.$slots.reference[0].elm;\n }\n\n if (!popper || !reference) return;\n if (this.visibleArrow) this.appendArrow(popper);\n if (this.appendToBody) document.body.appendChild(this.popperElm);\n if (this.popperJS && this.popperJS.destroy) {\n this.popperJS.destroy();\n }\n\n options.placement = this.currentPlacement;\n options.offset = this.offset;\n options.arrowOffset = this.arrowOffset;\n this.popperJS = new PopperJS(reference, popper, options);\n this.popperJS.onCreate(function (_) {\n _this.$emit('created', _this);\n _this.resetTransformOrigin();\n _this.$nextTick(_this.updatePopper);\n });\n if (typeof options.onUpdate === 'function') {\n this.popperJS.onUpdate(options.onUpdate);\n }\n this.popperJS._popper.style.zIndex = _popup.PopupManager.nextZIndex();\n this.popperElm.addEventListener('click', stop);\n },\n updatePopper: function updatePopper() {\n var popperJS = this.popperJS;\n if (popperJS) {\n popperJS.update();\n if (popperJS._popper) {\n popperJS._popper.style.zIndex = _popup.PopupManager.nextZIndex();\n }\n } else {\n this.createPopper();\n }\n },\n doDestroy: function doDestroy(forceDestroy) {\n /* istanbul ignore if */\n if (!this.popperJS || this.showPopper && !forceDestroy) return;\n this.popperJS.destroy();\n this.popperJS = null;\n },\n destroyPopper: function destroyPopper() {\n if (this.popperJS) {\n this.resetTransformOrigin();\n }\n },\n resetTransformOrigin: function resetTransformOrigin() {\n if (!this.transformOrigin) return;\n var placementMap = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n };\n var placement = this.popperJS._popper.getAttribute('x-placement').split('-')[0];\n var origin = placementMap[placement];\n this.popperJS._popper.style.transformOrigin = typeof this.transformOrigin === 'string' ? this.transformOrigin : ['top', 'bottom'].indexOf(placement) > -1 ? 'center ' + origin : origin + ' center';\n },\n appendArrow: function appendArrow(element) {\n var hash = void 0;\n if (this.appended) {\n return;\n }\n\n this.appended = true;\n\n for (var item in element.attributes) {\n if (/^_v-/.test(element.attributes[item].name)) {\n hash = element.attributes[item].name;\n break;\n }\n }\n\n var arrow = document.createElement('div');\n\n if (hash) {\n arrow.setAttribute(hash, '');\n }\n arrow.setAttribute('x-arrow', '');\n arrow.className = 'popper__arrow';\n element.appendChild(arrow);\n }\n },\n\n beforeDestroy: function beforeDestroy() {\n this.doDestroy(true);\n if (this.popperElm && this.popperElm.parentNode === document.body) {\n this.popperElm.removeEventListener('click', stop);\n document.body.removeChild(this.popperElm);\n }\n },\n\n\n // call destroy in keep-alive mode\n deactivated: function deactivated() {\n this.$options.beforeDestroy[0].call(this);\n }\n};","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 97);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 97:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/button/src/button.vue?vue&type=template&id=ca859fb4&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"button\",\n {\n staticClass: \"el-button\",\n class: [\n _vm.type ? \"el-button--\" + _vm.type : \"\",\n _vm.buttonSize ? \"el-button--\" + _vm.buttonSize : \"\",\n {\n \"is-disabled\": _vm.buttonDisabled,\n \"is-loading\": _vm.loading,\n \"is-plain\": _vm.plain,\n \"is-round\": _vm.round,\n \"is-circle\": _vm.circle\n }\n ],\n attrs: {\n disabled: _vm.buttonDisabled || _vm.loading,\n autofocus: _vm.autofocus,\n type: _vm.nativeType\n },\n on: { click: _vm.handleClick }\n },\n [\n _vm.loading ? _c(\"i\", { staticClass: \"el-icon-loading\" }) : _vm._e(),\n _vm.icon && !_vm.loading ? _c(\"i\", { class: _vm.icon }) : _vm._e(),\n _vm.$slots.default ? _c(\"span\", [_vm._t(\"default\")], 2) : _vm._e()\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/button/src/button.vue?vue&type=template&id=ca859fb4&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/button/src/button.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var buttonvue_type_script_lang_js_ = ({\n name: 'ElButton',\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n props: {\n type: {\n type: String,\n default: 'default'\n },\n size: String,\n icon: {\n type: String,\n default: ''\n },\n nativeType: {\n type: String,\n default: 'button'\n },\n loading: Boolean,\n disabled: Boolean,\n plain: Boolean,\n autofocus: Boolean,\n round: Boolean,\n circle: Boolean\n },\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n buttonSize: function buttonSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n buttonDisabled: function buttonDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n }\n },\n\n methods: {\n handleClick: function handleClick(evt) {\n this.$emit('click', evt);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/button/src/button.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_buttonvue_type_script_lang_js_ = (buttonvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/button/src/button.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_buttonvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/button/src/button.vue\"\n/* harmony default export */ var src_button = (component.exports);\n// CONCATENATED MODULE: ./packages/button/index.js\n\n\n/* istanbul ignore next */\nsrc_button.install = function (Vue) {\n Vue.component(src_button.name, src_button);\n};\n\n/* harmony default export */ var packages_button = __webpack_exports__[\"default\"] = (src_button);\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 76);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 11:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/migrating\");\n\n/***/ }),\n\n/***/ 21:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/shared\");\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/emitter\");\n\n/***/ }),\n\n/***/ 76:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/input/src/input.vue?vue&type=template&id=343dd774&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n class: [\n _vm.type === \"textarea\" ? \"el-textarea\" : \"el-input\",\n _vm.inputSize ? \"el-input--\" + _vm.inputSize : \"\",\n {\n \"is-disabled\": _vm.inputDisabled,\n \"is-exceed\": _vm.inputExceed,\n \"el-input-group\": _vm.$slots.prepend || _vm.$slots.append,\n \"el-input-group--append\": _vm.$slots.append,\n \"el-input-group--prepend\": _vm.$slots.prepend,\n \"el-input--prefix\": _vm.$slots.prefix || _vm.prefixIcon,\n \"el-input--suffix\":\n _vm.$slots.suffix ||\n _vm.suffixIcon ||\n _vm.clearable ||\n _vm.showPassword\n }\n ],\n on: {\n mouseenter: function($event) {\n _vm.hovering = true\n },\n mouseleave: function($event) {\n _vm.hovering = false\n }\n }\n },\n [\n _vm.type !== \"textarea\"\n ? [\n _vm.$slots.prepend\n ? _c(\n \"div\",\n { staticClass: \"el-input-group__prepend\" },\n [_vm._t(\"prepend\")],\n 2\n )\n : _vm._e(),\n _vm.type !== \"textarea\"\n ? _c(\n \"input\",\n _vm._b(\n {\n ref: \"input\",\n staticClass: \"el-input__inner\",\n attrs: {\n tabindex: _vm.tabindex,\n type: _vm.showPassword\n ? _vm.passwordVisible\n ? \"text\"\n : \"password\"\n : _vm.type,\n disabled: _vm.inputDisabled,\n readonly: _vm.readonly,\n autocomplete: _vm.autoComplete || _vm.autocomplete,\n \"aria-label\": _vm.label\n },\n on: {\n compositionstart: _vm.handleCompositionStart,\n compositionupdate: _vm.handleCompositionUpdate,\n compositionend: _vm.handleCompositionEnd,\n input: _vm.handleInput,\n focus: _vm.handleFocus,\n blur: _vm.handleBlur,\n change: _vm.handleChange\n }\n },\n \"input\",\n _vm.$attrs,\n false\n )\n )\n : _vm._e(),\n _vm.$slots.prefix || _vm.prefixIcon\n ? _c(\n \"span\",\n { staticClass: \"el-input__prefix\" },\n [\n _vm._t(\"prefix\"),\n _vm.prefixIcon\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: _vm.prefixIcon\n })\n : _vm._e()\n ],\n 2\n )\n : _vm._e(),\n _vm.getSuffixVisible()\n ? _c(\"span\", { staticClass: \"el-input__suffix\" }, [\n _c(\n \"span\",\n { staticClass: \"el-input__suffix-inner\" },\n [\n !_vm.showClear ||\n !_vm.showPwdVisible ||\n !_vm.isWordLimitVisible\n ? [\n _vm._t(\"suffix\"),\n _vm.suffixIcon\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: _vm.suffixIcon\n })\n : _vm._e()\n ]\n : _vm._e(),\n _vm.showClear\n ? _c(\"i\", {\n staticClass:\n \"el-input__icon el-icon-circle-close el-input__clear\",\n on: {\n mousedown: function($event) {\n $event.preventDefault()\n },\n click: _vm.clear\n }\n })\n : _vm._e(),\n _vm.showPwdVisible\n ? _c(\"i\", {\n staticClass:\n \"el-input__icon el-icon-view el-input__clear\",\n on: { click: _vm.handlePasswordVisible }\n })\n : _vm._e(),\n _vm.isWordLimitVisible\n ? _c(\"span\", { staticClass: \"el-input__count\" }, [\n _c(\n \"span\",\n { staticClass: \"el-input__count-inner\" },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.textLength) +\n \"/\" +\n _vm._s(_vm.upperLimit) +\n \"\\n \"\n )\n ]\n )\n ])\n : _vm._e()\n ],\n 2\n ),\n _vm.validateState\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: [\"el-input__validateIcon\", _vm.validateIcon]\n })\n : _vm._e()\n ])\n : _vm._e(),\n _vm.$slots.append\n ? _c(\n \"div\",\n { staticClass: \"el-input-group__append\" },\n [_vm._t(\"append\")],\n 2\n )\n : _vm._e()\n ]\n : _c(\n \"textarea\",\n _vm._b(\n {\n ref: \"textarea\",\n staticClass: \"el-textarea__inner\",\n style: _vm.textareaStyle,\n attrs: {\n tabindex: _vm.tabindex,\n disabled: _vm.inputDisabled,\n readonly: _vm.readonly,\n autocomplete: _vm.autoComplete || _vm.autocomplete,\n \"aria-label\": _vm.label\n },\n on: {\n compositionstart: _vm.handleCompositionStart,\n compositionupdate: _vm.handleCompositionUpdate,\n compositionend: _vm.handleCompositionEnd,\n input: _vm.handleInput,\n focus: _vm.handleFocus,\n blur: _vm.handleBlur,\n change: _vm.handleChange\n }\n },\n \"textarea\",\n _vm.$attrs,\n false\n )\n ),\n _vm.isWordLimitVisible && _vm.type === \"textarea\"\n ? _c(\"span\", { staticClass: \"el-input__count\" }, [\n _vm._v(_vm._s(_vm.textLength) + \"/\" + _vm._s(_vm.upperLimit))\n ])\n : _vm._e()\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/input/src/input.vue?vue&type=template&id=343dd774&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __webpack_require__(4);\nvar emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/migrating\"\nvar migrating_ = __webpack_require__(11);\nvar migrating_default = /*#__PURE__*/__webpack_require__.n(migrating_);\n\n// CONCATENATED MODULE: ./packages/input/src/calcTextareaHeight.js\nvar hiddenTextarea = void 0;\n\nvar HIDDEN_STYLE = '\\n height:0 !important;\\n visibility:hidden !important;\\n overflow:hidden !important;\\n position:absolute !important;\\n z-index:-1000 !important;\\n top:0 !important;\\n right:0 !important\\n';\n\nvar CONTEXT_STYLE = ['letter-spacing', 'line-height', 'padding-top', 'padding-bottom', 'font-family', 'font-weight', 'font-size', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-left', 'padding-right', 'border-width', 'box-sizing'];\n\nfunction calculateNodeStyling(targetElement) {\n var style = window.getComputedStyle(targetElement);\n\n var boxSizing = style.getPropertyValue('box-sizing');\n\n var paddingSize = parseFloat(style.getPropertyValue('padding-bottom')) + parseFloat(style.getPropertyValue('padding-top'));\n\n var borderSize = parseFloat(style.getPropertyValue('border-bottom-width')) + parseFloat(style.getPropertyValue('border-top-width'));\n\n var contextStyle = CONTEXT_STYLE.map(function (name) {\n return name + ':' + style.getPropertyValue(name);\n }).join(';');\n\n return { contextStyle: contextStyle, paddingSize: paddingSize, borderSize: borderSize, boxSizing: boxSizing };\n}\n\nfunction calcTextareaHeight(targetElement) {\n var minRows = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var maxRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n document.body.appendChild(hiddenTextarea);\n }\n\n var _calculateNodeStyling = calculateNodeStyling(targetElement),\n paddingSize = _calculateNodeStyling.paddingSize,\n borderSize = _calculateNodeStyling.borderSize,\n boxSizing = _calculateNodeStyling.boxSizing,\n contextStyle = _calculateNodeStyling.contextStyle;\n\n hiddenTextarea.setAttribute('style', contextStyle + ';' + HIDDEN_STYLE);\n hiddenTextarea.value = targetElement.value || targetElement.placeholder || '';\n\n var height = hiddenTextarea.scrollHeight;\n var result = {};\n\n if (boxSizing === 'border-box') {\n height = height + borderSize;\n } else if (boxSizing === 'content-box') {\n height = height - paddingSize;\n }\n\n hiddenTextarea.value = '';\n var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n\n if (minRows !== null) {\n var minHeight = singleRowHeight * minRows;\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n height = Math.max(minHeight, height);\n result.minHeight = minHeight + 'px';\n }\n if (maxRows !== null) {\n var maxHeight = singleRowHeight * maxRows;\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n height = Math.min(maxHeight, height);\n }\n result.height = height + 'px';\n hiddenTextarea.parentNode && hiddenTextarea.parentNode.removeChild(hiddenTextarea);\n hiddenTextarea = null;\n return result;\n};\n// EXTERNAL MODULE: external \"element-ui/lib/utils/merge\"\nvar merge_ = __webpack_require__(9);\nvar merge_default = /*#__PURE__*/__webpack_require__.n(merge_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/shared\"\nvar shared_ = __webpack_require__(21);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/input/src/input.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n/* harmony default export */ var inputvue_type_script_lang_js_ = ({\n name: 'ElInput',\n\n componentName: 'ElInput',\n\n mixins: [emitter_default.a, migrating_default.a],\n\n inheritAttrs: false,\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n data: function data() {\n return {\n textareaCalcStyle: {},\n hovering: false,\n focused: false,\n isComposing: false,\n passwordVisible: false\n };\n },\n\n\n props: {\n value: [String, Number],\n size: String,\n resize: String,\n form: String,\n disabled: Boolean,\n readonly: Boolean,\n type: {\n type: String,\n default: 'text'\n },\n autosize: {\n type: [Boolean, Object],\n default: false\n },\n autocomplete: {\n type: String,\n default: 'off'\n },\n /** @Deprecated in next major version */\n autoComplete: {\n type: String,\n validator: function validator(val) {\n false && false;\n return true;\n }\n },\n validateEvent: {\n type: Boolean,\n default: true\n },\n suffixIcon: String,\n prefixIcon: String,\n label: String,\n clearable: {\n type: Boolean,\n default: false\n },\n showPassword: {\n type: Boolean,\n default: false\n },\n showWordLimit: {\n type: Boolean,\n default: false\n },\n tabindex: String\n },\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n validateState: function validateState() {\n return this.elFormItem ? this.elFormItem.validateState : '';\n },\n needStatusIcon: function needStatusIcon() {\n return this.elForm ? this.elForm.statusIcon : false;\n },\n validateIcon: function validateIcon() {\n return {\n validating: 'el-icon-loading',\n success: 'el-icon-circle-check',\n error: 'el-icon-circle-close'\n }[this.validateState];\n },\n textareaStyle: function textareaStyle() {\n return merge_default()({}, this.textareaCalcStyle, { resize: this.resize });\n },\n inputSize: function inputSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n inputDisabled: function inputDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n },\n nativeInputValue: function nativeInputValue() {\n return this.value === null || this.value === undefined ? '' : String(this.value);\n },\n showClear: function showClear() {\n return this.clearable && !this.inputDisabled && !this.readonly && this.nativeInputValue && (this.focused || this.hovering);\n },\n showPwdVisible: function showPwdVisible() {\n return this.showPassword && !this.inputDisabled && !this.readonly && (!!this.nativeInputValue || this.focused);\n },\n isWordLimitVisible: function isWordLimitVisible() {\n return this.showWordLimit && this.$attrs.maxlength && (this.type === 'text' || this.type === 'textarea') && !this.inputDisabled && !this.readonly && !this.showPassword;\n },\n upperLimit: function upperLimit() {\n return this.$attrs.maxlength;\n },\n textLength: function textLength() {\n if (typeof this.value === 'number') {\n return String(this.value).length;\n }\n\n return (this.value || '').length;\n },\n inputExceed: function inputExceed() {\n // show exceed style if length of initial value greater then maxlength\n return this.isWordLimitVisible && this.textLength > this.upperLimit;\n }\n },\n\n watch: {\n value: function value(val) {\n this.$nextTick(this.resizeTextarea);\n if (this.validateEvent) {\n this.dispatch('ElFormItem', 'el.form.change', [val]);\n }\n },\n\n // native input value is set explicitly\n // do not use v-model / :value in template\n // see: https://github.com/ElemeFE/element/issues/14521\n nativeInputValue: function nativeInputValue() {\n this.setNativeInputValue();\n },\n\n // when change between and
    ..

    New account for review: @#{account.nickname}